@decidables/accumulable-elements 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +72 -33
- package/lib/accumulableElements.esm.js +587 -282
- package/lib/accumulableElements.esm.js.map +1 -1
- package/lib/accumulableElements.esm.min.js +298 -121
- package/lib/accumulableElements.esm.min.js.map +1 -1
- package/lib/accumulableElements.umd.js +587 -282
- package/lib/accumulableElements.umd.js.map +1 -1
- package/lib/accumulableElements.umd.min.js +298 -121
- package/lib/accumulableElements.umd.min.js.map +1 -1
- package/package.json +4 -4
- package/src/components/accumulable-control.js +4 -4
- package/src/components/accumulable-response.js +6 -24
- package/src/components/ddm-fit-worker.js +2 -2
- package/src/components/ddm-fit.js +6 -4
- package/src/components/ddm-model.js +130 -62
- package/src/components/ddm-parameters.js +61 -4
- package/src/equations/azv2pc.js +35 -8
- package/src/equations/azvt02m.js +44 -10
- package/src/examples/human.js +156 -71
- package/src/examples/interactive.js +39 -9
- package/src/examples/model.js +95 -93
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accumulableElements.esm.min.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit/node_modules/lit-html/lit-html.js","../../../node_modules/lit/node_modules/lit-element/lit-element.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-selection/src/local.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-ease/src/linear.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-random/src/defaultSource.js","../../../node_modules/d3-random/src/uniform.js","../../../node_modules/d3-random/src/normal.js","../../../node_modules/d3-random/src/lcg.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../../../node_modules/d3-scale-chromatic/src/colors.js","../../../node_modules/d3/node_modules/d3-shape/src/constant.js","../../../node_modules/d3/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3/node_modules/d3-shape/src/point.js","../../../node_modules/d3/node_modules/d3-shape/src/line.js","../../../node_modules/d3/node_modules/d3-shape/src/path.js","../../../node_modules/d3/node_modules/d3-shape/src/array.js","../../../node_modules/d3-zoom/src/transform.js","../../decidables-elements/src/decidables-element.js","../../decidables-elements/src/button.js","../../../node_modules/lit/node_modules/lit-html/directives/if-defined.js","../../decidables-elements/src/slider.js","../../decidables-elements/src/spinner.js","../../decidables-elements/src/switch.js","../../decidables-elements/src/toggle.js","../../decidables-elements/src/mixin-resizeable.js","../../decidables-elements/src/toggle-option.js","../src/accumulable-element.js","../src/components/accumulable-control.js","../../accumulable-math/src/ddm-math.js","../src/components/accumulable-response.js","../src/components/accumulable-table.js","../src/components/ddm-fit.js","../src/components/ddm-parameters.js","../src/components/ddm-model.js","../src/components/rdk-2afc-task.js","../../../node_modules/d3-timer/src/interval.js","../src/equations/ddm-equation.js","../src/equations/azv2pc.js","../src/equations/azvt02m.js","../src/examples/ddm-example.js","../src/examples/human.js","../src/examples/interactive.js","../src/examples/model.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","export const linear = t => +t;\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","\nimport {\n LitElement,\n css,\n svg,\n unsafeCSS,\n} from 'lit';\nimport * as d3 from 'd3';\n\n/*\n DecidablesElement Base Class - Not intended for instantiation!\n <decidables-element>\n*/\nexport default class DecidablesElement extends LitElement {\n getComputedStyleValue(property) {\n return getComputedStyle(this).getPropertyValue(property).trim();\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n // Use focus highlighting if keyboard is used at all\n d3.select(this.renderRoot.host)\n .classed('keyboard', true)\n .on('mousemove.keyboard touchstart.keyboard', (event) => {\n const element = event.currentTarget;\n d3.select(element.renderRoot.host)\n .classed('keyboard', false)\n .on('mousemove.keyboard touchstart.keyboard', null);\n })\n .on('keydown.keyboard', (event) => {\n const element = event.currentTarget;\n d3.select(element.renderRoot.host)\n .classed('keyboard', true)\n .on('keydown.keyboard mousemove.keyboard touchstart.keyboard', null);\n });\n }\n\n static get greys() {\n const grey = '#999999';\n const greys = {};\n greys.white = '#ffffff';\n greys.light75 = d3.interpolateRgb(grey, '#ffffff')(0.75);\n greys.light50 = d3.interpolateRgb(grey, '#ffffff')(0.5);\n greys.light25 = d3.interpolateRgb(grey, '#ffffff')(0.25);\n greys.grey = grey;\n greys.dark25 = d3.interpolateRgb(grey, '#000000')(0.25);\n greys.dark50 = d3.interpolateRgb(grey, '#000000')(0.5);\n greys.dark75 = d3.interpolateRgb(grey, '#000000')(0.75);\n greys.black = '#000000';\n return greys;\n }\n\n static get shadows() {\n // Material Design elevation styles\n // References:\n // https://github.com/material-components/material-components-web/tree/master/packages/mdc-elevation\n // https://codepen.io/hanger/pen/yOGvQp\n /* eslint-disable key-spacing, object-curly-newline */\n return {\n elevations: [0, 2, 4, 8, 16],\n baselineColor: '#000000',\n baselineColorString: '0, 0, 0',\n inverseBaselineColor: '#FFFFFF',\n inverseBaselineColorString: '255, 255, 255',\n opacityUmbra: 0.2,\n opacityPenumbra: 0.14,\n opacityAmbient: 0.12,\n opacityBoost: 0.2,\n mapUmbra: {// $mdc-elevation-umbra-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 3, b: 1, s: -2},\n 4: {x: 0, y: 2, b: 4, s: -1},\n 8: {x: 0, y: 5, b: 5, s: -3},\n 16: {x: 0, y: 8, b: 10, s: -5},\n },\n mapPenumbra: {// $mdc-elevation-penumbra-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 2, b: 2, s: 0},\n 4: {x: 0, y: 4, b: 5, s: 0},\n 8: {x: 0, y: 8, b: 10, s: 1},\n 16: {x: 0, y: 16, b: 24, s: 2},\n },\n mapAmbient: {// $mdc-elevation-ambient-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 1, b: 5, s: 0},\n 4: {x: 0, y: 1, b: 10, s: 0},\n 8: {x: 0, y: 3, b: 14, s: 2},\n 16: {x: 0, y: 6, b: 30, s: 5},\n },\n };\n /* eslint-enable key-spacing, object-curly-newline */\n }\n\n static cssBoxShadow(elevation, rotate = false, inverse = false) {\n const umbraO = this.shadows.opacityUmbra + this.shadows.opacityBoost;\n const penumbraO = this.shadows.opacityPenumbra + this.shadows.opacityBoost;\n const ambientO = this.shadows.opacityAmbient + this.shadows.opacityBoost;\n\n const umbraC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${umbraO})`\n : `rgba(${this.shadows.baselineColorString}, ${umbraO})`;\n const penumbraC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${penumbraO})`\n : `rgba(${this.shadows.baselineColorString}, ${penumbraO})`;\n const ambientC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${ambientO})`\n : `rgba(${this.shadows.baselineColorString}, ${ambientO})`;\n\n const umbraM = this.shadows.mapUmbra[elevation];\n const penumbraM = this.shadows.mapPenumbra[elevation];\n const ambientM = this.shadows.mapAmbient[elevation];\n\n const umbraS = (rotate)\n ? `${-umbraM.y}px ${umbraM.y / 2}px ${umbraM.b}px ${umbraM.s}px`\n : `${umbraM.y / 2}px ${umbraM.y}px ${umbraM.b}px ${umbraM.s}px`;\n const penumbraS = (rotate)\n ? `${-penumbraM.y}px ${penumbraM.y / 2}px ${penumbraM.b}px ${penumbraM.s}px`\n : `${penumbraM.y / 2}px ${penumbraM.y}px ${penumbraM.b}px ${penumbraM.s}px`;\n const ambientS = (rotate)\n ? `${-ambientM.y}px ${ambientM.y / 2}px ${ambientM.b}px ${ambientM.s}px`\n : `${ambientM.y / 2}px ${ambientM.y}px ${ambientM.b}px ${ambientM.s}px`;\n\n return `${umbraS} ${umbraC}, ${penumbraS} ${penumbraC}, ${ambientS} ${ambientC}`;\n }\n\n static get svgDefs() {\n const shadows = DecidablesElement.shadows; /* eslint-disable-line prefer-destructuring */\n\n const filters = shadows.elevations.map((z) => {\n return `\n <filter id=${`shadow-${z}`} filterUnits=\"userSpaceOnUse\" x=\"-100%\" y=\"-100%\" width=\"200%\" height=\"200%\">\n <feComponentTransfer in=\"SourceAlpha\" result=\"solid\">\n <feFuncA type=\"table\" tableValues=\"0 1 1\"/>\n </feComponentTransfer>\n <feOffset in=\"solid\" result=\"offU\" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />\n <feOffset in=\"solid\" result=\"offP\" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />\n <feOffset in=\"solid\" result=\"offA\" dx=${shadows.mapAmbient[z].y / 2} dy=${shadows.mapAmbient[z].y} />\n ${(shadows.mapUmbra[z].s === 0)\n ? ''\n : `<feMorphology in=\"offU\" result=\"spreadU\" operator=${(shadows.mapUmbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapUmbra[z].s)} />`\n }\n ${(shadows.mapPenumbra[z].s === 0)\n ? ''\n : `<feMorphology in=\"offP\" result=\"spreadP\" operator=${(shadows.mapPenumbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapPenumbra[z].s)} />`\n }\n ${(shadows.mapAmbient[z].s === 0)\n ? ''\n : `<feMorphology in=\"offA\" result=\"spreadA\" operator=${(shadows.mapAmbient[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapAmbient[z].s)} />`\n }\n <feGaussianBlur in=${(shadows.mapUmbra[z].s === 0) ? 'offU' : 'spreadU'} result=\"blurU\" stdDeviation=${shadows.mapUmbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapPenumbra[z].s === 0) ? 'offP' : 'spreadP'} result=\"blurP\" stdDeviation=${shadows.mapPenumbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapAmbient[z].s === 0) ? 'offA' : 'spreadA'} result=\"blurA\" stdDeviation=${shadows.mapAmbient[z].b / 2} />\n <feFlood in=\"SourceGraphic\" result=\"opU\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityUmbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opP\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityPenumbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opA\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityAmbient + shadows.opacityBoost} />\n <feComposite in=\"opU\" in2=\"blurU\" result=\"shU\" operator=\"in\" />\n <feComposite in=\"opP\" in2=\"blurP\" result=\"shP\" operator=\"in\" />\n <feComposite in=\"opA\" in2=\"blurA\" result=\"shA\" operator=\"in\" />\n <feMorphology in=\"solid\" result=\"smaller\" operator=\"erode\" radius=\"1\" />\n <feComposite in=\"shU\" in2=\"smaller\" result=\"finalU\" operator=\"out\" />\n <feComposite in=\"shP\" in2=\"smaller\" result=\"finalP\" operator=\"out\" />\n <feComposite in=\"shA\" in2=\"smaller\" result=\"finalA\" operator=\"out\" />\n <feMerge>\n <feMergeNode in=\"finalU\" />\n <feMergeNode in=\"finalP\" />\n <feMergeNode in=\"finalA\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>`;\n });\n\n return `\n <defs>\n ${filters}\n </defs>\n `;\n }\n\n static get svgFilters() {\n const shadows = DecidablesElement.shadows; /* eslint-disable-line prefer-destructuring */\n\n const filters = shadows.elevations.map((z) => {\n return svg`\n <filter id=${`shadow-${z}`} x=\"-250%\" y=\"-250%\" width=\"600%\" height=\"600%\">\n <feComponentTransfer in=\"SourceAlpha\" result=\"solid\">\n <feFuncA type=\"table\" tableValues=\"0 1 1\"/>\n </feComponentTransfer>\n <feOffset in=\"solid\" result=\"offU\" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />\n <feOffset in=\"solid\" result=\"offP\" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />\n <feOffset in=\"solid\" result=\"offA\" dx=${shadows.mapAmbient[z].y / 2} dy=${shadows.mapAmbient[z].y} />\n ${(shadows.mapUmbra[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offU\" result=\"spreadU\" operator=${(shadows.mapUmbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapUmbra[z].s)} />`\n }\n ${(shadows.mapPenumbra[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offP\" result=\"spreadP\" operator=${(shadows.mapPenumbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapPenumbra[z].s)} />`\n }\n ${(shadows.mapAmbient[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offA\" result=\"spreadA\" operator=${(shadows.mapAmbient[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapAmbient[z].s)} />`\n }\n <feGaussianBlur in=${(shadows.mapUmbra[z].s === 0) ? 'offU' : 'spreadU'} result=\"blurU\" stdDeviation=${shadows.mapUmbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapPenumbra[z].s === 0) ? 'offP' : 'spreadP'} result=\"blurP\" stdDeviation=${shadows.mapPenumbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapAmbient[z].s === 0) ? 'offA' : 'spreadA'} result=\"blurA\" stdDeviation=${shadows.mapAmbient[z].b / 2} />\n <feFlood in=\"SourceGraphic\" result=\"opU\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityUmbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opP\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityPenumbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opA\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityAmbient + shadows.opacityBoost} />\n <feComposite in=\"opU\" in2=\"blurU\" result=\"shU\" operator=\"in\" />\n <feComposite in=\"opP\" in2=\"blurP\" result=\"shP\" operator=\"in\" />\n <feComposite in=\"opA\" in2=\"blurA\" result=\"shA\" operator=\"in\" />\n <feMorphology in=\"solid\" result=\"smaller\" operator=\"erode\" radius=\"1\" />\n <feComposite in=\"shU\" in2=\"smaller\" result=\"finalU\" operator=\"out\" />\n <feComposite in=\"shP\" in2=\"smaller\" result=\"finalP\" operator=\"out\" />\n <feComposite in=\"shA\" in2=\"smaller\" result=\"finalA\" operator=\"out\" />\n <feMerge>\n <feMergeNode in=\"finalU\" />\n <feMergeNode in=\"finalP\" />\n <feMergeNode in=\"finalA\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>`;\n });\n\n return svg`\n <svg class=\"defs\">\n <defs>\n ${filters}\n </defs>\n </svg>\n `;\n }\n\n static get styles() {\n return css`\n :host {\n ---shadow-0: var(--shadow-0, ${unsafeCSS(this.cssBoxShadow(0))});\n ---shadow-2: var(--shadow-2, ${unsafeCSS(this.cssBoxShadow(2))});\n ---shadow-4: var(--shadow-4, ${unsafeCSS(this.cssBoxShadow(4))});\n ---shadow-8: var(--shadow-8, ${unsafeCSS(this.cssBoxShadow(8))});\n\n ---color-background: var(--color-background, ${unsafeCSS(this.greys.white)});\n ---color-border: var(--color-border, ${unsafeCSS(this.greys.light75)});\n ---color-text: var(--color-text, ${unsafeCSS(this.greys.dark75)});\n ---color-text-inverse: var(--color-text-inverse, ${unsafeCSS(this.greys.white)});\n ---color-link: var(--color-link, ${unsafeCSS(this.greys.dark25)});\n ---color-element-background: var(--color-element-background, ${unsafeCSS(this.greys.light75)});\n ---color-element-disabled: var(--color-element-disabled, ${unsafeCSS(this.greys.light50)});\n ---color-element-enabled: var(--color-element-enabled, ${unsafeCSS(this.greys.dark25)});\n ---color-element-selected: var(--color-element-selected, ${unsafeCSS(this.greys.grey)});\n ---color-element-border: var(--color-element-border, ${unsafeCSS(this.greys.dark50)});\n ---color-element-emphasis: var(--color-element-emphasis, ${unsafeCSS(this.greys.dark75)});\n\n ---font-family-base: var(--font-family-base, \"Source Sans\", sans-serif);\n ---font-family-math: var(--font-family-math, \"Source Serif\", serif);\n\n ---border: var(--border, 1px solid var(---color-border));\n ---border-radius: var(--border-radius, 0.25rem);\n ---transition-duration: var(--transition-duration, 500ms);\n\n font-family: var(---font-family-base);\n }\n\n :host,\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: border-box;\n }\n\n .math-greek {\n font-family: var(---font-family-math);\n font-style: normal;\n }\n\n .math-num {\n font-family: var(---font-family-base);\n font-style: normal;\n }\n\n .math-var {\n font-family: var(---font-family-math);\n font-style: italic;\n }\n\n .defs {\n display: block;\n\n width: 0;\n height: 0;\n }\n `;\n }\n}\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesButton extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n margin: 0.25rem;\n }\n\n button {\n width: 100%;\n height: 100%;\n padding: 0.375rem 0.75rem;\n\n font-family: var(---font-family-base);\n font-size: 1.125rem;\n line-height: 1.5;\n color: var(---color-text-inverse);\n\n border: 0;\n border-radius: var(---border-radius);\n outline: none;\n }\n\n button:disabled {\n background-color: var(--decidables-button-background-color, var(---color-element-disabled));\n outline: none;\n box-shadow: none;\n }\n\n button:enabled {\n cursor: pointer;\n\n background-color: var(--decidables-button-background-color, var(---color-element-enabled));\n outline: none;\n box-shadow: var(---shadow-2);\n }\n\n button:enabled:hover {\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n button:enabled:active {\n outline: none;\n box-shadow: var(---shadow-8);\n }\n\n :host(.keyboard) button:enabled:focus {\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) button:enabled:focus:active {\n outline: none;\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <button ?disabled=${this.disabled}>\n <slot></slot>\n </button>\n `;\n }\n}\n\ncustomElements.define('decidables-button', DecidablesButton);\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","\nimport {ifDefined} from 'lit/directives/if-defined.js'; /* eslint-disable-line import/extensions */\nimport {html, css, unsafeCSS} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSlider extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n max: {\n attribute: 'max',\n type: Number,\n reflect: true,\n },\n min: {\n attribute: 'min',\n type: Number,\n reflect: true,\n },\n step: {\n attribute: 'step',\n type: Number,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n this.max = undefined;\n this.min = undefined;\n this.step = undefined;\n this.value = undefined;\n }\n\n changed(event) {\n this.value = event.target.value;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n value: this.value,\n },\n bubbles: true,\n }));\n }\n\n inputted(event) {\n this.value = event.target.value;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---shadow-2-rotate: var(--shadow-2-rotate, ${unsafeCSS(this.cssBoxShadow(2, true, false))});\n ---shadow-4-rotate: var(--shadow-4-rotate, ${unsafeCSS(this.cssBoxShadow(4, true, false))});\n ---shadow-8-rotate: var(--shadow-8-rotate, ${unsafeCSS(this.cssBoxShadow(8, true, false))});\n\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n }\n\n label {\n margin: 0.25rem 0.25rem 0;\n }\n\n .range {\n display: inline-block;\n\n width: 3.5rem;\n height: 4.75rem;\n margin: 0 0.25rem 0.25rem;\n }\n\n decidables-spinner {\n --decidables-spinner-input-width: 3.5rem;\n\n margin: 0 0.25rem 0.25rem;\n }\n\n /* Adapted from http://danielstern.ca/range.css/#/ */\n /* Overall */\n input[type=range] {\n width: 4.75rem;\n height: 3.5rem;\n padding: 0;\n margin: 0;\n\n background-color: unset;\n\n transform: rotate(-90deg);\n transform-origin: 2.375rem 2.375rem;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-appearance: none;\n }\n\n input[type=range]:enabled {\n cursor: ns-resize;\n }\n\n input[type=range]:focus {\n outline: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-tooltip {\n display: none;\n }\n\n /* Track */\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n\n background: var(---color-element-disabled);\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n input[type=range]:focus::-webkit-slider-runnable-track {\n background: var(---color-element-disabled);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-moz-range-track {\n width: 100%;\n height: 4px;\n\n background: var(---color-element-disabled);\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-track {\n width: 100%;\n height: 4px;\n\n color: transparent;\n\n background: transparent;\n border-color: transparent;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-fill-lower {\n background: #cccccc;\n /* background: var(---color-element-disabled); */\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-fill-upper {\n background: #cccccc;\n /* background: var(---color-element-disabled); */\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:focus::-ms-fill-lower {\n background: var(---color-element-disabled);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:focus::-ms-fill-upper {\n background: var(---color-element-disabled);\n }\n\n /* Thumb */\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-webkit-slider-thumb {\n width: 10px;\n height: 20px;\n margin-top: -8px;\n\n border: 0;\n border-radius: 4px;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-appearance: none;\n }\n\n input[type=range]:disabled::-webkit-slider-thumb {\n background: var(---color-element-disabled);\n box-shadow: none;\n }\n\n input[type=range]:enabled::-webkit-slider-thumb {\n background: var(---color-element-enabled);\n box-shadow: var(---shadow-2-rotate);\n }\n\n input[type=range]:enabled:hover::-webkit-slider-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n input[type=range]:enabled:active::-webkit-slider-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus::-webkit-slider-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:focus:active::-webkit-slider-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-moz-range-thumb {\n width: 10px;\n height: 20px;\n\n border: 0;\n border-radius: 4px;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:disabled::-moz-range-thumb {\n background: var(---color-element-disabled);\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled::-moz-range-thumb {\n background: var(---color-element-enabled);\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:hover::-moz-range-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:active::-moz-range-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus::-moz-range-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus:active::-moz-range-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-thumb {\n width: 10px;\n height: 20px;\n margin-top: 0;\n\n background: #999999;\n /* background: var(---color-element-enabled); */\n border: 0;\n border-radius: 4px;\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:disabled::-ms-thumb {\n background: var(---color-element-disabled);\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled::-ms-thumb {\n background: var(---color-element-enabled);\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:hover::-ms-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:active::-ms-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n :host(.keyboard) input[type=range]:enabled:focus::-ms-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus:active::-ms-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <label for=\"slider\">\n <slot></slot>\n </label>\n <div class=\"range\">\n <input ?disabled=${this.disabled} type=\"range\" id=\"slider\" min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @change=${this.changed.bind(this)} @input=${this.inputted.bind(this)}>\n </div>\n <decidables-spinner ?disabled=${this.disabled} min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.inputted.bind(this)}></decidables-spinner>\n `;\n }\n}\n\ncustomElements.define('decidables-slider', DecidablesSlider);\n","\nimport {ifDefined} from 'lit/directives/if-defined.js'; /* eslint-disable-line import/extensions */\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSpinner extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n max: {\n attribute: 'max',\n type: Number,\n reflect: true,\n },\n min: {\n attribute: 'min',\n type: Number,\n reflect: true,\n },\n step: {\n attribute: 'step',\n type: Number,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n this.max = undefined;\n this.min = undefined;\n this.step = undefined;\n this.value = undefined;\n }\n\n inputted(event) {\n this.value = event.target.value;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---decidables-spinner-font-size: var(--decidables-spinner-font-size, 1.125rem);\n ---decidables-spinner-input-width: var(--decidables-spinner-input-width, 4rem);\n ---decidables-spinner-prefix: var(--decidables-spinner-prefix, \"\");\n\n ---decidables-spinner-postfix: var(--decidables-spinner-postfix, \"\");\n ---decidables-spinner-postfix-padding: var(--decidables-spinner-postfix-padding, 0);\n\n display: block;\n }\n\n label {\n position: relative;\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n\n margin: 0;\n\n font-size: 0.75rem;\n }\n\n label::before {\n position: absolute;\n bottom: 1px;\n left: calc(50% - var(---decidables-spinner-input-width) / 2 + 0.25rem);\n\n font-size: var(---decidables-spinner-font-size);\n line-height: normal;\n\n content: var(---decidables-spinner-prefix);\n }\n\n label::after {\n position: absolute;\n right: 0.25rem;\n bottom: 1px;\n\n font-size: var(---decidables-spinner-font-size);\n line-height: normal;\n\n content: var(---decidables-spinner-postfix);\n }\n\n input[type=number] {\n width: var(---decidables-spinner-input-width);\n padding-right: var(---decidables-spinner-postfix-padding);\n\n font-family: var(---font-family-base);\n font-size: var(---decidables-spinner-font-size);\n color: inherit;\n text-align: right;\n\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n box-shadow: var(---shadow-2);\n\n -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */\n }\n\n input[type=number]:hover {\n box-shadow: var(---shadow-4);\n }\n\n input[type=number]:focus,\n input[type=number]:active {\n box-shadow: var(---shadow-8);\n }\n\n input[type=number]:disabled {\n color: var(---color-text);\n\n border: 0;\n box-shadow: none;\n\n /* HACK: Use correct text color in Safari */\n -webkit-opacity: 1;\n /* HACK: Hide spinners in disabled input for Firefox and Safari */\n -moz-appearance: textfield; /* stylelint-disable-line property-no-vendor-prefix */\n /* HACK: Use correct text color in Safari */\n -webkit-text-fill-color: var(---color-text);\n }\n\n /* HACK: Hide spinners in disabled input for Firefox and Safari */\n input[type=number]:disabled::-webkit-outer-spin-button,\n input[type=number]:disabled::-webkit-inner-spin-button {\n margin: 0;\n -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */\n }\n `,\n ];\n }\n\n render() {\n return html`\n <label>\n <slot></slot>\n <input ?disabled=${this.disabled} type=\"number\" min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.inputted.bind(this)}>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-spinner', DecidablesSpinner);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSwitch extends DecidablesElement {\n static get properties() {\n return {\n checked: {\n attribute: 'checked',\n type: Boolean,\n reflect: true,\n },\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.checked = false;\n this.disabled = false;\n }\n\n changed(event) {\n this.checked = event.target.checked;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n checked: this.checked,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n }\n\n /* Adapted from https://codepen.io/guuslieben/pen/YyPRVP */\n input[type=checkbox] {\n /* visuallyhidden: https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/css.md */\n position: absolute;\n\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n white-space: nowrap;\n\n border: 0;\n clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */\n }\n\n input[type=checkbox] + label {\n order: 1;\n\n margin: 0 0.25rem 0.25rem;\n\n font-weight: 400;\n }\n\n input[type=checkbox] + label + label {\n position: relative;\n\n min-width: 24px;\n padding: 0 0 36px;\n margin: 0.25rem 0.25rem 0;\n\n font-weight: 400;\n\n outline: none;\n }\n\n input[type=checkbox] + label + label::before,\n input[type=checkbox] + label + label::after {\n position: absolute;\n\n left: 50%;\n\n margin: 0;\n\n content: \"\";\n\n outline: 0;\n\n transition: all var(---transition-duration) ease;\n transform: translate(-50%, 0);\n }\n\n input[type=checkbox] + label + label::before {\n bottom: 1px;\n\n width: 8px;\n height: 34px;\n\n background-color: var(---color-element-disabled);\n border-radius: 4px;\n }\n\n input[type=checkbox] + label + label::after {\n bottom: 0;\n\n width: 18px;\n height: 18px;\n\n background-color: var(---color-element-enabled);\n border-radius: 50%;\n box-shadow: var(---shadow-2);\n }\n\n input[type=checkbox]:checked + label + label::after {\n transform: translate(-50%, -100%);\n }\n\n input[type=checkbox]:disabled + label + label::after {\n background-color: var(---color-element-disabled);\n box-shadow: none;\n }\n\n input[type=checkbox]:enabled + label,\n input[type=checkbox]:enabled + label + label {\n cursor: pointer;\n }\n\n input[type=checkbox]:enabled + label:hover + label::after,\n input[type=checkbox]:enabled + label + label:hover::after {\n box-shadow: var(---shadow-4);\n }\n\n input[type=checkbox]:enabled + label:active + label::after,\n input[type=checkbox]:enabled + label + label:active::after {\n box-shadow: var(---shadow-8);\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n :host(.keyboard) input[type=checkbox]:enabled:focus + label + label::after {\n box-shadow: var(---shadow-4);\n }\n\n /* stylelint-disable selector-max-compound-selectors */\n :host(.keyboard) input[type=checkbox]:enabled:focus + label + label:active::after,\n :host(.keyboard) input[type=checkbox]:enabled:focus:active + label + label::after {\n box-shadow: var(---shadow-8);\n }\n /* stylelint-enable selector-max-compound-selectors */\n `,\n ];\n }\n\n render() {\n return html`\n <input type=\"checkbox\" id=\"switch\" ?checked=${this.checked} ?disabled=${this.disabled} @change=${this.changed.bind(this)}>\n <label for=\"switch\">\n <slot name=\"off-label\"></slot>\n </label>\n <label for=\"switch\">\n <slot></slot>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-switch', DecidablesSwitch);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesToggle extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n fieldset {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n\n margin: 0.25rem;\n\n border: 0;\n }\n\n legend {\n text-align: center;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <fieldset ?disabled=${this.disabled}>\n <legend><slot name=\"label\"></slot></legend>\n <slot></slot>\n </fieldset>\n `;\n }\n}\n\ncustomElements.define('decidables-toggle', DecidablesToggle);\n","\nexport default function DecidablesMixinResizeable(superClass) {\n return class extends superClass {\n static get properties() {\n return {\n width: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n height: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n rem: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n this.width = NaN;\n this.height = NaN;\n this.rem = NaN;\n }\n\n getDimensions() {\n this.width = parseFloat(this.getComputedStyleValue('width'), 10);\n this.height = parseFloat(this.getComputedStyleValue('height'), 10);\n this.rem = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('font-size'), 10);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.resizeObserver = new ResizeObserver(this.getDimensions.bind(this));\n this.resizeObserver.observe(this);\n }\n\n disconnectedCallback() {\n this.resizeObserver.unobserve(this);\n\n super.disconnectedCallback();\n }\n };\n}\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesToggleOption extends DecidablesElement {\n static get properties() {\n return {\n checked: {\n attribute: 'checked',\n type: Boolean,\n reflect: true,\n },\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n name: {\n attribute: 'name',\n type: String,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: String,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.checked = false;\n this.disabled = false;\n this.name = undefined;\n this.value = undefined;\n }\n\n changed(event) {\n this.checked = event.target.checked;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n checked: this.checked,\n value: this.value,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: flex;\n }\n\n input[type=radio] {\n /* visuallyhidden: https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/css.md */\n position: absolute;\n\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n white-space: nowrap;\n\n border: 0;\n clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */\n }\n\n input[type=radio] + label {\n width: 100%;\n padding: 0.375rem 0.75rem;\n\n font-family: var(---font-family-base);\n font-size: 1.125rem;\n line-height: 1.5;\n color: var(---color-text-inverse);\n text-align: center;\n\n cursor: pointer;\n\n background-color: var(---color-element-enabled);\n border: 0;\n border-radius: 0;\n outline: none;\n\n box-shadow: var(---shadow-2);\n }\n\n input[type=radio]:checked + label {\n background-color: var(---color-element-selected);\n outline: none;\n box-shadow: var(---shadow-2);\n }\n\n input[type=radio] + label:hover {\n z-index: 1;\n\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n input[type=radio] + label:active {\n z-index: 2;\n\n outline: none;\n box-shadow: var(---shadow-8);\n }\n\n :host(:first-of-type) input[type=radio] + label {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n\n :host(:last-of-type) input[type=radio] + label {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n\n :host(.keyboard) input[type=radio]:focus + label {\n z-index: 1;\n\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) input[type=radio]:focus:checked + label {\n z-index: 1;\n\n background-color: var(---color-element-selected);\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) input[type=radio]:focus + label:active {\n z-index: 2;\n\n outline: none;\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <input type=\"radio\" id=\"toggle-option\" name=${this.name} value=${this.value} .checked=${this.checked} @change=${this.changed.bind(this)}>\n <label for=\"toggle-option\">\n <slot></slot>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-toggle-option', DecidablesToggleOption);\n","\nimport {\n css,\n unsafeCSS,\n} from 'lit';\nimport * as d3 from 'd3';\n\nimport {DecidablesElement} from '@decidables/decidables-elements';\n\n/*\n AccumulableElement Base Class - Not intended for instantiation!\n*/\nexport default class AccumulableElement extends DecidablesElement {\n static get properties() {\n return {\n interactive: {\n attribute: 'interactive',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n this.interactive = false;\n }\n\n static get colors() {\n return {\n a: d3.schemeSet1[0],\n z: d3.schemeSet1[1],\n v: d3.schemeSet1[4],\n t0: d3.schemeSet1[7],\n s: d3.schemeSet1[8],\n left: '#f032e6',\n right: '#10dbc9',\n correct: d3.schemeSet1[2],\n error: d3.schemeSet1[3],\n nr: '#cccccc',\n };\n }\n\n static get lights() {\n return Object.keys(AccumulableElement.colors).reduce((acc, cur) => {\n acc[cur] = d3.interpolateRgb(AccumulableElement.colors[cur], '#ffffff')(0.5);\n return acc;\n }, {});\n }\n\n static get darks() {\n return Object.keys(AccumulableElement.colors).reduce((acc, cur) => {\n acc[cur] = d3.interpolateRgb(AccumulableElement.colors[cur], '#000000')(0.5);\n return acc;\n }, {});\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n /* Declare base colors */\n ${\n unsafeCSS(Object.keys(AccumulableElement.colors).map((color) => {\n return `---color-${color}: var(--color-${color}, ${this.colors[color]});`;\n }).join('\\n'))\n }\n\n /* Declare light colors */\n ${\n unsafeCSS(Object.keys(AccumulableElement.colors).map((color) => {\n return `---color-${color}-light: var(--color-${color}-light, ${this.lights[color]});`;\n }).join('\\n'))\n }\n\n /* Declare dark colors */\n ${\n unsafeCSS(Object.keys(AccumulableElement.colors).map((color) => {\n return `---color-${color}-dark: var(--color-${color}-dark, ${this.darks[color]});`;\n }).join('\\n'))\n }\n }\n `,\n ];\n }\n}\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/button';\nimport '@decidables/decidables-elements/slider';\nimport '@decidables/decidables-elements/switch';\nimport '@decidables/decidables-elements/toggle';\nimport '@decidables/decidables-elements/toggle-option';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n AccumulableControl element\n <accumulable-control>\n\n Attributes:\n\n*/\nexport default class AccumulableControl extends AccumulableElement {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n resample: {\n attribute: 'resample',\n type: Boolean,\n reflect: true,\n },\n\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n run: {\n attribute: 'run',\n type: Boolean,\n reflect: true,\n },\n pause: {\n attribute: 'pause',\n type: Boolean,\n reflect: true,\n },\n reset: {\n attribute: 'reset',\n type: Boolean,\n reflect: true,\n },\n\n state: {\n attribute: false,\n type: String,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.trials = undefined;\n this.resample = false;\n\n this.duration = undefined;\n this.coherence = undefined;\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = undefined;\n\n this.run = false;\n this.pause = false;\n this.reset = false;\n\n // Properties\n this.states = ['resetted', 'running', 'paused', 'ended'];\n this.state = 'resetted';\n }\n\n setTrials(e) {\n this.trials = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-trials', {\n detail: {\n trials: this.trials,\n },\n bubbles: true,\n }));\n }\n\n doResample() {\n this.dispatchEvent(new CustomEvent('accumulable-control-resample', {\n detail: {},\n bubbles: true,\n }));\n }\n\n setDuration(e) {\n this.duration = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-duration', {\n detail: {\n duration: this.duration,\n },\n bubbles: true,\n }));\n }\n\n setCoherence(e) {\n this.coherence = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-coherence', {\n detail: {\n coherence: this.coherence,\n },\n bubbles: true,\n }));\n }\n\n chooseColor(e) {\n this.color = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-color', {\n detail: {\n color: this.color,\n },\n bubbles: true,\n }));\n }\n\n doRun() {\n this.state = 'running';\n this.dispatchEvent(new CustomEvent('accumulable-control-run', {\n detail: {},\n bubbles: true,\n }));\n }\n\n doPause() {\n this.state = 'paused';\n this.dispatchEvent(new CustomEvent('accumulable-control-pause', {\n detail: {},\n bubbles: true,\n }));\n }\n\n doReset() {\n this.state = 'resetted';\n this.dispatchEvent(new CustomEvent('accumulable-control-reset', {\n detail: {},\n bubbles: true,\n }));\n }\n\n complete() {\n this.state = 'ended';\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n .holder {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n .buttons {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div class=\"holder\">\n ${this.trials\n ? html`<decidables-slider class=\"trials\" min=\"1\" max=\"100\" step=\"1\" .value=${this.trials} @change=${this.setTrials.bind(this)} @input=${this.setTrials.bind(this)}>Trials</decidables-slider>`\n : html``}\n ${this.resample\n ? html`\n <div class=\"buttons\">\n ${this.resample\n ? html`<decidables-button name=\"resample\" @click=${this.doResample.bind(this)}>Resample</decidables-button>`\n : html``}\n </div>\n `\n : html``}\n ${this.duration\n ? html`<decidables-slider class=\"duration\" min=\"10\" max=\"2000\" step=\"10\" .value=${this.duration} @change=${this.setDuration.bind(this)} @input=${this.setDuration.bind(this)}>Duration</decidables-slider>`\n : html``}\n ${this.coherence\n ? html`<decidables-slider class=\"coherence\" min=\"0\" max=\"1\" step=\".01\" .value=${this.coherence} @change=${this.setCoherence.bind(this)} @input=${this.setCoherence.bind(this)}>Coherence</decidables-slider>`\n : html``}\n ${this.color !== undefined\n ? html`\n <decidables-toggle class=\"color\" @change=${this.chooseColor.bind(this)}>\n <span slot=\"label\">Emphasis</span>\n <decidables-toggle-option name=\"toggle\" value=\"none\" ?checked=${this.color === 'none'}>None</decidables-toggle-option>\n <decidables-toggle-option name=\"toggle\" value=\"measure\" ?checked=${this.color === 'measure'}>Measure</decidables-toggle-option>\n <decidables-toggle-option name=\"toggle\" value=\"outcome\" ?checked=${this.color === 'outcome'}>Outcome</decidables-toggle-option>\n <decidables-toggle-option name=\"toggle\" value=\"all\" ?checked=${this.color === 'all'}>All</decidables-toggle-option>\n </decidables-toggle>\n `\n : html``}\n ${this.run || this.pause || this.reset\n ? html`\n <div class=\"buttons\">\n ${this.run\n ? html`<decidables-button name=\"run\" ?disabled=${this.state === 'running' || this.state === 'ended'} @click=${this.doRun.bind(this)}>Run</decidables-button>`\n : html``}\n ${this.pause\n ? html`<decidables-button name=\"pause\" ?disabled=${this.state !== 'running'} @click=${this.doPause.bind(this)}>Pause</decidables-button>`\n : html``}\n ${this.reset\n ? html`<decidables-button name=\"reset\" ?disabled=${this.state === 'resetted'} @click=${this.doReset.bind(this)}>Reset</decidables-button>`\n : html``}\n </div>\n `\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('accumulable-control', AccumulableControl);\n","\n/*\n DDMMath Static Class - Not intended for instantiation!\n\n Model parameters:\n a = boundary separation\n z = starting point as a proportion of a\n v = drift rate (per second)\n t0 = non-decision time (in milliseconds)\n s = within-trial variability in drift rate (s^2 = infinitesimal variance)\n\n zPrime = starting point on a 0-to-a scale (typically used in published equations)\n\n Behavioral variables:\n pE = proportion of error trials\n pC = proportion of correct trials\n m = mean of overall RTs (in milliseconds)\n mE = mean of error RTs (in milliseconds)\n mC = mean correct RTs (in milliseconds)\n sd = standard deviation of overall RTs (in milliseconds)\n sdE = standard deviation of error RTs (in milliseconds)\n sdC = standard deviation of correct RTs (in milliseconds)\n\n Equations:\n Probability of correct and error responses (Alexandrowicz, 2020)\n Mean of overall, error, and correct RTs (Grasman et al., 2009)\n Standard deviation of overall, error, and correct RTs (Grasman et al., 2009)\n Density of error and correct RT distributions (Alexandrowicz, 2020)\n EZ-diffusion model (Wagenmakers et al., 2007)\n*/\nexport default class DDMMath {\n static s = 1;\n\n // Calculate a bunch of statistics for an array of trials\n static trials2stats(trials) {\n const stats = {};\n\n // First-order sums\n const sums = trials.reduce(\n (accumulator, trial) => {\n switch (trial.outcome) {\n case 'correct':\n accumulator.correctCount += 1;\n accumulator.correctRTSum += trial.rt;\n break;\n case 'error':\n accumulator.errorCount += 1;\n accumulator.errorRTSum += trial.rt;\n break;\n case 'nr':\n accumulator.nrCount += 1;\n break;\n default:\n // No-op\n }\n return accumulator;\n },\n {\n correctCount: 0,\n errorCount: 0,\n nrCount: 0,\n\n correctRTSum: 0,\n errorRTSum: 0,\n },\n );\n\n // First-order stats\n stats.correctCount = sums.correctCount;\n stats.errorCount = sums.errorCount;\n stats.nrCount = sums.nrCount;\n stats.accuracy = sums.correctCount / (sums.correctCount + sums.errorCount + sums.nrCount);\n\n stats.correctMeanRT = sums.correctRTSum / sums.correctCount;\n stats.errorMeanRT = sums.errorRTSum / sums.errorCount;\n stats.meanRT = (sums.correctRTSum + sums.errorRTSum) / (sums.correctCount + sums.errorCount);\n\n // Second-order sums\n const sums2 = trials.reduce(\n (accumulator, trial) => {\n switch (trial.outcome) {\n case 'correct':\n accumulator.ss += (trial.rt - stats.meanRT) ** 2;\n accumulator.correctSS += (trial.rt - stats.correctMeanRT) ** 2;\n break;\n case 'error':\n accumulator.ss += (trial.rt - stats.meanRT) ** 2;\n accumulator.errorSS += (trial.rt - stats.errorMeanRT) ** 2;\n break;\n default:\n // No-op\n }\n return accumulator;\n },\n {\n ss: 0,\n correctSS: 0,\n errorSS: 0,\n },\n );\n\n // Second-order stats\n stats.correctSDRT = (stats.correctCount > 1)\n ? Math.sqrt(sums2.correctSS / (stats.correctCount - 1))\n : NaN;\n stats.errorSDRT = (stats.errorCount > 1)\n ? Math.sqrt(sums2.errorSS / (stats.errorCount - 1))\n : NaN;\n stats.sdRT = (stats.correctCount + stats.errorCount > 1)\n ? Math.sqrt(sums2.ss / (stats.correctCount + stats.errorCount - 1))\n : NaN;\n\n return stats;\n }\n\n // Probability of an Error Response\n static azv2pE(a, z, v, s = DDMMath.s) {\n const zPrime = a * z;\n\n const A = Math.exp((-2 * v * a) / s ** 2);\n const Z = Math.exp((-2 * v * zPrime) / s ** 2);\n\n return (A - Z) / (A - 1);\n }\n\n // Probability of a Correct Response\n static azv2pC(a, z, v, s = DDMMath.s) {\n return DDMMath.azv2pE(a, 1 - z, -v, s);\n }\n\n // Mean Overall RT\n // Equation 5 (Grasman et al., 2009)\n static azvt02m(a, z, v, t0, s = DDMMath.s) {\n const zPrime = a * z;\n const A = Math.exp((-2 * v * a) / s ** 2) - 1;\n const Z = Math.exp((-2 * v * zPrime) / s ** 2) - 1;\n\n const mean = -(zPrime / v) + (a / v) * (Z / A);\n return t0 + mean * 1000;\n }\n\n // SD Overall RT\n // Equation 6 (Grasman et al., 2009)\n static azv2sd(a, z, v, s = DDMMath.s) {\n const zPrime = a * z;\n const A = Math.exp((-2 * v * a) / s ** 2) - 1;\n const Z = Math.exp((-2 * v * zPrime) / s ** 2) - 1;\n\n const variance = (\n (\n (-v * a ** 2 * (Z + 4) * Z) / A ** 2\n ) + (\n ((-3 * v * a ** 2 + 4 * v * zPrime * a + s ** 2 * a) * Z + 4 * v * zPrime * a) / A\n ) - (\n s ** 2 * zPrime\n )\n ) / v ** 3;\n\n return Math.sqrt(variance) * 1000;\n }\n\n // Mean Error RT\n // Equation 13 (Grasman et al., 2009)\n static azvt02mE(a, z, v, t0, s = DDMMath.s) {\n function phi(x, y) {\n return Math.exp((2 * v * y) / (s ** 2)) - Math.exp((2 * v * x) / (s ** 2));\n }\n const zPrime = a * z;\n\n const mean = (zPrime * (phi(zPrime - a, a) + phi(0, zPrime)) + 2 * a * phi(zPrime, 0))\n / (v * phi(zPrime, a) * phi(-a, 0));\n return t0 + mean * 1000;\n }\n\n // SD Error RT\n // Equation 14 (Grasman et al., 2009)\n static azv2sdE(a, z, v, s = DDMMath.s) {\n function phi(x, y) {\n return Math.exp((2 * v * y) / (s ** 2)) - Math.exp((2 * v * x) / (s ** 2));\n }\n const zPrime = a * z;\n\n const variance = (\n (\n -2 * a * phi(0, zPrime)\n * ((2 * v * a * phi(zPrime, 2 * a)) + (s ** 2 * phi(0, a) * phi(zPrime, a)))\n * Math.exp((2 * v * a) / s ** 2)\n ) / (\n v ** 3 * phi(0, a) ** 2 * phi(zPrime, a) ** 2\n )\n ) + (\n (\n 4 * v * zPrime * (2 * a - zPrime) * Math.exp((2 * v * (zPrime + a)) / s ** 2)\n + zPrime * s ** 2 * phi(2 * zPrime, 2 * a)\n ) / (\n v ** 3 * phi(zPrime, a) ** 2\n )\n );\n\n return Math.sqrt(variance) * 1000;\n }\n\n // Mean Correct RT\n static azvt02mC(a, z, v, t0, s = DDMMath.s) {\n return DDMMath.azvt02mE(a, 1 - z, -v, t0, s);\n }\n\n // SD Correct RT\n static azv2sdC(a, z, v, s = DDMMath.s) {\n return DDMMath.azv2sdE(a, 1 - z, -v, s);\n }\n\n // Density of Error RT\n static tazv2gE(t, a, z, v, s = DDMMath.s) {\n if (!t) return 0;\n\n const zPrime = a * z;\n const base = ((Math.PI * s ** 2) / a ** 2) * Math.exp((-zPrime * v) / s ** 2);\n\n let k = 0;\n let term = 0;\n let sum = 0;\n do {\n k += 1;\n\n term = k\n * Math.sin((Math.PI * zPrime * k) / a)\n * Math.exp(-0.5 * ((v ** 2 / s ** 2) + ((Math.PI ** 2 * k ** 2 * s ** 2) / a ** 2)) * t);\n\n sum += term;\n } while (k < 200); // ?? HACK\n\n return base * sum;\n }\n\n // Density of Correct RT\n static tazv2gC(t, a, z, v, s = DDMMath.s) {\n return DDMMath.tazv2gE(t, a, 1 - z, -v, s);\n }\n\n // Adapted from https://raoul.socsci.uva.nl/EZ2/EZ2_new.html\n // EZ-function for starting values\n // input: obj - Object with properties\n // pC - Proportion correct\n // sd - sample standard deviation of the RT's in ms\n // m - sample mean of the RT's in ms\n // s - diffusion standard deviation\n // returns: Object with properties v, a, and t0, containing EZ-estimates of these parameters\n static data2ez({\n accuracy: pC,\n sdRT: sd,\n meanRT: m,\n s,\n }) {\n function sign(r) {\n return ((r > 0) ? 1 : ((r === 0) ? 0 : -1));\n }\n\n function logit(p) {\n return Math.log(p / (1 - p));\n }\n\n const vrt = (sd / 1000) ** 2;\n const mrt = m / 1000;\n\n const s2 = s ** 2;\n const l = logit(pC);\n const x = (l * (l * pC ** 2 - l * pC + pC - 0.5)) / vrt;\n const v = sign(pC - 0.5) * s * x ** (1 / 4);\n const a = (s2 * logit(pC)) / v;\n const y = (-v * a) / s2;\n const mdt = ((a / (2 * v)) * (1 - Math.exp(y))) / (1 + Math.exp(y));\n const t0 = (mrt ? mrt - mdt : null); // compute Ter only if MRT was provided\n\n const t0Prime = t0 * 1000;\n return {\n v,\n a,\n t0: t0Prime,\n s,\n };\n }\n\n static data2ez2() {\n throw new Error('data2ez2 is not implemented!');\n }\n}\n","\nimport {html, css} from 'lit';\n\nimport DDMMath from '@decidables/accumulable-math';\nimport '@decidables/decidables-elements/button';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n AccumulableResponse element\n <accumulable-response>\n\n Attributes:\n\n*/\nexport default class AccumulableResponse extends AccumulableElement {\n static get properties() {\n return {\n feedback: {\n attribute: 'feedback',\n type: Boolean,\n reflect: true,\n },\n trial: {\n attribute: 'trial',\n type: Boolean,\n reflect: true,\n },\n payoff: {\n attribute: 'payoff',\n type: String,\n reflect: true,\n },\n correctPayoff: {\n attribute: 'correct-payoff',\n type: Number,\n reflect: true,\n },\n errorPayoff: {\n attribute: 'error-payoff',\n type: Number,\n reflect: true,\n },\n nrPayoff: {\n attribute: 'no-response-payoff',\n type: Number,\n reflect: true,\n },\n\n state: {\n attribute: false,\n type: String,\n reflect: false,\n },\n trialCount: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n trialTotal: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.feedback = false; // Display feedback?\n this.trial = false; // Show trial count?\n this.payoffs = ['none', 'trial', 'total']; // Possible types of 'payoff' info\n this.payoff = 'none'; // What payoff info to display\n\n this.correctPayoff = 0; // Correct payoff\n this.errorPayoff = 0; // Error payoff\n this.nrPayoff = 0; // No Response payoff\n\n // Properties\n this.states = ['off', 'waiting', 'feedback']; // Possible states\n this.state = 'off'; // Current state\n\n this.trialCount = 0; // Current trial\n this.trialTotal = 0; // Total trials\n\n // Private\n this.signals = ['left', 'right']; // Possible values of 'signal'\n this.signal = undefined; // Signal for current trial\n this.responses = ['left', 'right']; // Possible values of 'response'\n this.response = undefined; // Response for current trial\n this.outcomes = ['correct', 'error', 'nr']; // Possible values of 'outcome'\n this.outcome = undefined; // Outcome for current trial\n this.startTime = undefined; // Start time of current trial\n this.rt = undefined; // RT for current trial\n\n this.correctCount = 0; // Count of Correct Trials\n this.errorCount = 0; // Count of Error Trials\n this.nrCount = 0; // Count of No Response trials\n\n this.trials = []; // Record of trials in block\n this.alignState();\n }\n\n get trialPayoff() {\n switch (this.outcome) {\n case 'correct':\n return this.correctPayoff;\n case 'error':\n return this.errorPayoff;\n case 'nr':\n return this.nrPayoff;\n default:\n return undefined;\n }\n }\n\n get totalPayoff() {\n return ((this.correctCount * this.correctPayoff)\n + (this.errorCount * this.errorPayoff)\n + (this.nrCount * this.nrPayoff));\n }\n\n alignState() {\n const stats = DDMMath.trials2stats(this.trials);\n Object.assign(this, stats);\n }\n\n start(signal, trial) {\n this.startTime = Date.now();\n this.trialCount = trial;\n this.state = 'waiting';\n this.signal = signal;\n this.response = undefined;\n this.outcome = undefined;\n this.rt = undefined;\n }\n\n stop() {\n this.state = 'feedback';\n if (this.response === undefined) {\n this.outcome = 'nr';\n this.nrCount += 1;\n this.rt = undefined;\n\n this.trials.push({\n trial: this.trialCount,\n rt: this.rt,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n });\n this.alignState();\n }\n }\n\n left() {\n this.responded('left');\n }\n\n right() {\n this.responded('right');\n }\n\n responded(response) {\n this.rt = Date.now() - this.startTime;\n this.state = 'feedback';\n this.response = response;\n if (this.signal === this.response) {\n this.outcome = 'correct';\n this.correctCount += 1;\n } else if (this.signal !== this.response) {\n this.outcome = 'error';\n this.errorCount += 1;\n }\n this.trials.push({\n trial: this.trialCount,\n rt: this.rt,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n });\n this.alignState();\n\n this.dispatchEvent(new CustomEvent('accumulable-response', {\n detail: {\n trial: this.trialCount,\n rt: this.rt,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n\n correctCount: this.correctCount,\n errorCount: this.errorCount,\n nrCount: this.nrCount,\n accuracy: this.accuracy,\n meanRT: this.meanRT,\n correctMeanRT: this.correctMeanRT,\n errorMeanRT: this.errorMeanRT,\n sdRT: this.sdRT,\n correctSDRT: this.correctSDRT,\n errorSDRT: this.errorSDRT,\n\n totalPayoff: this.totalPayoff,\n },\n bubbles: true,\n }));\n }\n\n reset() {\n this.state = 'off';\n this.trialCount = 0;\n this.rt = undefined;\n this.signal = undefined;\n this.response = undefined;\n this.outcome = undefined;\n this.correctCount = 0;\n this.errorCount = 0;\n this.nrCount = 0;\n\n this.trials = [];\n this.alignState();\n }\n\n keydown(event) {\n if (this.state === 'waiting') {\n if (event.key === 'ArrowLeft') {\n this.responded('left');\n event.preventDefault();\n } else if (event.key === 'ArrowRight') {\n this.responded('right');\n event.preventDefault();\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n window.addEventListener('keydown', this.keydown.bind(this));\n }\n\n disconnectedCallback() {\n window.removeEventListener('keydown', this.keydown.bind(this));\n\n super.disconnectedCallback();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n /* Overall container */\n .holder {\n display: flex;\n\n flex-direction: column;\n }\n\n /* Response buttons */\n .responses {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n .response {\n flex: 1 0 50%;\n }\n\n .waiting[disabled] {\n --decidables-button-background-color: var(---color-element-enabled);\n }\n\n .selected[disabled][name=\"left\"] {\n --decidables-button-background-color: var(---color-left);\n }\n\n .selected[disabled][name=\"right\"] {\n --decidables-button-background-color: var(---color-right);\n }\n\n /* Feedback messages */\n .feedbacks {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n\n margin: 0.25rem;\n }\n\n /* Trial feedback */\n .trial {\n text-align: center;\n }\n\n .trial .label {\n font-weight: 600;\n }\n\n /* Outcome feedback */\n .feedback {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n\n width: 6rem;\n height: 3.5rem;\n padding: 0.375rem 0.75rem;\n margin: 0.25rem;\n\n text-align: center;\n\n background-color: var(---color-element-background);\n border: 1px solid var(---color-element-border);\n }\n\n :host([payoff=\"trial\"]) .feedback,\n :host([payoff=\"total\"]) .feedback {\n height: 5rem;\n }\n\n .feedback.correct {\n background-color: var(---color-correct-light);\n }\n\n .feedback.error {\n background-color: var(---color-error-light);\n }\n\n .feedback.nr {\n background-color: var(---color-nr-light);\n }\n\n .feedback .outcome {\n font-weight: 600;\n line-height: 1.15;\n }\n\n /* Payoff feedback */\n .total {\n text-align: center;\n }\n\n .total .label {\n font-weight: 600;\n }\n `,\n ];\n }\n\n render() {\n const payoffFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n const payoffFormat = (number) => {\n return payoffFormatter.formatToParts(number).map(({type, value}) => {\n if (type === 'minusSign') {\n return '−';\n }\n return value;\n }).reduce((string, part) => { return string + part; });\n };\n\n return html`\n <div class=\"holder\">\n <div class=\"responses\">\n <decidables-button name=\"left\" class=${`response ${(this.state === 'feedback' && this.response === 'left') ? 'selected' : ((this.state === 'waiting') ? 'waiting' : '')}`} ?disabled=${this.state !== 'waiting' || this.interactive !== true} @click=${this.left.bind(this)}>Left</decidables-button>\n <decidables-button name=\"right\" class=${`response ${(this.state === 'feedback' && this.response === 'right') ? 'selected' : ((this.state === 'waiting') ? 'waiting' : '')}`} ?disabled=${this.state !== 'waiting' || this.interactive !== true} @click=${this.right.bind(this)}>Right</decidables-button>\n </div>\n ${(this.trial || this.feedback || this.payoff === 'total')\n ? html`\n <div class=\"feedbacks\">\n ${(this.trial)\n ? html`\n <div class=\"trial\">\n <span class=\"label\">Trial: </span><span class=\"count\">${this.trialCount}</span><span class=\"of\"> of </span><span class=\"total\">${this.trialTotal}</span>\n </div>`\n : html``}\n ${(this.feedback)\n ? html`\n <div class=${`feedback ${((this.state === 'feedback') && this.feedback)\n ? this.outcome\n : ''}`}>\n ${((this.state === 'feedback') && this.feedback)\n ? (this.outcome === 'correct')\n ? html`<span class=\"outcome\">Correct</span>`\n : (this.outcome === 'error')\n ? html`<span class=\"outcome\">Error</span>`\n : html`<span class=\"outcome\">No<br>Response</span>`\n : ''}\n ${((this.state === 'feedback') && (this.payoff === 'trial' || this.payoff === 'total'))\n ? html`<span class=\"payoff\">${payoffFormat(this.trialPayoff)}</span>`\n : html``}\n </div>`\n : html``}\n ${(this.payoff === 'total')\n ? html`\n <div class=\"total\">\n <span class=\"label\">Total: </span><span class=\"value\">${payoffFormat(this.totalPayoff)}</span>\n </div>`\n : html``}\n </div>`\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('accumulable-response', AccumulableResponse);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n AccumulableTable element\n <accumulable-table>\n\n Attributes:\n ????Hit; Miss; FalseAlarm; CorrectRejection;\n*/\nexport default class AccumulableTable extends AccumulableElement {\n static get properties() {\n return {\n numeric: {\n attribute: 'numeric',\n type: Boolean,\n reflect: true,\n },\n summary: {\n attribute: 'summary',\n type: Boolean,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n correctCount: {\n attribute: 'correct-count',\n type: Number,\n reflect: true,\n },\n errorCount: {\n attribute: 'error-count',\n type: Number,\n reflect: true,\n },\n nrCount: {\n attribute: 'nr-count',\n type: Number,\n reflect: true,\n },\n accuracy: {\n attribute: 'accuracy',\n type: Number,\n reflect: true,\n },\n correctMeanRT: {\n attribute: 'correct-mean-rt',\n type: Number,\n reflect: true,\n },\n errorMeanRT: {\n attribute: 'error-mean-rt',\n type: Number,\n reflect: true,\n },\n meanRT: {\n attribute: 'mean-rt',\n type: Number,\n reflect: true,\n },\n correctSDRT: {\n attribute: 'correct-sd-rt',\n type: Number,\n reflect: true,\n },\n errorSDRT: {\n attribute: 'error-sd-rt',\n type: Number,\n reflect: true,\n },\n sdRT: {\n attribute: 'sd-rt',\n type: Number,\n reflect: true,\n },\n\n payoff: {\n attribute: 'payoff',\n type: Boolean,\n reflect: true,\n },\n correctPayoff: {\n attribute: 'correct-payoff',\n type: Number,\n reflect: true,\n },\n errorPayoff: {\n attribute: 'error-payoff',\n type: Number,\n reflect: true,\n },\n nrPayoff: {\n attribute: 'no-response-payoff',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n this.numeric = false;\n this.summary = false;\n\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = 'all';\n\n this.payoff = false;\n this.correctPayoff = undefined; // Correct payoff\n this.errorPayoff = undefined; // Error payoff\n this.nrPayoff = undefined; // No Response payoff\n\n this.correctCount = NaN;\n this.errorCount = NaN;\n this.nrCount = NaN;\n this.accuracy = NaN;\n this.correctMeanRT = NaN;\n this.errorMeanRT = NaN;\n this.meanRT = NaN;\n this.correctSDRT = NaN;\n this.errorSDRT = NaN;\n this.sdRT = NaN;\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('accumulable-table-change', {\n detail: {\n correctCount: this.correctCount,\n errorCount: this.errorCount,\n nrCount: this.nrCount,\n accuracy: this.accuracy,\n correctMeanRT: this.correctMeanRT,\n errorMeanRT: this.errorMeanRT,\n meanRT: this.meanRT,\n correctSDRT: this.correctSDRT,\n errorSDRT: this.errorSDRT,\n sdRT: this.sdRT,\n },\n bubbles: true,\n }));\n }\n\n correctCountInput(e) {\n this.correctCount = parseInt(e.target.value, 10);\n this.sendEvent();\n }\n\n errorCountInput(e) {\n this.errorCount = parseInt(e.target.value, 10);\n this.sendEvent();\n }\n\n accuracyInput(e) {\n this.accuracy = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n correctMeanRTInput(e) {\n this.correctMeanRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n errorMeanRTInput(e) {\n this.errorMeanRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n meanRTInput(e) {\n this.meanRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n correctSDRTInput(e) {\n this.correctSDRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n errorSDRTInput(e) {\n this.errorSDRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n sdRTInput(e) {\n this.sdRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n /* Overall element */\n table {\n text-align: center;\n\n border-collapse: collapse;\n\n border: 0;\n }\n\n /* Headers */\n .th-main {\n padding: 0;\n\n font-weight: bold;\n }\n\n .th-sub {\n padding: 0 0.25rem;\n\n font-weight: 600;\n }\n\n .th-left {\n padding-left: 0;\n\n text-align: right;\n }\n\n /* Cells */\n .td {\n width: 10rem;\n\n padding: 0.25rem 0.25rem 0.375rem;\n\n transition: all var(---transition-duration) ease;\n }\n\n .numeric .td {\n width: 7rem;\n }\n\n /* Labels */\n .payoff {\n font-weight: 600;\n line-height: 0.75rem;\n }\n\n /* User interaction <input> */\n .td-data decidables-spinner {\n --decidables-spinner-input-width: 3.5rem;\n }\n\n .td-summary decidables-spinner {\n --decidables-spinner-input-width: 4.5rem;\n }\n\n /* Table emphasis */\n .td-data.correct {\n border-left: 2px solid var(---color-element-emphasis);\n }\n\n .td-data.error {\n border-right: 2px solid var(---color-element-emphasis);\n }\n\n .td-data.count {\n border-top: 2px solid var(---color-element-emphasis);\n }\n\n .td-data.sd-rt {\n border-bottom: 2px solid var(---color-element-emphasis);\n }\n\n /* Color schemes */\n\n /* (Default) All color scheme */\n .correct.count {\n background: var(---color-element-background); /* ###### */\n }\n\n .error.count {\n background: var(---color-element-background); /* ###### */\n }\n\n .overall.proportion-correct {\n background: var(---color-element-background); /* ###### */\n }\n\n .correct.mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .error.mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .overall.mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .correct.sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .error.sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .overall.sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n /* Outcome color scheme */\n :host([color=\"outcome\"]) .correct {\n background: var(---color-correct-light);\n }\n\n :host([color=\"outcome\"]) .error {\n background: var(---color-error-light);\n }\n\n :host([color=\"outcome\"]) .overall {\n background: var(---color-element-background);\n }\n\n /* Measure color scheme */\n :host([color=\"measure\"]) .count,\n :host([color=\"measure\"]) .proportion-correct {\n background: var(---color-element-background); /* ###### */\n }\n\n :host([color=\"measure\"]) .mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n :host([color=\"measure\"]) .sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n /* No color scheme */\n :host([color=\"none\"]) .td-data,\n :host([color=\"none\"]) .td-summary {\n background: var(---color-element-background);\n }\n `,\n ];\n }\n\n render() {\n const payoffFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n const payoffFormat = (number) => {\n return payoffFormatter.formatToParts(number).map(({type, value}) => {\n if (type === 'minusSign') {\n return '−';\n }\n return value;\n }).reduce((string, part) => { return string + part; });\n };\n\n let correctCount;\n let errorCount;\n let accuracy;\n let correctMeanRT;\n let errorMeanRT;\n let meanRT;\n let correctSDRT;\n let errorSDRT;\n let sdRT;\n if (this.numeric) {\n correctCount = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.correctCount}\" @input=${this.correctCountInput.bind(this)}>\n <span>Correct Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.correctPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n errorCount = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.errorCount}\" @input=${this.errorCountInput.bind(this)}>\n <span>Error Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.errorPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n accuracy = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".01\" .value=\"${+this.accuracy.toFixed(2)}\" @input=${this.accuracyInput.bind(this)}>\n <span>Accuracy</span>\n </decidables-spinner>\n `;\n correctMeanRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.correctMeanRT.toFixed(0)}\" @input=${this.correctMeanRTInput.bind(this)}>\n <span>Correct Mean RT</span>\n </decidables-spinner>\n `;\n errorMeanRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.errorMeanRT.toFixed(0)}\" @input=${this.errorMeanRTInput.bind(this)}>\n <span>Error Mean RT</span>\n </decidables-spinner>\n `;\n meanRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.meanRT.toFixed(0)}\" @input=${this.meanRTInput.bind(this)}>\n <span>Mean RT</span>\n </decidables-spinner>\n `;\n correctSDRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.correctSDRT.toFixed(0)}\" @input=${this.correctSDRTInput.bind(this)}>\n <span>Correct SD RT</span>\n </decidables-spinner>\n `;\n errorSDRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.errorSDRT.toFixed(0)}\" @input=${this.errorSDRTInput.bind(this)}>\n <span>Error SD RT</span>\n </decidables-spinner>\n `;\n sdRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.sdRT.toFixed(0)}\" @input=${this.sdRTInput.bind(this)}>\n <span>SD RT</span>\n </decidables-spinner>\n `;\n } else {\n correctCount = html`<span>Correct Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.correctPayoff)}</span>` : html``}`;\n errorCount = html`<span>Error Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.errorPayoff)}</span>` : html``}`;\n accuracy = html`<span>Accuracy</span>`;\n correctMeanRT = html`<span>Correct Mean RT</span>`;\n errorMeanRT = html`<span>Error Mean RT</span>`;\n meanRT = html`<span>Mean RT</span>`;\n correctSDRT = html`<span>Correct SD RT</span>`;\n errorSDRT = html`<span>Error SD RT</span>`;\n sdRT = html`<span>SD RT</span>`;\n }\n return html`\n <table class=${this.numeric ? 'numeric' : ''}>\n <thead>\n <tr>\n <th rowspan=\"2\"></th>\n <th class=\"th th-main\" colspan=\"2\" scope=\"col\">\n Outcome\n </th>\n </tr>\n <tr>\n <th class=\"th th-sub\" scope=\"col\">\n Correct\n </th>\n <th class=\"th th-sub\" scope=\"col\">\n Error\n </th>\n ${(this.summary)\n ? html`\n <th class=\"th th-main\" scope=\"col\">\n Overall\n </th>`\n : html``}\n </tr>\n </thead>\n <tbody>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n Count\n </th>\n <td class=\"td td-data correct count\">\n ${correctCount}\n </td>\n <td class=\"td td-data error count\">\n ${errorCount}\n </td>\n ${(this.summary)\n ? html`\n <td class=\"td td-summary overall proportion-correct\">\n ${accuracy}\n </td>`\n : html``}\n </tr>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n Mean RT\n </th>\n <td class=\"td td-data correct mean-rt\">\n ${correctMeanRT}\n </td>\n <td class=\"td td-data error mean-rt\">\n ${errorMeanRT}\n </td>\n ${(this.summary)\n ? html`\n <td class=\"td td-summary overall mean-rt\">\n ${meanRT}\n </td>`\n : html``}\n </tr>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n SD RT\n </th>\n <td class=\"td td-data correct sd-rt\">\n ${correctSDRT}\n </td>\n <td class=\"td td-data error sd-rt\">\n ${errorSDRT}\n </td>\n ${(this.summary)\n ? html`\n <td class=\"td td-summary overall sd-rt\">\n ${sdRT}\n </td>`\n : html``}\n </tr>\n </tbody>\n </table>`;\n }\n}\n\ncustomElements.define('accumulable-table', AccumulableTable);\n","\nimport {html, css} from 'lit';\n\n// Special Web Worker import for rollup-plugin-web-worker-loader\nimport DDMFitWorker from 'web-worker:./ddm-fit-worker'; /* eslint-disable-line import/no-unresolved */\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMFit element\n <ddm-fit>\n\n Attributes:\n interactive: true/false\n*/\nexport default class DDMFit extends AccumulableElement {\n static get properties() {\n return {\n };\n }\n\n constructor() {\n super();\n\n this.a = 1.2;\n this.z = 0.35;\n this.v = 1.5;\n this.t0 = 150;\n\n this.observed = {};\n this.predicted = {};\n\n this.working = false;\n this.queued = false;\n this.worker = new DDMFitWorker();\n\n this.worker.onmessage = (event) => {\n this.working = false;\n this.predicted = event.data.predicted;\n this.a = event.data.params.a;\n this.z = event.data.params.z;\n this.v = event.data.params.v;\n this.t0 = event.data.params.t0;\n this.requestUpdate();\n\n this.dispatchEvent(new CustomEvent('ddm-fit-update', {\n detail: {\n a: this.a,\n z: this.z,\n v: this.v,\n t0: this.t0,\n },\n bubbles: true,\n }));\n\n if (this.queued) {\n this.fit();\n }\n };\n\n this.fit();\n }\n\n fit() {\n if (!this.working) {\n this.worker.postMessage(this.observed);\n this.working = true;\n this.queued = false;\n } else {\n this.queued = true;\n }\n }\n\n clear() {\n this.observed = {};\n\n this.fit();\n }\n\n set(data) {\n // Deep copy\n this.observed = structuredClone(data);\n\n this.fit();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div>\n <div><b>Observed:</b>\n <br/>Accuracy = ${this.observed.accuracy?.toFixed(2)},\n <br/>Correct Mean RT = ${this.observed.correctMeanRT?.toFixed(0)},\n Error Mean RT = ${this.observed.errorMeanRT?.toFixed(0)},\n Mean RT = ${this.observed.meanRT?.toFixed(0)},\n <br/>Correct SD RT = ${this.observed.correctSDRT?.toFixed(0)},\n Error SD RT = ${this.observed.errorSDRT?.toFixed(0)},\n SD RT = ${this.observed.sdRT?.toFixed(0)},\n </div>\n <div><b>Parameters:</b>\n <br/><var class=\"math-var a\">a</var> = ${this.a.toFixed(2)},\n <var class=\"math-var z\">z</var> = ${this.z.toFixed(2)},\n <var class=\"math-var v\">v</var> = ${this.v.toFixed(2)},\n <var class=\"math-var t0\">t0</var> = ${this.t0.toFixed(0)}\n </div>\n <div><b>Predicted:</b>\n <br/>Accuracy = ${this.predicted.accuracy?.toFixed(2)},\n <br/>Correct Mean RT = ${this.predicted.correctMeanRT?.toFixed(0)},\n Error Mean RT = ${this.predicted.errorMeanRT?.toFixed(0)},\n Mean RT = ${this.predicted.meanRT?.toFixed(0)},\n <br/>Correct SD RT = ${this.predicted.correctSDRT?.toFixed(0)},\n Error SD RT = ${this.predicted.errorSDRT?.toFixed(0)},\n SD RT = ${this.predicted.sdRT?.toFixed(0)},\n </div>\n </div>\n `;\n }\n}\n\ncustomElements.define('ddm-fit', DDMFit);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/slider';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMParameters element\n <ddm-paramters>\n\n Attributes:\n\n*/\nexport default class DDMParameters extends AccumulableElement {\n static get properties() {\n return {\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.a = undefined;\n this.z = undefined;\n this.v = undefined;\n this.t0 = undefined;\n }\n\n setBoundarySeparation(e) {\n this.a = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-a', {\n detail: {\n a: this.a,\n },\n bubbles: true,\n }));\n }\n\n setStartingPoint(e) {\n this.z = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-z', {\n detail: {\n z: this.z,\n },\n bubbles: true,\n }));\n }\n\n setDriftRate(e) {\n this.v = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-v', {\n detail: {\n v: this.v,\n },\n bubbles: true,\n }));\n }\n\n setNondecisionTime(e) {\n this.t0 = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-t0', {\n detail: {\n t0: this.t0,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n .holder {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n decidables-slider {\n line-height: 1;\n text-align: center;\n }\n\n decidables-slider div {\n margin-bottom: 0.25rem;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div class=\"holder\">\n ${this.a != null\n ? html`<decidables-slider class=\"a\" ?disabled=${!this.interactive} min=\"0.01\" max=\"2\" step=\"0.01\" .value=${+this.a.toFixed(2)} @change=${this.setBoundarySeparation.bind(this)} @input=${this.setBoundarySeparation.bind(this)}><div>Boundary Separation<br><span class=\"math-var\">a</span></div></decidables-slider>`\n : html``}\n ${this.z != null\n ? html`<decidables-slider class=\"z\" ?disabled=${!this.interactive} min=\"0.01\" max=\"0.99\" step=\"0.01\" .value=${+this.z.toFixed(2)} @change=${this.setStartingPoint.bind(this)} @input=${this.setStartingPoint.bind(this)}><div>Starting Point<br><span class=\"math-var\">z</span></div></decidables-slider>`\n : html``}\n ${this.v != null\n ? html`<decidables-slider class=\"v\" ?disabled=${!this.interactive} min=\"0.01\" max=\"5\" step=\"0.01\" .value=${+this.v.toFixed(2)} @change=${this.setDriftRate.bind(this)} @input=${this.setDriftRate.bind(this)}><div>Drift Rate<br><span class=\"math-var\">v</span></div></decidables-slider>`\n : html``}\n ${this.t0 != null\n ? html`<decidables-slider class=\"t0\" ?disabled=${!this.interactive} min=\"0\" max=\"500\" step=\"1\" .value=${+this.t0.toFixed(0)} @change=${this.setNondecisionTime.bind(this)} @input=${this.setNondecisionTime.bind(this)}><div>Nondecision Time<br><span class=\"math-var\">t₀</span></div></decidables-slider>`\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('ddm-parameters', DDMParameters);\n","\nimport {html, css} from 'lit';\nimport * as d3 from 'd3';\n\nimport DDMMath from '@decidables/accumulable-math';\nimport {DecidablesMixinResizeable} from '@decidables/decidables-elements';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMModel element\n <ddm-model>\n\n Attributes:\n interactive: true/false\n\n measures: boolean\n means: boolean\n\n seed: numeric\n trials: numeric\n\n a: numeric\n z: numeric\n v: numeric\n t0: numeric\n\n // s: numeric\n // sz: numeric\n // eta: numeric\n // st: numeric\n\n Styles:\n ??\n*/\nexport default class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {\n static get properties() {\n return {\n measures: {\n attribute: 'measures',\n type: Boolean,\n reflect: true,\n },\n means: {\n attribute: 'means',\n type: Boolean,\n reflect: true,\n },\n sds: {\n attribute: 'sds',\n type: Boolean,\n reflect: true,\n },\n\n human: {\n attribute: 'human',\n type: Boolean,\n reflect: true,\n },\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n seed: {\n attribute: 'seed',\n type: Number,\n reflect: true,\n },\n\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n\n // s: {\n // attribute: false, // within-trial variability in drift rate\n // type: Number,\n // reflect: false,\n // },\n // sz: {\n // attribute: false, // starting point range\n // type: Number,\n // reflect: false,\n // },\n // eta: {\n // attribute: false, // standard deviation for across-trial variability in drift rate\n // type: Number,\n // reflect: false,\n // },\n // st: {\n // attribute: false, // nondecision-time range\n // type: Number,\n // reflect: false,\n // },\n };\n }\n\n constructor() {\n super();\n\n this.firstUpdate = true;\n this.drag = false;\n\n this.scale = {\n time: {\n min: 0,\n max: 1000,\n step: 1,\n round: Math.round,\n },\n evidence: {\n min: -1,\n max: 1,\n step: 0.01,\n round: Math.round,\n },\n density: {\n min: 0,\n max: 10,\n step: 0.01,\n round: Math.round,\n },\n };\n\n this.measures = false;\n this.means = false;\n this.sds = false;\n\n this.resample();\n this.human = false;\n this.trials = 10;\n\n this.a = 1.2;\n this.z = 0.35;\n this.v = 1.5;\n this.t0 = 150;\n\n // this.s = null;\n // this.sz = null;\n // this.eta = null;\n // this.st = null;\n\n this.precision = 0.005;\n this.random = null;\n\n this.bounds = null;\n this.startingPoint = null;\n\n this.data = {};\n this.model = {};\n this.animate = false;\n this.paused = false;\n\n this.alignState();\n }\n\n clear() {\n this.trials = 0;\n this.data.trials = [];\n }\n\n trial(trial = {}) {\n this.trials += 1;\n if (this.human) {\n this.data.trials.push(trial);\n } else {\n this.animate = true;\n }\n }\n\n // Called to pause trial animations!\n pauseTrial() {\n const pathNew = d3.select(this.renderRoot).select('.path[data-new-trial-ease-time]');\n pathNew.interrupt('new').select('.curve').interrupt('new');\n this.paused = true;\n }\n\n // Called to resume trial animations!\n resumeTrial() {\n this.paused = false;\n this.requestUpdate();\n }\n\n resample() {\n this.seed = d3.randomUniform(0, 1)();\n }\n\n alignPath(seed, a, z, v, t0) {\n const random = d3.randomNormal.source(d3.randomLcg(seed))(0, this.precision ** 0.5);\n const bounds = {\n lower: -a / 2,\n upper: a / 2,\n };\n const startingPoint = a * z - a / 2;\n const drift = v * this.precision;\n\n const path = [];\n path.push(\n {t: t0, e: startingPoint},\n );\n while ((path.at(-1).e > bounds.lower) && (path.at(-1).e < bounds.upper)) {\n path.push({\n t: path.at(-1).t + (this.precision * 1000),\n e: path.at(-1).e + drift + DDMMath.s * random(),\n });\n }\n return path;\n }\n\n alignCorrectDistribution(a, z, v, t0) {\n const proportionCorrect = DDMMath.azv2pC(a, z, v);\n\n const dist = [\n {t: 0, d: 0},\n {t: this.t0, d: 0},\n ];\n for (\n let i = this.scale.time.min;\n i <= (this.scale.time.max - (t0));\n i += this.scale.time.step) {\n if (i > 0) {\n dist.push({\n t: t0 + i,\n d: DDMMath.tazv2gC(i / 1000, a, z, v) / proportionCorrect,\n });\n }\n }\n\n return dist;\n }\n\n alignErrorDistribution(a, z, v, t0) {\n const proportionError = DDMMath.azv2pE(a, z, v);\n\n const dist = [\n {t: 0, d: 0},\n {t: this.t0, d: 0},\n ];\n for (\n let i = this.scale.time.min;\n i <= (this.scale.time.max - (t0));\n i += this.scale.time.step) {\n if (i > 0) {\n dist.push({\n t: t0 + i,\n d: DDMMath.tazv2gE(i / 1000, a, z, v) / proportionError,\n });\n }\n }\n\n return dist;\n }\n\n alignState() {\n this.random = d3.randomUniform.source(d3.randomLcg(this.seed))(0, 1);\n\n this.bounds = {\n lower: -this.a / 2,\n upper: this.a / 2,\n };\n this.startingPoint = this.a * this.z - this.a / 2;\n\n // Data Trials\n if (this.human) {\n this.trials = this.data.trials.length;\n } else {\n this.data.trials = Array.from({length: this.trials}, (element, index) => {\n const seed = (this.random() / 1000) * 997; // HACK to avoid randomLcg repetition\n const animate = this.animate && (index === (this.trials - 1));\n\n // Sample Paths\n const path = this.alignPath(seed, this.a, this.z, this.v, this.t0);\n const outcome = (path.at(-1).e <= this.bounds.lower)\n ? 'error'\n : (path.at(-1).e >= this.bounds.upper)\n ? 'correct'\n : 'nr';\n const rt = (outcome === 'error')\n ? path.at(-2).t + (\n ((this.bounds.lower - path.at(-2).e) / (path.at(-1).e - path.at(-2).e))\n * (this.precision * 1000)\n )\n : (outcome === 'correct')\n ? path.at(-2).t + (\n ((this.bounds.upper - path.at(-2).e) / (path.at(-1).e - path.at(-2).e))\n * (this.precision * 1000)\n )\n : null;\n\n return {\n index, seed, path, rt, outcome, animate,\n };\n });\n }\n\n // Data Summary Stats\n const dataStats = DDMMath.trials2stats(\n this.data.trials.filter((path) => { return !path.animate; }),\n );\n this.data = {...this.data, ...dataStats};\n\n // Model Summary Stats\n this.model.accuracy = DDMMath.azv2pC(this.a, this.z, this.v);\n\n this.model.correctMeanRT = DDMMath.azvt02mC(this.a, this.z, this.v, this.t0);\n this.model.errorMeanRT = DDMMath.azvt02mE(this.a, this.z, this.v, this.t0);\n\n this.model.correctSDRT = DDMMath.azv2sdC(this.a, this.z, this.v);\n this.model.errorSDRT = DDMMath.azv2sdE(this.a, this.z, this.v);\n\n // Model Distributions\n this.model.correctDist = this.alignCorrectDistribution(this.a, this.z, this.v, this.t0);\n this.model.errorDist = this.alignErrorDistribution(this.a, this.z, this.v, this.t0);\n\n this.dispatchEvent(new CustomEvent('ddm-model-output', {\n detail: {\n data: this.data,\n model: this.model,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 27rem;\n height: 18rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n text {\n /* stylelint-disable property-no-vendor-prefix */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n /* \n UNDERLAYER\n */\n .background {\n fill: var(---color-element-background);\n stroke: none;\n stroke-width: 1;\n shape-rendering: crispEdges;\n }\n\n .title {\n font-weight: 600;\n\n fill: currentColor;\n }\n\n .axis path,\n .axis line {\n stroke: var(---color-element-border);\n /* shape-rendering: crispEdges; */\n }\n\n .tick {\n font-size: 0.75rem;\n }\n\n /* \n CONTENT\n */\n .line {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2;\n }\n\n .curve {\n stroke-width: 2;\n }\n\n .path .curve {\n opacity: 0.5;\n\n fill: none;\n\n transition: opacity 0.5s;\n }\n\n .path.highlight .curve {\n filter: url(\"#shadow-2\");\n opacity: 1;\n }\n\n .path.correct .curve {\n /* stroke: var(---color-correct); */\n }\n\n .path.error .curve {\n /* stroke: var(---color-error); */\n }\n\n .stop-0 {\n stop-color: var(---color-correct);\n }\n\n .stop-100 {\n stop-color: var(---color-error);\n }\n\n .path.animate .curve {\n opacity: 1;\n\n stroke: url(\"#path-animate\");\n }\n\n .dist.correct .curve {\n fill: var(---color-correct-light);\n stroke: var(---color-correct);\n }\n\n .dist.error .curve {\n fill: var(---color-error-light);\n stroke: var(---color-error);\n }\n\n .rt .mark {\n stroke-width: 1;\n }\n\n .accuracy.model .bar {\n stroke: none;\n }\n\n .accuracy.model.correct .bar {\n fill: var(---color-correct);\n }\n\n .accuracy.model.error .bar {\n fill: var(---color-error);\n }\n\n .accuracy.data .mark {\n stroke-width: 2;\n }\n\n .accuracy.data.correct .mark {\n stroke: var(---color-correct-light);\n }\n\n .accuracy.data.error .mark {\n stroke: var(---color-error-light);\n }\n\n /*\n OVERLAYER\n */\n .interactive {\n filter: url(\"#shadow-2\");\n outline: none;\n }\n\n .interactive:hover {\n filter: url(\"#shadow-4\");\n }\n\n .interactive:active {\n filter: url(\"#shadow-8\");\n }\n\n :host(.keyboard) .interactive:focus {\n filter: url(\"#shadow-8\");\n }\n\n .boundary {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2;\n }\n\n .boundary.interactive {\n cursor: ns-resize;\n }\n\n .drift {\n pointer-events: visible;\n\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-dasharray: 8 4;\n stroke-width: 2;\n }\n\n .drift.interactive {\n cursor: ns-resize;\n }\n\n .drift .arrow {\n stroke-dasharray: none;\n }\n\n .t0z.interactive {\n cursor: move;\n }\n\n .t0z .point {\n fill: var(---color-element-emphasis);\n\n r: 6px;\n }\n\n .measure {\n stroke-width: 2;\n }\n\n .measure .label {\n font-size: 0.75rem;\n\n fill: currentColor;\n }\n\n .measure.a .line {\n stroke: var(---color-a);\n }\n\n .measure.a .label {\n dominant-baseline: auto;\n text-anchor: end;\n }\n\n .measure.z .line {\n stroke: var(---color-z);\n }\n\n .measure.z .label {\n dominant-baseline: hanging;\n text-anchor: start;\n }\n\n .measure.v .line {\n stroke: var(---color-v);\n }\n\n .measure.v .label {\n dominant-baseline: auto;\n text-anchor: start;\n }\n\n .measure.t0 .line {\n stroke: var(---color-t0);\n }\n\n .measure.t0 .label {\n dominant-baseline: auto;\n text-anchor: middle;\n }\n\n .sd .indicator,\n .mean .indicator {\n stroke-width: 2;\n }\n\n .sd.model .indicator,\n .mean.model .indicator {\n stroke-dasharray: 2 2;\n }\n\n .sd.data .indicator,\n .mean.data .indicator {\n stroke-dasharray: 1 1;\n }\n\n .sd.correct .indicator,\n .mean.correct .indicator {\n stroke: var(---color-correct-dark);\n }\n\n .sd.error .indicator,\n .mean.error .indicator {\n stroke: var(---color-error-dark);\n }\n\n .rt-label rect {\n filter: url(\"#shadow-2\");\n\n fill: var(--color-background);\n rx: 4;\n }\n\n .rt-label text {\n font-size: 0.75rem;\n \n text-anchor: middle;\n }\n\n .rt-label.correct text {\n dominant-baseline: auto;\n }\n\n .rt-label.error text {\n dominant-baseline: hanging;\n }\n `,\n ];\n }\n\n render() { /* eslint-disable-line class-methods-use-this */\n return html``;\n }\n\n willUpdate() {\n this.alignState();\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n // Bail out if we can't get the width/height\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const hostWidth = this.width;\n const hostHeight = this.height;\n const hostAspectRatio = hostWidth / hostHeight;\n\n const elementAspectRatio = 1.5;\n let elementWidth;\n let elementHeight;\n\n if (hostAspectRatio > elementAspectRatio) {\n elementHeight = hostHeight;\n elementWidth = elementHeight * elementAspectRatio;\n } else {\n elementWidth = hostWidth;\n elementHeight = elementWidth / elementAspectRatio;\n }\n\n const margin = {\n top: 1 * this.rem,\n bottom: 3 * this.rem,\n left: 3.75 * this.rem,\n right: 3.25 * this.rem,\n };\n const height = elementHeight - (margin.top + margin.bottom);\n const width = elementWidth - (margin.left + margin.right);\n\n const gapHeight = 0.75 * this.rem;\n const evidenceHeight = height * 0.5;\n const densityHeight = height * 0.25 - gapHeight;\n\n const gapWidth = 0.75 * this.rem;\n const timeWidth = width * 0.90;\n const accuracyWidth = width * 0.10 - gapWidth;\n\n const transitionDuration = parseInt(this.getComputedStyleValue('---transition-duration'), 10);\n\n //\n // SCALES\n //\n\n // Time Scale\n const timeScale = d3.scaleLinear()\n .domain([this.scale.time.min, this.scale.time.max])\n .range([0, timeWidth]);\n\n // Evidence Scale\n const evidenceScale = d3.scaleLinear()\n .domain([this.scale.evidence.min, this.scale.evidence.max])\n .range([evidenceHeight, 0]);\n\n // Correct Density Scale\n const correctDensityScale = d3.scaleLinear()\n .domain([this.scale.density.min, this.scale.density.max])\n .range([densityHeight, 0]);\n\n // Error Density Scale\n const errorDensityScale = d3.scaleLinear()\n .domain([this.scale.density.min, this.scale.density.max])\n .range([0, densityHeight]);\n\n // Accuracy Scale\n const accuracyScale = d3.scaleLinear()\n .domain([0, 1])\n .range([0, height]);\n\n //\n // DRAG BEHAVIORS\n //\n\n // Nondecision Time/Starting Point Drag behavior\n const dragT0z = d3.drag()\n .subject((event, datum) => {\n return {x: timeScale(datum.t0), y: evidenceScale(datum.startingPoint)};\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n const shift = event.sourceEvent.shiftKey\n ? (Math.abs(event.x - event.subject.x) > Math.abs(event.y - event.subject.y))\n ? 't0'\n : 'z'\n : false;\n let t0 = timeScale.invert(event.x);\n let z = (evidenceScale.invert(event.y) + (this.a / 2)) / this.a;\n // Clamp t0\n t0 = (shift === 'z')\n ? timeScale.invert(event.subject.x)\n : (t0 < 0)\n ? 0\n : (t0 > 500)\n ? 500\n : t0;\n // Clamp z\n z = (shift === 't0')\n ? (evidenceScale.invert(event.subject.y) + (this.a / 2)) / this.a\n : (z < 0.01)\n ? 0.01\n : (z > 0.99)\n ? 0.99\n : z;\n this.t0 = t0;\n this.z = z;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-t0', {\n detail: {\n t0: this.t0,\n },\n bubbles: true,\n }));\n this.dispatchEvent(new CustomEvent('ddm-model-z', {\n detail: {\n z: this.z,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n this.drag = false;\n });\n\n // Drift Rate Drag behavior\n const dragDrift = d3.drag()\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n let v = ((evidenceScale.invert(event.y) - this.startingPoint)\n / (timeScale.invert(event.x) - this.t0)) * 1000;\n // Clamp drift rate\n v = (v < 0.01)\n ? 0.01\n : (v > 5)\n ? 5\n : v;\n this.v = v;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-v', {\n detail: {\n v: this.v,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n this.drag = false;\n });\n\n // Boundary Drag behavior\n const dragBoundary = d3.drag()\n .subject((event, datum) => {\n return {x: 0, y: evidenceScale(datum.value)};\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event, datum) => {\n this.drag = true;\n let boundary = evidenceScale.invert(event.y);\n // Clamp boundaries to visible evidence\n boundary = (boundary < this.scale.evidence.min)\n ? this.scale.evidence.min\n : (boundary > this.scale.evidence.max)\n ? this.scale.evidence.max\n : (datum.bound === 'upper' && boundary < 0.005)\n ? 0.005\n : (datum.bound === 'lower' && boundary > -0.005)\n ? -0.005\n : boundary;\n this.a = Math.abs(boundary * 2);\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-a', {\n detail: {\n a: this.a,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n this.drag = false;\n });\n\n //\n // LINES\n //\n\n // Line for time/evidence space\n const evidenceLine = d3.line()\n .x((datum) => { return timeScale(datum.t); })\n .y((datum) => { return evidenceScale(datum.e); });\n\n // Line for correct time/density space\n const correctDensityLine = d3.line()\n .x((datum) => { return timeScale(datum.t); })\n .y((datum) => { return correctDensityScale(datum.d); });\n\n // Line for error time/density space\n const errorDensityLine = d3.line()\n .x((datum) => { return timeScale(datum.t); })\n .y((datum) => { return errorDensityScale(datum.d); });\n\n //\n // PLOTS\n //\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true)\n .html(AccumulableElement.svgDefs);\n const svgDefs = svgEnter.append('defs');\n // Arrowhead marker for measures\n svgDefs.append('marker')\n .attr('id', 'measure-arrow')\n .attr('orient', 'auto-start-reverse')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '-5 -5 10 10')\n .attr('refX', '2')\n .attr('refY', '0')\n .attr('markerWidth', '10')\n .attr('markerHeight', '10')\n .append('path')\n .attr('stroke', 'context-stroke')\n .attr('fill', 'context-stroke')\n .attr('d', 'M -3 -3 l 6 3 l -6 3 z');\n // Flat markers for SDs\n svgDefs.append('marker')\n .attr('id', 'model-sd-cap')\n .attr('orient', 'auto-start-reverse')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '-5 -5 10 10')\n .attr('refX', '0')\n .attr('refY', '0')\n .attr('markerWidth', '10')\n .attr('markerHeight', '10')\n .append('path')\n .attr('stroke', 'context-stroke')\n .attr('fill', 'context-stroke')\n .attr('stroke-width', '2')\n .attr('d', 'M 0 -4 l 0 8');\n svgDefs.append('marker')\n .attr('id', 'data-sd-cap')\n .attr('orient', 'auto-start-reverse')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '-5 -5 10 10')\n .attr('refX', '0')\n .attr('refY', '0')\n .attr('markerWidth', '10')\n .attr('markerHeight', '10')\n .append('path')\n .attr('stroke', 'context-stroke')\n .attr('fill', 'context-stroke')\n .attr('stroke-width', '2')\n .attr('d', 'M 0 -3 l 0 6');\n const gradient = svgDefs.append('linearGradient')\n .attr('id', 'path-animate')\n .attr('gradientUnits', 'userSpaceOnUse')\n .attr('color-interpolation', 'linearRGB')\n .attr('x1', '0')\n .attr('x2', '0')\n .attr('y1', evidenceScale(this.bounds.upper))\n .attr('y2', evidenceScale(this.bounds.lower));\n gradient.append('stop')\n .classed('stop-0', true)\n .attr('offset', '0%');\n gradient.append('stop')\n .classed('stop-100', true)\n .attr('offset', '100%');\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementWidth} ${elementHeight}`);\n\n // Plots\n // DATA-JOIN\n const densityPlotUpdate = svgMerge.selectAll('.plot.density')\n .data([\n {\n outcome: 'correct',\n data: {\n meanRT: this.data.correctMeanRT,\n sdRT: this.data.correctSDRT,\n },\n model: {\n meanRT: this.model.correctMeanRT,\n sdRT: this.model.correctSDRT,\n dist: this.model.correctDist,\n },\n densityScale: correctDensityScale,\n densityLine: correctDensityLine,\n alignDistribution: this.alignCorrectDistribution.bind(this),\n },\n {\n outcome: 'error',\n data: {\n meanRT: this.data.errorMeanRT,\n sdRT: this.data.errorSDRT,\n },\n model: {\n meanRT: this.model.errorMeanRT,\n sdRT: this.model.errorSDRT,\n dist: this.model.errorDist,\n },\n densityScale: errorDensityScale,\n densityLine: errorDensityLine,\n alignDistribution: this.alignErrorDistribution.bind(this),\n },\n ]);\n // ENTER\n const evidencePlotEnter = svgEnter.append('g')\n .classed('plot evidence', true);\n const densityPlotEnter = densityPlotUpdate.enter().append('g')\n .attr('class', (datum) => { return `plot density ${datum.outcome}`; });\n const accuracyPlotEnter = svgEnter.append('g')\n .classed('plot accuracy', true);\n // MERGE\n const evidencePlotMerge = svgMerge.select('.plot.evidence')\n .attr('transform', `translate(${margin.left}, ${margin.top + densityHeight + gapHeight})`);\n const densityPlotMerge = densityPlotEnter.merge(densityPlotUpdate)\n .attr('transform', (datum) => {\n return `translate(${margin.left}, ${\n (datum.outcome === 'correct')\n ? margin.top\n : margin.top + densityHeight + evidenceHeight + 2 * gapHeight\n })`;\n });\n const accuracyPlotMerge = svgMerge.select('.plot.accuracy')\n .attr('transform', `translate(${margin.left + timeWidth + gapWidth}, ${margin.top})`);\n\n // Clippaths\n // ENTER\n evidencePlotEnter.append('clipPath')\n .attr('id', 'clip-evidence')\n .append('rect');\n // MERGE\n evidencePlotMerge.select('clipPath rect')\n .attr('y', evidenceScale(this.bounds.upper))\n .attr('height', evidenceScale(this.bounds.lower) - evidenceScale(this.bounds.upper) + 1)\n .attr('width', timeWidth + 1);\n\n //\n // LAYERS\n //\n\n // Underlayers\n // ENTER\n const evidenceUnderlayerEnter = evidencePlotEnter.append('g')\n .classed('underlayer', true);\n const densityUnderlayerEnter = densityPlotEnter.append('g')\n .classed('underlayer', true);\n const accuracyUnderlayerEnter = accuracyPlotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const evidenceUnderlayerMerge = evidencePlotMerge.select('.underlayer');\n const densityUnderlayerMerge = densityPlotMerge.select('.underlayer');\n const accuracyUnderlayerMerge = accuracyPlotMerge.select('.underlayer');\n\n // Contents\n // ENTER\n evidencePlotEnter.append('g')\n .classed('content', true)\n .append('g').classed('paths', true);\n const densityContentEnter = densityPlotEnter.append('g')\n .classed('content', true);\n accuracyPlotEnter.append('g')\n .classed('content', true);\n // MERGE\n const evidenceContentMerge = evidencePlotMerge.select('.content');\n const densityContentMerge = densityPlotMerge.select('.content');\n const accuracyContentMerge = accuracyPlotMerge.select('.content');\n\n // Overlayers\n // ENTER\n evidencePlotEnter.append('g')\n .classed('overlayer', true);\n densityPlotEnter.append('g')\n .classed('overlayer', true);\n accuracyPlotEnter.append('g')\n .classed('overlayer', true);\n // MERGE\n const evidenceOverlayerMerge = evidencePlotMerge.select('.overlayer');\n const densityOverlayerMerge = densityPlotMerge.select('.overlayer');\n // const accuracyOverlayerMerge = accuracyPlotMerge.select('.overlayer');\n\n //\n // UNDERLAYERS\n //\n\n // Backgrounds\n // ENTER\n evidenceUnderlayerEnter.append('rect')\n .classed('background', true);\n densityUnderlayerEnter.append('rect')\n .classed('background', true);\n // MERGE\n evidenceUnderlayerMerge.select('.background')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('y', evidenceScale(this.bounds.upper))\n .attr('height', evidenceScale(this.bounds.lower) - evidenceScale(this.bounds.upper))\n .attr('width', timeWidth);\n densityUnderlayerMerge.select('.background')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('height', densityHeight)\n .attr('width', timeWidth);\n\n // X Axes (Time)\n // ENTER\n densityUnderlayerEnter\n .filter((datum) => { return datum.outcome === 'error'; })\n .append('g')\n .classed('axis time', true);\n // MERGE\n const timeScaleMerge = densityUnderlayerMerge\n .filter((datum) => { return datum.outcome === 'error'; })\n .select('.axis.time')\n .attr('transform', `translate(0, ${densityHeight + (0.25 * this.rem)})`);\n const timeScaleTransition = timeScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .call(d3.axisBottom(timeScale))\n .attr('font-size', null)\n .attr('font-family', null);\n timeScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n\n // X Axes Titles\n // ENTER\n const timeTitleEnter = densityUnderlayerEnter\n .filter((datum) => { return datum.outcome === 'error'; })\n .append('text')\n .classed('title time', true)\n .attr('text-anchor', 'middle');\n timeTitleEnter.append('tspan')\n .classed('name', true)\n .text('Time (ms)');\n // MERGE\n densityUnderlayerMerge\n .filter((datum) => { return datum.outcome === 'error'; })\n .select('.title.time')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr(\n 'transform',\n `translate(${(timeWidth / 2)}, ${(densityHeight + (2.5 * this.rem))})`,\n );\n\n // Y Axes (Evidence, Density, Accuracy)\n // ENTER\n evidenceUnderlayerEnter.append('g')\n .classed('axis evidence', true);\n densityUnderlayerEnter.append('g')\n .attr('class', (datum) => { return `axis density ${datum.outcome}`; });\n accuracyUnderlayerEnter.append('g')\n .classed('axis accuracy', true);\n // MERGE\n const evidenceScaleMerge = evidenceUnderlayerMerge.select('.axis.evidence')\n .attr('transform', `translate(${-0.25 * this.rem}, 0)`);\n const densityScaleMerge = densityUnderlayerMerge.select('.axis.density')\n .attr('transform', `translate(${-0.25 * this.rem}, 0)`);\n const accuracyScaleMerge = accuracyUnderlayerMerge.select('.axis.accuracy')\n .attr('transform', `translate(${accuracyWidth + (0.25 * this.rem)}, 0)`);\n const evidenceScaleTransition = evidenceScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .call(d3.axisLeft(evidenceScale))\n .attr('font-size', null)\n .attr('font-family', null);\n const densityScaleTransition = densityScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .each((datum, index, elements) => {\n d3.axisLeft(datum.densityScale).ticks(2)(d3.select(elements[index]));\n })\n .attr('font-size', null)\n .attr('font-family', null);\n const accuracyScaleTransition = accuracyScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .call(d3.axisRight(accuracyScale))\n .attr('font-size', null)\n .attr('font-family', null);\n evidenceScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n densityScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n accuracyScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n\n // Y Axes Titles (Evidence & Density)\n // ENTER\n const evidenceTitleEnter = evidenceUnderlayerEnter.append('text')\n .classed('title evidence', true)\n .attr('text-anchor', 'middle');\n const densityTitleEnter = densityUnderlayerEnter.append('text')\n .attr('class', (datum) => { return `title density ${datum.outcome}`; })\n .attr('text-anchor', 'middle');\n const accuracyTitleEnter = accuracyUnderlayerEnter.append('text')\n .classed('title accuracy', true)\n .attr('text-anchor', 'middle');\n evidenceTitleEnter.append('tspan')\n .classed('name', true)\n .text('Evidence');\n densityTitleEnter.append('tspan')\n .classed('name', true)\n .text('Density');\n accuracyTitleEnter.append('tspan')\n .classed('name', true)\n .text('Accuracy');\n // MERGE\n evidenceUnderlayerMerge.select('.title.evidence')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', `translate(${-2.5 * this.rem}, ${(evidenceHeight / 2)})rotate(-90)`);\n densityUnderlayerMerge.select('.title.density')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', `translate(${-2.5 * this.rem}, ${(densityHeight / 2)})rotate(-90)`);\n accuracyUnderlayerMerge.select('.title.accuracy')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', `translate(${accuracyWidth + 2.25 * this.rem}, ${(height / 2)})rotate(90)`);\n\n //\n // CONTENTS\n //\n\n // Paths\n // DATA-JOIN\n const pathUpdate = evidenceContentMerge.select('.paths').selectAll('.path')\n .data(\n this.data.trials.filter((trial) => { return trial.path !== undefined; }),\n );\n // ENTER\n const rtLabel = d3.local();\n const pathEnter = pathUpdate.enter().append('g')\n .classed('path', true)\n .attr('data-new-trial-ease-time', 0)\n .on('pointerenter', (event, datum) => {\n if (!this.drag) {\n d3.select(event.currentTarget)\n .classed('highlight', true)\n .raise();\n const myRtLabel = evidenceOverlayerMerge.append('g')\n .classed(`rt-label ${datum.outcome}`, true);\n const rect = myRtLabel.append('rect');\n const text = myRtLabel.append('text')\n .text(`RT = ${datum.rt.toFixed()}`)\n .attr('x', timeScale(datum.rt))\n .attr('y', datum.outcome === 'correct'\n ? evidenceScale(this.bounds.upper) - this.rem * 0.25\n : evidenceScale(this.bounds.lower) + this.rem * 0.125);\n const bbox = text.node().getBBox();\n rect\n .attr('x', bbox.x - this.rem * 0.125)\n .attr('y', bbox.y + this.rem * 0.125)\n .attr('width', bbox.width + this.rem * 0.25)\n .attr('height', bbox.height - this.rem * 0.25);\n rtLabel.set(event.currentTarget, myRtLabel);\n }\n })\n .on('pointerout', (event, datum) => {\n if (!this.drag) {\n d3.select(event.currentTarget)\n .classed('highlight', false)\n .lower();\n event.currentTarget.parentNode.insertBefore(\n event.currentTarget,\n event.currentTarget.parentNode.children[datum.index],\n );\n rtLabel.get(event.currentTarget).remove();\n }\n });\n pathEnter.append('path')\n .classed('curve', true)\n .attr('clip-path', 'url(#clip-evidence)')\n .attr('pathLength', 1)\n .attr('stroke-dashoffset', 1);\n // MERGE\n const pathMerge = pathEnter.merge(pathUpdate)\n .attr('class', (datum) => {\n return `path ${datum.outcome}`;\n });\n pathMerge.select('.curve')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('stroke', (datum) => {\n return this.getComputedStyleValue(`---color-${datum.outcome}`);\n })\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateA = d3.interpolate(\n (element.a !== undefined) ? element.a : this.a,\n this.a,\n );\n const interpolateZ = d3.interpolate(\n (element.z !== undefined) ? element.z : this.z,\n this.z,\n );\n const interpolateV = d3.interpolate(\n (element.v !== undefined) ? element.v : this.v,\n this.v,\n );\n const interpolateT0 = d3.interpolate(\n (element.t0 !== undefined) ? element.t0 : this.t0,\n this.t0,\n );\n return (time) => {\n element.a = interpolateA(time);\n element.z = interpolateZ(time);\n element.v = interpolateV(time);\n element.t0 = interpolateT0(time);\n const path = this.alignPath(datum.seed, element.a, element.z, element.v, element.t0);\n return evidenceLine(path);\n };\n });\n // MERGE - Active Animate Paths\n const pathMergeNewActive = pathMerge.filter((datum) => {\n return (datum.animate && !this.paused);\n });\n if (!pathMergeNewActive.empty()) {\n const easeTime = pathMergeNewActive.attr('data-new-trial-ease-time');\n const scaleIn = (time) => {\n return d3.scaleLinear().domain([0, 1]).range([easeTime, 1])(time);\n };\n const scaleOutGenerator = (easeFunction) => {\n return (time) => {\n return d3.scaleLinear()\n .domain([easeFunction(easeTime), 1]).range([0, 1])(easeFunction(time));\n };\n };\n pathMergeNewActive\n .classed('animate', true)\n .select('.curve')\n .attr('stroke-dasharray', 1);\n pathMergeNewActive\n .transition('new')\n .duration((datum) => {\n // scale the RT for viewing pleasure\n return Math.floor((datum.rt * 1.5) * (1 - easeTime));\n })\n .ease(scaleIn)\n .attr('data-new-trial-ease-time', 1)\n .select('.curve')\n .attrTween('stroke-dashoffset', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolate(\n element.getAttribute('stroke-dashoffset'),\n 0,\n );\n return (time) => { return interpolator(scaleOutGenerator(d3.easeLinear)(time)); };\n })\n .on('end', (datum, index, elements) => {\n const element = elements[index];\n d3.select(element.parentElement)\n .classed('animate', false)\n .attr('data-new-trial-ease-time', null);\n datum.animate = false;\n this.animate = false;\n this.alignState();\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('accumulable-response', {\n detail: {\n outcome: datum.outcome,\n data: this.data,\n model: this.model,\n },\n bubbles: true,\n }));\n });\n }\n // MERGE - Paused Animate Paths\n const pathMergeNewPaused = pathMerge.filter((datum) => {\n return (datum.animate && this.paused);\n });\n if (!pathMergeNewPaused.empty()) {\n const easeTime = pathMergeNewPaused.attr('data-new-trial-ease-time');\n pathMergeNewPaused\n .classed('animate', true)\n .select('.curve')\n .attr('stroke-dasharray', 1)\n .attr('stroke-dashoffset', () => {\n const interpolator = d3.interpolate(1, 0);\n return interpolator(d3.easeLinear(easeTime));\n });\n }\n // MERGE - Non-Animate Paths\n pathMerge.filter((datum) => { return (!datum.animate); })\n .attr('data-new-trial-ease-time', null);\n // EXIT\n pathUpdate.exit().remove();\n\n // Distributions\n // ENTER\n const distEnter = densityContentEnter.append('g')\n .attr('class', (datum) => { return `dist ${datum.outcome}`; });\n distEnter.append('path')\n .classed('curve', true);\n // MERGE\n densityContentMerge.select('.dist').select('.curve')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateA = d3.interpolate(\n (element.a !== undefined) ? element.a : this.a,\n this.a,\n );\n const interpolateZ = d3.interpolate(\n (element.z !== undefined) ? element.z : this.z,\n this.z,\n );\n const interpolateV = d3.interpolate(\n (element.v !== undefined) ? element.v : this.v,\n this.v,\n );\n const interpolateT0 = d3.interpolate(\n (element.t0 !== undefined) ? element.t0 : this.t0,\n this.t0,\n );\n return (time) => {\n element.a = interpolateA(time);\n element.z = interpolateZ(time);\n element.v = interpolateV(time);\n element.t0 = interpolateT0(time);\n const path = datum.alignDistribution(element.a, element.z, element.v, element.t0);\n return datum.densityLine(path);\n };\n });\n\n // RTs\n // DATA-JOIN\n const rtUpdate = evidenceContentMerge.selectAll('.rt')\n .data(this.data.trials);\n // ENTER\n const rtEnter = rtUpdate.enter().append('g');\n rtEnter.append('line')\n .classed('mark', true)\n .attr('x1', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('x2', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('y1', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.125 * this.rem\n : evidenceScale(-1) + 0.125 * this.rem;\n })\n .attr('y2', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.675 * this.rem\n : evidenceScale(-1) + 0.675 * this.rem;\n });\n // MERGE\n const rtMerge = rtEnter.merge(rtUpdate)\n .attr('class', (datum) => { return `rt ${datum.outcome}`; });\n rtMerge.filter((datum) => { return (!datum.animate); }).select('.mark')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('stroke', (datum) => {\n return this.getComputedStyleValue(`---color-${datum.outcome}`);\n })\n .attr('x1', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('x2', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('y1', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.125 * this.rem\n : evidenceScale(-1) + 0.125 * this.rem;\n })\n .attr('y2', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.675 * this.rem\n : evidenceScale(-1) + 0.675 * this.rem;\n });\n // EXIT\n rtUpdate.exit().remove();\n\n // Model Accuracy\n // DATA-JOIN\n const accuracyUpdate = accuracyContentMerge.selectAll('.accuracy.model')\n .data(\n [this.model.accuracy, 1 - this.model.accuracy],\n );\n // ENTER\n const accuracyEnter = accuracyUpdate.enter().append('g')\n .attr('class', (_, index) => {\n return `accuracy model ${(index === 0) ? 'correct' : 'error'}`;\n });\n accuracyEnter.append('rect')\n .classed('bar', true)\n .attr('x', 0);\n // MERGE\n accuracyEnter.merge(accuracyUpdate).select('rect')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n // ## Tween based on params?\n .attr('y', (datum, index) => {\n return (index === 0) ? accuracyScale(0) : accuracyScale(1 - datum);\n })\n .attr('width', accuracyWidth)\n .attr('height', (datum) => {\n return accuracyScale(datum);\n });\n // EXIT\n accuracyUpdate.exit().remove();\n\n // Data Accuracy\n // DATA-JOIN\n const dataAccuracyUpdate = accuracyContentMerge.selectAll('.accuracy.data')\n .data(\n !Number.isNaN(this.data.accuracy) ? [this.data.accuracy] : [],\n );\n // ENTER\n const dataAccuracyEnter = dataAccuracyUpdate.enter().append('g')\n .classed('accuracy data', true);\n dataAccuracyEnter.append('line')\n .classed('mark', true);\n // MERGE\n const dataAccuracyMerge = dataAccuracyEnter.merge(dataAccuracyUpdate)\n .attr('class', (datum) => {\n return `accuracy data ${(datum < this.model.accuracy.correct) ? 'correct' : 'error'}`;\n });\n dataAccuracyMerge.select('.mark')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n // ## Tween based on params?\n .attr('x1', 0 + 0.25 * this.rem)\n .attr('x2', accuracyWidth - 0.25 * this.rem)\n .attr('y1', (datum) => {\n return accuracyScale(datum) - 1;\n })\n .attr('y2', (datum) => {\n return accuracyScale(datum) - 1;\n });\n // EXIT\n dataAccuracyUpdate.exit().remove();\n\n //\n // OVERLAYERS\n //\n\n // Boundaries\n // DATA-JOIN\n const boundaryUpdate = evidenceOverlayerMerge.selectAll('.boundary')\n .data([\n {bound: 'upper', value: this.bounds.upper},\n {bound: 'lower', value: this.bounds.lower},\n ]);\n // ENTER\n const boundaryEnter = boundaryUpdate.enter().append('g')\n .attr('class', (_, index) => {\n return `boundary ${(index === 0) ? 'correct' : 'error'}`;\n });\n boundaryEnter.append('line')\n .classed('line', true);\n // MERGE\n const boundaryMerge = boundaryEnter.merge(boundaryUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event, datum) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let a = this.a; /* eslint-disable-line prefer-destructuring */\n switch (event.key) {\n case 'ArrowUp':\n a += (datum.bound === 'upper')\n ? event.shiftKey ? 0.01 : 0.1\n : event.shiftKey ? -0.01 : -0.1;\n break;\n case 'ArrowDown':\n a += (datum.bound === 'upper')\n ? event.shiftKey ? -0.01 : -0.1\n : event.shiftKey ? 0.01 : 0.1;\n break;\n default:\n }\n // Clamp boundaries to visible evidence\n a = (a < 0.01)\n ? 0.01\n : (a > this.scale.evidence.max * 2)\n ? this.scale.evidence.max * 2\n : a;\n this.a = a;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-a', {\n detail: {\n a: this.a,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n boundaryMerge.call(dragBoundary);\n } else {\n boundaryMerge.on('.drag', null);\n }\n }\n boundaryMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.min))\n .attr('x2', timeScale(this.scale.time.max))\n .attr('y1', (datum) => {\n return evidenceScale(datum.value);\n })\n .attr('y2', (datum) => {\n return evidenceScale(datum.value);\n });\n // EXIT\n boundaryUpdate.exit().remove();\n\n // Drift Rate\n // DATA-JOIN\n const driftUpdate = evidenceOverlayerMerge.selectAll('.drift')\n .data([\n {v: this.v, t0: this.t0, startingPoint: this.startingPoint},\n ]);\n // ENTER\n const driftEnter = driftUpdate.enter().append('g')\n .classed('drift', true);\n driftEnter.append('line')\n .classed('line', true);\n driftEnter.append('path')\n .classed('arrow', true);\n // MERGE\n const driftMerge = driftEnter.merge(driftUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let v = this.v; /* eslint-disable-line prefer-destructuring */\n switch (event.key) {\n case 'ArrowUp':\n v += event.shiftKey ? 0.01 : 0.1;\n break;\n case 'ArrowDown':\n v -= event.shiftKey ? 0.01 : 0.1;\n break;\n default:\n }\n // Clamp z\n v = (v < 0.01)\n ? 0.01\n : (v > 5)\n ? 5\n : v;\n this.v = v;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-v', {\n detail: {\n v: this.v,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n driftMerge.call(dragDrift);\n } else {\n driftMerge.on('.drag', null);\n }\n }\n const scaleRatio = (evidenceScale(0) - evidenceScale(1)) / (timeScale(1) - timeScale(0));\n driftMerge\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', (datum) => {\n return `translate(${timeScale(datum.t0)}, ${evidenceScale(datum.startingPoint)})\n rotate(${-Math.atan((datum.v / 1000) * scaleRatio) * (180 / Math.PI)})`;\n });\n driftMerge.select('.line')\n .attr('x2', timeScale(200));\n driftMerge.select('.arrow')\n .attr('d', `\n M ${timeScale(200) - this.rem * 0.5},${-this.rem * 0.5}\n l ${this.rem * 0.5},${this.rem * 0.5}\n l ${-this.rem * 0.5},${this.rem * 0.5}\n `);\n // EXIT\n driftUpdate.exit().remove();\n\n // Nondecision Time/Starting Point\n // DATA-JOIN\n const t0zUpdate = evidenceOverlayerMerge.selectAll('.t0z')\n .data([\n {t0: this.t0, startingPoint: this.startingPoint},\n ]);\n // ENTER\n const t0zEnter = t0zUpdate.enter().append('g')\n .classed('t0z', true);\n t0zEnter.append('line')\n .classed('line', true);\n t0zEnter.append('circle')\n .classed('point', true);\n // MERGE\n const t0zMerge = t0zEnter.merge(t0zUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let z = this.z; /* eslint-disable-line prefer-destructuring */\n switch (event.key) {\n case 'ArrowUp':\n z += event.shiftKey ? 0.01 : 0.1;\n break;\n case 'ArrowDown':\n z -= event.shiftKey ? 0.01 : 0.1;\n break;\n default:\n }\n // Clamp z\n z = (z < 0.01)\n ? 0.01\n : (z > 0.99)\n ? 0.99\n : z;\n this.z = z;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-z', {\n detail: {\n z: this.z,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n if (['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n let t0 = this.t0; /* eslint-disable-line prefer-destructuring */\n switch (event.key) {\n case 'ArrowRight':\n t0 += event.shiftKey ? 1 : 10;\n break;\n case 'ArrowLeft':\n t0 -= event.shiftKey ? 1 : 10;\n break;\n default:\n }\n // Clamp t0\n t0 = (t0 < 0)\n ? 0\n : (t0 > 500)\n ? 500\n : t0;\n this.t0 = t0;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-t0', {\n detail: {\n t0: this.t0,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n t0zMerge.call(dragT0z);\n } else {\n t0zMerge.on('.drag', null);\n }\n }\n t0zMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(0))\n .attr('x2', (datum) => { return timeScale(datum.t0); })\n .attr('y1', (datum) => { return evidenceScale(datum.startingPoint); })\n .attr('y2', (datum) => { return evidenceScale(datum.startingPoint); });\n t0zMerge.select('.point')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('cx', (datum) => { return timeScale(datum.t0); })\n .attr('cy', (datum) => { return evidenceScale(datum.startingPoint); });\n // EXIT\n t0zUpdate.exit().remove();\n\n // a Measure\n // DATA-JOIN\n const aUpdate = evidenceOverlayerMerge.selectAll('.measure.a')\n .data(this.measures ? [this.a] : []);\n // ENTER\n const aEnter = aUpdate.enter().append('g')\n .classed('measure a', true);\n aEnter.append('line')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const aLabel = aEnter.append('text')\n .classed('label', true);\n aLabel.append('tspan')\n .classed('a math-var', true)\n .text('a');\n aLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n aLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const aMerge = aEnter.merge(aUpdate);\n aMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.max) - this.rem * 0.75)\n .attr('y1', evidenceScale(this.bounds.upper) + 2)\n .attr('x2', timeScale(this.scale.time.max) - this.rem * 0.75)\n .attr('y2', evidenceScale(this.bounds.lower) - 2);\n const aLabelMerge = aMerge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.scale.time.max))\n .attr('y', evidenceScale(this.bounds.upper) - this.rem * 0.25);\n aLabelMerge.select('.value')\n .text(d3.format('.2f')(this.a));\n // EXIT\n aUpdate.exit().remove();\n\n // z Measure\n // DATA-JOIN\n const zUpdate = evidenceOverlayerMerge.selectAll('.measure.z')\n .data(this.measures ? [this.z] : []);\n // ENTER\n const zEnter = zUpdate.enter().append('g')\n .classed('measure z', true);\n zEnter.append('line')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const zLabel = zEnter.append('text')\n .classed('label', true);\n zLabel.append('tspan')\n .classed('z math-var', true)\n .text('z');\n zLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n zLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const zMerge = zEnter.merge(zUpdate);\n zMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.min) + this.rem * 0.75)\n .attr('y1', evidenceScale(this.startingPoint) + 2)\n .attr('x2', timeScale(this.scale.time.min) + this.rem * 0.75)\n .attr('y2', evidenceScale(this.bounds.lower) - 2);\n const zLabelMerge = zMerge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.scale.time.min))\n .attr('y', evidenceScale(this.bounds.lower) + this.rem * 0.125);\n zLabelMerge.select('.value')\n .text(d3.format('.0%')(this.z));\n // EXIT\n zUpdate.exit().remove();\n\n // v Measure\n // DATA-JOIN\n const vUpdate = evidenceOverlayerMerge.selectAll('.measure.v')\n .data(this.measures ? [this.v] : []);\n // ENTER\n const vEnter = vUpdate.enter().append('g')\n .classed('measure v', true);\n vEnter.append('path')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const vLabel = vEnter.append('text')\n .classed('label', true);\n vLabel.append('tspan')\n .classed('v math-var', true)\n .text('v');\n vLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n vLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const driftAngle = Math.atan((this.v / 1000) * scaleRatio);\n const driftHypotenuse = timeScale(200) - timeScale(0) + this.rem * 0.75;\n const driftX = Math.cos(driftAngle) * driftHypotenuse;\n const driftY = Math.sin(driftAngle) * driftHypotenuse;\n const vMerge = vEnter.merge(vUpdate);\n vMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('d', `\n M ${timeScale(this.t0 + 200) + this.rem * 0.75}, ${evidenceScale(this.startingPoint)}\n A ${timeScale(200) - timeScale(0)} ${timeScale(200) - timeScale(0)} 0 0 0 ${timeScale(this.t0) + driftX} ${evidenceScale(this.startingPoint) - driftY}\n `);\n const vLabelMerge = vMerge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.t0 + 200) + this.rem * 0.5)\n .attr('y', evidenceScale(this.bounds.upper) - this.rem * 0.25);\n vLabelMerge.select('.value')\n .text(d3.format('.2f')(this.v));\n // EXIT\n vUpdate.exit().remove();\n\n // t0 Measure\n // DATA-JOIN\n const t0Update = evidenceOverlayerMerge.selectAll('.measure.t0')\n .data(this.measures ? [this.t0] : []);\n // ENTER\n const t0Enter = t0Update.enter().append('g')\n .classed('measure t0', true);\n t0Enter.append('line')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const t0Label = t0Enter.append('text')\n .classed('label', true);\n t0Label.append('tspan')\n .classed('t0 math-var', true)\n .text('t₀');\n t0Label.append('tspan')\n .classed('equals', true)\n .text(' = ');\n t0Label.append('tspan')\n .classed('value', true);\n // MERGE\n const t0Merge = t0Enter.merge(t0Update);\n t0Merge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(0) + 2)\n .attr('y1', evidenceScale(this.startingPoint) - this.rem * 0.75)\n .attr('x2', timeScale(this.t0) - 2)\n .attr('y2', evidenceScale(this.startingPoint) - this.rem * 0.75);\n const t0LabelMerge = t0Merge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.t0) + this.rem * 0.25)\n .attr('y', evidenceScale(this.bounds.upper) - this.rem * 0.25);\n t0LabelMerge.select('.value')\n .text(d3.format('d')(this.t0));\n // EXIT\n t0Update.exit().remove();\n\n // Means\n // DATA-JOIN\n const meanUpdate = densityOverlayerMerge.selectAll('.model.mean')\n .data((datum) => {\n return this.means ? [datum] : [];\n });\n // ENTER\n const meanEnter = meanUpdate.enter().append('g')\n .attr('class', (datum) => { return `model mean ${datum.outcome}`; });\n meanEnter.append('line')\n .classed('indicator', true);\n // MERGE\n const meanMerge = meanEnter.merge(meanUpdate);\n meanMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => { return timeScale(datum.model.meanRT); })\n .attr('x2', (datum) => { return timeScale(datum.model.meanRT); })\n .attr('y1', (datum) => { return datum.densityScale(this.scale.density.min); })\n .attr('y2', (datum) => { return datum.densityScale(this.scale.density.max); });\n // EXIT\n meanUpdate.exit().remove();\n\n // Data Means\n // DATA-JOIN\n const dataMeanUpdate = densityOverlayerMerge.selectAll('.data.mean')\n .data((datum) => {\n return (this.means && !Number.isNaN(datum.data.meanRT)) ? [datum] : [];\n });\n // ENTER\n const dataMeanEnter = dataMeanUpdate.enter().append('g')\n .attr('class', (datum) => { return `data mean ${datum.outcome}`; });\n dataMeanEnter.append('line')\n .classed('indicator', true)\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.125 : -0.125) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.675 : -0.675) * this.rem;\n });\n // MERGE\n const dataMeanMerge = dataMeanEnter.merge(dataMeanUpdate);\n dataMeanMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => { return timeScale(datum.data.meanRT); })\n .attr('x2', (datum) => { return timeScale(datum.data.meanRT); })\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.125 : -0.125) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.675 : -0.675) * this.rem;\n });\n // EXIT\n dataMeanUpdate.exit().select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', 0)\n .attr('x2', 0)\n .on('end', (datum, index, elements) => {\n d3.select(elements[index].parentElement).remove();\n });\n\n // Standard Deviations\n // DATA-JOIN\n const sdUpdate = densityOverlayerMerge.selectAll('.model.sd')\n .data((datum) => {\n return this.sds ? [datum] : [];\n });\n // ENTER\n const sdEnter = sdUpdate.enter().append('g')\n .attr('class', (datum) => { return `model sd ${datum.outcome}`; });\n sdEnter.append('line')\n .classed('indicator', true)\n .attr('marker-start', 'url(#model-sd-cap)')\n .attr('marker-end', 'url(#model-sd-cap)');\n // MERGE\n const sdMerge = sdEnter.merge(sdUpdate);\n sdMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => { return timeScale(datum.model.meanRT - (datum.model.sdRT / 2)); })\n .attr('x2', (datum) => { return timeScale(datum.model.meanRT + (datum.model.sdRT / 2)); })\n .attr('y1', (datum) => { return datum.densityScale(5); })\n .attr('y2', (datum) => { return datum.densityScale(5); });\n // EXIT\n sdUpdate.exit().remove();\n\n // Data Standard Deviation\n // DATA-JOIN\n const dataSDUpdate = densityOverlayerMerge.selectAll('.data.sd')\n .data((datum) => {\n return (this.sds && !Number.isNaN(datum.data.meanRT) && !Number.isNaN(datum.data.sdRT))\n ? [datum]\n : [];\n });\n // ENTER\n const dataSDEnter = dataSDUpdate.enter().append('g')\n .attr('class', (datum) => { return `data sd ${datum.outcome}`; });\n dataSDEnter.append('line')\n .classed('indicator', true)\n .attr('marker-start', 'url(#data-sd-cap)')\n .attr('marker-end', 'url(#data-sd-cap)')\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n });\n // MERGE\n const dataSDMerge = dataSDEnter.merge(dataSDUpdate);\n dataSDMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => {\n return timeScale(datum.data.meanRT - (datum.data.sdRT / 2));\n })\n .attr('x2', (datum) => {\n return timeScale(datum.data.meanRT + (datum.data.sdRT / 2));\n })\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n });\n // EXIT\n dataSDUpdate.exit().select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', 0)\n .attr('x2', 0)\n .on('end', (datum, index, elements) => {\n d3.select(elements[index].parentElement).remove();\n });\n\n this.firstUpdate = false;\n }\n}\n\ncustomElements.define('ddm-model', DDMModel);\n","\nimport {html, css} from 'lit';\nimport * as d3 from 'd3';\n\nimport {DecidablesMixinResizeable} from '@decidables/decidables-elements';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n RDK2AFCTask element\n <rdk-2afc-task>\n\n Attributes:\n Dots; Coherence;\n # Direction, Speed, Lifetime\n*/\nexport default class RDK2AFCTask extends DecidablesMixinResizeable(AccumulableElement) {\n static get properties() {\n return {\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n count: {\n attribute: 'count',\n type: Number,\n reflect: true,\n },\n probability: {\n attribute: 'probability',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n wait: {\n attribute: 'wait',\n type: Number,\n reflect: true,\n },\n iti: {\n attribute: 'iti',\n type: Number,\n reflect: true,\n },\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n running: {\n attribute: 'running',\n type: Boolean,\n reflect: true,\n },\n\n lifetime: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n speed: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.coherence = 0.5; // Proportion of dots moving coherently\n this.count = 100; // Number of dots\n this.probability = 0.5; // Probability of left (as opposed to right)\n this.duration = 2000; // Duration of stimulus in milliseconds\n this.wait = 2000; // Duration of wait period for response in milliseconds\n this.iti = 2000; // Duration of inter-trial interval in milliseconds\n this.trials = 5; // Number of trials per block\n this.running = false; // Currently executing block of trials\n\n // Properties\n this.lifetime = 400; // Lifetime of each dot in milliseconds\n this.speed = 50; // Rate of dot movement in pixels per second\n\n // Private\n this.firstUpdate = true;\n this.COHERENT = 0; // \"Constant\" for index to coherent dots\n this.RANDOM = 1; // \"Constant\" for index to random dots\n this.dots = [[], []]; // Array of array of dots\n this.trial = 0; // Count of current trial\n\n this.states = ['resetted', 'iti', 'stimulus', 'wait', 'ended']; // Possible states of task\n this.state = 'resetted'; // Current state of task\n\n this.baseTime = 0; // Real time, in milliseconds, that the current block started\n this.pauseTime = 0; // Real time, in milliseconds, that block was paused at\n this.startTime = 0; // Virtual time, in milliseconds, that current stage of trial started\n this.lastTime = 0; // Virtual time, in milliseconds, of the most recent frame\n\n this.LEFT = 180; // \"Constant\" for left stimulus direction\n this.RIGHT = 0; // \"Constant\" for right stimulus direction\n this.currentDirection = undefined; // Direction in degrees for current trial\n\n this.signals = ['left', 'right']; // Possible trial types\n this.signal = undefined; // Current trial type\n\n this.runner = undefined; // D3 Interval for frame timing\n this.xScale = undefined; // D3 Scale for x-axis\n this.yScale = undefined; // D3 Scale for y-axis\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 10rem;\n height: 10rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n .background {\n fill: var(---color-element-disabled);\n stroke: none;\n }\n\n .outline {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2px;\n }\n\n .dot {\n r: 2px;\n }\n\n .dots.coherent {\n fill: var(---color-background);\n }\n\n .dots.random {\n fill: var(---color-background);\n }\n\n .fixation {\n stroke: var(---color-text);\n stroke-width: 2px;\n }\n\n .query {\n font-size: 1.75rem;\n font-weight: 600;\n }\n `,\n ];\n }\n\n render() { /* eslint-disable-line class-methods-use-this */\n return html``;\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n // Bail out if we can't get the width/height/rem\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const elementWidth = this.width;\n const elementHeight = this.height;\n const elementSize = Math.min(elementWidth, elementHeight);\n\n const margin = {\n top: 0.25 * this.rem,\n bottom: 0.25 * this.rem,\n left: 0.25 * this.rem,\n right: 0.25 * this.rem,\n };\n const height = elementSize - (margin.top + margin.bottom);\n const width = elementSize - (margin.left + margin.right);\n\n // X Scale\n this.xScale = d3.scaleLinear()\n .domain([-1, 1])\n .range([0, width]);\n\n // Y Scale\n this.yScale = d3.scaleLinear()\n .domain([1, -1])\n .range([0, height]);\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true);\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementSize} ${elementSize}`);\n\n // Clippath\n // ENTER\n svgEnter.append('clipPath')\n .attr('id', 'clip-rdk-task')\n .append('circle');\n // MERGE\n svgMerge.select('clipPath circle')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.xScale(0));\n\n // Plot\n // ENTER\n const plotEnter = svgEnter.append('g')\n .classed('plot', true);\n // MERGE\n const plotMerge = svgMerge.select('.plot')\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n // Underlayer\n // ENTER\n const underlayerEnter = plotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const underlayerMerge = plotMerge.select('.underlayer');\n\n // Background\n // ENTER\n underlayerEnter.append('circle')\n .classed('background', true);\n // MERGE\n underlayerMerge.select('.background')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.xScale(0));\n\n // Content\n // ENTER\n plotEnter.append('g')\n .classed('content', true)\n .attr('clip-path', 'url(#clip-rdk-task)');\n // MERGE\n const contentMerge = plotMerge.select('.content');\n\n // Dot Groups\n // DATA-JOIN\n const dotsUpdate = contentMerge.selectAll('.dots')\n .data([[], []]);\n // ENTER\n dotsUpdate.enter().append('g')\n .classed('dots', true)\n .classed('coherent', (datum, index) => { return index === this.COHERENT; })\n .classed('random', (datum, index) => { return index === this.RANDOM; });\n\n // Overlayer\n // ENTER\n const overlayerEnter = plotEnter.append('g')\n .classed('overlayer', true);\n // MERGE\n const overlayerMerge = plotMerge.select('.overlayer');\n\n // Outline\n // ENTER\n overlayerEnter.append('circle')\n .classed('outline', true);\n // MERGE\n overlayerMerge.select('.outline')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.yScale(0));\n\n // Start or stop trial block\n if (this.firstUpdate || changedProperties.has('running')) {\n if (this.running) {\n // (Re)Start\n if (this.pauseTime) {\n // Shift timeline forward as if paused time never happened\n this.baseTime += (d3.now() - this.pauseTime);\n this.pauseTime = 0;\n }\n this.runner = d3.interval(this.run.bind(this), 20); // FIXME??\n } else if (this.runner !== undefined) {\n // Pause\n this.runner.stop();\n this.pauseTime = d3.now();\n }\n }\n\n this.firstUpdate = false;\n }\n\n reset() {\n if (this.runner !== undefined) {\n this.runner.stop();\n }\n this.running = false;\n this.trial = 0;\n this.state = 'resetted';\n this.baseTime = 0;\n this.pauseTime = 0;\n this.startTime = 0;\n this.lastTime = 0;\n this.signal = undefined;\n this.currentDirection = undefined;\n\n const dotsUpdate = d3.select(this.renderRoot).select('.content').selectAll('.dots')\n .data([[], []]);\n const dotUpdate = dotsUpdate.selectAll('.dot')\n .data((datum) => { return datum; });\n dotUpdate.exit()\n .remove();\n\n const fixationUpdate = d3.select(this.renderRoot).select('.content').selectAll('.fixation')\n .data([]);\n fixationUpdate.exit()\n .remove();\n const queryUpdate = d3.select(this.renderRoot).select('.content').selectAll('.query')\n .data([]);\n queryUpdate.exit()\n .remove();\n }\n\n run(/* elapsed */) {\n const realTime = d3.now();\n const currentTime = (this.baseTime) ? (realTime - this.baseTime) : 0;\n const elapsedTime = (this.baseTime) ? (currentTime - this.startTime) : 0;\n const frameTime = (this.baseTime) ? (currentTime - this.lastTime) : 0;\n this.lastTime = currentTime;\n let newTrial = false;\n if (this.state === 'resetted') {\n // Start block with an ITI\n this.state = 'iti';\n this.baseTime = realTime;\n this.startTime = 0;\n this.dispatchEvent(new CustomEvent('rdk-block-start', {\n detail: {\n trials: this.trials,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'iti') && (elapsedTime >= this.iti)) {\n // Start new trial with a stimulus\n newTrial = true;\n this.trial += 1;\n this.state = 'stimulus';\n this.startTime = currentTime;\n this.signal = (Math.random() < this.probability) ? 'left' : 'right';\n this.currentDirection = (this.signal === 'left')\n ? this.LEFT\n : this.RIGHT;\n this.dispatchEvent(new CustomEvent('rdk-trial-start', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'stimulus') && (elapsedTime >= this.duration)) {\n // Stimulus is over, now wait\n this.state = 'wait';\n this.startTime = currentTime;\n this.dispatchEvent(new CustomEvent('rdk-trial-middle', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'wait') && (elapsedTime >= this.wait)) {\n // Wait is over, end of trial\n this.dispatchEvent(new CustomEvent('rdk-trial-end', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n if (this.trial >= this.trials) {\n // End of block\n this.runner.stop();\n this.running = false;\n this.state = 'ended';\n this.baseTime = 0;\n this.pauseTime = 0;\n this.startTime = 0;\n this.lastTime = 0;\n this.signal = undefined;\n this.currentDirection = undefined;\n this.dispatchEvent(new CustomEvent('rdk-block-end', {\n detail: {\n trials: this.trial,\n },\n bubbles: true,\n }));\n } else {\n // ITI\n this.state = 'iti';\n this.startTime = currentTime;\n }\n }\n\n // Dots\n if (this.state === 'stimulus') {\n this.dots[this.COHERENT].length = Math.round(this.count * this.coherence);\n this.dots[this.RANDOM].length = (this.count - this.dots[this.COHERENT].length);\n\n for (let t = 0; t < this.dots.length; t += 1) {\n for (let i = 0; i < this.dots[t].length; i += 1) {\n const newDot = (this.dots[t][i] === undefined);\n if (newDot) {\n this.dots[t][i] = {};\n }\n const dot = this.dots[t][i];\n if (newTrial || newDot) {\n dot.direction = (t === this.RANDOM) ? (Math.random() * 360) : this.currentDirection;\n dot.birth = currentTime - Math.floor(Math.random() * this.lifetime);\n const angle = Math.random() * 2 * Math.PI;\n const radius = Math.sqrt(Math.random());\n dot.x = this.xScale(radius * Math.cos(angle));\n dot.y = this.yScale(radius * Math.sin(angle));\n } else if (currentTime > (dot.birth + this.lifetime)) {\n // Dot has died, so rebirth\n dot.birth += this.lifetime;\n dot.direction = (t === this.RANDOM) ? (Math.random() * 360) : this.currentDirection;\n const angle = Math.random() * 2 * Math.PI;\n const radius = Math.sqrt(Math.random());\n dot.x = this.xScale(radius * Math.cos(angle));\n dot.y = this.yScale(radius * Math.sin(angle));\n } else {\n if (t === this.COHERENT) {\n dot.direction = this.currentDirection;\n }\n const directionR = dot.direction * (Math.PI / 180);\n dot.dx = this.speed * (frameTime / 1000) * Math.cos(directionR);\n dot.dy = this.speed * (frameTime / 1000) * Math.sin(directionR);\n // Update position\n dot.x += dot.dx;\n dot.y += dot.dy;\n // Calculate squared distance from center\n const distance2 = ((dot.x - this.xScale(0)) ** 2) + ((dot.y - this.yScale(0)) ** 2);\n const radius2 = (this.xScale(1) - this.xScale(0)) ** 2;\n if (distance2 > radius2) {\n // Dot has exited so move to other side\n dot.x = -(dot.x - this.xScale(0)) + this.xScale(0);\n dot.y = -(dot.y - this.yScale(0)) + this.yScale(0);\n }\n }\n }\n }\n }\n\n // Fixation\n // DATA-JOIN\n const fixationUpdate = d3.select(this.renderRoot).select('.content').selectAll('.fixation')\n .data((this.state === 'iti') ? [true] : []);\n // ENTER\n const fixationEnter = fixationUpdate.enter().append('g')\n .classed('fixation', true);\n fixationEnter.append('line')\n .attr('x1', this.xScale(-0.1))\n .attr('y1', this.xScale(0))\n .attr('x2', this.xScale(0.1))\n .attr('y2', this.xScale(0));\n fixationEnter.append('line')\n .attr('x1', this.xScale(0))\n .attr('y1', this.xScale(-0.1))\n .attr('x2', this.xScale(0))\n .attr('y2', this.xScale(0.1));\n // EXIT\n fixationUpdate.exit().remove();\n\n // Dots\n // DATA-JOIN\n const dotsUpdate = d3.select(this.renderRoot).select('.content').selectAll('.dots')\n .data((this.state === 'stimulus') ? this.dots : [[], []]);\n const dotUpdate = dotsUpdate.selectAll('.dot')\n .data((datum) => { return datum; });\n // ENTER\n const dotEnter = dotUpdate.enter().append('circle')\n .classed('dot', true);\n // MERGE\n dotEnter.merge(dotUpdate)\n .attr('cx', (datum) => { return datum.x; })\n .attr('cy', (datum) => { return datum.y; });\n // EXIT\n dotUpdate.exit().remove();\n\n // Query\n // DATA-JOIN\n const queryUpdate = d3.select(this.renderRoot).select('.content').selectAll('.query')\n .data((this.state === 'wait') ? [true] : []);\n // ENTER\n const queryEnter = queryUpdate.enter().append('g')\n .classed('query', true);\n queryEnter.append('text')\n .attr('x', this.xScale(0))\n .attr('y', this.xScale(0))\n .attr('text-anchor', 'middle')\n .attr('alignment-baseline', 'middle')\n .text('?');\n // EXIT\n queryUpdate.exit().remove();\n }\n}\n\ncustomElements.define('rdk-2afc-task', RDK2AFCTask);\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n","\nimport {css} from 'lit';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMEquation Base Class - Not intended for instantiation!\n*/\nexport default class DDMEquation extends AccumulableElement {\n static get properties() {\n return {\n numeric: {\n attribute: 'numeric',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n this.numeric = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: block;\n\n margin: 1rem;\n }\n\n /* Containing <div> */\n .holder {\n display: flex;\n\n flex-direction: row;\n\n justify-content: left;\n }\n\n /* Overall <table> */\n .equation {\n text-align: center;\n white-space: nowrap;\n\n border-collapse: collapse;\n\n border: 0;\n }\n\n /* Modifies <td> */\n .underline {\n border-bottom: 1px solid var(---color-text);\n }\n\n /* Basic <span> and <var> w/modifiers */\n span,\n var {\n padding: 0 0.25rem;\n\n font-style: normal;\n }\n\n var {\n border-radius: var(---border-radius);\n }\n\n .tight {\n padding: 0;\n }\n\n .paren {\n font-size: 150%;\n }\n\n .bracket {\n font-size: 175%;\n }\n\n .brace {\n font-size: 200%;\n }\n\n .addend {\n position: relative;\n display: inline-block;\n }\n\n .comparison {\n position: relative;\n display: inline-block;\n\n font-size: 125%;\n font-weight: 600;\n }\n\n .function {\n display: inline-block;\n\n border-radius: var(---border-radius);\n }\n\n :host([numeric]) .function {\n padding: 0.25rem;\n }\n\n .exp {\n display: inline-block;\n\n font-size: 0.75rem;\n }\n\n .subscript {\n display: inline-block;\n\n font-size: 66.667%;\n }\n\n .summation {\n display: flex;\n\n flex-direction: column;\n\n line-height: 0.8;\n }\n\n .sigma {\n display: inline-block;\n\n font-size: 200%;\n }\n\n /* Input wrapping <label> */\n decidables-spinner {\n --decidables-spinner-input-width: 4rem;\n\n display: inline-block;\n\n padding: 0.125rem 0.375rem 0.375rem;\n\n line-height: 1.5;\n vertical-align: middle;\n\n border-radius: var(---border-radius);\n }\n\n .n {\n --decidables-spinner-input-width: 2rem;\n }\n\n .left {\n text-align: left;\n }\n\n .right {\n text-align: right;\n }\n\n .bottom {\n vertical-align: bottom;\n }\n\n .top {\n vertical-align: top;\n }\n\n /* Color scheme */\n .a {\n background: var(---color-a-light);\n }\n\n .z {\n background: var(---color-z-light);\n }\n\n .v {\n background: var(---color-v-light);\n }\n\n .t0 {\n background: var(---color-t0-light);\n }\n\n .s {\n background: var(---color-s-light);\n }\n `,\n ];\n }\n}\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMEquation from './ddm-equation';\n\n/*\n DDMEquationAZV2PC element\n <ddm-equation-azv2pc>\n\n Attributes:\n*/\nexport default class DDMEquationAZV2PC extends DDMEquation {\n static get properties() {\n return {\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n\n accuracy: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.a = 1.5;\n this.z = 0.5;\n this.v = 0.1;\n this.alignState();\n }\n\n alignState() {\n this.accuracy = DDMMath.azv2pC(this.a, this.z, this.v);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('ddm-equation-azv2pc-change', {\n detail: {\n a: this.a,\n z: this.z,\n v: this.v,\n accuracy: this.accuracy,\n },\n bubbles: true,\n }));\n }\n\n aInput(event) {\n this.a = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n zInput(event) {\n this.z = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n vInput(event) {\n this.v = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n willUpdate() {\n this.alignState();\n }\n\n render() {\n let a;\n let z;\n let v;\n let s;\n let accuracy;\n if (this.numeric) {\n a = html`<decidables-spinner class=\"a bottom\" ?disabled=${!this.interactive} min=\"0.1\" max=\"2\" step=\"0.01\" .value=\"${this.a}\" @input=${this.aInput.bind(this)}>\n <var class=\"math-var\">a</var>\n </decidables-spinner>`;\n z = html`<decidables-spinner class=\"z bottom\" ?disabled=${!this.interactive} min=\"0.01\" max=\"0.99\" step=\"0.01\" .value=\"${this.z}\" @input=${this.zInput.bind(this)}>\n <var class=\"math-var\">z</var>\n </decidables-spinner>`;\n v = html`<decidables-spinner class=\"v bottom\" ?disabled=${!this.interactive} min=\"0.01\" max=\"5\" step=\"0.01\" .value=\"${this.v}\" @input=${this.vInput.bind(this)}>\n <var class=\"math-var\">v</var>\n </decidables-spinner>`;\n s = html`<decidables-spinner class=\"s bottom\" disabled min=\"0.01\" max=\"1\" step=\"0.01\" .value=\"${DDMMath.s}\">\n <var class=\"math-var\">s</var>\n </decidables-spinner>`;\n accuracy = html`<decidables-spinner class=\"accuracy bottom\" disabled min=\"0\" max=\"1\" step=\"0.01\" .value=\"${+this.accuracy.toFixed(2)}\">\n <var>Accuracy</var>\n </decidables-spinner>`;\n } else {\n a = html`<var class=\"math-var a\">a</var>`;\n z = html`<var class=\"math-var z\">z</var>`;\n v = html`<var class=\"math-var v\">v</var>`;\n s = html`<var class=\"math-var s\">s</var>`;\n accuracy = html`<var class=\"accuracy\">Accuracy</var>`;\n }\n const equation = html`\n <tr>\n <td rowspan=\"2\">\n ${accuracy}<span class=\"equals\">=</span>\n </td>\n <td class=\"underline\">\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${a} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${z} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n </td>\n </tr>\n <tr>\n <td>\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${a} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n 1\n </td>\n </tr>`;\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('ddm-equation-azv2pc', DDMEquationAZV2PC);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMEquation from './ddm-equation';\n\n/*\n DDMEquationAZVT02M element\n <ddm-equation-azvt02m>\n\n Attributes:\n*/\nexport default class DDMEquationAZVT02M extends DDMEquation {\n static get properties() {\n return {\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n\n meanRT: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.a = 1.5;\n this.z = 0.5;\n this.v = 0.1;\n this.t0 = 200;\n this.alignState();\n }\n\n alignState() {\n this.meanRT = DDMMath.azvt02m(this.a, this.z, this.v, this.t0);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('ddm-equation-azvt02m-change', {\n detail: {\n a: this.a,\n z: this.z,\n v: this.v,\n t0: this.t0,\n meanRT: this.meanRT,\n },\n bubbles: true,\n }));\n }\n\n aInput(event) {\n this.a = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n zInput(event) {\n this.z = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n vInput(event) {\n this.v = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n t0Input(event) {\n this.t0 = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n willUpdate() {\n this.alignState();\n }\n\n render() {\n let a;\n let z;\n let v;\n let t0;\n let s;\n let meanRT;\n if (this.numeric) {\n a = html`<decidables-spinner class=\"a bottom\" ?disabled=${!this.interactive} min=\"0.1\" max=\"2\" step=\"0.01\" .value=\"${this.a}\" @input=${this.aInput.bind(this)}>\n <var class=\"math-var\">a</var>\n </decidables-spinner>`;\n z = html`<decidables-spinner class=\"z bottom\" ?disabled=${!this.interactive} min=\"0.01\" max=\"0.99\" step=\"0.01\" .value=\"${this.z}\" @input=${this.zInput.bind(this)}>\n <var class=\"math-var\">z</var>\n </decidables-spinner>`;\n v = html`<decidables-spinner class=\"v bottom\" ?disabled=${!this.interactive} min=\"0.01\" max=\"5\" step=\"0.01\" .value=\"${this.v}\" @input=${this.vInput.bind(this)}>\n <var class=\"math-var\">v</var>\n </decidables-spinner>`;\n t0 = html`<decidables-spinner class=\"t0 bottom\" ?disabled=${!this.interactive} min=\"0\" max=\"500\" step=\"1\" .value=\"${this.t0}\" @input=${this.t0Input.bind(this)}>\n <var class=\"math-var\">t<sub>0</sub></var>\n </decidables-spinner>`;\n s = html`<decidables-spinner class=\"s bottom\" disabled min=\"0.01\" max=\"1\" step=\"0.01\" .value=\"${DDMMath.s}\">\n <var class=\"math-var\">s</var>\n </decidables-spinner>`;\n meanRT = html`<decidables-spinner class=\"mean-rt bottom\" disabled min=\"0\" max=\"1\" step=\"0.01\" .value=\"${+this.meanRT.toFixed(0)}\">\n <var>Mean RT</var>\n </decidables-spinner>`;\n } else {\n a = html`<var class=\"math-var a\">a</var>`;\n z = html`<var class=\"math-var z\">z</var>`;\n v = html`<var class=\"math-var v\">v</var>`;\n t0 = html`<var class=\"math-var t0\">t<sub>0</sub></var>`;\n s = html`<var class=\"math-var s\">s</var>`;\n meanRT = html`<var class=\"mean-rt\">Mean RT</var>`;\n }\n const equation = html`\n <tr>\n <td rowspan=\"2\">\n ${meanRT}<span class=\"equals\">=</span>\n ${t0}\n <span class=\"minus\">−</span>\n </td>\n <td class=\"underline\">\n ${z}\n </td>\n <td rowspan=\"2\">\n <span class=\"plus\">+</span>\n </td>\n <td class=\"underline\">\n ${a}\n </td>\n <td rowspan=\"2\"> </td>\n <td class=\"underline\">\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${z} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n 1\n </td>\n </tr>\n <tr>\n <td>\n ${v}\n </td>\n <td>\n ${v}\n </td>\n <td>\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${a} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n 1\n </td>\n </tr>`;\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('ddm-equation-azvt02m', DDMEquationAZVT02M);\n","\nimport {html, css} from 'lit';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMExample Base Class - Not intended for instantiation!\n*/\nexport default class DDMExample extends AccumulableElement {\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---border: var(--border, 1px solid var(---color-border));\n display: inline-block;\n\n margin-bottom: 1rem;\n }\n\n .holder {\n display: flex;\n }\n\n .body {\n display: flex;\n\n flex-wrap: wrap;\n\n align-items: center;\n justify-content: left;\n\n padding: 0.625rem;\n\n border: var(---border);\n border-radius: 0.25rem;\n }\n\n .body ::slotted(*) {\n margin: 0.625rem;\n }\n\n /* HACK: Sibling selectors not working with ::slotted */\n /* .body > rdk-task + sdt-response,\n ::slotted(rdk-task) + ::slotted(sdt-response) { */\n /* .body ::slotted(sdt-response) {\n margin-left: 0;\n } */\n\n /* HACK: Sibling selectors not working with ::slotted */\n /* .body > sdt-control + rdk-task,\n ::slotted(sdt-control) + ::slotted(rdk-task) {\n margin-left: 0;\n } */\n /* .body ::slotted(rdk-task) {\n margin-left: 0;\n } */\n `,\n ];\n }\n\n render() { /* eslint-disable-line class-methods-use-this */\n return html`\n <div class=\"holder\">\n <div class=\"body\">\n <slot>Empty!</slot>\n </div>\n </div>`;\n }\n}\n\ncustomElements.define('ddm-example', DDMExample);\n","\n// import DDMMath from '@decidables/accumulable-math';\n\nimport DDMExample from './ddm-example';\n\n/*\n DDMExampleHuman element\n <ddm-example-human>\n*/\nexport default class DDMExampleHuman extends DDMExample {\n constructor() {\n super();\n\n this.trialCount = 0;\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.accumulableControl = this.querySelector('accumulable-control');\n this.rdkTask = this.querySelector('rdk-2afc-task');\n this.accumulableResponse = this.querySelector('accumulable-response');\n this.accumulableTable = this.querySelector('accumulable-table');\n this.ddmParameters = this.querySelector('ddm-parameters');\n this.ddmModel = this.querySelector('ddm-model');\n this.ddmFit = this.querySelector('ddm-fit');\n\n // Initialize\n this.ddmModel.clear();\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('trials')) {\n this.accumulableControl.addEventListener('accumulable-control-trials', (event) => {\n if (this.rdkTask) {\n this.rdkTask.trials = event.detail.trials;\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.trialTotal = event.detail.trials;\n }\n });\n }\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('duration')) {\n this.accumulableControl.addEventListener('accumulable-control-duration', (event) => {\n if (this.rdkTask) {\n this.rdkTask.duration = event.detail.duration;\n this.rdkTask.wait = event.detail.duration;\n this.rdkTask.iti = event.detail.duration;\n }\n });\n }\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('coherence')) {\n this.accumulableControl.addEventListener('accumulable-control-coherence', (event) => {\n if (this.rdkTask) {\n this.rdkTask.coherence = event.detail.coherence;\n }\n });\n }\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('color')) {\n this.accumulableControl.addEventListener('accumulable-control-color', (event) => {\n if (this.accumulableTable) {\n this.accumulableTable.color = event.detail.color;\n }\n });\n }\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('run')) {\n this.accumulableControl.addEventListener('accumulable-control-run', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = true;\n }\n });\n }\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('pause')) {\n this.accumulableControl.addEventListener('accumulable-control-pause', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = false;\n }\n });\n }\n\n if (this.accumulableControl && this.accumulableControl.hasAttribute('reset')) {\n this.accumulableControl.addEventListener('accumulable-control-reset', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.reset();\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.reset();\n }\n\n if (this.accumulableTable) {\n this.accumulableTable.correctCount = NaN;\n this.accumulableTable.errorCount = NaN;\n this.accumulableTable.nrCount = NaN;\n this.accumulableTable.accuracy = NaN;\n this.accumulableTable.correctMeanRT = NaN;\n this.accumulableTable.errorMeanRT = NaN;\n this.accumulableTable.meanRT = NaN;\n this.accumulableTable.correctSDRT = NaN;\n this.accumulableTable.errorSDRT = NaN;\n this.accumulableTable.sdRT = NaN;\n }\n\n // if (this.ddmParameters) {\n // }\n\n if (this.ddmModel) {\n this.ddmModel.clear();\n }\n\n if (this.ddmFit) {\n this.ddmFit.clear();\n }\n });\n }\n\n if (this.rdkTask) {\n if (this.accumulableResponse) {\n this.accumulableResponse.trialTotal = this.rdkTask.trials;\n }\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-start', (event) => {\n if (this.accumulableResponse) {\n this.accumulableResponse.start(event.detail.signal, event.detail.trial);\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-end', (/* event */) => {\n if (this.accumulableResponse) {\n this.accumulableResponse.stop();\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-block-end', (/* event */) => {\n if (this.accumulableControl) {\n this.accumulableControl.complete();\n }\n });\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.addEventListener('accumulable-response', (event) => {\n if (this.accumulableTable) {\n this.accumulableTable.correctCount = event.detail.correctCount;\n this.accumulableTable.errorCount = event.detail.errorCount;\n this.accumulableTable.nrCount = event.detail.nrCount;\n this.accumulableTable.accuracy = event.detail.accuracy;\n this.accumulableTable.correctMeanRT = event.detail.correctMeanRT;\n this.accumulableTable.errorMeanRT = event.detail.errorMeanRT;\n this.accumulableTable.meanRT = event.detail.meanRT;\n this.accumulableTable.correctSDRT = event.detail.correctSDRT;\n this.accumulableTable.errorSDRT = event.detail.errorSDRT;\n this.accumulableTable.sdRT = event.detail.sdRT;\n }\n\n if (this.ddmModel) {\n this.ddmModel.trial({\n index: event.detail.trial,\n rt: event.detail.rt,\n outcome: event.detail.outcome,\n });\n }\n\n if (this.ddmFit) {\n this.ddmFit.set({\n accuracy: event.detail.accuracy,\n correctMeanRT: event.detail.correctMeanRT,\n errorMeanRT: event.detail.errorMeanRT,\n meanRT: event.detail.meanRT,\n correctSDRT: event.detail.correctSDRT,\n errorSDRT: event.detail.errorSDRT,\n sdRT: event.detail.sdRT,\n });\n }\n });\n }\n\n if (this.ddmFit) {\n this.ddmFit.addEventListener('ddm-fit-update', (event) => {\n if (this.ddmParameters) {\n this.ddmParameters.a = event.detail.a;\n this.ddmParameters.z = 0.5; // event.detail.z;\n this.ddmParameters.v = event.detail.v;\n this.ddmParameters.t0 = event.detail.t0;\n }\n\n if (this.ddmModel) {\n this.ddmModel.a = event.detail.a;\n this.ddmModel.z = 0.5; // event.detail.z;\n this.ddmModel.v = event.detail.v;\n this.ddmModel.t0 = event.detail.t0;\n }\n });\n }\n }\n}\n\ncustomElements.define('ddm-example-human', DDMExampleHuman);\n","\nimport DDMExample from './ddm-example';\n\n/*\n DDMExampleInteractive element\n <ddm-example-interactive>\n*/\nexport default class DDMExampleInteractive extends DDMExample {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n this.trials = 10;\n this.a = 1.2;\n this.z = 0.35;\n this.v = 1.5;\n this.t0 = 150;\n\n this.accumulableControl = null;\n this.accumulableTable = null;\n this.ddmParameters = null;\n this.ddmModel = null;\n\n this.data = undefined;\n this.model = undefined;\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.accumulableControl = this.querySelector('accumulable-control');\n this.accumulableTable = this.querySelector('accumulable-table');\n this.ddmParameters = this.querySelector('ddm-parameters');\n this.ddmModel = this.querySelector('ddm-model');\n\n if (this.accumulableControl) {\n this.accumulableControl.addEventListener('accumulable-control-resample', (/* event */) => {\n this.ddmModel?.resample();\n this.requestUpdate();\n });\n this.accumulableControl.addEventListener('accumulable-control-trials', (event) => {\n this.trials = event.detail.trials;\n });\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.addEventListener('ddm-parameters-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmParameters.addEventListener('ddm-parameters-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmParameters.addEventListener('ddm-parameters-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmParameters.addEventListener('ddm-parameters-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n }\n\n if (this.ddmModel) {\n this.ddmModel.addEventListener('ddm-model-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmModel.addEventListener('ddm-model-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmModel.addEventListener('ddm-model-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmModel.addEventListener('ddm-model-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n this.ddmModel.addEventListener('ddm-model-output', (event) => {\n this.data = event.detail.data;\n this.model = event.detail.model;\n this.requestUpdate();\n });\n }\n\n this.requestUpdate();\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n if (this.accumulableControl) {\n this.accumulableControl.trials = this.trials;\n }\n\n if (this.accumulableTable && this.data) {\n this.accumulableTable.correctCount = this.data.correctCount;\n this.accumulableTable.errorCount = this.data.errorCount;\n this.accumulableTable.nrCount = this.data.nrCount;\n this.accumulableTable.accuracy = this.data.accuracy;\n this.accumulableTable.correctMeanRT = this.data.correctMeanRT;\n this.accumulableTable.errorMeanRT = this.data.errorMeanRT;\n this.accumulableTable.meanRT = this.data.meanRT;\n this.accumulableTable.correctSDRT = this.data.correctSDRT;\n this.accumulableTable.errorSDRT = this.data.errorSDRT;\n this.accumulableTable.sdRT = this.data.sdRT;\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.a = this.a;\n this.ddmParameters.z = this.z;\n this.ddmParameters.v = this.v;\n this.ddmParameters.t0 = this.t0;\n }\n\n if (this.ddmModel) {\n this.ddmModel.trials = this.trials;\n this.ddmModel.a = +this.a;\n this.ddmModel.z = +this.z;\n this.ddmModel.v = +this.v;\n this.ddmModel.t0 = +this.t0;\n }\n }\n}\n\ncustomElements.define('ddm-example-interactive', DDMExampleInteractive);\n","\n// import DDMMath from '@decidables/accumulable-math';\n\nimport DDMExample from './ddm-example';\n\n/*\n DDMExampleModel element\n <ddm-example-model>\n*/\nexport default class DDMExampleModel extends DDMExample {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n this.trials = 10;\n this.duration = 2000;\n this.coherence = 0.5;\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = 'outcome';\n\n this.a = 1.2;\n this.z = 0.35;\n this.v = 1.5;\n this.t0 = 150;\n\n this.accumulableControl = null;\n this.rdkTask = null;\n this.ddmParameters = null;\n this.ddmModel = null;\n this.accumulableResponse = null;\n this.accumulableTable = null;\n\n this.trialCount = 0;\n this.signals = ['left', 'right']; // Possible values of 'signal'\n this.signal = undefined; // Signal for current trial\n this.data = undefined;\n this.model = undefined;\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.accumulableControl = this.querySelector('accumulable-control');\n this.rdkTask = this.querySelector('rdk-2afc-task');\n this.ddmParameters = this.querySelector('ddm-parameters');\n this.ddmModel = this.querySelector('ddm-model');\n this.accumulableResponse = this.querySelector('accumulable-response');\n this.accumulableTable = this.querySelector('accumulable-table');\n\n if (this.accumulableControl) {\n if (this.accumulableControl.hasAttribute('trials')) {\n this.accumulableControl.addEventListener('accumulable-control-trials', (event) => {\n this.trials = event.detail.trials;\n });\n }\n\n if (this.accumulableControl.hasAttribute('duration')) {\n this.accumulableControl.addEventListener('accumulable-control-duration', (event) => {\n this.duration = event.detail.duration;\n });\n }\n\n if (this.accumulableControl.hasAttribute('color')) {\n this.accumulableControl.addEventListener('accumulable-control-color', (event) => {\n this.color = event.detail.color;\n });\n }\n\n if (this.accumulableControl.hasAttribute('run')) {\n this.accumulableControl.addEventListener('accumulable-control-run', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = true;\n }\n\n if (this.ddmModel) {\n this.ddmModel.resumeTrial();\n }\n });\n }\n\n if (this.accumulableControl.hasAttribute('pause')) {\n this.accumulableControl.addEventListener('accumulable-control-pause', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = false;\n }\n\n if (this.ddmModel) {\n this.ddmModel.pauseTrial();\n }\n });\n }\n\n if (this.accumulableControl.hasAttribute('reset')) {\n this.accumulableControl.addEventListener('accumulable-control-reset', (/* event */) => {\n this.trialCount = 0;\n this.signal = undefined;\n\n if (this.rdkTask) {\n this.rdkTask.reset();\n }\n\n if (this.ddmModel) {\n this.ddmModel.trials = this.trialCount;\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.reset();\n }\n\n if (this.accumulableTable) {\n // this.accumulableTable.clear();\n }\n });\n }\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-start', (event) => {\n this.signal = event.detail.signal;\n\n if (this.accumulableResponse) {\n this.accumulableResponse.start(\n event.detail.signal,\n event.detail.trial,\n );\n }\n\n if (this.ddmModel) {\n this.trialCount += 1;\n this.ddmModel.trial();\n }\n });\n\n this.rdkTask.addEventListener('rdk-trial-end', (/* event */) => {\n this.signal = undefined;\n\n if (this.accumulableResponse) {\n this.accumulableResponse.stop();\n }\n });\n\n this.rdkTask.addEventListener('rdk-block-end', (/* event */) => {\n if (this.accumulableControl) {\n this.accumulableControl.complete();\n }\n });\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.addEventListener('ddm-parameters-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmParameters.addEventListener('ddm-parameters-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmParameters.addEventListener('ddm-parameters-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmParameters.addEventListener('ddm-parameters-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n }\n\n if (this.ddmModel) {\n this.ddmModel.addEventListener('ddm-model-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmModel.addEventListener('ddm-model-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmModel.addEventListener('ddm-model-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmModel.addEventListener('ddm-model-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n this.ddmModel.addEventListener('ddm-model-output', (event) => {\n this.data = event.detail.data;\n this.model = event.detail.model;\n this.requestUpdate();\n });\n\n if (this.ddmModel) {\n this.ddmModel.addEventListener('accumulable-response', (event) => {\n if (this.accumulableResponse) {\n const response = (event.detail.outcome === 'correct')\n ? this.signal\n : (this.signal === 'left')\n ? 'right'\n : 'left';\n this.accumulableResponse.responded(response);\n }\n\n this.data = event.detail.data;\n this.model = event.detail.model;\n this.requestUpdate();\n });\n }\n }\n\n this.requestUpdate();\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n if (this.trialCount > this.trials) {\n this.trialCount = this.trials;\n }\n\n if (this.accumulableControl) {\n this.accumulableControl.trials = this.trials;\n this.accumulableControl.duration = this.duration;\n this.accumulableControl.coherence = this.coherence;\n this.accumulableControl.color = this.color;\n }\n\n if (this.rdkTask) {\n this.rdkTask.trials = this.trials;\n this.rdkTask.duration = this.duration;\n this.rdkTask.coherence = this.coherence;\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.a = this.a;\n this.ddmParameters.z = this.z;\n this.ddmParameters.v = this.v;\n this.ddmParameters.t0 = this.t0;\n }\n\n if (this.ddmModel) {\n this.ddmModel.trials = this.trialCount;\n this.ddmModel.a = +this.a;\n this.ddmModel.z = +this.z;\n this.ddmModel.v = +this.v;\n this.ddmModel.t0 = +this.t0;\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.trialTotal = this.trials;\n }\n\n if (this.accumulableTable) {\n this.accumulableTable.color = this.color;\n }\n\n if (this.accumulableTable && this.data) {\n this.accumulableTable.correctCount = this.data.correctCount;\n this.accumulableTable.errorCount = this.data.errorCount;\n this.accumulableTable.nrCount = this.data.nrCount;\n this.accumulableTable.accuracy = this.data.accuracy;\n this.accumulableTable.correctMeanRT = this.data.correctMeanRT;\n this.accumulableTable.errorMeanRT = this.data.errorMeanRT;\n this.accumulableTable.meanRT = this.data.meanRT;\n this.accumulableTable.correctSDRT = this.data.correctSDRT;\n this.accumulableTable.errorSDRT = this.data.errorSDRT;\n this.accumulableTable.sdRT = this.data.sdRT;\n }\n }\n}\n\ncustomElements.define('ddm-example-model', DDMExampleModel);\n"],"names":["t","globalThis","e","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$2","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","r","n","i","css","reduce","c","cssRules","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","JSCompiler_renameProperty","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","notEqual","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","hasOwnProperty","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","has","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","b","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createMarker","createComment","v","_","m","RegExp","g","$","_$litType$","strings","values","x","T","for","E","A","C","createTreeWalker","V","getTemplateHtml","lastIndex","exec","test","startsWith","N","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","ascending","NaN","descending","bisector","compare1","compare2","delta","left","lo","hi","mid","zero","center","right","litElementVersions","bisectRight","e10","sqrt","e5","e2","tickSpec","start","stop","count","step","max","power","floor","log10","error","pow","factor","i1","i2","inc","round","tickIncrement","identity$3","top","bottom","epsilon","translateX","translateY","number","scale","offset","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","transform","context","ticks","apply","domain","format","identity","spacing","range","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","attr","line","select","text","merge","insert","transition","isFinite","filter","each","from","tickSize","axisLeft","noop","value","dispatch","Dispatch","callback","concat","on","typename","types","trim","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","arrayAll","array","matcher","matches","childMatcher","node","find","childFirst","firstElementChild","children","sparse","EnterNode","parent","datum","_next","_parent","__data__","bindIndex","group","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","keyValues","arraylike","attrRemove","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","previousSibling","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","listener","onAdd","event","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","child","next","join","splice","contains","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","selectChild","match","childFind","selectChildren","childrenFilter","bind","constant","enterGroup","updateGroup","previous","i0","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","min","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","property","classed","html","create","before","deep","typenames","parseTypenames","nextId","Local","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","clientTop","pageX","pageY","id","nonpassive","nonpassivecapture","nopropagation","stopImmediatePropagation","noevent","preventDefault","DragEvent","subject","target","identifier","active","dx","dy","defineProperties","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","listeners","clickDistance2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","view","mousemoved","mouseupped","__noselect","MozUserSelect","nodrag","mouse","noclick","setTimeout","yesdrag","touches","changedTouches","clearTimeout","touch","p0","clickDistance","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","parseInt","rgbn","Rgb","rgba","hsla","opacity","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","channels","assign","displayable","formatHex8","formatHsl","clamp","gamma","nogamma","exponential","linear","interpolateRgb","rgbGamma","end","colorRgb","numberArray","genericArray","nb","na","date","Date","setTime","interpolateNumber","object","reA","reB","source","interpolateString","am","bm","bs","bi","q","one","interpolate$1","ArrayBuffer","isView","DataView","isNumberArray","valueOf","interpolateRound","svgNode","degrees","PI","rotate","skewX","scaleX","scaleY","decompose","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","taskHead","taskTail","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","baseVal","consolidate","matrix","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearInterval","setInterval","elapsed","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","timing","schedules","__transition","self","tween","duration","ease","init","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","resolve","cancel","interrupt","cubicOut","defaultTiming","pi","tau","tauEpsilon","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","abs","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cos","sin","cw","da","w","formatDecimalParts","toExponential","coefficient","exponent","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","align","sign","symbol","width","comma","precision","formatRounded","formatTypes","%","toLocaleString","replace","toPrecision","X","toUpperCase","identity$1","locale","formatPrefix","prefixes","formatLocale","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","padding","uniform","sourceRandomUniform","randomUniform","defaultSource","normal","sourceRandomNormal","randomNormal","mu","sigma","log","eps","lcg","seed","initRange","unit","normalize","bimap","d0","d1","r0","r1","polymap","bisect","transformer","untransform","unknown","piecewise","output","input","interpolateValue","rescale","clamper","invert","rangeRound","tickStep","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","ceil","colors","Linear","_context","curveLinear","defined","curve","shape","RangeError","withPath","buffer","defined0","lineStart","lineEnd","pointX","pointY","Transform","areaStart","_line","areaEnd","_point","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","DecidablesElement","getComputedStyleValue","changedProperties","d3","greys","light75","light50","light25","dark25","dark50","dark75","shadows","elevations","baselineColor","baselineColorString","inverseBaselineColor","inverseBaselineColorString","opacityUmbra","opacityPenumbra","opacityAmbient","opacityBoost","mapUmbra","mapPenumbra","mapAmbient","cssBoxShadow","elevation","umbraO","penumbraO","ambientO","umbraC","penumbraC","ambientC","umbraM","penumbraM","ambientM","svgDefs","filters","svgFilters","unsafeCSS","customElements","disabled","changed","inputted","ifDefined","checked","DecidablesMixinResizeable","superClass","height","rem","getDimensions","parseFloat","resizeObserver","ResizeObserver","observe","unobserve","AccumulableElement","interactive","correct","nr","lights","acc","cur","darks","AccumulableControl","trials","resample","coherence","run","pause","reset","states","setTrials","doResample","setDuration","setCoherence","chooseColor","doRun","doPause","doReset","complete","DDMMath","static","trials2stats","stats","sums","accumulator","trial","outcome","correctCount","correctRTSum","rt","errorCount","errorRTSum","nrCount","accuracy","correctMeanRT","errorMeanRT","meanRT","sums2","ss","correctSS","errorSS","correctSDRT","errorSDRT","sdRT","azv2pE","zPrime","exp","azv2pC","azvt02m","azv2sd","Z","variance","azvt02mE","phi","azv2sdE","azvt02mC","azv2sdC","tazv2gE","base","term","sum","tazv2gC","data2ez","pC","sd","logit","vrt","mrt","s2","mdt","data2ez2","AccumulableResponse","feedback","payoff","correctPayoff","errorPayoff","nrPayoff","trialCount","trialTotal","payoffs","signals","signal","responses","response","outcomes","startTime","alignState","trialPayoff","totalPayoff","responded","keydown","payoffFormatter","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","payoffFormat","formatToParts","part","AccumulableTable","numeric","summary","sendEvent","correctCountInput","errorCountInput","accuracyInput","correctMeanRTInput","errorMeanRTInput","meanRTInput","correctSDRTInput","errorSDRTInput","sdRTInput","DDMFit","observed","predicted","working","queued","worker","DDMFitWorker","onmessage","fit","postMessage","clear","structuredClone","DDMParameters","setBoundarySeparation","setStartingPoint","setDriftRate","setNondecisionTime","DDMModel","measures","means","sds","human","firstUpdate","evidence","density","bounds","startingPoint","model","animate","paused","pauseTrial","resumeTrial","alignPath","drift","at","alignCorrectDistribution","proportionCorrect","dist","alignErrorDistribution","proportionError","upper","dataStats","correctDist","errorDist","hostWidth","hostHeight","elementWidth","elementHeight","margin","gapHeight","evidenceHeight","densityHeight","gapWidth","timeWidth","accuracyWidth","transitionDuration","timeScale","evidenceScale","correctDensityScale","errorDensityScale","accuracyScale","dragT0z","shift","shiftKey","dragDrift","dragBoundary","boundary","bound","evidenceLine","correctDensityLine","errorDensityLine","svgUpdate","svgEnter","gradient","svgMerge","densityPlotUpdate","densityScale","densityLine","alignDistribution","evidencePlotEnter","densityPlotEnter","accuracyPlotEnter","evidencePlotMerge","densityPlotMerge","accuracyPlotMerge","evidenceUnderlayerEnter","densityUnderlayerEnter","accuracyUnderlayerEnter","evidenceUnderlayerMerge","densityUnderlayerMerge","accuracyUnderlayerMerge","densityContentEnter","evidenceContentMerge","densityContentMerge","accuracyContentMerge","evidenceOverlayerMerge","densityOverlayerMerge","timeScaleMerge","timeTitleEnter","evidenceScaleMerge","densityScaleMerge","accuracyScaleMerge","evidenceScaleTransition","densityScaleTransition","elements","accuracyScaleTransition","evidenceTitleEnter","densityTitleEnter","accuracyTitleEnter","pathUpdate","rtLabel","pathEnter","myRtLabel","bbox","getBBox","pathMerge","interpolateA","interpolateZ","interpolateV","interpolateT0","pathMergeNewActive","easeTime","scaleIn","scaleOutGenerator","easeFunction","interpolator","parentElement","pathMergeNewPaused","distEnter","rtUpdate","rtEnter","rtMerge","accuracyUpdate","accuracyEnter","dataAccuracyUpdate","dataAccuracyEnter","dataAccuracyMerge","boundaryUpdate","boundaryEnter","boundaryMerge","includes","driftUpdate","driftEnter","driftMerge","scaleRatio","t0zUpdate","t0zEnter","t0zMerge","aUpdate","aEnter","aLabel","aMerge","zUpdate","zEnter","zLabel","zMerge","vUpdate","vEnter","vLabel","driftAngle","driftHypotenuse","driftX","driftY","vMerge","t0Update","t0Enter","t0Label","t0Merge","meanUpdate","meanEnter","dataMeanUpdate","dataMeanEnter","sdUpdate","sdEnter","dataSDUpdate","dataSDEnter","RDK2AFCTask","probability","wait","iti","running","lifetime","speed","COHERENT","RANDOM","dots","baseTime","pauseTime","lastTime","LEFT","RIGHT","currentDirection","runner","xScale","yScale","elementSize","plotEnter","plotMerge","underlayerEnter","underlayerMerge","overlayerEnter","overlayerMerge","total","_restart","dotUpdate","realTime","currentTime","elapsedTime","frameTime","newTrial","newDot","dot","direction","birth","angle","radius","directionR","fixationUpdate","fixationEnter","queryUpdate","DDMEquation","DDMEquationAZV2PC","aInput","zInput","vInput","equation","DDMEquationAZVT02M","t0Input","DDMExample","DDMExampleHuman","accumulableControl","rdkTask","accumulableResponse","accumulableTable","ddmParameters","ddmModel","ddmFit","hasAttribute","DDMExampleInteractive","DDMExampleModel"],"mappings":";;;;;AAMA,MAGMA,EAASC,WAKFC,EACXF,EAAOG,kBAAAC,IACNJ,EAAOK,UAA0BL,EAAOK,SAASC,eAClD,uBAAwBC,SAASC,WACjC,YAAaC,cAAcD,UAkBvBE,EAAoBC,SAEpBC,EAAc,IAAIC,QAAA,IAAAC,EAAA,MAgBtBC,WAAAA,CACEf,EACAE,EACAU,GAEA,GAVFI,KAAeC,cAAA,EAUTL,IAAcF,EAChB,MAAUQ,MACR,qEAGJF,KAAKG,QAAUnB,EACfgB,KAAKhB,EAAWE,CACjB,CAID,cAAAkB,GAGE,IAAIpB,EAAagB,KAAKJ,EACtB,MAAMF,EAAUM,KAAKhB,EACrB,GAAIE,QAAAE,IAA+BJ,EAA0B,CAC3D,MAAME,WAAYQ,GAA4C,IAAnBA,EAAQW,OAC/CnB,IACFF,EAAaY,EAAYU,IAAIZ,SAAAN,IAE3BJ,KACDgB,KAAKJ,EAAcZ,EAAa,IAAIS,eAAiBc,YACpDP,KAAKG,SAEHjB,GACFU,EAAYY,IAAId,EAASV,GAG9B,CACD,OAAOA,CACR,CAEDyB,QAAAA,GACE,OAAOT,KAAKG,OACb,GAWH,MAsBaO,EAAa1B,GACxB,IAAK2B,EACc,iBAAV3B,EAAqBA,EAAeA,EAAP,QAAAI,EAEpCM,GAWSkB,EAAMC,CACjB7B,KACGE,KAEH,MAAMU,EACe,IAAnBZ,EAAQqB,OACJrB,EAAQ,GACRE,EAAO4B,QACL,CAAC5B,EAAKQ,EAAGE,IAAQV,EA7CD,CAACF,IAEzB,IAA6C,IAAxCA,EAAkCiB,aACrC,OAAQjB,EAAoBmB,QACvB,GAAqB,iBAAVnB,EAChB,OAAOA,EAEP,MAAUkB,MACR,mEACKlB,EADL,uFAqC6CU,EA7CzB,CA6CyBA,GAAKV,EAAQY,EAAM,IAC5DZ,EAAQ,IAEhB,OAAO,IAAK2B,EACVf,EACAZ,EACAU,EACD,EA0CUqB,EACX7B,EAEKF,GAAyBA,EACzBA,GACCA,aAAaS,cAbW,CAACT,IAC/B,IAAIE,EAAU,GACd,IAAK,MAAMQ,KAAQV,EAAMgC,SACvB9B,GAAWQ,EAAKS,QAElB,OAAOO,EAAUxB,EAQ0CF,EAb7B,CAa6BA,GAAKA;;;;;KChK5DiC,GACJL,EAAEM,eACFhC,EAAciC,yBACdT,EAAwBU,oBACxBC,EAAmBC,sBACnB1B,EAAqB2B,eACrBZ,GACEa,OAKEC,EAASxC,WAUT8B,EAAgBU,EACnBC,aAMGC,EAAiCZ,EAClCA,EAAaa,YACd,GAEEC,EAEFJ,EAAOK,+BA4FLC,EAA4BC,CAChChD,EACAU,IACMV,EAuJKiD,EAA8C,CACzDC,WAAAA,CAAYlD,EAAgBU,GAC1B,OAAQA,GACN,KAAKyC,QACHnD,EAAQA,EAAQ2C,EAAiC,KACjD,MACF,KAAKH,OACL,KAAKY,MAGHpD,EAAiB,MAATA,EAAgBA,EAAQqD,KAAKC,UAAUtD,GAGnD,OAAOA,CACR,EAEDuD,aAAAA,CAAcvD,EAAsBU,GAClC,IAAIkB,EAAqB5B,EACzB,OAAQU,GACN,KAAKyC,QACHvB,EAAsB,OAAV5B,EACZ,MACF,KAAKwD,OACH5B,EAAsB,OAAV5B,EAAiB,KAAOwD,OAAOxD,GAC3C,MACF,KAAKwC,OACL,KAAKY,MAIH,IAEExB,EAAYyB,KAAKI,MAAMzD,EACvB,OAAOA,GACP4B,EAAY,IACb,EAGL,OAAOA,CACR,GAWU8B,EAAuBC,CAAC3D,EAAgBU,KAClDkB,EAAG5B,EAAOU,GAEPkD,EAAkD,CACtDC,WAAW,EACXC,KAAMC,OACNC,UAAWf,EACXgB,SAAS,EACTC,WAAYR,GAsBb/C,OAA8BwD,WAAaxD,OAAO,YAcnD8B,EAAO2B,sBAAwB,IAAIvD,cAAA,cAoBzBwD,YAqFR,qBAAAC,CAAsBtE,GACpBgB,KAAKuD,QACJvD,KAAK2B,IAAkB,IAAI6B,KAAKxE,EAClC,CAuGD,6BAAAyE,GAOE,OALAzD,KAAK0D,WAMH1D,KAAK2D,MAA4B,IAAI3D,KAAK2D,KAAyBC,OAEtE,CA6BD,qBAAAC,CACE7E,EACAU,EAA+BkD,GAQ/B,GALIlD,EAAQoE,QACTpE,EAAsDmD,WAAA,GAEzD7C,KAAKuD,OACLvD,KAAK+D,kBAAkBvD,IAAIxB,EAAMU,IAC5BA,EAAQsE,WAAY,CACvB,MAAMpD,EAIFjB,SACEe,EAAaV,KAAKiE,sBAAsBjF,EAAM4B,EAAKlB,QAAAN,IACrDsB,GACFxB,EAAec,KAAKR,UAAWR,EAAM0B,EAExC,CACF,CA6BS,4BAAAuD,CACRjF,EACAU,EACAkB,GAEA,MAAMN,IAACpB,EAAGsB,IAAEa,GAAOX,EAAyBV,KAAKR,UAAWR,IAAS,CACnEsB,GAAAA,GACE,OAAON,KAAKN,EACb,EACDc,GAAAA,CAA2BxB,GACxBgB,KAAqDN,GAAOV,CAC9D,GAmBH,MAAO,CACLsB,GAAAA,GACE,OAAOpB,GAAKgF,KAAKlE,KAClB,EACDQ,GAAAA,CAA2Bd,GACzB,MAAMgB,EAAWxB,GAAKgF,KAAKlE,MAC3BqB,EAAK6C,KAAKlE,KAAMN,GAChBM,KAAKmE,cAAcnF,EAAM0B,EAAUE,EACpC,EACDwD,cAAc,EACdC,YAAY,EAEf,CAgBD,yBAAAC,CAA0BtF,GACxB,OAAOgB,KAAK+D,kBAAkBzD,IAAItB,IAAS4D,CAC5C,CAgBO,WAAAW,GACN,GACEvD,KAAKuE,eAAexC,EAA0B,sBAG9C,OAGF,MAAM/C,EAAY2B,EAAeX,MACjChB,EAAU0E,gBAAAtE,IAKNJ,EAAU2C,IACZ3B,KAAK2B,EAAgB,IAAI3C,EAAU2C,IAGrC3B,KAAK+D,kBAAoB,IAAIS,IAAIxF,EAAU+E,kBAC5C,CAaS,eAAAL,GACR,GAAI1D,KAAKuE,eAAexC,EAA0B,cAChD,OAMF,GAJA/B,KAAKyE,WAAY,EACjBzE,KAAKuD,OAGDvD,KAAKuE,eAAexC,EAA0B,eAAsB,CACtE,MAAM/C,EAAQgB,KAAK0E,WACbhF,EAAW,IACZ2B,EAAoBrC,MACpBY,EAAsBZ,IAE3B,IAAK,MAAM4B,KAAKlB,EACdM,KAAK6D,eAAejD,EAAG5B,EAAM4B,GAEhC,CAGD,MAAM5B,EAAWgB,KAAKL,OAAOwD,UAC7B,GAAiB,OAAbnE,EAAmB,CACrB,MAAMU,EAAa0D,oBAAoB9C,IAAItB,GAC3C,QAAAI,IAAIM,EACF,IAAK,MAAOV,EAAG4B,KAAYlB,EACzBM,KAAK+D,kBAAkBvD,IAAIxB,EAAG4B,EAGnC,CAGDZ,KAAK2D,KAA2B,IAAIa,IACpC,IAAK,MAAOxF,EAAGU,KAAYM,KAAK+D,kBAAmB,CACjD,MAAMnD,EAAOZ,KAAK2E,KAA2B3F,EAAGU,QAAAN,IAC5CwB,GACFZ,KAAK2D,KAAyBnD,IAAII,EAAM5B,EAE3C,CAEDgB,KAAK4E,cAAgB5E,KAAK6E,eAAe7E,KAAK8E,OAkB/C,CA4BS,qBAAAD,CACRnF,GAEA,MAAMkB,EAAgB,GACtB,GAAIwB,MAAM2C,QAAQrF,GAAS,CAIzB,MAAMR,EAAM,IAAI8F,IAAKtF,EAA0BuF,KAAK,KAAUC,WAE9D,IAAK,MAAMxF,KAAKR,EACd0B,EAAcuE,QAAQnG,EAAmBU,cAEvBN,IAAXM,GACTkB,EAAc4C,KAAKxE,EAAmBU,IAExC,OAAOkB,CACR,CAaO,WAAA+D,CACN3F,EACAU,GAEA,MAAMkB,EAAYlB,EAAQmD,UAC1B,OAAA,IAAOjC,OAAAxB,EAEkB,iBAAdwB,EACPA,EACgB,iBAAT5B,EACPA,EAAKoG,oBAEV,CA2CDrF,WAAAA,GACEsF,QApWMrF,KAAoBsF,UAAAlG,EAmU5BY,KAAeuF,mBAOfvF,KAAUwF,YAAA,EAkBFxF,KAAoByF,KAAuB,KASjDzF,KAAK0F,MACN,CAMOA,IAAAA,GACN1F,KAAK2F,KAAkB,IAAIC,SACxB5G,GAASgB,KAAK6F,eAAiB7G,IAElCgB,KAAK8F,KAAsB,IAAItB,IAG/BxE,KAAK+F,OAGL/F,KAAKmE,gBACJnE,KAAKD,YAAuC4B,GAAeqE,SAAShH,GACnEA,EAAEgB,OAEL,CAWDiG,aAAAA,CAAcjH,IACXgB,KAAKkG,OAAkB,IAAIlB,KAAOmB,IAAInH,QAAAI,IAKnCY,KAAKoG,YAA4BpG,KAAKqG,aACxCrH,EAAWsH,iBAEd,CAMDC,gBAAAA,CAAiBvH,GACfgB,KAAKkG,MAAeM,OAAOxH,EAC5B,CAcO+G,IAAAA,GACN,MAAM/G,EAAqB,IAAIwF,IACzB9E,EAAqBM,KAAKD,YAC7BgE,kBACH,IAAK,MAAMnD,KAAKlB,EAAkBkE,OAC5B5D,KAAKuE,eAAe3D,KACtB5B,EAAmBwB,IAAII,EAAGZ,KAAKY,WACxBZ,KAAKY,IAGZ5B,EAAmByH,KAAO,IAC5BzG,KAAKsF,KAAuBtG,EAE/B,CAWS0H,gBAAAA,GACR,MAAM1H,EACJgB,KAAK2G,YACL3G,KAAK4G,aACF5G,KAAKD,YAAuC8G,mBAMjD,MD/5BuBC,EACzBpH,EACAE,KAEA,GAAIV,EACDQ,EAA0BqH,mBAAqBnH,EAAOoH,KAAKhI,GAC1DA,aAAaS,cAAgBT,EAAIA,EAAEoB,kBAGrC,IAAK,MAAMlB,KAAKU,EAAQ,CACtB,MAAMA,EAAQqH,SAASC,cAAc,SAE/BvG,EAAS3B,EAAyBmI,cAAA/H,IACpCuB,GACFf,EAAMwH,aAAa,QAASzG,GAE9Bf,EAAMyH,YAAenI,EAAgBiB,QACrCT,EAAW4H,YAAY1H,EACxB,GCy4BDF,CACEV,EACCgB,KAAKD,YAAuC6E,eAExC5F,CACR,CAODuI,iBAAAA,GAEGvH,KAA4CoG,aAC3CpG,KAAK0G,mBACP1G,KAAK6F,gBAAe,GACpB7F,KAAKkG,MAAeF,SAAShH,GAAMA,EAAEsH,mBACtC,CAQST,cAAAA,CAAe7G,GAA6B,CAQtDwI,oBAAAA,GACExH,KAAKkG,MAAeF,SAAShH,GAAMA,EAAEyI,sBACtC,CAcDC,wBAAAA,CACE1I,EACAU,EACAkB,GAEAZ,KAAK2H,KAAsB3I,EAAM4B,EAClC,CAEOgH,IAAAA,CAAsB5I,EAAmBU,GAC/C,MAGMkB,EAFJZ,KAAKD,YACLgE,kBAC6BzD,IAAItB,GAC7BE,EACJc,KAAKD,YACL4E,KAA2B3F,EAAM4B,GACnC,QAAAxB,IAAIF,IAAA,IAAsB0B,EAAQqC,QAAkB,CAClD,MAKMvC,YAJHE,EAAQoC,WAAyCd,YAE7CtB,EAAQoC,UACTf,GACsBC,YAAaxC,EAAOkB,EAAQkC,MAwBxD9C,KAAKyF,KAAuBzG,EACX,MAAb0B,EACFV,KAAK6H,gBAAgB3I,GAErBc,KAAKoH,aAAalI,EAAMwB,GAG1BV,KAAKyF,KAAuB,IAC7B,CACF,CAGDkC,IAAAA,CAAsB3I,EAAcU,GAClC,MAAMkB,EAAOZ,KAAKD,YAGZb,EAAY0B,EAAK+C,KAA0CrD,IAAItB,GAGrE,QAAAI,IAAIF,GAA0Bc,KAAKyF,OAAyBvG,EAAU,CACpE,MAAMF,EAAU4B,EAAK0D,mBAAmBpF,GAClCwB,EACyB,mBAAtB1B,EAAQgE,UACX,CAACT,cAAevD,EAAQgE,gBACa5D,IAArCJ,EAAQgE,WAAWT,cACnBvD,EAAQgE,UACRf,EAENjC,KAAKyF,KAAuBvG,EAC5Bc,KAAKd,GAA0BwB,EAAU6B,cACvC7C,EACAV,EAAQ8D,MAIV9C,KAAKyF,KAAuB,IAC7B,CACF,CAgBDtB,aAAAA,CACEnF,EACAU,EACAkB,GAGA,QAAaxB,IAATJ,EAAoB,CAYtB,GALA4B,IACEZ,KAAKD,YACLuE,mBAAmBtF,KACF4B,EAAQsC,YAAcR,GACxB1C,KAAKhB,GACGU,GAIvB,OAHAM,KAAK8H,EAAiB9I,EAAMU,EAAUkB,EAKzC,EAAA,IACGZ,KAAKuF,kBACPvF,KAAK2F,KAAkB3F,KAAK+H,OAE/B,CAKDD,CAAAA,CACE9I,EACAU,EACAkB,GAIKZ,KAAK8F,KAAoBkC,IAAIhJ,IAChCgB,KAAK8F,KAAoBtF,IAAIxB,EAAMU,QAMjCkB,EAAQqC,SAAoBjD,KAAKyF,OAAyBzG,IAC3DgB,KAAKiI,OAA2B,IAAIjD,KAAoBmB,IAAInH,EAEhE,CAKO,UAAA+I,GACN/H,KAAKuF,iBAAkB,EACvB,UAGQvF,KAAK2F,IACX,OAAO3G,GAKP4G,QAAQsC,OAAOlJ,EAChB,CACD,MAAMA,EAASgB,KAAKmI,iBAOpB,OAHc,MAAVnJ,SACIA,GAEAgB,KAAKuF,eACd,CAmBS4C,cAAAA,GAiBR,OAhBenI,KAAKoI,eAiBrB,CAYSA,aAAAA,GAIR,IAAKpI,KAAKuF,gBACR,OAGF,IAAKvF,KAAKwF,WAAY,CA2BpB,GAxBCxF,KAA4CoG,aAC3CpG,KAAK0G,mBAuBH1G,KAAKsF,KAAsB,CAG7B,IAAK,MAAOtG,EAAGU,KAAUM,KAAKsF,KAC5BtF,KAAKhB,GAAmBU,EAE1BM,KAAKsF,WACN,CAWD,MAAMtG,EAAqBgB,KAAKD,YAC7BgE,kBACH,GAAI/E,EAAkByH,KAAO,EAC3B,IAAK,MAAO/G,EAAGkB,KAAY5B,GAAA,IAEvB4B,EAAQyH,SACPrI,KAAK8F,KAAoBkC,IAAItI,SACJN,IAA1BY,KAAKN,IAELM,KAAK8H,EAAiBpI,EAAGM,KAAKN,GAAkBkB,EAIvD,CACD,IAAI5B,GAAe,EACnB,MAAMU,EAAoBM,KAAK8F,KAC/B,IACE9G,EAAegB,KAAKsI,aAAa5I,GAC7BV,GACFgB,KAAKuI,WAAW7I,GAChBM,KAAKkG,MAAeF,SAAShH,GAAMA,EAAEwJ,iBACrCxI,KAAKyI,OAAO/I,IAEZM,KAAK0I,MAEP,OAAOhJ,GAMP,MAHAV,GAAe,EAEfgB,KAAK0I,OACChJ,CACP,CAEGV,GACFgB,KAAK2I,KAAYjJ,EAEpB,CAuBS6I,UAAAA,CAAWvJ,GAA4C,CAIjE2J,IAAAA,CAAY3J,GACVgB,KAAKkG,MAAeF,SAAShH,GAAMA,EAAE4J,kBAChC5I,KAAKwF,aACRxF,KAAKwF,YAAA,EACLxF,KAAK6I,aAAa7J,IAEpBgB,KAAK8I,QAAQ9J,EAiBd,CAEO0J,IAAAA,GACN1I,KAAK8F,KAAsB,IAAItB,IAC/BxE,KAAKuF,kBACN,CAkBD,kBAAAwD,GACE,OAAO/I,KAAKgJ,mBACb,CAyBSA,iBAAAA,GACR,OAAOhJ,KAAK2F,IACb,CAUS2C,YAAAA,CAAatJ,GACrB,OAAA,CACD,CAWSyJ,MAAAA,CAAOzJ,GAIfgB,KAAKiI,OAA2BjI,KAAKiI,KAAuBjC,SAAShH,GACnEgB,KAAK4H,KAAsB5I,EAAGgB,KAAKhB,MAErCgB,KAAK0I,MACN,CAYSI,OAAAA,CAAQ9J,GAAsC,CAkB9C6J,YAAAA,CAAa7J,GAAsC,GAhgCtDiK,EAAarE,cAA6B,GA6S1CqE,EAAApC,kBAAoC,CAACqC,KAAM,QAwtBnDD,EACClH,EAA0B,sBACxB,IAAIyC,IACPyE,EACClH,EAA0B,cACxB,IAAIyC,IAGR3C,IAAkB,CAACsH,gBAAAF,KAuClBxH,EAAO2H,0BAA4B,IAAI5F,KAAK;;;;;;ACvnDvCxE,MAAAA,EAASC,WAmOT2B,EAAgB5B,EAAyC0C,aAUzDhC,EAASkB,EACXA,EAAayI,aAAa,WAAY,CACpCC,WAAatK,GAAMA,SAErBI,EA4EEF,EAAuB,QAMvBmC,EAAS,OAAOkI,KAAKC,SAASC,QAAQ,GAAGC,MAAM,MAG/C9J,EAAc,IAAMyB,EAIpBV,EAAa,IAAIf,KAEjBc,EAOAuG,SAGAtF,EAAegI,IAAMjJ,EAAEkJ,cAAc,IAIrC7I,EAAe/B,GACT,OAAVA,GAAmC,iBAATA,GAAqC,mBAATA,EAClDyC,EAAUW,MAAM2C,QAMhBhD,EAAa,cAkBbW,EAAe,sDAKfmH,EAAkB,OAIlBC,EAAmB,KAwBnBC,EAAkBC,OACtB,KAAKjI,sBAAgCA,MAAeA,uCACpD,KAOIF,EAA0B,KAC1BoI,EAA0B,KAO1BC,EAAiB,qCAyGjBtH,EACmB5D,GACvB,CAAC4B,KAAkClB,KAwB1B,CAELyK,WAAgBnL,EAChBoL,QAAAxJ,EACAyJ,OAAA3K,IAiBO4K,EAAO1H,EArJA,GA+KPqG,EAAMrG,EA9KA,GA8MN2H,EAAW5K,OAAO6K,IAAI,gBAqBtBC,EAAU9K,OAAO6K,IAAI,eAS5BE,EAAgB,IAAI7K,QAqCpB8K,EAASjK,EAAEkK,iBACflK,EACA,KAqBF,SAASoH,EACP9I,EACA4B,GAOA,IAAKa,EAAQzC,KAASA,EAAIuF,eAAe,OAiBvC,MAAUrE,MAhBI,kCAkBhB,YAAkBd,IAAXM,EACHA,EAAO4J,WAAW1I,GACjBA,CACP,CAcA,MAAMiK,EAAkBC,CACtB9L,EACA4B,KAQA,MAAMlB,EAAIV,EAAQqB,OAAS,EAIrBT,EAA2B,GACjC,IAMIc,EANAiB,EApWa,IAqWff,EAAsB,QApWJ,IAoWcA,EAAyB,SAAW,GASlEG,EAAQ2B,EAEZ,IAAK,IAAI9B,EAAI,EAAGA,EAAIlB,EAAGkB,IAAK,CAC1B,MAAMlB,EAAIV,EAAQ4B,GAMlB,IACIa,EAEAQ,EAHAF,GAAoB,EAEpBa,EAAY,EAKhB,KAAOA,EAAYlD,EAAEW,SAEnBU,EAAMgK,UAAYnI,EAClBX,EAAQlB,EAAMiK,KAAKtL,GACL,OAAVuC,IAGJW,EAAY7B,EAAMgK,UACdhK,IAAU2B,EACiB,QAAzBT,EA5bU,GA6bZlB,EAAQ8I,OAC0BzK,IAAzB6C,EA9bG,GAgcZlB,EAAQ+I,OACqB1K,IAApB6C,EAhcF,IAicHiI,EAAee,KAAKhJ,EAjcjB,MAocLvB,EAAsBsJ,OAAO,KAAK/H,EApc7B,GAocgD,MAEvDlB,EAAQgJ,QAC6B3K,IAA5B6C,EAtcM,KA6cflB,EAAQgJ,GAEDhJ,IAAUgJ,EACS,MAAxB9H,EA9aS,IAibXlB,EAAQL,GAAmBgC,EAG3BX,WAAoB3C,IACX6C,EApbI,GAsbbF,GAEAA,GAAAA,EAAmBhB,EAAMgK,UAAY9I,EAvbrB,GAub8C5B,OAC9DoB,EAAWQ,EAzbE,GA0bblB,WACEkB,EAzbO,GA0bH8H,EACsB,MAAtB9H,EA3bG,GA4bDgI,EACApI,GAGVd,IAAUkJ,GACVlJ,IAAUc,EAEVd,EAAQgJ,EACChJ,IAAU8I,GAAmB9I,IAAU+I,EAChD/I,EAAQ2B,GAIR3B,EAAQgJ,EACRrJ,OAAkBtB,GA8BtB,MAAMkL,EACJvJ,IAAUgJ,GAAe/K,EAAQ4B,EAAI,GAAGsK,WAAW,MAAQ,IAAM,GACnEvJ,GACEZ,IAAU2B,EACNhD,EAAIiB,EACJoB,GAAoB,GACjBnC,EAAU4D,KAAK/B,GAChB/B,EAAEgK,MAAM,EAAG3H,GACT7C,EACAQ,EAAEgK,MAAM3H,GACVV,EACAiJ,GACA5K,EAAI2B,IAAgC,IAAtBU,EAA0BnB,EAAI0J,EACrD,CAQD,MAAO,CAACxC,EAAwB9I,EAL9B2C,GACC3C,EAAQU,IAAM,QA3eA,IA4edkB,EAAsB,SA3eL,IA2egBA,EAAyB,UAAY,KAGnBhB,EAAU,EAKlE,MAAMuL,EAMJpL,WAAAA,EAEEqK,QAACpL,EAASmL,WAAgBzK,GAC1BiB,GAEA,IAAID,EAPNV,KAAKoL,MAAwB,GAQ3B,IAAIrK,EAAY,EACZU,EAAgB,EACpB,MAAMQ,EAAYjD,EAAQqB,OAAS,EAC7B0B,EAAQ/B,KAAKoL,OAGZ1I,EAAMmH,GAAagB,EAAgB7L,EAASU,GAKnD,GAJAM,KAAKqL,GAAKF,EAASjE,cAAcxE,EAAM/B,GACvCgK,EAAOW,YAActL,KAAKqL,GAAGE,QAxgBd,IA2gBX7L,GA1gBc,IA0gBSA,EAAwB,CACjD,MAAMV,EAAUgB,KAAKqL,GAAGE,QAAQC,WAChCxM,EAAQyM,eAAezM,EAAQ0M,WAChC,CAGD,KAAsC,QAA9BhL,EAAOiK,EAAOgB,aAAwB5J,EAAM1B,OAAS4B,GAAW,CACtE,GAAsB,IAAlBvB,EAAKkL,SAAgB,CAuBvB,GAAKlL,EAAiBmL,gBACpB,IAAK,MAAM7M,KAAS0B,EAAiBoL,oBACnC,GAAI9M,EAAK+M,SAAS7M,GAAuB,CACvC,MAAM0B,EAAWiJ,EAAUpI,KAErB/B,EADSgB,EAAiBsL,aAAahN,GACvBiN,MAAM5K,GACtBnC,EAAI,eAAe8L,KAAKpK,GAC9BmB,EAAMyB,KAAK,CACTV,KA1iBO,EA2iBPoJ,MAAOnL,EACPoL,KAAMjN,EAAE,GACRkL,QAAS1K,EACT0M,KACW,MAATlN,EAAE,GACEmN,GACS,MAATnN,EAAE,GACAoN,GACS,MAATpN,EAAE,GACAqN,GACAC,KAEX9L,EAAiBmH,gBAAgB7I,EACzBA,MAAAA,EAAKkM,WAAW7J,KACzBU,EAAMyB,KAAK,CACTV,KArjBK,EAsjBLoJ,MAAOnL,IAERL,EAAiBmH,gBAAgB7I,IAMxC,GAAIkL,EAAee,KAAMvK,EAAiB+L,SAAU,CAIlD,MAAMzN,EAAW0B,EAAiB2G,YAAa4E,MAAM5K,GAC/C3B,EAAYV,EAAQqB,OAAS,EACnC,GAAIX,EAAY,EAAG,CAChBgB,EAAiB2G,YAAczG,EAC3BA,EAAagB,YACd,GAMJ,IAAK,IAAIhB,EAAI,EAAGA,EAAIlB,EAAWkB,IAC5BF,EAAiBgM,OAAO1N,EAAQ4B,GAAIe,KAErCgJ,EAAOgB,WACP5J,EAAMyB,KAAK,CAACV,KArlBP,EAqlByBoJ,QAASnL,IAKxCL,EAAiBgM,OAAO1N,EAAQU,GAAYiC,IAC9C,CACF,CACF,MAAM,GAAsB,IAAlBjB,EAAKkL,SAEd,GADclL,EAAiBiM,OAClB/M,EACXmC,EAAMyB,KAAK,CAACV,KAhmBH,EAgmBqBoJ,MAAOnL,QAChC,CACL,IAAI/B,GAAK,EACT,WAAQA,EAAK0B,EAAiBiM,KAAKC,QAAQvL,EAAQrC,EAAI,KAGrD+C,EAAMyB,KAAK,CAACV,KAjmBH,EAimBuBoJ,MAAOnL,IAEvC/B,GAAKqC,EAAOhB,OAAS,CAExB,CAEHU,GACD,CAkCF,CAID,oBAAAmG,CAAqBlI,EAAmB4B,GACtC,MAAMlB,EAAKgB,EAAEwG,cAAc,YAE3B,OADAxH,EAAGmN,UAAY7N,EACRU,CACR,EAgBH,SAASoN,EACP9N,EACA4B,EACAlB,EAA0BV,EAC1BE,GAIA,GAAI0B,IAAU2J,EACZ,OAAO3J,EAET,IAAIS,OAAAjC,IACFF,EACKQ,EAAyBqN,OAAe7N,GACxCQ,EAA+CsN,KACtD,MAAMpN,EAA2BmB,EAAYH,QACzCxB,EAECwB,EAA2CqM,gBAyBhD,OAxBI5L,GAAkBtB,cAAgBH,IAEpCyB,GAAuD6L,gBACtB9N,IAA7BQ,EACFyB,OAAmBjC,GAEnBiC,EAAmB,IAAIzB,EAAyBZ,GAChDqC,EAAiB8L,KAAanO,EAAMU,EAAQR,SAAAE,IAE1CF,GACAQ,EAAyBqN,OAAiB,IAAI7N,GAC9CmC,EAED3B,EAAiCsN,KAAc3L,QAAAjC,IAGhDiC,IACFT,EAAQkM,EACN9N,EACAqC,EAAiB+L,KAAUpO,EAAO4B,EAA0ByJ,QAC5DhJ,EACAnC,IAGG0B,CACT,CAOA,MAAMyM,EASJtN,WAAAA,CAAYf,EAAoB4B,GAPhCZ,KAAOsN,KAA4B,GAKnCtN,KAAwBuN,UAAyBnO,EAG/CY,KAAKwN,KAAaxO,EAClBgB,KAAKyN,KAAW7M,CACjB,CAGD,cAAA8M,GACE,OAAO1N,KAAKyN,KAASC,UACtB,CAGD,QAAAC,GACE,OAAO3N,KAAKyN,KAASE,IACtB,CAID1L,CAAAA,CAAOjD,GACL,MACEqM,IAAIE,QAAC3K,GACLwK,MAAO1L,GACLM,KAAKwN,KACHtO,GAAYF,GAAS4O,eAAiBlN,GAAGmN,WAAWjN,GAAS,GACnE+J,EAAOW,YAAcpM,EAErB,IAAImC,EAAOsJ,EAAOgB,WACd/L,EAAY,EACZe,EAAY,EACZgB,EAAejC,EAAM,GAEzB,UAAwBN,IAAjBuC,GAA4B,CACjC,GAAI/B,IAAc+B,EAAauK,MAAO,CACpC,IAAItL,EAnwBO,IAowBPe,EAAamB,KACflC,EAAO,IAAIkN,GACTzM,EACAA,EAAK0M,YACL/N,KACAhB,GA1wBW,IA4wBJ2C,EAAamB,KACtBlC,EAAO,IAAIe,EAAayK,KACtB/K,EACAM,EAAawK,KACbxK,EAAayI,QACbpK,KACAhB,GA7wBS,IA+wBF2C,EAAamB,OACtBlC,EAAO,IAAIoN,GAAY3M,EAAqBrB,KAAMhB,IAEpDgB,KAAKsN,KAAQ9J,KAAK5C,GAClBe,EAAejC,IAAQiB,EACxB,CACGf,IAAc+B,GAAcuK,QAC9B7K,EAAOsJ,EAAOgB,WACd/L,IAEH,CAKD,OADA+K,EAAOW,YAAc5K,EACdxB,CACR,CAED2C,CAAAA,CAAQ7C,GACN,IAAI4B,EAAI,EACR,IAAK,MAAMlB,KAAQM,KAAKsN,UAAAlO,IAClBM,SAAAN,IAUGM,EAAuB0K,SACzB1K,EAAuBuO,KAAWjP,EAAQU,EAAuBkB,GAIlEA,GAAMlB,EAAuB0K,QAAS/J,OAAS,GAE/CX,EAAKuO,KAAWjP,EAAO4B,KAG3BA,GAEH,EA8CH,MAAMkN,GAwBJ,QAAAH,GAIE,OAAO3N,KAAKyN,MAAUE,MAAiB3N,KAAKkO,IAC7C,CAeDnO,WAAAA,CACEf,EACA4B,EACAlB,EACAR,GA/COc,KAAI8C,KA72BI,EA+2BjB9C,KAAgBmO,KAAY1D,EA+B5BzK,KAAwBuN,YAgBtBvN,KAAKoO,KAAcpP,EACnBgB,KAAKqO,KAAYzN,EACjBZ,KAAKyN,KAAW/N,EAChBM,KAAKsO,QAAUpP,EAIfc,KAAKkO,KAAgBhP,GAASmH,eAK/B,CAoBD,cAAAqH,GACE,IAAI1O,EAAwBgB,KAAKoO,KAAaV,WAC9C,MAAM9M,EAASZ,KAAKyN,KAUpB,YAAArO,IAREwB,GACyB,KAAzB5B,GAAY4M,WAKZ5M,EAAc4B,EAAwC8M,YAEjD1O,CACR,CAMD,aAAAuP,GACE,OAAOvO,KAAKoO,IACb,CAMD,WAAAI,GACE,OAAOxO,KAAKqO,IACb,CAEDJ,IAAAA,CAAWjP,EAAgB4B,EAAmCZ,MAM5DhB,EAAQ8N,EAAiB9M,KAAMhB,EAAO4B,GAClCG,EAAY/B,GAIVA,IAAUyL,GAAoB,MAATzL,GAA2B,KAAVA,GACpCgB,KAAKmO,OAAqB1D,GAS5BzK,KAAKyO,OAEPzO,KAAKmO,KAAmB1D,GACfzL,IAAUgB,KAAKmO,MAAoBnP,IAAUuL,GACtDvK,KAAK8J,EAAY9K,YAGTA,EAAqCmL,WAC/CnK,KAAKkK,EAAsBlL,QAAAI,IACjBJ,EAAe4M,SAgBzB5L,KAAKuK,EAAYvL,GAhmCHA,IAClByC,EAAQzC,IAEqC,mBAArCA,IAAgBW,OAAO+O,UA8lClBzM,CAAWjD,GACpBgB,KAAKwM,EAAgBxN,GAGrBgB,KAAK8J,EAAY9K,EAEpB,CAEO2P,CAAAA,CAAwB3P,GAC9B,OAAiBgB,KAAKoO,KAAaV,WAAakB,aAC9C5P,EACAgB,KAAKqO,KAER,CAEO9D,CAAAA,CAAYvL,GACdgB,KAAKmO,OAAqBnP,IAC5BgB,KAAKyO,OAoCLzO,KAAKmO,KAAmBnO,KAAK2O,EAAQ3P,GAExC,CAEO8K,CAAAA,CAAY9K,GAKhBgB,KAAKmO,OAAqB1D,GAC1B1J,EAAYf,KAAKmO,MAECnO,KAAKoO,KAAaL,YAcrBpB,KAAO3N,EAsBpBgB,KAAKuK,EAAY7J,EAAEmO,eAAe7P,IAUtCgB,KAAKmO,KAAmBnP,CACzB,CAEOkL,CAAAA,CACNlL,GAGA,MAAMqL,OAACzJ,EAAQuJ,WAAgBzK,GAAQV,EAKjCE,EACY,iBAATQ,EACHM,KAAK8O,KAAc9P,SACNI,IAAZM,EAAK2L,KACH3L,EAAK2L,GAAKF,EAASjE,cAClBY,EAAwBpI,EAAK2B,EAAG3B,EAAK2B,EAAE,IACvCrB,KAAKsO,UAET5O,GAEN,GAAKM,KAAKmO,MAAuCX,OAAetO,EAU7Dc,KAAKmO,KAAsCtM,EAAQjB,OAC/C,CACL,MAAM5B,EAAW,IAAIqO,EAAiBnO,EAAsBc,MACtDN,EAAWV,EAASiD,EAAOjC,KAAKsO,SAWtCtP,EAAS6C,EAAQjB,GAWjBZ,KAAKuK,EAAY7K,GACjBM,KAAKmO,KAAmBnP,CACzB,CACF,CAID8P,IAAAA,CAAc9P,GACZ,IAAI4B,EAAW8J,EAAcpK,IAAItB,EAAOoL,SAIxC,YAAAhL,IAHIwB,GACF8J,EAAclK,IAAIxB,EAAOoL,QAAUxJ,EAAW,IAAIuK,EAASnM,IAEtD4B,CACR,CAEO4L,CAAAA,CAAgBxN,GAWjByC,EAAQzB,KAAKmO,QAChBnO,KAAKmO,KAAmB,GACxBnO,KAAKyO,QAKP,MAAM7N,EAAYZ,KAAKmO,KACvB,IACIzO,EADAR,EAAY,EAGhB,IAAK,MAAMmC,KAAQrC,EACbE,IAAc0B,EAAUP,OAK1BO,EAAU4C,KACP9D,EAAW,IAAIoO,GACd9N,KAAK2O,EAAQhN,KACb3B,KAAK2O,EAAQhN,KACb3B,KACAA,KAAKsO,UAKT5O,EAAWkB,EAAU1B,GAEvBQ,EAASuO,KAAW5M,GACpBnC,IAGEA,EAAY0B,EAAUP,SAExBL,KAAKyO,KACH/O,GAAiBA,EAAS2O,KAAYN,YACtC7O,GAGF0B,EAAUP,OAASnB,EAEtB,CAaDuP,IAAAA,CACEzP,EAA+BgB,KAAKoO,KAAaL,YACjDnN,GAGA,IADAZ,KAAK+O,QAA4B,GAAA,EAAanO,GACvC5B,GAASA,IAAUgB,KAAKqO,MAAW,CACxC,MAAMzN,EAAS5B,EAAQ+O,YACjB/O,EAAoBgQ,SAC1BhQ,EAAQ4B,CACT,CACF,CAQDqO,YAAAA,CAAajQ,QAAAI,IACPY,KAAKyN,OACPzN,KAAKkO,KAAgBlP,EACrBgB,KAAK+O,OAA4B/P,GAOpC,EA2BH,MAAMwN,GA2BJ,WAAAC,GACE,OAAOzM,KAAKkP,QAAQzC,OACrB,CAGD,QAAAkB,GACE,OAAO3N,KAAKyN,KAASE,IACtB,CAED5N,WAAAA,CACEf,EACA4B,EACAlB,EACAR,EACAmC,GAxCOrB,KAAI8C,KA9zCQ,EA80CrB9C,KAAgBmO,KAA6B1D,EAM7CzK,KAAwBuN,UAAAnO,EAoBtBY,KAAKkP,QAAUlQ,EACfgB,KAAKmM,KAAOvL,EACZZ,KAAKyN,KAAWvO,EAChBc,KAAKsO,QAAUjN,EACX3B,EAAQW,OAAS,GAAoB,KAAfX,EAAQ,IAA4B,KAAfA,EAAQ,IACrDM,KAAKmO,KAAuB/L,MAAM1C,EAAQW,OAAS,GAAG8O,KAAK,IAAIpM,QAC/D/C,KAAKoK,QAAU1K,GAEfM,KAAKmO,KAAmB1D,CAK3B,CAwBDwD,IAAAA,CACEjP,EACA4B,EAAmCZ,KACnCN,EACAR,GAEA,MAAMmC,EAAUrB,KAAKoK,QAGrB,IAAIxK,GAAS,EAEb,QAAAR,IAAIiC,EAEFrC,EAAQ8N,EAAiB9M,KAAMhB,EAAO4B,EAAiB,GACvDhB,GACGmB,EAAY/B,IACZA,IAAUgB,KAAKmO,MAAoBnP,IAAUuL,EAC5C3K,IACFI,KAAKmO,KAAmBnP,OAErB,CAEL,MAAME,EAASF,EAGf,IAAI2B,EAAGD,EACP,IAHA1B,EAAQqC,EAAQ,GAGXV,EAAI,EAAGA,EAAIU,EAAQhB,OAAS,EAAGM,IAClCD,EAAIoM,EAAiB9M,KAAMd,EAAOQ,EAAciB,GAAIC,EAAiBD,GAEjED,IAAM6J,IAER7J,EAAKV,KAAKmO,KAAoCxN,IAEhDf,KACGmB,EAAYL,IAAMA,IAAOV,KAAKmO,KAAoCxN,GACjED,IAAM+J,EACRzL,EAAQyL,EACCzL,IAAUyL,IACnBzL,IAAU0B,GAAK,IAAMW,EAAQV,EAAI,IAIlCX,KAAKmO,KAAoCxN,GAAKD,CAElD,CACGd,IAAWV,GACbc,KAAKoP,EAAapQ,EAErB,CAGDoQ,CAAAA,CAAapQ,GACPA,IAAUyL,EACNzK,KAAKkP,QAAqBrH,gBAAgB7H,KAAKmM,MAoB/CnM,KAAKkP,QAAqB9H,aAC9BpH,KAAKmM,KACJnN,GAAS,GAGf,EAIH,MAAMqN,WAAqBG,GAA3BzM,WAAAA,GAAAsF,SAAAgK,WACoBrP,KAAI8C,KA99CF,CAu/CrB,CAtBUsM,CAAAA,CAAapQ,GAoBnBgB,KAAKkP,QAAgBlP,KAAKmM,MAAQnN,IAAUyL,OAAUrL,EAAYJ,CACpE,EAIH,MAAMsN,WAA6BE,GAAnCzM,WAAAA,GAAAsF,SAAAgK,WACoBrP,KAAI8C,KA1/CO,CA2gD9B,CAdUsM,CAAAA,CAAapQ,GASdgB,KAAKkP,QAAqBI,gBAC9BtP,KAAKmM,OACHnN,GAASA,IAAUyL,EAExB,EAkBH,MAAM8B,WAAkBC,GAGtBzM,WAAAA,CACEf,EACA4B,EACAlB,EACAR,EACAmC,GAEAgE,MAAMrG,EAAS4B,EAAMlB,EAASR,EAAQmC,GATtBrB,KAAI8C,KA5hDL,CA8iDhB,CAKQmL,IAAAA,CACPjP,EACA4B,EAAmCZ,MAInC,IAFAhB,EACE8N,EAAiB9M,KAAMhB,EAAa4B,EAAiB,IAAM6J,KACzCF,EAClB,OAEF,MAAM7K,EAAcM,KAAKmO,KAInBjP,EACHF,IAAgByL,GAAW/K,IAAgB+K,GAC3CzL,EAAyCuQ,UACvC7P,EAAyC6P,SAC3CvQ,EAAyCwQ,OACvC9P,EAAyC8P,MAC3CxQ,EAAyCyQ,UACvC/P,EAAyC+P,QAIxCpO,EACJrC,IAAgByL,IACf/K,IAAgB+K,GAAWvL,GAa1BA,GACFc,KAAKkP,QAAQQ,oBACX1P,KAAKmM,KACLnM,KACAN,GAGA2B,GAIFrB,KAAKkP,QAAQS,iBACX3P,KAAKmM,KACLnM,KACAhB,GAGJgB,KAAKmO,KAAmBnP,CACzB,CAED4Q,WAAAA,CAAY5Q,GAC2B,mBAA1BgB,KAAKmO,KACdnO,KAAKmO,KAAiBjK,KAAKlE,KAAKsO,SAASuB,MAAQ7P,KAAKkP,QAASlQ,GAE9DgB,KAAKmO,KAAyCyB,YAAY5Q,EAE9D,EAIH,MAAMgP,GAiBJjO,WAAAA,CACSf,EACP4B,EACAlB,GAFOM,KAAOkP,QAAPlQ,EAjBAgB,KAAI8C,KAxnDM,EAooDnB9C,KAAwBuN,YAStBvN,KAAKyN,KAAW7M,EAChBZ,KAAKsO,QAAU5O,CAChB,CAGD,QAAAiO,GACE,OAAO3N,KAAKyN,KAASE,IACtB,CAEDM,IAAAA,CAAWjP,GAQT8N,EAAiB9M,KAAMhB,EACxB,EAqBU,MAoBPoQ,GAEFpQ,EAAO8Q,uBACXV,KAAkBjE,EAAU2C,KAI3B9O,EAAO+Q,kBAAoB,IAAIvM,KAAK;;;;;;AC5hE/B,MAAO9C,WAAmB1B,EAAhCe,WAAAA,GAAAsF,SAAAgK,WAOWrP,KAAAgQ,cAA+B,CAACH,KAAM7P,MAEvCA,KAAWiQ,UAAA7Q,CA8FpB,CAzFoBsH,gBAAAA,GACjB,MAAM1H,EAAaqG,MAAMqB,mBAOzB,OADA1G,KAAKgQ,cAAcE,eAAiBlR,EAAYwM,WACzCxM,CACR,CASkByJ,MAAAA,CAAOzJ,GAIxB,MAAMU,EAAQM,KAAKmQ,SACdnQ,KAAKwF,aACRxF,KAAKgQ,cAAc3J,YAAcrG,KAAKqG,aAExChB,MAAMoD,OAAOzJ,GACbgB,KAAKiQ,KDqhEaE,EACpBnR,EACA4B,EACAlB,KAUA,MAAMR,EAAgBQ,GAASwQ,cAAgBtP,EAG/C,IAAIS,EAAmBnC,EAAkCkR,WAUzD,QAAahR,IAATiC,EAAoB,CACtB,MAAMrC,EAAUU,GAASwQ,cAAgB,KAGxChR,EAAkCkR,WAAI/O,EAAO,IAAIyM,GAChDlN,EAAUgO,aAAajN,IAAgB3C,GACvCA,SAEAU,GAAW,CAAA,EAEd,CAWD,OAVA2B,EAAK4M,KAAWjP,GAUTqC,CAAgB,ECpkEFnC,CAAOQ,EAAOM,KAAKoG,WAAYpG,KAAKgQ,cACxD,CAsBQzI,iBAAAA,GACPlC,MAAMkC,oBACNvH,KAAKiQ,MAAahB,gBACnB,CAqBQzH,oBAAAA,GACPnC,MAAMmC,uBACNxH,KAAKiQ,MAAahB,gBACnB,CASSkB,MAAAA,GACR,OAAOzQ,CACR,EApGMgB,GAAgB2P,eAAA,EA8GxB3P,GAC2B,WAAA,EAI5BzB,WAAWqR,2BAA2B,CAACC,WAAA7P,KAGvC,MAAME,GAEF3B,WAAWuR,0BCnPA,SAASC,GAAUhP,EAAGwH,GACnC,OAAY,MAALxH,GAAkB,MAALwH,EAAYyH,IAAMjP,EAAIwH,GAAI,EAAKxH,EAAIwH,EAAI,EAAIxH,GAAKwH,EAAI,EAAIyH,GAC9E,CCFe,SAASC,GAAWlP,EAAGwH,GACpC,OAAY,MAALxH,GAAkB,MAALwH,EAAYyH,IAC5BzH,EAAIxH,GAAI,EACRwH,EAAIxH,EAAI,EACRwH,GAAKxH,EAAI,EACTiP,GACN,CCHe,SAASE,GAASlO,GAC/B,IAAImO,EAAUC,EAAUC,EAiBxB,SAASC,EAAKvP,EAAG6I,EAAG2G,EAAK,EAAGC,EAAKzP,EAAEpB,QACjC,GAAI4Q,EAAKC,EAAI,CACX,GAAuB,IAAnBL,EAASvG,EAAGA,GAAU,OAAO4G,EACjC,EAAG,CACD,MAAMC,EAAOF,EAAKC,IAAQ,EACtBJ,EAASrP,EAAE0P,GAAM7G,GAAK,EAAG2G,EAAKE,EAAM,EACnCD,EAAKC,CACX,OAAQF,EAAKC,EAChB,CACA,OAAOD,CACT,CAmBA,OAvCiB,IAAbvO,EAAErC,QACJwQ,EAAWJ,GACXK,EAAWA,CAAC/O,EAAGuI,IAAMmG,GAAU/N,EAAEX,GAAIuI,GACrCyG,EAAQA,CAAChP,EAAGuI,IAAM5H,EAAEX,GAAKuI,IAEzBuG,EAAWnO,IAAM+N,IAAa/N,IAAMiO,GAAajO,EAAI0O,GACrDN,EAAWpO,EACXqO,EAAQrO,GAgCH,CAACsO,OAAMK,OALd,SAAgB5P,EAAG6I,EAAG2G,EAAK,EAAGC,EAAKzP,EAAEpB,QACnC,MAAMO,EAAIoQ,EAAKvP,EAAG6I,EAAG2G,EAAIC,EAAK,GAC9B,OAAOtQ,EAAIqQ,GAAMF,EAAMtP,EAAEb,EAAI,GAAI0J,IAAMyG,EAAMtP,EAAEb,GAAI0J,GAAK1J,EAAI,EAAIA,CAClE,EAEsB0Q,MAjBtB,SAAe7P,EAAG6I,EAAG2G,EAAK,EAAGC,EAAKzP,EAAEpB,QAClC,GAAI4Q,EAAKC,EAAI,CACX,GAAuB,IAAnBL,EAASvG,EAAGA,GAAU,OAAO4G,EACjC,EAAG,CACD,MAAMC,EAAOF,EAAKC,IAAQ,EACtBJ,EAASrP,EAAE0P,GAAM7G,IAAM,EAAG2G,EAAKE,EAAM,EACpCD,EAAKC,CACX,OAAQF,EAAKC,EAChB,CACA,OAAOD,CACT,EAQF,CAEA,SAASG,KACP,OAAO,CACT,CH6LAxQ,KAAkB,CAAC2P,WAAA7P,MAmClBzB,WAAWsS,qBAAuB,IAAI/N,KAAK,SInR5C,MACagO,GADWZ,GAASH,IACUa,MAEfV,ICPb,SAAgBtG,GAC7B,OAAa,OAANA,EAAaoG,KAAOpG,CAC7B,IDK6C+G,OEP7C,MAAMI,GAAMlI,KAAKmI,KAAK,IAClBC,GAAKpI,KAAKmI,KAAK,IACfE,GAAKrI,KAAKmI,KAAK,GAEnB,SAASG,GAASC,EAAOC,EAAMC,GAC7B,MAAMC,GAAQF,EAAOD,GAASvI,KAAK2I,IAAI,EAAGF,GACtCG,EAAQ5I,KAAK6I,MAAM7I,KAAK8I,MAAMJ,IAC9BK,EAAQL,EAAO1I,KAAKgJ,IAAI,GAAIJ,GAC5BK,EAASF,GAASb,GAAM,GAAKa,GAASX,GAAK,EAAIW,GAASV,GAAK,EAAI,EACrE,IAAIa,EAAIC,EAAIC,EAeZ,OAdIR,EAAQ,GACVQ,EAAMpJ,KAAKgJ,IAAI,IAAKJ,GAASK,EAC7BC,EAAKlJ,KAAKqJ,MAAMd,EAAQa,GACxBD,EAAKnJ,KAAKqJ,MAAMb,EAAOY,GACnBF,EAAKE,EAAMb,KAASW,EACpBC,EAAKC,EAAMZ,KAAQW,EACvBC,GAAOA,IAEPA,EAAMpJ,KAAKgJ,IAAI,GAAIJ,GAASK,EAC5BC,EAAKlJ,KAAKqJ,MAAMd,EAAQa,GACxBD,EAAKnJ,KAAKqJ,MAAMb,EAAOY,GACnBF,EAAKE,EAAMb,KAASW,EACpBC,EAAKC,EAAMZ,KAAQW,GAErBA,EAAKD,GAAM,IAAOT,GAASA,EAAQ,EAAUH,GAASC,EAAOC,EAAc,EAARC,GAChE,CAACS,EAAIC,EAAIC,EAClB,CAmBO,SAASE,GAAcf,EAAOC,EAAMC,GAEzC,OAAOH,GADOC,GAASA,EAAvBC,GAAQA,EAAsBC,GAASA,GACH,EACtC,CChDe,SAAAc,GAASxI,GACtB,OAAOA,CACT,CCAA,IAAIyI,GAAM,EACNzB,GAAQ,EACR0B,GAAS,EACThC,GAAO,EACPiC,GAAU,KAEd,SAASC,GAAW5I,GAClB,MAAO,aAAeA,EAAI,KAC5B,CAEA,SAAS6I,GAAWvQ,GAClB,MAAO,eAAiBA,EAAI,GAC9B,CAEA,SAASwQ,GAAOC,GACd,OAAOtR,IAAMsR,EAAMtR,EACrB,CAEA,SAASsP,GAAOgC,EAAOC,GAGrB,OAFAA,EAAS/J,KAAK2I,IAAI,EAAGmB,EAAME,YAAuB,EAATD,GAAc,EACnDD,EAAMT,UAASU,EAAS/J,KAAKqJ,MAAMU,IAChCvR,IAAMsR,EAAMtR,GAAKuR,CAC1B,CAEA,SAASE,KACP,OAAQxT,KAAKyT,MACf,CAEA,SAASC,GAAKC,EAAQN,GACpB,IAAIO,EAAgB,GAChBC,EAAa,KACbC,EAAa,KACbC,EAAgB,EAChBC,EAAgB,EAChBC,EAAc,EACdX,EAA2B,oBAAXY,QAA0BA,OAAOC,iBAAmB,EAAI,EAAI,GAC5E3H,EAAImH,IAAWZ,IAAOY,IAAW3C,IAAS,EAAG,EAC7C1G,EAAIqJ,IAAW3C,IAAQ2C,IAAWrC,GAAQ,IAAM,IAChD8C,EAAYT,IAAWZ,IAAOY,IAAWX,GAASE,GAAaC,GAEnE,SAASO,EAAKW,GACZ,IAAIhK,EAAuB,MAAdwJ,EAAsBR,EAAMiB,MAAQjB,EAAMiB,MAAMC,MAAMlB,EAAOO,GAAiBP,EAAMmB,SAAYX,EACzGY,EAAuB,MAAdX,EAAsBT,EAAMS,WAAaT,EAAMS,WAAWS,MAAMlB,EAAOO,GAAiBc,GAAYZ,EAC7Ga,EAAUpL,KAAK2I,IAAI6B,EAAe,GAAKE,EACvCW,EAAQvB,EAAMuB,QACdC,GAAUD,EAAM,GAAKtB,EACrBwB,GAAUF,EAAMA,EAAMvU,OAAS,GAAKiT,EACpCyB,GAAY1B,EAAME,UAAYlC,GAAS+B,IAAQC,EAAM2B,OAAQ1B,GAC7D2B,EAAYZ,EAAQY,UAAYZ,EAAQY,YAAcZ,EACtDa,EAAOD,EAAUE,UAAU,WAAWxI,KAAK,CAAC,OAC5CyI,EAAOH,EAAUE,UAAU,SAASxI,KAAKtC,EAAQgJ,GAAOgC,QACxDC,EAAWF,EAAKG,OAChBC,EAAYJ,EAAKK,QAAQ/I,OAAO,KAAKgJ,KAAK,QAAS,QACnDC,EAAOP,EAAKQ,OAAO,QACnBC,EAAOT,EAAKQ,OAAO,QAEvBV,EAAOA,EAAKY,MAAMZ,EAAKO,QAAQM,OAAO,OAAQ,SACzCL,KAAK,QAAS,UACdA,KAAK,SAAU,iBAEpBN,EAAOA,EAAKU,MAAMN,GAElBG,EAAOA,EAAKG,MAAMN,EAAU9I,OAAO,QAC9BgJ,KAAK,SAAU,gBACfA,KAAKpL,EAAI,IAAKkC,EAAIuH,IAEvB8B,EAAOA,EAAKC,MAAMN,EAAU9I,OAAO,QAC9BgJ,KAAK,OAAQ,gBACbA,KAAKpL,EAAGkC,EAAImI,GACZe,KAAK,KAAM/B,IAAWZ,GAAM,MAAQY,IAAWX,GAAS,SAAW,WAEpEqB,IAAYY,IACdC,EAAOA,EAAKc,WAAW3B,GACvBe,EAAOA,EAAKY,WAAW3B,GACvBsB,EAAOA,EAAKK,WAAW3B,GACvBwB,EAAOA,EAAKG,WAAW3B,GAEvBiB,EAAWA,EAASU,WAAW3B,GAC1BqB,KAAK,UAAWzC,IAChByC,KAAK,aAAa,SAAS3T,GAAK,OAAOkU,SAASlU,EAAIgT,EAAShT,IAAMqS,EAAUrS,EAAIuR,GAAUtT,KAAKgM,aAAa,YAAc,IAEhIwJ,EACKE,KAAK,UAAWzC,IAChByC,KAAK,aAAa,SAAS3T,GAAK,IAAIF,EAAI7B,KAAK0N,WAAW+F,OAAQ,OAAOW,GAAWvS,GAAKoU,SAASpU,EAAIA,EAAEE,IAAMF,EAAIkT,EAAShT,IAAMuR,EAAS,KAG/IgC,EAAStG,SAETkG,EACKQ,KAAK,IAAK/B,IAAW3C,IAAQ2C,IAAWrC,GAClC0C,EAAgB,IAAMxH,EAAIwH,EAAgB,IAAMa,EAAS,IAAMvB,EAAS,IAAMwB,EAAS,IAAMtI,EAAIwH,EAAgB,IAAMV,EAAS,IAAMuB,EAAS,IAAMC,EACrJd,EAAgB,IAAMa,EAAS,IAAMrI,EAAIwH,EAAgB,IAAMV,EAAS,IAAMwB,EAAS,IAAMtI,EAAIwH,EAAgB,IAAMa,EAAS,IAAMvB,EAAS,IAAMwB,GAEhKM,EACKM,KAAK,UAAW,GAChBA,KAAK,aAAa,SAAS3T,GAAK,OAAOqS,EAAUW,EAAShT,GAAKuR,EAAS,IAE7EqC,EACKD,KAAKpL,EAAI,IAAKkC,EAAIuH,GAEvB8B,EACKH,KAAKpL,EAAGkC,EAAImI,GACZkB,KAAKpB,GAEVQ,EAAUiB,OAAO1C,IACZkC,KAAK,OAAQ,QACbA,KAAK,YAAa,IAClBA,KAAK,cAAe,cACpBA,KAAK,cAAe/B,IAAWrC,GAAQ,QAAUqC,IAAW3C,GAAO,MAAQ,UAEhFiE,EACKkB,MAAK,WAAanW,KAAKyT,OAASsB,CAAU,GACjD,CA0CA,OAxCArB,EAAKL,MAAQ,SAASvJ,GACpB,OAAOuF,UAAUhP,QAAUgT,EAAQvJ,EAAG4J,GAAQL,CAC/C,EAEDK,EAAKY,MAAQ,WACX,OAAOV,EAAgBxR,MAAMgU,KAAK/G,WAAYqE,CAC/C,EAEDA,EAAKE,cAAgB,SAAS9J,GAC5B,OAAOuF,UAAUhP,QAAUuT,EAAqB,MAAL9J,EAAY,GAAK1H,MAAMgU,KAAKtM,GAAI4J,GAAQE,EAAclK,OAClG,EAEDgK,EAAKG,WAAa,SAAS/J,GACzB,OAAOuF,UAAUhP,QAAUwT,EAAkB,MAAL/J,EAAY,KAAO1H,MAAMgU,KAAKtM,GAAI4J,GAAQG,GAAcA,EAAWnK,OAC5G,EAEDgK,EAAKI,WAAa,SAAShK,GACzB,OAAOuF,UAAUhP,QAAUyT,EAAahK,EAAG4J,GAAQI,CACpD,EAEDJ,EAAK2C,SAAW,SAASvM,GACvB,OAAOuF,UAAUhP,QAAU0T,EAAgBC,GAAiBlK,EAAG4J,GAAQK,CACxE,EAEDL,EAAKK,cAAgB,SAASjK,GAC5B,OAAOuF,UAAUhP,QAAU0T,GAAiBjK,EAAG4J,GAAQK,CACxD,EAEDL,EAAKM,cAAgB,SAASlK,GAC5B,OAAOuF,UAAUhP,QAAU2T,GAAiBlK,EAAG4J,GAAQM,CACxD,EAEDN,EAAKO,YAAc,SAASnK,GAC1B,OAAOuF,UAAUhP,QAAU4T,GAAenK,EAAG4J,GAAQO,CACtD,EAEDP,EAAKJ,OAAS,SAASxJ,GACrB,OAAOuF,UAAUhP,QAAUiT,GAAUxJ,EAAG4J,GAAQJ,CACjD,EAEMI,CACT,CAcO,SAAS4C,GAASjD,GACvB,OAAOK,GAAK1C,GAAMqC,EACpB,CC7KA,IAAIkD,GAAO,CAACC,MAAOA,QAEnB,SAASC,KACP,IAAK,IAAyCzX,EAArC4B,EAAI,EAAGD,EAAI0O,UAAUhP,OAAQyJ,EAAI,CAAA,EAAOlJ,EAAID,IAAKC,EAAG,CAC3D,KAAM5B,EAAIqQ,UAAUzO,GAAK,KAAQ5B,KAAK8K,GAAM,QAAQmB,KAAKjM,GAAI,MAAM,IAAIkB,MAAM,iBAAmBlB,GAChG8K,EAAE9K,GAAK,EACT,CACA,OAAO,IAAI0X,GAAS5M,EACtB,CAEA,SAAS4M,GAAS5M,GAChB9J,KAAK8J,EAAIA,CACX,CAoDA,SAASxJ,GAAIwC,EAAMqJ,GACjB,IAAK,IAA4BpL,EAAxBH,EAAI,EAAGD,EAAImC,EAAKzC,OAAWO,EAAID,IAAKC,EAC3C,IAAKG,EAAI+B,EAAKlC,IAAIuL,OAASA,EACzB,OAAOpL,EAAEyV,KAGf,CAEA,SAAShW,GAAIsC,EAAMqJ,EAAMwK,GACvB,IAAK,IAAI/V,EAAI,EAAGD,EAAImC,EAAKzC,OAAQO,EAAID,IAAKC,EACxC,GAAIkC,EAAKlC,GAAGuL,OAASA,EAAM,CACzBrJ,EAAKlC,GAAK2V,GAAMzT,EAAOA,EAAK4G,MAAM,EAAG9I,GAAGgW,OAAO9T,EAAK4G,MAAM9I,EAAI,IAC9D,KACF,CAGF,OADgB,MAAZ+V,GAAkB7T,EAAKU,KAAK,CAAC2I,KAAMA,EAAMqK,MAAOG,IAC7C7T,CACT,CA1DA4T,GAASlX,UAAYiX,GAASjX,UAAY,CACxCO,YAAa2W,GACbG,GAAI,SAASC,EAAUH,GACrB,IAEI3X,EAd2B+X,EAY3BjN,EAAI9J,KAAK8J,EACTS,GAb2BwM,EAaOjN,GAAfgN,EAAW,IAZnBE,OAAO/K,MAAM,SAASjF,KAAI,SAAShI,GAClD,IAAImN,EAAO,GAAIvL,EAAI5B,EAAE4N,QAAQ,KAE7B,GADIhM,GAAK,IAAGuL,EAAOnN,EAAE0K,MAAM9I,EAAI,GAAI5B,EAAIA,EAAE0K,MAAM,EAAG9I,IAC9C5B,IAAM+X,EAAMxS,eAAevF,GAAI,MAAM,IAAIkB,MAAM,iBAAmBlB,GACtE,MAAO,CAAC8D,KAAM9D,EAAGmN,KAAMA,EACzB,KASMvL,GAAM,EACND,EAAI4J,EAAElK,OAGV,KAAIgP,UAAUhP,OAAS,GAAvB,CAOA,GAAgB,MAAZsW,GAAwC,mBAAbA,EAAyB,MAAM,IAAIzW,MAAM,qBAAuByW,GAC/F,OAAS/V,EAAID,GACX,GAAI3B,GAAK8X,EAAWvM,EAAE3J,IAAIkC,KAAMgH,EAAE9K,GAAKwB,GAAIsJ,EAAE9K,GAAI8X,EAAS3K,KAAMwK,QAC3D,GAAgB,MAAZA,EAAkB,IAAK3X,KAAK8K,EAAGA,EAAE9K,GAAKwB,GAAIsJ,EAAE9K,GAAI8X,EAAS3K,KAAM,MAG1E,OAAOnM,IAVP,CAFE,OAASY,EAAID,OAAQ3B,GAAK8X,EAAWvM,EAAE3J,IAAIkC,QAAU9D,EAAIsB,GAAIwJ,EAAE9K,GAAI8X,EAAS3K,OAAQ,OAAOnN,CAa9F,EACDgW,KAAM,WACJ,IAAIA,EAAO,CAAE,EAAElL,EAAI9J,KAAK8J,EACxB,IAAK,IAAI9K,KAAK8K,EAAGkL,EAAKhW,GAAK8K,EAAE9K,GAAG0K,QAChC,OAAO,IAAIgN,GAAS1B,EACrB,EACD9Q,KAAM,SAASpB,EAAMmU,GACnB,IAAKtW,EAAI0O,UAAUhP,OAAS,GAAK,EAAG,IAAK,IAAgCM,EAAG3B,EAA/BkY,EAAO,IAAI9U,MAAMzB,GAAIC,EAAI,EAASA,EAAID,IAAKC,EAAGsW,EAAKtW,GAAKyO,UAAUzO,EAAI,GACnH,IAAKZ,KAAK8J,EAAEvF,eAAezB,GAAO,MAAM,IAAI5C,MAAM,iBAAmB4C,GACrE,IAAuBlC,EAAI,EAAGD,GAAzB3B,EAAIgB,KAAK8J,EAAEhH,IAAoBzC,OAAQO,EAAID,IAAKC,EAAG5B,EAAE4B,GAAG4V,MAAMjC,MAAM0C,EAAMC,EAChF,EACD3C,MAAO,SAASzR,EAAMmU,EAAMC,GAC1B,IAAKlX,KAAK8J,EAAEvF,eAAezB,GAAO,MAAM,IAAI5C,MAAM,iBAAmB4C,GACrE,IAAK,IAAI9D,EAAIgB,KAAK8J,EAAEhH,GAAOlC,EAAI,EAAGD,EAAI3B,EAAEqB,OAAQO,EAAID,IAAKC,EAAG5B,EAAE4B,GAAG4V,MAAMjC,MAAM0C,EAAMC,EACrF,GC7DK,IAAIC,GAAQ,+BAEJC,GAAA,CACbC,IAAK,6BACLF,MAAOA,GACPG,MAAO,+BACPC,IAAK,uCACLC,MAAO,iCCLM,SAAAC,GAAStL,GACtB,IAAIuL,EAASvL,GAAQ,GAAIvL,EAAI8W,EAAO9K,QAAQ,KAE5C,OADIhM,GAAK,GAAqC,WAA/B8W,EAASvL,EAAKzC,MAAM,EAAG9I,MAAiBuL,EAAOA,EAAKzC,MAAM9I,EAAI,IACtEwW,GAAW7S,eAAemT,GAAU,CAACC,MAAOP,GAAWM,GAASE,MAAOzL,GAAQA,CACxF,CCHA,SAAS0L,GAAe1L,GACtB,OAAO,WACL,IAAIlF,EAAWjH,KAAK8X,cAChBC,EAAM/X,KAAKgY,aACf,OAAOD,IAAQZ,IAASlQ,EAASgR,gBAAgBD,eAAiBb,GAC5DlQ,EAASC,cAAciF,GACvBlF,EAASiR,gBAAgBH,EAAK5L,EACrC,CACH,CAEA,SAASgM,GAAaC,GACpB,OAAO,WACL,OAAOpY,KAAK8X,cAAcI,gBAAgBE,EAAST,MAAOS,EAASR,MACpE,CACH,CAEe,SAAAS,GAASlM,GACtB,IAAIiM,EAAWX,GAAUtL,GACzB,OAAQiM,EAASR,MACXO,GACAN,IAAgBO,EACxB,CCxBA,SAASE,KAAO,CAED,SAAAC,GAASA,GACtB,OAAmB,MAAZA,EAAmBD,GAAO,WAC/B,OAAOtY,KAAKwY,cAAcD,EAC3B,CACH,CCNA,SAASE,KACP,MAAO,EACT,CAEe,SAAAC,GAASH,GACtB,OAAmB,MAAZA,EAAmBE,GAAQ,WAChC,OAAOzY,KAAK2Y,iBAAiBJ,EAC9B,CACH,CCJA,SAASK,GAAShD,GAChB,OAAO,WACL,OCAW,SAAetL,GAC5B,OAAY,MAALA,EAAY,GAAKlI,MAAM2C,QAAQuF,GAAKA,EAAIlI,MAAMgU,KAAK9L,EAC5D,CDFWuO,CAAMjD,EAAOrB,MAAMvU,KAAMqP,WACjC,CACH,CERe,SAAAyJ,GAASP,GACtB,OAAO,WACL,OAAOvY,KAAK+Y,QAAQR,EACrB,CACH,CAEO,SAASS,GAAaT,GAC3B,OAAO,SAASU,GACd,OAAOA,EAAKF,QAAQR,EACrB,CACH,CCRA,IAAIW,GAAO9W,MAAM5C,UAAU0Z,KAQ3B,SAASC,KACP,OAAOnZ,KAAKoZ,iBACd,CCVA,IAAIlD,GAAS9T,MAAM5C,UAAU0W,OAE7B,SAASmD,KACP,OAAOjX,MAAMgU,KAAKpW,KAAKqZ,SACzB,CCNe,SAAAC,GAAS7Q,GACtB,OAAO,IAAIrG,MAAMqG,EAAOpI,OAC1B,CCKO,SAASkZ,GAAUC,EAAQC,GAChCzZ,KAAK8X,cAAgB0B,EAAO1B,cAC5B9X,KAAKgY,aAAewB,EAAOxB,aAC3BhY,KAAK0Z,MAAQ,KACb1Z,KAAK2Z,QAAUH,EACfxZ,KAAK4Z,SAAWH,CAClB,CCTA,SAASI,GAAUL,EAAQM,EAAOrE,EAAOhN,EAAQ8M,EAAM5I,GASrD,IARA,IACIsM,EADArY,EAAI,EAEJmZ,EAAcD,EAAMzZ,OACpB2Z,EAAarN,EAAKtM,OAKfO,EAAIoZ,IAAcpZ,GACnBqY,EAAOa,EAAMlZ,KACfqY,EAAKW,SAAWjN,EAAK/L,GACrB6H,EAAO7H,GAAKqY,GAEZxD,EAAM7U,GAAK,IAAI2Y,GAAUC,EAAQ7M,EAAK/L,IAK1C,KAAOA,EAAImZ,IAAenZ,GACpBqY,EAAOa,EAAMlZ,MACf2U,EAAK3U,GAAKqY,EAGhB,CAEA,SAASgB,GAAQT,EAAQM,EAAOrE,EAAOhN,EAAQ8M,EAAM5I,EAAMuN,GACzD,IAAItZ,EACAqY,EAKAkB,EAJAC,EAAiB,IAAI5V,IACrBuV,EAAcD,EAAMzZ,OACpB2Z,EAAarN,EAAKtM,OAClBga,EAAY,IAAIjY,MAAM2X,GAK1B,IAAKnZ,EAAI,EAAGA,EAAImZ,IAAenZ,GACzBqY,EAAOa,EAAMlZ,MACfyZ,EAAUzZ,GAAKuZ,EAAWD,EAAIhW,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,GAAS,GAChEM,EAAepS,IAAImS,GACrB5E,EAAK3U,GAAKqY,EAEVmB,EAAe5Z,IAAI2Z,EAAUlB,IAQnC,IAAKrY,EAAI,EAAGA,EAAIoZ,IAAcpZ,EAC5BuZ,EAAWD,EAAIhW,KAAKsV,EAAQ7M,EAAK/L,GAAIA,EAAG+L,GAAQ,IAC5CsM,EAAOmB,EAAe9Z,IAAI6Z,KAC5B1R,EAAO7H,GAAKqY,EACZA,EAAKW,SAAWjN,EAAK/L,GACrBwZ,EAAe5T,OAAO2T,IAEtB1E,EAAM7U,GAAK,IAAI2Y,GAAUC,EAAQ7M,EAAK/L,IAK1C,IAAKA,EAAI,EAAGA,EAAImZ,IAAenZ,GACxBqY,EAAOa,EAAMlZ,KAAQwZ,EAAe9Z,IAAI+Z,EAAUzZ,MAAQqY,IAC7D1D,EAAK3U,GAAKqY,EAGhB,CAEA,SAASQ,GAAMR,GACb,OAAOA,EAAKW,QACd,CA+CA,SAASU,GAAU3N,GACjB,MAAuB,iBAATA,GAAqB,WAAYA,EAC3CA,EACAvK,MAAMgU,KAAKzJ,EACjB,CC1GA,SAAS8D,GAAUhP,EAAGwH,GACpB,OAAOxH,EAAIwH,GAAI,EAAKxH,EAAIwH,EAAI,EAAIxH,GAAKwH,EAAI,EAAIyH,GAC/C,CCrBA,SAAS6J,GAAWpO,GAClB,OAAO,WACLnM,KAAK6H,gBAAgBsE,EACtB,CACH,CAEA,SAASqO,GAAapC,GACpB,OAAO,WACLpY,KAAKya,kBAAkBrC,EAAST,MAAOS,EAASR,MACjD,CACH,CAEA,SAAS8C,GAAavO,EAAMqK,GAC1B,OAAO,WACLxW,KAAKoH,aAAa+E,EAAMqK,EACzB,CACH,CAEA,SAASmE,GAAevC,EAAU5B,GAChC,OAAO,WACLxW,KAAK4a,eAAexC,EAAST,MAAOS,EAASR,MAAOpB,EACrD,CACH,CAEA,SAASqE,GAAa1O,EAAMqK,GAC1B,OAAO,WACL,IAAI3M,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WACjB,MAALxF,EAAW7J,KAAK6H,gBAAgBsE,GAC/BnM,KAAKoH,aAAa+E,EAAMtC,EAC9B,CACH,CAEA,SAASiR,GAAe1C,EAAU5B,GAChC,OAAO,WACL,IAAI3M,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WACjB,MAALxF,EAAW7J,KAAKya,kBAAkBrC,EAAST,MAAOS,EAASR,OAC1D5X,KAAK4a,eAAexC,EAAST,MAAOS,EAASR,MAAO/N,EAC1D,CACH,CCxCe,SAAAkR,GAAS9B,GACtB,OAAQA,EAAKnB,eAAiBmB,EAAKnB,cAAciD,aACzC9B,EAAKhS,UAAYgS,GAClBA,EAAK8B,WACd,CCFA,SAASC,GAAY7O,GACnB,OAAO,WACLnM,KAAKib,MAAMC,eAAe/O,EAC3B,CACH,CAEA,SAASgP,GAAchP,EAAMqK,EAAO4E,GAClC,OAAO,WACLpb,KAAKib,MAAMI,YAAYlP,EAAMqK,EAAO4E,EACrC,CACH,CAEA,SAASE,GAAcnP,EAAMqK,EAAO4E,GAClC,OAAO,WACL,IAAIvR,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WACjB,MAALxF,EAAW7J,KAAKib,MAAMC,eAAe/O,GACpCnM,KAAKib,MAAMI,YAAYlP,EAAMtC,EAAGuR,EACtC,CACH,CAWO,SAASG,GAAWtC,EAAM9M,GAC/B,OAAO8M,EAAKgC,MAAMO,iBAAiBrP,IAC5B4O,GAAY9B,GAAMwC,iBAAiBxC,EAAM,MAAMuC,iBAAiBrP,EACzE,CClCA,SAASuP,GAAevP,GACtB,OAAO,kBACEnM,KAAKmM,EACb,CACH,CAEA,SAASwP,GAAiBxP,EAAMqK,GAC9B,OAAO,WACLxW,KAAKmM,GAAQqK,CACd,CACH,CAEA,SAASoF,GAAiBzP,EAAMqK,GAC9B,OAAO,WACL,IAAI3M,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WACjB,MAALxF,SAAkB7J,KAAKmM,GACtBnM,KAAKmM,GAAQtC,CACnB,CACH,CClBA,SAASgS,GAAWC,GAClB,OAAOA,EAAO9E,OAAO/K,MAAM,QAC7B,CAEA,SAAS8P,GAAU9C,GACjB,OAAOA,EAAK8C,WAAa,IAAIC,GAAU/C,EACzC,CAEA,SAAS+C,GAAU/C,GACjBjZ,KAAKic,MAAQhD,EACbjZ,KAAKkc,OAASL,GAAW5C,EAAKjN,aAAa,UAAY,GACzD,CAsBA,SAASmQ,GAAWlD,EAAMmD,GAExB,IADA,IAAIC,EAAON,GAAU9C,GAAOrY,GAAM,EAAED,EAAIyb,EAAM/b,SACrCO,EAAID,GAAG0b,EAAKlW,IAAIiW,EAAMxb,GACjC,CAEA,SAAS0b,GAAcrD,EAAMmD,GAE3B,IADA,IAAIC,EAAON,GAAU9C,GAAOrY,GAAM,EAAED,EAAIyb,EAAM/b,SACrCO,EAAID,GAAG0b,EAAKrN,OAAOoN,EAAMxb,GACpC,CAEA,SAAS2b,GAAYH,GACnB,OAAO,WACLD,GAAWnc,KAAMoc,EAClB,CACH,CAEA,SAASI,GAAaJ,GACpB,OAAO,WACLE,GAActc,KAAMoc,EACrB,CACH,CAEA,SAASK,GAAgBL,EAAO5F,GAC9B,OAAO,YACJA,EAAMjC,MAAMvU,KAAMqP,WAAa8M,GAAaG,IAAetc,KAAMoc,EACnE,CACH,CC3DA,SAASM,KACP1c,KAAKqH,YAAc,EACrB,CAEA,SAASsV,GAAanG,GACpB,OAAO,WACLxW,KAAKqH,YAAcmP,CACpB,CACH,CAEA,SAASoG,GAAapG,GACpB,OAAO,WACL,IAAI3M,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WAC1BrP,KAAKqH,YAAmB,MAALwC,EAAY,GAAKA,CACrC,CACH,CCfA,SAASgT,KACP7c,KAAK6M,UAAY,EACnB,CAEA,SAASiQ,GAAatG,GACpB,OAAO,WACLxW,KAAK6M,UAAY2J,CAClB,CACH,CAEA,SAASuG,GAAavG,GACpB,OAAO,WACL,IAAI3M,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WAC1BrP,KAAK6M,UAAiB,MAALhD,EAAY,GAAKA,CACnC,CACH,CCfA,SAASmT,KACHhd,KAAK+N,aAAa/N,KAAK0N,WAAWpG,YAAYtH,KACpD,CCFA,SAASid,KACHjd,KAAKkd,iBAAiBld,KAAK0N,WAAWkB,aAAa5O,KAAMA,KAAK0N,WAAWlC,WAC/E,CCCA,SAAS2R,KACP,OAAO,IACT,CCLA,SAASnO,KACP,IAAIwK,EAASxZ,KAAK0N,WACd8L,GAAQA,EAAO4D,YAAYpd,KACjC,CCHA,SAASqd,KACP,IAAIC,EAAQtd,KAAKud,WAAU,GAAQ/D,EAASxZ,KAAK0N,WACjD,OAAO8L,EAASA,EAAO5K,aAAa0O,EAAOtd,KAAK+N,aAAeuP,CACjE,CAEA,SAASE,KACP,IAAIF,EAAQtd,KAAKud,WAAU,GAAO/D,EAASxZ,KAAK0N,WAChD,OAAO8L,EAASA,EAAO5K,aAAa0O,EAAOtd,KAAK+N,aAAeuP,CACjE,CCMA,SAASG,GAAS3G,GAChB,OAAO,WACL,IAAID,EAAK7W,KAAK0d,KACd,GAAK7G,EAAL,CACA,IAAK,IAAkCjX,EAA9BwP,EAAI,EAAGxO,GAAM,EAAEmJ,EAAI8M,EAAGxW,OAAW+O,EAAIrF,IAAKqF,EAC7CxP,EAAIiX,EAAGzH,GAAM0H,EAAShU,MAAQlD,EAAEkD,OAASgU,EAAShU,MAASlD,EAAEuM,OAAS2K,EAAS3K,KAGjF0K,IAAKjW,GAAKhB,EAFVI,KAAK0P,oBAAoB9P,EAAEkD,KAAMlD,EAAE+d,SAAU/d,EAAE0O,WAK7C1N,EAAGiW,EAAGxW,OAASO,SACTZ,KAAK0d,IATR,CAUV,CACH,CAEA,SAASE,GAAM9G,EAAUN,EAAOlI,GAC9B,OAAO,WACL,IAAoB1O,EAAhBiX,EAAK7W,KAAK0d,KAASC,EAhC3B,SAAyBA,GACvB,OAAO,SAASE,GACdF,EAASzZ,KAAKlE,KAAM6d,EAAO7d,KAAK4Z,SACjC,CACH,CA4BsCkE,CAAgBtH,GAClD,GAAIK,EAAI,IAAK,IAAIzH,EAAI,EAAGrF,EAAI8M,EAAGxW,OAAQ+O,EAAIrF,IAAKqF,EAC9C,IAAKxP,EAAIiX,EAAGzH,IAAItM,OAASgU,EAAShU,MAAQlD,EAAEuM,OAAS2K,EAAS3K,KAI5D,OAHAnM,KAAK0P,oBAAoB9P,EAAEkD,KAAMlD,EAAE+d,SAAU/d,EAAE0O,SAC/CtO,KAAK2P,iBAAiB/P,EAAEkD,KAAMlD,EAAE+d,SAAWA,EAAU/d,EAAE0O,QAAUA,QACjE1O,EAAE4W,MAAQA,GAIdxW,KAAK2P,iBAAiBmH,EAAShU,KAAM6a,EAAUrP,GAC/C1O,EAAI,CAACkD,KAAMgU,EAAShU,KAAMqJ,KAAM2K,EAAS3K,KAAMqK,MAAOA,EAAOmH,SAAUA,EAAUrP,QAASA,GACrFuI,EACAA,EAAGrT,KAAK5D,GADJI,KAAK0d,KAAO,CAAC9d,EAEvB,CACH,CC5CA,SAASme,GAAc9E,EAAMnW,EAAMkb,GACjC,IAAI9J,EAAS6G,GAAY9B,GACrB4E,EAAQ3J,EAAO+J,YAEE,mBAAVJ,EACTA,EAAQ,IAAIA,EAAM/a,EAAMkb,IAExBH,EAAQ3J,EAAOjN,SAASiX,YAAY,SAChCF,GAAQH,EAAMM,UAAUrb,EAAMkb,EAAOI,QAASJ,EAAOK,YAAaR,EAAMS,OAASN,EAAOM,QACvFT,EAAMM,UAAUrb,GAAM,GAAO,IAGpCmW,EAAK8E,cAAcF,EACrB,CAEA,SAASU,GAAiBzb,EAAMkb,GAC9B,OAAO,WACL,OAAOD,GAAc/d,KAAM8C,EAAMkb,EAClC,CACH,CAEA,SAASQ,GAAiB1b,EAAMkb,GAC9B,OAAO,WACL,OAAOD,GAAc/d,KAAM8C,EAAMkb,EAAOzJ,MAAMvU,KAAMqP,WACrD,CACH,ChBZAkK,GAAU/Z,UAAY,CACpBO,YAAawZ,GACbjS,YAAa,SAASmX,GAAS,OAAOze,KAAK2Z,QAAQ/K,aAAa6P,EAAOze,KAAK0Z,MAAS,EACrF9K,aAAc,SAAS6P,EAAOC,GAAQ,OAAO1e,KAAK2Z,QAAQ/K,aAAa6P,EAAOC,EAAQ,EACtFlG,cAAe,SAASD,GAAY,OAAOvY,KAAK2Z,QAAQnB,cAAcD,EAAY,EAClFI,iBAAkB,SAASJ,GAAY,OAAOvY,KAAK2Z,QAAQhB,iBAAiBJ,EAAW,GOPzFyD,GAAUxc,UAAY,CACpB2G,IAAK,SAASgG,GACJnM,KAAKkc,OAAOtP,QAAQT,GACpB,IACNnM,KAAKkc,OAAO1Y,KAAK2I,GACjBnM,KAAKic,MAAM7U,aAAa,QAASpH,KAAKkc,OAAOyC,KAAK,MAErD,EACD3P,OAAQ,SAAS7C,GACf,IAAIvL,EAAIZ,KAAKkc,OAAOtP,QAAQT,GACxBvL,GAAK,IACPZ,KAAKkc,OAAO0C,OAAOhe,EAAG,GACtBZ,KAAKic,MAAM7U,aAAa,QAASpH,KAAKkc,OAAOyC,KAAK,MAErD,EACDE,SAAU,SAAS1S,GACjB,OAAOnM,KAAKkc,OAAOtP,QAAQT,IAAS,CACtC,GUKK,IAAI2S,GAAO,CAAC,MAEZ,SAASC,GAAUC,EAAQC,GAChCjf,KAAKkf,QAAUF,EACfhf,KAAKmf,SAAWF,CAClB,CAEA,SAAShK,KACP,OAAO,IAAI8J,GAAU,CAAC,CAAC9X,SAASgR,kBAAmB6G,GACrD,CC1Ce,SAAAlJ,GAAS2C,GACtB,MAA2B,iBAAbA,EACR,IAAIwG,GAAU,CAAC,CAAC9X,SAASuR,cAAcD,KAAa,CAACtR,SAASgR,kBAC9D,IAAI8G,GAAU,CAAC,CAACxG,IAAYuG,GACpC,CD4CAC,GAAUvf,UAAYyV,GAAUzV,UAAY,CAC1CO,YAAagf,GACbnJ,OEjDa,SAASA,GACA,mBAAXA,IAAuBA,EAAS2C,GAAS3C,IAEpD,IAAK,IAAIoJ,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+e,EAAY,IAAIhd,MAAM2H,GAAIqF,EAAI,EAAGA,EAAIrF,IAAKqF,EAC3F,IAAK,IAAiF6J,EAAMoG,EAAnFvF,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAQif,EAAWF,EAAUhQ,GAAK,IAAIhN,MAAMzB,GAAmBC,EAAI,EAAGA,EAAID,IAAKC,GAC9GqY,EAAOa,EAAMlZ,MAAQye,EAAUzJ,EAAO1R,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,MAClE,aAAcb,IAAMoG,EAAQzF,SAAWX,EAAKW,UAChD0F,EAAS1e,GAAKye,GAKpB,OAAO,IAAIN,GAAUK,EAAWpf,KAAKmf,SACvC,EFqCEhK,UvB3Ca,SAASS,GACYA,EAAZ,mBAAXA,EAAgCgD,GAAShD,GACtC8C,GAAY9C,GAE1B,IAAK,IAAIoJ,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+e,EAAY,GAAIH,EAAU,GAAI7P,EAAI,EAAGA,EAAIrF,IAAKqF,EAC/F,IAAK,IAAyC6J,EAArCa,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAcO,EAAI,EAAGA,EAAID,IAAKC,GAC9DqY,EAAOa,EAAMlZ,MACfwe,EAAU5b,KAAKoS,EAAO1R,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,IACnDmF,EAAQzb,KAAKyV,IAKnB,OAAO,IAAI8F,GAAUK,EAAWH,EAClC,EuB8BEM,YpBxCa,SAASC,GACtB,OAAOxf,KAAK4V,OAAgB,MAAT4J,EAAgBrG,GAXrC,SAAmBqG,GACjB,OAAO,WACL,OAAOtG,GAAKhV,KAAKlE,KAAKqZ,SAAUmG,EACjC,CACH,CAQQC,CAA2B,mBAAVD,EAAuBA,EAAQxG,GAAawG,IACrE,EoBsCEE,enBzCa,SAASF,GACtB,OAAOxf,KAAKmV,UAAmB,MAATqK,EAAgBnG,GAPxC,SAAwBmG,GACtB,OAAO,WACL,OAAOtJ,GAAOhS,KAAKlE,KAAKqZ,SAAUmG,EACnC,CACH,CAIQG,CAAgC,mBAAVH,EAAuBA,EAAQxG,GAAawG,IAC1E,EmBuCEtJ,OGrDa,SAASsJ,GACD,mBAAVA,IAAsBA,EAAQ1G,GAAQ0G,IAEjD,IAAK,IAAIR,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+e,EAAY,IAAIhd,MAAM2H,GAAIqF,EAAI,EAAGA,EAAIrF,IAAKqF,EAC3F,IAAK,IAAuE6J,EAAnEa,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAQif,EAAWF,EAAUhQ,GAAK,GAAUxO,EAAI,EAAGA,EAAID,IAAKC,GAC3FqY,EAAOa,EAAMlZ,KAAO4e,EAAMtb,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,IAC1DwF,EAAS9b,KAAKyV,GAKpB,OAAO,IAAI8F,GAAUK,EAAWpf,KAAKmf,SACvC,EH0CExS,KhBqBa,SAAS6J,EAAO0D,GAC7B,IAAK7K,UAAUhP,OAAQ,OAAO+B,MAAMgU,KAAKpW,KAAMyZ,IAE/C,IAAImG,EAAO1F,EAAMD,GAAUJ,GACvBoF,EAAUjf,KAAKmf,SACfH,EAAShf,KAAKkf,QAEG,mBAAV1I,IAAsBA,EoBrFpB,SAASlM,GACtB,OAAO,WACL,OAAOA,CACR,CACH,CpBiF2CuV,CAASrJ,IAElD,IAAK,IAAIzM,EAAIiV,EAAO3e,OAAQoI,EAAS,IAAIrG,MAAM2H,GAAI0L,EAAQ,IAAIrT,MAAM2H,GAAIwL,EAAO,IAAInT,MAAM2H,GAAIqF,EAAI,EAAGA,EAAIrF,IAAKqF,EAAG,CAC/G,IAAIoK,EAASyF,EAAQ7P,GACjB0K,EAAQkF,EAAO5P,GACf2K,EAAcD,EAAMzZ,OACpBsM,EAAO2N,GAAU9D,EAAMtS,KAAKsV,EAAQA,GAAUA,EAAOI,SAAUxK,EAAG6P,IAClEjF,EAAarN,EAAKtM,OAClByf,EAAarK,EAAMrG,GAAK,IAAIhN,MAAM4X,GAClC+F,EAActX,EAAO2G,GAAK,IAAIhN,MAAM4X,GAGxC4F,EAAKpG,EAAQM,EAAOgG,EAAYC,EAFhBxK,EAAKnG,GAAK,IAAIhN,MAAM2X,GAEoBpN,EAAMuN,GAK9D,IAAK,IAAoB8F,EAAUtB,EAA1BuB,EAAK,EAAGxN,EAAK,EAAmBwN,EAAKjG,IAAciG,EAC1D,GAAID,EAAWF,EAAWG,GAAK,CAE7B,IADIA,GAAMxN,IAAIA,EAAKwN,EAAK,KACfvB,EAAOqB,EAAYtN,OAAUA,EAAKuH,IAC3CgG,EAAStG,MAAQgF,GAAQ,IAC3B,CAEJ,CAKA,OAHAjW,EAAS,IAAIsW,GAAUtW,EAAQwW,IACxBiB,OAASzK,EAChBhN,EAAO0X,MAAQ5K,EACR9M,CACT,EgBzDEgN,MjBvDa,WACb,OAAO,IAAIsJ,GAAU/e,KAAKkgB,QAAUlgB,KAAKkf,QAAQlY,IAAIsS,IAAStZ,KAAKmf,SACrE,EiBsDE5J,KKxDa,WACb,OAAO,IAAIwJ,GAAU/e,KAAKmgB,OAASngB,KAAKkf,QAAQlY,IAAIsS,IAAStZ,KAAKmf,SACpE,ELuDER,KM5Da,SAASyB,EAASC,EAAUC,GACzC,IAAI7K,EAAQzV,KAAKyV,QAAShN,EAASzI,KAAMuV,EAAOvV,KAAKuV,OAYrD,MAXuB,mBAAZ6K,GACT3K,EAAQ2K,EAAQ3K,MACLA,EAAQA,EAAMR,aAEzBQ,EAAQA,EAAM/I,OAAO0T,EAAU,IAEjB,MAAZC,IACF5X,EAAS4X,EAAS5X,MACNA,EAASA,EAAOwM,aAEhB,MAAVqL,EAAgB/K,EAAKvG,SAAesR,EAAO/K,GACxCE,GAAShN,EAASgN,EAAMK,MAAMrN,GAAQ4M,QAAU5M,CACzD,EN+CEqN,MO3Da,SAASzB,GAGtB,IAFA,IAAIY,EAAYZ,EAAQY,UAAYZ,EAAQY,YAAcZ,EAEjDkM,EAAUvgB,KAAKkf,QAASsB,EAAUvL,EAAUiK,QAASuB,EAAKF,EAAQlgB,OAAQqgB,EAAKF,EAAQngB,OAAQ0J,EAAIR,KAAKoX,IAAIF,EAAIC,GAAKE,EAAS,IAAIxe,MAAMqe,GAAKrR,EAAI,EAAGA,EAAIrF,IAAKqF,EACpK,IAAK,IAAmG6J,EAA/F4H,EAASN,EAAQnR,GAAI0R,EAASN,EAAQpR,GAAIzO,EAAIkgB,EAAOxgB,OAAQyV,EAAQ8K,EAAOxR,GAAK,IAAIhN,MAAMzB,GAAUC,EAAI,EAAGA,EAAID,IAAKC,GACxHqY,EAAO4H,EAAOjgB,IAAMkgB,EAAOlgB,MAC7BkV,EAAMlV,GAAKqY,GAKjB,KAAO7J,EAAIqR,IAAMrR,EACfwR,EAAOxR,GAAKmR,EAAQnR,GAGtB,OAAO,IAAI2P,GAAU6B,EAAQ5gB,KAAKmf,SACpC,EP4CElK,UAhBF,WACE,OAAOjV,IACT,EAeEqV,MQ/Da,WAEb,IAAK,IAAI2J,EAAShf,KAAKkf,QAAS9P,GAAI,EAAIrF,EAAIiV,EAAO3e,SAAU+O,EAAIrF,GAC/D,IAAK,IAA8DkP,EAA1Da,EAAQkF,EAAO5P,GAAIxO,EAAIkZ,EAAMzZ,OAAS,EAAGqe,EAAO5E,EAAMlZ,KAAYA,GAAK,IAC1EqY,EAAOa,EAAMlZ,MACX8d,GAA6C,EAArCzF,EAAK8H,wBAAwBrC,IAAWA,EAAKhR,WAAWkB,aAAaqK,EAAMyF,GACvFA,EAAOzF,GAKb,OAAOjZ,IACT,ERoDEghB,Kf9Da,SAASC,GAGtB,SAASC,EAAYzf,EAAGwH,GACtB,OAAOxH,GAAKwH,EAAIgY,EAAQxf,EAAEmY,SAAU3Q,EAAE2Q,WAAanY,GAAKwH,CAC1D,CAJKgY,IAASA,EAAUxQ,IAMxB,IAAK,IAAIuO,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ8gB,EAAa,IAAI/e,MAAM2H,GAAIqF,EAAI,EAAGA,EAAIrF,IAAKqF,EAAG,CAC/F,IAAK,IAAmF6J,EAA/Ea,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAQ+gB,EAAYD,EAAW/R,GAAK,IAAIhN,MAAMzB,GAAUC,EAAI,EAAGA,EAAID,IAAKC,GACxGqY,EAAOa,EAAMlZ,MACfwgB,EAAUxgB,GAAKqY,GAGnBmI,EAAUJ,KAAKE,EACjB,CAEA,OAAO,IAAInC,GAAUoC,EAAYnhB,KAAKmf,UAAU9J,OAClD,Ee8CEnR,KSjEa,WACb,IAAIyS,EAAWtH,UAAU,GAGzB,OAFAA,UAAU,GAAKrP,KACf2W,EAASpC,MAAM,KAAMlF,WACdrP,IACT,ET6DEqhB,MUlEa,WACb,OAAOjf,MAAMgU,KAAKpW,KACpB,EViEEiZ,KWnEa,WAEb,IAAK,IAAI+F,EAAShf,KAAKkf,QAAS9P,EAAI,EAAGrF,EAAIiV,EAAO3e,OAAQ+O,EAAIrF,IAAKqF,EACjE,IAAK,IAAI0K,EAAQkF,EAAO5P,GAAIxO,EAAI,EAAGD,EAAImZ,EAAMzZ,OAAQO,EAAID,IAAKC,EAAG,CAC/D,IAAIqY,EAAOa,EAAMlZ,GACjB,GAAIqY,EAAM,OAAOA,CACnB,CAGF,OAAO,IACT,EX0DExS,KYpEa,WACb,IAAIA,EAAO,EACX,IAAK,MAAMwS,KAAQjZ,OAAQyG,EAC3B,OAAOA,CACT,EZiEEgS,MarEa,WACb,OAAQzY,KAAKiZ,MACf,EboEE9C,KctEa,SAASQ,GAEtB,IAAK,IAAIqI,EAAShf,KAAKkf,QAAS9P,EAAI,EAAGrF,EAAIiV,EAAO3e,OAAQ+O,EAAIrF,IAAKqF,EACjE,IAAK,IAAgD6J,EAA5Ca,EAAQkF,EAAO5P,GAAIxO,EAAI,EAAGD,EAAImZ,EAAMzZ,OAAcO,EAAID,IAAKC,GAC9DqY,EAAOa,EAAMlZ,KAAI+V,EAASzS,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,GAI/D,OAAO9Z,IACT,Ed8DE0V,Kd7Ba,SAASvJ,EAAMqK,GAC5B,IAAI4B,EAAWX,GAAUtL,GAEzB,GAAIkD,UAAUhP,OAAS,EAAG,CACxB,IAAI4Y,EAAOjZ,KAAKiZ,OAChB,OAAOb,EAASR,MACVqB,EAAKqI,eAAelJ,EAAST,MAAOS,EAASR,OAC7CqB,EAAKjN,aAAaoM,EAC1B,CAEA,OAAOpY,KAAKmW,MAAe,MAATK,EACX4B,EAASR,MAAQ4C,GAAeD,GAAgC,mBAAV/D,EACtD4B,EAASR,MAAQkD,GAAiBD,GAClCzC,EAASR,MAAQ+C,GAAiBD,IAAgBtC,EAAU5B,GACrE,EcgBEyE,MZlDa,SAAS9O,EAAMqK,EAAO4E,GACnC,OAAO/L,UAAUhP,OAAS,EACpBL,KAAKmW,MAAe,MAATK,EACLwE,GAA+B,mBAAVxE,EACrB8E,GACAH,IAAehP,EAAMqK,EAAmB,MAAZ4E,EAAmB,GAAKA,IAC1DG,GAAWvb,KAAKiZ,OAAQ9M,EAChC,EY4CEoV,SXrDa,SAASpV,EAAMqK,GAC5B,OAAOnH,UAAUhP,OAAS,EACpBL,KAAKmW,MAAe,MAATK,EACPkF,GAAkC,mBAAVlF,EACxBoF,GACAD,IAAkBxP,EAAMqK,IAC5BxW,KAAKiZ,OAAO9M,EACpB,EW+CEqV,QVba,SAASrV,EAAMqK,GAC5B,IAAI4F,EAAQP,GAAW1P,EAAO,IAE9B,GAAIkD,UAAUhP,OAAS,EAAG,CAExB,IADA,IAAIgc,EAAON,GAAU/b,KAAKiZ,QAASrY,GAAM,EAAED,EAAIyb,EAAM/b,SAC5CO,EAAID,OAAQ0b,EAAKwC,SAASzC,EAAMxb,IAAK,OAAO,EACrD,OAAO,CACT,CAEA,OAAOZ,KAAKmW,MAAuB,mBAAVK,EACnBiG,GAAkBjG,EAClB+F,GACAC,IAAcJ,EAAO5F,GAC7B,EUCEX,KT1Da,SAASW,GACtB,OAAOnH,UAAUhP,OACXL,KAAKmW,KAAc,MAATK,EACNkG,IAA+B,mBAAVlG,EACrBoG,GACAD,IAAcnG,IAClBxW,KAAKiZ,OAAO5R,WACpB,ESoDEoa,KR3Da,SAASjL,GACtB,OAAOnH,UAAUhP,OACXL,KAAKmW,KAAc,MAATK,EACNqG,IAA+B,mBAAVrG,EACrBuG,GACAD,IAActG,IAClBxW,KAAKiZ,OAAOpM,SACpB,EQqDEmQ,MPzEa,WACb,OAAOhd,KAAKmW,KAAK6G,GACnB,EOwEEC,MN1Ea,WACb,OAAOjd,KAAKmW,KAAK8G,GACnB,EMyEEvQ,Oe7Ea,SAASP,GACtB,IAAIuV,EAAyB,mBAATvV,EAAsBA,EAAOkM,GAAQlM,GACzD,OAAOnM,KAAK4V,QAAO,WACjB,OAAO5V,KAAKsH,YAAYoa,EAAOnN,MAAMvU,KAAMqP,WAC7C,GACF,EfyEE0G,OLzEa,SAAS5J,EAAMwV,GAC5B,IAAID,EAAyB,mBAATvV,EAAsBA,EAAOkM,GAAQlM,GACrDyJ,EAAmB,MAAV+L,EAAiBxE,GAAiC,mBAAXwE,EAAwBA,EAASpJ,GAASoJ,GAC9F,OAAO3hB,KAAK4V,QAAO,WACjB,OAAO5V,KAAK4O,aAAa8S,EAAOnN,MAAMvU,KAAMqP,WAAYuG,EAAOrB,MAAMvU,KAAMqP,YAAc,KAC3F,GACF,EKoEEL,OJ5Ea,WACb,OAAOhP,KAAKmW,KAAKnH,GACnB,EI2EEsO,MHxEa,SAASsE,GACtB,OAAO5hB,KAAK4V,OAAOgM,EAAOpE,GAAsBH,GAClD,EGuEE5D,MgBnFa,SAASjD,GACtB,OAAOnH,UAAUhP,OACXL,KAAKuhB,SAAS,WAAY/K,GAC1BxW,KAAKiZ,OAAOW,QACpB,EhBgFE/C,GFpCa,SAASC,EAAUN,EAAOlI,GACvC,IAA+C1N,EAAyB5B,EAApE6iB,EA3CN,SAAwBA,GACtB,OAAOA,EAAU7K,OAAO/K,MAAM,SAASjF,KAAI,SAAShI,GAClD,IAAImN,EAAO,GAAIvL,EAAI5B,EAAE4N,QAAQ,KAE7B,OADIhM,GAAK,IAAGuL,EAAOnN,EAAE0K,MAAM9I,EAAI,GAAI5B,EAAIA,EAAE0K,MAAM,EAAG9I,IAC3C,CAACkC,KAAM9D,EAAGmN,KAAMA,EACzB,GACF,CAqCkB2V,CAAehL,EAAW,IAAQnW,EAAIkhB,EAAUxhB,OAEhE,KAAIgP,UAAUhP,OAAS,GAAvB,CAaA,IADAwW,EAAKL,EAAQoH,GAAQH,GAChB7c,EAAI,EAAGA,EAAID,IAAKC,EAAGZ,KAAKmW,KAAKU,EAAGgL,EAAUjhB,GAAI4V,EAAOlI,IAC1D,OAAOtO,IAJP,CATE,IAAI6W,EAAK7W,KAAKiZ,OAAOyE,KACrB,GAAI7G,EAAI,IAAK,IAA0BjX,EAAtBwP,EAAI,EAAGrF,EAAI8M,EAAGxW,OAAW+O,EAAIrF,IAAKqF,EACjD,IAAKxO,EAAI,EAAGhB,EAAIiX,EAAGzH,GAAIxO,EAAID,IAAKC,EAC9B,IAAK5B,EAAI6iB,EAAUjhB,IAAIkC,OAASlD,EAAEkD,MAAQ9D,EAAEmN,OAASvM,EAAEuM,KACrD,OAAOvM,EAAE4W,KAUnB,EEmBEC,SDxDa,SAAS3T,EAAMkb,GAC5B,OAAOhe,KAAKmW,MAAwB,mBAAX6H,EACnBQ,GACAD,IAAkBzb,EAAMkb,GAChC,ECqDE,CAACre,OAAO+O,UiBtFK,YACb,IAAK,IAAIsQ,EAAShf,KAAKkf,QAAS9P,EAAI,EAAGrF,EAAIiV,EAAO3e,OAAQ+O,EAAIrF,IAAKqF,EACjE,IAAK,IAAgD6J,EAA5Ca,EAAQkF,EAAO5P,GAAIxO,EAAI,EAAGD,EAAImZ,EAAMzZ,OAAcO,EAAID,IAAKC,GAC9DqY,EAAOa,EAAMlZ,YAAUqY,EAGjC,GCNA,IAAI8I,GAAS,EAEE,SAASnK,KACtB,OAAO,IAAIoK,EACb,CAEA,SAASA,KACPhiB,KAAK8J,EAAI,OAASiY,IAAQthB,SAAS,GACrC,CCNe,SAAAwhB,GAASpE,EAAO5E,GAG7B,GAFA4E,ECHa,SAASA,GACtB,IAAIqE,EACJ,KAAOA,EAAcrE,EAAMqE,aAAarE,EAAQqE,EAChD,OAAOrE,CACT,CDDUqE,CAAYrE,QACPze,IAAT6Z,IAAoBA,EAAO4E,EAAMsE,eACjClJ,EAAM,CACR,IAAI5B,EAAM4B,EAAKmJ,iBAAmBnJ,EAClC,GAAI5B,EAAIgL,eAAgB,CACtB,IAAIC,EAAQjL,EAAIgL,iBAGhB,OAFAC,EAAMhY,EAAIuT,EAAM0E,QAASD,EAAM1f,EAAIib,EAAM2E,QAElC,EADPF,EAAQA,EAAMG,gBAAgBxJ,EAAKyJ,eAAeC,YACpCrY,EAAGgY,EAAM1f,EACzB,CACA,GAAIqW,EAAK2J,sBAAuB,CAC9B,IAAIC,EAAO5J,EAAK2J,wBAChB,MAAO,CAAC/E,EAAM0E,QAAUM,EAAK7R,KAAOiI,EAAK6J,WAAYjF,EAAM2E,QAAUK,EAAK9P,IAAMkG,EAAK8J,UACvF,CACF,CACA,MAAO,CAAClF,EAAMmF,MAAOnF,EAAMoF,MAC7B,CDTAjB,GAAMxiB,UAAYoY,GAAMpY,UAAY,CAClCO,YAAaiiB,GACb1hB,IAAK,SAAS2Y,GAEZ,IADA,IAAIiK,EAAKljB,KAAK8J,IACLoZ,KAAMjK,SAAaA,EAAOA,EAAKvL,YAAa,OACrD,OAAOuL,EAAKiK,EACb,EACD1iB,IAAK,SAASyY,EAAMzC,GAClB,OAAOyC,EAAKjZ,KAAK8J,GAAK0M,CACvB,EACDxH,OAAQ,SAASiK,GACf,OAAOjZ,KAAK8J,KAAKmP,UAAeA,EAAKjZ,KAAK8J,EAC3C,EACDrJ,SAAU,WACR,OAAOT,KAAK8J,CACd,GGvBK,MAAMqZ,GAAa,CAAC1T,SAAS,GACvB2T,GAAoB,CAAC7T,SAAS,EAAME,SAAS,GAEnD,SAAS4T,GAAcxF,GAC5BA,EAAMyF,0BACR,CAEe,SAAAC,GAAS1F,GACtBA,EAAM2F,iBACN3F,EAAMyF,0BACR,CCZA,IAAehZ,GAAAA,GAAK,IAAMA,ECAX,SAASmZ,GAAU3gB,GAAMof,YACtCA,EAAWwB,QACXA,EAAOC,OACPA,EAAMC,WACNA,EAAUC,OACVA,EAAMvZ,EACNA,EAAC1H,EAAEA,EAACkhB,GAAEA,EAAEC,GAAEA,EAAEtN,SACZA,IAEAjV,OAAOwiB,iBAAiBhkB,KAAM,CAC5B8C,KAAM,CAAC0T,MAAO1T,EAAMuB,YAAY,EAAMD,cAAc,GACpD8d,YAAa,CAAC1L,MAAO0L,EAAa7d,YAAY,EAAMD,cAAc,GAClEsf,QAAS,CAAClN,MAAOkN,EAASrf,YAAY,EAAMD,cAAc,GAC1Duf,OAAQ,CAACnN,MAAOmN,EAAQtf,YAAY,EAAMD,cAAc,GACxDwf,WAAY,CAACpN,MAAOoN,EAAYvf,YAAY,EAAMD,cAAc,GAChEyf,OAAQ,CAACrN,MAAOqN,EAAQxf,YAAY,EAAMD,cAAc,GACxDkG,EAAG,CAACkM,MAAOlM,EAAGjG,YAAY,EAAMD,cAAc,GAC9CxB,EAAG,CAAC4T,MAAO5T,EAAGyB,YAAY,EAAMD,cAAc,GAC9C0f,GAAI,CAACtN,MAAOsN,EAAIzf,YAAY,EAAMD,cAAc,GAChD2f,GAAI,CAACvN,MAAOuN,EAAI1f,YAAY,EAAMD,cAAc,GAChD0F,EAAG,CAAC0M,MAAOC,IAEf,CCdA,SAASwN,GAAcpG,GACrB,OAAQA,EAAMqG,UAAYrG,EAAMsG,MAClC,CAEA,SAASC,KACP,OAAOpkB,KAAK0N,UACd,CAEA,SAAS2W,GAAexG,EAAO9b,GAC7B,OAAY,MAALA,EAAY,CAACuI,EAAGuT,EAAMvT,EAAG1H,EAAGib,EAAMjb,GAAKb,CAChD,CAEA,SAASuiB,KACP,OAAOC,UAAUC,gBAAmB,iBAAkBxkB,IACxD,CAEe,SAAAykB,KACb,IAOIC,EACAC,EACAC,EACAC,EAVA3O,EAAS+N,GACTa,EAAYV,GACZV,EAAUW,GACVU,EAAYT,GACZU,EAAW,CAAE,EACbC,EAAYxO,GAAS,QAAS,OAAQ,OACtCoN,EAAS,EAKTqB,EAAiB,EAErB,SAAST,EAAKxP,GACZA,EACK4B,GAAG,iBAAkBsO,GACvBjP,OAAO6O,GACLlO,GAAG,kBAAmBuO,GACtBvO,GAAG,iBAAkBwO,EAAYlC,IACjCtM,GAAG,iCAAkCyO,GACrCrK,MAAM,eAAgB,QACtBA,MAAM,8BAA+B,gBAC5C,CAEA,SAASkK,EAAYtH,EAAO9b,GAC1B,IAAI8iB,GAAgB3O,EAAOhS,KAAKlE,KAAM6d,EAAO9b,GAA7C,CACA,IAAIwjB,EAAUC,EAAYxlB,KAAM8kB,EAAU5gB,KAAKlE,KAAM6d,EAAO9b,GAAI8b,EAAO9b,EAAG,SACrEwjB,IACL3P,GAAOiI,EAAM4H,MACV5O,GAAG,iBAAkB6O,EAAYtC,IACjCvM,GAAG,eAAgB8O,EAAYvC,ICpDvB,SAASqC,GACtB,IAAI3G,EAAO2G,EAAKxe,SAASgR,gBACrBhD,EAAYW,GAAO6P,GAAM5O,GAAG,iBAAkB0M,GAASH,IACvD,kBAAmBtE,EACrB7J,EAAU4B,GAAG,mBAAoB0M,GAASH,KAE1CtE,EAAK8G,WAAa9G,EAAK7D,MAAM4K,cAC7B/G,EAAK7D,MAAM4K,cAAgB,OAE/B,CD4CIC,CAAOjI,EAAM4H,MACbpC,GAAcxF,GACd+G,GAAc,EACdF,EAAa7G,EAAM0E,QACnBoC,EAAa9G,EAAM2E,QACnB+C,EAAQ,QAAS1H,GAXgC,CAYnD,CAEA,SAAS6H,EAAW7H,GAElB,GADA0F,GAAQ1F,IACH+G,EAAa,CAChB,IAAId,EAAKjG,EAAM0E,QAAUmC,EAAYX,EAAKlG,EAAM2E,QAAUmC,EAC1DC,EAAcd,EAAKA,EAAKC,EAAKA,EAAKmB,CACpC,CACAF,EAASe,MAAM,OAAQlI,EACzB,CAEA,SAAS8H,EAAW9H,GAClBjI,GAAOiI,EAAM4H,MAAM5O,GAAG,8BAA+B,MC5DlD,SAAiB4O,EAAMO,GAC5B,IAAIlH,EAAO2G,EAAKxe,SAASgR,gBACrBhD,EAAYW,GAAO6P,GAAM5O,GAAG,iBAAkB,MAC9CmP,IACF/Q,EAAU4B,GAAG,aAAc0M,GAASH,IACpC6C,YAAW,WAAahR,EAAU4B,GAAG,aAAc,KAAQ,GAAE,IAE3D,kBAAmBiI,EACrB7J,EAAU4B,GAAG,mBAAoB,OAEjCiI,EAAK7D,MAAM4K,cAAgB/G,EAAK8G,kBACzB9G,EAAK8G,WAEhB,CDgDIM,CAAQrI,EAAM4H,KAAMb,GACpBrB,GAAQ1F,GACRmH,EAASe,MAAM,MAAOlI,EACxB,CAEA,SAASuH,EAAavH,EAAO9b,GAC3B,GAAKmU,EAAOhS,KAAKlE,KAAM6d,EAAO9b,GAA9B,CACA,IAEwBnB,EAAG2kB,EAFvBY,EAAUtI,EAAMuI,eAChBrlB,EAAI+jB,EAAU5gB,KAAKlE,KAAM6d,EAAO9b,GAChCpB,EAAIwlB,EAAQ9lB,OAEhB,IAAKO,EAAI,EAAGA,EAAID,IAAKC,GACf2kB,EAAUC,EAAYxlB,KAAMe,EAAG8c,EAAO9b,EAAGokB,EAAQvlB,GAAGgjB,WAAYuC,EAAQvlB,OAC1EyiB,GAAcxF,GACd0H,EAAQ,QAAS1H,EAAOsI,EAAQvlB,IARF,CAWpC,CAEA,SAASykB,EAAWxH,GAClB,IACwBjd,EAAG2kB,EADvBY,EAAUtI,EAAMuI,eAChBzlB,EAAIwlB,EAAQ9lB,OAEhB,IAAKO,EAAI,EAAGA,EAAID,IAAKC,GACf2kB,EAAUP,EAASmB,EAAQvlB,GAAGgjB,eAChCL,GAAQ1F,GACR0H,EAAQ,OAAQ1H,EAAOsI,EAAQvlB,IAGrC,CAEA,SAAS0kB,EAAWzH,GAClB,IACwBjd,EAAG2kB,EADvBY,EAAUtI,EAAMuI,eAChBzlB,EAAIwlB,EAAQ9lB,OAIhB,IAFIwkB,GAAawB,aAAaxB,GAC9BA,EAAcoB,YAAW,WAAapB,EAAc,IAAO,GAAE,KACxDjkB,EAAI,EAAGA,EAAID,IAAKC,GACf2kB,EAAUP,EAASmB,EAAQvlB,GAAGgjB,eAChCP,GAAcxF,GACd0H,EAAQ,MAAO1H,EAAOsI,EAAQvlB,IAGpC,CAEA,SAAS4kB,EAAYvO,EAAM6N,EAAWjH,EAAO9b,EAAG6hB,EAAY0C,GAC1D,IAC4CxC,EAAIC,EAC5CrkB,EAFA+W,EAAWwO,EAAUjQ,OACrBnT,EAAIogB,GAAQqE,GAASzI,EAAOiH,GAGhC,GAUa,OAVRplB,EAAIgkB,EAAQxf,KAAK+S,EAAM,IAAIwM,GAAU,cAAe,CACrDvB,YAAarE,EACb8F,OAAQc,EACRb,aACAC,SACAvZ,EAAGzI,EAAE,GACLe,EAAGf,EAAE,GACLiiB,GAAI,EACJC,GAAI,EACJtN,aACE1U,IAKN,OAHA+hB,EAAKpkB,EAAE4K,EAAIzI,EAAE,IAAM,EACnBkiB,EAAKrkB,EAAEkD,EAAIf,EAAE,IAAM,EAEZ,SAAS0jB,EAAQziB,EAAM+a,EAAOyI,GACnC,IAAY3lB,EAAR4lB,EAAK1kB,EACT,OAAQiB,GACN,IAAK,QAASkiB,EAASpB,GAAc2B,EAAS5kB,EAAIkjB,IAAU,MAC5D,IAAK,aAAcmB,EAASpB,KAAeC,EAC3C,IAAK,OAAQhiB,EAAIogB,GAAQqE,GAASzI,EAAOiH,GAAYnkB,EAAIkjB,EAE3DpN,EAASvS,KACPpB,EACAmU,EACA,IAAIwM,GAAU3gB,EAAM,CAClBof,YAAarE,EACb6F,QAAShkB,EACTikB,OAAQc,EACRb,aACAC,OAAQljB,EACR2J,EAAGzI,EAAE,GAAKiiB,EACVlhB,EAAGf,EAAE,GAAKkiB,EACVD,GAAIjiB,EAAE,GAAK0kB,EAAG,GACdxC,GAAIliB,EAAE,GAAK0kB,EAAG,GACd9P,aAEF1U,EAEH,CACH,CA2BA,OAzBA0iB,EAAKvO,OAAS,SAASpM,GACrB,OAAOuF,UAAUhP,QAAU6V,EAAsB,mBAANpM,EAAmBA,EAAI+V,KAAW/V,GAAI2a,GAAQvO,CAC1F,EAEDuO,EAAKK,UAAY,SAAShb,GACxB,OAAOuF,UAAUhP,QAAUykB,EAAyB,mBAANhb,EAAmBA,EAAI+V,GAAS/V,GAAI2a,GAAQK,CAC3F,EAEDL,EAAKf,QAAU,SAAS5Z,GACtB,OAAOuF,UAAUhP,QAAUqjB,EAAuB,mBAAN5Z,EAAmBA,EAAI+V,GAAS/V,GAAI2a,GAAQf,CACzF,EAEDe,EAAKM,UAAY,SAASjb,GACxB,OAAOuF,UAAUhP,QAAU0kB,EAAyB,mBAANjb,EAAmBA,EAAI+V,KAAW/V,GAAI2a,GAAQM,CAC7F,EAEDN,EAAK5N,GAAK,WACR,IAAIL,EAAQyO,EAAUpO,GAAGtC,MAAM0Q,EAAW5V,WAC1C,OAAOmH,IAAUyO,EAAYR,EAAOjO,CACrC,EAEDiO,EAAK+B,cAAgB,SAAS1c,GAC5B,OAAOuF,UAAUhP,QAAU6kB,GAAkBpb,GAAKA,GAAKA,EAAG2a,GAAQlb,KAAKmI,KAAKwT,EAC7E,EAEMT,CACT,CEjMe,SAAAgC,GAAS1mB,EAAa2mB,EAASlnB,GAC5CO,EAAYP,UAAYknB,EAAQlnB,UAAYA,EAC5CA,EAAUO,YAAcA,CAC1B,CAEO,SAAS4mB,GAAOnN,EAAQoN,GAC7B,IAAIpnB,EAAYgC,OAAOkgB,OAAOlI,EAAOha,WACrC,IAAK,IAAI0a,KAAO0M,EAAYpnB,EAAU0a,GAAO0M,EAAW1M,GACxD,OAAO1a,CACT,CCPO,SAASqnB,KAAQ,CJsBxBpD,GAAUjkB,UAAUqX,GAAK,WACvB,IAAIL,EAAQxW,KAAK8J,EAAE+M,GAAGtC,MAAMvU,KAAK8J,EAAGuF,WACpC,OAAOmH,IAAUxW,KAAK8J,EAAI9J,KAAOwW,CACnC,EIvBO,IAAIsQ,GAAS,GACTC,GAAW,EAAID,GAEtBE,GAAM,sBACNC,GAAM,oDACNC,GAAM,qDACNC,GAAQ,qBACRC,GAAe,IAAIpd,OAAO,UAAUgd,MAAOA,MAAOA,UAClDK,GAAe,IAAIrd,OAAO,UAAUkd,MAAOA,MAAOA,UAClDI,GAAgB,IAAItd,OAAO,WAAWgd,MAAOA,MAAOA,MAAOC,UAC3DM,GAAgB,IAAIvd,OAAO,WAAWkd,MAAOA,MAAOA,MAAOD,UAC3DO,GAAe,IAAIxd,OAAO,UAAUid,MAAOC,MAAOA,UAClDO,GAAgB,IAAIzd,OAAO,WAAWid,MAAOC,MAAOA,MAAOD,UAE3DS,GAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAkBf,SAASC,KACP,OAAO/wB,KAAKgxB,MAAMC,WACpB,CAUA,SAASC,KACP,OAAOlxB,KAAKgxB,MAAMG,WACpB,CAEe,SAASC,GAAM3c,GAC5B,IAAI1K,EAAGpI,EAEP,OADA8S,GAAUA,EAAS,IAAIuC,OAAO5R,eACtB2E,EAAIod,GAAMnc,KAAKyJ,KAAY9S,EAAIoI,EAAE,GAAG1J,OAAQ0J,EAAIsnB,SAAStnB,EAAE,GAAI,IAAW,IAANpI,EAAU2vB,GAAKvnB,GAC/E,IAANpI,EAAU,IAAI4vB,GAAKxnB,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,GACzG,IAANpI,EAAU6vB,GAAKznB,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAANpI,EAAU6vB,GAAMznB,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,IAAkB,GAAJA,IAAY,EAAU,GAAJA,GAAY,KAClJ,OACCA,EAAIqd,GAAapc,KAAKyJ,IAAW,IAAI8c,GAAIxnB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAIsd,GAAarc,KAAKyJ,IAAW,IAAI8c,GAAW,IAAPxnB,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIud,GAActc,KAAKyJ,IAAW+c,GAAKznB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIwd,GAAcvc,KAAKyJ,IAAW+c,GAAY,IAAPznB,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIyd,GAAaxc,KAAKyJ,IAAWgd,GAAK1nB,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAI0d,GAAczc,KAAKyJ,IAAWgd,GAAK1nB,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxE2d,GAAMnjB,eAAekQ,GAAU6c,GAAK5J,GAAMjT,IAC/B,gBAAXA,EAA2B,IAAI8c,GAAI7gB,IAAKA,IAAKA,IAAK,GAClD,IACR,CAEA,SAAS4gB,GAAK3wB,GACZ,OAAO,IAAI4wB,GAAI5wB,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,EAC1D,CAEA,SAAS6wB,GAAK9wB,EAAGuJ,EAAGhB,EAAGxH,GAErB,OADIA,GAAK,IAAGf,EAAIuJ,EAAIhB,EAAIyH,KACjB,IAAI6gB,GAAI7wB,EAAGuJ,EAAGhB,EAAGxH,EAC1B,CASO,SAASuvB,GAAItwB,EAAGuJ,EAAGhB,EAAGyoB,GAC3B,OAA4B,IAArBriB,UAAUhP,OARZ,SAAoBT,GAEzB,OADMA,aAAainB,KAAQjnB,EAAIwxB,GAAMxxB,IAChCA,EAEE,IAAI2xB,IADX3xB,EAAIA,EAAEoxB,OACWtwB,EAAGd,EAAEqK,EAAGrK,EAAEqJ,EAAGrJ,EAAE8xB,SAFjB,IAAIH,EAGrB,CAGkCI,CAAWjxB,GAAK,IAAI6wB,GAAI7wB,EAAGuJ,EAAGhB,EAAc,MAAXyoB,EAAkB,EAAIA,EACzF,CAEO,SAASH,GAAI7wB,EAAGuJ,EAAGhB,EAAGyoB,GAC3B1xB,KAAKU,GAAKA,EACVV,KAAKiK,GAAKA,EACVjK,KAAKiJ,GAAKA,EACVjJ,KAAK0xB,SAAWA,CAClB,CA8BA,SAASE,KACP,MAAO,IAAIC,GAAI7xB,KAAKU,KAAKmxB,GAAI7xB,KAAKiK,KAAK4nB,GAAI7xB,KAAKiJ,IAClD,CAMA,SAAS6oB,KACP,MAAMrwB,EAAIswB,GAAO/xB,KAAK0xB,SACtB,MAAO,GAAS,IAANjwB,EAAU,OAAS,UAAUuwB,GAAOhyB,KAAKU,OAAOsxB,GAAOhyB,KAAKiK,OAAO+nB,GAAOhyB,KAAKiJ,KAAW,IAANxH,EAAU,IAAM,KAAKA,MACrH,CAEA,SAASswB,GAAOL,GACd,OAAOO,MAAMP,GAAW,EAAInoB,KAAK2I,IAAI,EAAG3I,KAAKoX,IAAI,EAAG+Q,GACtD,CAEA,SAASM,GAAOxb,GACd,OAAOjN,KAAK2I,IAAI,EAAG3I,KAAKoX,IAAI,IAAKpX,KAAKqJ,MAAM4D,IAAU,GACxD,CAEA,SAASqb,GAAIrb,GAEX,QADAA,EAAQwb,GAAOxb,IACC,GAAK,IAAM,IAAMA,EAAM/V,SAAS,GAClD,CAEA,SAASgxB,GAAKpwB,EAAG3B,EAAGiC,EAAGF,GAIrB,OAHIA,GAAK,EAAGJ,EAAI3B,EAAIiC,EAAI+O,IACf/O,GAAK,GAAKA,GAAK,EAAGN,EAAI3B,EAAIgR,IAC1BhR,GAAK,IAAG2B,EAAIqP,KACd,IAAIwhB,GAAI7wB,EAAG3B,EAAGiC,EAAGF,EAC1B,CAEO,SAAS0wB,GAAWvyB,GACzB,GAAIA,aAAasyB,GAAK,OAAO,IAAIA,GAAItyB,EAAEyB,EAAGzB,EAAEF,EAAGE,EAAE+B,EAAG/B,EAAE8xB,SAEtD,GADM9xB,aAAainB,KAAQjnB,EAAIwxB,GAAMxxB,KAChCA,EAAG,OAAO,IAAIsyB,GACnB,GAAItyB,aAAasyB,GAAK,OAAOtyB,EAE7B,IAAIc,GADJd,EAAIA,EAAEoxB,OACItwB,EAAI,IACVuJ,EAAIrK,EAAEqK,EAAI,IACVhB,EAAIrJ,EAAEqJ,EAAI,IACV0X,EAAMpX,KAAKoX,IAAIjgB,EAAGuJ,EAAGhB,GACrBiJ,EAAM3I,KAAK2I,IAAIxR,EAAGuJ,EAAGhB,GACrB5H,EAAIqP,IACJhR,EAAIwS,EAAMyO,EACVhf,GAAKuQ,EAAMyO,GAAO,EAUtB,OATIjhB,GACa2B,EAAXX,IAAMwR,GAAUjI,EAAIhB,GAAKvJ,EAAc,GAATuK,EAAIhB,GAC7BgB,IAAMiI,GAAUjJ,EAAIvI,GAAKhB,EAAI,GAC5BgB,EAAIuJ,GAAKvK,EAAI,EACvBA,GAAKiC,EAAI,GAAMuQ,EAAMyO,EAAM,EAAIzO,EAAMyO,EACrCtf,GAAK,IAEL3B,EAAIiC,EAAI,GAAKA,EAAI,EAAI,EAAIN,EAEpB,IAAI6wB,GAAI7wB,EAAG3B,EAAGiC,EAAG/B,EAAE8xB,QAC5B,CAMA,SAASQ,GAAI7wB,EAAG3B,EAAGiC,EAAG+vB,GACpB1xB,KAAKqB,GAAKA,EACVrB,KAAKN,GAAKA,EACVM,KAAK2B,GAAKA,EACV3B,KAAK0xB,SAAWA,CAClB,CAsCA,SAASU,GAAO5b,GAEd,OADAA,GAASA,GAAS,GAAK,KACR,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAAS6b,GAAO7b,GACd,OAAOjN,KAAK2I,IAAI,EAAG3I,KAAKoX,IAAI,EAAGnK,GAAS,GAC1C,CAGA,SAAS8b,GAAQjxB,EAAGqf,EAAI6R,GACtB,OAGY,KAHJlxB,EAAI,GAAKqf,GAAM6R,EAAK7R,GAAMrf,EAAI,GAChCA,EAAI,IAAMkxB,EACVlxB,EAAI,IAAMqf,GAAM6R,EAAK7R,IAAO,IAAMrf,GAAK,GACvCqf,EACR,CAlOA+F,GAAOI,GAAOuK,GAAO,CACnBpc,IAAAA,CAAKwd,GACH,OAAOhxB,OAAOixB,OAAO,IAAIzyB,KAAKD,YAAaC,KAAMwyB,EAClD,EACDE,WAAAA,GACE,OAAO1yB,KAAKgxB,MAAM0B,aACnB,EACDb,IAAKd,GACLE,UAAWF,GACX4B,WAUF,WACE,OAAO3yB,KAAKgxB,MAAM2B,YACpB,EAXEC,UAaF,WACE,OAAOT,GAAWnyB,MAAM4yB,WAC1B,EAdEzB,UAAWD,GACXzwB,SAAUywB,KAiEZzK,GAAO8K,GAAKP,GAAKrK,GAAOE,GAAO,CAC7BE,QAAAA,CAASva,GAEP,OADAA,EAAS,MAALA,EAAYua,GAAWxd,KAAKgJ,IAAIwU,GAAUva,GACvC,IAAI+kB,GAAIvxB,KAAKU,EAAI8L,EAAGxM,KAAKiK,EAAIuC,EAAGxM,KAAKiJ,EAAIuD,EAAGxM,KAAK0xB,QACzD,EACD5K,MAAAA,CAAOta,GAEL,OADAA,EAAS,MAALA,EAAYsa,GAASvd,KAAKgJ,IAAIuU,GAAQta,GACnC,IAAI+kB,GAAIvxB,KAAKU,EAAI8L,EAAGxM,KAAKiK,EAAIuC,EAAGxM,KAAKiJ,EAAIuD,EAAGxM,KAAK0xB,QACzD,EACDV,GAAAA,GACE,OAAOhxB,IACR,EACD6yB,KAAAA,GACE,OAAO,IAAItB,GAAIS,GAAOhyB,KAAKU,GAAIsxB,GAAOhyB,KAAKiK,GAAI+nB,GAAOhyB,KAAKiJ,GAAI8oB,GAAO/xB,KAAK0xB,SAC5E,EACDgB,WAAAA,GACE,WAAgB1yB,KAAKU,GAAKV,KAAKU,EAAI,YACnBV,KAAKiK,GAAKjK,KAAKiK,EAAI,QAC3B,IAAQjK,KAAKiJ,GAAKjJ,KAAKiJ,EAAI,OAC3B,GAAKjJ,KAAK0xB,SAAW1xB,KAAK0xB,SAAW,CAC9C,EACDG,IAAKD,GACLX,UAAWW,GACXe,WASF,WACE,MAAO,IAAId,GAAI7xB,KAAKU,KAAKmxB,GAAI7xB,KAAKiK,KAAK4nB,GAAI7xB,KAAKiJ,KAAK4oB,GAA+C,KAA1CI,MAAMjyB,KAAK0xB,SAAW,EAAI1xB,KAAK0xB,WAC3F,EAVEP,UAAWW,GACXrxB,SAAUqxB,MAyEZrL,GAAOyL,IAXA,SAAa7wB,EAAG3B,EAAGiC,EAAG+vB,GAC3B,OAA4B,IAArBriB,UAAUhP,OAAe8xB,GAAW9wB,GAAK,IAAI6wB,GAAI7wB,EAAG3B,EAAGiC,EAAc,MAAX+vB,EAAkB,EAAIA,EACzF,GASiB/K,GAAOE,GAAO,CAC7BE,QAAAA,CAASva,GAEP,OADAA,EAAS,MAALA,EAAYua,GAAWxd,KAAKgJ,IAAIwU,GAAUva,GACvC,IAAI0lB,GAAIlyB,KAAKqB,EAAGrB,KAAKN,EAAGM,KAAK2B,EAAI6K,EAAGxM,KAAK0xB,QACjD,EACD5K,MAAAA,CAAOta,GAEL,OADAA,EAAS,MAALA,EAAYsa,GAASvd,KAAKgJ,IAAIuU,GAAQta,GACnC,IAAI0lB,GAAIlyB,KAAKqB,EAAGrB,KAAKN,EAAGM,KAAK2B,EAAI6K,EAAGxM,KAAK0xB,QACjD,EACDV,GAAAA,GACE,IAAI3vB,EAAIrB,KAAKqB,EAAI,IAAqB,KAAdrB,KAAKqB,EAAI,GAC7B3B,EAAIuyB,MAAM5wB,IAAM4wB,MAAMjyB,KAAKN,GAAK,EAAIM,KAAKN,EACzCiC,EAAI3B,KAAK2B,EACT4wB,EAAK5wB,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKjC,EACjCghB,EAAK,EAAI/e,EAAI4wB,EACjB,OAAO,IAAIhB,GACTe,GAAQjxB,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKqf,EAAI6R,GAC1CD,GAAQjxB,EAAGqf,EAAI6R,GACfD,GAAQjxB,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKqf,EAAI6R,GACzCvyB,KAAK0xB,QAER,EACDmB,KAAAA,GACE,OAAO,IAAIX,GAAIE,GAAOpyB,KAAKqB,GAAIgxB,GAAOryB,KAAKN,GAAI2yB,GAAOryB,KAAK2B,GAAIowB,GAAO/xB,KAAK0xB,SAC5E,EACDgB,WAAAA,GACE,OAAQ,GAAK1yB,KAAKN,GAAKM,KAAKN,GAAK,GAAKuyB,MAAMjyB,KAAKN,KACzC,GAAKM,KAAK2B,GAAK3B,KAAK2B,GAAK,GACzB,GAAK3B,KAAK0xB,SAAW1xB,KAAK0xB,SAAW,CAC9C,EACDkB,SAAAA,GACE,MAAMnxB,EAAIswB,GAAO/xB,KAAK0xB,SACtB,MAAO,GAAS,IAANjwB,EAAU,OAAS,UAAU2wB,GAAOpyB,KAAKqB,OAAwB,IAAjBgxB,GAAOryB,KAAKN,QAA+B,IAAjB2yB,GAAOryB,KAAK2B,MAAkB,IAANF,EAAU,IAAM,KAAKA,MACnI,KCzXF,IAAe6I,GAAAA,GAAK,IAAMA,ECmBnB,SAASwoB,GAAMlwB,GACpB,OAAoB,IAAZA,GAAKA,GAAWmwB,GAAU,SAAStxB,EAAGwH,GAC5C,OAAOA,EAAIxH,EAbf,SAAqBA,EAAGwH,EAAGrG,GACzB,OAAOnB,EAAI8H,KAAKgJ,IAAI9Q,EAAGmB,GAAIqG,EAAIM,KAAKgJ,IAAItJ,EAAGrG,GAAKnB,EAAGmB,EAAI,EAAIA,EAAG,SAAS5D,GACrE,OAAOuK,KAAKgJ,IAAI9Q,EAAIzC,EAAIiK,EAAGrG,EAC5B,CACH,CASmBowB,CAAYvxB,EAAGwH,EAAGrG,GAAKid,GAASoS,MAAMxwB,GAAKwH,EAAIxH,EAC/D,CACH,CAEe,SAASsxB,GAAQtxB,EAAGwH,GACjC,IAAIlH,EAAIkH,EAAIxH,EACZ,OAAOM,EAzBT,SAAgBN,EAAGM,GACjB,OAAO,SAAS/C,GACd,OAAOyC,EAAIzC,EAAI+C,CAChB,CACH,CAqBakxB,CAAOxxB,EAAGM,GAAK8d,GAASoS,MAAMxwB,GAAKwH,EAAIxH,EACpD,CCvBA,IAAAyxB,GAAe,SAAUC,EAASvwB,GAChC,IAAIwuB,EAAQ0B,GAAMlwB,GAElB,SAASouB,EAAIlf,EAAOshB,GAClB,IAAI1yB,EAAI0wB,GAAOtf,EAAQuhB,GAASvhB,IAAQpR,GAAI0yB,EAAMC,GAASD,IAAM1yB,GAC7DuJ,EAAImnB,EAAMtf,EAAM7H,EAAGmpB,EAAInpB,GACvBhB,EAAImoB,EAAMtf,EAAM7I,EAAGmqB,EAAInqB,GACvByoB,EAAUqB,GAAQjhB,EAAM4f,QAAS0B,EAAI1B,SACzC,OAAO,SAAS1yB,GAKd,OAJA8S,EAAMpR,EAAIA,EAAE1B,GACZ8S,EAAM7H,EAAIA,EAAEjL,GACZ8S,EAAM7I,EAAIA,EAAEjK,GACZ8S,EAAM4f,QAAUA,EAAQ1yB,GACjB8S,EAAQ,EAChB,CACH,CAIA,OAFAkf,EAAI8B,MAAQK,EAELnC,CACR,CApBc,CAoBZ,GCzBY,SAAAsC,GAAS7xB,EAAGwH,GACpBA,IAAGA,EAAI,IACZ,IAEIrI,EAFAD,EAAIc,EAAI8H,KAAKoX,IAAI1X,EAAE5I,OAAQoB,EAAEpB,QAAU,EACvCU,EAAIkI,EAAES,QAEV,OAAO,SAAS1K,GACd,IAAK4B,EAAI,EAAGA,EAAID,IAAKC,EAAGG,EAAEH,GAAKa,EAAEb,IAAM,EAAI5B,GAAKiK,EAAErI,GAAK5B,EACvD,OAAO+B,CACR,CACH,CCFO,SAASwyB,GAAa9xB,EAAGwH,GAC9B,IAIIrI,EAJA4yB,EAAKvqB,EAAIA,EAAE5I,OAAS,EACpBozB,EAAKhyB,EAAI8H,KAAKoX,IAAI6S,EAAI/xB,EAAEpB,QAAU,EAClCiK,EAAI,IAAIlI,MAAMqxB,GACd1yB,EAAI,IAAIqB,MAAMoxB,GAGlB,IAAK5yB,EAAI,EAAGA,EAAI6yB,IAAM7yB,EAAG0J,EAAE1J,GAAK4V,GAAM/U,EAAEb,GAAIqI,EAAErI,IAC9C,KAAOA,EAAI4yB,IAAM5yB,EAAGG,EAAEH,GAAKqI,EAAErI,GAE7B,OAAO,SAAS5B,GACd,IAAK4B,EAAI,EAAGA,EAAI6yB,IAAM7yB,EAAGG,EAAEH,GAAK0J,EAAE1J,GAAG5B,GACrC,OAAO+B,CACR,CACH,CCrBe,SAAA2yB,GAASjyB,EAAGwH,GACzB,IAAIlH,EAAI,IAAI4xB,KACZ,OAAOlyB,GAAKA,EAAGwH,GAAKA,EAAG,SAASjK,GAC9B,OAAO+C,EAAE6xB,QAAQnyB,GAAK,EAAIzC,GAAKiK,EAAIjK,GAAI+C,CACxC,CACH,CCLe,SAAA8xB,GAASpyB,EAAGwH,GACzB,OAAOxH,GAAKA,EAAGwH,GAAKA,EAAG,SAASjK,GAC9B,OAAOyC,GAAK,EAAIzC,GAAKiK,EAAIjK,CAC1B,CACH,CCFe,SAAA80B,GAASryB,EAAGwH,GACzB,IAEIuD,EAFA5L,EAAI,CAAE,EACNG,EAAI,CAAE,EAMV,IAAKyL,KAHK,OAAN/K,GAA2B,iBAANA,IAAgBA,EAAI,CAAE,GACrC,OAANwH,GAA2B,iBAANA,IAAgBA,EAAI,CAAE,GAErCA,EACJuD,KAAK/K,EACPb,EAAE4L,GAAKgK,GAAM/U,EAAE+K,GAAIvD,EAAEuD,IAErBzL,EAAEyL,GAAKvD,EAAEuD,GAIb,OAAO,SAASxN,GACd,IAAKwN,KAAK5L,EAAGG,EAAEyL,GAAK5L,EAAE4L,GAAGxN,GACzB,OAAO+B,CACR,CACH,CCpBA,IAAIgzB,GAAM,8CACNC,GAAM,IAAIhqB,OAAO+pB,GAAIE,OAAQ,KAclB,SAAAC,GAASzyB,EAAGwH,GACzB,IACIkrB,EACAC,EACAC,EAHAC,EAAKP,GAAIhpB,UAAYipB,GAAIjpB,UAAY,EAIrCnK,GAAM,EACNlB,EAAI,GACJ60B,EAAI,GAMR,IAHA9yB,GAAQ,GAAIwH,GAAQ,IAGZkrB,EAAKJ,GAAI/oB,KAAKvJ,MACd2yB,EAAKJ,GAAIhpB,KAAK/B,MACforB,EAAKD,EAAGloB,OAASooB,IACpBD,EAAKprB,EAAES,MAAM4qB,EAAID,GACb30B,EAAEkB,GAAIlB,EAAEkB,IAAMyzB,EACb30B,IAAIkB,GAAKyzB,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxB10B,EAAEkB,GAAIlB,EAAEkB,IAAMwzB,EACb10B,IAAIkB,GAAKwzB,GAEd10B,IAAIkB,GAAK,KACT2zB,EAAE/wB,KAAK,CAAC5C,EAAGA,EAAG0J,EAAG8I,GAAO+gB,EAAIC,MAE9BE,EAAKN,GAAIjpB,UAYX,OARIupB,EAAKrrB,EAAE5I,SACTg0B,EAAKprB,EAAES,MAAM4qB,GACT50B,EAAEkB,GAAIlB,EAAEkB,IAAMyzB,EACb30B,IAAIkB,GAAKyzB,GAKT30B,EAAEW,OAAS,EAAKk0B,EAAE,GA7C3B,SAAatrB,GACX,OAAO,SAASjK,GACd,OAAOiK,EAAEjK,GAAK,EACf,CACH,CA0CQw1B,CAAID,EAAE,GAAGjqB,GApDjB,SAAcrB,GACZ,OAAO,WACL,OAAOA,CACR,CACH,CAiDQmI,CAAKnI,IACJA,EAAIsrB,EAAEl0B,OAAQ,SAASrB,GACtB,IAAK,IAAWY,EAAPgB,EAAI,EAAMA,EAAIqI,IAAKrI,EAAGlB,GAAGE,EAAI20B,EAAE3zB,IAAIA,GAAKhB,EAAE0K,EAAEtL,GACrD,OAAOU,EAAEif,KAAK,GAChB,EACR,CCrDe,SAAA8V,GAAShzB,EAAGwH,GACzB,IAAkBlI,EAAd/B,SAAWiK,EACf,OAAY,MAALA,GAAmB,YAANjK,EAAkB6gB,GAAS5W,IAClC,WAANjK,EAAiBoU,GACZ,WAANpU,GAAmB+B,EAAIqwB,GAAMnoB,KAAOA,EAAIlI,EAAGiwB,IAAOlV,GAClD7S,aAAamoB,GAAQJ,GACrB/nB,aAAa0qB,KAAOD,GNLrB,SAAuBppB,GAC5B,OAAOoqB,YAAYC,OAAOrqB,MAAQA,aAAasqB,SACjD,CMIQC,CAAc5rB,GAAKqqB,GACnBlxB,MAAM2C,QAAQkE,GAAKsqB,GACE,mBAAdtqB,EAAE6rB,SAAgD,mBAAf7rB,EAAExI,UAA2BwxB,MAAMhpB,GAAK6qB,GAClF1gB,IAAQ3R,EAAGwH,EACnB,CCrBe,SAAA8rB,GAAStzB,EAAGwH,GACzB,OAAOxH,GAAKA,EAAGwH,GAAKA,EAAG,SAASjK,GAC9B,OAAOuK,KAAKqJ,MAAMnR,GAAK,EAAIzC,GAAKiK,EAAIjK,EACrC,CACH,CCJA,ICEIg2B,GDFAC,GAAU,IAAM1rB,KAAK2rB,GAEdxgB,GAAW,CACpBxB,WAAY,EACZC,WAAY,EACZgiB,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,OAAQ,GAGK,SAAAC,GAAS9zB,EAAGwH,EAAGlI,EAAGgB,EAAG7C,EAAGwD,GACrC,IAAI2yB,EAAQC,EAAQF,EAKpB,OAJIC,EAAS9rB,KAAKmI,KAAKjQ,EAAIA,EAAIwH,EAAIA,MAAIxH,GAAK4zB,EAAQpsB,GAAKosB,IACrDD,EAAQ3zB,EAAIV,EAAIkI,EAAIlH,KAAGhB,GAAKU,EAAI2zB,EAAOrzB,GAAKkH,EAAImsB,IAChDE,EAAS/rB,KAAKmI,KAAK3Q,EAAIA,EAAIgB,EAAIA,MAAIhB,GAAKu0B,EAAQvzB,GAAKuzB,EAAQF,GAASE,GACtE7zB,EAAIM,EAAIkH,EAAIlI,IAAGU,GAAKA,EAAGwH,GAAKA,EAAGmsB,GAASA,EAAOC,GAAUA,GACtD,CACLniB,WAAYhU,EACZiU,WAAYzQ,EACZyyB,OAAQ5rB,KAAKisB,MAAMvsB,EAAGxH,GAAKwzB,GAC3BG,MAAO7rB,KAAKksB,KAAKL,GAASH,GAC1BI,OAAQA,EACRC,OAAQA,EAEZ,CEtBA,SAASI,GAAqBjzB,EAAOkzB,EAASC,EAASC,GAErD,SAASC,EAAIp2B,GACX,OAAOA,EAAEW,OAASX,EAAEo2B,MAAQ,IAAM,EACpC,CAqCA,OAAO,SAASr0B,EAAGwH,GACjB,IAAIvJ,EAAI,GACJ60B,EAAI,GAOR,OANA9yB,EAAIgB,EAAMhB,GAAIwH,EAAIxG,EAAMwG,GAtC1B,SAAmB8sB,EAAIC,EAAIC,EAAIC,EAAIx2B,EAAG60B,GACpC,GAAIwB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIt1B,EAAIlB,EAAE8D,KAAK,aAAc,KAAMmyB,EAAS,KAAMC,GAClDrB,EAAE/wB,KAAK,CAAC5C,EAAGA,EAAI,EAAG0J,EAAG8I,GAAO2iB,EAAIE,IAAM,CAACr1B,EAAGA,EAAI,EAAG0J,EAAG8I,GAAO4iB,EAAIE,IACjE,MAAWD,GAAMC,IACfx2B,EAAE8D,KAAK,aAAeyyB,EAAKN,EAAUO,EAAKN,EAE9C,CAgCEO,CAAU10B,EAAEyR,WAAYzR,EAAE0R,WAAYlK,EAAEiK,WAAYjK,EAAEkK,WAAYzT,EAAG60B,GA9BvE,SAAgB9yB,EAAGwH,EAAGvJ,EAAG60B,GACnB9yB,IAAMwH,GACJxH,EAAIwH,EAAI,IAAKA,GAAK,IAAcA,EAAIxH,EAAI,MAAKA,GAAK,KACtD8yB,EAAE/wB,KAAK,CAAC5C,EAAGlB,EAAE8D,KAAKsyB,EAAIp2B,GAAK,UAAW,KAAMm2B,GAAY,EAAGvrB,EAAG8I,GAAO3R,EAAGwH,MAC/DA,GACTvJ,EAAE8D,KAAKsyB,EAAIp2B,GAAK,UAAYuJ,EAAI4sB,EAEpC,CAwBEV,CAAO1zB,EAAE0zB,OAAQlsB,EAAEksB,OAAQz1B,EAAG60B,GAtBhC,SAAe9yB,EAAGwH,EAAGvJ,EAAG60B,GAClB9yB,IAAMwH,EACRsrB,EAAE/wB,KAAK,CAAC5C,EAAGlB,EAAE8D,KAAKsyB,EAAIp2B,GAAK,SAAU,KAAMm2B,GAAY,EAAGvrB,EAAG8I,GAAO3R,EAAGwH,KAC9DA,GACTvJ,EAAE8D,KAAKsyB,EAAIp2B,GAAK,SAAWuJ,EAAI4sB,EAEnC,CAiBET,CAAM3zB,EAAE2zB,MAAOnsB,EAAEmsB,MAAO11B,EAAG60B,GAf7B,SAAewB,EAAIC,EAAIC,EAAIC,EAAIx2B,EAAG60B,GAChC,GAAIwB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIt1B,EAAIlB,EAAE8D,KAAKsyB,EAAIp2B,GAAK,SAAU,KAAM,IAAK,KAAM,KACnD60B,EAAE/wB,KAAK,CAAC5C,EAAGA,EAAI,EAAG0J,EAAG8I,GAAO2iB,EAAIE,IAAM,CAACr1B,EAAGA,EAAI,EAAG0J,EAAG8I,GAAO4iB,EAAIE,IAChE,MAAiB,IAAPD,GAAmB,IAAPC,GACrBx2B,EAAE8D,KAAKsyB,EAAIp2B,GAAK,SAAWu2B,EAAK,IAAMC,EAAK,IAE/C,CASE7iB,CAAM5R,EAAE4zB,OAAQ5zB,EAAE6zB,OAAQrsB,EAAEosB,OAAQpsB,EAAEqsB,OAAQ51B,EAAG60B,GACjD9yB,EAAIwH,EAAI,KACD,SAASjK,GAEd,IADA,IAA0BY,EAAtBgB,GAAM,EAAED,EAAI4zB,EAAEl0B,SACTO,EAAID,GAAGjB,GAAGE,EAAI20B,EAAE3zB,IAAIA,GAAKhB,EAAE0K,EAAEtL,GACtC,OAAOU,EAAEif,KAAK,GACf,CACF,CACH,CAEO,ICzDHyX,GACAC,GDwDOC,GAA0BZ,IDxD9B,SAAkBlf,GACvB,MAAMzM,EAAI,IAA0B,mBAAdwsB,UAA2BA,UAAYC,iBAAiBhgB,EAAQ,IACtF,OAAOzM,EAAE0sB,WAAa/hB,GAAW6gB,GAAUxrB,EAAEtI,EAAGsI,EAAEd,EAAGc,EAAEhJ,EAAGgJ,EAAEhI,EAAGgI,EAAE7K,EAAG6K,EAAErH,EACxE,GCqDoE,OAAQ,MAAO,QACxEg0B,GAA0BhB,IDpD9B,SAAkBlf,GACvB,OAAa,MAATA,EAAsB9B,IACrBsgB,KAASA,GAAU/tB,SAASiR,gBAAgB,6BAA8B,MAC/E8c,GAAQ5tB,aAAa,YAAaoP,IAC5BA,EAAQwe,GAAQ5gB,UAAUuiB,QAAQC,eAEjCrB,IADP/e,EAAQA,EAAMqgB,QACSp1B,EAAG+U,EAAMvN,EAAGuN,EAAMzV,EAAGyV,EAAMzU,EAAGyU,EAAMtX,EAAGsX,EAAM9T,GAFLgS,GAGjE,GC6CoE,KAAM,IAAK,KC9D3EoiB,GAAQ,EACRC,GAAU,EACVC,GAAW,EACXC,GAAY,IAGZC,GAAY,EACZC,GAAW,EACXC,GAAY,EACZC,GAA+B,iBAAhBC,aAA4BA,YAAYC,IAAMD,YAAc3D,KAC3E6D,GAA6B,iBAAXtjB,QAAuBA,OAAOujB,sBAAwBvjB,OAAOujB,sBAAsB7X,KAAK1L,QAAU,SAASxR,GAAKujB,WAAWvjB,EAAG,GAAM,EAEnJ,SAAS60B,KACd,OAAOJ,KAAaK,GAASE,IAAWP,GAAWE,GAAME,MAAQH,GACnE,CAEA,SAASM,KACPP,GAAW,CACb,CAEO,SAASQ,KACd33B,KAAK43B,MACL53B,KAAK63B,MACL73B,KAAK0Z,MAAQ,IACf,CAyBO,SAASoe,GAAMnhB,EAAUohB,EAAOC,GACrC,IAAIh5B,EAAI,IAAI24B,GAEZ,OADA34B,EAAEi5B,QAAQthB,EAAUohB,EAAOC,GACpBh5B,CACT,CAaA,SAASk5B,KACPf,IAAYD,GAAYG,GAAME,OAASH,GACvCN,GAAQC,GAAU,EAClB,KAdK,WACLQ,OACET,GAEF,IADA,IAAkB53B,EAAdF,EAAIo3B,GACDp3B,IACAE,EAAIi4B,GAAWn4B,EAAE64B,QAAU,GAAG74B,EAAE44B,MAAM1zB,UAAK9E,EAAWF,GAC3DF,EAAIA,EAAE0a,QAENod,EACJ,CAMIqB,EACF,CAAU,QACRrB,GAAQ,EAWZ,WACE,IAAIsB,EAAmBC,EAAfC,EAAKlC,GAAc4B,EAAOO,IAClC,KAAOD,GACDA,EAAGV,OACDI,EAAOM,EAAGT,QAAOG,EAAOM,EAAGT,OAC/BO,EAAKE,EAAIA,EAAKA,EAAG5e,QAEjB2e,EAAKC,EAAG5e,MAAO4e,EAAG5e,MAAQ,KAC1B4e,EAAKF,EAAKA,EAAG1e,MAAQ2e,EAAKjC,GAAWiC,GAGzChC,GAAW+B,EACXI,GAAMR,EACR,CAvBIS,GACAtB,GAAW,CACb,CACF,CAEA,SAASuB,KACP,IAAInB,EAAMF,GAAME,MAAOQ,EAAQR,EAAML,GACjCa,EAAQd,KAAWG,IAAaW,EAAOb,GAAYK,EACzD,CAiBA,SAASiB,GAAMR,GACTlB,KACAC,KAASA,GAAU1Q,aAAa0Q,KACxBiB,EAAOb,GACP,IACNa,EAAOO,MAAUxB,GAAU9Q,WAAWiS,GAAMF,EAAOX,GAAME,MAAQH,KACjEJ,KAAUA,GAAW2B,cAAc3B,OAElCA,KAAUE,GAAYG,GAAME,MAAOP,GAAW4B,YAAYF,GAAMzB,KACrEH,GAAQ,EAAGU,GAASU,KAExB,CC3Ge,SAAAnB,GAASpgB,EAAUohB,EAAOC,GACvC,IAAIh5B,EAAI,IAAI24B,GAMZ,OALAI,EAAiB,MAATA,EAAgB,GAAKA,EAC7B/4B,EAAEi5B,SAAQY,IACR75B,EAAE+S,OACF4E,EAASkiB,EAAUd,EAAM,GACxBA,EAAOC,GACHh5B,CACT,CDgBA24B,GAAMn4B,UAAYs4B,GAAMt4B,UAAY,CAClCO,YAAa43B,GACbM,QAAS,SAASthB,EAAUohB,EAAOC,GACjC,GAAwB,mBAAbrhB,EAAyB,MAAM,IAAImiB,UAAU,8BACxDd,GAAgB,MAARA,EAAeT,MAASS,IAAkB,MAATD,EAAgB,GAAKA,GACzD/3B,KAAK0Z,OAAS2c,KAAar2B,OAC1Bq2B,GAAUA,GAAS3c,MAAQ1Z,KAC1Bo2B,GAAWp2B,KAChBq2B,GAAWr2B,MAEbA,KAAK43B,MAAQjhB,EACb3W,KAAK63B,MAAQG,EACbQ,IACD,EACDzmB,KAAM,WACA/R,KAAK43B,QACP53B,KAAK43B,MAAQ,KACb53B,KAAK63B,MAAQU,IACbC,KAEJ,GE3CF,IAAIO,GAAUtiB,GAAS,QAAS,MAAO,SAAU,aAC7CuiB,GAAa,GAENC,GAAU,EACVC,GAAY,EACZC,GAAW,EACXC,GAAU,EACVC,GAAU,EACVC,GAAS,EACTC,GAAQ,EAEJ,SAAAC,GAASvgB,EAAM9M,EAAM+W,EAAIhX,EAAO4N,EAAO2f,GACpD,IAAIC,EAAYzgB,EAAK0gB,aACrB,GAAKD,GACA,GAAIxW,KAAMwW,EAAW,YADVzgB,EAAK0gB,aAAe,CAAA,GAmCtC,SAAgB1gB,EAAMiK,EAAI0W,GACxB,IACIC,EADAH,EAAYzgB,EAAK0gB,aAQrB,SAASH,EAASX,GAChBe,EAAK91B,MAAQo1B,GACbU,EAAK9B,MAAMG,QAAQnmB,EAAO8nB,EAAK7B,MAAO6B,EAAK5B,MAGvC4B,EAAK7B,OAASc,GAAS/mB,EAAM+mB,EAAUe,EAAK7B,MAClD,CAEA,SAASjmB,EAAM+mB,GACb,IAAIj4B,EAAGwO,EAAGzO,EAAGf,EAGb,GAAIg6B,EAAK91B,QAAUo1B,GAAW,OAAOnnB,IAErC,IAAKnR,KAAK84B,EAER,IADA95B,EAAI85B,EAAU94B,IACRuL,OAASytB,EAAKztB,KAApB,CAKA,GAAIvM,EAAEkE,QAAUs1B,GAAS,OAAOrC,GAAQjlB,GAGpClS,EAAEkE,QAAUu1B,IACdz5B,EAAEkE,MAAQy1B,GACV35B,EAAEk4B,MAAM/lB,OACRnS,EAAEiX,GAAG3S,KAAK,YAAa+U,EAAMA,EAAKW,SAAUha,EAAEsM,MAAOtM,EAAEka,cAChD4f,EAAU94B,KAITA,EAAIsiB,IACZtjB,EAAEkE,MAAQy1B,GACV35B,EAAEk4B,MAAM/lB,OACRnS,EAAEiX,GAAG3S,KAAK,SAAU+U,EAAMA,EAAKW,SAAUha,EAAEsM,MAAOtM,EAAEka,cAC7C4f,EAAU94B,GApBO,CAwC5B,GAZAm2B,IAAQ,WACF6C,EAAK91B,QAAUs1B,KACjBQ,EAAK91B,MAAQu1B,GACbO,EAAK9B,MAAMG,QAAQ7iB,EAAMwkB,EAAK7B,MAAO6B,EAAK5B,MAC1C5iB,EAAKyjB,GAET,IAIAe,EAAK91B,MAAQq1B,GACbS,EAAK/iB,GAAG3S,KAAK,QAAS+U,EAAMA,EAAKW,SAAUggB,EAAK1tB,MAAO0tB,EAAK9f,OACxD8f,EAAK91B,QAAUq1B,GAAnB,CAKA,IAJAS,EAAK91B,MAAQs1B,GAGbS,EAAQ,IAAIz3B,MAAMzB,EAAIi5B,EAAKC,MAAMx5B,QAC5BO,EAAI,EAAGwO,GAAM,EAAExO,EAAID,IAAKC,GACvBhB,EAAIg6B,EAAKC,MAAMj5B,GAAG4V,MAAMtS,KAAK+U,EAAMA,EAAKW,SAAUggB,EAAK1tB,MAAO0tB,EAAK9f,UACrE+f,IAAQzqB,GAAKxP,GAGjBi6B,EAAMx5B,OAAS+O,EAAI,CAViB,CAWtC,CAEA,SAASgG,EAAKyjB,GAKZ,IAJA,IAAI75B,EAAI65B,EAAUe,EAAKE,SAAWF,EAAKG,KAAK71B,KAAK,KAAM20B,EAAUe,EAAKE,WAAaF,EAAK9B,MAAMG,QAAQlmB,GAAO6nB,EAAK91B,MAAQw1B,GAAQ,GAC9H14B,GAAM,EACND,EAAIk5B,EAAMx5B,SAELO,EAAID,GACXk5B,EAAMj5B,GAAGsD,KAAK+U,EAAMja,GAIlB46B,EAAK91B,QAAUw1B,KACjBM,EAAK/iB,GAAG3S,KAAK,MAAO+U,EAAMA,EAAKW,SAAUggB,EAAK1tB,MAAO0tB,EAAK9f,OAC1D/H,IAEJ,CAEA,SAASA,IAIP,IAAK,IAAInR,KAHTg5B,EAAK91B,MAAQy1B,GACbK,EAAK9B,MAAM/lB,cACJ2nB,EAAUxW,GACHwW,EAAW,cAClBzgB,EAAK0gB,YACd,CA9FAD,EAAUxW,GAAM0W,EAChBA,EAAK9B,MAAQA,GAAM0B,EAAU,EAAGI,EAAK5B,KA8FvC,CAtIEtW,CAAOzI,EAAMiK,EAAI,CACf/W,KAAMA,EACND,MAAOA,EACP4N,MAAOA,EACPjD,GAAIkiB,GACJc,MAAOb,GACPhB,KAAMyB,EAAOzB,KACbD,MAAO0B,EAAO1B,MACd+B,SAAUL,EAAOK,SACjBC,KAAMN,EAAOM,KACbjC,MAAO,KACPh0B,MAAOm1B,IAEX,CAEO,SAASe,GAAK/gB,EAAMiK,GACzB,IAAIsW,EAAWl5B,GAAI2Y,EAAMiK,GACzB,GAAIsW,EAAS11B,MAAQm1B,GAAS,MAAM,IAAI/4B,MAAM,+BAC9C,OAAOs5B,CACT,CAEO,SAASh5B,GAAIyY,EAAMiK,GACxB,IAAIsW,EAAWl5B,GAAI2Y,EAAMiK,GACzB,GAAIsW,EAAS11B,MAAQs1B,GAAS,MAAM,IAAIl5B,MAAM,6BAC9C,OAAOs5B,CACT,CAEO,SAASl5B,GAAI2Y,EAAMiK,GACxB,IAAIsW,EAAWvgB,EAAK0gB,aACpB,IAAKH,KAAcA,EAAWA,EAAStW,IAAM,MAAM,IAAIhjB,MAAM,wBAC7D,OAAOs5B,CACT,CC/CA,SAASS,GAAY/W,EAAI/W,GACvB,IAAI+tB,EAAQC,EACZ,OAAO,WACL,IAAIX,EAAWh5B,GAAIR,KAAMkjB,GACrB2W,EAAQL,EAASK,MAKrB,GAAIA,IAAUK,EAEZ,IAAK,IAAIt5B,EAAI,EAAGD,GADhBw5B,EAASD,EAASL,GACSx5B,OAAQO,EAAID,IAAKC,EAC1C,GAAIu5B,EAAOv5B,GAAGuL,OAASA,EAAM,EAC3BguB,EAASA,EAAOzwB,SACTkV,OAAOhe,EAAG,GACjB,KACF,CAIJ44B,EAASK,MAAQM,CAClB,CACH,CAEA,SAASC,GAAclX,EAAI/W,EAAMqK,GAC/B,IAAI0jB,EAAQC,EACZ,GAAqB,mBAAV3jB,EAAsB,MAAM,IAAItW,MAC3C,OAAO,WACL,IAAIs5B,EAAWh5B,GAAIR,KAAMkjB,GACrB2W,EAAQL,EAASK,MAKrB,GAAIA,IAAUK,EAAQ,CACpBC,GAAUD,EAASL,GAAOnwB,QAC1B,IAAK,IAAI1K,EAAI,CAACmN,KAAMA,EAAMqK,MAAOA,GAAQ5V,EAAI,EAAGD,EAAIw5B,EAAO95B,OAAQO,EAAID,IAAKC,EAC1E,GAAIu5B,EAAOv5B,GAAGuL,OAASA,EAAM,CAC3BguB,EAAOv5B,GAAK5B,EACZ,KACF,CAEE4B,IAAMD,GAAGw5B,EAAO32B,KAAKxE,EAC3B,CAEAw6B,EAASK,MAAQM,CAClB,CACH,CAoBO,SAASE,GAAWrkB,EAAY7J,EAAMqK,GAC3C,IAAI0M,EAAKlN,EAAWskB,IAOpB,OALAtkB,EAAWG,MAAK,WACd,IAAIqjB,EAAWh5B,GAAIR,KAAMkjB,IACxBsW,EAAShjB,QAAUgjB,EAAShjB,MAAQ,CAAE,IAAGrK,GAAQqK,EAAMjC,MAAMvU,KAAMqP,UACtE,IAEO,SAAS4J,GACd,OAAO3Y,GAAI2Y,EAAMiK,GAAI1M,MAAMrK,EAC5B,CACH,CC7Ee,SAAAouB,GAAS94B,EAAGwH,GACzB,IAAIlI,EACJ,OAAqB,iBAANkI,EAAiB4qB,GAC1B5qB,aAAamoB,GAAQ8B,IACpBnyB,EAAIqwB,GAAMnoB,KAAOA,EAAIlI,EAAGmyB,IACzBgB,IAAmBzyB,EAAGwH,EAC9B,CCJA,SAASsR,GAAWpO,GAClB,OAAO,WACLnM,KAAK6H,gBAAgBsE,EACtB,CACH,CAEA,SAASqO,GAAapC,GACpB,OAAO,WACLpY,KAAKya,kBAAkBrC,EAAST,MAAOS,EAASR,MACjD,CACH,CAEA,SAAS8C,GAAavO,EAAMouB,EAAaC,GACvC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAU56B,KAAKgM,aAAaG,GAChC,OAAOyuB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeH,EAAYE,EAAWG,EAASJ,EACtD,CACH,CAEA,SAAS7f,GAAevC,EAAUmiB,EAAaC,GAC7C,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAU56B,KAAKshB,eAAelJ,EAAST,MAAOS,EAASR,OAC3D,OAAOgjB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeH,EAAYE,EAAWG,EAASJ,EACtD,CACH,CAEA,SAAS3f,GAAa1O,EAAMouB,EAAa/jB,GACvC,IAAIikB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAAShkB,EAAMxW,MAC5B,GAAc,MAAVw6B,EAGJ,OAFAI,EAAU56B,KAAKgM,aAAaG,OAC5BwuB,EAAUH,EAAS,IACU,KACvBI,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeH,EAAYE,EAAWG,EAASJ,IAL1Cx6B,KAAK6H,gBAAgBsE,EAMtD,CACH,CAEA,SAAS2O,GAAe1C,EAAUmiB,EAAa/jB,GAC7C,IAAIikB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAAShkB,EAAMxW,MAC5B,GAAc,MAAVw6B,EAGJ,OAFAI,EAAU56B,KAAKshB,eAAelJ,EAAST,MAAOS,EAASR,WACvD+iB,EAAUH,EAAS,IACU,KACvBI,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeH,EAAYE,EAAWG,EAASJ,IAL1Cx6B,KAAKya,kBAAkBrC,EAAST,MAAOS,EAASR,MAMjF,CACH,CCvDA,SAASkjB,GAAY1iB,EAAU5B,GAC7B,IAAI4hB,EAAInY,EACR,SAAS4Z,IACP,IAAIj5B,EAAI4V,EAAMjC,MAAMvU,KAAMqP,WAE1B,OADIzO,IAAMqf,IAAImY,GAAMnY,EAAKrf,IAV7B,SAA2BwX,EAAUxX,GACnC,OAAO,SAAS5B,GACdgB,KAAK4a,eAAexC,EAAST,MAAOS,EAASR,MAAOhX,EAAEsD,KAAKlE,KAAMhB,GAClE,CACH,CAMmC+7B,CAAkB3iB,EAAUxX,IACpDw3B,CACT,CAEA,OADAyB,EAAMmB,OAASxkB,EACRqjB,CACT,CAEA,SAASoB,GAAU9uB,EAAMqK,GACvB,IAAI4hB,EAAInY,EACR,SAAS4Z,IACP,IAAIj5B,EAAI4V,EAAMjC,MAAMvU,KAAMqP,WAE1B,OADIzO,IAAMqf,IAAImY,GAAMnY,EAAKrf,IA3B7B,SAAyBuL,EAAMvL,GAC7B,OAAO,SAAS5B,GACdgB,KAAKoH,aAAa+E,EAAMvL,EAAEsD,KAAKlE,KAAMhB,GACtC,CACH,CAuBmCk8B,CAAgB/uB,EAAMvL,IAC9Cw3B,CACT,CAEA,OADAyB,EAAMmB,OAASxkB,EACRqjB,CACT,CChCA,SAASsB,GAAcjY,EAAI1M,GACzB,OAAO,WACLwjB,GAAKh6B,KAAMkjB,GAAI6U,OAASvhB,EAAMjC,MAAMvU,KAAMqP,UAC3C,CACH,CAEA,SAAS+rB,GAAclY,EAAI1M,GACzB,OAAOA,GAASA,EAAO,WACrBwjB,GAAKh6B,KAAMkjB,GAAI6U,MAAQvhB,CACxB,CACH,CCVA,SAAS6kB,GAAiBnY,EAAI1M,GAC5B,OAAO,WACLhW,GAAIR,KAAMkjB,GAAI4W,UAAYtjB,EAAMjC,MAAMvU,KAAMqP,UAC7C,CACH,CAEA,SAASisB,GAAiBpY,EAAI1M,GAC5B,OAAOA,GAASA,EAAO,WACrBhW,GAAIR,KAAMkjB,GAAI4W,SAAWtjB,CAC1B,CACH,CCVA,IAAIuI,GAAY9J,GAAUzV,UAAUO,YCiBpC,SAASib,GAAY7O,GACnB,OAAO,WACLnM,KAAKib,MAAMC,eAAe/O,EAC3B,CACH,CCDA,IAAI+W,GAAK,EAEF,SAASqY,GAAWvc,EAAQC,EAAS9S,EAAM+W,GAChDljB,KAAKkf,QAAUF,EACfhf,KAAKmf,SAAWF,EAChBjf,KAAKw7B,MAAQrvB,EACbnM,KAAKs6B,IAAMpX,CACb,CAMO,SAASuY,KACd,QAASvY,EACX,CAEA,IAAIwY,GAAsBzmB,GAAUzV,UAEpC+7B,GAAW/7B,UAAmC,CAC5CO,YAAaw7B,GACb3lB,OCvCa,SAASA,GACtB,IAAIzJ,EAAOnM,KAAKw7B,MACZtY,EAAKljB,KAAKs6B,IAEQ,mBAAX1kB,IAAuBA,EAAS2C,GAAS3C,IAEpD,IAAK,IAAIoJ,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+e,EAAY,IAAIhd,MAAM2H,GAAIqF,EAAI,EAAGA,EAAIrF,IAAKqF,EAC3F,IAAK,IAAiF6J,EAAMoG,EAAnFvF,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAQif,EAAWF,EAAUhQ,GAAK,IAAIhN,MAAMzB,GAAmBC,EAAI,EAAGA,EAAID,IAAKC,GAC9GqY,EAAOa,EAAMlZ,MAAQye,EAAUzJ,EAAO1R,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,MAClE,aAAcb,IAAMoG,EAAQzF,SAAWX,EAAKW,UAChD0F,EAAS1e,GAAKye,EACdma,GAASla,EAAS1e,GAAIuL,EAAM+W,EAAItiB,EAAG0e,EAAUhf,GAAI2Y,EAAMiK,KAK7D,OAAO,IAAIqY,GAAWnc,EAAWpf,KAAKmf,SAAUhT,EAAM+W,EACxD,EDuBE/N,UExCa,SAASS,GACtB,IAAIzJ,EAAOnM,KAAKw7B,MACZtY,EAAKljB,KAAKs6B,IAEQ,mBAAX1kB,IAAuBA,EAAS8C,GAAY9C,IAEvD,IAAK,IAAIoJ,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+e,EAAY,GAAIH,EAAU,GAAI7P,EAAI,EAAGA,EAAIrF,IAAKqF,EAC/F,IAAK,IAAyC6J,EAArCa,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAcO,EAAI,EAAGA,EAAID,IAAKC,EAClE,GAAIqY,EAAOa,EAAMlZ,GAAI,CACnB,IAAK,IAA2D6d,EAAvDpF,EAAWzD,EAAO1R,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,GAAe6hB,EAAUr7B,GAAI2Y,EAAMiK,GAAK1W,EAAI,EAAG7K,EAAI0X,EAAShZ,OAAQmM,EAAI7K,IAAK6K,GAC/HiS,EAAQpF,EAAS7M,KACnBgtB,GAAS/a,EAAOtS,EAAM+W,EAAI1W,EAAG6M,EAAUsiB,GAG3Cvc,EAAU5b,KAAK6V,GACf4F,EAAQzb,KAAKyV,EACf,CAIJ,OAAO,IAAIsiB,GAAWnc,EAAWH,EAAS9S,EAAM+W,EAClD,EFoBE3D,YAAamc,GAAoBnc,YACjCG,eAAgBgc,GAAoBhc,eACpCxJ,OG5Ca,SAASsJ,GACD,mBAAVA,IAAsBA,EAAQ1G,GAAQ0G,IAEjD,IAAK,IAAIR,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+e,EAAY,IAAIhd,MAAM2H,GAAIqF,EAAI,EAAGA,EAAIrF,IAAKqF,EAC3F,IAAK,IAAuE6J,EAAnEa,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAQif,EAAWF,EAAUhQ,GAAK,GAAUxO,EAAI,EAAGA,EAAID,IAAKC,GAC3FqY,EAAOa,EAAMlZ,KAAO4e,EAAMtb,KAAK+U,EAAMA,EAAKW,SAAUhZ,EAAGkZ,IAC1DwF,EAAS9b,KAAKyV,GAKpB,OAAO,IAAIsiB,GAAWnc,EAAWpf,KAAKmf,SAAUnf,KAAKw7B,MAAOx7B,KAAKs6B,IACnE,EHiCExkB,MI9Ca,SAASE,GACtB,GAAIA,EAAWskB,MAAQt6B,KAAKs6B,IAAK,MAAM,IAAIp6B,MAE3C,IAAK,IAAIqgB,EAAUvgB,KAAKkf,QAASsB,EAAUxK,EAAWkJ,QAASuB,EAAKF,EAAQlgB,OAAQqgB,EAAKF,EAAQngB,OAAQ0J,EAAIR,KAAKoX,IAAIF,EAAIC,GAAKE,EAAS,IAAIxe,MAAMqe,GAAKrR,EAAI,EAAGA,EAAIrF,IAAKqF,EACrK,IAAK,IAAmG6J,EAA/F4H,EAASN,EAAQnR,GAAI0R,EAASN,EAAQpR,GAAIzO,EAAIkgB,EAAOxgB,OAAQyV,EAAQ8K,EAAOxR,GAAK,IAAIhN,MAAMzB,GAAUC,EAAI,EAAGA,EAAID,IAAKC,GACxHqY,EAAO4H,EAAOjgB,IAAMkgB,EAAOlgB,MAC7BkV,EAAMlV,GAAKqY,GAKjB,KAAO7J,EAAIqR,IAAMrR,EACfwR,EAAOxR,GAAKmR,EAAQnR,GAGtB,OAAO,IAAImsB,GAAW3a,EAAQ5gB,KAAKmf,SAAUnf,KAAKw7B,MAAOx7B,KAAKs6B,IAChE,EJ+BErlB,UF7Ca,WACb,OAAO,IAAI8J,GAAU/e,KAAKkf,QAASlf,KAAKmf,SAC1C,EE4CEnJ,WK/Ca,WAKb,IAJA,IAAI7J,EAAOnM,KAAKw7B,MACZI,EAAM57B,KAAKs6B,IACXuB,EAAMJ,KAEDzc,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+O,EAAI,EAAGA,EAAIrF,IAAKqF,EACjE,IAAK,IAAyC6J,EAArCa,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAcO,EAAI,EAAGA,EAAID,IAAKC,EAClE,GAAIqY,EAAOa,EAAMlZ,GAAI,CACnB,IAAI+6B,EAAUr7B,GAAI2Y,EAAM2iB,GACxBpC,GAASvgB,EAAM9M,EAAM0vB,EAAKj7B,EAAGkZ,EAAO,CAClCke,KAAM2D,EAAQ3D,KAAO2D,EAAQ5D,MAAQ4D,EAAQ7B,SAC7C/B,MAAO,EACP+B,SAAU6B,EAAQ7B,SAClBC,KAAM4B,EAAQ5B,MAElB,CAIJ,OAAO,IAAIwB,GAAWvc,EAAQhf,KAAKmf,SAAUhT,EAAM0vB,EACrD,EL4BE33B,KAAMw3B,GAAoBx3B,KAC1Bmd,MAAOqa,GAAoBra,MAC3BpI,KAAMyiB,GAAoBziB,KAC1BxS,KAAMi1B,GAAoBj1B,KAC1BgS,MAAOijB,GAAoBjjB,MAC3BtC,KAAMulB,GAAoBvlB,KAC1BU,GMhCa,SAAS1K,EAAMwR,GAC5B,IAAIuF,EAAKljB,KAAKs6B,IAEd,OAAOjrB,UAAUhP,OAAS,EACpBC,GAAIN,KAAKiZ,OAAQiK,GAAIrM,GAAGA,GAAG1K,GAC3BnM,KAAKmW,KApBb,SAAoB+M,EAAI/W,EAAMwR,GAC5B,IAAIme,EAAKC,EAAKC,EAThB,SAAe7vB,GACb,OAAQA,EAAO,IAAI6K,OAAO/K,MAAM,SAASgwB,OAAM,SAASj9B,GACtD,IAAI4B,EAAI5B,EAAE4N,QAAQ,KAElB,OADIhM,GAAK,IAAG5B,EAAIA,EAAE0K,MAAM,EAAG9I,KACnB5B,GAAW,UAANA,CACf,GACF,CAGsB8S,CAAM3F,GAAQ6tB,GAAOx5B,GACzC,OAAO,WACL,IAAIg5B,EAAWwC,EAAIh8B,KAAMkjB,GACrBrM,EAAK2iB,EAAS3iB,GAKdA,IAAOilB,IAAMC,GAAOD,EAAMjlB,GAAI7B,QAAQ6B,GAAG1K,EAAMwR,GAEnD6b,EAAS3iB,GAAKklB,CACf,CACH,CAOkBG,CAAWhZ,EAAI/W,EAAMwR,GACvC,EN2BEjI,KNaa,SAASvJ,EAAMqK,GAC5B,IAAI4B,EAAWX,GAAUtL,GAAOvL,EAAiB,cAAbwX,EAA2Bsd,GAAuB6E,GACtF,OAAOv6B,KAAKi7B,UAAU9uB,EAAuB,mBAAVqK,GAC5B4B,EAASR,MAAQkD,GAAiBD,IAAczC,EAAUxX,EAAGy5B,GAAWr6B,KAAM,QAAUmM,EAAMqK,IACtF,MAATA,GAAiB4B,EAASR,MAAQ4C,GAAeD,IAAYnC,IAC5DA,EAASR,MAAQ+C,GAAiBD,IAActC,EAAUxX,EAAG4V,GACtE,EMlBEykB,ULvBa,SAAS9uB,EAAMqK,GAC5B,IAAI0D,EAAM,QAAU/N,EACpB,GAAIkD,UAAUhP,OAAS,EAAG,OAAQ6Z,EAAMla,KAAK65B,MAAM3f,KAASA,EAAI8gB,OAChE,GAAa,MAATxkB,EAAe,OAAOxW,KAAK65B,MAAM3f,EAAK,MAC1C,GAAqB,mBAAV1D,EAAsB,MAAM,IAAItW,MAC3C,IAAIkY,EAAWX,GAAUtL,GACzB,OAAOnM,KAAK65B,MAAM3f,GAAM9B,EAASR,MAAQkjB,GAAcG,IAAW7iB,EAAU5B,GAC9E,EKiBEyE,MDQa,SAAS9O,EAAMqK,EAAO4E,GACnC,IAAIxa,EAAqB,cAAhBuL,GAAQ,IAAsBupB,GAAuB6E,GAC9D,OAAgB,MAAT/jB,EAAgBxW,KAClBm8B,WAAWhwB,EAjElB,SAAmBA,EAAMouB,GACvB,IAAIE,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAU3f,GAAMjb,KAAMmM,GACtBwuB,GAAW36B,KAAKib,MAAMC,eAAe/O,GAAO8O,GAAMjb,KAAMmM,IAC5D,OAAOyuB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,EAC/CA,EAAeH,EAAYE,EAAWG,EAASC,EAAWF,EACjE,CACH,CAsDwByB,CAAUjwB,EAAMvL,IACjCiW,GAAG,aAAe1K,EAAM6O,GAAY7O,IACpB,mBAAVqK,EAAuBxW,KAC7Bm8B,WAAWhwB,EArClB,SAAuBA,EAAMouB,EAAa/jB,GACxC,IAAIikB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAU3f,GAAMjb,KAAMmM,GACtBquB,EAAShkB,EAAMxW,MACf26B,EAAUH,EAAS,GAEvB,OADc,MAAVA,IAAoCx6B,KAAKib,MAAMC,eAAe/O,GAA9CwuB,EAAUH,EAA2Cvf,GAAMjb,KAAMmM,IAC9EyuB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeH,EAAYE,EAAWG,EAASJ,GAC3E,CACH,CAwBwBlf,CAAcnP,EAAMvL,EAAGy5B,GAAWr6B,KAAM,SAAWmM,EAAMqK,KAC1EL,KAvBP,SAA0B+M,EAAI/W,GAC5B,IAAI2vB,EAAKC,EAAKM,EAAwDrtB,EAA7CkL,EAAM,SAAW/N,EAAM0R,EAAQ,OAAS3D,EACjE,OAAO,WACL,IAAIsf,EAAWh5B,GAAIR,KAAMkjB,GACrBrM,EAAK2iB,EAAS3iB,GACd8G,EAAkC,MAAvB6b,EAAShjB,MAAM0D,GAAelL,IAAWA,EAASgM,GAAY7O,SAAS/M,EAKlFyX,IAAOilB,GAAOO,IAAc1e,IAAWoe,GAAOD,EAAMjlB,GAAI7B,QAAQ6B,GAAGgH,EAAOwe,EAAY1e,GAE1F6b,EAAS3iB,GAAKklB,CACf,CACH,CASYO,CAAiBt8B,KAAKs6B,IAAKnuB,IACjCnM,KACCm8B,WAAWhwB,EApDlB,SAAuBA,EAAMouB,EAAaC,GACxC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAU3f,GAAMjb,KAAMmM,GAC1B,OAAOyuB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeH,EAAYE,EAAWG,EAASJ,EACtD,CACH,CA0CwBrf,CAAchP,EAAMvL,EAAG4V,GAAQ4E,GAChDvE,GAAG,aAAe1K,EAAM,KAC/B,EClBEgwB,WO5Ca,SAAShwB,EAAMqK,EAAO4E,GACnC,IAAIlB,EAAM,UAAY/N,GAAQ,IAC9B,GAAIkD,UAAUhP,OAAS,EAAG,OAAQ6Z,EAAMla,KAAK65B,MAAM3f,KAASA,EAAI8gB,OAChE,GAAa,MAATxkB,EAAe,OAAOxW,KAAK65B,MAAM3f,EAAK,MAC1C,GAAqB,mBAAV1D,EAAsB,MAAM,IAAItW,MAC3C,OAAOF,KAAK65B,MAAM3f,EAhBpB,SAAoB/N,EAAMqK,EAAO4E,GAC/B,IAAIpc,EAAGihB,EACP,SAAS4Z,IACP,IAAIj5B,EAAI4V,EAAMjC,MAAMvU,KAAMqP,WAE1B,OADIzO,IAAMqf,IAAIjhB,GAAKihB,EAAKrf,IAV5B,SAA0BuL,EAAMvL,EAAGwa,GACjC,OAAO,SAASpc,GACdgB,KAAKib,MAAMI,YAAYlP,EAAMvL,EAAEsD,KAAKlE,KAAMhB,GAAIoc,EAC/C,CACH,CAMkCmhB,CAAiBpwB,EAAMvL,EAAGwa,IACjDpc,CACT,CAEA,OADA66B,EAAMmB,OAASxkB,EACRqjB,CACT,CAOyBsC,CAAWhwB,EAAMqK,EAAmB,MAAZ4E,EAAmB,GAAKA,GACzE,EPuCEvF,KQ/Ca,SAASW,GACtB,OAAOxW,KAAK65B,MAAM,OAAyB,mBAAVrjB,EARnC,SAAsBA,GACpB,OAAO,WACL,IAAIgkB,EAAShkB,EAAMxW,MACnBA,KAAKqH,YAAwB,MAAVmzB,EAAiB,GAAKA,CAC1C,CACH,CAIQ5d,CAAayd,GAAWr6B,KAAM,OAAQwW,IAf9C,SAAsBA,GACpB,OAAO,WACLxW,KAAKqH,YAAcmP,CACpB,CACH,CAYQmG,CAAsB,MAATnG,EAAgB,GAAKA,EAAQ,IAClD,ER4CEgmB,US9Ca,SAAShmB,GACtB,IAAI0D,EAAM,OACV,GAAI7K,UAAUhP,OAAS,EAAG,OAAQ6Z,EAAMla,KAAK65B,MAAM3f,KAASA,EAAI8gB,OAChE,GAAa,MAATxkB,EAAe,OAAOxW,KAAK65B,MAAM3f,EAAK,MAC1C,GAAqB,mBAAV1D,EAAsB,MAAM,IAAItW,MAC3C,OAAOF,KAAK65B,MAAM3f,EAhBpB,SAAmB1D,GACjB,IAAI4hB,EAAInY,EACR,SAAS4Z,IACP,IAAIj5B,EAAI4V,EAAMjC,MAAMvU,KAAMqP,WAE1B,OADIzO,IAAMqf,IAAImY,GAAMnY,EAAKrf,IAV7B,SAAyBA,GACvB,OAAO,SAAS5B,GACdgB,KAAKqH,YAAczG,EAAEsD,KAAKlE,KAAMhB,EACjC,CACH,CAMmCy9B,CAAgB77B,IACxCw3B,CACT,CAEA,OADAyB,EAAMmB,OAASxkB,EACRqjB,CACT,CAOyB2C,CAAUhmB,GACnC,ETyCExH,OUxDa,WACb,OAAOhP,KAAK6W,GAAG,aATjB,SAAwBqM,GACtB,OAAO,WACL,IAAI1J,EAASxZ,KAAK0N,WAClB,IAAK,IAAI9M,KAAKZ,KAAK25B,aAAc,IAAK/4B,IAAMsiB,EAAI,OAC5C1J,GAAQA,EAAO4D,YAAYpd,KAChC,CACH,CAG+B08B,CAAe18B,KAAKs6B,KACnD,EVuDET,MRda,SAAS1tB,EAAMqK,GAC5B,IAAI0M,EAAKljB,KAAKs6B,IAId,GAFAnuB,GAAQ,GAEJkD,UAAUhP,OAAS,EAAG,CAExB,IADA,IACkCrB,EAD9B66B,EAAQv5B,GAAIN,KAAKiZ,OAAQiK,GAAI2W,MACxBj5B,EAAI,EAAGD,EAAIk5B,EAAMx5B,OAAWO,EAAID,IAAKC,EAC5C,IAAK5B,EAAI66B,EAAMj5B,IAAIuL,OAASA,EAC1B,OAAOnN,EAAEwX,MAGb,OAAO,IACT,CAEA,OAAOxW,KAAKmW,MAAe,MAATK,EAAgByjB,GAAcG,IAAelX,EAAI/W,EAAMqK,GAC3E,EQDEuhB,MJpDa,SAASvhB,GACtB,IAAI0M,EAAKljB,KAAKs6B,IAEd,OAAOjrB,UAAUhP,OACXL,KAAKmW,MAAuB,mBAAVK,EACd2kB,GACAC,IAAelY,EAAI1M,IACvBlW,GAAIN,KAAKiZ,OAAQiK,GAAI6U,KAC7B,EI6CE+B,SHrDa,SAAStjB,GACtB,IAAI0M,EAAKljB,KAAKs6B,IAEd,OAAOjrB,UAAUhP,OACXL,KAAKmW,MAAuB,mBAAVK,EACd6kB,GACAC,IAAkBpY,EAAI1M,IAC1BlW,GAAIN,KAAKiZ,OAAQiK,GAAI4W,QAC7B,EG8CEC,KW3Da,SAASvjB,GACtB,IAAI0M,EAAKljB,KAAKs6B,IAEd,OAAOjrB,UAAUhP,OACXL,KAAKmW,KAXb,SAAsB+M,EAAI1M,GACxB,GAAqB,mBAAVA,EAAsB,MAAM,IAAItW,MAC3C,OAAO,WACLM,GAAIR,KAAMkjB,GAAI6W,KAAOvjB,CACtB,CACH,CAMkBmmB,CAAazZ,EAAI1M,IAC3BlW,GAAIN,KAAKiZ,OAAQiK,GAAI6W,IAC7B,EXsDE6C,YY3Da,SAASpmB,GACtB,GAAqB,mBAAVA,EAAsB,MAAM,IAAItW,MAC3C,OAAOF,KAAKmW,KAVd,SAAqB+M,EAAI1M,GACvB,OAAO,WACL,IAAI3M,EAAI2M,EAAMjC,MAAMvU,KAAMqP,WAC1B,GAAiB,mBAANxF,EAAkB,MAAM,IAAI3J,MACvCM,GAAIR,KAAMkjB,GAAI6W,KAAOlwB,CACtB,CACH,CAImB+yB,CAAY58B,KAAKs6B,IAAK9jB,GACzC,EZyDE4c,IapEa,WACb,IAAI0I,EAAKC,EAAK9kB,EAAOjX,KAAMkjB,EAAKjM,EAAKqjB,IAAK7zB,EAAOwQ,EAAKxQ,OACtD,OAAO,IAAIb,SAAQ,SAASi3B,EAAS30B,GACnC,IAAI40B,EAAS,CAACtmB,MAAOtO,GACjBkrB,EAAM,CAAC5c,MAAO,WAA4B,KAAT/P,GAAYo2B,GAAW,GAE5D5lB,EAAKd,MAAK,WACR,IAAIqjB,EAAWh5B,GAAIR,KAAMkjB,GACrBrM,EAAK2iB,EAAS3iB,GAKdA,IAAOilB,KACTC,GAAOD,EAAMjlB,GAAI7B,QACblL,EAAEgzB,OAAOt5B,KAAKs5B,GAClBf,EAAIjyB,EAAEizB,UAAUv5B,KAAKs5B,GACrBf,EAAIjyB,EAAEspB,IAAI5vB,KAAK4vB,IAGjBoG,EAAS3iB,GAAKklB,CAChB,IAGa,IAATt1B,GAAYo2B,GAClB,GACF,Eb2CE,CAACl9B,OAAO+O,UAAWgtB,GAAoB/7B,OAAO+O,WcvEzC,MAAMukB,GAASj0B,IAAMA,ECIrB,SAASg+B,GAASh+B,GACvB,QAASA,EAAIA,EAAIA,EAAI,CACvB,CCDA,IAAIi+B,GAAgB,CAClBjF,KAAM,KACND,MAAO,EACP+B,SAAU,IACVC,KDDK,SAAoB/6B,GACzB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,GCEA,SAAS28B,GAAQ1iB,EAAMiK,GAErB,IADA,IAAIuW,IACKA,EAASxgB,EAAK0gB,iBAAmBF,EAASA,EAAOvW,KACxD,KAAMjK,EAAOA,EAAKvL,YAChB,MAAM,IAAIxN,MAAM,cAAcgjB,eAGlC,OAAOuW,CACT,CChBAxkB,GAAUzV,UAAUu9B,UCFL,SAAS5wB,GACtB,OAAOnM,KAAKmW,MAAK,YCDJ,SAAS8C,EAAM9M,GAC5B,IACIqtB,EACA3V,EAEAjjB,EAJA84B,EAAYzgB,EAAK0gB,aAGjBlhB,GAAQ,EAGZ,GAAKihB,EAAL,CAIA,IAAK94B,KAFLuL,EAAe,MAARA,EAAe,KAAOA,EAAO,GAE1ButB,GACHF,EAAWE,EAAU94B,IAAIuL,OAASA,GACvC0X,EAAS2V,EAAS11B,MAAQq1B,IAAYK,EAAS11B,MAAQw1B,GACvDE,EAAS11B,MAAQy1B,GACjBC,EAAS1B,MAAM/lB,OACfynB,EAAS3iB,GAAG3S,KAAK2f,EAAS,YAAc,SAAU5K,EAAMA,EAAKW,SAAU4f,EAASttB,MAAOstB,EAAS1f,cACzF4f,EAAU94B,IAL8B6X,GAAQ,EAQrDA,UAAcQ,EAAK0gB,YAbP,CAclB,CDnBIoD,CAAU/8B,KAAMmM,EAClB,GACF,EDDA8I,GAAUzV,UAAUwW,WDiBL,SAAS7J,GACtB,IAAI+W,EACAuW,EAEAttB,aAAgBovB,IAClBrY,EAAK/W,EAAKmuB,IAAKnuB,EAAOA,EAAKqvB,QAE3BtY,EAAKuY,MAAUhC,EAASwD,IAAejF,KAAOT,KAAOprB,EAAe,MAARA,EAAe,KAAOA,EAAO,IAG3F,IAAK,IAAI6S,EAAShf,KAAKkf,QAASnV,EAAIiV,EAAO3e,OAAQ+O,EAAI,EAAGA,EAAIrF,IAAKqF,EACjE,IAAK,IAAyC6J,EAArCa,EAAQkF,EAAO5P,GAAIzO,EAAImZ,EAAMzZ,OAAcO,EAAI,EAAGA,EAAID,IAAKC,GAC9DqY,EAAOa,EAAMlZ,KACf44B,GAASvgB,EAAM9M,EAAM+W,EAAItiB,EAAGkZ,EAAO2f,GAAUkC,GAAQ1iB,EAAMiK,IAKjE,OAAO,IAAIqY,GAAWvc,EAAQhf,KAAKmf,SAAUhT,EAAM+W,EACrD,EIzCA,MAAMga,GAAK3zB,KAAK2rB,GACZiI,GAAM,EAAID,GACVjqB,GAAU,KACVmqB,GAAaD,GAAMlqB,GAEvB,SAASvG,GAAOtC,GACdpK,KAAK8J,GAAKM,EAAQ,GAClB,IAAK,IAAIxJ,EAAI,EAAGD,EAAIyJ,EAAQ/J,OAAQO,EAAID,IAAKC,EAC3CZ,KAAK8J,GAAKuF,UAAUzO,GAAKwJ,EAAQxJ,EAErC,CAeO,MAAMy8B,GACXt9B,WAAAA,CAAYu9B,GACVt9B,KAAKu9B,IAAMv9B,KAAKw9B,IAChBx9B,KAAKy9B,IAAMz9B,KAAK09B,IAAM,KACtB19B,KAAK8J,EAAI,GACT9J,KAAK29B,QAAoB,MAAVL,EAAiB5wB,GAlBpC,SAAqB4wB,GACnB,IAAIv7B,EAAIwH,KAAK6I,MAAMkrB,GACnB,KAAMv7B,GAAK,GAAI,MAAM,IAAI7B,MAAM,mBAAmBo9B,KAClD,GAAIv7B,EAAI,GAAI,OAAO2K,GACnB,MAAMF,EAAI,IAAMzK,EAChB,OAAO,SAASqI,GACdpK,KAAK8J,GAAKM,EAAQ,GAClB,IAAK,IAAIxJ,EAAI,EAAGD,EAAIyJ,EAAQ/J,OAAQO,EAAID,IAAKC,EAC3CZ,KAAK8J,GAAKP,KAAKqJ,MAAMvD,UAAUzO,GAAK4L,GAAKA,EAAIpC,EAAQxJ,EAExD,CACH,CAO6Cg9B,CAAYN,EACvD,CACAO,MAAAA,CAAOvzB,EAAG1H,GACR5C,KAAK29B,OAAO,IAAI39B,KAAKu9B,IAAMv9B,KAAKy9B,KAAOnzB,KAAKtK,KAAKw9B,IAAMx9B,KAAK09B,KAAO96B,GACrE,CACAk7B,SAAAA,GACmB,OAAb99B,KAAKy9B,MACPz9B,KAAKy9B,IAAMz9B,KAAKu9B,IAAKv9B,KAAK09B,IAAM19B,KAAKw9B,IACrCx9B,KAAK29B,OAAO,IAEhB,CACAI,MAAAA,CAAOzzB,EAAG1H,GACR5C,KAAK29B,OAAO,IAAI39B,KAAKy9B,KAAOnzB,KAAKtK,KAAK09B,KAAO96B,GAC/C,CACAo7B,gBAAAA,CAAiBC,EAAIC,EAAI5zB,EAAG1H,GAC1B5C,KAAK29B,OAAO,KAAKM,MAAOC,KAAMl+B,KAAKy9B,KAAOnzB,KAAKtK,KAAK09B,KAAO96B,GAC7D,CACAu7B,aAAAA,CAAcF,EAAIC,EAAIE,EAAIC,EAAI/zB,EAAG1H,GAC/B5C,KAAK29B,OAAO,KAAKM,MAAOC,MAAOE,MAAOC,KAAMr+B,KAAKy9B,KAAOnzB,KAAKtK,KAAK09B,KAAO96B,GAC3E,CACA07B,KAAAA,CAAML,EAAIC,EAAIE,EAAIC,EAAI39B,GAIpB,GAHAu9B,GAAMA,EAAIC,GAAMA,EAAIE,GAAMA,EAAIC,GAAMA,GAAI39B,GAAKA,GAGrC,EAAG,MAAM,IAAIR,MAAM,oBAAoBQ,KAE/C,IAAI69B,EAAKv+B,KAAKy9B,IACVe,EAAKx+B,KAAK09B,IACVe,EAAML,EAAKH,EACXS,EAAML,EAAKH,EACXS,EAAMJ,EAAKN,EACXW,EAAMJ,EAAKN,EACXW,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAiB,OAAb5+B,KAAKy9B,IACPz9B,KAAK29B,OAAO,IAAI39B,KAAKy9B,IAAMQ,KAAMj+B,KAAK09B,IAAMQ,SAIzC,GAAMW,EAAQ5rB,GAKd,GAAM1J,KAAKu1B,IAAIF,EAAMH,EAAMC,EAAMC,GAAO1rB,IAAavS,EAKrD,CACH,IAAIq+B,EAAMX,EAAKG,EACXS,EAAMX,EAAKG,EACXS,EAAQR,EAAMA,EAAMC,EAAMA,EAC1BQ,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAM51B,KAAKmI,KAAKutB,GAChBG,EAAM71B,KAAKmI,KAAKmtB,GAChBl9B,EAAIjB,EAAI6I,KAAK6mB,KAAK8M,GAAK3zB,KAAK81B,MAAMJ,EAAQJ,EAAQK,IAAU,EAAIC,EAAMC,KAAS,GAC/EE,EAAM39B,EAAIy9B,EACVG,EAAM59B,EAAIw9B,EAGV51B,KAAKu1B,IAAIQ,EAAM,GAAKrsB,IACtBjT,KAAK29B,OAAO,IAAIM,EAAKqB,EAAMX,KAAOT,EAAKoB,EAAMV,IAG/C5+B,KAAK29B,OAAO,IAAIj9B,KAAKA,WAAWk+B,EAAMG,EAAMJ,EAAMK,MAAQh/B,KAAKy9B,IAAMQ,EAAKsB,EAAMd,KAAOz+B,KAAK09B,IAAMQ,EAAKqB,EAAMb,GAC/G,MArBE1+B,KAAK29B,OAAO,IAAI39B,KAAKy9B,IAAMQ,KAAMj+B,KAAK09B,IAAMQ,SAsBhD,CACAsB,GAAAA,CAAIl1B,EAAG1H,EAAGlC,EAAG++B,EAAIC,EAAIC,GAInB,GAHAr1B,GAAKA,EAAG1H,GAAKA,EAAW+8B,IAAQA,GAAhBj/B,GAAKA,GAGb,EAAG,MAAM,IAAIR,MAAM,oBAAoBQ,KAE/C,IAAIojB,EAAKpjB,EAAI6I,KAAKq2B,IAAIH,GAClB1b,EAAKrjB,EAAI6I,KAAKs2B,IAAIJ,GAClBlB,EAAKj0B,EAAIwZ,EACT0a,EAAK57B,EAAImhB,EACT+b,EAAK,EAAIH,EACTI,EAAKJ,EAAMF,EAAKC,EAAKA,EAAKD,EAGb,OAAbz/B,KAAKy9B,IACPz9B,KAAK29B,OAAO,IAAIY,KAAMC,KAIfj1B,KAAKu1B,IAAI9+B,KAAKy9B,IAAMc,GAAMtrB,IAAW1J,KAAKu1B,IAAI9+B,KAAK09B,IAAMc,GAAMvrB,KACtEjT,KAAK29B,OAAO,IAAIY,KAAMC,IAInB99B,IAGDq/B,EAAK,IAAGA,EAAKA,EAAK5C,GAAMA,IAGxB4C,EAAK3C,GACPp9B,KAAK29B,OAAO,IAAIj9B,KAAKA,SAASo/B,KAAMx1B,EAAIwZ,KAAMlhB,EAAImhB,KAAMrjB,KAAKA,SAASo/B,KAAM9/B,KAAKy9B,IAAMc,KAAMv+B,KAAK09B,IAAMc,IAIjGuB,EAAK9sB,IACZjT,KAAK29B,OAAO,IAAIj9B,KAAKA,SAASq/B,GAAM7C,OAAO4C,KAAM9/B,KAAKy9B,IAAMnzB,EAAI5J,EAAI6I,KAAKq2B,IAAIF,MAAO1/B,KAAK09B,IAAM96B,EAAIlC,EAAI6I,KAAKs2B,IAAIH,KAEpH,CACA7c,IAAAA,CAAKvY,EAAG1H,EAAGo9B,EAAG3+B,GACZrB,KAAK29B,OAAO,IAAI39B,KAAKu9B,IAAMv9B,KAAKy9B,KAAOnzB,KAAKtK,KAAKw9B,IAAMx9B,KAAK09B,KAAO96B,KAAKo9B,GAAKA,MAAM3+B,MAAM2+B,IAC3F,CACAv/B,QAAAA,GACE,OAAOT,KAAK8J,CACd,ECtIK,SAASm2B,GAAmB31B,EAAGzI,GACpC,IAAKjB,GAAK0J,EAAIzI,EAAIyI,EAAE41B,cAAcr+B,EAAI,GAAKyI,EAAE41B,iBAAiBtzB,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAIhM,EAAGu/B,EAAc71B,EAAEZ,MAAM,EAAG9I,GAIhC,MAAO,CACLu/B,EAAY9/B,OAAS,EAAI8/B,EAAY,GAAKA,EAAYz2B,MAAM,GAAKy2B,GAChE71B,EAAEZ,MAAM9I,EAAI,GAEjB,CCjBe,SAAAw/B,GAAS91B,GACtB,OAAOA,EAAI21B,GAAmB12B,KAAKu1B,IAAIx0B,KAASA,EAAE,GAAKoG,GACzD,CCHA,ICCW2vB,GDDPC,GAAK,2EAEM,SAASC,GAAgBC,GACtC,KAAMhhB,EAAQ8gB,GAAGt1B,KAAKw1B,IAAa,MAAM,IAAItgC,MAAM,mBAAqBsgC,GACxE,IAAIhhB,EACJ,OAAO,IAAIihB,GAAgB,CACzBtxB,KAAMqQ,EAAM,GACZkhB,MAAOlhB,EAAM,GACbmhB,KAAMnhB,EAAM,GACZohB,OAAQphB,EAAM,GACdpO,KAAMoO,EAAM,GACZqhB,MAAOrhB,EAAM,GACbshB,MAAOthB,EAAM,GACbuhB,UAAWvhB,EAAM,IAAMA,EAAM,GAAG9V,MAAM,GACtCsN,KAAMwI,EAAM,GACZ1c,KAAM0c,EAAM,KAEhB,CAIO,SAASihB,GAAgBD,GAC9BxgC,KAAKmP,UAA0B/P,IAAnBohC,EAAUrxB,KAAqB,IAAMqxB,EAAUrxB,KAAO,GAClEnP,KAAK0gC,WAA4BthC,IAApBohC,EAAUE,MAAsB,IAAMF,EAAUE,MAAQ,GACrE1gC,KAAK2gC,UAA0BvhC,IAAnBohC,EAAUG,KAAqB,IAAMH,EAAUG,KAAO,GAClE3gC,KAAK4gC,YAA8BxhC,IAArBohC,EAAUI,OAAuB,GAAKJ,EAAUI,OAAS,GACvE5gC,KAAKoR,OAASovB,EAAUpvB,KACxBpR,KAAK6gC,WAA4BzhC,IAApBohC,EAAUK,WAAsBzhC,GAAaohC,EAAUK,MACpE7gC,KAAK8gC,QAAUN,EAAUM,MACzB9gC,KAAK+gC,eAAoC3hC,IAAxBohC,EAAUO,eAA0B3hC,GAAaohC,EAAUO,UAC5E/gC,KAAKgX,OAASwpB,EAAUxpB,KACxBhX,KAAK8C,UAA0B1D,IAAnBohC,EAAU19B,KAAqB,GAAK09B,EAAU19B,KAAO,EACnE,CE/Be,SAAAk+B,GAAS12B,EAAGzI,GACzB,IAAIE,EAAIk+B,GAAmB31B,EAAGzI,GAC9B,IAAKE,EAAG,OAAOuI,EAAI,GACnB,IAAI61B,EAAcp+B,EAAE,GAChBq+B,EAAWr+B,EAAE,GACjB,OAAOq+B,EAAW,EAAI,KAAO,IAAIh+B,OAAOg+B,GAAUzhB,KAAK,KAAOwhB,EACxDA,EAAY9/B,OAAS+/B,EAAW,EAAID,EAAYz2B,MAAM,EAAG02B,EAAW,GAAK,IAAMD,EAAYz2B,MAAM02B,EAAW,GAC5GD,EAAc,IAAI/9B,MAAMg+B,EAAWD,EAAY9/B,OAAS,GAAGse,KAAK,IACxE,CFUA4hB,GAAgB/gC,UAAYihC,GAAgBjhC,UAe5CihC,GAAgBjhC,UAAUiB,SAAW,WACnC,OAAOT,KAAKmP,KACNnP,KAAK0gC,MACL1gC,KAAK2gC,KACL3gC,KAAK4gC,QACJ5gC,KAAKoR,KAAO,IAAM,UACHhS,IAAfY,KAAK6gC,MAAsB,GAAKt3B,KAAK2I,IAAI,EAAgB,EAAblS,KAAK6gC,SACjD7gC,KAAK8gC,MAAQ,IAAM,UACA1hC,IAAnBY,KAAK+gC,UAA0B,GAAK,IAAMx3B,KAAK2I,IAAI,EAAoB,EAAjBlS,KAAK+gC,aAC3D/gC,KAAKgX,KAAO,IAAM,IACnBhX,KAAK8C,IACb,EG1CA,IAAem+B,GAAA,CACb,IAAKC,CAAC52B,EAAGzI,KAAW,IAAJyI,GAASb,QAAQ5H,GACjCoH,EAAMqB,GAAMf,KAAKqJ,MAAMtI,GAAG7J,SAAS,GACnCM,EAAMuJ,GAAMA,EAAI,GAChBvI,ELRa,SAASuI,GACtB,OAAOf,KAAKu1B,IAAIx0B,EAAIf,KAAKqJ,MAAMtI,KAAO,KAChCA,EAAE62B,eAAe,MAAMC,QAAQ,KAAM,IACrC92B,EAAE7J,SAAS,GACnB,EKKEvB,EAAKA,CAACoL,EAAGzI,IAAMyI,EAAE41B,cAAcr+B,GAC/Ba,EAAKA,CAAC4H,EAAGzI,IAAMyI,EAAEb,QAAQ5H,GACzBoI,EAAKA,CAACK,EAAGzI,IAAMyI,EAAE+2B,YAAYx/B,GAC7BjC,EAAM0K,GAAMf,KAAKqJ,MAAMtI,GAAG7J,SAAS,GACnCoB,EAAKA,CAACyI,EAAGzI,IAAMm/B,GAAkB,IAAJ12B,EAASzI,GACtCnB,EAAKsgC,GACLthC,EFXa,SAAS4K,EAAGzI,GACzB,IAAIE,EAAIk+B,GAAmB31B,EAAGzI,GAC9B,IAAKE,EAAG,OAAOuI,EAAI,GACnB,IAAI61B,EAAcp+B,EAAE,GAChBq+B,EAAWr+B,EAAE,GACbnB,EAAIw/B,GAAYC,GAAuE,EAAtD92B,KAAK2I,KAAI,EAAI3I,KAAKoX,IAAI,EAAGpX,KAAK6I,MAAMguB,EAAW,MAAY,EAC5Fz/B,EAAIw/B,EAAY9/B,OACpB,OAAOO,IAAMD,EAAIw/B,EACXv/B,EAAID,EAAIw/B,EAAc,IAAI/9B,MAAMxB,EAAID,EAAI,GAAGge,KAAK,KAChD/d,EAAI,EAAIu/B,EAAYz2B,MAAM,EAAG9I,GAAK,IAAMu/B,EAAYz2B,MAAM9I,GAC1D,KAAO,IAAIwB,MAAM,EAAIxB,GAAG+d,KAAK,KAAOshB,GAAmB31B,EAAGf,KAAK2I,IAAI,EAAGrQ,EAAIjB,EAAI,IAAI,EAC1F,EECE0gC,EAAMh3B,GAAMf,KAAKqJ,MAAMtI,GAAG7J,SAAS,IAAI8gC,cACvCj3B,EAAMA,GAAMf,KAAKqJ,MAAMtI,GAAG7J,SAAS,KCjBtB,SAAA+gC,GAASl3B,GACtB,OAAOA,CACT,CCOA,ICPIm3B,GACOhtB,GACAitB,GDKP16B,GAAM5E,MAAM5C,UAAUwH,IACtB26B,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAEhE,SAAAC,GAASH,GACtB,IEbsBI,EAAUC,EFa5BhoB,OAA4B1a,IAApBqiC,EAAOI,eAA+CziC,IAArBqiC,EAAOK,UAA0BptB,IEbxDmtB,EFa+E76B,GAAI9C,KAAKu9B,EAAOI,SAAUr/B,QEb/Fs/B,EFawGL,EAAOK,UAAY,GEZpJ,SAAStrB,EAAOqqB,GAOrB,IANA,IAAIjgC,EAAI4V,EAAMnW,OACVrB,EAAI,GACJoQ,EAAI,EACJnF,EAAI43B,EAAS,GACbxhC,EAAS,EAENO,EAAI,GAAKqJ,EAAI,IACd5J,EAAS4J,EAAI,EAAI42B,IAAO52B,EAAIV,KAAK2I,IAAI,EAAG2uB,EAAQxgC,IACpDrB,EAAEwE,KAAKgT,EAAMurB,UAAUnhC,GAAKqJ,EAAGrJ,EAAIqJ,OAC9B5J,GAAU4J,EAAI,GAAK42B,KACxB52B,EAAI43B,EAASzyB,GAAKA,EAAI,GAAKyyB,EAASxhC,QAGtC,OAAOrB,EAAEkG,UAAUyZ,KAAKmjB,EACzB,GFFGE,OAAqC5iC,IAApBqiC,EAAOQ,SAAyB,GAAKR,EAAOQ,SAAS,GAAK,GAC3EC,OAAqC9iC,IAApBqiC,EAAOQ,SAAyB,GAAKR,EAAOQ,SAAS,GAAK,GAC3EE,OAA6B/iC,IAAnBqiC,EAAOU,QAAwB,IAAMV,EAAOU,QAAU,GAChEC,OAA+BhjC,IAApBqiC,EAAOW,SAAyB1tB,GGjBlC,SAAS0tB,GACtB,OAAO,SAAS5rB,GACd,OAAOA,EAAM4qB,QAAQ,UAAU,SAASxgC,GACtC,OAAOwhC,GAAUxhC,EACnB,GACD,CACH,CHW4DyhC,CAAer7B,GAAI9C,KAAKu9B,EAAOW,SAAUr/B,SAC/Fu/B,OAA6BljC,IAAnBqiC,EAAOa,QAAwB,IAAMb,EAAOa,QAAU,GAChEC,OAAyBnjC,IAAjBqiC,EAAOc,MAAsB,IAAMd,EAAOc,MAAQ,GAC1DC,OAAqBpjC,IAAfqiC,EAAOe,IAAoB,MAAQf,EAAOe,IAAM,GAE1D,SAASC,EAAUjC,GAGjB,IAAIrxB,GAFJqxB,EAAYD,GAAgBC,IAEPrxB,KACjBuxB,EAAQF,EAAUE,MAClBC,EAAOH,EAAUG,KACjBC,EAASJ,EAAUI,OACnBxvB,EAAOovB,EAAUpvB,KACjByvB,EAAQL,EAAUK,MAClBC,EAAQN,EAAUM,MAClBC,EAAYP,EAAUO,UACtB/pB,EAAOwpB,EAAUxpB,KACjBlU,EAAO09B,EAAU19B,KAGR,MAATA,GAAcg+B,GAAQ,EAAMh+B,EAAO,KAG7Bm+B,GAAYn+B,UAAqB1D,IAAd2hC,IAA4BA,EAAY,IAAK/pB,GAAO,EAAMlU,EAAO,MAG1FsO,GAAkB,MAATjC,GAA0B,MAAVuxB,KAAgBtvB,GAAO,EAAMjC,EAAO,IAAKuxB,EAAQ,KAI9E,IAAIhpB,EAAoB,MAAXkpB,EAAiBoB,EAA4B,MAAXpB,GAAkB,SAAS31B,KAAKnI,GAAQ,IAAMA,EAAKsC,cAAgB,GAC9Gs9B,EAAoB,MAAX9B,EAAiBsB,EAAiB,OAAOj3B,KAAKnI,GAAQw/B,EAAU,GAKzEK,EAAa1B,GAAYn+B,GACzB8/B,EAAc,aAAa33B,KAAKnI,GAUpC,SAAS2R,EAAO+B,GACd,IAEI5V,EAAGD,EAAGI,EAFN8hC,EAAcnrB,EACdorB,EAAcJ,EAGlB,GAAa,MAAT5/B,EACFggC,EAAcH,EAAWnsB,GAASssB,EAClCtsB,EAAQ,OACH,CAIL,IAAIusB,GAHJvsB,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQyb,MAAMzb,GAASgsB,EAAMG,EAAWp5B,KAAKu1B,IAAItoB,GAAQuqB,GAGrD/pB,IAAMR,EIjFH,SAAS9W,GACtBsjC,EAAK,IAAK,IAAkCvwB,EAA9B9R,EAAIjB,EAAEW,OAAQO,EAAI,EAAGqf,GAAO,EAAMrf,EAAID,IAAKC,EACvD,OAAQlB,EAAEkB,IACR,IAAK,IAAKqf,EAAKxN,EAAK7R,EAAG,MACvB,IAAK,IAAgB,IAAPqf,IAAUA,EAAKrf,GAAG6R,EAAK7R,EAAG,MACxC,QAAS,KAAMlB,EAAEkB,GAAI,MAAMoiC,EAAS/iB,EAAK,IAAGA,EAAK,GAGrD,OAAOA,EAAK,EAAIvgB,EAAEgK,MAAM,EAAGuW,GAAMvgB,EAAEgK,MAAM+I,EAAK,GAAK/S,CACrD,CJwE0BujC,CAAWzsB,IAGzBusB,GAA4B,IAAVvsB,GAAwB,MAATmqB,IAAcoC,GAAgB,GAGnEF,GAAeE,EAA0B,MAATpC,EAAeA,EAAO4B,EAAkB,MAAT5B,GAAyB,MAATA,EAAe,GAAKA,GAAQkC,EAC3GC,GAAwB,MAAThgC,EAAe6+B,GAAS,EAAItB,GAAiB,GAAK,IAAMyC,GAAeC,GAA0B,MAATpC,EAAe,IAAM,IAIxHiC,EAEF,IADAhiC,GAAM,EAAED,EAAI6V,EAAMnW,SACTO,EAAID,GACX,GAA6B,IAAzBI,EAAIyV,EAAM0sB,WAAWtiC,KAAcG,EAAI,GAAI,CAC7C+hC,GAAqB,KAAN/hC,EAAWohC,EAAU3rB,EAAM9M,MAAM9I,EAAI,GAAK4V,EAAM9M,MAAM9I,IAAMkiC,EAC3EtsB,EAAQA,EAAM9M,MAAM,EAAG9I,GACvB,KACF,CAGN,CAGIkgC,IAAU1vB,IAAMoF,EAAQsD,EAAMtD,EAAO+hB,MAGzC,IAAIl4B,EAASwiC,EAAYxiC,OAASmW,EAAMnW,OAASyiC,EAAYziC,OACzD8iC,EAAU9iC,EAASwgC,EAAQ,IAAIz+B,MAAMy+B,EAAQxgC,EAAS,GAAGse,KAAKxP,GAAQ,GAM1E,OAHI2xB,GAAS1vB,IAAMoF,EAAQsD,EAAMqpB,EAAU3sB,EAAO2sB,EAAQ9iC,OAASwgC,EAAQiC,EAAYziC,OAASk4B,KAAW4K,EAAU,IAG7GzC,GACN,IAAK,IAAKlqB,EAAQqsB,EAAcrsB,EAAQssB,EAAcK,EAAS,MAC/D,IAAK,IAAK3sB,EAAQqsB,EAAcM,EAAU3sB,EAAQssB,EAAa,MAC/D,IAAK,IAAKtsB,EAAQ2sB,EAAQz5B,MAAM,EAAGrJ,EAAS8iC,EAAQ9iC,QAAU,GAAKwiC,EAAcrsB,EAAQssB,EAAcK,EAAQz5B,MAAMrJ,GAAS,MAC9H,QAASmW,EAAQ2sB,EAAUN,EAAcrsB,EAAQssB,EAGnD,OAAOV,EAAS5rB,EAClB,CAMA,OAtEAuqB,OAA0B3hC,IAAd2hC,EAA0B,EAChC,SAAS91B,KAAKnI,GAAQyG,KAAK2I,IAAI,EAAG3I,KAAKoX,IAAI,GAAIogB,IAC/Cx3B,KAAK2I,IAAI,EAAG3I,KAAKoX,IAAI,GAAIogB,IAgE/BtsB,EAAOhU,SAAW,WAChB,OAAO+/B,EAAY,EACpB,EAEM/rB,CACT,CAYA,MAAO,CACLA,OAAQguB,EACRf,aAZF,SAAsBlB,EAAWhqB,GAC/B,IAAI9T,EAAI+/B,IAAWjC,EAAYD,GAAgBC,IAAsB19B,KAAO,IAAK09B,IAC7EthC,EAAiE,EAA7DqK,KAAK2I,KAAM,EAAE3I,KAAKoX,IAAI,EAAGpX,KAAK6I,MAAMguB,GAAS5pB,GAAS,KAC1DhK,EAAIjD,KAAKgJ,IAAI,IAAKrT,GAClBwY,EAASiqB,GAAS,EAAIziC,EAAI,GAC9B,OAAO,SAASsX,GACd,OAAO9T,EAAE8J,EAAIgK,GAASkB,CACvB,CACH,EAMF,CCtIE+pB,GAASG,GAPG,CACZE,UAAW,IACXD,SAAU,CAAC,GACXI,SAAU,CAAC,IAAK,MAKhBxtB,GAASgtB,GAAOhtB,OAChBitB,GAAeD,GAAOC,aIfxB,IAAen4B,GAAAA,KAAKC,OCEpB45B,GAAe,SAAUC,EAAoBpP,GAC3C,SAASqP,EAAc3iB,EAAKzO,GAK1B,OAJAyO,EAAa,MAAPA,EAAc,GAAKA,EACzBzO,EAAa,MAAPA,EAAc,GAAKA,EACA,IAArB7C,UAAUhP,QAAc6R,EAAMyO,EAAKA,EAAM,GACxCzO,GAAOyO,EACL,WACL,OAAOsT,IAAW/hB,EAAMyO,CACzB,CACH,CAIA,OAFA2iB,EAAcrP,OAASoP,EAEhBC,CACR,CAdc,CAcZC,ICdHC,GAAe,SAAUC,EAAmBxP,GAC1C,SAASyP,EAAaC,EAAIC,GACxB,IAAIt5B,EAAG5J,EAGP,OAFAijC,EAAW,MAANA,EAAa,GAAKA,EACvBC,EAAiB,MAATA,EAAgB,GAAKA,EACtB,WACL,IAAIhhC,EAGJ,GAAS,MAAL0H,EAAW1H,EAAI0H,EAAGA,EAAI,UAGrB,GACHA,EAAe,EAAX2pB,IAAe,EACnBrxB,EAAe,EAAXqxB,IAAe,EACnBvzB,EAAI4J,EAAIA,EAAI1H,EAAIA,SACRlC,GAAKA,EAAI,GAEnB,OAAOijC,EAAKC,EAAQhhC,EAAI2G,KAAKmI,MAAO,EAAGnI,KAAKs6B,IAAInjC,GAAKA,EACtD,CACH,CAIA,OAFAgjC,EAAazP,OAASwP,EAEfC,CACR,CAzBc,CAyBZH,IC1BH,MAEMO,GAAM,EAAI,WAED,SAASC,GAAIC,EAAOz6B,KAAKC,UACtC,IAAI1F,EAAgE,GAAvD,GAAKkgC,GAAQA,EAAO,EAAIA,EAAOF,GAAMv6B,KAAKu1B,IAAIkF,IAC3D,MAAO,KAAOlgC,EANJ,QAMkBA,EALlB,WAKgC,EAAGggC,IAAOhgC,IAAU,GAChE,CCRO,SAASmgC,GAAUzvB,EAAQI,GAChC,OAAQvF,UAAUhP,QAChB,KAAK,EAAG,MACR,KAAK,EAAGL,KAAK4U,MAAMJ,GAAS,MAC5B,QAASxU,KAAK4U,MAAMA,GAAOJ,OAAOA,GAEpC,OAAOxU,IACT,CCPe,SAASoT,GAAO9I,GAC7B,OAAQA,CACV,CCGA,IAAI45B,GAAO,CAAC,EAAG,GAER,SAASxvB,GAASpK,GACvB,OAAOA,CACT,CAEA,SAAS65B,GAAU1iC,EAAGwH,GACpB,OAAQA,GAAMxH,GAAKA,GACb,SAAS6I,GAAK,OAAQA,EAAI7I,GAAKwH,CAAI,ECb5B,SAAmBqB,GAChC,OAAO,WACL,OAAOA,CACR,CACH,CDUQuV,CAASoS,MAAMhpB,GAAKyH,IAAM,GAClC,CAUA,SAAS0zB,GAAM5vB,EAAQI,EAAO2lB,GAC5B,IAAI8J,EAAK7vB,EAAO,GAAI8vB,EAAK9vB,EAAO,GAAI+vB,EAAK3vB,EAAM,GAAI4vB,EAAK5vB,EAAM,GAG9D,OAFI0vB,EAAKD,GAAIA,EAAKF,GAAUG,EAAID,GAAKE,EAAKhK,EAAYiK,EAAID,KACrDF,EAAKF,GAAUE,EAAIC,GAAKC,EAAKhK,EAAYgK,EAAIC,IAC3C,SAASl6B,GAAK,OAAOi6B,EAAGF,EAAG/5B,GAAM,CAC1C,CAEA,SAASm6B,GAAQjwB,EAAQI,EAAO2lB,GAC9B,IAAInrB,EAAI7F,KAAKoX,IAAInM,EAAOnU,OAAQuU,EAAMvU,QAAU,EAC5C0B,EAAI,IAAIK,MAAMgN,GACd1O,EAAI,IAAI0B,MAAMgN,GACdxO,GAAM,EAQV,IALI4T,EAAOpF,GAAKoF,EAAO,KACrBA,EAASA,EAAO9K,QAAQxE,UACxB0P,EAAQA,EAAMlL,QAAQxE,aAGftE,EAAIwO,GACXrN,EAAEnB,GAAKujC,GAAU3vB,EAAO5T,GAAI4T,EAAO5T,EAAI,IACvCF,EAAEE,GAAK25B,EAAY3lB,EAAMhU,GAAIgU,EAAMhU,EAAI,IAGzC,OAAO,SAAS0J,GACd,IAAI1J,EAAI8jC,GAAOlwB,EAAQlK,EAAG,EAAG8E,GAAK,EAClC,OAAO1O,EAAEE,GAAGmB,EAAEnB,GAAG0J,GAClB,CACH,CAWO,SAASq6B,KACd,IAGIvwB,EACAwwB,EACAC,EAEAC,EACAC,EACAC,EATAxwB,EAAS0vB,GACTtvB,EAAQsvB,GACR3J,EAAc0K,GAIdpS,EAAQne,GAKZ,SAASwwB,IACP,IAAIvkC,EAAI4I,KAAKoX,IAAInM,EAAOnU,OAAQuU,EAAMvU,QAItC,OAHIwyB,IAAUne,KAAUme,EA7D5B,SAAiBpxB,EAAGwH,GAClB,IAAIjK,EAEJ,OADIyC,EAAIwH,IAAGjK,EAAIyC,EAAGA,EAAIwH,EAAGA,EAAIjK,GACtB,SAASsL,GAAK,OAAOf,KAAK2I,IAAIzQ,EAAG8H,KAAKoX,IAAI1X,EAAGqB,GAAM,CAC5D,CAyDoC66B,CAAQ3wB,EAAO,GAAIA,EAAO7T,EAAI,KAC9DmkC,EAAYnkC,EAAI,EAAI8jC,GAAUL,GAC9BW,EAASC,EAAQ,KACV3xB,CACT,CAEA,SAASA,EAAM/I,GACb,OAAY,MAALA,GAAa2nB,MAAM3nB,GAAKA,GAAKu6B,GAAWE,IAAWA,EAASD,EAAUtwB,EAAOxN,IAAIoN,GAAYQ,EAAO2lB,KAAenmB,EAAUye,EAAMvoB,IAC5I,CA8BA,OA5BA+I,EAAM+xB,OAAS,SAASxiC,GACtB,OAAOiwB,EAAM+R,GAAaI,IAAUA,EAAQF,EAAUlwB,EAAOJ,EAAOxN,IAAIoN,GAAYyf,MAAqBjxB,IAC1G,EAEDyQ,EAAMmB,OAAS,SAAS1K,GACtB,OAAOuF,UAAUhP,QAAUmU,EAASpS,MAAMgU,KAAKtM,EAAGsJ,IAAS8xB,KAAa1wB,EAAO9K,OAChF,EAED2J,EAAMuB,MAAQ,SAAS9K,GACrB,OAAOuF,UAAUhP,QAAUuU,EAAQxS,MAAMgU,KAAKtM,GAAIo7B,KAAatwB,EAAMlL,OACtE,EAED2J,EAAMgyB,WAAa,SAASv7B,GAC1B,OAAO8K,EAAQxS,MAAMgU,KAAKtM,GAAIywB,EAAcxF,GAAkBmQ,GAC/D,EAED7xB,EAAMwf,MAAQ,SAAS/oB,GACrB,OAAOuF,UAAUhP,QAAUwyB,IAAQ/oB,GAAW4K,GAAUwwB,KAAarS,IAAUne,EAChF,EAEDrB,EAAMknB,YAAc,SAASzwB,GAC3B,OAAOuF,UAAUhP,QAAUk6B,EAAczwB,EAAGo7B,KAAa3K,CAC1D,EAEDlnB,EAAMwxB,QAAU,SAAS/6B,GACvB,OAAOuF,UAAUhP,QAAUwkC,EAAU/6B,EAAGuJ,GAASwxB,CAClD,EAEM,SAAS7lC,EAAGiD,GAEjB,OADAmS,EAAYpV,EAAG4lC,EAAc3iC,EACtBijC,GACR,CACH,CErHe,SAASpxB,GAAWhC,EAAOC,EAAMC,EAAOwuB,GACrD,IACIO,EADA9uB,E9H8CC,SAAkBH,EAAOC,EAAMC,GACNA,GAASA,EACvC,MAAM9M,GADN6M,GAAQA,IAAMD,GAASA,GACOa,EAAMzN,EAAU2N,GAAcd,EAAMD,EAAOE,GAASa,GAAcf,EAAOC,EAAMC,GAC7G,OAAQ9M,GAAY,EAAG,IAAMyN,EAAM,EAAI,GAAKA,EAAMA,EACpD,C8HlDa2yB,CAASxzB,EAAOC,EAAMC,GAGjC,QADAwuB,EAAYD,GAA6B,MAAbC,EAAoB,KAAOA,IACrC19B,MAChB,IAAK,IACH,IAAI0T,EAAQjN,KAAK2I,IAAI3I,KAAKu1B,IAAIhtB,GAAQvI,KAAKu1B,IAAI/sB,IAE/C,OAD2B,MAAvByuB,EAAUO,WAAsB9O,MAAM8O,ECRjC,SAAS9uB,EAAMuE,GAC5B,OAAOjN,KAAK2I,IAAI,EAAgE,EAA7D3I,KAAK2I,KAAM,EAAE3I,KAAKoX,IAAI,EAAGpX,KAAK6I,MAAMguB,GAAS5pB,GAAS,KAAW4pB,GAAS72B,KAAKu1B,IAAI7sB,IACxG,CDM4DszB,CAAgBtzB,EAAMuE,MAASgqB,EAAUO,UAAYA,GACpGW,GAAalB,EAAWhqB,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvBgqB,EAAUO,WAAsB9O,MAAM8O,EEhBjC,SAAS9uB,EAAMC,GAE5B,OADAD,EAAO1I,KAAKu1B,IAAI7sB,GAAOC,EAAM3I,KAAKu1B,IAAI5sB,GAAOD,EACtC1I,KAAK2I,IAAI,EAAGkuB,GAASluB,GAAOkuB,GAASnuB,IAAS,CACvD,CFa4DuzB,CAAevzB,EAAM1I,KAAK2I,IAAI3I,KAAKu1B,IAAIhtB,GAAQvI,KAAKu1B,IAAI/sB,QAAUyuB,EAAUO,UAAYA,GAAgC,MAAnBP,EAAU19B,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvB09B,EAAUO,WAAsB9O,MAAM8O,EGrBjC,SAAS9uB,GACtB,OAAO1I,KAAK2I,IAAI,GAAIkuB,GAAS72B,KAAKu1B,IAAI7sB,IACxC,CHmB4DwzB,CAAexzB,MAAQuuB,EAAUO,UAAYA,EAAuC,GAAP,MAAnBP,EAAU19B,OAI9H,OAAO2R,GAAO+rB,EAChB,CIvBO,SAASkF,GAAUryB,GACxB,IAAImB,EAASnB,EAAMmB,OAkDnB,OAhDAnB,EAAMiB,MAAQ,SAAStC,GACrB,IAAIjQ,EAAIyS,IACR,OlIkBW,SAAe1C,EAAOC,EAAMC,GAEzC,MAD8BA,GAASA,GACzB,GAAI,MAAO,GACzB,IAFcF,GAASA,KAAvBC,GAAQA,GAEY,MAAO,CAACD,GAC5B,MAAM5M,EAAU6M,EAAOD,GAAQW,EAAIC,EAAIC,GAAOzN,EAAU2M,GAASE,EAAMD,EAAOE,GAASH,GAASC,EAAOC,EAAMC,GAC7G,KAAMU,GAAMD,GAAK,MAAO,GACxB,MAAM9R,EAAI+R,EAAKD,EAAK,EAAG6B,EAAQ,IAAIlS,MAAMzB,GACzC,GAAIuE,EACF,GAAIyN,EAAM,EAAG,IAAK,IAAI/R,EAAI,EAAGA,EAAID,IAAKC,EAAG0T,EAAM1T,IAAM8R,EAAK9R,IAAM+R,OAC3D,IAAK,IAAI/R,EAAI,EAAGA,EAAID,IAAKC,EAAG0T,EAAM1T,IAAM8R,EAAK9R,GAAK+R,OAEvD,GAAIA,EAAM,EAAG,IAAK,IAAI/R,EAAI,EAAGA,EAAID,IAAKC,EAAG0T,EAAM1T,IAAM6R,EAAK7R,IAAM+R,OAC3D,IAAK,IAAI/R,EAAI,EAAGA,EAAID,IAAKC,EAAG0T,EAAM1T,IAAM6R,EAAK7R,GAAK+R,EAEzD,OAAO2B,CACT,CkIjCWA,CAAMvS,EAAE,GAAIA,EAAEA,EAAE1B,OAAS,GAAa,MAAT2R,EAAgB,GAAKA,EAC1D,EAEDqB,EAAMS,WAAa,SAAS9B,EAAOwuB,GACjC,IAAIz+B,EAAIyS,IACR,OAAOV,GAAW/R,EAAE,GAAIA,EAAEA,EAAE1B,OAAS,GAAa,MAAT2R,EAAgB,GAAKA,EAAOwuB,EACtE,EAEDntB,EAAMsyB,KAAO,SAAS3zB,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKI4zB,EACA3zB,EANAlQ,EAAIyS,IACJyL,EAAK,EACLxN,EAAK1Q,EAAE1B,OAAS,EAChByR,EAAQ/P,EAAEke,GACVlO,EAAOhQ,EAAE0Q,GAGTozB,EAAU,GAOd,IALI9zB,EAAOD,IACTG,EAAOH,EAAOA,EAAQC,EAAMA,EAAOE,EACnCA,EAAOgO,EAAIA,EAAKxN,EAAIA,EAAKR,GAGpB4zB,KAAY,GAAG,CAEpB,IADA5zB,EAAOY,GAAcf,EAAOC,EAAMC,MACrB4zB,EAGX,OAFA7jC,EAAEke,GAAMnO,EACR/P,EAAE0Q,GAAMV,EACDyC,EAAOzS,GACT,GAAIkQ,EAAO,EAChBH,EAAQvI,KAAK6I,MAAMN,EAAQG,GAAQA,EACnCF,EAAOxI,KAAKu8B,KAAK/zB,EAAOE,GAAQA,MAC3B,MAAIA,EAAO,GAIhB,MAHAH,EAAQvI,KAAKu8B,KAAKh0B,EAAQG,GAAQA,EAClCF,EAAOxI,KAAK6I,MAAML,EAAOE,GAAQA,CAGnC,CACA2zB,EAAU3zB,CACZ,CAEA,OAAOoB,CACR,EAEMA,CACT,CAEe,SAAS4f,KACtB,IAAI5f,EN+DGsxB,KAAcjwB,GAAUA,IMvD/B,OANArB,EAAM2B,KAAO,WACX,ONRiBif,EMQL5gB,EAAO4f,KNNhBze,OAAOyf,EAAOzf,UACdI,MAAMqf,EAAOrf,SACb2lB,YAAYtG,EAAOsG,eACnB1H,MAAMoB,EAAOpB,SACbgS,QAAQ5Q,EAAO4Q,WANf,IAAc5Q,CMSlB,EAEDgQ,GAAU1vB,MAAMlB,EAAOhE,WAEhBq2B,GAAUryB,EACnB,CCnEA,IAAe0yB,GCFA,SAASvF,GAEtB,IADA,IAAI7/B,EAAI6/B,EAAUngC,OAAS,EAAI,EAAG0lC,EAAS,IAAI3jC,MAAMzB,GAAIC,EAAI,EACtDA,EAAID,GAAGolC,EAAOnlC,GAAK,IAAM4/B,EAAU92B,MAAU,EAAJ9I,EAAa,IAAJA,GACzD,OAAOmlC,CACT,CDFeA,CAAO,0DEFP,SAAAlmB,GAASvV,GACtB,OAAO,WACL,OAAOA,CACR,CACH,CCJA,SAAS07B,GAAO3xB,GACdrU,KAAKimC,SAAW5xB,CAClB,CA0Be,SAAA6xB,GAAS7xB,GACtB,OAAO,IAAI2xB,GAAO3xB,EACpB,CC9BO,SAAS/J,GAAEzI,GAChB,OAAOA,EAAE,EACX,CAEO,SAASe,GAAEf,GAChB,OAAOA,EAAE,EACX,CCAe,SAAA8T,GAASrL,EAAG1H,GACzB,IAAIujC,EAAUtmB,IAAS,GACnBxL,EAAU,KACV+xB,EAAQF,GACRnB,EAAS,KACT7vB,ECTC,SAAkBmxB,GACvB,IAAI/I,EAAS,EAcb,OAZA+I,EAAM/I,OAAS,SAASxzB,GACtB,IAAKuF,UAAUhP,OAAQ,OAAOi9B,EAC9B,GAAS,MAALxzB,EACFwzB,EAAS,SACJ,CACL,MAAMv7B,EAAIwH,KAAK6I,MAAMtI,GACrB,KAAM/H,GAAK,GAAI,MAAM,IAAIukC,WAAW,mBAAmBx8B,KACvDwzB,EAASv7B,CACX,CACA,OAAOskC,CACR,EAEM,IAAM,IAAIhJ,GAAKC,EACxB,CDPaiJ,CAAS5wB,GAKpB,SAASA,EAAKhJ,GACZ,IAAI/L,EAEAmB,EAEAykC,EAHA7lC,GAAKgM,EEhBE,SAASrC,GACtB,MAAoB,iBAANA,GAAkB,WAAYA,EACxCA,EACAlI,MAAMgU,KAAK9L,EACjB,CFYoBuO,CAAMlM,IAAOtM,OAEzBomC,GAAW,EAKf,IAFe,MAAXpyB,IAAiB0wB,EAASqB,EAAMI,EAAStxB,MAExCtU,EAAI,EAAGA,GAAKD,IAAKC,IACdA,EAAID,GAAKwlC,EAAQpkC,EAAI4K,EAAK/L,GAAIA,EAAG+L,MAAW85B,KAC5CA,GAAYA,GAAU1B,EAAO2B,YAC5B3B,EAAO4B,WAEVF,GAAU1B,EAAOziB,OAAOhY,EAAEvI,EAAGnB,EAAG+L,IAAQ/J,EAAEb,EAAGnB,EAAG+L,IAGtD,GAAI65B,EAAQ,OAAOzB,EAAS,KAAMyB,EAAS,IAAM,IACnD,CAsBA,OA3CAl8B,EAAiB,mBAANA,EAAmBA,OAAWlL,IAANkL,EAAmBs8B,GAAS/mB,GAASvV,GACxE1H,EAAiB,mBAANA,EAAmBA,OAAWxD,IAANwD,EAAmBikC,GAAShnB,GAASjd,GAsBxE+S,EAAKrL,EAAI,SAASR,GAChB,OAAOuF,UAAUhP,QAAUiK,EAAiB,mBAANR,EAAmBA,EAAI+V,IAAU/V,GAAI6L,GAAQrL,CACpF,EAEDqL,EAAK/S,EAAI,SAASkH,GAChB,OAAOuF,UAAUhP,QAAUuC,EAAiB,mBAANkH,EAAmBA,EAAI+V,IAAU/V,GAAI6L,GAAQ/S,CACpF,EAED+S,EAAKwwB,QAAU,SAASr8B,GACtB,OAAOuF,UAAUhP,QAAU8lC,EAAuB,mBAANr8B,EAAmBA,EAAI+V,KAAW/V,GAAI6L,GAAQwwB,CAC3F,EAEDxwB,EAAKywB,MAAQ,SAASt8B,GACpB,OAAOuF,UAAUhP,QAAU+lC,EAAQt8B,EAAc,MAAXuK,IAAoB0wB,EAASqB,EAAM/xB,IAAWsB,GAAQywB,CAC7F,EAEDzwB,EAAKtB,QAAU,SAASvK,GACtB,OAAOuF,UAAUhP,QAAe,MAALyJ,EAAYuK,EAAU0wB,EAAS,KAAOA,EAASqB,EAAM/xB,EAAUvK,GAAI6L,GAAQtB,CACvG,EAEMsB,CACT,CGzDO,SAASmxB,GAAUt6B,EAAGlC,EAAG1H,GAC9B5C,KAAKwM,EAAIA,EACTxM,KAAKsK,EAAIA,EACTtK,KAAK4C,EAAIA,CACX,CLAAojC,GAAOxmC,UAAY,CACjBunC,UAAW,WACT/mC,KAAKgnC,MAAQ,CACd,EACDC,QAAS,WACPjnC,KAAKgnC,MAAQt2B,GACd,EACDg2B,UAAW,WACT1mC,KAAKknC,OAAS,CACf,EACDP,QAAS,YACH3mC,KAAKgnC,OAAyB,IAAfhnC,KAAKgnC,OAA+B,IAAhBhnC,KAAKknC,SAAelnC,KAAKimC,SAASnI,YACzE99B,KAAKgnC,MAAQ,EAAIhnC,KAAKgnC,KACvB,EACD1kB,MAAO,SAAShY,EAAG1H,GAEjB,OADA0H,GAAKA,EAAG1H,GAAKA,EACL5C,KAAKknC,QACX,KAAK,EAAGlnC,KAAKknC,OAAS,EAAGlnC,KAAKgnC,MAAQhnC,KAAKimC,SAASlI,OAAOzzB,EAAG1H,GAAK5C,KAAKimC,SAASpI,OAAOvzB,EAAG1H,GAAI,MAC/F,KAAK,EAAG5C,KAAKknC,OAAS,EACtB,QAASlnC,KAAKimC,SAASlI,OAAOzzB,EAAG1H,GAErC,GKnBFkkC,GAAUtnC,UAAY,CACpBO,YAAa+mC,GACbzzB,MAAO,SAAS7G,GACd,OAAa,IAANA,EAAUxM,KAAO,IAAI8mC,GAAU9mC,KAAKwM,EAAIA,EAAGxM,KAAKsK,EAAGtK,KAAK4C,EAChE,EACDuzB,UAAW,SAAS7rB,EAAG1H,GACrB,OAAa,IAAN0H,EAAgB,IAAN1H,EAAU5C,KAAO,IAAI8mC,GAAU9mC,KAAKwM,EAAGxM,KAAKsK,EAAItK,KAAKwM,EAAIlC,EAAGtK,KAAK4C,EAAI5C,KAAKwM,EAAI5J,EAChG,EACD2R,MAAO,SAAS+N,GACd,MAAO,CAACA,EAAM,GAAKtiB,KAAKwM,EAAIxM,KAAKsK,EAAGgY,EAAM,GAAKtiB,KAAKwM,EAAIxM,KAAK4C,EAC9D,EACDukC,OAAQ,SAAS78B,GACf,OAAOA,EAAItK,KAAKwM,EAAIxM,KAAKsK,CAC1B,EACD88B,OAAQ,SAASxkC,GACf,OAAOA,EAAI5C,KAAKwM,EAAIxM,KAAK4C,CAC1B,EACDwiC,OAAQ,SAASiC,GACf,MAAO,EAAEA,EAAS,GAAKrnC,KAAKsK,GAAKtK,KAAKwM,GAAI66B,EAAS,GAAKrnC,KAAK4C,GAAK5C,KAAKwM,EACxE,EACD86B,QAAS,SAASh9B,GAChB,OAAQA,EAAItK,KAAKsK,GAAKtK,KAAKwM,CAC5B,EACD+6B,QAAS,SAAS3kC,GAChB,OAAQA,EAAI5C,KAAK4C,GAAK5C,KAAKwM,CAC5B,EACDg7B,SAAU,SAASl9B,GACjB,OAAOA,EAAE0K,OAAOR,OAAOlK,EAAEsK,QAAQ5N,IAAIhH,KAAKsnC,QAAStnC,MAAMgH,IAAIsD,EAAE86B,OAAQ96B,GACxE,EACDm9B,SAAU,SAAS7kC,GACjB,OAAOA,EAAEoS,OAAOR,OAAO5R,EAAEgS,QAAQ5N,IAAIhH,KAAKunC,QAASvnC,MAAMgH,IAAIpE,EAAEwiC,OAAQxiC,GACxE,EACDnC,SAAU,WACR,MAAO,aAAeT,KAAKsK,EAAI,IAAMtK,KAAK4C,EAAI,WAAa5C,KAAKwM,EAAI,GACtE,GAKoBs6B,GAAUtnC,UChCjB,MAAMkoC,WAA0Bn3B,GAC7Co3B,qBAAAA,CAAsBpmB,GACpB,OAAO9F,iBAAiBzb,MAAMwb,iBAAiB+F,GAAUvK,MAC3D,CAEAnO,YAAAA,CAAa++B,GACXviC,MAAMwD,aAAa++B,GAGnBC,GAAU7nC,KAAKoG,WAAWyJ,MACvB2R,QAAQ,YAAY,GACpB3K,GAAG,0CAA2CgH,IAE7CgqB,GADgBhqB,EAAMsE,cACJ/b,WAAWyJ,MAC1B2R,QAAQ,YAAY,GACpB3K,GAAG,yCAA0C,KAAK,IAEtDA,GAAG,oBAAqBgH,IAEvBgqB,GADgBhqB,EAAMsE,cACJ/b,WAAWyJ,MAC1B2R,QAAQ,YAAY,GACpB3K,GAAG,0DAA2D,KAAK,GAE5E,CAEA,gBAAWixB,GACT,MAAM3c,EAAO,UACP2c,EAAQ,CACdA,MAAc,WASd,OARAA,EAAMC,QAAUF,GAAkB1c,EAAM,UAAxB0c,CAAmC,KACnDC,EAAME,QAAUH,GAAkB1c,EAAM,UAAxB0c,CAAmC,IACnDC,EAAMG,QAAUJ,GAAkB1c,EAAM,UAAxB0c,CAAmC,KACnDC,EAAM3c,KAAOA,EACb2c,EAAMI,OAASL,GAAkB1c,EAAM,UAAxB0c,CAAmC,KAClDC,EAAMK,OAASN,GAAkB1c,EAAM,UAAxB0c,CAAmC,IAClDC,EAAMM,OAASP,GAAkB1c,EAAM,UAAxB0c,CAAmC,KAClDC,EAAM5f,MAAQ,UACP4f,CACT,CAEA,kBAAWO,GAMT,MAAO,CACLC,WAAY,CAAC,EAAG,EAAG,EAAG,EAAG,IACzBC,cAAe,UACfC,oBAAqB,UACrBC,qBAAsB,UACtBC,2BAA4B,gBAC5BC,aAAc,GACdC,gBAAiB,IACjBC,eAAgB,IAChBC,aAAc,GACdC,SAAU,CACR,EAAI,CAACz+B,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,GAAG,GAC5B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,GAAG,GAC5B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,GAAG,GAC5B,GAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAG,GAAIvJ,GAAG,IAE9BspC,YAAa,CACX,EAAI,CAAC1+B,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAG,GAAIvJ,EAAI,GAC7B,GAAI,CAAC4K,EAAG,EAAG1H,EAAG,GAAIqG,EAAG,GAAIvJ,EAAI,IAE/BupC,WAAY,CACV,EAAI,CAAC3+B,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAI,EAAGvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAG,GAAIvJ,EAAI,GAC7B,EAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAG,GAAIvJ,EAAI,GAC7B,GAAI,CAAC4K,EAAG,EAAG1H,EAAI,EAAGqG,EAAG,GAAIvJ,EAAI,IAInC,CAEA,mBAAOwpC,CAAaC,EAAWhU,GAAS,EAAOxS,GAAU,GACvD,MAAMymB,EAASppC,KAAKqoC,QAAQM,aAAe3oC,KAAKqoC,QAAQS,aAClDO,EAAYrpC,KAAKqoC,QAAQO,gBAAkB5oC,KAAKqoC,QAAQS,aACxDQ,EAAWtpC,KAAKqoC,QAAQQ,eAAiB7oC,KAAKqoC,QAAQS,aAEtDS,EAAU5mB,EACZ,QAAQ3iB,KAAKqoC,QAAQK,+BAA+BU,KACpD,QAAQppC,KAAKqoC,QAAQG,wBAAwBY,KAC3CI,EAAa7mB,EACf,QAAQ3iB,KAAKqoC,QAAQK,+BAA+BW,KACpD,QAAQrpC,KAAKqoC,QAAQG,wBAAwBa,KAC3CI,EAAY9mB,EACd,QAAQ3iB,KAAKqoC,QAAQK,+BAA+BY,KACpD,QAAQtpC,KAAKqoC,QAAQG,wBAAwBc,KAE3CI,EAAS1pC,KAAKqoC,QAAQU,SAASI,GAC/BQ,EAAY3pC,KAAKqoC,QAAQW,YAAYG,GACrCS,EAAW5pC,KAAKqoC,QAAQY,WAAWE,GAYzC,MAAO,GAVShU,EACZ,IAAIuU,EAAO9mC,OAAO8mC,EAAO9mC,EAAI,OAAO8mC,EAAOzgC,OAAOygC,EAAOhqC,MACzD,GAAGgqC,EAAO9mC,EAAI,OAAO8mC,EAAO9mC,OAAO8mC,EAAOzgC,OAAOygC,EAAOhqC,SAQxC6pC,MAPDpU,EACf,IAAIwU,EAAU/mC,OAAO+mC,EAAU/mC,EAAI,OAAO+mC,EAAU1gC,OAAO0gC,EAAUjqC,MACrE,GAAGiqC,EAAU/mC,EAAI,OAAO+mC,EAAU/mC,OAAO+mC,EAAU1gC,OAAO0gC,EAAUjqC,SAK5B8pC,MAJ1BrU,EACd,IAAIyU,EAAShnC,OAAOgnC,EAAShnC,EAAI,OAAOgnC,EAAS3gC,OAAO2gC,EAASlqC,MACjE,GAAGkqC,EAAShnC,EAAI,OAAOgnC,EAAShnC,OAAOgnC,EAAS3gC,OAAO2gC,EAASlqC,SAEE+pC,GACxE,CAEA,kBAAWI,GACT,MAAMxB,EAAUX,GAAkBW,QAE5ByB,EAAUzB,EAAQC,WAAWthC,KAAKgH,GAC/B,+BACkBA,+RAImBq6B,EAAQU,SAAS/6B,GAAGpL,EAAI,QAAQylC,EAAQU,SAAS/6B,GAAGpL,yDACpDylC,EAAQW,YAAYh7B,GAAGpL,EAAI,QAAQylC,EAAQW,YAAYh7B,GAAGpL,yDAC1DylC,EAAQY,WAAWj7B,GAAGpL,EAAI,QAAQylC,EAAQY,WAAWj7B,GAAGpL,mBACnE,IAA1BylC,EAAQU,SAAS/6B,GAAGtO,EACnB,GACA,qDAAsD2oC,EAAQU,SAAS/6B,GAAGtO,EAAI,EAAK,SAAW,kBAAkB6J,KAAKu1B,IAAIuJ,EAAQU,SAAS/6B,GAAGtO,sBAEjH,IAA7B2oC,EAAQW,YAAYh7B,GAAGtO,EACtB,GACA,qDAAsD2oC,EAAQW,YAAYh7B,GAAGtO,EAAI,EAAK,SAAW,kBAAkB6J,KAAKu1B,IAAIuJ,EAAQW,YAAYh7B,GAAGtO,sBAExH,IAA5B2oC,EAAQY,WAAWj7B,GAAGtO,EACrB,GACA,qDAAsD2oC,EAAQY,WAAWj7B,GAAGtO,EAAI,EAAK,SAAW,kBAAkB6J,KAAKu1B,IAAIuJ,EAAQY,WAAWj7B,GAAGtO,yCAErG,IAA1B2oC,EAAQU,SAAS/6B,GAAGtO,EAAW,OAAS,yCAAyC2oC,EAAQU,SAAS/6B,GAAG/E,EAAI,sCAC5E,IAA7Bo/B,EAAQW,YAAYh7B,GAAGtO,EAAW,OAAS,yCAAyC2oC,EAAQW,YAAYh7B,GAAG/E,EAAI,sCACnF,IAA5Bo/B,EAAQY,WAAWj7B,GAAGtO,EAAW,OAAS,yCAAyC2oC,EAAQY,WAAWj7B,GAAG/E,EAAI,wEAC5Eo/B,EAAQE,+BAA+BF,EAAQM,aAAeN,EAAQS,mFACtET,EAAQE,+BAA+BF,EAAQO,gBAAkBP,EAAQS,mFACzET,EAAQE,+BAA+BF,EAAQQ,eAAiBR,EAAQS,qyBAiBrI,MAAO,2BAEDgB,wBAGR,CAEA,qBAAWC,GACT,MAAM1B,EAAUX,GAAkBW,QAE5ByB,EAAUzB,EAAQC,WAAWthC,KAAKgH,GAC/BqJ,CAAG;qBACK,UAAUrJ;;;;kDAImBq6B,EAAQU,SAAS/6B,GAAGpL,EAAI,QAAQylC,EAAQU,SAAS/6B,GAAGpL;kDACpDylC,EAAQW,YAAYh7B,GAAGpL,EAAI,QAAQylC,EAAQW,YAAYh7B,GAAGpL;kDAC1DylC,EAAQY,WAAWj7B,GAAGpL,EAAI,QAAQylC,EAAQY,WAAWj7B,GAAGpL;YACnE,IAA1BylC,EAAQU,SAAS/6B,GAAGtO,EACnB2X,CAAG,GACHA,CAAG,qDAAsDgxB,EAAQU,SAAS/6B,GAAGtO,EAAI,EAAK,SAAW,kBAAkB6J,KAAKu1B,IAAIuJ,EAAQU,SAAS/6B,GAAGtO;YAEpH,IAA7B2oC,EAAQW,YAAYh7B,GAAGtO,EACtB2X,CAAG,GACHA,CAAG,qDAAsDgxB,EAAQW,YAAYh7B,GAAGtO,EAAI,EAAK,SAAW,kBAAkB6J,KAAKu1B,IAAIuJ,EAAQW,YAAYh7B,GAAGtO;YAE3H,IAA5B2oC,EAAQY,WAAWj7B,GAAGtO,EACrB2X,CAAG,GACHA,CAAG,qDAAsDgxB,EAAQY,WAAWj7B,GAAGtO,EAAI,EAAK,SAAW,kBAAkB6J,KAAKu1B,IAAIuJ,EAAQY,WAAWj7B,GAAGtO;+BAExG,IAA1B2oC,EAAQU,SAAS/6B,GAAGtO,EAAW,OAAS,yCAAyC2oC,EAAQU,SAAS/6B,GAAG/E,EAAI;+BAC5E,IAA7Bo/B,EAAQW,YAAYh7B,GAAGtO,EAAW,OAAS,yCAAyC2oC,EAAQW,YAAYh7B,GAAG/E,EAAI;+BACnF,IAA5Bo/B,EAAQY,WAAWj7B,GAAGtO,EAAW,OAAS,yCAAyC2oC,EAAQY,WAAWj7B,GAAG/E,EAAI;iEAC5Eo/B,EAAQE,+BAA+BF,EAAQM,aAAeN,EAAQS;iEACtET,EAAQE,+BAA+BF,EAAQO,gBAAkBP,EAAQS;iEACzET,EAAQE,+BAA+BF,EAAQQ,eAAiBR,EAAQS;;;;;;;;;;;;;;qBAiBrI,OAAOzxB,CAAG;;;YAGFyyB;;;KAIV,CAEA,iBAAWhlC,GACT,OAAOjE,CAAG;;uCAEyBmpC,EAAUhqC,KAAKkpC,aAAa;uCAC5Bc,EAAUhqC,KAAKkpC,aAAa;uCAC5Bc,EAAUhqC,KAAKkpC,aAAa;uCAC5Bc,EAAUhqC,KAAKkpC,aAAa;;uDAEZc,EAAUhqC,KAAK8nC,MAAMnX;+CAC7BqZ,EAAUhqC,KAAK8nC,MAAMC;2CACzBiC,EAAUhqC,KAAK8nC,MAAMM;2DACL4B,EAAUhqC,KAAK8nC,MAAMnX;2CACrCqZ,EAAUhqC,KAAK8nC,MAAMI;uEACO8B,EAAUhqC,KAAK8nC,MAAMC;mEACzBiC,EAAUhqC,KAAK8nC,MAAME;iEACvBgC,EAAUhqC,KAAK8nC,MAAMI;mEACnB8B,EAAUhqC,KAAK8nC,MAAM3c;+DACzB6e,EAAUhqC,KAAK8nC,MAAMK;mEACjB6B,EAAUhqC,KAAK8nC,MAAMM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyCtF,ECzMF6B,eAAexjB,OAAO,oBAvFP,cAA+BihB,GAC5C,qBAAWhjC,GACT,MAAO,CACLwlC,SAAU,CACRrnC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKkqC,UAAW,CAClB,CAEA,iBAAWplC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuDP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;0BACWzhB,KAAKkqC;;;KAI7B;;;;;;AC3EK,MAAMtqC,GAAgBA,GAAaA,GAASZ,EC8TnDirC,eAAexjB,OAAO,oBAtUP,cAA+BihB,GAC5C,qBAAWhjC,GACT,MAAO,CACLwlC,SAAU,CACRrnC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAEXiP,IAAK,CACHrP,UAAW,MACXC,KAAMN,OACNS,SAAS,GAEX0d,IAAK,CACH9d,UAAW,MACXC,KAAMN,OACNS,SAAS,GAEXgP,KAAM,CACJpP,UAAW,OACXC,KAAMN,OACNS,SAAS,GAEXuT,MAAO,CACL3T,UAAW,QACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKkqC,UAAW,EAChBlqC,KAAKkS,SAAM9S,EACXY,KAAK2gB,SAAMvhB,EACXY,KAAKiS,UAAO7S,EACZY,KAAKwW,WAAQpX,CACf,CAEA+qC,OAAAA,CAAQtsB,GACN7d,KAAKwW,MAAQqH,EAAM8F,OAAOnN,MAC1BxW,KAAK+d,cAAc,IAAIE,YAAY,SAAU,CAC3CK,OAAQ,CACN9H,MAAOxW,KAAKwW,OAEd4H,SAAS,IAEb,CAEAgsB,QAAAA,CAASvsB,GACP7d,KAAKwW,MAAQqH,EAAM8F,OAAOnN,KAC5B,CAEA,iBAAW1R,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;uDAE8CmpC,EAAUhqC,KAAKkpC,aAAa,GAAG,GAAM;uDACrCc,EAAUhqC,KAAKkpC,aAAa,GAAG,GAAM;uDACrCc,EAAUhqC,KAAKkpC,aAAa,GAAG,GAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwP1F,CAEA/4B,MAAAA,GACE,OAAOsR,CAAI;;;;;2BAKYzhB,KAAKkqC,yCAAyCG,GAAUrqC,KAAK2gB,YAAY0pB,GAAUrqC,KAAKkS,aAAam4B,GAAUrqC,KAAKiS,gBAAgBjS,KAAKwW,iBAAiBxW,KAAKmqC,QAAQvqB,KAAK5f,gBAAgBA,KAAKoqC,SAASxqB,KAAK5f;;sCAEpMA,KAAKkqC,gBAAgBG,GAAUrqC,KAAK2gB,YAAY0pB,GAAUrqC,KAAKkS,aAAam4B,GAAUrqC,KAAKiS,gBAAgBjS,KAAKwW,gBAAgBxW,KAAKoqC,SAASxqB,KAAK5f;KAEvL,ICtKFiqC,eAAexjB,OAAO,qBA7JP,cAAgCihB,GAC7C,qBAAWhjC,GACT,MAAO,CACLwlC,SAAU,CACRrnC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAEXiP,IAAK,CACHrP,UAAW,MACXC,KAAMN,OACNS,SAAS,GAEX0d,IAAK,CACH9d,UAAW,MACXC,KAAMN,OACNS,SAAS,GAEXgP,KAAM,CACJpP,UAAW,OACXC,KAAMN,OACNS,SAAS,GAEXuT,MAAO,CACL3T,UAAW,QACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKkqC,UAAW,EAChBlqC,KAAKkS,SAAM9S,EACXY,KAAK2gB,SAAMvhB,EACXY,KAAKiS,UAAO7S,EACZY,KAAKwW,WAAQpX,CACf,CAEAgrC,QAAAA,CAASvsB,GACP7d,KAAKwW,MAAQqH,EAAM8F,OAAOnN,KAC5B,CAEA,iBAAW1R,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgGP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;;;2BAGYzhB,KAAKkqC,8BAA8BG,GAAUrqC,KAAK2gB,YAAY0pB,GAAUrqC,KAAKkS,aAAam4B,GAAUrqC,KAAKiS,gBAAgBjS,KAAKwW,gBAAgBxW,KAAKoqC,SAASxqB,KAAK5f;;KAG1L,ICmBFiqC,eAAexjB,OAAO,oBA9KP,cAA+BihB,GAC5C,qBAAWhjC,GACT,MAAO,CACL4lC,QAAS,CACPznC,UAAW,UACXC,KAAMX,QACNc,SAAS,GAEXinC,SAAU,CACRrnC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKsqC,SAAU,EACftqC,KAAKkqC,UAAW,CAClB,CAEAC,OAAAA,CAAQtsB,GACN7d,KAAKsqC,QAAUzsB,EAAM8F,OAAO2mB,QAC5BtqC,KAAK+d,cAAc,IAAIE,YAAY,SAAU,CAC3CK,OAAQ,CACNgsB,QAAStqC,KAAKsqC,SAEhBlsB,SAAS,IAEb,CAEA,iBAAWtZ,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA0HP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;oDACqCzhB,KAAKsqC,qBAAqBtqC,KAAKkqC,oBAAoBlqC,KAAKmqC,QAAQvqB,KAAK5f;;;;;;;KAQvH,ICvHFiqC,eAAexjB,OAAO,oBApDP,cAA+BihB,GAC5C,qBAAWhjC,GACT,MAAO,CACLwlC,SAAU,CACRrnC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKkqC,UAAW,CAClB,CAEA,iBAAWplC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;QAmBP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;4BACazhB,KAAKkqC;;;;KAK/B,ICrDa,SAASK,GAA0BC,GAChD,OAAO,cAAcA,EACnB,qBAAW9lC,GACT,MAAO,CACLm8B,MAAO,CACLh+B,WAAW,EACXC,KAAMN,OACNS,SAAS,GAEXwnC,OAAQ,CACN5nC,WAAW,EACXC,KAAMN,OACNS,SAAS,GAEXynC,IAAK,CACH7nC,WAAW,EACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAEArF,KAAK6gC,MAAQnwB,IACb1Q,KAAKyqC,OAAS/5B,IACd1Q,KAAK0qC,IAAMh6B,GACb,CAEAi6B,aAAAA,GACE3qC,KAAK6gC,MAAQ+J,WAAW5qC,KAAK2nC,sBAAsB,SAAU,IAC7D3nC,KAAKyqC,OAASG,WAAW5qC,KAAK2nC,sBAAsB,UAAW,IAC/D3nC,KAAK0qC,IAAME,WAAWnvB,iBAAiBxU,SAASgR,iBAAiBuD,iBAAiB,aAAc,GAClG,CAEAjU,iBAAAA,GACElC,MAAMkC,oBAENvH,KAAK6qC,eAAiB,IAAIC,eAAe9qC,KAAK2qC,cAAc/qB,KAAK5f,OACjEA,KAAK6qC,eAAeE,QAAQ/qC,KAC9B,CAEAwH,oBAAAA,GACExH,KAAK6qC,eAAeG,UAAUhrC,MAE9BqF,MAAMmC,sBACR,EAEJ,CCgHAyiC,eAAexjB,OAAO,2BA7JP,cAAqCihB,GAClD,qBAAWhjC,GACT,MAAO,CACL4lC,QAAS,CACPznC,UAAW,UACXC,KAAMX,QACNc,SAAS,GAEXinC,SAAU,CACRrnC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAEXkJ,KAAM,CACJtJ,UAAW,OACXC,KAAMC,OACNE,SAAS,GAEXuT,MAAO,CACL3T,UAAW,QACXC,KAAMC,OACNE,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKsqC,SAAU,EACftqC,KAAKkqC,UAAW,EAChBlqC,KAAKmM,UAAO/M,EACZY,KAAKwW,WAAQpX,CACf,CAEA+qC,OAAAA,CAAQtsB,GACN7d,KAAKsqC,QAAUzsB,EAAM8F,OAAO2mB,QAC5BtqC,KAAK+d,cAAc,IAAIE,YAAY,SAAU,CAC3CK,OAAQ,CACNgsB,QAAStqC,KAAKsqC,QACd9zB,MAAOxW,KAAKwW,OAEd4H,SAAS,IAEb,CAEA,iBAAWtZ,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+FP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;oDACqCzhB,KAAKmM,cAAcnM,KAAKwW,kBAAkBxW,KAAKsqC,mBAAmBtqC,KAAKmqC,QAAQvqB,KAAK5f;;;;KAKtI,ICnJa,MAAMirC,WAA2BvD,GAC9C,qBAAWhjC,GACT,MAAO,CACLwmC,YAAa,CACXroC,UAAW,cACXC,KAAMX,QACNc,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QACArF,KAAKkrC,aAAc,CACrB,CAEA,iBAAWnF,GACT,MAAO,CACLtkC,EAAGomC,GAAc,GACjB75B,EAAG65B,GAAc,GACjBh+B,EAAGg+B,GAAc,GACjBzP,GAAIyP,GAAc,GAClBnoC,EAAGmoC,GAAc,GACjB72B,KAAM,UACNM,MAAO,UACP65B,QAAStD,GAAc,GACvBv1B,MAAOu1B,GAAc,GACrBuD,GAAI,UAER,CAEA,iBAAWC,GACT,OAAO7pC,OAAOoC,KAAKqnC,GAAmBlF,QAAQjlC,QAAO,CAACwqC,EAAKC,KACzDD,EAAIC,GAAO1D,GAAkBoD,GAAmBlF,OAAOwF,GAAM,UAAlD1D,CAA6D,IACjEyD,IACN,GACL,CAEA,gBAAWE,GACT,OAAOhqC,OAAOoC,KAAKqnC,GAAmBlF,QAAQjlC,QAAO,CAACwqC,EAAKC,KACzDD,EAAIC,GAAO1D,GAAkBoD,GAAmBlF,OAAOwF,GAAM,UAAlD1D,CAA6D,IACjEyD,IACN,GACL,CAEA,iBAAWxmC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;YAIGmpC,EAAUxoC,OAAOoC,KAAKqnC,GAAmBlF,QAAQ/+B,KAAKoqB,GAC7C,YAAYA,kBAAsBA,MAAUpxB,KAAK+lC,OAAO3U,SAC9DzS,KAAK;;;YAKRqrB,EAAUxoC,OAAOoC,KAAKqnC,GAAmBlF,QAAQ/+B,KAAKoqB,GAC7C,YAAYA,wBAA4BA,YAAgBpxB,KAAKqrC,OAAOja,SAC1EzS,KAAK;;;YAKRqrB,EAAUxoC,OAAOoC,KAAKqnC,GAAmBlF,QAAQ/+B,KAAKoqB,GAC7C,YAAYA,uBAA2BA,WAAepxB,KAAKwrC,MAAMpa,SACvEzS,KAAK;;QAKlB,ECnEa,MAAM8sB,WAA2BR,GAC9C,qBAAWvmC,GACT,MAAO,CACLgnC,OAAQ,CACN7oC,UAAW,SACXC,KAAMN,OACNS,SAAS,GAEX0oC,SAAU,CACR9oC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAGX62B,SAAU,CACRj3B,UAAW,WACXC,KAAMN,OACNS,SAAS,GAEX2oC,UAAW,CACT/oC,UAAW,YACXC,KAAMN,OACNS,SAAS,GAEXmuB,MAAO,CACLvuB,UAAW,QACXC,KAAMC,OACNE,SAAS,GAGX4oC,IAAK,CACHhpC,UAAW,MACXC,KAAMX,QACNc,SAAS,GAEX6oC,MAAO,CACLjpC,UAAW,QACXC,KAAMX,QACNc,SAAS,GAEX8oC,MAAO,CACLlpC,UAAW,QACXC,KAAMX,QACNc,SAAS,GAGXa,MAAO,CACLjB,WAAW,EACXC,KAAMC,OACNE,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAK0rC,YAAStsC,EACdY,KAAK2rC,UAAW,EAEhB3rC,KAAK85B,cAAW16B,EAChBY,KAAK4rC,eAAYxsC,EACjBY,KAAK+lC,OAAS,CAAC,OAAQ,UAAW,UAAW,OAC7C/lC,KAAKoxB,WAAQhyB,EAEbY,KAAK6rC,KAAM,EACX7rC,KAAK8rC,OAAQ,EACb9rC,KAAK+rC,OAAQ,EAGb/rC,KAAKgsC,OAAS,CAAC,WAAY,UAAW,SAAU,SAChDhsC,KAAK8D,MAAQ,UACf,CAEAmoC,SAAAA,CAAU/sC,GACRc,KAAK0rC,OAASxsC,EAAEykB,OAAOnN,MACvBxW,KAAK+d,cAAc,IAAIE,YAAY,6BAA8B,CAC/DK,OAAQ,CACNotB,OAAQ1rC,KAAK0rC,QAEfttB,SAAS,IAEb,CAEA8tB,UAAAA,GACElsC,KAAK+d,cAAc,IAAIE,YAAY,+BAAgC,CACjEK,OAAQ,CAAE,EACVF,SAAS,IAEb,CAEA+tB,WAAAA,CAAYjtC,GACVc,KAAK85B,SAAW56B,EAAEykB,OAAOnN,MACzBxW,KAAK+d,cAAc,IAAIE,YAAY,+BAAgC,CACjEK,OAAQ,CACNwb,SAAU95B,KAAK85B,UAEjB1b,SAAS,IAEb,CAEAguB,YAAAA,CAAaltC,GACXc,KAAK4rC,UAAY1sC,EAAEykB,OAAOnN,MAC1BxW,KAAK+d,cAAc,IAAIE,YAAY,gCAAiC,CAClEK,OAAQ,CACNstB,UAAW5rC,KAAK4rC,WAElBxtB,SAAS,IAEb,CAEAiuB,WAAAA,CAAYntC,GACVc,KAAKoxB,MAAQlyB,EAAEykB,OAAOnN,MACtBxW,KAAK+d,cAAc,IAAIE,YAAY,4BAA6B,CAC9DK,OAAQ,CACN8S,MAAOpxB,KAAKoxB,OAEdhT,SAAS,IAEb,CAEAkuB,KAAAA,GACEtsC,KAAK8D,MAAQ,UACb9D,KAAK+d,cAAc,IAAIE,YAAY,0BAA2B,CAC5DK,OAAQ,CAAE,EACVF,SAAS,IAEb,CAEAmuB,OAAAA,GACEvsC,KAAK8D,MAAQ,SACb9D,KAAK+d,cAAc,IAAIE,YAAY,4BAA6B,CAC9DK,OAAQ,CAAE,EACVF,SAAS,IAEb,CAEAouB,OAAAA,GACExsC,KAAK8D,MAAQ,WACb9D,KAAK+d,cAAc,IAAIE,YAAY,4BAA6B,CAC9DK,OAAQ,CAAE,EACVF,SAAS,IAEb,CAEAquB,QAAAA,GACEzsC,KAAK8D,MAAQ,OACf,CAEA,iBAAWgB,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;QAwBP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;;UAELzhB,KAAK0rC,OACHjqB,CAAI,uEAAuEzhB,KAAK0rC,kBAAkB1rC,KAAKisC,UAAUrsB,KAAK5f,gBAAgBA,KAAKisC,UAAUrsB,KAAK5f,mCAC1JyhB,CAAI;UACNzhB,KAAK2rC,SACHlqB,CAAI;;gBAEAzhB,KAAK2rC,SACHlqB,CAAI,6CAA6CzhB,KAAKksC,WAAWtsB,KAAK5f,qCACtEyhB,CAAI;;YAGVA,CAAI;UACNzhB,KAAK85B,SACHrY,CAAI,4EAA4EzhB,KAAK85B,oBAAoB95B,KAAKmsC,YAAYvsB,KAAK5f,gBAAgBA,KAAKmsC,YAAYvsB,KAAK5f,qCACrKyhB,CAAI;UACNzhB,KAAK4rC,UACHnqB,CAAI,0EAA0EzhB,KAAK4rC,qBAAqB5rC,KAAKosC,aAAaxsB,KAAK5f,gBAAgBA,KAAKosC,aAAaxsB,KAAK5f,sCACtKyhB,CAAI;eACSriB,IAAfY,KAAKoxB,MACH3P,CAAI;uDACuCzhB,KAAKqsC,YAAYzsB,KAAK5f;;8EAEgB,SAAfA,KAAKoxB;iFACa,YAAfpxB,KAAKoxB;iFACU,YAAfpxB,KAAKoxB;6EACM,QAAfpxB,KAAKoxB;;YAGtE3P,CAAI;UACNzhB,KAAK6rC,KAAO7rC,KAAK8rC,OAAS9rC,KAAK+rC,MAC7BtqB,CAAI;;gBAEAzhB,KAAK6rC,IACHpqB,CAAI,2CAA0D,YAAfzhB,KAAK8D,OAAsC,UAAf9D,KAAK8D,gBAA4B9D,KAAKssC,MAAM1sB,KAAK5f,gCAC5HyhB,CAAI;gBACNzhB,KAAK8rC,MACHrqB,CAAI,6CAA4D,YAAfzhB,KAAK8D,gBAA8B9D,KAAKusC,QAAQ3sB,KAAK5f,kCACtGyhB,CAAI;gBACNzhB,KAAK+rC,MACHtqB,CAAI,6CAA4D,aAAfzhB,KAAK8D,gBAA+B9D,KAAKwsC,QAAQ5sB,KAAK5f,kCACvGyhB,CAAI;;YAGVA,CAAI;aAEd,EAGFwoB,eAAexjB,OAAO,sBAAuBglB,IC1N9B,MAAMiB,GACnBC,SAAW,EAGX,mBAAOC,CAAalB,GAClB,MAAMmB,EAAQ,CAAE,EAGVC,EAAOpB,EAAO5qC,QAClB,CAACisC,EAAaC,KACZ,OAAQA,EAAMC,SACZ,IAAK,UACHF,EAAYG,cAAgB,EAC5BH,EAAYI,cAAgBH,EAAMI,GAClC,MACF,IAAK,QACHL,EAAYM,YAAc,EAC1BN,EAAYO,YAAcN,EAAMI,GAChC,MACF,IAAK,KACHL,EAAYQ,SAAW,EAK3B,OAAOR,CAAW,GAEpB,CACEG,aAAc,EACdG,WAAY,EACZE,QAAS,EAETJ,aAAc,EACdG,WAAY,IAKhBT,EAAMK,aAAeJ,EAAKI,aAC1BL,EAAMQ,WAAaP,EAAKO,WACxBR,EAAMU,QAAUT,EAAKS,QACrBV,EAAMW,SAAWV,EAAKI,cAAgBJ,EAAKI,aAAeJ,EAAKO,WAAaP,EAAKS,SAEjFV,EAAMY,cAAgBX,EAAKK,aAAeL,EAAKI,aAC/CL,EAAMa,YAAcZ,EAAKQ,WAAaR,EAAKO,WAC3CR,EAAMc,QAAUb,EAAKK,aAAeL,EAAKQ,aAAeR,EAAKI,aAAeJ,EAAKO,YAGjF,MAAMO,EAAQlC,EAAO5qC,QACnB,CAACisC,EAAaC,KACZ,OAAQA,EAAMC,SACZ,IAAK,UACHF,EAAYc,KAAOb,EAAMI,GAAKP,EAAMc,SAAW,EAC/CZ,EAAYe,YAAcd,EAAMI,GAAKP,EAAMY,gBAAkB,EAC7D,MACF,IAAK,QACHV,EAAYc,KAAOb,EAAMI,GAAKP,EAAMc,SAAW,EAC/CZ,EAAYgB,UAAYf,EAAMI,GAAKP,EAAMa,cAAgB,EAK7D,OAAOX,CAAW,GAEpB,CACEc,GAAI,EACJC,UAAW,EACXC,QAAS,IAeb,OAVAlB,EAAMmB,YAAenB,EAAMK,aAAe,EACtC3jC,KAAKmI,KAAKk8B,EAAME,WAAajB,EAAMK,aAAe,IAClDx8B,IACJm8B,EAAMoB,UAAapB,EAAMQ,WAAa,EAClC9jC,KAAKmI,KAAKk8B,EAAMG,SAAWlB,EAAMQ,WAAa,IAC9C38B,IACJm8B,EAAMqB,KAAQrB,EAAMK,aAAeL,EAAMQ,WAAa,EAClD9jC,KAAKmI,KAAKk8B,EAAMC,IAAMhB,EAAMK,aAAeL,EAAMQ,WAAa,IAC9D38B,IAEGm8B,CACT,CAGA,aAAOsB,CAAO1sC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GACjC,MAAM0uC,EAAS3sC,EAAIuM,EAEbtD,EAAInB,KAAK8kC,KAAK,EAAKxkC,EAAIpI,EAAK/B,GAAK,GAGvC,OAAQgL,EAFEnB,KAAK8kC,KAAK,EAAKxkC,EAAIukC,EAAU1uC,GAAK,KAE1BgL,EAAI,EACxB,CAGA,aAAO4jC,CAAO7sC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GACjC,OAAOgtC,GAAQyB,OAAO1sC,EAAG,EAAIuM,GAAInE,EAAGnK,EACtC,CAIA,cAAO6uC,CAAQ9sC,EAAGuM,EAAGnE,EAAGuuB,EAAI14B,EAAIgtC,GAAQhtC,GACtC,MAAM0uC,EAAS3sC,EAAIuM,EACbtD,EAAInB,KAAK8kC,KAAO,EAAGxkC,EAAIpI,EAAK/B,GAAK,GAAK,EAI5C,OAAO04B,EAAY,MADJgW,EAASvkC,EAAMpI,EAAIoI,IAFxBN,KAAK8kC,KAAO,EAAGxkC,EAAIukC,EAAU1uC,GAAK,GAAK,GAELgL,GAE9C,CAIA,aAAO8jC,CAAO/sC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GACjC,MAAM0uC,EAAS3sC,EAAIuM,EACbtD,EAAInB,KAAK8kC,KAAO,EAAGxkC,EAAIpI,EAAK/B,GAAK,GAAK,EACtC+uC,EAAIllC,KAAK8kC,KAAO,EAAGxkC,EAAIukC,EAAU1uC,GAAK,GAAK,EAE3CgvC,IAEA7kC,EAAIpI,GAAK,GAAKgtC,EAAI,GAAKA,EAAK/jC,GAAK,KAE/B,EAAGb,EAAIpI,GAAK,EAAI,EAAIoI,EAAIukC,EAAS3sC,EAAI/B,GAAK,EAAI+B,GAAKgtC,EAAI,EAAI5kC,EAAIukC,EAAS3sC,GAAKiJ,EAEjFhL,GAAK,EAAI0uC,GAETvkC,GAAK,EAET,OAA6B,IAAtBN,KAAKmI,KAAKg9B,EACnB,CAIA,eAAOC,CAASltC,EAAGuM,EAAGnE,EAAGuuB,EAAI14B,EAAIgtC,GAAQhtC,GACvC,SAASkvC,EAAItkC,EAAG1H,GACd,OAAO2G,KAAK8kC,IAAK,EAAIxkC,EAAIjH,EAAMlD,GAAK,GAAM6J,KAAK8kC,IAAK,EAAIxkC,EAAIS,EAAM5K,GAAK,EACzE,CACA,MAAM0uC,EAAS3sC,EAAIuM,EAInB,OAAOoqB,EAAY,MAFLgW,GAAUQ,EAAIR,EAAS3sC,EAAGA,GAAKmtC,EAAI,EAAGR,IAAW,EAAI3sC,EAAImtC,EAAIR,EAAQ,KAC9EvkC,EAAI+kC,EAAIR,EAAQ3sC,GAAKmtC,GAAKntC,EAAG,IAEpC,CAIA,cAAOotC,CAAQptC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GAClC,SAASkvC,EAAItkC,EAAG1H,GACd,OAAO2G,KAAK8kC,IAAK,EAAIxkC,EAAIjH,EAAMlD,GAAK,GAAM6J,KAAK8kC,IAAK,EAAIxkC,EAAIS,EAAM5K,GAAK,EACzE,CACA,MAAM0uC,EAAS3sC,EAAIuM,EAEb0gC,GAEF,EAAKjtC,EAAImtC,EAAI,EAAGR,IACZ,EAAIvkC,EAAIpI,EAAImtC,EAAIR,EAAQ,EAAI3sC,GAAO/B,GAAK,EAAIkvC,EAAI,EAAGntC,GAAKmtC,EAAIR,EAAQ3sC,IACtE8H,KAAK8kC,IAAK,EAAIxkC,EAAIpI,EAAK/B,GAAK,IAE9BmK,GAAK,EAAI+kC,EAAI,EAAGntC,IAAM,EAAImtC,EAAIR,EAAQ3sC,IAAM,IAI5C,EAAIoI,EAAIukC,GAAU,EAAI3sC,EAAI2sC,GAAU7kC,KAAK8kC,IAAK,EAAIxkC,GAAKukC,EAAS3sC,GAAM/B,GAAK,GACzE0uC,EAAS1uC,GAAK,EAAIkvC,EAAI,EAAIR,EAAQ,EAAI3sC,KAExCoI,GAAK,EAAI+kC,EAAIR,EAAQ3sC,IAAM,GAI/B,OAA6B,IAAtB8H,KAAKmI,KAAKg9B,EACnB,CAGA,eAAOI,CAASrtC,EAAGuM,EAAGnE,EAAGuuB,EAAI14B,EAAIgtC,GAAQhtC,GACvC,OAAOgtC,GAAQiC,SAASltC,EAAG,EAAIuM,GAAInE,EAAGuuB,EAAI14B,EAC5C,CAGA,cAAOqvC,CAAQttC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GAClC,OAAOgtC,GAAQmC,QAAQptC,EAAG,EAAIuM,GAAInE,EAAGnK,EACvC,CAGA,cAAOsvC,CAAQhwC,EAAGyC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GACrC,IAAKV,EAAG,OAAO,EAEf,MAAMovC,EAAS3sC,EAAIuM,EACbihC,EAAS1lC,KAAK2rB,GAAKx1B,GAAK,EAAK+B,GAAK,EAAK8H,KAAK8kC,KAAMD,EAASvkC,EAAKnK,GAAK,GAE3E,IAAI8M,EAAI,EACJ0iC,EAAO,EACPC,EAAM,EACV,GACE3iC,GAAK,EAEL0iC,EAAO1iC,EACHjD,KAAKs2B,IAAKt2B,KAAK2rB,GAAKkZ,EAAS5hC,EAAK/K,GAClC8H,KAAK8kC,KAAI,IAASxkC,GAAK,EAAInK,GAAK,EAAO6J,KAAK2rB,IAAM,EAAI1oB,GAAK,EAAI9M,GAAK,EAAK+B,GAAK,GAAMzC,GAExFmwC,GAAOD,QACA1iC,EAAI,KAEb,OAAOyiC,EAAOE,CAChB,CAGA,cAAOC,CAAQpwC,EAAGyC,EAAGuM,EAAGnE,EAAGnK,EAAIgtC,GAAQhtC,GACrC,OAAOgtC,GAAQsC,QAAQhwC,EAAGyC,EAAG,EAAIuM,GAAInE,EAAGnK,EAC1C,CAUA,cAAO2vC,EACL7B,SAAU8B,EACVpB,KAAMqB,EACN5B,OAAQ5jC,EAACrK,EACTA,IAMA,SAAS8vC,EAAM3tC,GACb,OAAO0H,KAAKs6B,IAAIhiC,GAAK,EAAIA,GAC3B,CAEA,MAAM4tC,GAAOF,EAAK,MAAS,EACrBG,EAAM3lC,EAAI,IAEV4lC,EAAKjwC,GAAK,EACViC,EAAI6tC,EAAMF,GACVhlC,EAAK3I,GAAKA,EAAI2tC,GAAM,EAAI3tC,EAAI2tC,EAAKA,EAAK,IAAQG,EAC9C5lC,EAdN,SAAcnJ,GACZ,OAASA,EAAI,EAAK,EAAY,IAANA,EAAW,GAAO,CAC5C,CAYUigC,CAAK2O,EAAK,IAAO5vC,EAAI4K,IAAM,EAAI,GACnC7I,EAAKkuC,EAAKH,EAAMF,GAAOzlC,EACvBjH,GAAMiH,EAAIpI,EAAKkuC,EACfC,EAAQnuC,GAAK,EAAIoI,IAAO,EAAIN,KAAK8kC,IAAIzrC,KAAQ,EAAI2G,KAAK8kC,IAAIzrC,IAIhE,MAAO,CACLiH,IACApI,IACA22B,GAJmB,KAFTsX,EAAMA,EAAME,EAAM,MAO5BlwC,IAEJ,CAEA,eAAOmwC,GACL,MAAM,IAAI3vC,MAAM,+BAClB,EC9Qa,MAAM4vC,WAA4B7E,GAC/C,qBAAWvmC,GACT,MAAO,CACLqrC,SAAU,CACRltC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAEX+pC,MAAO,CACLnqC,UAAW,QACXC,KAAMX,QACNc,SAAS,GAEX+sC,OAAQ,CACNntC,UAAW,SACXC,KAAMC,OACNE,SAAS,GAEXgtC,cAAe,CACbptC,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEXitC,YAAa,CACXrtC,UAAW,eACXC,KAAMN,OACNS,SAAS,GAEXktC,SAAU,CACRttC,UAAW,qBACXC,KAAMN,OACNS,SAAS,GAGXa,MAAO,CACLjB,WAAW,EACXC,KAAMC,OACNE,SAAS,GAEXmtC,WAAY,CACVvtC,WAAW,EACXC,KAAMN,OACNS,SAAS,GAEXotC,WAAY,CACVxtC,WAAW,EACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAK+vC,UAAW,EAChB/vC,KAAKgtC,OAAQ,EACbhtC,KAAKswC,QAAU,CAAC,OAAQ,QAAS,SACjCtwC,KAAKgwC,OAAS,OAEdhwC,KAAKiwC,cAAgB,EACrBjwC,KAAKkwC,YAAc,EACnBlwC,KAAKmwC,SAAW,EAGhBnwC,KAAKgsC,OAAS,CAAC,MAAO,UAAW,YACjChsC,KAAK8D,MAAQ,MAEb9D,KAAKowC,WAAa,EAClBpwC,KAAKqwC,WAAa,EAGlBrwC,KAAKuwC,QAAU,CAAC,OAAQ,SACxBvwC,KAAKwwC,YAASpxC,EACdY,KAAKywC,UAAY,CAAC,OAAQ,SAC1BzwC,KAAK0wC,cAAWtxC,EAChBY,KAAK2wC,SAAW,CAAC,UAAW,QAAS,MACrC3wC,KAAKitC,aAAU7tC,EACfY,KAAK4wC,eAAYxxC,EACjBY,KAAKotC,QAAKhuC,EAEVY,KAAKktC,aAAe,EACpBltC,KAAKqtC,WAAa,EAClBrtC,KAAKutC,QAAU,EAEfvtC,KAAK0rC,OAAS,GACd1rC,KAAK6wC,YACP,CAEA,eAAIC,GACF,OAAQ9wC,KAAKitC,SACX,IAAK,UACH,OAAOjtC,KAAKiwC,cACd,IAAK,QACH,OAAOjwC,KAAKkwC,YACd,IAAK,KACH,OAAOlwC,KAAKmwC,SACd,QACE,OAEN,CAEA,eAAIY,GACF,OAAS/wC,KAAKktC,aAAeltC,KAAKiwC,cAC7BjwC,KAAKqtC,WAAartC,KAAKkwC,YACvBlwC,KAAKutC,QAAUvtC,KAAKmwC,QAC3B,CAEAU,UAAAA,GACE,MAAMhE,EAAQH,GAAQE,aAAa5sC,KAAK0rC,QACxClqC,OAAOixB,OAAOzyB,KAAM6sC,EACtB,CAEA/6B,KAAAA,CAAM0+B,EAAQxD,GACZhtC,KAAK4wC,UAAYjd,KAAK4D,MACtBv3B,KAAKowC,WAAapD,EAClBhtC,KAAK8D,MAAQ,UACb9D,KAAKwwC,OAASA,EACdxwC,KAAK0wC,cAAWtxC,EAChBY,KAAKitC,aAAU7tC,EACfY,KAAKotC,QAAKhuC,CACZ,CAEA2S,IAAAA,GACE/R,KAAK8D,MAAQ,gBACS1E,IAAlBY,KAAK0wC,WACP1wC,KAAKitC,QAAU,KACfjtC,KAAKutC,SAAW,EAChBvtC,KAAKotC,QAAKhuC,EAEVY,KAAK0rC,OAAOloC,KAAK,CACfwpC,MAAOhtC,KAAKowC,WACZhD,GAAIptC,KAAKotC,GACToD,OAAQxwC,KAAKwwC,OACbE,SAAU1wC,KAAK0wC,SACfzD,QAASjtC,KAAKitC,QACd+C,OAAQhwC,KAAK8wC,cAEf9wC,KAAK6wC,aAET,CAEA7/B,IAAAA,GACEhR,KAAKgxC,UAAU,OACjB,CAEA1/B,KAAAA,GACEtR,KAAKgxC,UAAU,QACjB,CAEAA,SAAAA,CAAUN,GACR1wC,KAAKotC,GAAKzZ,KAAK4D,MAAQv3B,KAAK4wC,UAC5B5wC,KAAK8D,MAAQ,WACb9D,KAAK0wC,SAAWA,EACZ1wC,KAAKwwC,SAAWxwC,KAAK0wC,UACvB1wC,KAAKitC,QAAU,UACfjtC,KAAKktC,cAAgB,GACZltC,KAAKwwC,SAAWxwC,KAAK0wC,WAC9B1wC,KAAKitC,QAAU,QACfjtC,KAAKqtC,YAAc,GAErBrtC,KAAK0rC,OAAOloC,KAAK,CACfwpC,MAAOhtC,KAAKowC,WACZhD,GAAIptC,KAAKotC,GACToD,OAAQxwC,KAAKwwC,OACbE,SAAU1wC,KAAK0wC,SACfzD,QAASjtC,KAAKitC,QACd+C,OAAQhwC,KAAK8wC,cAEf9wC,KAAK6wC,aAEL7wC,KAAK+d,cAAc,IAAIE,YAAY,uBAAwB,CACzDK,OAAQ,CACN0uB,MAAOhtC,KAAKowC,WACZhD,GAAIptC,KAAKotC,GACToD,OAAQxwC,KAAKwwC,OACbE,SAAU1wC,KAAK0wC,SACfzD,QAASjtC,KAAKitC,QACd+C,OAAQhwC,KAAK8wC,YAEb5D,aAAcltC,KAAKktC,aACnBG,WAAYrtC,KAAKqtC,WACjBE,QAASvtC,KAAKutC,QACdC,SAAUxtC,KAAKwtC,SACfG,OAAQ3tC,KAAK2tC,OACbF,cAAeztC,KAAKytC,cACpBC,YAAa1tC,KAAK0tC,YAClBQ,KAAMluC,KAAKkuC,KACXF,YAAahuC,KAAKguC,YAClBC,UAAWjuC,KAAKiuC,UAEhB8C,YAAa/wC,KAAK+wC,aAEpB3yB,SAAS,IAEb,CAEA2tB,KAAAA,GACE/rC,KAAK8D,MAAQ,MACb9D,KAAKowC,WAAa,EAClBpwC,KAAKotC,QAAKhuC,EACVY,KAAKwwC,YAASpxC,EACdY,KAAK0wC,cAAWtxC,EAChBY,KAAKitC,aAAU7tC,EACfY,KAAKktC,aAAe,EACpBltC,KAAKqtC,WAAa,EAClBrtC,KAAKutC,QAAU,EAEfvtC,KAAK0rC,OAAS,GACd1rC,KAAK6wC,YACP,CAEAI,OAAAA,CAAQpzB,GACa,YAAf7d,KAAK8D,QACW,cAAd+Z,EAAM3D,KACRla,KAAKgxC,UAAU,QACfnzB,EAAM2F,kBACiB,eAAd3F,EAAM3D,MACfla,KAAKgxC,UAAU,SACfnzB,EAAM2F,kBAGZ,CAEAjc,iBAAAA,GACElC,MAAMkC,oBAEN2M,OAAOvE,iBAAiB,UAAW3P,KAAKixC,QAAQrxB,KAAK5f,MACvD,CAEAwH,oBAAAA,GACE0M,OAAOxE,oBAAoB,UAAW1P,KAAKixC,QAAQrxB,KAAK5f,OAExDqF,MAAMmC,sBACR,CAEA,iBAAW1C,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8GP,CAEAsP,MAAAA,GACE,MAAM+gC,EAAkB,IAAIC,KAAKC,aAAa,QAAS,CACrDn2B,MAAO,WACPgnB,SAAU,MACVoP,sBAAuB,EACvBC,sBAAuB,IAEnBC,EAAgBn+B,GACb89B,EAAgBM,cAAcp+B,GAAQpM,KAAI,EAAElE,OAAM0T,WAC1C,cAAT1T,EACK,IAEF0T,IACN1V,QAAO,CAACgb,EAAQ21B,IAAkB31B,EAAS21B,IAGhD,OAAOhwB,CAAI;;;iDAGkC,aAA4B,aAAfzhB,KAAK8D,OAA0C,SAAlB9D,KAAK0wC,SAAuB,WAA8B,YAAf1wC,KAAK8D,MAAuB,UAAY,iBAAkC,YAAf9D,KAAK8D,QAA4C,IAArB9D,KAAKkrC,sBAA+BlrC,KAAKgR,KAAK4O,KAAK5f;kDAC9N,aAA4B,aAAfA,KAAK8D,OAA0C,UAAlB9D,KAAK0wC,SAAwB,WAA8B,YAAf1wC,KAAK8D,MAAuB,UAAY,iBAAkC,YAAf9D,KAAK8D,QAA4C,IAArB9D,KAAKkrC,sBAA+BlrC,KAAKsR,MAAMsO,KAAK5f;;UAExQA,KAAKgtC,OAAShtC,KAAK+vC,UAA4B,UAAhB/vC,KAAKgwC,OACnCvuB,CAAI;;gBAECzhB,KAAKgtC,MACJvrB,CAAI;;4EAEsDzhB,KAAKowC,oEAAoEpwC,KAAKqwC;0BAExI5uB,CAAI;gBACLzhB,KAAK+vC,SACJtuB,CAAI;+BACS,YAA6B,aAAfzhB,KAAK8D,OAAyB9D,KAAK+vC,SAC1D/vC,KAAKitC,QACL;sBACiB,aAAfjtC,KAAK8D,OAAyB9D,KAAK+vC,SACjB,YAAjB/vC,KAAKitC,QACJxrB,CAAI,uCACc,UAAjBzhB,KAAKitC,QACJxrB,CAAI,qCACJA,CAAI,8CACR;sBACe,aAAfzhB,KAAK8D,OAA0C,UAAhB9D,KAAKgwC,QAAsC,UAAhBhwC,KAAKgwC,OAE/DvuB,CAAI,GADJA,CAAI,wBAAwB8vB,EAAavxC,KAAK8wC;0BAGpDrvB,CAAI;gBACW,UAAhBzhB,KAAKgwC,OACJvuB,CAAI;;4EAEsD8vB,EAAavxC,KAAK+wC;0BAE5EtvB,CAAI;oBAEVA,CAAI;aAEd,EAGFwoB,eAAexjB,OAAO,uBAAwBqpB,IC7Z/B,MAAM4B,WAAyBzG,GAC5C,qBAAWvmC,GACT,MAAO,CACLitC,QAAS,CACP9uC,UAAW,UACXC,KAAMX,QACNc,SAAS,GAEX2uC,QAAS,CACP/uC,UAAW,UACXC,KAAMX,QACNc,SAAS,GAEXmuB,MAAO,CACLvuB,UAAW,QACXC,KAAMC,OACNE,SAAS,GAGXiqC,aAAc,CACZrqC,UAAW,gBACXC,KAAMN,OACNS,SAAS,GAEXoqC,WAAY,CACVxqC,UAAW,cACXC,KAAMN,OACNS,SAAS,GAEXsqC,QAAS,CACP1qC,UAAW,WACXC,KAAMN,OACNS,SAAS,GAEXuqC,SAAU,CACR3qC,UAAW,WACXC,KAAMN,OACNS,SAAS,GAEXwqC,cAAe,CACb5qC,UAAW,kBACXC,KAAMN,OACNS,SAAS,GAEXyqC,YAAa,CACX7qC,UAAW,gBACXC,KAAMN,OACNS,SAAS,GAEX0qC,OAAQ,CACN9qC,UAAW,UACXC,KAAMN,OACNS,SAAS,GAEX+qC,YAAa,CACXnrC,UAAW,gBACXC,KAAMN,OACNS,SAAS,GAEXgrC,UAAW,CACTprC,UAAW,cACXC,KAAMN,OACNS,SAAS,GAEXirC,KAAM,CACJrrC,UAAW,QACXC,KAAMN,OACNS,SAAS,GAGX+sC,OAAQ,CACNntC,UAAW,SACXC,KAAMX,QACNc,SAAS,GAEXgtC,cAAe,CACbptC,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEXitC,YAAa,CACXrtC,UAAW,eACXC,KAAMN,OACNS,SAAS,GAEXktC,SAAU,CACRttC,UAAW,qBACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAEArF,KAAK2xC,SAAU,EACf3xC,KAAK4xC,SAAU,EAEf5xC,KAAK+lC,OAAS,CAAC,OAAQ,UAAW,UAAW,OAC7C/lC,KAAKoxB,MAAQ,MAEbpxB,KAAKgwC,QAAS,EACdhwC,KAAKiwC,mBAAgB7wC,EACrBY,KAAKkwC,iBAAc9wC,EACnBY,KAAKmwC,cAAW/wC,EAEhBY,KAAKktC,aAAex8B,IACpB1Q,KAAKqtC,WAAa38B,IAClB1Q,KAAKutC,QAAU78B,IACf1Q,KAAKwtC,SAAW98B,IAChB1Q,KAAKytC,cAAgB/8B,IACrB1Q,KAAK0tC,YAAch9B,IACnB1Q,KAAK2tC,OAASj9B,IACd1Q,KAAKguC,YAAct9B,IACnB1Q,KAAKiuC,UAAYv9B,IACjB1Q,KAAKkuC,KAAOx9B,GACd,CAEAmhC,SAAAA,GACE7xC,KAAK+d,cAAc,IAAIE,YAAY,2BAA4B,CAC7DK,OAAQ,CACN4uB,aAAcltC,KAAKktC,aACnBG,WAAYrtC,KAAKqtC,WACjBE,QAASvtC,KAAKutC,QACdC,SAAUxtC,KAAKwtC,SACfC,cAAeztC,KAAKytC,cACpBC,YAAa1tC,KAAK0tC,YAClBC,OAAQ3tC,KAAK2tC,OACbK,YAAahuC,KAAKguC,YAClBC,UAAWjuC,KAAKiuC,UAChBC,KAAMluC,KAAKkuC,MAEb9vB,SAAS,IAEb,CAEA0zB,iBAAAA,CAAkB5yC,GAChBc,KAAKktC,aAAe7b,SAASnyB,EAAEykB,OAAOnN,MAAO,IAC7CxW,KAAK6xC,WACP,CAEAE,eAAAA,CAAgB7yC,GACdc,KAAKqtC,WAAahc,SAASnyB,EAAEykB,OAAOnN,MAAO,IAC3CxW,KAAK6xC,WACP,CAEAG,aAAAA,CAAc9yC,GACZc,KAAKwtC,SAAW5C,WAAW1rC,EAAEykB,OAAOnN,OACpCxW,KAAK6xC,WACP,CAEAI,kBAAAA,CAAmB/yC,GACjBc,KAAKytC,cAAgB7C,WAAW1rC,EAAEykB,OAAOnN,OACzCxW,KAAK6xC,WACP,CAEAK,gBAAAA,CAAiBhzC,GACfc,KAAK0tC,YAAc9C,WAAW1rC,EAAEykB,OAAOnN,OACvCxW,KAAK6xC,WACP,CAEAM,WAAAA,CAAYjzC,GACVc,KAAK2tC,OAAS/C,WAAW1rC,EAAEykB,OAAOnN,OAClCxW,KAAK6xC,WACP,CAEAO,gBAAAA,CAAiBlzC,GACfc,KAAKguC,YAAcpD,WAAW1rC,EAAEykB,OAAOnN,OACvCxW,KAAK6xC,WACP,CAEAQ,cAAAA,CAAenzC,GACbc,KAAKiuC,UAAYrD,WAAW1rC,EAAEykB,OAAOnN,OACrCxW,KAAK6xC,WACP,CAEAS,SAAAA,CAAUpzC,GACRc,KAAKkuC,KAAOtD,WAAW1rC,EAAEykB,OAAOnN,OAChCxW,KAAK6xC,WACP,CAEA,iBAAW/sC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuJP,CAEAsP,MAAAA,GACE,MAAM+gC,EAAkB,IAAIC,KAAKC,aAAa,QAAS,CACrDn2B,MAAO,WACPgnB,SAAU,MACVoP,sBAAuB,EACvBC,sBAAuB,IAEnBC,EAAgBn+B,GACb89B,EAAgBM,cAAcp+B,GAAQpM,KAAI,EAAElE,OAAM0T,WAC1C,cAAT1T,EACK,IAEF0T,IACN1V,QAAO,CAACgb,EAAQ21B,IAAkB31B,EAAS21B,IAGhD,IAAIvE,EACAG,EACAG,EACAC,EACAC,EACAC,EACAK,EACAC,EACAC,EA8DJ,OA7DIluC,KAAK2xC,SACPzE,EAAezrB,CAAI;yCACgBzhB,KAAKkrC,gCAAgClrC,KAAKktC,wBAAwBltC,KAAK8xC,kBAAkBlyB,KAAK5f;;YAE3HA,KAAKgwC,OAASvuB,CAAI,wBAAwB8vB,EAAavxC,KAAKiwC,wBAA0BxuB,CAAI;;QAGhG4rB,EAAa5rB,CAAI;yCACkBzhB,KAAKkrC,gCAAgClrC,KAAKqtC,sBAAsBrtC,KAAK+xC,gBAAgBnyB,KAAK5f;;YAEvHA,KAAKgwC,OAASvuB,CAAI,wBAAwB8vB,EAAavxC,KAAKkwC,sBAAwBzuB,CAAI;;QAG9F+rB,EAAW/rB,CAAI;yCACoBzhB,KAAKkrC,mDAAmDlrC,KAAKwtC,SAAS/jC,QAAQ,cAAczJ,KAAKgyC,cAAcpyB,KAAK5f;;;UAIvJytC,EAAgBhsB,CAAI;yCACezhB,KAAKkrC,gCAAgClrC,KAAKytC,cAAchkC,QAAQ,cAAczJ,KAAKiyC,mBAAmBryB,KAAK5f;;;QAI9I0tC,EAAcjsB,CAAI;yCACiBzhB,KAAKkrC,gCAAgClrC,KAAK0tC,YAAYjkC,QAAQ,cAAczJ,KAAKkyC,iBAAiBtyB,KAAK5f;;;QAI1I2tC,EAASlsB,CAAI;yCACsBzhB,KAAKkrC,gCAAgClrC,KAAK2tC,OAAOlkC,QAAQ,cAAczJ,KAAKmyC,YAAYvyB,KAAK5f;;;QAIhIguC,EAAcvsB,CAAI;yCACiBzhB,KAAKkrC,gCAAgClrC,KAAKguC,YAAYvkC,QAAQ,cAAczJ,KAAKoyC,iBAAiBxyB,KAAK5f;;;QAI1IiuC,EAAYxsB,CAAI;yCACmBzhB,KAAKkrC,gCAAgClrC,KAAKiuC,UAAUxkC,QAAQ,cAAczJ,KAAKqyC,eAAezyB,KAAK5f;;;QAItIkuC,EAAOzsB,CAAI;yCACwBzhB,KAAKkrC,gCAAgClrC,KAAKkuC,KAAKzkC,QAAQ,cAAczJ,KAAKsyC,UAAU1yB,KAAK5f;;;UAK5HktC,EAAezrB,CAAI;UACfzhB,KAAKgwC,OAASvuB,CAAI,wBAAwB8vB,EAAavxC,KAAKiwC,wBAA0BxuB,CAAI,KAC9F4rB,EAAa5rB,CAAI;UACbzhB,KAAKgwC,OAASvuB,CAAI,wBAAwB8vB,EAAavxC,KAAKkwC,sBAAwBzuB,CAAI,KAC5F+rB,EAAW/rB,CAAI,wBACfgsB,EAAgBhsB,CAAI,+BACpBisB,EAAcjsB,CAAI,6BAClBksB,EAASlsB,CAAI,uBACbusB,EAAcvsB,CAAI,6BAClBwsB,EAAYxsB,CAAI,2BAChBysB,EAAOzsB,CAAI,sBAENA,CAAI;qBACMzhB,KAAK2xC,QAAU,UAAY;;;;;;;;;;;;;;;cAejC3xC,KAAK4xC,QACJnwB,CAAI;;;uBAIJA,CAAI;;;;;;;;;gBASJyrB;;;gBAGAG;;cAEDrtC,KAAK4xC,QACJnwB,CAAI;;oBAEA+rB;uBAEJ/rB,CAAI;;;;;;;gBAOJgsB;;;gBAGAC;;cAED1tC,KAAK4xC,QACJnwB,CAAI;;oBAEAksB;uBAEJlsB,CAAI;;;;;;;gBAOJusB;;;gBAGAC;;cAEDjuC,KAAK4xC,QACJnwB,CAAI;;oBAEAysB;uBAEJzsB,CAAI;;;eAIlB,iSAGFwoB,eAAexjB,OAAO,oBAAqBirB,gsvCCxf5B,MAAMa,WAAetH,GAClC,qBAAWvmC,GACT,MAAO,CACN,CACH,CAEA3E,WAAAA,GACEsF,QAEArF,KAAKyB,EAAI,IACTzB,KAAKgO,EAAI,IACThO,KAAK6J,EAAI,IACT7J,KAAKo4B,GAAK,IAEVp4B,KAAKwyC,SAAW,CAAE,EAClBxyC,KAAKyyC,UAAY,CAAE,EAEnBzyC,KAAK0yC,SAAU,EACf1yC,KAAK2yC,QAAS,EACd3yC,KAAK4yC,OAAS,IAAIC,GAElB7yC,KAAK4yC,OAAOE,UAAaj1B,IACvB7d,KAAK0yC,SAAU,EACf1yC,KAAKyyC,UAAY50B,EAAMlR,KAAK8lC,UAC5BzyC,KAAKyB,EAAIoc,EAAMlR,KAAKqR,OAAOvc,EAC3BzB,KAAKgO,EAAI6P,EAAMlR,KAAKqR,OAAOhQ,EAC3BhO,KAAK6J,EAAIgU,EAAMlR,KAAKqR,OAAOnU,EAC3B7J,KAAKo4B,GAAKva,EAAMlR,KAAKqR,OAAOoa,GAC5Bp4B,KAAKmE,gBAELnE,KAAK+d,cAAc,IAAIE,YAAY,iBAAkB,CACnDK,OAAQ,CACN7c,EAAGzB,KAAKyB,EACRuM,EAAGhO,KAAKgO,EACRnE,EAAG7J,KAAK6J,EACRuuB,GAAIp4B,KAAKo4B,IAEXha,SAAS,KAGPpe,KAAK2yC,QACP3yC,KAAK+yC,KACP,EAGF/yC,KAAK+yC,KACP,CAEAA,GAAAA,GACO/yC,KAAK0yC,QAKR1yC,KAAK2yC,QAAS,GAJd3yC,KAAK4yC,OAAOI,YAAYhzC,KAAKwyC,UAC7BxyC,KAAK0yC,SAAU,EACf1yC,KAAK2yC,QAAS,EAIlB,CAEAM,KAAAA,GACEjzC,KAAKwyC,SAAW,CAAE,EAElBxyC,KAAK+yC,KACP,CAEAvyC,GAAAA,CAAImM,GAEF3M,KAAKwyC,SAAWU,gBAAgBvmC,GAEhC3M,KAAK+yC,KACP,CAEA,iBAAWjuC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;QAMP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;;;4BAGazhB,KAAKwyC,SAAShF,UAAU/jC,QAAQ;mCACzBzJ,KAAKwyC,SAAS/E,eAAehkC,QAAQ;4BAC5CzJ,KAAKwyC,SAAS9E,aAAajkC,QAAQ;sBACzCzJ,KAAKwyC,SAAS7E,QAAQlkC,QAAQ;iCACnBzJ,KAAKwyC,SAASxE,aAAavkC,QAAQ;0BAC1CzJ,KAAKwyC,SAASvE,WAAWxkC,QAAQ;oBACvCzJ,KAAKwyC,SAAStE,MAAMzkC,QAAQ;;;mDAGGzJ,KAAKyB,EAAEgI,QAAQ;8CACpBzJ,KAAKgO,EAAEvE,QAAQ;8CACfzJ,KAAK6J,EAAEJ,QAAQ;gDACbzJ,KAAKo4B,GAAG3uB,QAAQ;;;4BAGpCzJ,KAAKyyC,UAAUjF,UAAU/jC,QAAQ;mCAC1BzJ,KAAKyyC,UAAUhF,eAAehkC,QAAQ;4BAC7CzJ,KAAKyyC,UAAU/E,aAAajkC,QAAQ;sBAC1CzJ,KAAKyyC,UAAU9E,QAAQlkC,QAAQ;iCACpBzJ,KAAKyyC,UAAUzE,aAAavkC,QAAQ;0BAC3CzJ,KAAKyyC,UAAUxE,WAAWxkC,QAAQ;oBACxCzJ,KAAKyyC,UAAUvE,MAAMzkC,QAAQ;;;KAI/C,EAGFwgC,eAAexjB,OAAO,UAAW8rB,ICnHlB,MAAMY,WAAsBlI,GACzC,qBAAWvmC,GACT,MAAO,CACLjD,EAAG,CACDoB,UAAW,sBACXC,KAAMN,OACNS,SAAS,GAEX+K,EAAG,CACDnL,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEX4G,EAAG,CACDhH,UAAW,aACXC,KAAMN,OACNS,SAAS,GAEXm1B,GAAI,CACFv1B,UAAW,mBACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAKyB,OAAIrC,EACTY,KAAKgO,OAAI5O,EACTY,KAAK6J,OAAIzK,EACTY,KAAKo4B,QAAKh5B,CACZ,CAEAg0C,qBAAAA,CAAsBl0C,GACpBc,KAAKyB,GAAKvC,EAAEykB,OAAOnN,MACnBxW,KAAK+d,cAAc,IAAIE,YAAY,mBAAoB,CACrDK,OAAQ,CACN7c,EAAGzB,KAAKyB,GAEV2c,SAAS,IAEb,CAEAi1B,gBAAAA,CAAiBn0C,GACfc,KAAKgO,GAAK9O,EAAEykB,OAAOnN,MACnBxW,KAAK+d,cAAc,IAAIE,YAAY,mBAAoB,CACrDK,OAAQ,CACNtQ,EAAGhO,KAAKgO,GAEVoQ,SAAS,IAEb,CAEAk1B,YAAAA,CAAap0C,GACXc,KAAK6J,GAAK3K,EAAEykB,OAAOnN,MACnBxW,KAAK+d,cAAc,IAAIE,YAAY,mBAAoB,CACrDK,OAAQ,CACNzU,EAAG7J,KAAK6J,GAEVuU,SAAS,IAEb,CAEAm1B,kBAAAA,CAAmBr0C,GACjBc,KAAKo4B,IAAMl5B,EAAEykB,OAAOnN,MACpBxW,KAAK+d,cAAc,IAAIE,YAAY,oBAAqB,CACtDK,OAAQ,CACN8Z,GAAIp4B,KAAKo4B,IAEXha,SAAS,IAEb,CAEA,iBAAWtZ,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;QAwBP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;;UAEK,MAAVzhB,KAAKyB,EACHggB,CAAI,2CAA2CzhB,KAAKkrC,sDAAsDlrC,KAAKyB,EAAEgI,QAAQ,cAAczJ,KAAKozC,sBAAsBxzB,KAAK5f,gBAAgBA,KAAKozC,sBAAsBxzB,KAAK5f,8FACvNyhB,CAAI;UACI,MAAVzhB,KAAKgO,EACHyT,CAAI,2CAA2CzhB,KAAKkrC,yDAAyDlrC,KAAKgO,EAAEvE,QAAQ,cAAczJ,KAAKqzC,iBAAiBzzB,KAAK5f,gBAAgBA,KAAKqzC,iBAAiBzzB,KAAK5f,yFAChNyhB,CAAI;UACI,MAAVzhB,KAAK6J,EACH4X,CAAI,2CAA2CzhB,KAAKkrC,sDAAsDlrC,KAAK6J,EAAEJ,QAAQ,cAAczJ,KAAKszC,aAAa1zB,KAAK5f,gBAAgBA,KAAKszC,aAAa1zB,KAAK5f,qFACrMyhB,CAAI;UACK,MAAXzhB,KAAKo4B,GACH3W,CAAI,4CAA4CzhB,KAAKkrC,kDAAkDlrC,KAAKo4B,GAAG3uB,QAAQ,cAAczJ,KAAKuzC,mBAAmB3zB,KAAK5f,gBAAgBA,KAAKuzC,mBAAmB3zB,KAAK5f,4FAC/MyhB,CAAI;aAEd,EAGFwoB,eAAexjB,OAAO,iBAAkB0sB,ICvGzB,MAAMK,WAAiBjJ,GAA0BU,KAC9D,qBAAWvmC,GACT,MAAO,CACL+uC,SAAU,CACR5wC,UAAW,WACXC,KAAMX,QACNc,SAAS,GAEXywC,MAAO,CACL7wC,UAAW,QACXC,KAAMX,QACNc,SAAS,GAEX0wC,IAAK,CACH9wC,UAAW,MACXC,KAAMX,QACNc,SAAS,GAGX2wC,MAAO,CACL/wC,UAAW,QACXC,KAAMX,QACNc,SAAS,GAEXyoC,OAAQ,CACN7oC,UAAW,SACXC,KAAMN,OACNS,SAAS,GAEX+gC,KAAM,CACJnhC,UAAW,OACXC,KAAMN,OACNS,SAAS,GAGXxB,EAAG,CACDoB,UAAW,sBACXC,KAAMN,OACNS,SAAS,GAEX+K,EAAG,CACDnL,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEX4G,EAAG,CACDhH,UAAW,aACXC,KAAMN,OACNS,SAAS,GAEXm1B,GAAI,CACFv1B,UAAW,mBACXC,KAAMN,OACNS,SAAS,GAwBf,CAEAlD,WAAAA,GACEsF,QAEArF,KAAK6zC,aAAc,EACnB7zC,KAAKykB,MAAO,EAEZzkB,KAAKqT,MAAQ,CACX2kB,KAAM,CACJrX,IAAK,EACLzO,IAAK,IACLD,KAAM,EACNW,MAAOrJ,KAAKqJ,OAEdkhC,SAAU,CACRnzB,KAAO,EACPzO,IAAK,EACLD,KAAM,IACNW,MAAOrJ,KAAKqJ,OAEdmhC,QAAS,CACPpzB,IAAK,EACLzO,IAAK,GACLD,KAAM,IACNW,MAAOrJ,KAAKqJ,QAIhB5S,KAAKyzC,UAAW,EAChBzzC,KAAK0zC,OAAQ,EACb1zC,KAAK2zC,KAAM,EAEX3zC,KAAK2rC,WACL3rC,KAAK4zC,OAAQ,EACb5zC,KAAK0rC,OAAS,GAEd1rC,KAAKyB,EAAI,IACTzB,KAAKgO,EAAI,IACThO,KAAK6J,EAAI,IACT7J,KAAKo4B,GAAK,IAOVp4B,KAAK+gC,UAAY,KACjB/gC,KAAKwJ,OAAS,KAEdxJ,KAAKg0C,OAAS,KACdh0C,KAAKi0C,cAAgB,KAErBj0C,KAAK2M,KAAO,CAAE,EACd3M,KAAKk0C,MAAQ,CAAE,EACfl0C,KAAKm0C,SAAU,EACfn0C,KAAKo0C,QAAS,EAEdp0C,KAAK6wC,YACP,CAEAoC,KAAAA,GACEjzC,KAAK0rC,OAAS,EACd1rC,KAAK2M,KAAK++B,OAAS,EACrB,CAEAsB,KAAAA,CAAMA,EAAQ,IACZhtC,KAAK0rC,QAAU,EACX1rC,KAAK4zC,MACP5zC,KAAK2M,KAAK++B,OAAOloC,KAAKwpC,GAEtBhtC,KAAKm0C,SAAU,CAEnB,CAGAE,UAAAA,GACkBxM,GAAU7nC,KAAKoG,YAAYwP,OAAO,mCAC1CmnB,UAAU,OAAOnnB,OAAO,UAAUmnB,UAAU,OACpD/8B,KAAKo0C,QAAS,CAChB,CAGAE,WAAAA,GACEt0C,KAAKo0C,QAAS,EACdp0C,KAAKmE,eACP,CAEAwnC,QAAAA,GACE3rC,KAAKgkC,KAAO6D,GAAiB,EAAG,EAApBA,EACd,CAEA0M,SAAAA,CAAUvQ,EAAMviC,EAAGuM,EAAGnE,EAAGuuB,GACvB,MAAM5uB,EAASq+B,GAAgB5T,OAAO4T,GAAa7D,GAApC6D,CAA2C,EAAG7nC,KAAK+gC,WAAa,IACzEiT,GACIvyC,EAAI,EADRuyC,EAEGvyC,EAAI,EAEPwyC,EAAgBxyC,EAAIuM,EAAIvM,EAAI,EAC5B+yC,EAAQ3qC,EAAI7J,KAAK+gC,UAEjB7rB,EAAO,GAIb,IAHAA,EAAK1R,KACH,CAACxE,EAAGo5B,EAAIl5B,EAAG+0C,IAEL/+B,EAAKu/B,IAAK,GAAEv1C,EAAI80C,GAAkB9+B,EAAKu/B,IAAK,GAAEv1C,EAAI80C,GACxD9+B,EAAK1R,KAAK,CACRxE,EAAGkW,EAAKu/B,IAAG,GAAIz1C,EAAsB,IAAjBgB,KAAK+gC,UACzB7hC,EAAGgW,EAAKu/B,IAAK,GAAEv1C,EAAIs1C,EAAQ9H,GAAQhtC,EAAI8J,MAG3C,OAAO0L,CACT,CAEAw/B,wBAAAA,CAAyBjzC,EAAGuM,EAAGnE,EAAGuuB,GAChC,MAAMuc,EAAoBjI,GAAQ4B,OAAO7sC,EAAGuM,EAAGnE,GAEzC+qC,EAAO,CACX,CAAC51C,EAAG,EAAG+C,EAAG,GACV,CAAC/C,EAAGgB,KAAKo4B,GAAIr2B,EAAG,IAElB,IACE,IAAInB,EAAIZ,KAAKqT,MAAM2kB,KAAKrX,IACxB/f,GAAMZ,KAAKqT,MAAM2kB,KAAK9lB,IAAOkmB,EAC7Bx3B,GAAKZ,KAAKqT,MAAM2kB,KAAK/lB,KACjBrR,EAAI,GACNg0C,EAAKpxC,KAAK,CACRxE,EAAGo5B,EAAKx3B,EACRmB,EAAG2qC,GAAQ0C,QAAQxuC,EAAI,IAAMa,EAAGuM,EAAGnE,GAAK8qC,IAK9C,OAAOC,CACT,CAEAC,sBAAAA,CAAuBpzC,EAAGuM,EAAGnE,EAAGuuB,GAC9B,MAAM0c,EAAkBpI,GAAQyB,OAAO1sC,EAAGuM,EAAGnE,GAEvC+qC,EAAO,CACX,CAAC51C,EAAG,EAAG+C,EAAG,GACV,CAAC/C,EAAGgB,KAAKo4B,GAAIr2B,EAAG,IAElB,IACE,IAAInB,EAAIZ,KAAKqT,MAAM2kB,KAAKrX,IACxB/f,GAAMZ,KAAKqT,MAAM2kB,KAAK9lB,IAAOkmB,EAC7Bx3B,GAAKZ,KAAKqT,MAAM2kB,KAAK/lB,KACjBrR,EAAI,GACNg0C,EAAKpxC,KAAK,CACRxE,EAAGo5B,EAAKx3B,EACRmB,EAAG2qC,GAAQsC,QAAQpuC,EAAI,IAAMa,EAAGuM,EAAGnE,GAAKirC,IAK9C,OAAOF,CACT,CAEA/D,UAAAA,GACE7wC,KAAKwJ,OAASq+B,GAAiB5T,OAAO4T,GAAa7nC,KAAKgkC,MAA1C6D,CAAiD,EAAG,GAElE7nC,KAAKg0C,OAAS,CACZ/2B,OAAQjd,KAAKyB,EAAI,EACjBszC,MAAO/0C,KAAKyB,EAAI,GAElBzB,KAAKi0C,cAAgBj0C,KAAKyB,EAAIzB,KAAKgO,EAAIhO,KAAKyB,EAAI,EAG5CzB,KAAK4zC,MACP5zC,KAAK0rC,OAAS1rC,KAAK2M,KAAK++B,OAAOrrC,OAE/BL,KAAK2M,KAAK++B,OAAStpC,MAAMgU,KAAK,CAAC/V,OAAQL,KAAK0rC,SAAS,CAACx8B,EAAShD,KAC7D,MAAM83B,EAAQhkC,KAAKwJ,SAAW,IAAQ,IAChC2qC,EAAUn0C,KAAKm0C,SAAYjoC,IAAWlM,KAAK0rC,OAAS,EAGpDx2B,EAAOlV,KAAKu0C,UAAUvQ,EAAMhkC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EAAG7J,KAAKo4B,IACzD6U,EAAW/3B,EAAKu/B,IAAG,GAAIv1C,GAAKc,KAAKg0C,OAAO/2B,MAC1C,QACC/H,EAAKu/B,IAAG,GAAIv1C,GAAKc,KAAKg0C,OAAOe,MAC5B,UACA,KACA3H,EAAkB,UAAZH,EACR/3B,EAAKu/B,IAAG,GAAIz1C,GACVgB,KAAKg0C,OAAO/2B,MAAQ/H,EAAKu/B,OAAOv1C,IAAMgW,EAAKu/B,IAAG,GAAIv1C,EAAIgW,EAAKu/B,IAAG,GAAIv1C,IAChD,IAAjBc,KAAK+gC,WAEK,YAAZkM,EACC/3B,EAAKu/B,IAAK,GAAEz1C,GACVgB,KAAKg0C,OAAOe,MAAQ7/B,EAAKu/B,IAAG,GAAIv1C,IAAMgW,EAAKu/B,IAAG,GAAIv1C,EAAIgW,EAAKu/B,OAAOv1C,IAChD,IAAjBc,KAAK+gC,WAER,KAEN,MAAO,CACL70B,QAAO83B,OAAM9uB,OAAMk4B,KAAIH,UAASkH,UACjC,IAKL,MAAMa,EAAYtI,GAAQE,aACxB5sC,KAAK2M,KAAK++B,OAAOx1B,QAAQhB,IAAmBA,EAAKi/B,WAEnDn0C,KAAK2M,KAAO,IAAI3M,KAAK2M,QAASqoC,GAG9Bh1C,KAAKk0C,MAAM1G,SAAWd,GAAQ4B,OAAOtuC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,GAE1D7J,KAAKk0C,MAAMzG,cAAgBf,GAAQoC,SAAS9uC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EAAG7J,KAAKo4B,IACzEp4B,KAAKk0C,MAAMxG,YAAchB,GAAQiC,SAAS3uC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EAAG7J,KAAKo4B,IAEvEp4B,KAAKk0C,MAAMlG,YAActB,GAAQqC,QAAQ/uC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,GAC9D7J,KAAKk0C,MAAMjG,UAAYvB,GAAQmC,QAAQ7uC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,GAG5D7J,KAAKk0C,MAAMe,YAAcj1C,KAAK00C,yBAAyB10C,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EAAG7J,KAAKo4B,IACpFp4B,KAAKk0C,MAAMgB,UAAYl1C,KAAK60C,uBAAuB70C,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EAAG7J,KAAKo4B,IAEhFp4B,KAAK+d,cAAc,IAAIE,YAAY,mBAAoB,CACrDK,OAAQ,CACN3R,KAAM3M,KAAK2M,KACXunC,MAAOl0C,KAAKk0C,OAEd91B,SAAS,IAEb,CAEA,iBAAWtZ,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2RP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI,EACb,CAEAlZ,UAAAA,GACEvI,KAAK6wC,YACP,CAEApoC,MAAAA,CAAOm/B,GAIL,GAHAviC,MAAMoD,OAAOm/B,GAGTplC,OAAOyvB,MAAMjyB,KAAK6gC,QAAUr+B,OAAOyvB,MAAMjyB,KAAKyqC,SAAWjoC,OAAOyvB,MAAMjyB,KAAK0qC,KAC7E,OAGF,MAAMyK,EAAYn1C,KAAK6gC,MACjBuU,EAAap1C,KAAKyqC,OAIxB,IAAI4K,EACAC,EAJoBH,EAAYC,EAET,KAKzBE,EAAgBF,EAChBC,EANyB,IAMVC,IAEfD,EAAeF,EACfG,EAAgBD,EATS,KAY3B,MAAME,EACC,EAAIv1C,KAAK0qC,IADV6K,EAEI,EAAIv1C,KAAK0qC,IAFb6K,EAGE,KAAOv1C,KAAK0qC,IAHd6K,EAIG,KAAOv1C,KAAK0qC,IAEfD,EAAS6K,GAAiBC,EAAaA,GACvC1U,EAAQwU,GAAgBE,EAAcA,GAEtCC,EAAY,IAAOx1C,KAAK0qC,IACxB+K,EAA0B,GAAThL,EACjBiL,EAAyB,IAATjL,EAAgB+K,EAEhCG,EAAW,IAAO31C,KAAK0qC,IACvBkL,EAAoB,GAAR/U,EACZgV,EAAwB,GAARhV,EAAe8U,EAE/BG,EAAqBzkB,SAASrxB,KAAK2nC,sBAAsB,0BAA2B,IAOpFoO,EAAYlO,KACfrzB,OAAO,CAACxU,KAAKqT,MAAM2kB,KAAKrX,IAAK3gB,KAAKqT,MAAM2kB,KAAK9lB,MAC7C0C,MAAM,CAAC,EAAGghC,IAGPI,EAAgBnO,KACnBrzB,OAAO,CAACxU,KAAKqT,MAAMygC,SAASnzB,IAAK3gB,KAAKqT,MAAMygC,SAAS5hC,MACrD0C,MAAM,CAAC6gC,EAAgB,IAGpBQ,EAAsBpO,KACzBrzB,OAAO,CAACxU,KAAKqT,MAAM0gC,QAAQpzB,IAAK3gB,KAAKqT,MAAM0gC,QAAQ7hC,MACnD0C,MAAM,CAAC8gC,EAAe,IAGnBQ,EAAoBrO,KACvBrzB,OAAO,CAACxU,KAAKqT,MAAM0gC,QAAQpzB,IAAK3gB,KAAKqT,MAAM0gC,QAAQ7hC,MACnD0C,MAAM,CAAC,EAAG8gC,IAGPS,EAAgBtO,KACnBrzB,OAAO,CAAC,EAAG,IACXI,MAAM,CAAC,EAAG61B,IAOP2L,EAAUvO,KACbnkB,SAAQ,CAAC7F,EAAOpE,KACR,CAACnP,EAAGyrC,EAAUt8B,EAAM2e,IAAKx1B,EAAGozC,EAAcv8B,EAAMw6B,mBAExDp9B,GAAG,SAAUgH,IAEZgqB,GADgBhqB,EAAMsE,eACHX,QAAQ,YAAY,EAAK,IAE7C3K,GAAG,QAASgH,IACX7d,KAAKykB,MAAO,EACZ,MAAM4xB,IAAQx4B,EAAMqE,YAAYo0B,WAC3B/sC,KAAKu1B,IAAIjhB,EAAMvT,EAAIuT,EAAM6F,QAAQpZ,GAAKf,KAAKu1B,IAAIjhB,EAAMjb,EAAIib,EAAM6F,QAAQ9gB,GACtE,KACA,KAEN,IAAIw1B,EAAK2d,EAAU3Q,OAAOvnB,EAAMvT,GAC5B0D,GAAKgoC,EAAc5Q,OAAOvnB,EAAMjb,GAAM5C,KAAKyB,EAAI,GAAMzB,KAAKyB,EAE9D22B,EAAgB,MAAVie,EACFN,EAAU3Q,OAAOvnB,EAAM6F,QAAQpZ,GAC9B8tB,EAAK,EACJ,EACCA,EAAK,IACJ,IACAA,EAERpqB,EAAe,OAAVqoC,GACAL,EAAc5Q,OAAOvnB,EAAM6F,QAAQ9gB,GAAM5C,KAAKyB,EAAI,GAAMzB,KAAKyB,EAC7DuM,EAAI,IACH,IACCA,EAAI,IACH,IACAA,EACRhO,KAAKo4B,GAAKA,EACVp4B,KAAKgO,EAAIA,EACThO,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,eAAgB,CACjDK,OAAQ,CACN8Z,GAAIp4B,KAAKo4B,IAEXha,SAAS,KAEXpe,KAAK+d,cAAc,IAAIE,YAAY,cAAe,CAChDK,OAAQ,CACNtQ,EAAGhO,KAAKgO,GAEVoQ,SAAS,IACR,IAEJvH,GAAG,OAAQgH,IAEVgqB,GADgBhqB,EAAMsE,eACHX,QAAQ,YAAY,GACvCxhB,KAAKykB,MAAO,CAAK,IAIf8xB,EAAY1O,KACfhxB,GAAG,SAAUgH,IAEZgqB,GADgBhqB,EAAMsE,eACHX,QAAQ,YAAY,EAAK,IAE7C3K,GAAG,QAASgH,IACX7d,KAAKykB,MAAO,EACZ,IAAI5a,GAAMmsC,EAAc5Q,OAAOvnB,EAAMjb,GAAK5C,KAAKi0C,gBAC1C8B,EAAU3Q,OAAOvnB,EAAMvT,GAAKtK,KAAKo4B,IAAO,IAE7CvuB,EAAKA,EAAI,IACL,IACCA,EAAI,EACH,EACAA,EACN7J,KAAK6J,EAAIA,EACT7J,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,cAAe,CAChDK,OAAQ,CACNzU,EAAG7J,KAAK6J,GAEVuU,SAAS,IACR,IAEJvH,GAAG,OAAQgH,IAEVgqB,GADgBhqB,EAAMsE,eACHX,QAAQ,YAAY,GACvCxhB,KAAKykB,MAAO,CAAK,IAIf+xB,EAAe3O,KAClBnkB,SAAQ,CAAC7F,EAAOpE,KACR,CAACnP,EAAG,EAAG1H,EAAGozC,EAAcv8B,EAAMjD,WAEtCK,GAAG,SAAUgH,IAEZgqB,GADgBhqB,EAAMsE,eACHX,QAAQ,YAAY,EAAK,IAE7C3K,GAAG,QAAQ,CAACgH,EAAOpE,KAClBzZ,KAAKykB,MAAO,EACZ,IAAIgyB,EAAWT,EAAc5Q,OAAOvnB,EAAMjb,GAE1C6zC,EAAYA,EAAWz2C,KAAKqT,MAAMygC,SAASnzB,IACvC3gB,KAAKqT,MAAMygC,SAASnzB,IACnB81B,EAAWz2C,KAAKqT,MAAMygC,SAAS5hC,IAC9BlS,KAAKqT,MAAMygC,SAAS5hC,IACH,UAAhBuH,EAAMi9B,OAAqBD,EAAW,KACrC,KACiB,UAAhBh9B,EAAMi9B,OAAqBD,GAAW,MACrC,KACAA,EACVz2C,KAAKyB,EAAI8H,KAAKu1B,IAAe,EAAX2X,GAClBz2C,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,cAAe,CAChDK,OAAQ,CACN7c,EAAGzB,KAAKyB,GAEV2c,SAAS,IACR,IAEJvH,GAAG,OAAQgH,IAEVgqB,GADgBhqB,EAAMsE,eACHX,QAAQ,YAAY,GACvCxhB,KAAKykB,MAAO,CAAK,IAQfkyB,EAAe9O,KAClBv9B,GAAGmP,GAAmBs8B,EAAUt8B,EAAMza,KACtC4D,GAAG6W,GAAmBu8B,EAAcv8B,EAAMva,KAGvC03C,EAAqB/O,KACxBv9B,GAAGmP,GAAmBs8B,EAAUt8B,EAAMza,KACtC4D,GAAG6W,GAAmBw8B,EAAoBx8B,EAAM1X,KAG7C80C,EAAmBhP,KACtBv9B,GAAGmP,GAAmBs8B,EAAUt8B,EAAMza,KACtC4D,GAAG6W,GAAmBy8B,EAAkBz8B,EAAM1X,KAQ3C+0C,EAAYjP,GAAU7nC,KAAKoG,YAAY+O,UAAU,SACpDxI,KAAK,CAAC,CACLk0B,MAAO7gC,KAAK6gC,MACZ4J,OAAQzqC,KAAKyqC,OACbC,IAAK1qC,KAAK0qC,OAGRqM,EAAWD,EAAUrhC,QAAQ/I,OAAO,OACvC8U,QAAQ,QAAQ,GAChBC,KAAKwpB,GAAmBpB,SACrBA,EAAUkN,EAASrqC,OAAO,QAEhCm9B,EAAQn9B,OAAO,UACZgJ,KAAK,KAAM,iBACXA,KAAK,SAAU,sBACfA,KAAK,cAAe,kBACpBA,KAAK,UAAW,eAChBA,KAAK,OAAQ,KACbA,KAAK,OAAQ,KACbA,KAAK,cAAe,MACpBA,KAAK,eAAgB,MACrBhJ,OAAO,QACPgJ,KAAK,SAAU,kBACfA,KAAK,OAAQ,kBACbA,KAAK,IAAK,0BAEbm0B,EAAQn9B,OAAO,UACZgJ,KAAK,KAAM,gBACXA,KAAK,SAAU,sBACfA,KAAK,cAAe,kBACpBA,KAAK,UAAW,eAChBA,KAAK,OAAQ,KACbA,KAAK,OAAQ,KACbA,KAAK,cAAe,MACpBA,KAAK,eAAgB,MACrBhJ,OAAO,QACPgJ,KAAK,SAAU,kBACfA,KAAK,OAAQ,kBACbA,KAAK,eAAgB,KACrBA,KAAK,IAAK,gBACbm0B,EAAQn9B,OAAO,UACZgJ,KAAK,KAAM,eACXA,KAAK,SAAU,sBACfA,KAAK,cAAe,kBACpBA,KAAK,UAAW,eAChBA,KAAK,OAAQ,KACbA,KAAK,OAAQ,KACbA,KAAK,cAAe,MACpBA,KAAK,eAAgB,MACrBhJ,OAAO,QACPgJ,KAAK,SAAU,kBACfA,KAAK,OAAQ,kBACbA,KAAK,eAAgB,KACrBA,KAAK,IAAK,gBACb,MAAMshC,EAAWnN,EAAQn9B,OAAO,kBAC7BgJ,KAAK,KAAM,gBACXA,KAAK,gBAAiB,kBACtBA,KAAK,sBAAuB,aAC5BA,KAAK,KAAM,KACXA,KAAK,KAAM,KACXA,KAAK,KAAMsgC,EAAch2C,KAAKg0C,OAAOe,QACrCr/B,KAAK,KAAMsgC,EAAch2C,KAAKg0C,OAAO/2B,QACxC+5B,EAAStqC,OAAO,QACb8U,QAAQ,UAAU,GAClB9L,KAAK,SAAU,MAClBshC,EAAStqC,OAAO,QACb8U,QAAQ,YAAY,GACpB9L,KAAK,SAAU,QAElB,MAAMuhC,EAAWF,EAASjhC,MAAMghC,GAC7BphC,KAAK,UAAW,OAAO2/B,KAAgBC,KAIpC4B,EAAoBD,EAAS9hC,UAAU,iBAC1CxI,KAAK,CACJ,CACEsgC,QAAS,UACTtgC,KAAM,CACJghC,OAAQ3tC,KAAK2M,KAAK8gC,cAClBS,KAAMluC,KAAK2M,KAAKqhC,aAElBkG,MAAO,CACLvG,OAAQ3tC,KAAKk0C,MAAMzG,cACnBS,KAAMluC,KAAKk0C,MAAMlG,YACjB4G,KAAM50C,KAAKk0C,MAAMe,aAEnBkC,aAAclB,EACdmB,YAAaR,EACbS,kBAAmBr3C,KAAK00C,yBAAyB90B,KAAK5f,OAExD,CACEitC,QAAS,QACTtgC,KAAM,CACJghC,OAAQ3tC,KAAK2M,KAAK+gC,YAClBQ,KAAMluC,KAAK2M,KAAKshC,WAElBiG,MAAO,CACLvG,OAAQ3tC,KAAKk0C,MAAMxG,YACnBQ,KAAMluC,KAAKk0C,MAAMjG,UACjB2G,KAAM50C,KAAKk0C,MAAMgB,WAEnBiC,aAAcjB,EACdkB,YAAaP,EACbQ,kBAAmBr3C,KAAK60C,uBAAuBj1B,KAAK5f,SAIpDs3C,EAAoBP,EAASrqC,OAAO,KACvC8U,QAAQ,iBAAiB,GACtB+1B,EAAmBL,EAAkBzhC,QAAQ/I,OAAO,KACvDgJ,KAAK,SAAU+D,GAAmB,gBAAgBA,EAAMwzB,YACrDuK,EAAoBT,EAASrqC,OAAO,KACvC8U,QAAQ,iBAAiB,GAEtBi2B,EAAoBR,EAASrhC,OAAO,kBACvCF,KAAK,YAAa,aAAa6/B,MAAgBA,EAAaG,EAAgBF,MACzEkC,EAAmBH,EAAiBzhC,MAAMohC,GAC7CxhC,KAAK,aAAc+D,GACX,aAAa87B,MACC,YAAlB97B,EAAMwzB,QACHsI,EACAA,EAAaG,EAAgBD,EAAiB,EAAID,OAGtDmC,EAAoBV,EAASrhC,OAAO,kBACvCF,KAAK,YAAa,aAAa6/B,EAAcK,EAAYD,MAAaJ,MAIzE+B,EAAkB5qC,OAAO,YACtBgJ,KAAK,KAAM,iBACXhJ,OAAO,QAEV+qC,EAAkB7hC,OAAO,iBACtBF,KAAK,IAAKsgC,EAAch2C,KAAKg0C,OAAOe,QACpCr/B,KAAK,SAAUsgC,EAAch2C,KAAKg0C,OAAO/2B,OAAS+4B,EAAch2C,KAAKg0C,OAAOe,OAAS,GACrFr/B,KAAK,QAASkgC,EAAY,GAQ7B,MAAMgC,EAA0BN,EAAkB5qC,OAAO,KACtD8U,QAAQ,cAAc,GACnBq2B,EAAyBN,EAAiB7qC,OAAO,KACpD8U,QAAQ,cAAc,GACnBs2B,EAA0BN,EAAkB9qC,OAAO,KACtD8U,QAAQ,cAAc,GAEnBu2B,EAA0BN,EAAkB7hC,OAAO,eACnDoiC,EAAyBN,EAAiB9hC,OAAO,eACjDqiC,EAA0BN,EAAkB/hC,OAAO,eAIzD0hC,EAAkB5qC,OAAO,KACtB8U,QAAQ,WAAW,GACnB9U,OAAO,KAAK8U,QAAQ,SAAS,GAChC,MAAM02B,EAAsBX,EAAiB7qC,OAAO,KACjD8U,QAAQ,WAAW,GACtBg2B,EAAkB9qC,OAAO,KACtB8U,QAAQ,WAAW,GAEtB,MAAM22B,EAAuBV,EAAkB7hC,OAAO,YAChDwiC,EAAsBV,EAAiB9hC,OAAO,YAC9CyiC,EAAuBV,EAAkB/hC,OAAO,YAItD0hC,EAAkB5qC,OAAO,KACtB8U,QAAQ,aAAa,GACxB+1B,EAAiB7qC,OAAO,KACrB8U,QAAQ,aAAa,GACxBg2B,EAAkB9qC,OAAO,KACtB8U,QAAQ,aAAa,GAExB,MAAM82B,EAAyBb,EAAkB7hC,OAAO,cAClD2iC,EAAwBb,EAAiB9hC,OAAO,cAStDgiC,EAAwBlrC,OAAO,QAC5B8U,QAAQ,cAAc,GACzBq2B,EAAuBnrC,OAAO,QAC3B8U,QAAQ,cAAc,GAEzBu2B,EAAwBniC,OAAO,eAC5BI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,IAAKsgC,EAAch2C,KAAKg0C,OAAOe,QACpCr/B,KAAK,SAAUsgC,EAAch2C,KAAKg0C,OAAO/2B,OAAS+4B,EAAch2C,KAAKg0C,OAAOe,QAC5Er/B,KAAK,QAASkgC,GACjBoC,EAAuBpiC,OAAO,eAC3BI,aACA8jB,SAASgc,GACT/b,KAAK8N,IACLnyB,KAAK,SAAUggC,GACfhgC,KAAK,QAASkgC,GAIjBiC,EACG3hC,QAAQuD,GAAqC,UAAlBA,EAAMwzB,UACjCvgC,OAAO,KACP8U,QAAQ,aAAa,GAExB,MAAMg3B,EAAiBR,EACpB9hC,QAAQuD,GAAqC,UAAlBA,EAAMwzB,UACjCr3B,OAAO,cACPF,KAAK,YAAa,gBAAgBggC,EAAiB,IAAO11C,KAAK0qC,Q1Jh5B/D,IAAoBr3B,G0Ji5BKmlC,EAAexiC,aACxC8jB,SAASgc,GACT/b,KAAK8N,IACL3jC,M1Jp5BoBmP,G0Jo5BD0iC,E1Jn5BjBriC,GAAKV,GAAQK,M0Jo5BfqC,KAAK,YAAa,MAClBA,KAAK,cAAe,MACHP,UAAU,cAC3BO,KAAK,SAAU,MAIlB,MAAM+iC,GAAiBZ,EACpB3hC,QAAQuD,GAAqC,UAAlBA,EAAMwzB,UACjCvgC,OAAO,QACP8U,QAAQ,cAAc,GACtB9L,KAAK,cAAe,UACvB+iC,GAAe/rC,OAAO,SACnB8U,QAAQ,QAAQ,GAChB3L,KAAK,aAERmiC,EACG9hC,QAAQuD,GAAqC,UAAlBA,EAAMwzB,UACjCr3B,OAAO,eACPI,aACA8jB,SAASgc,GACT/b,KAAK8N,IACLnyB,KACC,YACA,aAAckgC,EAAY,MAAQF,EAAiB,IAAM11C,KAAK0qC,QAKlEkN,EAAwBlrC,OAAO,KAC5B8U,QAAQ,iBAAiB,GAC5Bq2B,EAAuBnrC,OAAO,KAC3BgJ,KAAK,SAAU+D,GAAmB,gBAAgBA,EAAMwzB,YAC3D6K,EAAwBprC,OAAO,KAC5B8U,QAAQ,iBAAiB,GAE5B,MAAMk3B,GAAqBX,EAAwBniC,OAAO,kBACvDF,KAAK,YAAa,cAAkB,IAAG1V,KAAK0qC,WACzCiO,GAAoBX,EAAuBpiC,OAAO,iBACrDF,KAAK,YAAa,cAAkB,IAAG1V,KAAK0qC,WACzCkO,GAAqBX,EAAwBriC,OAAO,kBACvDF,KAAK,YAAa,aAAamgC,EAAiB,IAAO71C,KAAK0qC,WACzDmO,GAA0BH,GAAmB1iC,aAChD8jB,SAASgc,GACT/b,KAAK8N,IACL3jC,KAAK2jC,GAAYmO,IACjBtgC,KAAK,YAAa,MAClBA,KAAK,cAAe,MACjBojC,GAAyBH,GAAkB3iC,aAC9C8jB,SAASgc,GACT/b,KAAK8N,IACL1xB,MAAK,CAACsD,EAAOvN,EAAO6sC,KACnBlR,GAAYpuB,EAAM09B,cAAc7iC,MAAM,EAAtCuzB,CAAyCA,GAAUkR,EAAS7sC,IAAQ,IAErEwJ,KAAK,YAAa,MAClBA,KAAK,cAAe,MACjBsjC,GAA0BJ,GAAmB5iC,aAChD8jB,SAASgc,GACT/b,KAAK8N,IACL3jC,K1Jp9BA,SAAmBmP,GACxB,OAAOK,GAAKpC,GAAO+B,EACrB,C0Jk9BYw0B,CAAasO,IAClBzgC,KAAK,YAAa,MAClBA,KAAK,cAAe,MACvBmjC,GAAwB1jC,UAAU,cAC/BO,KAAK,SAAU,MAClBojC,GAAuB3jC,UAAU,cAC9BO,KAAK,SAAU,MAClBsjC,GAAwB7jC,UAAU,cAC/BO,KAAK,SAAU,MAIlB,MAAMujC,GAAqBrB,EAAwBlrC,OAAO,QACvD8U,QAAQ,kBAAkB,GAC1B9L,KAAK,cAAe,UACjBwjC,GAAoBrB,EAAuBnrC,OAAO,QACrDgJ,KAAK,SAAU+D,GAAmB,iBAAiBA,EAAMwzB,YACzDv3B,KAAK,cAAe,UACjByjC,GAAqBrB,EAAwBprC,OAAO,QACvD8U,QAAQ,kBAAkB,GAC1B9L,KAAK,cAAe,UACvBujC,GAAmBvsC,OAAO,SACvB8U,QAAQ,QAAQ,GAChB3L,KAAK,YACRqjC,GAAkBxsC,OAAO,SACtB8U,QAAQ,QAAQ,GAChB3L,KAAK,WACRsjC,GAAmBzsC,OAAO,SACvB8U,QAAQ,QAAQ,GAChB3L,KAAK,YAERkiC,EAAwBniC,OAAO,mBAC5BI,aACA8jB,SAASgc,GACT/b,KAAK8N,IACLnyB,KAAK,YAAa,cAAa,IAAO1V,KAAK0qC,QAAS+K,EAAiB,iBACxEuC,EAAuBpiC,OAAO,kBAC3BI,aACA8jB,SAASgc,GACT/b,KAAK8N,IACLnyB,KAAK,YAAa,cAAa,IAAO1V,KAAK0qC,QAASgL,EAAgB,iBACvEuC,EAAwBriC,OAAO,mBAC5BI,aACA8jB,SAASgc,GACT/b,KAAK8N,IACLnyB,KAAK,YAAa,aAAamgC,EAAgB,KAAO71C,KAAK0qC,QAASD,EAAS,gBAQhF,MAAM2O,GAAajB,EAAqBviC,OAAO,UAAUT,UAAU,SAChExI,KACC3M,KAAK2M,KAAK++B,OAAOx1B,QAAQ82B,QAAkC5tC,IAAf4tC,EAAM93B,QAGhDmkC,GAAUxR,KACVyR,GAAYF,GAAW3jC,QAAQ/I,OAAO,KACzC8U,QAAQ,QAAQ,GAChB9L,KAAK,2BAA4B,GACjCmB,GAAG,gBAAgB,CAACgH,EAAOpE,KAC1B,IAAKzZ,KAAKykB,KAAM,CACdojB,GAAUhqB,EAAMsE,eACbX,QAAQ,aAAa,GACrBxE,QACH,MAAMu8B,EAAYjB,EAAuB5rC,OAAO,KAC7C8U,QAAQ,YAAY/H,EAAMwzB,WAAW,GAClCpqB,EAAO02B,EAAU7sC,OAAO,QAOxB8sC,EANOD,EAAU7sC,OAAO,QAC3BmJ,KAAK,QAAQ4D,EAAM2zB,GAAG3jC,aACtBiM,KAAK,IAAKqgC,EAAUt8B,EAAM2zB,KAC1B13B,KAAK,IAAuB,YAAlB+D,EAAMwzB,QACb+I,EAAch2C,KAAKg0C,OAAOe,OAAoB,IAAX/0C,KAAK0qC,IACxCsL,EAAch2C,KAAKg0C,OAAO/2B,OAAoB,KAAXjd,KAAK0qC,KAC5BzxB,OAAOwgC,UACzB52B,EACGnN,KAAK,IAAK8jC,EAAKlvC,EAAe,KAAXtK,KAAK0qC,KACxBh1B,KAAK,IAAK8jC,EAAK52C,EAAe,KAAX5C,KAAK0qC,KACxBh1B,KAAK,QAAS8jC,EAAK3Y,MAAmB,IAAX7gC,KAAK0qC,KAChCh1B,KAAK,SAAU8jC,EAAK/O,OAAoB,IAAXzqC,KAAK0qC,KACrC2O,GAAQ74C,IAAIqd,EAAMsE,cAAeo3B,EACnC,KAED1iC,GAAG,cAAc,CAACgH,EAAOpE,KACnBzZ,KAAKykB,OACRojB,GAAUhqB,EAAMsE,eACbX,QAAQ,aAAa,GACrBvE,QACHY,EAAMsE,cAAczU,WAAWkB,aAC7BiP,EAAMsE,cACNtE,EAAMsE,cAAczU,WAAW2L,SAASI,EAAMvN,QAEhDmtC,GAAQ/4C,IAAIud,EAAMsE,eAAenT,SACnC,IAEJsqC,GAAU5sC,OAAO,QACd8U,QAAQ,SAAS,GACjB9L,KAAK,YAAa,uBAClBA,KAAK,aAAc,GACnBA,KAAK,oBAAqB,GAE7B,MAAMgkC,GAAYJ,GAAUxjC,MAAMsjC,IAC/B1jC,KAAK,SAAU+D,GACP,QAAQA,EAAMwzB,YAEzByM,GAAU9jC,OAAO,UACdI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,UAAW+D,GACRzZ,KAAK2nC,sBAAsB,YAAYluB,EAAMwzB,aAErDhS,UAAU,KAAK,CAACxhB,EAAOvN,EAAO6sC,KAC7B,MAAM7pC,EAAU6pC,EAAS7sC,GACnBytC,EAAe9R,QACJzoC,IAAd8P,EAAQzN,EAAmByN,EAAQzN,EAAIzB,KAAKyB,EAC7CzB,KAAKyB,GAEDm4C,EAAe/R,QACJzoC,IAAd8P,EAAQlB,EAAmBkB,EAAQlB,EAAIhO,KAAKgO,EAC7ChO,KAAKgO,GAED6rC,EAAehS,QACJzoC,IAAd8P,EAAQrF,EAAmBqF,EAAQrF,EAAI7J,KAAK6J,EAC7C7J,KAAK6J,GAEDiwC,EAAgBjS,QACJzoC,IAAf8P,EAAQkpB,GAAoBlpB,EAAQkpB,GAAKp4B,KAAKo4B,GAC/Cp4B,KAAKo4B,IAEP,OAAQJ,IACN9oB,EAAQzN,EAAIk4C,EAAa3hB,GACzB9oB,EAAQlB,EAAI4rC,EAAa5hB,GACzB9oB,EAAQrF,EAAIgwC,EAAa7hB,GACzB9oB,EAAQkpB,GAAK0hB,EAAc9hB,GAC3B,MAAM9iB,EAAOlV,KAAKu0C,UAAU96B,EAAMuqB,KAAM90B,EAAQzN,EAAGyN,EAAQlB,EAAGkB,EAAQrF,EAAGqF,EAAQkpB,IACjF,OAAOue,EAAazhC,EAAK,CAC1B,IAGL,MAAM6kC,GAAqBL,GAAUxjC,QAAQuD,GACnCA,EAAM06B,UAAYn0C,KAAKo0C,SAEjC,IAAK2F,GAAmBthC,QAAS,CAC/B,MAAMuhC,EAAWD,GAAmBrkC,KAAK,4BACnCukC,EAAWjiB,GACR6P,KAAiBrzB,OAAO,CAAC,EAAG,IAAII,MAAM,CAAColC,EAAU,GAAjDnS,CAAqD7P,GAExDkiB,EAAqBC,GACjBniB,GACC6P,KACJrzB,OAAO,CAAC2lC,EAAaH,GAAW,IAAIplC,MAAM,CAAC,EAAG,GAD1CizB,CAC8CsS,EAAaniB,IAGtE+hB,GACGv4B,QAAQ,WAAW,GACnB5L,OAAO,UACPF,KAAK,mBAAoB,GAC5BqkC,GACG/jC,WAAW,OACX8jB,UAAUrgB,GAEFlQ,KAAK6I,MAAkB,IAAXqH,EAAM2zB,IAAa,EAAI4M,MAE3CjgB,KAAKkgB,GACLvkC,KAAK,2BAA4B,GACjCE,OAAO,UACPqlB,UAAU,qBAAqB,CAACxhB,EAAOvN,EAAO6sC,KAC7C,MACMqB,EAAevS,GADLkR,EAAS7sC,GAEfF,aAAa,qBACrB,GAEF,OAAQgsB,GAAkBoiB,EAAaF,EAAkBrS,GAAlBqS,CAAiCliB,GAAS,IAElFnhB,GAAG,OAAO,CAAC4C,EAAOvN,EAAO6sC,KAExBlR,GADgBkR,EAAS7sC,GACPmuC,eACf74B,QAAQ,WAAW,GACnB9L,KAAK,2BAA4B,MACpC+D,EAAM06B,SAAU,EAChBn0C,KAAKm0C,SAAU,EACfn0C,KAAK6wC,aACL7wC,KAAKmE,gBACLnE,KAAK+d,cAAc,IAAIE,YAAY,uBAAwB,CACzDK,OAAQ,CACN2uB,QAASxzB,EAAMwzB,QACftgC,KAAM3M,KAAK2M,KACXunC,MAAOl0C,KAAKk0C,OAEd91B,SAAS,IACR,GAET,CAEA,MAAMk8B,GAAqBZ,GAAUxjC,QAAQuD,GACnCA,EAAM06B,SAAWn0C,KAAKo0C,SAEhC,IAAKkG,GAAmB7hC,QAAS,CAC/B,MAAMuhC,EAAWM,GAAmB5kC,KAAK,4BACzC4kC,GACG94B,QAAQ,WAAW,GACnB5L,OAAO,UACPF,KAAK,mBAAoB,GACzBA,KAAK,qBAAqB,IACJmyB,GAAe,EAAG,EAChCuS,CAAavS,GAAcmS,KAExC,CAEAN,GAAUxjC,QAAQuD,IAAqBA,EAAM06B,UAC1Cz+B,KAAK,2BAA4B,MAEpC0jC,GAAW7jC,OAAOvG,SAIlB,MAAMurC,GAAYrC,EAAoBxrC,OAAO,KAC1CgJ,KAAK,SAAU+D,GAAmB,QAAQA,EAAMwzB,YACnDsN,GAAU7tC,OAAO,QACd8U,QAAQ,SAAS,GAEpB42B,EAAoBxiC,OAAO,SAASA,OAAO,UACxCI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACL5M,UAAU,KAAK,CAACxhB,EAAOvN,EAAO6sC,KAC7B,MAAM7pC,EAAU6pC,EAAS7sC,GACnBytC,EAAe9R,QACJzoC,IAAd8P,EAAQzN,EAAmByN,EAAQzN,EAAIzB,KAAKyB,EAC7CzB,KAAKyB,GAEDm4C,EAAe/R,QACJzoC,IAAd8P,EAAQlB,EAAmBkB,EAAQlB,EAAIhO,KAAKgO,EAC7ChO,KAAKgO,GAED6rC,EAAehS,QACJzoC,IAAd8P,EAAQrF,EAAmBqF,EAAQrF,EAAI7J,KAAK6J,EAC7C7J,KAAK6J,GAEDiwC,EAAgBjS,QACJzoC,IAAf8P,EAAQkpB,GAAoBlpB,EAAQkpB,GAAKp4B,KAAKo4B,GAC/Cp4B,KAAKo4B,IAEP,OAAQJ,IACN9oB,EAAQzN,EAAIk4C,EAAa3hB,GACzB9oB,EAAQlB,EAAI4rC,EAAa5hB,GACzB9oB,EAAQrF,EAAIgwC,EAAa7hB,GACzB9oB,EAAQkpB,GAAK0hB,EAAc9hB,GAC3B,MAAM9iB,EAAOuE,EAAM49B,kBAAkBnoC,EAAQzN,EAAGyN,EAAQlB,EAAGkB,EAAQrF,EAAGqF,EAAQkpB,IAC9E,OAAO3e,EAAM29B,YAAYliC,EAAK,CAC/B,IAKL,MAAMslC,GAAWrC,EAAqBhjC,UAAU,OAC7CxI,KAAK3M,KAAK2M,KAAK++B,QAEZ+O,GAAUD,GAAS/kC,QAAQ/I,OAAO,KACxC+tC,GAAQ/tC,OAAO,QACZ8U,QAAQ,QAAQ,GAChB9L,KAAK,MAAO+D,GACJs8B,EAAUt8B,EAAM2zB,MAExB13B,KAAK,MAAO+D,GACJs8B,EAAUt8B,EAAM2zB,MAExB13B,KAAK,MAAO+D,GACe,YAAlBA,EAAMwzB,QACV+I,EAAc,GAAK,KAAQh2C,KAAK0qC,IAChCsL,GAAc,GAAM,KAAQh2C,KAAK0qC,MAEtCh1B,KAAK,MAAO+D,GACe,YAAlBA,EAAMwzB,QACV+I,EAAc,GAAK,KAAQh2C,KAAK0qC,IAChCsL,GAAc,GAAM,KAAQh2C,KAAK0qC,MAGzC,MAAMgQ,GAAUD,GAAQ3kC,MAAM0kC,IAC3B9kC,KAAK,SAAU+D,GAAmB,MAAMA,EAAMwzB,YACjDyN,GAAQxkC,QAAQuD,IAAqBA,EAAM06B,UAAav+B,OAAO,SAC5DI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,UAAW+D,GACRzZ,KAAK2nC,sBAAsB,YAAYluB,EAAMwzB,aAErDv3B,KAAK,MAAO+D,GACJs8B,EAAUt8B,EAAM2zB,MAExB13B,KAAK,MAAO+D,GACJs8B,EAAUt8B,EAAM2zB,MAExB13B,KAAK,MAAO+D,GACe,YAAlBA,EAAMwzB,QACV+I,EAAc,GAAK,KAAQh2C,KAAK0qC,IAChCsL,GAAc,GAAM,KAAQh2C,KAAK0qC,MAEtCh1B,KAAK,MAAO+D,GACe,YAAlBA,EAAMwzB,QACV+I,EAAc,GAAK,KAAQh2C,KAAK0qC,IAChCsL,GAAc,GAAM,KAAQh2C,KAAK0qC,MAGzC8P,GAASjlC,OAAOvG,SAIhB,MAAM2rC,GAAiBtC,EAAqBljC,UAAU,mBACnDxI,KACC,CAAC3M,KAAKk0C,MAAM1G,SAAU,EAAIxtC,KAAKk0C,MAAM1G,WAGnCoN,GAAgBD,GAAellC,QAAQ/I,OAAO,KACjDgJ,KAAK,SAAS,CAAC5L,EAAGoC,IACV,mBAA6B,IAAVA,EAAe,UAAY,WAEzD0uC,GAAcluC,OAAO,QAClB8U,QAAQ,OAAO,GACf9L,KAAK,IAAK,GAEbklC,GAAc9kC,MAAM6kC,IAAgB/kC,OAAO,QACxCI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IAELnyB,KAAK,KAAK,CAAC+D,EAAOvN,IACMiqC,EAAL,IAAVjqC,EAA6B,EAAmB,EAAIuN,KAE7D/D,KAAK,QAASmgC,GACdngC,KAAK,UAAW+D,GACR08B,EAAc18B,KAGzBkhC,GAAeplC,OAAOvG,SAItB,MAAM6rC,GAAqBxC,EAAqBljC,UAAU,kBACvDxI,KACEnK,OAAOyvB,MAAMjyB,KAAK2M,KAAK6gC,UAAmC,GAAvB,CAACxtC,KAAK2M,KAAK6gC,WAG7CsN,GAAoBD,GAAmBplC,QAAQ/I,OAAO,KACzD8U,QAAQ,iBAAiB,GAC5Bs5B,GAAkBpuC,OAAO,QACtB8U,QAAQ,QAAQ,GAEnB,MAAMu5B,GAAoBD,GAAkBhlC,MAAM+kC,IAC/CnlC,KAAK,SAAU+D,GACP,kBAAkBA,EAAQzZ,KAAKk0C,MAAM1G,SAASrC,QAAW,UAAY,WAEhF4P,GAAkBnlC,OAAO,SACtBI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IAELnyB,KAAK,KAAM,EAAI,IAAO1V,KAAK0qC,KAC3Bh1B,KAAK,KAAMmgC,EAAgB,IAAO71C,KAAK0qC,KACvCh1B,KAAK,MAAO+D,GACJ08B,EAAc18B,GAAS,IAE/B/D,KAAK,MAAO+D,GACJ08B,EAAc18B,GAAS,IAGlCohC,GAAmBtlC,OAAOvG,SAQ1B,MAAMgsC,GAAiB1C,EAAuBnjC,UAAU,aACrDxI,KAAK,CACJ,CAAC+pC,MAAO,QAASlgC,MAAOxW,KAAKg0C,OAAOe,OACpC,CAAC2B,MAAO,QAASlgC,MAAOxW,KAAKg0C,OAAO/2B,SAGlCg+B,GAAgBD,GAAevlC,QAAQ/I,OAAO,KACjDgJ,KAAK,SAAS,CAAC5L,EAAGoC,IACV,aAAuB,IAAVA,EAAe,UAAY,WAEnD+uC,GAAcvuC,OAAO,QAClB8U,QAAQ,QAAQ,GAEnB,MAAM05B,GAAgBD,GAAcnlC,MAAMklC,IACvCtlC,KAAK,WAAY1V,KAAKkrC,YAAc,EAAI,MACxC1pB,QAAQ,cAAexhB,KAAKkrC,aAC5Br0B,GAAG,UAAW7W,KAAKkrC,YAChB,CAACrtB,EAAOpE,KACR,GAAI,CAAC,UAAW,aAAa0hC,SAASt9B,EAAM3D,KAAM,CAChD,IAAIzY,EAAIzB,KAAKyB,EACb,OAAQoc,EAAM3D,KACZ,IAAK,UACHzY,GAAsB,UAAhBgY,EAAMi9B,MACR74B,EAAMy4B,SAAW,IAAO,GACxBz4B,EAAMy4B,UAAgB,KAAO,GACjC,MACF,IAAK,YACH70C,GAAsB,UAAhBgY,EAAMi9B,MACR74B,EAAMy4B,UAAgB,QACtBz4B,EAAMy4B,SAAW,IAAO,GAKhC70C,EAAKA,EAAI,IACL,IACCA,EAA8B,EAA1BzB,KAAKqT,MAAMygC,SAAS5hC,IACG,EAA1BlS,KAAKqT,MAAMygC,SAAS5hC,IACpBzQ,EACNzB,KAAKyB,EAAIA,EACTzB,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,cAAe,CAChDK,OAAQ,CACN7c,EAAGzB,KAAKyB,GAEV2c,SAAS,KAEXP,EAAM2F,gBACR,GAEA,OAEJxjB,KAAK6zC,aACFjM,EAAkB5/B,IAAI,kBAErBhI,KAAKkrC,YACPgQ,GAAch3C,KAAKsyC,GAEnB0E,GAAcrkC,GAAG,QAAS,OAG9BqkC,GAActlC,OAAO,SAClBI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAMqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAKrX,MACrCjL,KAAK,KAAMqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAK9lB,MACrCwD,KAAK,MAAO+D,GACJu8B,EAAcv8B,EAAMjD,SAE5Bd,KAAK,MAAO+D,GACJu8B,EAAcv8B,EAAMjD,SAG/BwkC,GAAezlC,OAAOvG,SAItB,MAAMosC,GAAc9C,EAAuBnjC,UAAU,UAClDxI,KAAK,CACJ,CAAC9C,EAAG7J,KAAK6J,EAAGuuB,GAAIp4B,KAAKo4B,GAAI6b,cAAej0C,KAAKi0C,iBAG3CoH,GAAaD,GAAY3lC,QAAQ/I,OAAO,KAC3C8U,QAAQ,SAAS,GACpB65B,GAAW3uC,OAAO,QACf8U,QAAQ,QAAQ,GACnB65B,GAAW3uC,OAAO,QACf8U,QAAQ,SAAS,GAEpB,MAAM85B,GAAaD,GAAWvlC,MAAMslC,IACjC1lC,KAAK,WAAY1V,KAAKkrC,YAAc,EAAI,MACxC1pB,QAAQ,cAAexhB,KAAKkrC,aAC5Br0B,GAAG,UAAW7W,KAAKkrC,YACfrtB,IACD,GAAI,CAAC,UAAW,aAAas9B,SAASt9B,EAAM3D,KAAM,CAChD,IAAIrQ,EAAI7J,KAAK6J,EACb,OAAQgU,EAAM3D,KACZ,IAAK,UACHrQ,GAAKgU,EAAMy4B,SAAW,IAAO,GAC7B,MACF,IAAK,YACHzsC,GAAKgU,EAAMy4B,SAAW,IAAO,GAKjCzsC,EAAKA,EAAI,IACL,IACCA,EAAI,EACH,EACAA,EACN7J,KAAK6J,EAAIA,EACT7J,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,cAAe,CAChDK,OAAQ,CACNzU,EAAG7J,KAAK6J,GAEVuU,SAAS,KAEXP,EAAM2F,gBACR,GAEA,OAEJxjB,KAAK6zC,aACFjM,EAAkB5/B,IAAI,kBAErBhI,KAAKkrC,YACPoQ,GAAWp3C,KAAKqyC,GAEhB+E,GAAWzkC,GAAG,QAAS,OAG3B,MAAM0kC,IAAcvF,EAAc,GAAKA,EAAc,KAAOD,EAAU,GAAKA,EAAU,IACrFuF,GACGtlC,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,aAAc+D,GACX,aAAas8B,EAAUt8B,EAAM2e,QAAQ4d,EAAcv8B,EAAMw6B,sCACpD1qC,KAAKksB,KAAMhc,EAAM5P,EAAI,IAAQ0xC,KAAe,IAAMhyC,KAAK2rB,SAEvEomB,GAAW1lC,OAAO,SACfF,KAAK,KAAMqgC,EAAU,MACxBuF,GAAW1lC,OAAO,UACfF,KAAK,IAAK,eACLqgC,EAAU,KAAkB,GAAX/1C,KAAK0qC,OAAyB,IAAX1qC,KAAK0qC,kBAC9B,GAAX1qC,KAAK0qC,OAAwB,GAAX1qC,KAAK0qC,kBACX,IAAX1qC,KAAK0qC,OAAwB,GAAX1qC,KAAK0qC,eAGhC0Q,GAAY7lC,OAAOvG,SAInB,MAAMwsC,GAAYlD,EAAuBnjC,UAAU,QAChDxI,KAAK,CACJ,CAACyrB,GAAIp4B,KAAKo4B,GAAI6b,cAAej0C,KAAKi0C,iBAGhCwH,GAAWD,GAAU/lC,QAAQ/I,OAAO,KACvC8U,QAAQ,OAAO,GAClBi6B,GAAS/uC,OAAO,QACb8U,QAAQ,QAAQ,GACnBi6B,GAAS/uC,OAAO,UACb8U,QAAQ,SAAS,GAEpB,MAAMk6B,GAAWD,GAAS3lC,MAAM0lC,IAC7B9lC,KAAK,WAAY1V,KAAKkrC,YAAc,EAAI,MACxC1pB,QAAQ,cAAexhB,KAAKkrC,aAC5Br0B,GAAG,UAAW7W,KAAKkrC,YACfrtB,IACD,GAAI,CAAC,UAAW,aAAas9B,SAASt9B,EAAM3D,KAAM,CAChD,IAAIlM,EAAIhO,KAAKgO,EACb,OAAQ6P,EAAM3D,KACZ,IAAK,UACHlM,GAAK6P,EAAMy4B,SAAW,IAAO,GAC7B,MACF,IAAK,YACHtoC,GAAK6P,EAAMy4B,SAAW,IAAO,GAKjCtoC,EAAKA,EAAI,IACL,IACCA,EAAI,IACH,IACAA,EACNhO,KAAKgO,EAAIA,EACThO,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,cAAe,CAChDK,OAAQ,CACNtQ,EAAGhO,KAAKgO,GAEVoQ,SAAS,KAEXP,EAAM2F,gBACR,CACA,GAAI,CAAC,YAAa,cAAc23B,SAASt9B,EAAM3D,KAAM,CACnD,IAAIke,EAAKp4B,KAAKo4B,GACd,OAAQva,EAAM3D,KACZ,IAAK,aACHke,GAAMva,EAAMy4B,SAAW,EAAI,GAC3B,MACF,IAAK,YACHle,GAAMva,EAAMy4B,SAAW,EAAI,GAK/Ble,EAAMA,EAAK,EACP,EACCA,EAAK,IACJ,IACAA,EACNp4B,KAAKo4B,GAAKA,EACVp4B,KAAK6wC,aACL7wC,KAAK+d,cAAc,IAAIE,YAAY,eAAgB,CACjDK,OAAQ,CACN8Z,GAAIp4B,KAAKo4B,IAEXha,SAAS,KAEXP,EAAM2F,gBACR,GAEA,OAEJxjB,KAAK6zC,aACFjM,EAAkB5/B,IAAI,kBAErBhI,KAAKkrC,YACPwQ,GAASx3C,KAAKkyC,GAEdsF,GAAS7kC,GAAG,QAAS,OAGzB6kC,GAAS9lC,OAAO,SACbI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAMqgC,EAAU,IACrBrgC,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAM2e,MAC/C1iB,KAAK,MAAO+D,GAAmBu8B,EAAcv8B,EAAMw6B,iBACnDv+B,KAAK,MAAO+D,GAAmBu8B,EAAcv8B,EAAMw6B,iBACtDyH,GAAS9lC,OAAO,UACbI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAM2e,MAC/C1iB,KAAK,MAAO+D,GAAmBu8B,EAAcv8B,EAAMw6B,iBAEtDuH,GAAUjmC,OAAOvG,SAIjB,MAAM2sC,GAAUrD,EAAuBnjC,UAAU,cAC9CxI,KAAK3M,KAAKyzC,SAAW,CAACzzC,KAAKyB,GAAK,IAE7Bm6C,GAASD,GAAQlmC,QAAQ/I,OAAO,KACnC8U,QAAQ,aAAa,GACxBo6B,GAAOlvC,OAAO,QACX8U,QAAQ,QAAQ,GAChB9L,KAAK,eAAgB,uBACrBA,KAAK,aAAc,uBACtB,MAAMmmC,GAASD,GAAOlvC,OAAO,QAC1B8U,QAAQ,SAAS,GACpBq6B,GAAOnvC,OAAO,SACX8U,QAAQ,cAAc,GACtB3L,KAAK,KACRgmC,GAAOnvC,OAAO,SACX8U,QAAQ,UAAU,GAClB3L,KAAK,OACRgmC,GAAOnvC,OAAO,SACX8U,QAAQ,SAAS,GAEpB,MAAMs6B,GAASF,GAAO9lC,MAAM6lC,IAC5BG,GAAOlmC,OAAO,SACXI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAMqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAK9lB,KAAkB,IAAXlS,KAAK0qC,KACjDh1B,KAAK,KAAMsgC,EAAch2C,KAAKg0C,OAAOe,OAAS,GAC9Cr/B,KAAK,KAAMqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAK9lB,KAAkB,IAAXlS,KAAK0qC,KACjDh1B,KAAK,KAAMsgC,EAAch2C,KAAKg0C,OAAO/2B,OAAS,GAC7B6+B,GAAOlmC,OAAO,UAC/BI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,IAAKqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAK9lB,MACpCwD,KAAK,IAAKsgC,EAAch2C,KAAKg0C,OAAOe,OAAoB,IAAX/0C,KAAK0qC,KACzC90B,OAAO,UAChBC,KAAKgyB,GAAU,MAAVA,CAAiB7nC,KAAKyB,IAE9Bk6C,GAAQpmC,OAAOvG,SAIf,MAAM+sC,GAAUzD,EAAuBnjC,UAAU,cAC9CxI,KAAK3M,KAAKyzC,SAAW,CAACzzC,KAAKgO,GAAK,IAE7BguC,GAASD,GAAQtmC,QAAQ/I,OAAO,KACnC8U,QAAQ,aAAa,GACxBw6B,GAAOtvC,OAAO,QACX8U,QAAQ,QAAQ,GAChB9L,KAAK,eAAgB,uBACrBA,KAAK,aAAc,uBACtB,MAAMumC,GAASD,GAAOtvC,OAAO,QAC1B8U,QAAQ,SAAS,GACpBy6B,GAAOvvC,OAAO,SACX8U,QAAQ,cAAc,GACtB3L,KAAK,KACRomC,GAAOvvC,OAAO,SACX8U,QAAQ,UAAU,GAClB3L,KAAK,OACRomC,GAAOvvC,OAAO,SACX8U,QAAQ,SAAS,GAEpB,MAAM06B,GAASF,GAAOlmC,MAAMimC,IAC5BG,GAAOtmC,OAAO,SACXI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAMqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAKrX,KAAkB,IAAX3gB,KAAK0qC,KACjDh1B,KAAK,KAAMsgC,EAAch2C,KAAKi0C,eAAiB,GAC/Cv+B,KAAK,KAAMqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAKrX,KAAkB,IAAX3gB,KAAK0qC,KACjDh1B,KAAK,KAAMsgC,EAAch2C,KAAKg0C,OAAO/2B,OAAS,GAC7Bi/B,GAAOtmC,OAAO,UAC/BI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,IAAKqgC,EAAU/1C,KAAKqT,MAAM2kB,KAAKrX,MACpCjL,KAAK,IAAKsgC,EAAch2C,KAAKg0C,OAAO/2B,OAAoB,KAAXjd,KAAK0qC,KACzC90B,OAAO,UAChBC,KAAKgyB,GAAU,MAAVA,CAAiB7nC,KAAKgO,IAE9B+tC,GAAQxmC,OAAOvG,SAIf,MAAMmtC,GAAU7D,EAAuBnjC,UAAU,cAC9CxI,KAAK3M,KAAKyzC,SAAW,CAACzzC,KAAK6J,GAAK,IAE7BuyC,GAASD,GAAQ1mC,QAAQ/I,OAAO,KACnC8U,QAAQ,aAAa,GACxB46B,GAAO1vC,OAAO,QACX8U,QAAQ,QAAQ,GAChB9L,KAAK,eAAgB,uBACrBA,KAAK,aAAc,uBACtB,MAAM2mC,GAASD,GAAO1vC,OAAO,QAC1B8U,QAAQ,SAAS,GACpB66B,GAAO3vC,OAAO,SACX8U,QAAQ,cAAc,GACtB3L,KAAK,KACRwmC,GAAO3vC,OAAO,SACX8U,QAAQ,UAAU,GAClB3L,KAAK,OACRwmC,GAAO3vC,OAAO,SACX8U,QAAQ,SAAS,GAEpB,MAAM86B,GAAa/yC,KAAKksB,KAAMz1B,KAAK6J,EAAI,IAAQ0xC,IACzCgB,GAAkBxG,EAAU,KAAOA,EAAU,GAAgB,IAAX/1C,KAAK0qC,IACvD8R,GAASjzC,KAAKq2B,IAAI0c,IAAcC,GAChCE,GAASlzC,KAAKs2B,IAAIyc,IAAcC,GAChCG,GAASN,GAAOtmC,MAAMqmC,IAC5BO,GAAO9mC,OAAO,SACXI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,IAAK,eACLqgC,EAAU/1C,KAAKo4B,GAAK,KAAkB,IAAXp4B,KAAK0qC,QAAesL,EAAch2C,KAAKi0C,6BAClE8B,EAAU,KAAOA,EAAU,MAAMA,EAAU,KAAOA,EAAU,YAAYA,EAAU/1C,KAAKo4B,IAAMokB,MAAUxG,EAAch2C,KAAKi0C,eAAiBwI,cAE/HC,GAAO9mC,OAAO,UAC/BI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,IAAKqgC,EAAU/1C,KAAKo4B,GAAK,KAAkB,GAAXp4B,KAAK0qC,KAC1Ch1B,KAAK,IAAKsgC,EAAch2C,KAAKg0C,OAAOe,OAAoB,IAAX/0C,KAAK0qC,KACzC90B,OAAO,UAChBC,KAAKgyB,GAAU,MAAVA,CAAiB7nC,KAAK6J,IAE9BsyC,GAAQ5mC,OAAOvG,SAIf,MAAM2tC,GAAWrE,EAAuBnjC,UAAU,eAC/CxI,KAAK3M,KAAKyzC,SAAW,CAACzzC,KAAKo4B,IAAM,IAE9BwkB,GAAUD,GAASlnC,QAAQ/I,OAAO,KACrC8U,QAAQ,cAAc,GACzBo7B,GAAQlwC,OAAO,QACZ8U,QAAQ,QAAQ,GAChB9L,KAAK,eAAgB,uBACrBA,KAAK,aAAc,uBACtB,MAAMmnC,GAAUD,GAAQlwC,OAAO,QAC5B8U,QAAQ,SAAS,GACpBq7B,GAAQnwC,OAAO,SACZ8U,QAAQ,eAAe,GACvB3L,KAAK,MACRgnC,GAAQnwC,OAAO,SACZ8U,QAAQ,UAAU,GAClB3L,KAAK,OACRgnC,GAAQnwC,OAAO,SACZ8U,QAAQ,SAAS,GAEpB,MAAMs7B,GAAUF,GAAQ9mC,MAAM6mC,IAC9BG,GAAQlnC,OAAO,SACZI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAMqgC,EAAU,GAAK,GAC1BrgC,KAAK,KAAMsgC,EAAch2C,KAAKi0C,eAA4B,IAAXj0C,KAAK0qC,KACpDh1B,KAAK,KAAMqgC,EAAU/1C,KAAKo4B,IAAM,GAChC1iB,KAAK,KAAMsgC,EAAch2C,KAAKi0C,eAA4B,IAAXj0C,KAAK0qC,KAClCoS,GAAQlnC,OAAO,UACjCI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,IAAKqgC,EAAU/1C,KAAKo4B,IAAiB,IAAXp4B,KAAK0qC,KACpCh1B,KAAK,IAAKsgC,EAAch2C,KAAKg0C,OAAOe,OAAoB,IAAX/0C,KAAK0qC,KACxC90B,OAAO,UACjBC,KAAKgyB,GAAU,IAAVA,CAAe7nC,KAAKo4B,KAE5BukB,GAASpnC,OAAOvG,SAIhB,MAAM+tC,GAAaxE,EAAsBpjC,UAAU,eAChDxI,MAAM8M,GACEzZ,KAAK0zC,MAAQ,CAACj6B,GAAS,KAG5BujC,GAAYD,GAAWtnC,QAAQ/I,OAAO,KACzCgJ,KAAK,SAAU+D,GAAmB,cAAcA,EAAMwzB,YACzD+P,GAAUtwC,OAAO,QACd8U,QAAQ,aAAa,GAENw7B,GAAUlnC,MAAMinC,IACxBnnC,OAAO,cACdI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAMy6B,MAAMvG,UACrDj4B,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAMy6B,MAAMvG,UACrDj4B,KAAK,MAAO+D,GAAmBA,EAAM09B,aAAan3C,KAAKqT,MAAM0gC,QAAQpzB,OACrEjL,KAAK,MAAO+D,GAAmBA,EAAM09B,aAAan3C,KAAKqT,MAAM0gC,QAAQ7hC,OAExE6qC,GAAWxnC,OAAOvG,SAIlB,MAAMiuC,GAAiB1E,EAAsBpjC,UAAU,cACpDxI,MAAM8M,GACGzZ,KAAK0zC,QAAUlxC,OAAOyvB,MAAMxY,EAAM9M,KAAKghC,QAAW,CAACl0B,GAAS,KAGlEyjC,GAAgBD,GAAexnC,QAAQ/I,OAAO,KACjDgJ,KAAK,SAAU+D,GAAmB,aAAaA,EAAMwzB,YACxDiQ,GAAcxwC,OAAO,QAClB8U,QAAQ,aAAa,GACrB9L,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAExFh1B,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAGrEwS,GAAcpnC,MAAMmnC,IAC5BrnC,OAAO,cAClBI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAM9M,KAAKghC,UACpDj4B,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAM9M,KAAKghC,UACpDj4B,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAExFh1B,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAG3FuS,GAAe1nC,OAAOK,OAAO,cAC1BI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAM,GACXA,KAAK,KAAM,GACXmB,GAAG,OAAO,CAAC4C,EAAOvN,EAAO6sC,KACxBlR,GAAUkR,EAAS7sC,GAAOmuC,eAAerrC,QAAQ,IAKrD,MAAMmuC,GAAW5E,EAAsBpjC,UAAU,aAC9CxI,MAAM8M,GACEzZ,KAAK2zC,IAAM,CAACl6B,GAAS,KAG1B2jC,GAAUD,GAAS1nC,QAAQ/I,OAAO,KACrCgJ,KAAK,SAAU+D,GAAmB,YAAYA,EAAMwzB,YACvDmQ,GAAQ1wC,OAAO,QACZ8U,QAAQ,aAAa,GACrB9L,KAAK,eAAgB,sBACrBA,KAAK,aAAc,sBAEN0nC,GAAQtnC,MAAMqnC,IACtBvnC,OAAO,cACZI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAMy6B,MAAMvG,OAAUl0B,EAAMy6B,MAAMhG,KAAO,KAClFx4B,KAAK,MAAO+D,GAAmBs8B,EAAUt8B,EAAMy6B,MAAMvG,OAAUl0B,EAAMy6B,MAAMhG,KAAO,KAClFx4B,KAAK,MAAO+D,GAAmBA,EAAM09B,aAAa,KAClDzhC,KAAK,MAAO+D,GAAmBA,EAAM09B,aAAa,KAErDgG,GAAS5nC,OAAOvG,SAIhB,MAAMquC,GAAe9E,EAAsBpjC,UAAU,YAClDxI,MAAM8M,IACGzZ,KAAK2zC,KAAQnxC,OAAOyvB,MAAMxY,EAAM9M,KAAKghC,SAAYnrC,OAAOyvB,MAAMxY,EAAM9M,KAAKuhC,MAE7E,GADA,CAACz0B,KAIH6jC,GAAcD,GAAa5nC,QAAQ/I,OAAO,KAC7CgJ,KAAK,SAAU+D,GAAmB,WAAWA,EAAMwzB,YACtDqQ,GAAY5wC,OAAO,QAChB8U,QAAQ,aAAa,GACrB9L,KAAK,eAAgB,qBACrBA,KAAK,aAAc,qBACnBA,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAExFh1B,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAGvE4S,GAAYxnC,MAAMunC,IAC1BznC,OAAO,cAChBI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,MAAO+D,GACJs8B,EAAUt8B,EAAM9M,KAAKghC,OAAUl0B,EAAM9M,KAAKuhC,KAAO,KAEzDx4B,KAAK,MAAO+D,GACJs8B,EAAUt8B,EAAM9M,KAAKghC,OAAUl0B,EAAM9M,KAAKuhC,KAAO,KAEzDx4B,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAExFh1B,KAAK,MAAO+D,GACJA,EAAM09B,aAAa,IAAyB,YAAlB19B,EAAMwzB,QAAyB,MAAc,MAAIjtC,KAAK0qC,MAG3F2S,GAAa9nC,OAAOK,OAAO,cACxBI,aACA8jB,SAAS95B,KAAKykB,KAAO,EAAIqxB,GACzB/b,KAAK8N,IACLnyB,KAAK,KAAM,GACXA,KAAK,KAAM,GACXmB,GAAG,OAAO,CAAC4C,EAAOvN,EAAO6sC,KACxBlR,GAAUkR,EAAS7sC,GAAOmuC,eAAerrC,QAAQ,IAGrDhP,KAAK6zC,aAAc,CACrB,EAGF5J,eAAexjB,OAAO,YAAa+sB,IC9hEpB,MAAM+J,WAAoBhT,GAA0BU,KACjE,qBAAWvmC,GACT,MAAO,CACLknC,UAAW,CACT/oC,UAAW,YACXC,KAAMN,OACNS,SAAS,GAEX+O,MAAO,CACLnP,UAAW,QACXC,KAAMN,OACNS,SAAS,GAEXu6C,YAAa,CACX36C,UAAW,cACXC,KAAMN,OACNS,SAAS,GAEX62B,SAAU,CACRj3B,UAAW,WACXC,KAAMN,OACNS,SAAS,GAEXw6C,KAAM,CACJ56C,UAAW,OACXC,KAAMN,OACNS,SAAS,GAEXy6C,IAAK,CACH76C,UAAW,MACXC,KAAMN,OACNS,SAAS,GAEXyoC,OAAQ,CACN7oC,UAAW,SACXC,KAAMN,OACNS,SAAS,GAEX06C,QAAS,CACP96C,UAAW,UACXC,KAAMX,QACNc,SAAS,GAGX26C,SAAU,CACR/6C,WAAW,EACXC,KAAMN,OACNS,SAAS,GAEX46C,MAAO,CACLh7C,WAAW,EACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAGArF,KAAK4rC,UAAY,GACjB5rC,KAAKgS,MAAQ,IACbhS,KAAKw9C,YAAc,GACnBx9C,KAAK85B,SAAW,IAChB95B,KAAKy9C,KAAO,IACZz9C,KAAK09C,IAAM,IACX19C,KAAK0rC,OAAS,EACd1rC,KAAK29C,SAAU,EAGf39C,KAAK49C,SAAW,IAChB59C,KAAK69C,MAAQ,GAGb79C,KAAK6zC,aAAc,EACnB7zC,KAAK89C,SAAW,EAChB99C,KAAK+9C,OAAS,EACd/9C,KAAKg+C,KAAO,CAAC,GAAI,IACjBh+C,KAAKgtC,MAAQ,EAEbhtC,KAAKgsC,OAAS,CAAC,WAAY,MAAO,WAAY,OAAQ,SACtDhsC,KAAK8D,MAAQ,WAEb9D,KAAKi+C,SAAW,EAChBj+C,KAAKk+C,UAAY,EACjBl+C,KAAK4wC,UAAY,EACjB5wC,KAAKm+C,SAAW,EAEhBn+C,KAAKo+C,KAAO,IACZp+C,KAAKq+C,MAAQ,EACbr+C,KAAKs+C,sBAAmBl/C,EAExBY,KAAKuwC,QAAU,CAAC,OAAQ,SACxBvwC,KAAKwwC,YAASpxC,EAEdY,KAAKu+C,YAASn/C,EACdY,KAAKw+C,YAASp/C,EACdY,KAAKy+C,YAASr/C,CAChB,CAEA,iBAAW0F,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+CP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI,EACb,CAEAhZ,MAAAA,CAAOm/B,GAIL,GAHAviC,MAAMoD,OAAOm/B,GAGTplC,OAAOyvB,MAAMjyB,KAAK6gC,QAAUr+B,OAAOyvB,MAAMjyB,KAAKyqC,SAAWjoC,OAAOyvB,MAAMjyB,KAAK0qC,KAC7E,OAGF,MAAM2K,EAAer1C,KAAK6gC,MACpByU,EAAgBt1C,KAAKyqC,OACrBiU,EAAcn1C,KAAKoX,IAAI00B,EAAcC,GAErCC,EACC,IAAOv1C,KAAK0qC,IADb6K,EAEI,IAAOv1C,KAAK0qC,IAFhB6K,EAGE,IAAOv1C,KAAK0qC,IAGdD,EAASiU,GAAenJ,EAAaA,GACrC1U,EAAQ6d,GAAenJ,EAHpB,IAAOv1C,KAAK0qC,KAMrB1qC,KAAKw+C,OAAS3W,KACXrzB,OAAO,EAAC,EAAI,IACZI,MAAM,CAAC,EAAGisB,IAGb7gC,KAAKy+C,OAAS5W,KACXrzB,OAAO,CAAC,GAAK,IACbI,MAAM,CAAC,EAAG61B,IAIb,MAAMqM,EAAYjP,GAAU7nC,KAAKoG,YAAY+O,UAAU,SACpDxI,KAAK,CAAC,CACLk0B,MAAO7gC,KAAK6gC,MACZ4J,OAAQzqC,KAAKyqC,OACbC,IAAK1qC,KAAK0qC,OAGRqM,EAAWD,EAAUrhC,QAAQ/I,OAAO,OACvC8U,QAAQ,QAAQ,GAEby1B,EAAWF,EAASjhC,MAAMghC,GAC7BphC,KAAK,UAAW,OAAOgpC,KAAeA,KAIzC3H,EAASrqC,OAAO,YACbgJ,KAAK,KAAM,iBACXhJ,OAAO,UAEVuqC,EAASrhC,OAAO,mBACbF,KAAK,KAAM1V,KAAKw+C,OAAO,IACvB9oC,KAAK,KAAM1V,KAAKy+C,OAAO,IACvB/oC,KAAK,IAAK1V,KAAKw+C,OAAO,GAAKx+C,KAAKw+C,OAAO,IAI1C,MAAMG,EAAY5H,EAASrqC,OAAO,KAC/B8U,QAAQ,QAAQ,GAEbo9B,EAAY3H,EAASrhC,OAAO,SAC/BF,KAAK,YAAa,aAAa6/B,MAAgBA,MAI5CsJ,EAAkBF,EAAUjyC,OAAO,KACtC8U,QAAQ,cAAc,GAEnBs9B,EAAkBF,EAAUhpC,OAAO,eAIzCipC,EAAgBnyC,OAAO,UACpB8U,QAAQ,cAAc,GAEzBs9B,EAAgBlpC,OAAO,eACpBF,KAAK,KAAM1V,KAAKw+C,OAAO,IACvB9oC,KAAK,KAAM1V,KAAKy+C,OAAO,IACvB/oC,KAAK,IAAK1V,KAAKw+C,OAAO,GAAKx+C,KAAKw+C,OAAO,IAI1CG,EAAUjyC,OAAO,KACd8U,QAAQ,WAAW,GACnB9L,KAAK,YAAa,uBAEAkpC,EAAUhpC,OAAO,YAINT,UAAU,SACvCxI,KAAK,CAAC,GAAI,KAEF8I,QAAQ/I,OAAO,KACvB8U,QAAQ,QAAQ,GAChBA,QAAQ,YAAY,CAAC/H,EAAOvN,IAAmBA,IAAUlM,KAAK89C,WAC9Dt8B,QAAQ,UAAU,CAAC/H,EAAOvN,IAAmBA,IAAUlM,KAAK+9C,SAI/D,MAAMgB,EAAiBJ,EAAUjyC,OAAO,KACrC8U,QAAQ,aAAa,GAElBw9B,EAAiBJ,EAAUhpC,OAAO,cAIxCmpC,EAAeryC,OAAO,UACnB8U,QAAQ,WAAW,GAEtBw9B,EAAeppC,OAAO,YACnBF,KAAK,KAAM1V,KAAKw+C,OAAO,IACvB9oC,KAAK,KAAM1V,KAAKy+C,OAAO,IACvB/oC,KAAK,IAAK1V,KAAKw+C,OAAO,GAAKx+C,KAAKy+C,OAAO,KAGtCz+C,KAAK6zC,aAAejM,EAAkB5/B,IAAI,cACxChI,KAAK29C,SAEH39C,KAAKk+C,YAEPl+C,KAAKi+C,UAAapW,KAAW7nC,KAAKk+C,UAClCl+C,KAAKk+C,UAAY,GAEnBl+C,KAAKu+C,OCzSE,SAAS5nC,EAAUohB,EAAOC,GACvC,IAAIh5B,EAAI,IAAI24B,GAAOsnB,EAAQlnB,EAY3B,OAVA/4B,EAAEkgD,SAAWlgD,EAAEi5B,QACfj5B,EAAEi5B,QAAU,SAASthB,EAAUohB,EAAOC,GACpCD,GAASA,EAAOC,EAAe,MAARA,EAAeT,MAASS,EAC/Ch5B,EAAEkgD,UAAS,SAAS9pC,EAAKyjB,GACvBA,GAAWomB,EACXjgD,EAAEkgD,SAAS9pC,EAAM6pC,GAASlnB,EAAOC,GACjCrhB,EAASkiB,EACX,GAAGd,EAAOC,EACX,EACDh5B,EAAEi5B,QAAQthB,EAAUohB,EAAOC,GACpBh5B,CACT,CD2RsB6oC,CAAY7nC,KAAK6rC,IAAIjsB,KAAK5f,MAAO,UACtBZ,IAAhBY,KAAKu+C,SAEdv+C,KAAKu+C,OAAOxsC,OACZ/R,KAAKk+C,UAAYrW,OAIrB7nC,KAAK6zC,aAAc,CACrB,CAEA9H,KAAAA,QACsB3sC,IAAhBY,KAAKu+C,QACPv+C,KAAKu+C,OAAOxsC,OAEd/R,KAAK29C,SAAU,EACf39C,KAAKgtC,MAAQ,EACbhtC,KAAK8D,MAAQ,WACb9D,KAAKi+C,SAAW,EAChBj+C,KAAKk+C,UAAY,EACjBl+C,KAAK4wC,UAAY,EACjB5wC,KAAKm+C,SAAW,EAChBn+C,KAAKwwC,YAASpxC,EACdY,KAAKs+C,sBAAmBl/C,EAExB,MAEM+/C,EAFatX,GAAU7nC,KAAKoG,YAAYwP,OAAO,YAAYT,UAAU,SACxExI,KAAK,CAAC,GAAI,KACgBwI,UAAU,QACpCxI,MAAM8M,GAAmBA,IAC5B0lC,EAAU5pC,OACPvG,SAEoB64B,GAAU7nC,KAAKoG,YAAYwP,OAAO,YAAYT,UAAU,aAC5ExI,KAAK,IACO4I,OACZvG,SACiB64B,GAAU7nC,KAAKoG,YAAYwP,OAAO,YAAYT,UAAU,UACzExI,KAAK,IACI4I,OACTvG,QACL,CAEA68B,GAAAA,GACE,MAAMuT,EAAWvX,KACXwX,EAAer/C,KAAKi+C,SAAamB,EAAWp/C,KAAKi+C,SAAY,EAC7DqB,EAAet/C,KAAKi+C,SAAaoB,EAAcr/C,KAAK4wC,UAAa,EACjE2O,EAAav/C,KAAKi+C,SAAaoB,EAAcr/C,KAAKm+C,SAAY,EACpEn+C,KAAKm+C,SAAWkB,EAChB,IAAIG,GAAW,EAsFf,GArFmB,aAAfx/C,KAAK8D,OAEP9D,KAAK8D,MAAQ,MACb9D,KAAKi+C,SAAWmB,EAChBp/C,KAAK4wC,UAAY,EACjB5wC,KAAK+d,cAAc,IAAIE,YAAY,kBAAmB,CACpDK,OAAQ,CACNotB,OAAQ1rC,KAAK0rC,QAEfttB,SAAS,MAEc,QAAfpe,KAAK8D,OAAqBw7C,GAAet/C,KAAK09C,KAExD8B,GAAW,EACXx/C,KAAKgtC,OAAS,EACdhtC,KAAK8D,MAAQ,WACb9D,KAAK4wC,UAAYyO,EACjBr/C,KAAKwwC,OAAUjnC,KAAKC,SAAWxJ,KAAKw9C,YAAe,OAAS,QAC5Dx9C,KAAKs+C,iBAAoC,SAAhBt+C,KAAKwwC,OAC1BxwC,KAAKo+C,KACLp+C,KAAKq+C,MACTr+C,KAAK+d,cAAc,IAAIE,YAAY,kBAAmB,CACpDK,OAAQ,CACNotB,OAAQ1rC,KAAK0rC,OACb5R,SAAU95B,KAAK85B,SACf2jB,KAAMz9C,KAAKy9C,KACXC,IAAK19C,KAAK09C,IACV1Q,MAAOhtC,KAAKgtC,MACZwD,OAAQxwC,KAAKwwC,QAEfpyB,SAAS,MAEc,aAAfpe,KAAK8D,OAA0Bw7C,GAAet/C,KAAK85B,UAE7D95B,KAAK8D,MAAQ,OACb9D,KAAK4wC,UAAYyO,EACjBr/C,KAAK+d,cAAc,IAAIE,YAAY,mBAAoB,CACrDK,OAAQ,CACNotB,OAAQ1rC,KAAK0rC,OACb5R,SAAU95B,KAAK85B,SACf2jB,KAAMz9C,KAAKy9C,KACXC,IAAK19C,KAAK09C,IACV1Q,MAAOhtC,KAAKgtC,MACZwD,OAAQxwC,KAAKwwC,QAEfpyB,SAAS,MAEc,SAAfpe,KAAK8D,OAAsBw7C,GAAet/C,KAAKy9C,OAEzDz9C,KAAK+d,cAAc,IAAIE,YAAY,gBAAiB,CAClDK,OAAQ,CACNotB,OAAQ1rC,KAAK0rC,OACb5R,SAAU95B,KAAK85B,SACf2jB,KAAMz9C,KAAKy9C,KACXC,IAAK19C,KAAK09C,IACV1Q,MAAOhtC,KAAKgtC,MACZwD,OAAQxwC,KAAKwwC,QAEfpyB,SAAS,KAEPpe,KAAKgtC,OAAShtC,KAAK0rC,QAErB1rC,KAAKu+C,OAAOxsC,OACZ/R,KAAK29C,SAAU,EACf39C,KAAK8D,MAAQ,QACb9D,KAAKi+C,SAAW,EAChBj+C,KAAKk+C,UAAY,EACjBl+C,KAAK4wC,UAAY,EACjB5wC,KAAKm+C,SAAW,EAChBn+C,KAAKwwC,YAASpxC,EACdY,KAAKs+C,sBAAmBl/C,EACxBY,KAAK+d,cAAc,IAAIE,YAAY,gBAAiB,CAClDK,OAAQ,CACNotB,OAAQ1rC,KAAKgtC,OAEf5uB,SAAS,OAIXpe,KAAK8D,MAAQ,MACb9D,KAAK4wC,UAAYyO,IAKF,aAAfr/C,KAAK8D,MAAsB,CAC7B9D,KAAKg+C,KAAKh+C,KAAK89C,UAAUz9C,OAASkJ,KAAKqJ,MAAM5S,KAAKgS,MAAQhS,KAAK4rC,WAC/D5rC,KAAKg+C,KAAKh+C,KAAK+9C,QAAQ19C,OAAUL,KAAKgS,MAAQhS,KAAKg+C,KAAKh+C,KAAK89C,UAAUz9C,OAEvE,IAAK,IAAIrB,EAAI,EAAGA,EAAIgB,KAAKg+C,KAAK39C,OAAQrB,GAAK,EACzC,IAAK,IAAI4B,EAAI,EAAGA,EAAIZ,KAAKg+C,KAAKh/C,GAAGqB,OAAQO,GAAK,EAAG,CAC/C,MAAM6+C,OAA8BrgD,IAApBY,KAAKg+C,KAAKh/C,GAAG4B,GACzB6+C,IACFz/C,KAAKg+C,KAAKh/C,GAAG4B,GAAK,CAAE,GAEtB,MAAM8+C,EAAM1/C,KAAKg+C,KAAKh/C,GAAG4B,GACzB,GAAI4+C,GAAYC,EAAQ,CACtBC,EAAIC,UAAa3gD,IAAMgB,KAAK+9C,OAA2B,IAAhBx0C,KAAKC,SAAkBxJ,KAAKs+C,iBACnEoB,EAAIE,MAAQP,EAAc91C,KAAK6I,MAAM7I,KAAKC,SAAWxJ,KAAK49C,UAC1D,MAAMiC,EAAwB,EAAhBt2C,KAAKC,SAAeD,KAAK2rB,GACjC4qB,EAASv2C,KAAKmI,KAAKnI,KAAKC,UAC9Bk2C,EAAIp1C,EAAItK,KAAKw+C,OAAOsB,EAASv2C,KAAKq2B,IAAIigB,IACtCH,EAAI98C,EAAI5C,KAAKy+C,OAAOqB,EAASv2C,KAAKs2B,IAAIggB,GACvC,MAAM,GAAIR,EAAeK,EAAIE,MAAQ5/C,KAAK49C,SAAW,CAEpD8B,EAAIE,OAAS5/C,KAAK49C,SAClB8B,EAAIC,UAAa3gD,IAAMgB,KAAK+9C,OAA2B,IAAhBx0C,KAAKC,SAAkBxJ,KAAKs+C,iBACnE,MAAMuB,EAAwB,EAAhBt2C,KAAKC,SAAeD,KAAK2rB,GACjC4qB,EAASv2C,KAAKmI,KAAKnI,KAAKC,UAC9Bk2C,EAAIp1C,EAAItK,KAAKw+C,OAAOsB,EAASv2C,KAAKq2B,IAAIigB,IACtCH,EAAI98C,EAAI5C,KAAKy+C,OAAOqB,EAASv2C,KAAKs2B,IAAIggB,GACxC,KAAO,CACD7gD,IAAMgB,KAAK89C,WACb4B,EAAIC,UAAY3/C,KAAKs+C,kBAEvB,MAAMyB,EAAaL,EAAIC,WAAap2C,KAAK2rB,GAAK,KAC9CwqB,EAAI57B,GAAK9jB,KAAK69C,OAAS0B,EAAY,KAAQh2C,KAAKq2B,IAAImgB,GACpDL,EAAI37B,GAAK/jB,KAAK69C,OAAS0B,EAAY,KAAQh2C,KAAKs2B,IAAIkgB,GAEpDL,EAAIp1C,GAAKo1C,EAAI57B,GACb47B,EAAI98C,GAAK88C,EAAI37B,IAEO27B,EAAIp1C,EAAItK,KAAKw+C,OAAO,KAAO,GAAOkB,EAAI98C,EAAI5C,KAAKy+C,OAAO,KAAO,GAChEz+C,KAAKw+C,OAAO,GAAKx+C,KAAKw+C,OAAO,KAAO,IAGnDkB,EAAIp1C,IAAMo1C,EAAIp1C,EAAItK,KAAKw+C,OAAO,IAAMx+C,KAAKw+C,OAAO,GAChDkB,EAAI98C,IAAM88C,EAAI98C,EAAI5C,KAAKy+C,OAAO,IAAMz+C,KAAKy+C,OAAO,GAEpD,CACF,CAEJ,CAIA,MAAMuB,EAAiBnY,GAAU7nC,KAAKoG,YAAYwP,OAAO,YAAYT,UAAU,aAC5ExI,KAAqB,QAAf3M,KAAK8D,MAAmB,EAAC,GAAQ,IAEpCm8C,EAAgBD,EAAevqC,QAAQ/I,OAAO,KACjD8U,QAAQ,YAAY,GACvBy+B,EAAcvzC,OAAO,QAClBgJ,KAAK,KAAM1V,KAAKw+C,QAAW,KAC3B9oC,KAAK,KAAM1V,KAAKw+C,OAAO,IACvB9oC,KAAK,KAAM1V,KAAKw+C,OAAO,KACvB9oC,KAAK,KAAM1V,KAAKw+C,OAAO,IAC1ByB,EAAcvzC,OAAO,QAClBgJ,KAAK,KAAM1V,KAAKw+C,OAAO,IACvB9oC,KAAK,KAAM1V,KAAKw+C,QAAW,KAC3B9oC,KAAK,KAAM1V,KAAKw+C,OAAO,IACvB9oC,KAAK,KAAM1V,KAAKw+C,OAAO,KAE1BwB,EAAezqC,OAAOvG,SAItB,MAEMmwC,EAFatX,GAAU7nC,KAAKoG,YAAYwP,OAAO,YAAYT,UAAU,SACxExI,KAAqB,aAAf3M,KAAK8D,MAAwB9D,KAAKg+C,KAAO,CAAC,GAAI,KAC1B7oC,UAAU,QACpCxI,MAAM8M,GAAmBA,IAEX0lC,EAAU1pC,QAAQ/I,OAAO,UACvC8U,QAAQ,OAAO,GAET1L,MAAMqpC,GACZzpC,KAAK,MAAO+D,GAAmBA,EAAMnP,IACrCoL,KAAK,MAAO+D,GAAmBA,EAAM7W,IAExCu8C,EAAU5pC,OAAOvG,SAIjB,MAAMkxC,EAAcrY,GAAU7nC,KAAKoG,YAAYwP,OAAO,YAAYT,UAAU,UACzExI,KAAqB,SAAf3M,KAAK8D,MAAoB,EAAC,GAAQ,IAExBo8C,EAAYzqC,QAAQ/I,OAAO,KAC3C8U,QAAQ,SAAS,GACT9U,OAAO,QACfgJ,KAAK,IAAK1V,KAAKw+C,OAAO,IACtB9oC,KAAK,IAAK1V,KAAKw+C,OAAO,IACtB9oC,KAAK,cAAe,UACpBA,KAAK,qBAAsB,UAC3BG,KAAK,KAERqqC,EAAY3qC,OAAOvG,QACrB,EAGFi7B,eAAexjB,OAAO,gBAAiB82B,IEhhBxB,MAAM4C,WAAoBlV,GACvC,qBAAWvmC,GACT,MAAO,CACLitC,QAAS,CACP9uC,UAAW,UACXC,KAAMX,QACNc,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QACArF,KAAK2xC,SAAU,CACjB,CAEA,iBAAW7sC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoKP,ECjLa,MAAMu/C,WAA0BD,GAC7C,qBAAWz7C,GACT,MAAO,CACLjD,EAAG,CACDoB,UAAW,sBACXC,KAAMN,OACNS,SAAS,GAEX+K,EAAG,CACDnL,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEX4G,EAAG,CACDhH,UAAW,aACXC,KAAMN,OACNS,SAAS,GAGXuqC,SAAU,CACR3qC,WAAW,EACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QACArF,KAAKyB,EAAI,IACTzB,KAAKgO,EAAI,GACThO,KAAK6J,EAAI,GACT7J,KAAK6wC,YACP,CAEAA,UAAAA,GACE7wC,KAAKwtC,SAAWd,GAAQ4B,OAAOtuC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EACtD,CAEAgoC,SAAAA,GACE7xC,KAAK+d,cAAc,IAAIE,YAAY,6BAA8B,CAC/DK,OAAQ,CACN7c,EAAGzB,KAAKyB,EACRuM,EAAGhO,KAAKgO,EACRnE,EAAG7J,KAAK6J,EACR2jC,SAAUxtC,KAAKwtC,UAEjBpvB,SAAS,IAEb,CAEAiiC,MAAAA,CAAOxiC,GACL7d,KAAKyB,EAAImpC,WAAW/sB,EAAM8F,OAAOnN,OACjCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEAyO,MAAAA,CAAOziC,GACL7d,KAAKgO,EAAI48B,WAAW/sB,EAAM8F,OAAOnN,OACjCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEA0O,MAAAA,CAAO1iC,GACL7d,KAAK6J,EAAI+gC,WAAW/sB,EAAM8F,OAAOnN,OACjCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEAtpC,UAAAA,GACEvI,KAAK6wC,YACP,CAEA1gC,MAAAA,GACE,IAAI1O,EACAuM,EACAnE,EACAnK,EACA8tC,EACAxtC,KAAK2xC,SACPlwC,EAAIggB,CAAI,mDAAmDzhB,KAAKkrC,qDAAqDlrC,KAAKyB,aAAazB,KAAKqgD,OAAOzgC,KAAK5f;;+BAGxJgO,EAAIyT,CAAI,mDAAmDzhB,KAAKkrC,yDAAyDlrC,KAAKgO,aAAahO,KAAKsgD,OAAO1gC,KAAK5f;;+BAG5J6J,EAAI4X,CAAI,mDAAmDzhB,KAAKkrC,sDAAsDlrC,KAAK6J,aAAa7J,KAAKugD,OAAO3gC,KAAK5f;;+BAGzJN,EAAI+hB,CAAI,wFAAwFirB,GAAQhtC;;+BAGxG8tC,EAAW/rB,CAAI,6FAA6FzhB,KAAKwtC,SAAS/jC,QAAQ;;iCAIlIhI,EAAIggB,CAAI,kCACRzT,EAAIyT,CAAI,kCACR5X,EAAI4X,CAAI,kCACR/hB,EAAI+hB,CAAI,kCACR+rB,EAAW/rB,CAAI,wCAEjB,MAAM++B,EAAW/+B,CAAI;;;YAGb+rB;;;yIAG6H3jC,IAAIpI,OAAO/B;;yIAEXmK,IAAImE,OAAOtO;;;;;yIAKXmK,IAAIpI,OAAO/B;;;;aAKhJ,OAAO+hB,CAAI;;;;cAID++B;;;aAIZ,EAGFvW,eAAexjB,OAAO,sBAAuB25B,ICnI9B,MAAMK,WAA2BN,GAC9C,qBAAWz7C,GACT,MAAO,CACLjD,EAAG,CACDoB,UAAW,sBACXC,KAAMN,OACNS,SAAS,GAEX+K,EAAG,CACDnL,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEX4G,EAAG,CACDhH,UAAW,aACXC,KAAMN,OACNS,SAAS,GAEXm1B,GAAI,CACFv1B,UAAW,mBACXC,KAAMN,OACNS,SAAS,GAGX0qC,OAAQ,CACN9qC,WAAW,EACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QACArF,KAAKyB,EAAI,IACTzB,KAAKgO,EAAI,GACThO,KAAK6J,EAAI,GACT7J,KAAKo4B,GAAK,IACVp4B,KAAK6wC,YACP,CAEAA,UAAAA,GACE7wC,KAAK2tC,OAASjB,GAAQ6B,QAAQvuC,KAAKyB,EAAGzB,KAAKgO,EAAGhO,KAAK6J,EAAG7J,KAAKo4B,GAC7D,CAEAyZ,SAAAA,GACE7xC,KAAK+d,cAAc,IAAIE,YAAY,8BAA+B,CAChEK,OAAQ,CACN7c,EAAGzB,KAAKyB,EACRuM,EAAGhO,KAAKgO,EACRnE,EAAG7J,KAAK6J,EACRuuB,GAAIp4B,KAAKo4B,GACTuV,OAAQ3tC,KAAK2tC,QAEfvvB,SAAS,IAEb,CAEAiiC,MAAAA,CAAOxiC,GACL7d,KAAKyB,EAAImpC,WAAW/sB,EAAM8F,OAAOnN,OACjCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEAyO,MAAAA,CAAOziC,GACL7d,KAAKgO,EAAI48B,WAAW/sB,EAAM8F,OAAOnN,OACjCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEA0O,MAAAA,CAAO1iC,GACL7d,KAAK6J,EAAI+gC,WAAW/sB,EAAM8F,OAAOnN,OACjCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEA6O,OAAAA,CAAQ7iC,GACN7d,KAAKo4B,GAAKwS,WAAW/sB,EAAM8F,OAAOnN,OAClCxW,KAAK6wC,aACL7wC,KAAK6xC,WACP,CAEAtpC,UAAAA,GACEvI,KAAK6wC,YACP,CAEA1gC,MAAAA,GACE,IAAI1O,EACAuM,EACAnE,EACAuuB,EACA14B,EACAiuC,EACA3tC,KAAK2xC,SACPlwC,EAAIggB,CAAI,mDAAmDzhB,KAAKkrC,qDAAqDlrC,KAAKyB,aAAazB,KAAKqgD,OAAOzgC,KAAK5f;;+BAGxJgO,EAAIyT,CAAI,mDAAmDzhB,KAAKkrC,yDAAyDlrC,KAAKgO,aAAahO,KAAKsgD,OAAO1gC,KAAK5f;;+BAG5J6J,EAAI4X,CAAI,mDAAmDzhB,KAAKkrC,sDAAsDlrC,KAAK6J,aAAa7J,KAAKugD,OAAO3gC,KAAK5f;;+BAGzJo4B,EAAK3W,CAAI,oDAAoDzhB,KAAKkrC,kDAAkDlrC,KAAKo4B,cAAcp4B,KAAK0gD,QAAQ9gC,KAAK5f;;+BAGzJN,EAAI+hB,CAAI,wFAAwFirB,GAAQhtC;;+BAGxGiuC,EAASlsB,CAAI,4FAA4FzhB,KAAK2tC,OAAOlkC,QAAQ;;iCAI7HhI,EAAIggB,CAAI,kCACRzT,EAAIyT,CAAI,kCACR5X,EAAI4X,CAAI,kCACR2W,EAAK3W,CAAI,+CACT/hB,EAAI+hB,CAAI,kCACRksB,EAASlsB,CAAI,sCAEf,MAAM++B,EAAW/+B,CAAI;;;YAGbksB;YACAvV;;;;YAIApqB;;;;;;YAMAvM;;;;yIAI6HoI,IAAImE,OAAOtO;;;;;;;YAOxImK;;;YAGAA;;;yIAG6HA,IAAIpI,OAAO/B;;;;aAKhJ,OAAO+hB,CAAI;;;;cAID++B;;;aAIZ,EAGFvW,eAAexjB,OAAO,uBAAwBg6B,IC7K/B,MAAME,WAAmB1V,GACtC,iBAAWnmC,GACT,MAAO,CACLO,MAAMP,OACNjE,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+CP,CAEAsP,MAAAA,GACE,OAAOsR,CAAI;;;;;aAMb,EAGFwoB,eAAexjB,OAAO,cAAek6B,IC9DtB,MAAMC,WAAwBD,GAC3C5gD,WAAAA,GACEsF,QAEArF,KAAKowC,WAAa,CACpB,CAEA7oC,iBAAAA,GACElC,MAAMkC,oBAENvH,KAAK6gD,mBAAqB7gD,KAAKwY,cAAc,uBAC7CxY,KAAK8gD,QAAU9gD,KAAKwY,cAAc,iBAClCxY,KAAK+gD,oBAAsB/gD,KAAKwY,cAAc,wBAC9CxY,KAAKghD,iBAAmBhhD,KAAKwY,cAAc,qBAC3CxY,KAAKihD,cAAgBjhD,KAAKwY,cAAc,kBACxCxY,KAAKkhD,SAAWlhD,KAAKwY,cAAc,aACnCxY,KAAKmhD,OAASnhD,KAAKwY,cAAc,WAGjCxY,KAAKkhD,SAASjO,QAEVjzC,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,WAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,8BAA+BkO,IAClE7d,KAAK8gD,UACP9gD,KAAK8gD,QAAQpV,OAAS7tB,EAAMS,OAAOotB,QAGjC1rC,KAAK+gD,sBACP/gD,KAAK+gD,oBAAoB1Q,WAAaxyB,EAAMS,OAAOotB,OACrD,IAIA1rC,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,aAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,gCAAiCkO,IACpE7d,KAAK8gD,UACP9gD,KAAK8gD,QAAQhnB,SAAWjc,EAAMS,OAAOwb,SACrC95B,KAAK8gD,QAAQrD,KAAO5/B,EAAMS,OAAOwb,SACjC95B,KAAK8gD,QAAQpD,IAAM7/B,EAAMS,OAAOwb,SAClC,IAIA95B,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,cAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,iCAAkCkO,IACrE7d,KAAK8gD,UACP9gD,KAAK8gD,QAAQlV,UAAY/tB,EAAMS,OAAOstB,UACxC,IAIA5rC,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,UAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,6BAA8BkO,IACjE7d,KAAKghD,mBACPhhD,KAAKghD,iBAAiB5vB,MAAQvT,EAAMS,OAAO8S,MAC7C,IAIApxB,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,QAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,2BAA2B,KAC9D3P,KAAK8gD,UACP9gD,KAAK8gD,QAAQnD,SAAU,EACzB,IAIA39C,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,UAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,6BAA6B,KAChE3P,KAAK8gD,UACP9gD,KAAK8gD,QAAQnD,SAAU,EACzB,IAIA39C,KAAK6gD,oBAAsB7gD,KAAK6gD,mBAAmBO,aAAa,UAClEphD,KAAK6gD,mBAAmBlxC,iBAAiB,6BAA6B,KAChE3P,KAAK8gD,SACP9gD,KAAK8gD,QAAQ/U,QAGX/rC,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBhV,QAGvB/rC,KAAKghD,mBACPhhD,KAAKghD,iBAAiB9T,aAAex8B,IACrC1Q,KAAKghD,iBAAiB3T,WAAa38B,IACnC1Q,KAAKghD,iBAAiBzT,QAAU78B,IAChC1Q,KAAKghD,iBAAiBxT,SAAW98B,IACjC1Q,KAAKghD,iBAAiBvT,cAAgB/8B,IACtC1Q,KAAKghD,iBAAiBtT,YAAch9B,IACpC1Q,KAAKghD,iBAAiBrT,OAASj9B,IAC/B1Q,KAAKghD,iBAAiBhT,YAAct9B,IACpC1Q,KAAKghD,iBAAiB/S,UAAYv9B,IAClC1Q,KAAKghD,iBAAiB9S,KAAOx9B,KAM3B1Q,KAAKkhD,UACPlhD,KAAKkhD,SAASjO,QAGZjzC,KAAKmhD,QACPnhD,KAAKmhD,OAAOlO,OACd,IAIAjzC,KAAK8gD,SACH9gD,KAAK+gD,sBACP/gD,KAAK+gD,oBAAoB1Q,WAAarwC,KAAK8gD,QAAQpV,QAInD1rC,KAAK8gD,SACP9gD,KAAK8gD,QAAQnxC,iBAAiB,mBAAoBkO,IAC5C7d,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBjvC,MAAM+L,EAAMS,OAAOkyB,OAAQ3yB,EAAMS,OAAO0uB,MACnE,IAIAhtC,KAAK8gD,SACP9gD,KAAK8gD,QAAQnxC,iBAAiB,iBAAiB,KACzC3P,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBhvC,MAC3B,IAIA/R,KAAK8gD,SACP9gD,KAAK8gD,QAAQnxC,iBAAiB,iBAAiB,KACzC3P,KAAK6gD,oBACP7gD,KAAK6gD,mBAAmBpU,UAC1B,IAIAzsC,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBpxC,iBAAiB,wBAAyBkO,IAC7D7d,KAAKghD,mBACPhhD,KAAKghD,iBAAiB9T,aAAervB,EAAMS,OAAO4uB,aAClDltC,KAAKghD,iBAAiB3T,WAAaxvB,EAAMS,OAAO+uB,WAChDrtC,KAAKghD,iBAAiBzT,QAAU1vB,EAAMS,OAAOivB,QAC7CvtC,KAAKghD,iBAAiBxT,SAAW3vB,EAAMS,OAAOkvB,SAC9CxtC,KAAKghD,iBAAiBvT,cAAgB5vB,EAAMS,OAAOmvB,cACnDztC,KAAKghD,iBAAiBtT,YAAc7vB,EAAMS,OAAOovB,YACjD1tC,KAAKghD,iBAAiBrT,OAAS9vB,EAAMS,OAAOqvB,OAC5C3tC,KAAKghD,iBAAiBhT,YAAcnwB,EAAMS,OAAO0vB,YACjDhuC,KAAKghD,iBAAiB/S,UAAYpwB,EAAMS,OAAO2vB,UAC/CjuC,KAAKghD,iBAAiB9S,KAAOrwB,EAAMS,OAAO4vB,MAGxCluC,KAAKkhD,UACPlhD,KAAKkhD,SAASlU,MAAM,CAClB9gC,MAAO2R,EAAMS,OAAO0uB,MACpBI,GAAIvvB,EAAMS,OAAO8uB,GACjBH,QAASpvB,EAAMS,OAAO2uB,UAItBjtC,KAAKmhD,QACPnhD,KAAKmhD,OAAO3gD,IAAI,CACdgtC,SAAU3vB,EAAMS,OAAOkvB,SACvBC,cAAe5vB,EAAMS,OAAOmvB,cAC5BC,YAAa7vB,EAAMS,OAAOovB,YAC1BC,OAAQ9vB,EAAMS,OAAOqvB,OACrBK,YAAanwB,EAAMS,OAAO0vB,YAC1BC,UAAWpwB,EAAMS,OAAO2vB,UACxBC,KAAMrwB,EAAMS,OAAO4vB,MAEvB,IAIAluC,KAAKmhD,QACPnhD,KAAKmhD,OAAOxxC,iBAAiB,kBAAmBkO,IAC1C7d,KAAKihD,gBACPjhD,KAAKihD,cAAcx/C,EAAIoc,EAAMS,OAAO7c,EACpCzB,KAAKihD,cAAcjzC,EAAI,GACvBhO,KAAKihD,cAAcp3C,EAAIgU,EAAMS,OAAOzU,EACpC7J,KAAKihD,cAAc7oB,GAAKva,EAAMS,OAAO8Z,IAGnCp4B,KAAKkhD,WACPlhD,KAAKkhD,SAASz/C,EAAIoc,EAAMS,OAAO7c,EAC/BzB,KAAKkhD,SAASlzC,EAAI,GAClBhO,KAAKkhD,SAASr3C,EAAIgU,EAAMS,OAAOzU,EAC/B7J,KAAKkhD,SAAS9oB,GAAKva,EAAMS,OAAO8Z,GAClC,GAGN,EAGF6R,eAAexjB,OAAO,oBAAqBm6B,ICxM5B,MAAMS,WAA8BV,GACjD,qBAAWj8C,GACT,MAAO,CACLgnC,OAAQ,CACN7oC,UAAW,SACXC,KAAMN,OACNS,SAAS,GAEXxB,EAAG,CACDoB,UAAW,sBACXC,KAAMN,OACNS,SAAS,GAEX+K,EAAG,CACDnL,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEX4G,EAAG,CACDhH,UAAW,aACXC,KAAMN,OACNS,SAAS,GAEXm1B,GAAI,CACFv1B,UAAW,mBACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAEArF,KAAK0rC,OAAS,GACd1rC,KAAKyB,EAAI,IACTzB,KAAKgO,EAAI,IACThO,KAAK6J,EAAI,IACT7J,KAAKo4B,GAAK,IAEVp4B,KAAK6gD,mBAAqB,KAC1B7gD,KAAKghD,iBAAmB,KACxBhhD,KAAKihD,cAAgB,KACrBjhD,KAAKkhD,SAAW,KAEhBlhD,KAAK2M,UAAOvN,EACZY,KAAKk0C,WAAQ90C,CACf,CAEAmI,iBAAAA,GACElC,MAAMkC,oBAENvH,KAAK6gD,mBAAqB7gD,KAAKwY,cAAc,uBAC7CxY,KAAKghD,iBAAmBhhD,KAAKwY,cAAc,qBAC3CxY,KAAKihD,cAAgBjhD,KAAKwY,cAAc,kBACxCxY,KAAKkhD,SAAWlhD,KAAKwY,cAAc,aAE/BxY,KAAK6gD,qBACP7gD,KAAK6gD,mBAAmBlxC,iBAAiB,gCAAgC,KACvE3P,KAAKkhD,UAAUvV,WACf3rC,KAAKmE,eAAe,IAEtBnE,KAAK6gD,mBAAmBlxC,iBAAiB,8BAA+BkO,IACtE7d,KAAK0rC,OAAS7tB,EAAMS,OAAOotB,MAAM,KAIjC1rC,KAAKihD,gBACPjhD,KAAKihD,cAActxC,iBAAiB,oBAAqBkO,IACvD7d,KAAKyB,EAAIoc,EAAMS,OAAO7c,CAAC,IAEzBzB,KAAKihD,cAActxC,iBAAiB,oBAAqBkO,IACvD7d,KAAKgO,EAAI6P,EAAMS,OAAOtQ,CAAC,IAEzBhO,KAAKihD,cAActxC,iBAAiB,oBAAqBkO,IACvD7d,KAAK6J,EAAIgU,EAAMS,OAAOzU,CAAC,IAEzB7J,KAAKihD,cAActxC,iBAAiB,qBAAsBkO,IACxD7d,KAAKo4B,GAAKva,EAAMS,OAAO8Z,EAAE,KAIzBp4B,KAAKkhD,WACPlhD,KAAKkhD,SAASvxC,iBAAiB,eAAgBkO,IAC7C7d,KAAKyB,EAAIoc,EAAMS,OAAO7c,CAAC,IAEzBzB,KAAKkhD,SAASvxC,iBAAiB,eAAgBkO,IAC7C7d,KAAKgO,EAAI6P,EAAMS,OAAOtQ,CAAC,IAEzBhO,KAAKkhD,SAASvxC,iBAAiB,eAAgBkO,IAC7C7d,KAAK6J,EAAIgU,EAAMS,OAAOzU,CAAC,IAEzB7J,KAAKkhD,SAASvxC,iBAAiB,gBAAiBkO,IAC9C7d,KAAKo4B,GAAKva,EAAMS,OAAO8Z,EAAE,IAE3Bp4B,KAAKkhD,SAASvxC,iBAAiB,oBAAqBkO,IAClD7d,KAAK2M,KAAOkR,EAAMS,OAAO3R,KACzB3M,KAAKk0C,MAAQr2B,EAAMS,OAAO41B,MAC1Bl0C,KAAKmE,eAAe,KAIxBnE,KAAKmE,eACP,CAEAsE,MAAAA,CAAOm/B,GACLviC,MAAMoD,OAAOm/B,GAET5nC,KAAK6gD,qBACP7gD,KAAK6gD,mBAAmBnV,OAAS1rC,KAAK0rC,QAGpC1rC,KAAKghD,kBAAoBhhD,KAAK2M,OAChC3M,KAAKghD,iBAAiB9T,aAAeltC,KAAK2M,KAAKugC,aAC/CltC,KAAKghD,iBAAiB3T,WAAartC,KAAK2M,KAAK0gC,WAC7CrtC,KAAKghD,iBAAiBzT,QAAUvtC,KAAK2M,KAAK4gC,QAC1CvtC,KAAKghD,iBAAiBxT,SAAWxtC,KAAK2M,KAAK6gC,SAC3CxtC,KAAKghD,iBAAiBvT,cAAgBztC,KAAK2M,KAAK8gC,cAChDztC,KAAKghD,iBAAiBtT,YAAc1tC,KAAK2M,KAAK+gC,YAC9C1tC,KAAKghD,iBAAiBrT,OAAS3tC,KAAK2M,KAAKghC,OACzC3tC,KAAKghD,iBAAiBhT,YAAchuC,KAAK2M,KAAKqhC,YAC9ChuC,KAAKghD,iBAAiB/S,UAAYjuC,KAAK2M,KAAKshC,UAC5CjuC,KAAKghD,iBAAiB9S,KAAOluC,KAAK2M,KAAKuhC,MAGrCluC,KAAKihD,gBACPjhD,KAAKihD,cAAcx/C,EAAIzB,KAAKyB,EAC5BzB,KAAKihD,cAAcjzC,EAAIhO,KAAKgO,EAC5BhO,KAAKihD,cAAcp3C,EAAI7J,KAAK6J,EAC5B7J,KAAKihD,cAAc7oB,GAAKp4B,KAAKo4B,IAG3Bp4B,KAAKkhD,WACPlhD,KAAKkhD,SAASxV,OAAS1rC,KAAK0rC,OAC5B1rC,KAAKkhD,SAASz/C,GAAKzB,KAAKyB,EACxBzB,KAAKkhD,SAASlzC,GAAKhO,KAAKgO,EACxBhO,KAAKkhD,SAASr3C,GAAK7J,KAAK6J,EACxB7J,KAAKkhD,SAAS9oB,IAAMp4B,KAAKo4B,GAE7B,EAGF6R,eAAexjB,OAAO,0BAA2B46B,IC5IlC,MAAMC,WAAwBX,GAC3C,qBAAWj8C,GACT,MAAO,CACLgnC,OAAQ,CACN7oC,UAAW,SACXC,KAAMN,OACNS,SAAS,GAEX62B,SAAU,CACRj3B,UAAW,WACXC,KAAMN,OACNS,SAAS,GAEX2oC,UAAW,CACT/oC,UAAW,YACXC,KAAMN,OACNS,SAAS,GAEXmuB,MAAO,CACLvuB,UAAW,QACXC,KAAMC,OACNE,SAAS,GAGXxB,EAAG,CACDoB,UAAW,sBACXC,KAAMN,OACNS,SAAS,GAEX+K,EAAG,CACDnL,UAAW,iBACXC,KAAMN,OACNS,SAAS,GAEX4G,EAAG,CACDhH,UAAW,aACXC,KAAMN,OACNS,SAAS,GAEXm1B,GAAI,CACFv1B,UAAW,mBACXC,KAAMN,OACNS,SAAS,GAGf,CAEAlD,WAAAA,GACEsF,QAEArF,KAAK0rC,OAAS,GACd1rC,KAAK85B,SAAW,IAChB95B,KAAK4rC,UAAY,GACjB5rC,KAAK+lC,OAAS,CAAC,OAAQ,UAAW,UAAW,OAC7C/lC,KAAKoxB,MAAQ,UAEbpxB,KAAKyB,EAAI,IACTzB,KAAKgO,EAAI,IACThO,KAAK6J,EAAI,IACT7J,KAAKo4B,GAAK,IAEVp4B,KAAK6gD,mBAAqB,KAC1B7gD,KAAK8gD,QAAU,KACf9gD,KAAKihD,cAAgB,KACrBjhD,KAAKkhD,SAAW,KAChBlhD,KAAK+gD,oBAAsB,KAC3B/gD,KAAKghD,iBAAmB,KAExBhhD,KAAKowC,WAAa,EAClBpwC,KAAKuwC,QAAU,CAAC,OAAQ,SACxBvwC,KAAKwwC,YAASpxC,EACdY,KAAK2M,UAAOvN,EACZY,KAAKk0C,WAAQ90C,CACf,CAEAmI,iBAAAA,GACElC,MAAMkC,oBAENvH,KAAK6gD,mBAAqB7gD,KAAKwY,cAAc,uBAC7CxY,KAAK8gD,QAAU9gD,KAAKwY,cAAc,iBAClCxY,KAAKihD,cAAgBjhD,KAAKwY,cAAc,kBACxCxY,KAAKkhD,SAAWlhD,KAAKwY,cAAc,aACnCxY,KAAK+gD,oBAAsB/gD,KAAKwY,cAAc,wBAC9CxY,KAAKghD,iBAAmBhhD,KAAKwY,cAAc,qBAEvCxY,KAAK6gD,qBACH7gD,KAAK6gD,mBAAmBO,aAAa,WACvCphD,KAAK6gD,mBAAmBlxC,iBAAiB,8BAA+BkO,IACtE7d,KAAK0rC,OAAS7tB,EAAMS,OAAOotB,MAAM,IAIjC1rC,KAAK6gD,mBAAmBO,aAAa,aACvCphD,KAAK6gD,mBAAmBlxC,iBAAiB,gCAAiCkO,IACxE7d,KAAK85B,SAAWjc,EAAMS,OAAOwb,QAAQ,IAIrC95B,KAAK6gD,mBAAmBO,aAAa,UACvCphD,KAAK6gD,mBAAmBlxC,iBAAiB,6BAA8BkO,IACrE7d,KAAKoxB,MAAQvT,EAAMS,OAAO8S,KAAK,IAI/BpxB,KAAK6gD,mBAAmBO,aAAa,QACvCphD,KAAK6gD,mBAAmBlxC,iBAAiB,2BAA2B,KAC9D3P,KAAK8gD,UACP9gD,KAAK8gD,QAAQnD,SAAU,GAGrB39C,KAAKkhD,UACPlhD,KAAKkhD,SAAS5M,aAChB,IAIAt0C,KAAK6gD,mBAAmBO,aAAa,UACvCphD,KAAK6gD,mBAAmBlxC,iBAAiB,6BAA6B,KAChE3P,KAAK8gD,UACP9gD,KAAK8gD,QAAQnD,SAAU,GAGrB39C,KAAKkhD,UACPlhD,KAAKkhD,SAAS7M,YAChB,IAIAr0C,KAAK6gD,mBAAmBO,aAAa,UACvCphD,KAAK6gD,mBAAmBlxC,iBAAiB,6BAA6B,KACpE3P,KAAKowC,WAAa,EAClBpwC,KAAKwwC,YAASpxC,EAEVY,KAAK8gD,SACP9gD,KAAK8gD,QAAQ/U,QAGX/rC,KAAKkhD,WACPlhD,KAAKkhD,SAASxV,OAAS1rC,KAAKowC,YAG1BpwC,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBhV,QAGvB/rC,KAAKghD,gBAAkB,KAO7BhhD,KAAK8gD,UACP9gD,KAAK8gD,QAAQnxC,iBAAiB,mBAAoBkO,IAChD7d,KAAKwwC,OAAS3yB,EAAMS,OAAOkyB,OAEvBxwC,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBjvC,MACvB+L,EAAMS,OAAOkyB,OACb3yB,EAAMS,OAAO0uB,OAIbhtC,KAAKkhD,WACPlhD,KAAKowC,YAAc,EACnBpwC,KAAKkhD,SAASlU,QAChB,IAGFhtC,KAAK8gD,QAAQnxC,iBAAiB,iBAAiB,KAC7C3P,KAAKwwC,YAASpxC,EAEVY,KAAK+gD,qBACP/gD,KAAK+gD,oBAAoBhvC,MAC3B,IAGF/R,KAAK8gD,QAAQnxC,iBAAiB,iBAAiB,KACzC3P,KAAK6gD,oBACP7gD,KAAK6gD,mBAAmBpU,UAC1B,KAIAzsC,KAAKihD,gBACPjhD,KAAKihD,cAActxC,iBAAiB,oBAAqBkO,IACvD7d,KAAKyB,EAAIoc,EAAMS,OAAO7c,CAAC,IAEzBzB,KAAKihD,cAActxC,iBAAiB,oBAAqBkO,IACvD7d,KAAKgO,EAAI6P,EAAMS,OAAOtQ,CAAC,IAEzBhO,KAAKihD,cAActxC,iBAAiB,oBAAqBkO,IACvD7d,KAAK6J,EAAIgU,EAAMS,OAAOzU,CAAC,IAEzB7J,KAAKihD,cAActxC,iBAAiB,qBAAsBkO,IACxD7d,KAAKo4B,GAAKva,EAAMS,OAAO8Z,EAAE,KAIzBp4B,KAAKkhD,WACPlhD,KAAKkhD,SAASvxC,iBAAiB,eAAgBkO,IAC7C7d,KAAKyB,EAAIoc,EAAMS,OAAO7c,CAAC,IAEzBzB,KAAKkhD,SAASvxC,iBAAiB,eAAgBkO,IAC7C7d,KAAKgO,EAAI6P,EAAMS,OAAOtQ,CAAC,IAEzBhO,KAAKkhD,SAASvxC,iBAAiB,eAAgBkO,IAC7C7d,KAAK6J,EAAIgU,EAAMS,OAAOzU,CAAC,IAEzB7J,KAAKkhD,SAASvxC,iBAAiB,gBAAiBkO,IAC9C7d,KAAKo4B,GAAKva,EAAMS,OAAO8Z,EAAE,IAE3Bp4B,KAAKkhD,SAASvxC,iBAAiB,oBAAqBkO,IAClD7d,KAAK2M,KAAOkR,EAAMS,OAAO3R,KACzB3M,KAAKk0C,MAAQr2B,EAAMS,OAAO41B,MAC1Bl0C,KAAKmE,eAAe,IAGlBnE,KAAKkhD,UACPlhD,KAAKkhD,SAASvxC,iBAAiB,wBAAyBkO,IACtD,GAAI7d,KAAK+gD,oBAAqB,CAC5B,MAAMrQ,EAAqC,YAAzB7yB,EAAMS,OAAO2uB,QAC3BjtC,KAAKwwC,OACY,SAAhBxwC,KAAKwwC,OACJ,QACA,OACNxwC,KAAK+gD,oBAAoB/P,UAAUN,EACrC,CAEA1wC,KAAK2M,KAAOkR,EAAMS,OAAO3R,KACzB3M,KAAKk0C,MAAQr2B,EAAMS,OAAO41B,MAC1Bl0C,KAAKmE,eAAe,KAK1BnE,KAAKmE,eACP,CAEAsE,MAAAA,CAAOm/B,GACLviC,MAAMoD,OAAOm/B,GAET5nC,KAAKowC,WAAapwC,KAAK0rC,SACzB1rC,KAAKowC,WAAapwC,KAAK0rC,QAGrB1rC,KAAK6gD,qBACP7gD,KAAK6gD,mBAAmBnV,OAAS1rC,KAAK0rC,OACtC1rC,KAAK6gD,mBAAmB/mB,SAAW95B,KAAK85B,SACxC95B,KAAK6gD,mBAAmBjV,UAAY5rC,KAAK4rC,UACzC5rC,KAAK6gD,mBAAmBzvB,MAAQpxB,KAAKoxB,OAGnCpxB,KAAK8gD,UACP9gD,KAAK8gD,QAAQpV,OAAS1rC,KAAK0rC,OAC3B1rC,KAAK8gD,QAAQhnB,SAAW95B,KAAK85B,SAC7B95B,KAAK8gD,QAAQlV,UAAY5rC,KAAK4rC,WAG5B5rC,KAAKihD,gBACPjhD,KAAKihD,cAAcx/C,EAAIzB,KAAKyB,EAC5BzB,KAAKihD,cAAcjzC,EAAIhO,KAAKgO,EAC5BhO,KAAKihD,cAAcp3C,EAAI7J,KAAK6J,EAC5B7J,KAAKihD,cAAc7oB,GAAKp4B,KAAKo4B,IAG3Bp4B,KAAKkhD,WACPlhD,KAAKkhD,SAASxV,OAAS1rC,KAAKowC,WAC5BpwC,KAAKkhD,SAASz/C,GAAKzB,KAAKyB,EACxBzB,KAAKkhD,SAASlzC,GAAKhO,KAAKgO,EACxBhO,KAAKkhD,SAASr3C,GAAK7J,KAAK6J,EACxB7J,KAAKkhD,SAAS9oB,IAAMp4B,KAAKo4B,IAGvBp4B,KAAK+gD,sBACP/gD,KAAK+gD,oBAAoB1Q,WAAarwC,KAAK0rC,QAGzC1rC,KAAKghD,mBACPhhD,KAAKghD,iBAAiB5vB,MAAQpxB,KAAKoxB,OAGjCpxB,KAAKghD,kBAAoBhhD,KAAK2M,OAChC3M,KAAKghD,iBAAiB9T,aAAeltC,KAAK2M,KAAKugC,aAC/CltC,KAAKghD,iBAAiB3T,WAAartC,KAAK2M,KAAK0gC,WAC7CrtC,KAAKghD,iBAAiBzT,QAAUvtC,KAAK2M,KAAK4gC,QAC1CvtC,KAAKghD,iBAAiBxT,SAAWxtC,KAAK2M,KAAK6gC,SAC3CxtC,KAAKghD,iBAAiBvT,cAAgBztC,KAAK2M,KAAK8gC,cAChDztC,KAAKghD,iBAAiBtT,YAAc1tC,KAAK2M,KAAK+gC,YAC9C1tC,KAAKghD,iBAAiBrT,OAAS3tC,KAAK2M,KAAKghC,OACzC3tC,KAAKghD,iBAAiBhT,YAAchuC,KAAK2M,KAAKqhC,YAC9ChuC,KAAKghD,iBAAiB/S,UAAYjuC,KAAK2M,KAAKshC,UAC5CjuC,KAAKghD,iBAAiB9S,KAAOluC,KAAK2M,KAAKuhC,KAE3C,EAGFjE,eAAexjB,OAAO,oBAAqB66B","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,151,167]}
|
|
1
|
+
{"version":3,"file":"accumulableElements.esm.min.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/d3-array/src/ascending.js","../../../node_modules/d3-array/src/descending.js","../../../node_modules/d3-array/src/bisector.js","../../../node_modules/d3-array/src/bisect.js","../../../node_modules/d3-array/src/number.js","../../../node_modules/d3-array/src/ticks.js","../../../node_modules/d3-axis/src/identity.js","../../../node_modules/d3-axis/src/axis.js","../../../node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/array.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/d3-selection/src/local.js","../../../node_modules/d3-selection/src/pointer.js","../../../node_modules/d3-selection/src/sourceEvent.js","../../../node_modules/d3-drag/src/noevent.js","../../../node_modules/d3-drag/src/constant.js","../../../node_modules/d3-drag/src/event.js","../../../node_modules/d3-drag/src/drag.js","../../../node_modules/d3-drag/src/nodrag.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/d3-timer/src/timer.js","../../../node_modules/d3-timer/src/timeout.js","../../../node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/d3-transition/src/transition/tween.js","../../../node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/d3-transition/src/transition/attr.js","../../../node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/d3-transition/src/transition/delay.js","../../../node_modules/d3-transition/src/transition/duration.js","../../../node_modules/d3-transition/src/transition/selection.js","../../../node_modules/d3-transition/src/transition/style.js","../../../node_modules/d3-transition/src/transition/index.js","../../../node_modules/d3-transition/src/transition/select.js","../../../node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/d3-transition/src/transition/filter.js","../../../node_modules/d3-transition/src/transition/merge.js","../../../node_modules/d3-transition/src/transition/transition.js","../../../node_modules/d3-transition/src/transition/on.js","../../../node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/d3-transition/src/transition/text.js","../../../node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/d3-transition/src/transition/remove.js","../../../node_modules/d3-transition/src/transition/ease.js","../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/d3-transition/src/transition/end.js","../../../node_modules/d3-ease/src/linear.js","../../../node_modules/d3-ease/src/cubic.js","../../../node_modules/d3-transition/src/selection/transition.js","../../../node_modules/d3-transition/src/selection/index.js","../../../node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/d3-transition/src/interrupt.js","../../../node_modules/d3-path/src/path.js","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-random/src/defaultSource.js","../../../node_modules/d3-random/src/uniform.js","../../../node_modules/d3-random/src/normal.js","../../../node_modules/d3-random/src/lcg.js","../../../node_modules/d3-scale/src/init.js","../../../node_modules/d3-scale/src/number.js","../../../node_modules/d3-scale/src/continuous.js","../../../node_modules/d3-scale/src/constant.js","../../../node_modules/d3-scale/src/tickFormat.js","../../../node_modules/d3-format/src/precisionPrefix.js","../../../node_modules/d3-format/src/precisionRound.js","../../../node_modules/d3-format/src/precisionFixed.js","../../../node_modules/d3-scale/src/linear.js","../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../../../node_modules/d3-scale-chromatic/src/colors.js","../../../node_modules/d3/node_modules/d3-shape/src/constant.js","../../../node_modules/d3/node_modules/d3-shape/src/curve/linear.js","../../../node_modules/d3/node_modules/d3-shape/src/point.js","../../../node_modules/d3/node_modules/d3-shape/src/line.js","../../../node_modules/d3/node_modules/d3-shape/src/path.js","../../../node_modules/d3/node_modules/d3-shape/src/array.js","../../../node_modules/d3-zoom/src/transform.js","../../decidables-elements/src/decidables-element.js","../../decidables-elements/src/button.js","../../../node_modules/lit-html/directives/if-defined.js","../../decidables-elements/src/slider.js","../../decidables-elements/src/spinner.js","../../decidables-elements/src/switch.js","../../decidables-elements/src/toggle.js","../../decidables-elements/src/mixin-resizeable.js","../../decidables-elements/src/toggle-option.js","../src/accumulable-element.js","../src/components/accumulable-control.js","../../accumulable-math/src/ddm-math.js","../src/components/accumulable-response.js","../src/components/accumulable-table.js","../src/components/ddm-fit.js","../src/components/ddm-parameters.js","../src/components/ddm-model.js","../src/components/rdk-2afc-task.js","../../../node_modules/d3-timer/src/interval.js","../src/equations/ddm-equation.js","../src/equations/azv2pc.js","../src/equations/azvt02m.js","../src/examples/ddm-example.js","../src/examples/human.js","../src/examples/interactive.js","../src/examples/model.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","export const linear = t => +t;\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","\nimport {\n LitElement,\n css,\n svg,\n unsafeCSS,\n} from 'lit';\nimport * as d3 from 'd3';\n\n/*\n DecidablesElement Base Class - Not intended for instantiation!\n <decidables-element>\n*/\nexport default class DecidablesElement extends LitElement {\n getComputedStyleValue(property) {\n return getComputedStyle(this).getPropertyValue(property).trim();\n }\n\n firstUpdated(changedProperties) {\n super.firstUpdated(changedProperties);\n\n // Use focus highlighting if keyboard is used at all\n d3.select(this.renderRoot.host)\n .classed('keyboard', true)\n .on('mousemove.keyboard touchstart.keyboard', (event) => {\n const element = event.currentTarget;\n d3.select(element.renderRoot.host)\n .classed('keyboard', false)\n .on('mousemove.keyboard touchstart.keyboard', null);\n })\n .on('keydown.keyboard', (event) => {\n const element = event.currentTarget;\n d3.select(element.renderRoot.host)\n .classed('keyboard', true)\n .on('keydown.keyboard mousemove.keyboard touchstart.keyboard', null);\n });\n }\n\n static get greys() {\n const grey = '#999999';\n const greys = {};\n greys.white = '#ffffff';\n greys.light75 = d3.interpolateRgb(grey, '#ffffff')(0.75);\n greys.light50 = d3.interpolateRgb(grey, '#ffffff')(0.5);\n greys.light25 = d3.interpolateRgb(grey, '#ffffff')(0.25);\n greys.grey = grey;\n greys.dark25 = d3.interpolateRgb(grey, '#000000')(0.25);\n greys.dark50 = d3.interpolateRgb(grey, '#000000')(0.5);\n greys.dark75 = d3.interpolateRgb(grey, '#000000')(0.75);\n greys.black = '#000000';\n return greys;\n }\n\n static get shadows() {\n // Material Design elevation styles\n // References:\n // https://github.com/material-components/material-components-web/tree/master/packages/mdc-elevation\n // https://codepen.io/hanger/pen/yOGvQp\n /* eslint-disable key-spacing, object-curly-newline */\n return {\n elevations: [0, 2, 4, 8, 16],\n baselineColor: '#000000',\n baselineColorString: '0, 0, 0',\n inverseBaselineColor: '#FFFFFF',\n inverseBaselineColorString: '255, 255, 255',\n opacityUmbra: 0.2,\n opacityPenumbra: 0.14,\n opacityAmbient: 0.12,\n opacityBoost: 0.2,\n mapUmbra: {// $mdc-elevation-umbra-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 3, b: 1, s: -2},\n 4: {x: 0, y: 2, b: 4, s: -1},\n 8: {x: 0, y: 5, b: 5, s: -3},\n 16: {x: 0, y: 8, b: 10, s: -5},\n },\n mapPenumbra: {// $mdc-elevation-penumbra-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 2, b: 2, s: 0},\n 4: {x: 0, y: 4, b: 5, s: 0},\n 8: {x: 0, y: 8, b: 10, s: 1},\n 16: {x: 0, y: 16, b: 24, s: 2},\n },\n mapAmbient: {// $mdc-elevation-ambient-map\n 0: {x: 0, y: 0, b: 0, s: 0}, // offset-x, offset-y, blur-radius, spread-radius\n 2: {x: 0, y: 1, b: 5, s: 0},\n 4: {x: 0, y: 1, b: 10, s: 0},\n 8: {x: 0, y: 3, b: 14, s: 2},\n 16: {x: 0, y: 6, b: 30, s: 5},\n },\n };\n /* eslint-enable key-spacing, object-curly-newline */\n }\n\n static cssBoxShadow(elevation, rotate = false, inverse = false) {\n const umbraO = this.shadows.opacityUmbra + this.shadows.opacityBoost;\n const penumbraO = this.shadows.opacityPenumbra + this.shadows.opacityBoost;\n const ambientO = this.shadows.opacityAmbient + this.shadows.opacityBoost;\n\n const umbraC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${umbraO})`\n : `rgba(${this.shadows.baselineColorString}, ${umbraO})`;\n const penumbraC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${penumbraO})`\n : `rgba(${this.shadows.baselineColorString}, ${penumbraO})`;\n const ambientC = (inverse)\n ? `rgba(${this.shadows.inverseBaselineColorString}, ${ambientO})`\n : `rgba(${this.shadows.baselineColorString}, ${ambientO})`;\n\n const umbraM = this.shadows.mapUmbra[elevation];\n const penumbraM = this.shadows.mapPenumbra[elevation];\n const ambientM = this.shadows.mapAmbient[elevation];\n\n const umbraS = (rotate)\n ? `${-umbraM.y}px ${umbraM.y / 2}px ${umbraM.b}px ${umbraM.s}px`\n : `${umbraM.y / 2}px ${umbraM.y}px ${umbraM.b}px ${umbraM.s}px`;\n const penumbraS = (rotate)\n ? `${-penumbraM.y}px ${penumbraM.y / 2}px ${penumbraM.b}px ${penumbraM.s}px`\n : `${penumbraM.y / 2}px ${penumbraM.y}px ${penumbraM.b}px ${penumbraM.s}px`;\n const ambientS = (rotate)\n ? `${-ambientM.y}px ${ambientM.y / 2}px ${ambientM.b}px ${ambientM.s}px`\n : `${ambientM.y / 2}px ${ambientM.y}px ${ambientM.b}px ${ambientM.s}px`;\n\n return `${umbraS} ${umbraC}, ${penumbraS} ${penumbraC}, ${ambientS} ${ambientC}`;\n }\n\n static get svgDefs() {\n const shadows = DecidablesElement.shadows; /* eslint-disable-line prefer-destructuring */\n\n const filters = shadows.elevations.map((z) => {\n return `\n <filter id=${`shadow-${z}`} filterUnits=\"userSpaceOnUse\" x=\"-100%\" y=\"-100%\" width=\"200%\" height=\"200%\">\n <feComponentTransfer in=\"SourceAlpha\" result=\"solid\">\n <feFuncA type=\"table\" tableValues=\"0 1 1\"/>\n </feComponentTransfer>\n <feOffset in=\"solid\" result=\"offU\" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />\n <feOffset in=\"solid\" result=\"offP\" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />\n <feOffset in=\"solid\" result=\"offA\" dx=${shadows.mapAmbient[z].y / 2} dy=${shadows.mapAmbient[z].y} />\n ${(shadows.mapUmbra[z].s === 0)\n ? ''\n : `<feMorphology in=\"offU\" result=\"spreadU\" operator=${(shadows.mapUmbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapUmbra[z].s)} />`\n }\n ${(shadows.mapPenumbra[z].s === 0)\n ? ''\n : `<feMorphology in=\"offP\" result=\"spreadP\" operator=${(shadows.mapPenumbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapPenumbra[z].s)} />`\n }\n ${(shadows.mapAmbient[z].s === 0)\n ? ''\n : `<feMorphology in=\"offA\" result=\"spreadA\" operator=${(shadows.mapAmbient[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapAmbient[z].s)} />`\n }\n <feGaussianBlur in=${(shadows.mapUmbra[z].s === 0) ? 'offU' : 'spreadU'} result=\"blurU\" stdDeviation=${shadows.mapUmbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapPenumbra[z].s === 0) ? 'offP' : 'spreadP'} result=\"blurP\" stdDeviation=${shadows.mapPenumbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapAmbient[z].s === 0) ? 'offA' : 'spreadA'} result=\"blurA\" stdDeviation=${shadows.mapAmbient[z].b / 2} />\n <feFlood in=\"SourceGraphic\" result=\"opU\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityUmbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opP\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityPenumbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opA\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityAmbient + shadows.opacityBoost} />\n <feComposite in=\"opU\" in2=\"blurU\" result=\"shU\" operator=\"in\" />\n <feComposite in=\"opP\" in2=\"blurP\" result=\"shP\" operator=\"in\" />\n <feComposite in=\"opA\" in2=\"blurA\" result=\"shA\" operator=\"in\" />\n <feMorphology in=\"solid\" result=\"smaller\" operator=\"erode\" radius=\"1\" />\n <feComposite in=\"shU\" in2=\"smaller\" result=\"finalU\" operator=\"out\" />\n <feComposite in=\"shP\" in2=\"smaller\" result=\"finalP\" operator=\"out\" />\n <feComposite in=\"shA\" in2=\"smaller\" result=\"finalA\" operator=\"out\" />\n <feMerge>\n <feMergeNode in=\"finalU\" />\n <feMergeNode in=\"finalP\" />\n <feMergeNode in=\"finalA\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>`;\n });\n\n return `\n <defs>\n ${filters}\n </defs>\n `;\n }\n\n static get svgFilters() {\n const shadows = DecidablesElement.shadows; /* eslint-disable-line prefer-destructuring */\n\n const filters = shadows.elevations.map((z) => {\n return svg`\n <filter id=${`shadow-${z}`} x=\"-250%\" y=\"-250%\" width=\"600%\" height=\"600%\">\n <feComponentTransfer in=\"SourceAlpha\" result=\"solid\">\n <feFuncA type=\"table\" tableValues=\"0 1 1\"/>\n </feComponentTransfer>\n <feOffset in=\"solid\" result=\"offU\" dx=${shadows.mapUmbra[z].y / 2} dy=${shadows.mapUmbra[z].y} />\n <feOffset in=\"solid\" result=\"offP\" dx=${shadows.mapPenumbra[z].y / 2} dy=${shadows.mapPenumbra[z].y} />\n <feOffset in=\"solid\" result=\"offA\" dx=${shadows.mapAmbient[z].y / 2} dy=${shadows.mapAmbient[z].y} />\n ${(shadows.mapUmbra[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offU\" result=\"spreadU\" operator=${(shadows.mapUmbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapUmbra[z].s)} />`\n }\n ${(shadows.mapPenumbra[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offP\" result=\"spreadP\" operator=${(shadows.mapPenumbra[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapPenumbra[z].s)} />`\n }\n ${(shadows.mapAmbient[z].s === 0)\n ? svg``\n : svg`<feMorphology in=\"offA\" result=\"spreadA\" operator=${(shadows.mapAmbient[z].s > 0) ? 'dilate' : 'erode'} radius=${Math.abs(shadows.mapAmbient[z].s)} />`\n }\n <feGaussianBlur in=${(shadows.mapUmbra[z].s === 0) ? 'offU' : 'spreadU'} result=\"blurU\" stdDeviation=${shadows.mapUmbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapPenumbra[z].s === 0) ? 'offP' : 'spreadP'} result=\"blurP\" stdDeviation=${shadows.mapPenumbra[z].b / 2} />\n <feGaussianBlur in=${(shadows.mapAmbient[z].s === 0) ? 'offA' : 'spreadA'} result=\"blurA\" stdDeviation=${shadows.mapAmbient[z].b / 2} />\n <feFlood in=\"SourceGraphic\" result=\"opU\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityUmbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opP\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityPenumbra + shadows.opacityBoost} />\n <feFlood in=\"SourceGraphic\" result=\"opA\" flood-color=${shadows.baselineColor} flood-opacity=${shadows.opacityAmbient + shadows.opacityBoost} />\n <feComposite in=\"opU\" in2=\"blurU\" result=\"shU\" operator=\"in\" />\n <feComposite in=\"opP\" in2=\"blurP\" result=\"shP\" operator=\"in\" />\n <feComposite in=\"opA\" in2=\"blurA\" result=\"shA\" operator=\"in\" />\n <feMorphology in=\"solid\" result=\"smaller\" operator=\"erode\" radius=\"1\" />\n <feComposite in=\"shU\" in2=\"smaller\" result=\"finalU\" operator=\"out\" />\n <feComposite in=\"shP\" in2=\"smaller\" result=\"finalP\" operator=\"out\" />\n <feComposite in=\"shA\" in2=\"smaller\" result=\"finalA\" operator=\"out\" />\n <feMerge>\n <feMergeNode in=\"finalU\" />\n <feMergeNode in=\"finalP\" />\n <feMergeNode in=\"finalA\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>`;\n });\n\n return svg`\n <svg class=\"defs\">\n <defs>\n ${filters}\n </defs>\n </svg>\n `;\n }\n\n static get styles() {\n return css`\n :host {\n ---shadow-0: var(--shadow-0, ${unsafeCSS(this.cssBoxShadow(0))});\n ---shadow-2: var(--shadow-2, ${unsafeCSS(this.cssBoxShadow(2))});\n ---shadow-4: var(--shadow-4, ${unsafeCSS(this.cssBoxShadow(4))});\n ---shadow-8: var(--shadow-8, ${unsafeCSS(this.cssBoxShadow(8))});\n\n ---color-background: var(--color-background, ${unsafeCSS(this.greys.white)});\n ---color-border: var(--color-border, ${unsafeCSS(this.greys.light75)});\n ---color-text: var(--color-text, ${unsafeCSS(this.greys.dark75)});\n ---color-text-inverse: var(--color-text-inverse, ${unsafeCSS(this.greys.white)});\n ---color-link: var(--color-link, ${unsafeCSS(this.greys.dark25)});\n ---color-element-background: var(--color-element-background, ${unsafeCSS(this.greys.light75)});\n ---color-element-disabled: var(--color-element-disabled, ${unsafeCSS(this.greys.light50)});\n ---color-element-enabled: var(--color-element-enabled, ${unsafeCSS(this.greys.dark25)});\n ---color-element-selected: var(--color-element-selected, ${unsafeCSS(this.greys.grey)});\n ---color-element-border: var(--color-element-border, ${unsafeCSS(this.greys.dark50)});\n ---color-element-emphasis: var(--color-element-emphasis, ${unsafeCSS(this.greys.dark75)});\n\n ---font-family-base: var(--font-family-base, \"Source Sans\", sans-serif);\n ---font-family-math: var(--font-family-math, \"Source Serif\", serif);\n\n ---border: var(--border, 1px solid var(---color-border));\n ---border-radius: var(--border-radius, 0.25rem);\n ---transition-duration: var(--transition-duration, 500ms);\n\n font-family: var(---font-family-base);\n }\n\n :host,\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: border-box;\n }\n\n .math-greek {\n font-family: var(---font-family-math);\n font-style: normal;\n }\n\n .math-num {\n font-family: var(---font-family-base);\n font-style: normal;\n }\n\n .math-var {\n font-family: var(---font-family-math);\n font-style: italic;\n }\n\n .defs {\n display: block;\n\n width: 0;\n height: 0;\n }\n `;\n }\n}\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesButton extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---decidables-button-background-color-disabled: var(--decidables-button-background-color, var(---color-element-disabled));\n ---decidables-button-background-color-enabled: var(--decidables-button-background-color, var(---color-element-enabled));\n\n margin: 0.25rem;\n }\n\n button {\n width: 100%;\n height: 100%;\n padding: 0.375rem 0.75rem;\n\n font-family: var(---font-family-base);\n font-size: 1.125rem;\n line-height: 1.5;\n color: var(---color-text-inverse);\n\n border: 0;\n border-radius: var(---border-radius);\n outline: none;\n }\n\n button:disabled {\n background-color: var(---decidables-button-background-color-disabled);\n outline: none;\n box-shadow: none;\n }\n\n button:enabled {\n cursor: pointer;\n\n background-color: var(---decidables-button-background-color-enabled);\n outline: none;\n box-shadow: var(---shadow-2);\n }\n\n button:enabled:hover {\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n button:enabled:active {\n outline: none;\n box-shadow: var(---shadow-8);\n }\n\n :host(.keyboard) button:enabled:focus {\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) button:enabled:focus:active {\n outline: none;\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <button ?disabled=${this.disabled}>\n <slot></slot>\n </button>\n `;\n }\n}\n\ncustomElements.define('decidables-button', DecidablesButton);\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","\nimport {ifDefined} from 'lit/directives/if-defined.js'; /* eslint-disable-line import/extensions */\nimport {html, css, unsafeCSS} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSlider extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n\n scale: {\n attribute: 'scale',\n type: Boolean,\n reflect: true,\n },\n\n max: {\n attribute: 'max',\n type: Number,\n reflect: true,\n },\n min: {\n attribute: 'min',\n type: Number,\n reflect: true,\n },\n step: {\n attribute: 'step',\n type: Number,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: Number,\n reflect: true,\n },\n\n nonlinear: {\n attribute: false,\n type: Boolean,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n\n this.scale = false;\n\n this.max = undefined;\n this.min = undefined;\n this.step = undefined;\n this.value = undefined;\n\n this.nonlinear = false;\n\n // Properties\n this.rangeMax = undefined;\n this.rangeMin = undefined;\n this.rangeStep = undefined;\n this.rangeValue = undefined;\n\n // Transform\n this.toRange = undefined;\n this.fromRange = undefined;\n }\n\n nonlinearRange(nonlinear, toRange, fromRange) {\n this.nonlinear = nonlinear;\n\n this.toRange = nonlinear ? toRange : undefined;\n this.fromRange = nonlinear ? fromRange : undefined;\n }\n\n rangeChanged(event) {\n this.value = this.nonlinear ? this.fromRange(event.target.value) : event.target.value;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n value: this.value,\n },\n bubbles: true,\n }));\n }\n\n rangeInputted(event) {\n this.value = this.nonlinear ? this.fromRange(event.target.value) : event.target.value;\n }\n\n spinnerInputted(event) {\n this.value = event.target.value;\n }\n\n willUpdate() {\n this.rangeMax = (this.max === undefined)\n ? undefined\n : this.nonlinear\n ? this.toRange(this.max)\n : this.max;\n this.rangeMin = (this.min === undefined)\n ? undefined\n : this.nonlinear\n ? this.toRange(this.min)\n : this.min;\n this.rangeStep = (this.step === undefined)\n ? undefined\n : this.nonlinear\n ? 'any'\n : this.step;\n this.rangeValue = (this.value === undefined)\n ? undefined\n : this.nonlinear\n ? this.toRange(this.value)\n : this.value;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---decidables-slider-background-color: var(--decidables-slider-background-color, var(---color-element-disabled));\n ---decidables-slider-color: var(--decidables-slider-color, var(---color-element-enabled));\n ---decidables-spinner-background-color: var(--decidables-slider-background-color, none);\n\n ---shadow-2-rotate: var(--shadow-2-rotate, ${unsafeCSS(this.cssBoxShadow(2, true, false))});\n ---shadow-4-rotate: var(--shadow-4-rotate, ${unsafeCSS(this.cssBoxShadow(4, true, false))});\n ---shadow-8-rotate: var(--shadow-8-rotate, ${unsafeCSS(this.cssBoxShadow(8, true, false))});\n\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n }\n\n label {\n margin: 0.25rem 0.25rem 0;\n }\n\n .range {\n position: relative;\n display: flex;\n\n flex-direction: row;\n\n width: 3.5rem;\n height: 4.75rem;\n margin: 0 0.25rem 0.25rem;\n }\n\n decidables-spinner {\n --decidables-spinner-input-width: 3.5rem;\n\n margin: 0 0.25rem 0.25rem;\n\n background: var(---decidables-spinner-background-color);\n }\n\n /* Adapted from http://danielstern.ca/range.css/#/ */\n /* Overall */\n input[type=range] {\n width: 4.75rem;\n height: 3.5rem;\n padding: 0;\n margin: 0;\n\n background-color: unset;\n\n transform: rotate(-90deg);\n transform-origin: 2.375rem 2.375rem;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-appearance: none;\n }\n\n input[type=range]:enabled {\n cursor: ns-resize;\n }\n\n input[type=range]:focus {\n outline: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-tooltip {\n display: none;\n }\n\n /* Track */\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n\n background: var(---decidables-slider-background-color);\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n input[type=range]:focus::-webkit-slider-runnable-track {\n background: var(---decidables-slider-background-color);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-moz-range-track {\n width: 100%;\n height: 4px;\n\n background: var(---decidables-slider-background-color);\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-track {\n width: 100%;\n height: 4px;\n\n color: transparent;\n\n background: transparent;\n border-color: transparent;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-fill-lower {\n background: #cccccc;\n /* background: var(---decidables-slider-background-color); */\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-fill-upper {\n background: #cccccc;\n /* background: var(---decidables-slider-background-color); */\n border: 0;\n border-radius: 2px;\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:focus::-ms-fill-lower {\n background: var(---decidables-slider-background-color);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:focus::-ms-fill-upper {\n background: var(---decidables-slider-background-color);\n }\n\n /* Thumb */\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-webkit-slider-thumb {\n width: 10px;\n height: 20px;\n margin-top: -8px;\n\n border: 0;\n border-radius: 4px;\n\n /* stylelint-disable-next-line property-no-vendor-prefix */\n -webkit-appearance: none;\n }\n\n input[type=range]:disabled::-webkit-slider-thumb {\n background: var(---decidables-slider-background-color);\n box-shadow: none;\n }\n\n input[type=range]:enabled::-webkit-slider-thumb {\n background: var(---decidables-slider-color);\n box-shadow: var(---shadow-2-rotate);\n }\n\n input[type=range]:enabled:hover::-webkit-slider-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n input[type=range]:enabled:active::-webkit-slider-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus::-webkit-slider-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:focus:active::-webkit-slider-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-moz-range-thumb {\n width: 10px;\n height: 20px;\n\n border: 0;\n border-radius: 4px;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:disabled::-moz-range-thumb {\n background: var(---decidables-slider-background-color);\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled::-moz-range-thumb {\n background: var(---decidables-slider-color);\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:hover::-moz-range-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:active::-moz-range-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus::-moz-range-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus:active::-moz-range-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]::-ms-thumb {\n width: 10px;\n height: 20px;\n margin-top: 0;\n\n background: #999999;\n /* background: var(---color-element-enabled); */\n border: 0;\n border-radius: 4px;\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:disabled::-ms-thumb {\n background: var(---decidables-slider-background-color);\n box-shadow: none;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled::-ms-thumb {\n background: var(---decidables-slider-color);\n box-shadow: var(---shadow-2-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:hover::-ms-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n input[type=range]:enabled:active::-ms-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n /* stylelint-disable-next-line no-descending-specificity */ /* stylelint ERROR */\n :host(.keyboard) input[type=range]:enabled:focus::-ms-thumb {\n box-shadow: var(---shadow-4-rotate);\n }\n\n :host(.keyboard) input[type=range]:enabled:focus:active::-ms-thumb {\n box-shadow: var(---shadow-8-rotate);\n }\n\n datalist {\n position: absolute;\n left: 2rem;\n z-index: -1;\n display: flex;\n\n flex-direction: column;\n\n align-items: flex-start;\n justify-content: space-between;\n\n height: 4.75rem;\n\n font-size: 0.75rem;\n }\n\n option {\n padding: 0;\n\n line-height: 0.8;\n min-block-size: 0;\n }\n\n option::before {\n content: \"– \";\n }\n `,\n ];\n }\n\n render() {\n return html`\n <label for=\"slider\">\n <slot></slot>\n </label>\n <div class=\"range\">\n <input ?disabled=${this.disabled} type=\"range\" id=\"slider\" min=${ifDefined(this.rangeMin)} max=${ifDefined(this.rangeMax)} step=${ifDefined(this.rangeStep)} .value=${this.rangeValue} @change=${this.rangeChanged.bind(this)} @input=${this.rangeInputted.bind(this)}>\n ${this.scale\n ? html`\n <datalist id=\"ticks\">\n <option value=${ifDefined(this.rangeMax)} label=${ifDefined(this.max)}></option>\n <option value=${ifDefined(this.rangeMin)} label=${ifDefined(this.min)}></option>\n </datalist>\n `\n : html``\n }\n </div>\n <decidables-spinner ?disabled=${this.disabled} min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.spinnerInputted.bind(this)}></decidables-spinner>\n `;\n }\n}\n\ncustomElements.define('decidables-slider', DecidablesSlider);\n","\nimport {ifDefined} from 'lit/directives/if-defined.js'; /* eslint-disable-line import/extensions */\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSpinner extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n max: {\n attribute: 'max',\n type: Number,\n reflect: true,\n },\n min: {\n attribute: 'min',\n type: Number,\n reflect: true,\n },\n step: {\n attribute: 'step',\n type: Number,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n this.max = undefined;\n this.min = undefined;\n this.step = undefined;\n this.value = undefined;\n }\n\n inputted(event) {\n this.value = event.target.value;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---decidables-spinner-font-size: var(--decidables-spinner-font-size, 1.125rem);\n ---decidables-spinner-input-width: var(--decidables-spinner-input-width, 4rem);\n ---decidables-spinner-prefix: var(--decidables-spinner-prefix, \"\");\n\n ---decidables-spinner-postfix: var(--decidables-spinner-postfix, \"\");\n ---decidables-spinner-postfix-padding: var(--decidables-spinner-postfix-padding, 0);\n\n display: block;\n }\n\n label {\n position: relative;\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n\n margin: 0;\n\n font-size: 0.75rem;\n }\n\n label::before {\n position: absolute;\n bottom: 1px;\n left: calc(50% - var(---decidables-spinner-input-width) / 2 + 0.25rem);\n\n font-size: var(---decidables-spinner-font-size);\n line-height: normal;\n\n content: var(---decidables-spinner-prefix);\n }\n\n label::after {\n position: absolute;\n right: 0.25rem;\n bottom: 1px;\n\n font-size: var(---decidables-spinner-font-size);\n line-height: normal;\n\n content: var(---decidables-spinner-postfix);\n }\n\n input[type=number] {\n width: var(---decidables-spinner-input-width);\n padding-right: var(---decidables-spinner-postfix-padding);\n\n font-family: var(---font-family-base);\n font-size: var(---decidables-spinner-font-size);\n color: inherit;\n text-align: right;\n\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n box-shadow: var(---shadow-2);\n\n -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */\n }\n\n input[type=number]:hover {\n box-shadow: var(---shadow-4);\n }\n\n input[type=number]:focus,\n input[type=number]:active {\n box-shadow: var(---shadow-8);\n }\n\n input[type=number]:disabled {\n color: var(---color-text);\n\n border: 0;\n box-shadow: none;\n\n /* HACK: Use correct text color in Safari */\n -webkit-opacity: 1;\n /* HACK: Hide spinners in disabled input for Firefox and Safari */\n -moz-appearance: textfield; /* stylelint-disable-line property-no-vendor-prefix */\n /* HACK: Use correct text color in Safari */\n -webkit-text-fill-color: var(---color-text);\n }\n\n /* HACK: Hide spinners in disabled input for Firefox and Safari */\n input[type=number]:disabled::-webkit-outer-spin-button,\n input[type=number]:disabled::-webkit-inner-spin-button {\n margin: 0;\n -webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */\n }\n `,\n ];\n }\n\n render() {\n return html`\n <label>\n <slot></slot>\n <input ?disabled=${this.disabled} type=\"number\" min=${ifDefined(this.min)} max=${ifDefined(this.max)} step=${ifDefined(this.step)} .value=${this.value} @input=${this.inputted.bind(this)}>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-spinner', DecidablesSpinner);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesSwitch extends DecidablesElement {\n static get properties() {\n return {\n checked: {\n attribute: 'checked',\n type: Boolean,\n reflect: true,\n },\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.checked = false;\n this.disabled = false;\n }\n\n changed(event) {\n this.checked = event.target.checked;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n checked: this.checked,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n }\n\n /* Adapted from https://codepen.io/guuslieben/pen/YyPRVP */\n input[type=checkbox] {\n /* visuallyhidden: https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/css.md */\n position: absolute;\n\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n white-space: nowrap;\n\n border: 0;\n clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */\n }\n\n input[type=checkbox] + label {\n order: 1;\n\n margin: 0 0.25rem 0.25rem;\n\n font-weight: 400;\n }\n\n input[type=checkbox] + label + label {\n position: relative;\n\n min-width: 24px;\n padding: 0 0 36px;\n margin: 0.25rem 0.25rem 0;\n\n font-weight: 400;\n\n outline: none;\n }\n\n input[type=checkbox] + label + label::before,\n input[type=checkbox] + label + label::after {\n position: absolute;\n\n left: 50%;\n\n margin: 0;\n\n content: \"\";\n\n outline: 0;\n\n transition: all var(---transition-duration) ease;\n transform: translate(-50%, 0);\n }\n\n input[type=checkbox] + label + label::before {\n bottom: 1px;\n\n width: 8px;\n height: 34px;\n\n background-color: var(---color-element-disabled);\n border-radius: 4px;\n }\n\n input[type=checkbox] + label + label::after {\n bottom: 0;\n\n width: 18px;\n height: 18px;\n\n background-color: var(---color-element-enabled);\n border-radius: 50%;\n box-shadow: var(---shadow-2);\n }\n\n input[type=checkbox]:checked + label + label::after {\n transform: translate(-50%, -100%);\n }\n\n input[type=checkbox]:disabled + label + label::after {\n background-color: var(---color-element-disabled);\n box-shadow: none;\n }\n\n input[type=checkbox]:enabled + label,\n input[type=checkbox]:enabled + label + label {\n cursor: pointer;\n }\n\n input[type=checkbox]:enabled + label:hover + label::after,\n input[type=checkbox]:enabled + label + label:hover::after {\n box-shadow: var(---shadow-4);\n }\n\n input[type=checkbox]:enabled + label:active + label::after,\n input[type=checkbox]:enabled + label + label:active::after {\n box-shadow: var(---shadow-8);\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n :host(.keyboard) input[type=checkbox]:enabled:focus + label + label::after {\n box-shadow: var(---shadow-4);\n }\n\n /* stylelint-disable selector-max-compound-selectors */\n :host(.keyboard) input[type=checkbox]:enabled:focus + label + label:active::after,\n :host(.keyboard) input[type=checkbox]:enabled:focus:active + label + label::after {\n box-shadow: var(---shadow-8);\n }\n /* stylelint-enable selector-max-compound-selectors */\n `,\n ];\n }\n\n render() {\n return html`\n <input type=\"checkbox\" id=\"switch\" ?checked=${this.checked} ?disabled=${this.disabled} @change=${this.changed.bind(this)}>\n <label for=\"switch\">\n <slot name=\"off-label\"></slot>\n </label>\n <label for=\"switch\">\n <slot></slot>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-switch', DecidablesSwitch);\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesToggle extends DecidablesElement {\n static get properties() {\n return {\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.disabled = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n fieldset {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n\n margin: 0.25rem;\n\n border: 0;\n }\n\n legend {\n text-align: center;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <fieldset ?disabled=${this.disabled}>\n <legend><slot name=\"label\"></slot></legend>\n <slot></slot>\n </fieldset>\n `;\n }\n}\n\ncustomElements.define('decidables-toggle', DecidablesToggle);\n","\nexport default function DecidablesMixinResizeable(superClass) {\n return class extends superClass {\n static get properties() {\n return {\n width: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n height: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n rem: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n this.width = NaN;\n this.height = NaN;\n this.rem = NaN;\n }\n\n getDimensions() {\n this.width = parseFloat(this.getComputedStyleValue('width'), 10);\n this.height = parseFloat(this.getComputedStyleValue('height'), 10);\n this.rem = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('font-size'), 10);\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.resizeObserver = new ResizeObserver(this.getDimensions.bind(this));\n this.resizeObserver.observe(this);\n }\n\n disconnectedCallback() {\n this.resizeObserver.unobserve(this);\n\n super.disconnectedCallback();\n }\n };\n}\n","\nimport {html, css} from 'lit';\n\nimport DecidablesElement from './decidables-element';\n\nexport default class DecidablesToggleOption extends DecidablesElement {\n static get properties() {\n return {\n checked: {\n attribute: 'checked',\n type: Boolean,\n reflect: true,\n },\n disabled: {\n attribute: 'disabled',\n type: Boolean,\n reflect: true,\n },\n name: {\n attribute: 'name',\n type: String,\n reflect: true,\n },\n value: {\n attribute: 'value',\n type: String,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.checked = false;\n this.disabled = false;\n this.name = undefined;\n this.value = undefined;\n }\n\n changed(event) {\n this.checked = event.target.checked;\n this.dispatchEvent(new CustomEvent('change', {\n detail: {\n checked: this.checked,\n value: this.value,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: flex;\n }\n\n input[type=radio] {\n /* visuallyhidden: https://github.com/h5bp/html5-boilerplate/blob/master/dist/doc/css.md */\n position: absolute;\n\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n white-space: nowrap;\n\n border: 0;\n clip-path: inset(100%); /* May cause a performance issue: https://github.com/h5bp/html5-boilerplate/issues/2021 */\n }\n\n input[type=radio] + label {\n width: 100%;\n padding: 0.375rem 0.75rem;\n\n font-family: var(---font-family-base);\n font-size: 1.125rem;\n line-height: 1.5;\n color: var(---color-text-inverse);\n text-align: center;\n\n cursor: pointer;\n\n background-color: var(---color-element-enabled);\n border: 0;\n border-radius: 0;\n outline: none;\n\n box-shadow: var(---shadow-2);\n }\n\n input[type=radio]:checked + label {\n background-color: var(---color-element-selected);\n outline: none;\n box-shadow: var(---shadow-2);\n }\n\n input[type=radio] + label:hover {\n z-index: 1;\n\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n input[type=radio] + label:active {\n z-index: 2;\n\n outline: none;\n box-shadow: var(---shadow-8);\n }\n\n :host(:first-of-type) input[type=radio] + label {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n\n :host(:last-of-type) input[type=radio] + label {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n\n :host(.keyboard) input[type=radio]:focus + label {\n z-index: 1;\n\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) input[type=radio]:focus:checked + label {\n z-index: 1;\n\n background-color: var(---color-element-selected);\n outline: none;\n box-shadow: var(---shadow-4);\n }\n\n :host(.keyboard) input[type=radio]:focus + label:active {\n z-index: 2;\n\n outline: none;\n box-shadow: var(---shadow-8);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <input type=\"radio\" id=\"toggle-option\" name=${this.name} value=${this.value} .checked=${this.checked} @change=${this.changed.bind(this)}>\n <label for=\"toggle-option\">\n <slot></slot>\n </label>\n `;\n }\n}\n\ncustomElements.define('decidables-toggle-option', DecidablesToggleOption);\n","\nimport {\n css,\n unsafeCSS,\n} from 'lit';\nimport * as d3 from 'd3';\n\nimport {DecidablesElement} from '@decidables/decidables-elements';\n\n/*\n AccumulableElement Base Class - Not intended for instantiation!\n*/\nexport default class AccumulableElement extends DecidablesElement {\n static get properties() {\n return {\n interactive: {\n attribute: 'interactive',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n this.interactive = false;\n }\n\n static get colors() {\n return {\n a: d3.schemeSet1[0],\n z: d3.schemeSet1[1],\n v: d3.schemeSet1[4],\n t0: d3.schemeSet1[7],\n s: d3.schemeSet1[8],\n left: '#f032e6',\n right: '#10dbc9',\n correct: d3.schemeSet1[2],\n error: d3.schemeSet1[3],\n nr: '#cccccc',\n };\n }\n\n static get lights() {\n return Object.keys(AccumulableElement.colors).reduce((acc, cur) => {\n acc[cur] = d3.interpolateRgb(AccumulableElement.colors[cur], '#ffffff')(0.5);\n return acc;\n }, {});\n }\n\n static get darks() {\n return Object.keys(AccumulableElement.colors).reduce((acc, cur) => {\n acc[cur] = d3.interpolateRgb(AccumulableElement.colors[cur], '#000000')(0.5);\n return acc;\n }, {});\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n /* Declare base colors */\n ${\n unsafeCSS(Object.keys(AccumulableElement.colors).map((color) => {\n return `---color-${color}: var(--color-${color}, ${this.colors[color]});`;\n }).join('\\n'))\n }\n\n /* Declare light colors */\n ${\n unsafeCSS(Object.keys(AccumulableElement.colors).map((color) => {\n return `---color-${color}-light: var(--color-${color}-light, ${this.lights[color]});`;\n }).join('\\n'))\n }\n\n /* Declare dark colors */\n ${\n unsafeCSS(Object.keys(AccumulableElement.colors).map((color) => {\n return `---color-${color}-dark: var(--color-${color}-dark, ${this.darks[color]});`;\n }).join('\\n'))\n }\n }\n `,\n ];\n }\n}\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/button';\nimport '@decidables/decidables-elements/slider';\nimport '@decidables/decidables-elements/switch';\nimport '@decidables/decidables-elements/toggle';\nimport '@decidables/decidables-elements/toggle-option';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n AccumulableControl element\n <accumulable-control>\n\n Attributes:\n\n*/\nexport default class AccumulableControl extends AccumulableElement {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n resample: {\n attribute: 'resample',\n type: Boolean,\n reflect: true,\n },\n\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n run: {\n attribute: 'run',\n type: Boolean,\n reflect: true,\n },\n pause: {\n attribute: 'pause',\n type: Boolean,\n reflect: true,\n },\n reset: {\n attribute: 'reset',\n type: Boolean,\n reflect: true,\n },\n\n state: {\n attribute: false,\n type: String,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.trials = undefined;\n this.resample = false;\n\n this.duration = undefined;\n this.coherence = undefined;\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = undefined;\n\n this.run = false;\n this.pause = false;\n this.reset = false;\n\n // Properties\n this.states = ['resetted', 'running', 'paused', 'ended'];\n this.state = 'resetted';\n }\n\n setTrials(e) {\n this.trials = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-trials', {\n detail: {\n trials: this.trials,\n },\n bubbles: true,\n }));\n }\n\n doResample() {\n this.dispatchEvent(new CustomEvent('accumulable-control-resample', {\n detail: {},\n bubbles: true,\n }));\n }\n\n setDuration(e) {\n this.duration = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-duration', {\n detail: {\n duration: this.duration,\n },\n bubbles: true,\n }));\n }\n\n setCoherence(e) {\n this.coherence = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-coherence', {\n detail: {\n coherence: this.coherence,\n },\n bubbles: true,\n }));\n }\n\n chooseColor(e) {\n this.color = e.target.value;\n this.dispatchEvent(new CustomEvent('accumulable-control-color', {\n detail: {\n color: this.color,\n },\n bubbles: true,\n }));\n }\n\n doRun() {\n this.state = 'running';\n this.dispatchEvent(new CustomEvent('accumulable-control-run', {\n detail: {},\n bubbles: true,\n }));\n }\n\n doPause() {\n this.state = 'paused';\n this.dispatchEvent(new CustomEvent('accumulable-control-pause', {\n detail: {},\n bubbles: true,\n }));\n }\n\n doReset() {\n this.state = 'resetted';\n this.dispatchEvent(new CustomEvent('accumulable-control-reset', {\n detail: {},\n bubbles: true,\n }));\n }\n\n complete() {\n this.state = 'ended';\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n .holder {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n .buttons {\n display: flex;\n\n flex-direction: column;\n\n align-items: stretch;\n justify-content: center;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div class=\"holder\">\n ${this.trials != null\n ? html`<decidables-slider class=\"trials\" min=\"1\" max=\"100\" step=\"1\" .value=${this.trials} @change=${this.setTrials.bind(this)} @input=${this.setTrials.bind(this)}>Trials</decidables-slider>`\n : html``}\n ${this.resample\n ? html`\n <div class=\"buttons\">\n ${this.resample\n ? html`<decidables-button name=\"resample\" @click=${this.doResample.bind(this)}>Resample</decidables-button>`\n : html``}\n </div>\n `\n : html``}\n ${this.duration != null\n ? html`<decidables-slider class=\"duration\" min=\"10\" max=\"2000\" step=\"10\" .value=${this.duration} @change=${this.setDuration.bind(this)} @input=${this.setDuration.bind(this)}>Duration</decidables-slider>`\n : html``}\n ${this.coherence != null\n ? html`<decidables-slider class=\"coherence\" min=\"0\" max=\"1\" step=\".01\" .value=${this.coherence} @change=${this.setCoherence.bind(this)} @input=${this.setCoherence.bind(this)}>Coherence</decidables-slider>`\n : html``}\n ${this.color != null\n ? html`\n <decidables-toggle class=\"color\" @change=${this.chooseColor.bind(this)}>\n <span slot=\"label\">Emphasis</span>\n <decidables-toggle-option name=\"toggle\" value=\"none\" ?checked=${this.color === 'none'}>None</decidables-toggle-option>\n <decidables-toggle-option name=\"toggle\" value=\"measure\" ?checked=${this.color === 'measure'}>Measure</decidables-toggle-option>\n <decidables-toggle-option name=\"toggle\" value=\"outcome\" ?checked=${this.color === 'outcome'}>Outcome</decidables-toggle-option>\n <decidables-toggle-option name=\"toggle\" value=\"all\" ?checked=${this.color === 'all'}>All</decidables-toggle-option>\n </decidables-toggle>\n `\n : html``}\n ${this.run || this.pause || this.reset\n ? html`\n <div class=\"buttons\">\n ${this.run\n ? html`<decidables-button name=\"run\" ?disabled=${this.state === 'running' || this.state === 'ended'} @click=${this.doRun.bind(this)}>Run</decidables-button>`\n : html``}\n ${this.pause\n ? html`<decidables-button name=\"pause\" ?disabled=${this.state !== 'running'} @click=${this.doPause.bind(this)}>Pause</decidables-button>`\n : html``}\n ${this.reset\n ? html`<decidables-button name=\"reset\" ?disabled=${this.state === 'resetted'} @click=${this.doReset.bind(this)}>Reset</decidables-button>`\n : html``}\n </div>\n `\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('accumulable-control', AccumulableControl);\n","\n/*\n DDMMath Static Class - Not intended for instantiation!\n\n Model parameters:\n a = boundary separation [0, Infinity)\n z = starting point as a proportion of a (0, 1)\n v = drift rate (per second) (-Infinity, Infinity)\n t0 = non-decision time (in milliseconds) (0, Infinity)\n s = within-trial variability in drift rate (s^2 = infinitesimal variance) [0, Infinity)\n\n zPrime = starting point on a 0-to-a scale (typically used in published equations) [0, Infinity)\n\n Behavioral variables:\n pE = proportion of error trials\n pC = proportion of correct trials\n m = mean of overall RTs (in milliseconds)\n mE = mean of error RTs (in milliseconds)\n mC = mean correct RTs (in milliseconds)\n sd = standard deviation of overall RTs (in milliseconds)\n sdE = standard deviation of error RTs (in milliseconds)\n sdC = standard deviation of correct RTs (in milliseconds)\n\n Equations:\n Probability of correct and error responses (Alexandrowicz, 2020)\n Mean of overall, error, and correct RTs (Grasman et al., 2009)\n Standard deviation of overall, error, and correct RTs (Grasman et al., 2009)\n Density of error and correct RT distributions (Alexandrowicz, 2020)\n EZ-diffusion model (Wagenmakers et al., 2007)\n*/\nexport default class DDMMath {\n static s = {\n DEFAULT: 1,\n };\n\n static a = {\n DEFAULT: 1.2,\n MIN: 0.01,\n MAX: 2.0,\n STEP: 0.01,\n JUMP: 0.1,\n };\n\n static z = {\n DEFAULT: 0.55,\n MIN: 0.01,\n MAX: 0.99,\n STEP: 0.01,\n JUMP: 0.1,\n };\n\n static v = {\n DEFAULT: 1.5,\n MIN: 0.01,\n MAX: 5.0,\n STEP: 0.01,\n JUMP: 0.1,\n };\n\n static t0 = {\n DEFAULT: 150,\n MIN: 0,\n MAX: 500,\n STEP: 1,\n JUMP: 10,\n };\n\n // Calculate a bunch of statistics for an array of trials\n static trials2stats(trials) {\n const stats = {};\n\n // First-order sums\n const sums = trials.reduce(\n (accumulator, trial) => {\n switch (trial.outcome) {\n case 'correct':\n accumulator.correctCount += 1;\n accumulator.correctRTSum += trial.rt;\n break;\n case 'error':\n accumulator.errorCount += 1;\n accumulator.errorRTSum += trial.rt;\n break;\n case 'nr':\n accumulator.nrCount += 1;\n break;\n default:\n // No-op\n }\n return accumulator;\n },\n {\n correctCount: 0,\n errorCount: 0,\n nrCount: 0,\n\n correctRTSum: 0,\n errorRTSum: 0,\n },\n );\n\n // First-order stats\n stats.correctCount = sums.correctCount;\n stats.errorCount = sums.errorCount;\n stats.nrCount = sums.nrCount;\n stats.accuracy = sums.correctCount / (sums.correctCount + sums.errorCount + sums.nrCount);\n\n stats.correctMeanRT = sums.correctRTSum / sums.correctCount;\n stats.errorMeanRT = sums.errorRTSum / sums.errorCount;\n stats.meanRT = (sums.correctRTSum + sums.errorRTSum) / (sums.correctCount + sums.errorCount);\n\n // Second-order sums\n const sums2 = trials.reduce(\n (accumulator, trial) => {\n switch (trial.outcome) {\n case 'correct':\n accumulator.ss += (trial.rt - stats.meanRT) ** 2;\n accumulator.correctSS += (trial.rt - stats.correctMeanRT) ** 2;\n break;\n case 'error':\n accumulator.ss += (trial.rt - stats.meanRT) ** 2;\n accumulator.errorSS += (trial.rt - stats.errorMeanRT) ** 2;\n break;\n default:\n // No-op\n }\n return accumulator;\n },\n {\n ss: 0,\n correctSS: 0,\n errorSS: 0,\n },\n );\n\n // Second-order stats\n stats.correctSDRT = (stats.correctCount > 1)\n ? Math.sqrt(sums2.correctSS / (stats.correctCount - 1))\n : NaN;\n stats.errorSDRT = (stats.errorCount > 1)\n ? Math.sqrt(sums2.errorSS / (stats.errorCount - 1))\n : NaN;\n stats.sdRT = (stats.correctCount + stats.errorCount > 1)\n ? Math.sqrt(sums2.ss / (stats.correctCount + stats.errorCount - 1))\n : NaN;\n\n return stats;\n }\n\n // Probability of an Error Response\n static azv2pE(a, z, v, s = DDMMath.s.DEFAULT) {\n const zPrime = a * z;\n\n const A = Math.exp((-2 * v * a) / s ** 2);\n const Z = Math.exp((-2 * v * zPrime) / s ** 2);\n\n return (A - Z) / (A - 1);\n }\n\n // Probability of a Correct Response\n static azv2pC(a, z, v, s = DDMMath.s.DEFAULT) {\n return DDMMath.azv2pE(a, 1 - z, -v, s);\n }\n\n // Mean Overall RT\n // Equation 5 (Grasman et al., 2009)\n static azvt02m(a, z, v, t0, s = DDMMath.s.DEFAULT) {\n const zPrime = a * z;\n const A = Math.exp((-2 * v * a) / s ** 2) - 1;\n const Z = Math.exp((-2 * v * zPrime) / s ** 2) - 1;\n\n const mean = -(zPrime / v) + (a / v) * (Z / A);\n return t0 + mean * 1000;\n }\n\n // SD Overall RT\n // Equation 6 (Grasman et al., 2009)\n static azv2sd(a, z, v, s = DDMMath.s.DEFAULT) {\n const zPrime = a * z;\n const A = Math.exp((-2 * v * a) / s ** 2) - 1;\n const Z = Math.exp((-2 * v * zPrime) / s ** 2) - 1;\n\n const variance = (\n (\n (-v * a ** 2 * (Z + 4) * Z) / A ** 2\n ) + (\n ((-3 * v * a ** 2 + 4 * v * zPrime * a + s ** 2 * a) * Z + 4 * v * zPrime * a) / A\n ) - (\n s ** 2 * zPrime\n )\n ) / v ** 3;\n\n return Math.sqrt(variance) * 1000;\n }\n\n // Mean Error RT\n // Equation 13 (Grasman et al., 2009)\n static azvt02mE(a, z, v, t0, s = DDMMath.s.DEFAULT) {\n function phi(x, y) {\n return Math.exp((2 * v * y) / (s ** 2)) - Math.exp((2 * v * x) / (s ** 2));\n }\n const zPrime = a * z;\n\n const mean = (zPrime * (phi(zPrime - a, a) + phi(0, zPrime)) + 2 * a * phi(zPrime, 0))\n / (v * phi(zPrime, a) * phi(-a, 0));\n return t0 + mean * 1000;\n }\n\n // SD Error RT\n // Equation 14 (Grasman et al., 2009)\n static azv2sdE(a, z, v, s = DDMMath.s.DEFAULT) {\n function phi(x, y) {\n return Math.exp((2 * v * y) / (s ** 2)) - Math.exp((2 * v * x) / (s ** 2));\n }\n const zPrime = a * z;\n\n const variance = (\n (\n -2 * a * phi(0, zPrime)\n * ((2 * v * a * phi(zPrime, 2 * a)) + (s ** 2 * phi(0, a) * phi(zPrime, a)))\n * Math.exp((2 * v * a) / s ** 2)\n ) / (\n v ** 3 * phi(0, a) ** 2 * phi(zPrime, a) ** 2\n )\n ) + (\n (\n 4 * v * zPrime * (2 * a - zPrime) * Math.exp((2 * v * (zPrime + a)) / s ** 2)\n + zPrime * s ** 2 * phi(2 * zPrime, 2 * a)\n ) / (\n v ** 3 * phi(zPrime, a) ** 2\n )\n );\n\n return Math.sqrt(variance) * 1000;\n }\n\n // Mean Correct RT\n static azvt02mC(a, z, v, t0, s = DDMMath.s.DEFAULT) {\n return DDMMath.azvt02mE(a, 1 - z, -v, t0, s);\n }\n\n // SD Correct RT\n static azv2sdC(a, z, v, s = DDMMath.s.DEFAULT) {\n return DDMMath.azv2sdE(a, 1 - z, -v, s);\n }\n\n // Density of Error RT\n static tazv2gE(t, a, z, v, s = DDMMath.s.DEFAULT) {\n if (!t) return 0;\n\n const zPrime = a * z;\n const base = ((Math.PI * s ** 2) / a ** 2) * Math.exp((-zPrime * v) / s ** 2);\n\n let k = 0;\n let term = 0;\n let sum = 0;\n do {\n k += 1;\n\n term = k\n * Math.sin((Math.PI * zPrime * k) / a)\n * Math.exp(-0.5 * ((v ** 2 / s ** 2) + ((Math.PI ** 2 * k ** 2 * s ** 2) / a ** 2)) * t);\n\n sum += term;\n } while (k < 200); // ?? HACK\n\n return base * sum;\n }\n\n // Density of Correct RT\n static tazv2gC(t, a, z, v, s = DDMMath.s.DEFAULT) {\n return DDMMath.tazv2gE(t, a, 1 - z, -v, s);\n }\n\n // Adapted from https://raoul.socsci.uva.nl/EZ2/EZ2_new.html\n // EZ-function for starting values\n // input: obj - Object with properties\n // pC - Proportion correct\n // sd - sample standard deviation of the RT's in ms\n // m - sample mean of the RT's in ms\n // s - diffusion standard deviation\n // returns: Object with properties v, a, and t0, containing EZ-estimates of these parameters\n static data2ez({\n accuracy: pC,\n sdRT: sd,\n meanRT: m,\n s,\n }) {\n function sign(r) {\n return ((r > 0) ? 1 : ((r === 0) ? 0 : -1));\n }\n\n function logit(p) {\n return Math.log(p / (1 - p));\n }\n\n const vrt = (sd / 1000) ** 2;\n const mrt = m / 1000;\n\n const s2 = s ** 2;\n const l = logit(pC);\n const x = (l * (l * pC ** 2 - l * pC + pC - 0.5)) / vrt;\n const v = sign(pC - 0.5) * s * x ** (1 / 4);\n const a = (s2 * logit(pC)) / v;\n const y = (-v * a) / s2;\n const mdt = ((a / (2 * v)) * (1 - Math.exp(y))) / (1 + Math.exp(y));\n const t0 = (mrt ? mrt - mdt : null); // compute Ter only if MRT was provided\n\n const t0Prime = t0 * 1000;\n return {\n v,\n a,\n t0: t0Prime,\n s,\n };\n }\n\n static data2ez2() {\n throw new Error('data2ez2 is not implemented!');\n }\n}\n","\nimport {html, css} from 'lit';\n\nimport DDMMath from '@decidables/accumulable-math';\nimport '@decidables/decidables-elements/button';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n AccumulableResponse element\n <accumulable-response>\n\n Attributes:\n\n*/\nexport default class AccumulableResponse extends AccumulableElement {\n static get properties() {\n return {\n feedback: {\n attribute: 'feedback',\n type: Boolean,\n reflect: true,\n },\n trial: {\n attribute: 'trial',\n type: Boolean,\n reflect: true,\n },\n payoff: {\n attribute: 'payoff',\n type: String,\n reflect: true,\n },\n correctPayoff: {\n attribute: 'correct-payoff',\n type: Number,\n reflect: true,\n },\n errorPayoff: {\n attribute: 'error-payoff',\n type: Number,\n reflect: true,\n },\n nrPayoff: {\n attribute: 'no-response-payoff',\n type: Number,\n reflect: true,\n },\n\n state: {\n attribute: false,\n type: String,\n reflect: false,\n },\n trialCount: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n trialTotal: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.feedback = false; // Display feedback?\n this.trial = false; // Show trial count?\n this.payoffs = ['none', 'trial', 'total']; // Possible types of 'payoff' info\n this.payoff = 'none'; // What payoff info to display\n\n this.correctPayoff = 0; // Correct payoff\n this.errorPayoff = 0; // Error payoff\n this.nrPayoff = 0; // No Response payoff\n\n // Properties\n this.states = ['off', 'waiting', 'feedback']; // Possible states\n this.state = 'off'; // Current state\n\n this.trialCount = 0; // Current trial\n this.trialTotal = 0; // Total trials\n\n // Private\n this.signals = ['left', 'right']; // Possible values of 'signal'\n this.signal = undefined; // Signal for current trial\n this.responses = ['left', 'right']; // Possible values of 'response'\n this.response = undefined; // Response for current trial\n this.outcomes = ['correct', 'error', 'nr']; // Possible values of 'outcome'\n this.outcome = undefined; // Outcome for current trial\n this.startTime = undefined; // Start time of current trial\n this.rt = undefined; // RT for current trial\n\n this.data = {};\n\n this.trials = []; // Record of trials in block\n this.alignState();\n }\n\n get trialPayoff() {\n switch (this.outcome) {\n case 'correct':\n return this.correctPayoff;\n case 'error':\n return this.errorPayoff;\n case 'nr':\n return this.nrPayoff;\n default:\n return undefined;\n }\n }\n\n get totalPayoff() {\n return ((this.data.correctCount * this.correctPayoff)\n + (this.data.errorCount * this.errorPayoff)\n + (this.data.nrCount * this.nrPayoff));\n }\n\n alignState() {\n this.data = DDMMath.trials2stats(this.trials);\n }\n\n start(signal, trial) {\n this.startTime = Date.now();\n this.trialCount = trial;\n this.state = 'waiting';\n this.signal = signal;\n this.response = undefined;\n this.outcome = undefined;\n this.rt = undefined;\n }\n\n stop() {\n this.state = 'feedback';\n if (this.response === undefined) {\n this.outcome = 'nr';\n this.rt = undefined;\n\n this.trials.push({\n trial: this.trialCount,\n rt: this.rt,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n });\n this.alignState();\n }\n }\n\n left() {\n this.responded('left');\n }\n\n right() {\n this.responded('right');\n }\n\n responded(response) {\n this.rt = Date.now() - this.startTime;\n this.state = 'feedback';\n this.response = response;\n if (this.signal === this.response) {\n this.outcome = 'correct';\n } else if (this.signal !== this.response) {\n this.outcome = 'error';\n }\n this.trials.push({\n trial: this.trialCount,\n rt: this.rt,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n });\n this.alignState();\n\n this.dispatchEvent(new CustomEvent('accumulable-response', {\n detail: {\n trial: this.trialCount,\n rt: this.rt,\n signal: this.signal,\n response: this.response,\n outcome: this.outcome,\n payoff: this.trialPayoff,\n\n data: this.data,\n\n totalPayoff: this.totalPayoff,\n },\n bubbles: true,\n }));\n }\n\n reset() {\n this.state = 'off';\n this.trialCount = 0;\n this.rt = undefined;\n this.signal = undefined;\n this.response = undefined;\n this.outcome = undefined;\n\n this.trials = [];\n this.alignState();\n }\n\n keydown(event) {\n if (this.state === 'waiting') {\n if (event.key === 'ArrowLeft') {\n this.responded('left');\n event.preventDefault();\n } else if (event.key === 'ArrowRight') {\n this.responded('right');\n event.preventDefault();\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n window.addEventListener('keydown', this.keydown.bind(this));\n }\n\n disconnectedCallback() {\n window.removeEventListener('keydown', this.keydown.bind(this));\n\n super.disconnectedCallback();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n /* Overall container */\n .holder {\n display: flex;\n\n flex-direction: column;\n }\n\n /* Response buttons */\n .responses {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n .response {\n flex: 1 0 50%;\n }\n\n .waiting[disabled] {\n --decidables-button-background-color: var(---color-element-enabled);\n }\n\n .selected[disabled][name=\"left\"] {\n --decidables-button-background-color: var(---color-left);\n }\n\n .selected[disabled][name=\"right\"] {\n --decidables-button-background-color: var(---color-right);\n }\n\n /* Feedback messages */\n .feedbacks {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n\n margin: 0.25rem;\n }\n\n /* Trial feedback */\n .trial {\n text-align: center;\n }\n\n .trial .label {\n font-weight: 600;\n }\n\n /* Outcome feedback */\n .feedback {\n display: flex;\n\n flex-direction: column;\n\n align-items: center;\n justify-content: center;\n\n width: 6rem;\n height: 3.5rem;\n padding: 0.375rem 0.75rem;\n margin: 0.25rem;\n\n text-align: center;\n\n background-color: var(---color-element-background);\n border: 1px solid var(---color-element-border);\n }\n\n :host([payoff=\"trial\"]) .feedback,\n :host([payoff=\"total\"]) .feedback {\n height: 5rem;\n }\n\n .feedback.correct {\n background-color: var(---color-correct-light);\n }\n\n .feedback.error {\n background-color: var(---color-error-light);\n }\n\n .feedback.nr {\n background-color: var(---color-nr-light);\n }\n\n .feedback .outcome {\n font-weight: 600;\n line-height: 1.15;\n }\n\n /* Payoff feedback */\n .total {\n text-align: center;\n }\n\n .total .label {\n font-weight: 600;\n }\n `,\n ];\n }\n\n render() {\n const payoffFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n const payoffFormat = (number) => {\n return payoffFormatter.formatToParts(number).map(({type, value}) => {\n if (type === 'minusSign') {\n return '−';\n }\n return value;\n }).reduce((string, part) => { return string + part; });\n };\n\n return html`\n <div class=\"holder\">\n <div class=\"responses\">\n <decidables-button name=\"left\" class=${`response ${(this.state === 'feedback' && this.response === 'left') ? 'selected' : ((this.state === 'waiting') ? 'waiting' : '')}`} ?disabled=${this.state !== 'waiting' || this.interactive !== true} @click=${this.left.bind(this)}>Left</decidables-button>\n <decidables-button name=\"right\" class=${`response ${(this.state === 'feedback' && this.response === 'right') ? 'selected' : ((this.state === 'waiting') ? 'waiting' : '')}`} ?disabled=${this.state !== 'waiting' || this.interactive !== true} @click=${this.right.bind(this)}>Right</decidables-button>\n </div>\n ${(this.trial || this.feedback || this.payoff === 'total')\n ? html`\n <div class=\"feedbacks\">\n ${(this.trial)\n ? html`\n <div class=\"trial\">\n <span class=\"label\">Trial: </span><span class=\"count\">${this.trialCount}</span><span class=\"of\"> of </span><span class=\"total\">${this.trialTotal}</span>\n </div>`\n : html``}\n ${(this.feedback)\n ? html`\n <div class=${`feedback ${((this.state === 'feedback') && this.feedback)\n ? this.outcome\n : ''}`}>\n ${((this.state === 'feedback') && this.feedback)\n ? (this.outcome === 'correct')\n ? html`<span class=\"outcome\">Correct</span>`\n : (this.outcome === 'error')\n ? html`<span class=\"outcome\">Error</span>`\n : html`<span class=\"outcome\">No<br>Response</span>`\n : ''}\n ${((this.state === 'feedback') && (this.payoff === 'trial' || this.payoff === 'total'))\n ? html`<span class=\"payoff\">${payoffFormat(this.trialPayoff)}</span>`\n : html``}\n </div>`\n : html``}\n ${(this.payoff === 'total')\n ? html`\n <div class=\"total\">\n <span class=\"label\">Total: </span><span class=\"value\">${payoffFormat(this.totalPayoff)}</span>\n </div>`\n : html``}\n </div>`\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('accumulable-response', AccumulableResponse);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n AccumulableTable element\n <accumulable-table>\n\n Attributes:\n ????Hit; Miss; FalseAlarm; CorrectRejection;\n*/\nexport default class AccumulableTable extends AccumulableElement {\n static get properties() {\n return {\n numeric: {\n attribute: 'numeric',\n type: Boolean,\n reflect: true,\n },\n summary: {\n attribute: 'summary',\n type: Boolean,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n correctCount: {\n attribute: 'correct-count',\n type: Number,\n reflect: true,\n },\n errorCount: {\n attribute: 'error-count',\n type: Number,\n reflect: true,\n },\n nrCount: {\n attribute: 'nr-count',\n type: Number,\n reflect: true,\n },\n accuracy: {\n attribute: 'accuracy',\n type: Number,\n reflect: true,\n },\n correctMeanRT: {\n attribute: 'correct-mean-rt',\n type: Number,\n reflect: true,\n },\n errorMeanRT: {\n attribute: 'error-mean-rt',\n type: Number,\n reflect: true,\n },\n meanRT: {\n attribute: 'mean-rt',\n type: Number,\n reflect: true,\n },\n correctSDRT: {\n attribute: 'correct-sd-rt',\n type: Number,\n reflect: true,\n },\n errorSDRT: {\n attribute: 'error-sd-rt',\n type: Number,\n reflect: true,\n },\n sdRT: {\n attribute: 'sd-rt',\n type: Number,\n reflect: true,\n },\n\n payoff: {\n attribute: 'payoff',\n type: Boolean,\n reflect: true,\n },\n correctPayoff: {\n attribute: 'correct-payoff',\n type: Number,\n reflect: true,\n },\n errorPayoff: {\n attribute: 'error-payoff',\n type: Number,\n reflect: true,\n },\n nrPayoff: {\n attribute: 'no-response-payoff',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n this.numeric = false;\n this.summary = false;\n\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = 'all';\n\n this.payoff = false;\n this.correctPayoff = undefined; // Correct payoff\n this.errorPayoff = undefined; // Error payoff\n this.nrPayoff = undefined; // No Response payoff\n\n this.correctCount = NaN;\n this.errorCount = NaN;\n this.nrCount = NaN;\n this.accuracy = NaN;\n this.correctMeanRT = NaN;\n this.errorMeanRT = NaN;\n this.meanRT = NaN;\n this.correctSDRT = NaN;\n this.errorSDRT = NaN;\n this.sdRT = NaN;\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('accumulable-table-change', {\n detail: {\n correctCount: this.correctCount,\n errorCount: this.errorCount,\n nrCount: this.nrCount,\n accuracy: this.accuracy,\n correctMeanRT: this.correctMeanRT,\n errorMeanRT: this.errorMeanRT,\n meanRT: this.meanRT,\n correctSDRT: this.correctSDRT,\n errorSDRT: this.errorSDRT,\n sdRT: this.sdRT,\n },\n bubbles: true,\n }));\n }\n\n correctCountInput(e) {\n this.correctCount = parseInt(e.target.value, 10);\n this.sendEvent();\n }\n\n errorCountInput(e) {\n this.errorCount = parseInt(e.target.value, 10);\n this.sendEvent();\n }\n\n accuracyInput(e) {\n this.accuracy = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n correctMeanRTInput(e) {\n this.correctMeanRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n errorMeanRTInput(e) {\n this.errorMeanRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n meanRTInput(e) {\n this.meanRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n correctSDRTInput(e) {\n this.correctSDRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n errorSDRTInput(e) {\n this.errorSDRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n sdRTInput(e) {\n this.sdRT = parseFloat(e.target.value);\n this.sendEvent();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n /* Overall element */\n table {\n text-align: center;\n\n border-collapse: collapse;\n\n border: 0;\n }\n\n /* Headers */\n .th-main {\n padding: 0;\n\n font-weight: bold;\n }\n\n .th-sub {\n padding: 0 0.25rem;\n\n font-weight: 600;\n }\n\n .th-left {\n padding-left: 0;\n\n text-align: right;\n }\n\n /* Cells */\n .td {\n width: 10rem;\n\n padding: 0.25rem 0.25rem 0.375rem;\n\n transition: all var(---transition-duration) ease;\n }\n\n .numeric .td {\n width: 7rem;\n }\n\n /* Labels */\n .payoff {\n font-weight: 600;\n line-height: 0.75rem;\n }\n\n /* User interaction <input> */\n .td-data decidables-spinner {\n --decidables-spinner-input-width: 3.5rem;\n }\n\n .td-summary decidables-spinner {\n --decidables-spinner-input-width: 4.5rem;\n }\n\n /* Table emphasis */\n .td-data.correct {\n border-left: 2px solid var(---color-element-emphasis);\n }\n\n .td-data.error {\n border-right: 2px solid var(---color-element-emphasis);\n }\n\n .td-data.count {\n border-top: 2px solid var(---color-element-emphasis);\n }\n\n .td-data.sd-rt {\n border-bottom: 2px solid var(---color-element-emphasis);\n }\n\n /* Color schemes */\n\n /* (Default) All color scheme */\n .correct.count {\n background: var(---color-element-background); /* ###### */\n }\n\n .error.count {\n background: var(---color-element-background); /* ###### */\n }\n\n .overall.proportion-correct {\n background: var(---color-element-background); /* ###### */\n }\n\n .correct.mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .error.mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .overall.mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .correct.sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .error.sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n .overall.sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n /* Outcome color scheme */\n :host([color=\"outcome\"]) .correct {\n background: var(---color-correct-light);\n }\n\n :host([color=\"outcome\"]) .error {\n background: var(---color-error-light);\n }\n\n :host([color=\"outcome\"]) .overall {\n background: var(---color-element-background);\n }\n\n /* Measure color scheme */\n :host([color=\"measure\"]) .count,\n :host([color=\"measure\"]) .proportion-correct {\n background: var(---color-element-background); /* ###### */\n }\n\n :host([color=\"measure\"]) .mean-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n :host([color=\"measure\"]) .sd-rt {\n background: var(---color-element-background); /* ###### */\n }\n\n /* No color scheme */\n :host([color=\"none\"]) .td-data,\n :host([color=\"none\"]) .td-summary {\n background: var(---color-element-background);\n }\n `,\n ];\n }\n\n render() {\n const payoffFormatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n const payoffFormat = (number) => {\n return payoffFormatter.formatToParts(number).map(({type, value}) => {\n if (type === 'minusSign') {\n return '−';\n }\n return value;\n }).reduce((string, part) => { return string + part; });\n };\n\n let correctCount;\n let errorCount;\n let accuracy;\n let correctMeanRT;\n let errorMeanRT;\n let meanRT;\n let correctSDRT;\n let errorSDRT;\n let sdRT;\n if (this.numeric) {\n correctCount = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.correctCount}\" @input=${this.correctCountInput.bind(this)}>\n <span>Correct Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.correctPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n errorCount = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.errorCount}\" @input=${this.errorCountInput.bind(this)}>\n <span>Error Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.errorPayoff)}</span>` : html``}\n </decidables-spinner>\n `;\n accuracy = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" max=\"1\" step=\".01\" .value=\"${+this.accuracy.toFixed(2)}\" @input=${this.accuracyInput.bind(this)}>\n <span>Accuracy</span>\n </decidables-spinner>\n `;\n correctMeanRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.correctMeanRT.toFixed(0)}\" @input=${this.correctMeanRTInput.bind(this)}>\n <span>Correct Mean RT</span>\n </decidables-spinner>\n `;\n errorMeanRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.errorMeanRT.toFixed(0)}\" @input=${this.errorMeanRTInput.bind(this)}>\n <span>Error Mean RT</span>\n </decidables-spinner>\n `;\n meanRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.meanRT.toFixed(0)}\" @input=${this.meanRTInput.bind(this)}>\n <span>Mean RT</span>\n </decidables-spinner>\n `;\n correctSDRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.correctSDRT.toFixed(0)}\" @input=${this.correctSDRTInput.bind(this)}>\n <span>Correct SD RT</span>\n </decidables-spinner>\n `;\n errorSDRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.errorSDRT.toFixed(0)}\" @input=${this.errorSDRTInput.bind(this)}>\n <span>Error SD RT</span>\n </decidables-spinner>\n `;\n sdRT = html`\n <decidables-spinner ?disabled=${!this.interactive} min=\"0\" .value=\"${+this.sdRT.toFixed(0)}\" @input=${this.sdRTInput.bind(this)}>\n <span>SD RT</span>\n </decidables-spinner>\n `;\n } else {\n correctCount = html`<span>Correct Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.correctPayoff)}</span>` : html``}`;\n errorCount = html`<span>Error Count</span>\n ${this.payoff ? html`<span class=\"payoff\">${payoffFormat(this.errorPayoff)}</span>` : html``}`;\n accuracy = html`<span>Accuracy</span>`;\n correctMeanRT = html`<span>Correct Mean RT</span>`;\n errorMeanRT = html`<span>Error Mean RT</span>`;\n meanRT = html`<span>Mean RT</span>`;\n correctSDRT = html`<span>Correct SD RT</span>`;\n errorSDRT = html`<span>Error SD RT</span>`;\n sdRT = html`<span>SD RT</span>`;\n }\n return html`\n <table class=${this.numeric ? 'numeric' : ''}>\n <thead>\n <tr>\n <th rowspan=\"2\"></th>\n <th class=\"th th-main\" colspan=\"2\" scope=\"col\">\n Outcome\n </th>\n </tr>\n <tr>\n <th class=\"th th-sub\" scope=\"col\">\n Correct\n </th>\n <th class=\"th th-sub\" scope=\"col\">\n Error\n </th>\n ${(this.summary)\n ? html`\n <th class=\"th th-main\" scope=\"col\">\n Overall\n </th>`\n : html``}\n </tr>\n </thead>\n <tbody>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n Count\n </th>\n <td class=\"td td-data correct count\">\n ${correctCount}\n </td>\n <td class=\"td td-data error count\">\n ${errorCount}\n </td>\n ${(this.summary)\n ? html`\n <td class=\"td td-summary overall proportion-correct\">\n ${accuracy}\n </td>`\n : html``}\n </tr>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n Mean RT\n </th>\n <td class=\"td td-data correct mean-rt\">\n ${correctMeanRT}\n </td>\n <td class=\"td td-data error mean-rt\">\n ${errorMeanRT}\n </td>\n ${(this.summary)\n ? html`\n <td class=\"td td-summary overall mean-rt\">\n ${meanRT}\n </td>`\n : html``}\n </tr>\n <tr>\n <th class=\"th th-sub th-left\" scope=\"row\">\n SD RT\n </th>\n <td class=\"td td-data correct sd-rt\">\n ${correctSDRT}\n </td>\n <td class=\"td td-data error sd-rt\">\n ${errorSDRT}\n </td>\n ${(this.summary)\n ? html`\n <td class=\"td td-summary overall sd-rt\">\n ${sdRT}\n </td>`\n : html``}\n </tr>\n </tbody>\n </table>`;\n }\n}\n\ncustomElements.define('accumulable-table', AccumulableTable);\n","\nimport {html, css} from 'lit';\n\nimport DDMMath from '@decidables/accumulable-math';\n\n// Special Web Worker import for rollup-plugin-web-worker-loader\nimport DDMFitWorker from 'web-worker:./ddm-fit-worker'; /* eslint-disable-line import/no-unresolved */\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMFit element\n <ddm-fit>\n\n Attributes:\n interactive: true/false\n*/\nexport default class DDMFit extends AccumulableElement {\n static get properties() {\n return {\n };\n }\n\n constructor() {\n super();\n\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.t0 = DDMMath.t0.DEFAULT;\n\n this.observed = {};\n this.predicted = {};\n\n this.working = false;\n this.queued = false;\n this.worker = new DDMFitWorker();\n\n this.worker.onmessage = (event) => {\n this.working = false;\n this.predicted = event.data.predicted;\n this.a = event.data.params.a;\n this.z = event.data.params.z;\n this.v = event.data.params.v;\n this.t0 = event.data.params.t0;\n this.requestUpdate();\n\n this.dispatchEvent(new CustomEvent('ddm-fit-update', {\n detail: {\n a: this.a,\n z: this.z,\n v: this.v,\n t0: this.t0,\n },\n bubbles: true,\n }));\n\n if (this.queued) {\n this.fit();\n }\n };\n\n this.fit();\n }\n\n fit() {\n if (!this.working) {\n this.worker.postMessage(this.observed);\n this.working = true;\n this.queued = false;\n } else {\n this.queued = true;\n }\n }\n\n clear() {\n this.observed = {};\n\n this.fit();\n }\n\n set(data) {\n // Deep copy\n this.observed = structuredClone(data);\n\n this.fit();\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div>\n <div><b>Observed:</b>\n <br/>Accuracy = ${this.observed.accuracy?.toFixed(2)},\n <br/>Correct Mean RT = ${this.observed.correctMeanRT?.toFixed(0)},\n Error Mean RT = ${this.observed.errorMeanRT?.toFixed(0)},\n Mean RT = ${this.observed.meanRT?.toFixed(0)},\n <br/>Correct SD RT = ${this.observed.correctSDRT?.toFixed(0)},\n Error SD RT = ${this.observed.errorSDRT?.toFixed(0)},\n SD RT = ${this.observed.sdRT?.toFixed(0)},\n </div>\n <div><b>Parameters:</b>\n <br/><var class=\"math-var a\">a</var> = ${this.a.toFixed(2)},\n <var class=\"math-var z\">z</var> = ${this.z.toFixed(2)},\n <var class=\"math-var v\">v</var> = ${this.v.toFixed(2)},\n <var class=\"math-var t0\">t0</var> = ${this.t0.toFixed(0)}\n </div>\n <div><b>Predicted:</b>\n <br/>Accuracy = ${this.predicted.accuracy?.toFixed(2)},\n <br/>Correct Mean RT = ${this.predicted.correctMeanRT?.toFixed(0)},\n Error Mean RT = ${this.predicted.errorMeanRT?.toFixed(0)},\n Mean RT = ${this.predicted.meanRT?.toFixed(0)},\n <br/>Correct SD RT = ${this.predicted.correctSDRT?.toFixed(0)},\n Error SD RT = ${this.predicted.errorSDRT?.toFixed(0)},\n SD RT = ${this.predicted.sdRT?.toFixed(0)},\n </div>\n </div>\n `;\n }\n}\n\ncustomElements.define('ddm-fit', DDMFit);\n","\nimport {html, css} from 'lit';\n\nimport '@decidables/decidables-elements/slider';\nimport DDMMath from '@decidables/accumulable-math';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMParameters element\n <ddm-paramters>\n\n Attributes:\n\n*/\nexport default class DDMParameters extends AccumulableElement {\n static get properties() {\n return {\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.a = undefined;\n this.z = undefined;\n this.v = undefined;\n this.t0 = undefined;\n }\n\n setBoundarySeparation(e) {\n this.a = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-a', {\n detail: {\n a: this.a,\n },\n bubbles: true,\n }));\n }\n\n setStartingPoint(e) {\n this.z = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-z', {\n detail: {\n z: this.z,\n },\n bubbles: true,\n }));\n }\n\n setDriftRate(e) {\n this.v = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-v', {\n detail: {\n v: this.v,\n },\n bubbles: true,\n }));\n }\n\n setNondecisionTime(e) {\n this.t0 = +e.target.value;\n this.dispatchEvent(new CustomEvent('ddm-parameters-t0', {\n detail: {\n t0: this.t0,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n }\n\n .holder {\n display: flex;\n\n flex-direction: row;\n\n align-items: stretch;\n justify-content: center;\n }\n\n decidables-slider {\n line-height: 1;\n text-align: center;\n }\n\n decidables-slider div {\n margin-bottom: 0.25rem;\n }\n\n .a {\n --decidables-slider-background-color: var(---color-a-light);\n --decidables-slider-color: var(---color-a);\n }\n\n .z {\n --decidables-slider-background-color: var(---color-z-light);\n --decidables-slider-color: var(---color-z);\n }\n\n .v {\n --decidables-slider-background-color: var(---color-v-light);\n --decidables-slider-color: var(---color-v);\n }\n\n .t0 {\n --decidables-slider-background-color: var(---color-t0-light);\n --decidables-slider-color: var(---color-t0);\n }\n `,\n ];\n }\n\n render() {\n return html`\n <div class=\"holder\">\n ${this.a != null\n ? html`<decidables-slider class=\"a\"\n ?disabled=${!this.interactive}\n scale\n min=${DDMMath.a.MIN}\n max=${DDMMath.a.MAX}\n step=${DDMMath.a.STEP}\n .value=${+this.a.toFixed(2)}\n @change=${this.setBoundarySeparation.bind(this)}\n @input=${this.setBoundarySeparation.bind(this)}\n ><div>Boundary Separation<br><span class=\"math-var\">a</span></div></decidables-slider>`\n : html``}\n ${this.z != null\n ? html`<decidables-slider class=\"z\"\n ?disabled=${!this.interactive}\n scale\n min=${DDMMath.z.MIN}\n max=${DDMMath.z.MAX}\n step=${DDMMath.z.STEP}\n .value=${+this.z.toFixed(2)}\n @change=${this.setStartingPoint.bind(this)}\n @input=${this.setStartingPoint.bind(this)}\n ><div>Starting Point<br><span class=\"math-var\">z</span></div></decidables-slider>`\n : html``}\n ${this.v != null\n ? html`<decidables-slider class=\"v\"\n ?disabled=${!this.interactive}\n scale\n min=${DDMMath.v.MIN}\n max=${DDMMath.v.MAX}\n step=${DDMMath.v.STEP}\n .value=${+this.v.toFixed(2)}\n @change=${this.setDriftRate.bind(this)}\n @input=${this.setDriftRate.bind(this)}\n ><div>Drift Rate<br><span class=\"math-var\">v</span></div></decidables-slider>`\n : html``}\n ${this.t0 != null\n ? html`<decidables-slider class=\"t0\" \n ?disabled=${!this.interactive}\n scale\n min=${DDMMath.t0.MIN}\n max=${DDMMath.t0.MAX}\n step=${DDMMath.t0.STEP}\n .value=${+this.t0.toFixed(0)}\n @change=${this.setNondecisionTime.bind(this)}\n @input=${this.setNondecisionTime.bind(this)}\n ><div>Nondecision Time<br><span class=\"math-var\">t₀</span></div></decidables-slider>`\n : html``}\n </div>`;\n }\n}\n\ncustomElements.define('ddm-parameters', DDMParameters);\n","\nimport {css, html} from 'lit';\nimport * as d3 from 'd3';\n\nimport DDMMath from '@decidables/accumulable-math';\nimport {DecidablesMixinResizeable} from '@decidables/decidables-elements';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMModel element\n <ddm-model>\n\n Attributes:\n interactive: true/false\n\n measures: boolean\n means: boolean\n\n seed: numeric\n trials: numeric\n\n a: numeric\n z: numeric\n v: numeric\n t0: numeric\n\n // s: numeric\n // sz: numeric\n // eta: numeric\n // st: numeric\n\n Styles:\n ??\n*/\nexport default class DDMModel extends DecidablesMixinResizeable(AccumulableElement) {\n static get properties() {\n return {\n measures: {\n attribute: 'measures',\n type: Boolean,\n reflect: true,\n },\n means: {\n attribute: 'means',\n type: Boolean,\n reflect: true,\n },\n sds: {\n attribute: 'sds',\n type: Boolean,\n reflect: true,\n },\n\n human: {\n attribute: 'human',\n type: Boolean,\n reflect: true,\n },\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n seed: {\n attribute: 'seed',\n type: Number,\n reflect: true,\n },\n\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n\n // s: {\n // attribute: false, // within-trial variability in drift rate\n // type: Number,\n // reflect: false,\n // },\n // sz: {\n // attribute: false, // starting point range\n // type: Number,\n // reflect: false,\n // },\n // eta: {\n // attribute: false, // standard deviation for across-trial variability in drift rate\n // type: Number,\n // reflect: false,\n // },\n // st: {\n // attribute: false, // nondecision-time range\n // type: Number,\n // reflect: false,\n // },\n };\n }\n\n constructor() {\n super();\n\n this.firstUpdate = true;\n this.drag = false;\n\n this.scale = {\n time: {\n min: 0,\n max: 1000,\n step: 1,\n round: Math.round,\n },\n evidence: {\n min: -1,\n max: 1,\n step: 0.01,\n round: Math.round,\n },\n density: {\n min: 0,\n max: 10,\n step: 0.01,\n round: Math.round,\n },\n };\n\n this.measures = false;\n this.means = false;\n this.sds = false;\n\n this.resample();\n this.human = false;\n this.trials = 10;\n\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.t0 = DDMMath.t0.DEFAULT;\n\n // this.s = null;\n // this.sz = null;\n // this.eta = null;\n // this.st = null;\n\n this.precision = 0.005;\n this.random = null;\n\n this.bounds = null;\n this.startingPoint = null;\n\n this.data = {};\n this.model = {};\n this.animate = false;\n this.paused = false;\n\n this.alignState();\n }\n\n clear() {\n this.trials = 0;\n this.data.trials = [];\n }\n\n trial(trial = {}) {\n this.trials += 1;\n if (this.human) {\n this.data.trials.push(trial);\n } else {\n this.animate = true;\n }\n }\n\n // Called to pause trial animations!\n pauseTrial() {\n const pathNew = d3.select(this.renderRoot).select('.path[data-new-trial-ease-time]');\n pathNew.interrupt('new').select('.curve').interrupt('new');\n this.paused = true;\n }\n\n // Called to resume trial animations!\n resumeTrial() {\n this.paused = false;\n this.requestUpdate();\n }\n\n resample() {\n this.seed = d3.randomUniform(0, 1)();\n }\n\n alignPath(seed, a, z, v, t0) {\n const random = d3.randomNormal.source(d3.randomLcg(seed))(0, this.precision ** 0.5);\n const bounds = {\n lower: -a / 2,\n upper: a / 2,\n };\n const startingPoint = a * z - a / 2;\n const drift = v * this.precision;\n\n const path = [];\n path.push(\n {t: t0, e: startingPoint},\n );\n while ((path.at(-1).e > bounds.lower) && (path.at(-1).e < bounds.upper)) {\n path.push({\n t: path.at(-1).t + (this.precision * 1000),\n e: path.at(-1).e + drift + DDMMath.s.DEFAULT * random(),\n });\n }\n return path;\n }\n\n alignCorrectDistribution(a, z, v, t0) {\n const proportionCorrect = DDMMath.azv2pC(a, z, v);\n\n const dist = [\n {t: 0, d: 0},\n {t: this.t0, d: 0},\n ];\n for (\n let i = this.scale.time.min;\n i <= (this.scale.time.max - (t0));\n i += this.scale.time.step) {\n if (i > 0) {\n dist.push({\n t: t0 + i,\n d: DDMMath.tazv2gC(i / 1000, a, z, v) / proportionCorrect,\n });\n }\n }\n\n return dist;\n }\n\n alignErrorDistribution(a, z, v, t0) {\n const proportionError = DDMMath.azv2pE(a, z, v);\n\n const dist = [\n {t: 0, d: 0},\n {t: this.t0, d: 0},\n ];\n for (\n let i = this.scale.time.min;\n i <= (this.scale.time.max - (t0));\n i += this.scale.time.step) {\n if (i > 0) {\n dist.push({\n t: t0 + i,\n d: DDMMath.tazv2gE(i / 1000, a, z, v) / proportionError,\n });\n }\n }\n\n return dist;\n }\n\n alignState() {\n this.random = d3.randomUniform.source(d3.randomLcg(this.seed))(0, 1);\n\n this.bounds = {\n lower: -this.a / 2,\n upper: this.a / 2,\n };\n this.startingPoint = this.a * this.z - this.a / 2;\n\n // Data Trials\n if (this.human) {\n this.trials = this.data.trials.length;\n } else {\n this.data.trials = Array.from({length: this.trials}, (element, index) => {\n const seed = (this.random() / 1000) * 997; // HACK to avoid randomLcg repetition\n const animate = this.animate && (index === (this.trials - 1));\n\n // Sample Paths\n const path = this.alignPath(seed, this.a, this.z, this.v, this.t0);\n const outcome = (path.at(-1).e <= this.bounds.lower)\n ? 'error'\n : (path.at(-1).e >= this.bounds.upper)\n ? 'correct'\n : 'nr';\n const rt = (outcome === 'error')\n ? path.at(-2).t + (\n ((this.bounds.lower - path.at(-2).e) / (path.at(-1).e - path.at(-2).e))\n * (this.precision * 1000)\n )\n : (outcome === 'correct')\n ? path.at(-2).t + (\n ((this.bounds.upper - path.at(-2).e) / (path.at(-1).e - path.at(-2).e))\n * (this.precision * 1000)\n )\n : null;\n\n return {\n index, seed, path, rt, outcome, animate,\n };\n });\n }\n\n // Data Summary Stats\n const dataStats = DDMMath.trials2stats(\n this.data.trials.filter((path) => { return !path.animate; }),\n );\n this.data = {...this.data, ...dataStats};\n\n // Model Summary Stats\n this.model.accuracy = DDMMath.azv2pC(this.a, this.z, this.v);\n\n this.model.correctMeanRT = DDMMath.azvt02mC(this.a, this.z, this.v, this.t0);\n this.model.errorMeanRT = DDMMath.azvt02mE(this.a, this.z, this.v, this.t0);\n\n this.model.correctSDRT = DDMMath.azv2sdC(this.a, this.z, this.v);\n this.model.errorSDRT = DDMMath.azv2sdE(this.a, this.z, this.v);\n\n // Model Distributions\n this.model.correctDist = this.alignCorrectDistribution(this.a, this.z, this.v, this.t0);\n this.model.errorDist = this.alignErrorDistribution(this.a, this.z, this.v, this.t0);\n\n this.dispatchEvent(new CustomEvent('ddm-model-output', {\n detail: {\n data: this.data,\n model: this.model,\n },\n bubbles: true,\n }));\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 27rem;\n height: 18rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n text {\n /* stylelint-disable property-no-vendor-prefix */\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n /* \n UNDERLAYER\n */\n .background {\n fill: var(---color-element-background);\n stroke: none;\n stroke-width: 1;\n shape-rendering: crispEdges;\n }\n\n .title {\n font-weight: 600;\n\n fill: currentColor;\n }\n\n .axis path,\n .axis line {\n stroke: var(---color-element-border);\n /* shape-rendering: crispEdges; */\n }\n\n .tick {\n font-size: 0.75rem;\n }\n\n /* \n CONTENT\n */\n .line {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2;\n }\n\n .curve {\n stroke-width: 2;\n }\n\n .path .curve {\n opacity: 0.5;\n\n fill: none;\n\n transition: opacity 0.5s;\n }\n\n .path.highlight .curve {\n filter: url(\"#shadow-2\");\n opacity: 1;\n }\n\n .path.correct .curve {\n /* stroke: var(---color-correct); */\n }\n\n .path.error .curve {\n /* stroke: var(---color-error); */\n }\n\n .stop-0 {\n stop-color: var(---color-correct);\n }\n\n .stop-100 {\n stop-color: var(---color-error);\n }\n\n .path.animate .curve {\n opacity: 1;\n\n stroke: url(\"#path-animate\");\n }\n\n .dist.correct .curve {\n fill: var(---color-correct-light);\n stroke: var(---color-correct);\n }\n\n .dist.error .curve {\n fill: var(---color-error-light);\n stroke: var(---color-error);\n }\n\n .rt .mark {\n stroke-width: 1;\n }\n\n .accuracy.model .bar {\n stroke: none;\n }\n\n .accuracy.model.correct .bar {\n fill: var(---color-correct);\n }\n\n .accuracy.model.error .bar {\n fill: var(---color-error);\n }\n\n .accuracy.data .mark {\n stroke-width: 2;\n }\n\n .accuracy.data.correct .mark {\n stroke: var(---color-correct-light);\n }\n\n .accuracy.data.error .mark {\n stroke: var(---color-error-light);\n }\n\n /*\n OVERLAYER\n */\n .interactive {\n filter: url(\"#shadow-2\");\n outline: none;\n }\n\n .interactive:hover {\n filter: url(\"#shadow-4\");\n }\n\n .interactive:active {\n filter: url(\"#shadow-8\");\n }\n\n :host(.keyboard) .interactive:focus {\n filter: url(\"#shadow-8\");\n }\n\n .boundary {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2;\n }\n\n .boundary.interactive {\n cursor: ns-resize;\n }\n\n .drift {\n pointer-events: visible;\n\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-dasharray: 8 4;\n stroke-width: 2;\n }\n\n .drift.interactive {\n cursor: ns-resize;\n }\n\n .drift .arrow {\n stroke-dasharray: none;\n }\n\n .t0z.interactive {\n cursor: move;\n }\n\n .t0z .point {\n fill: var(---color-element-emphasis);\n stroke-width: 0;\n\n r: 6px;\n }\n\n /* Make larger targets for touch users */\n .interactive .touch {\n stroke: #000000;\n stroke-dasharray: none;\n stroke-opacity: 0;\n }\n\n @media (pointer: coarse) {\n .interactive .touch {\n stroke-linecap: round;\n stroke-width: 12;\n }\n }\n\n .measure {\n stroke-width: 2;\n }\n\n .measure .label {\n font-size: 0.75rem;\n\n fill: currentColor;\n }\n\n .measure.a .line {\n stroke: var(---color-a);\n }\n\n .measure.a .label {\n dominant-baseline: auto;\n text-anchor: end;\n }\n\n .measure.z .line {\n stroke: var(---color-z);\n }\n\n .measure.z .label {\n dominant-baseline: hanging;\n text-anchor: start;\n }\n\n .measure.v .line {\n stroke: var(---color-v);\n }\n\n .measure.v .label {\n dominant-baseline: auto;\n text-anchor: start;\n }\n\n .measure.t0 .line {\n stroke: var(---color-t0);\n }\n\n .measure.t0 .label {\n dominant-baseline: auto;\n text-anchor: middle;\n }\n\n .sd .indicator,\n .mean .indicator {\n stroke-width: 2;\n }\n\n .sd.model .indicator,\n .mean.model .indicator {\n stroke-dasharray: 2 2;\n }\n\n .sd.data .indicator,\n .mean.data .indicator {\n stroke-dasharray: 1 1;\n }\n\n .sd.correct .indicator,\n .mean.correct .indicator {\n stroke: var(---color-correct-dark);\n }\n\n .sd.error .indicator,\n .mean.error .indicator {\n stroke: var(---color-error-dark);\n }\n\n .rt-label rect {\n filter: url(\"#shadow-2\");\n\n fill: var(--color-background);\n rx: 4;\n }\n\n .rt-label text {\n font-size: 0.75rem;\n \n text-anchor: middle;\n }\n\n .rt-label.correct text {\n dominant-baseline: auto;\n }\n\n .rt-label.error text {\n dominant-baseline: hanging;\n }\n `,\n ];\n }\n\n render() { /* eslint-disable-line class-methods-use-this */\n return html``;\n }\n\n willUpdate() {\n this.alignState();\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n // Bail out if we can't get the width/height\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const hostWidth = this.width;\n const hostHeight = this.height;\n const hostAspectRatio = hostWidth / hostHeight;\n\n const elementAspectRatio = 1.5;\n let elementWidth;\n let elementHeight;\n\n if (hostAspectRatio > elementAspectRatio) {\n elementHeight = hostHeight;\n elementWidth = elementHeight * elementAspectRatio;\n } else {\n elementWidth = hostWidth;\n elementHeight = elementWidth / elementAspectRatio;\n }\n\n const margin = {\n top: 1 * this.rem,\n bottom: 3 * this.rem,\n left: 3.75 * this.rem,\n right: 3.25 * this.rem,\n };\n const height = elementHeight - (margin.top + margin.bottom);\n const width = elementWidth - (margin.left + margin.right);\n\n const gapHeight = 0.75 * this.rem;\n const evidenceHeight = height * 0.5;\n const densityHeight = height * 0.25 - gapHeight;\n\n const gapWidth = 0.75 * this.rem;\n const timeWidth = width * 0.90;\n const accuracyWidth = width * 0.10 - gapWidth;\n\n const transitionDuration = parseInt(this.getComputedStyleValue('---transition-duration'), 10);\n\n //\n // SCALES\n //\n\n // Time Scale\n const timeScale = d3.scaleLinear()\n .domain([this.scale.time.min, this.scale.time.max])\n .range([0, timeWidth]);\n\n // Evidence Scale\n const evidenceScale = d3.scaleLinear()\n .domain([this.scale.evidence.min, this.scale.evidence.max])\n .range([evidenceHeight, 0]);\n\n // Correct Density Scale\n const correctDensityScale = d3.scaleLinear()\n .domain([this.scale.density.min, this.scale.density.max])\n .range([densityHeight, 0]);\n\n // Error Density Scale\n const errorDensityScale = d3.scaleLinear()\n .domain([this.scale.density.min, this.scale.density.max])\n .range([0, densityHeight]);\n\n // Accuracy Scale\n const accuracyScale = d3.scaleLinear()\n .domain([0, 1])\n .range([0, height]);\n\n //\n // DRAG BEHAVIORS\n //\n\n // Nondecision Time/Starting Point Drag behavior\n const dragT0z = d3.drag()\n .subject((event, datum) => {\n return {x: timeScale(datum.t0), y: evidenceScale(datum.startingPoint)};\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n const shift = event.sourceEvent.shiftKey\n ? (Math.abs(event.x - event.subject.x) > Math.abs(event.y - event.subject.y))\n ? 't0'\n : 'z'\n : false;\n let t0 = timeScale.invert(event.x);\n let z = (evidenceScale.invert(event.y) + (this.a / 2)) / this.a;\n // Clamp t0\n t0 = (shift === 'z')\n ? timeScale.invert(event.subject.x)\n : (t0 < DDMMath.t0.MIN)\n ? DDMMath.t0.MIN\n : (t0 > DDMMath.t0.MAX)\n ? DDMMath.t0.MAX\n : t0;\n // Clamp z\n z = (shift === 't0')\n ? (evidenceScale.invert(event.subject.y) + (this.a / 2)) / this.a\n : (z < DDMMath.z.MIN)\n ? DDMMath.z.MIN\n : (z > DDMMath.z.MAX)\n ? DDMMath.z.MAX\n : z;\n this.t0 = t0;\n this.z = z;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-t0', {\n detail: {\n t0: this.t0,\n },\n bubbles: true,\n }));\n this.dispatchEvent(new CustomEvent('ddm-model-z', {\n detail: {\n z: this.z,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n this.drag = false;\n });\n\n // Drift Rate Drag behavior\n const dragDrift = d3.drag()\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n let v = ((evidenceScale.invert(event.y) - this.startingPoint)\n / (timeScale.invert(event.x) - this.t0)) * 1000;\n // Clamp drift rate\n v = (v < DDMMath.v.MIN)\n ? DDMMath.v.MIN\n : (v > DDMMath.v.MAX)\n ? DDMMath.v.MAX\n : v;\n this.v = v;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-v', {\n detail: {\n v: this.v,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n this.drag = false;\n });\n\n // Boundary Drag behavior\n const dragBoundary = d3.drag()\n .subject((event, datum) => {\n return {x: 0, y: evidenceScale(datum.value)};\n })\n .on('start', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', true);\n })\n .on('drag', (event) => {\n this.drag = true;\n const boundary = evidenceScale.invert(event.y);\n let a = Math.abs(boundary * 2);\n // Clamp a\n a = (a < DDMMath.a.MIN)\n ? DDMMath.a.MIN\n : (a > DDMMath.a.MAX)\n ? DDMMath.a.MAX\n : a;\n this.a = a;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-a', {\n detail: {\n a: this.a,\n },\n bubbles: true,\n }));\n })\n .on('end', (event) => {\n const element = event.currentTarget;\n d3.select(element).classed('dragging', false);\n this.drag = false;\n });\n\n //\n // LINES\n //\n\n // Line for time/evidence space\n const evidenceLine = d3.line()\n .x((datum) => { return timeScale(datum.t); })\n .y((datum) => { return evidenceScale(datum.e); });\n\n // Line for correct time/density space\n const correctDensityLine = d3.line()\n .x((datum) => { return timeScale(datum.t); })\n .y((datum) => { return correctDensityScale(datum.d); });\n\n // Line for error time/density space\n const errorDensityLine = d3.line()\n .x((datum) => { return timeScale(datum.t); })\n .y((datum) => { return errorDensityScale(datum.d); });\n\n //\n // PLOTS\n //\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true)\n .html(AccumulableElement.svgDefs);\n const svgDefs = svgEnter.append('defs');\n // Arrowhead marker for measures\n svgDefs.append('marker')\n .attr('id', 'measure-arrow')\n .attr('orient', 'auto-start-reverse')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '-5 -5 10 10')\n .attr('refX', '2')\n .attr('refY', '0')\n .attr('markerWidth', '10')\n .attr('markerHeight', '10')\n .append('path')\n .attr('stroke', 'context-stroke')\n .attr('fill', 'context-stroke')\n .attr('d', 'M -3 -3 l 6 3 l -6 3 z');\n // Flat markers for SDs\n svgDefs.append('marker')\n .attr('id', 'model-sd-cap')\n .attr('orient', 'auto-start-reverse')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '-5 -5 10 10')\n .attr('refX', '0')\n .attr('refY', '0')\n .attr('markerWidth', '10')\n .attr('markerHeight', '10')\n .append('path')\n .attr('stroke', 'context-stroke')\n .attr('fill', 'context-stroke')\n .attr('stroke-width', '2')\n .attr('d', 'M 0 -4 l 0 8');\n svgDefs.append('marker')\n .attr('id', 'data-sd-cap')\n .attr('orient', 'auto-start-reverse')\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('viewBox', '-5 -5 10 10')\n .attr('refX', '0')\n .attr('refY', '0')\n .attr('markerWidth', '10')\n .attr('markerHeight', '10')\n .append('path')\n .attr('stroke', 'context-stroke')\n .attr('fill', 'context-stroke')\n .attr('stroke-width', '2')\n .attr('d', 'M 0 -3 l 0 6');\n const gradient = svgDefs.append('linearGradient')\n .attr('id', 'path-animate')\n .attr('gradientUnits', 'userSpaceOnUse')\n .attr('color-interpolation', 'linearRGB')\n .attr('x1', '0')\n .attr('x2', '0')\n .attr('y1', evidenceScale(this.bounds.upper))\n .attr('y2', evidenceScale(this.bounds.lower));\n gradient.append('stop')\n .classed('stop-0', true)\n .attr('offset', '0%');\n gradient.append('stop')\n .classed('stop-100', true)\n .attr('offset', '100%');\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementWidth} ${elementHeight}`);\n\n // Plots\n // DATA-JOIN\n const densityPlotUpdate = svgMerge.selectAll('.plot.density')\n .data([\n {\n outcome: 'correct',\n data: {\n meanRT: this.data.correctMeanRT,\n sdRT: this.data.correctSDRT,\n },\n model: {\n meanRT: this.model.correctMeanRT,\n sdRT: this.model.correctSDRT,\n dist: this.model.correctDist,\n },\n densityScale: correctDensityScale,\n densityLine: correctDensityLine,\n alignDistribution: this.alignCorrectDistribution.bind(this),\n },\n {\n outcome: 'error',\n data: {\n meanRT: this.data.errorMeanRT,\n sdRT: this.data.errorSDRT,\n },\n model: {\n meanRT: this.model.errorMeanRT,\n sdRT: this.model.errorSDRT,\n dist: this.model.errorDist,\n },\n densityScale: errorDensityScale,\n densityLine: errorDensityLine,\n alignDistribution: this.alignErrorDistribution.bind(this),\n },\n ]);\n // ENTER\n const evidencePlotEnter = svgEnter.append('g')\n .classed('plot evidence', true);\n const densityPlotEnter = densityPlotUpdate.enter().append('g')\n .attr('class', (datum) => { return `plot density ${datum.outcome}`; });\n const accuracyPlotEnter = svgEnter.append('g')\n .classed('plot accuracy', true);\n // MERGE\n const evidencePlotMerge = svgMerge.select('.plot.evidence')\n .attr('transform', `translate(${margin.left}, ${margin.top + densityHeight + gapHeight})`);\n const densityPlotMerge = densityPlotEnter.merge(densityPlotUpdate)\n .attr('transform', (datum) => {\n return `translate(${margin.left}, ${\n (datum.outcome === 'correct')\n ? margin.top\n : margin.top + densityHeight + evidenceHeight + 2 * gapHeight\n })`;\n });\n const accuracyPlotMerge = svgMerge.select('.plot.accuracy')\n .attr('transform', `translate(${margin.left + timeWidth + gapWidth}, ${margin.top})`);\n\n // Clippaths\n // ENTER\n evidencePlotEnter.append('clipPath')\n .attr('id', 'clip-evidence')\n .append('rect');\n // MERGE\n evidencePlotMerge.select('clipPath rect')\n .attr('y', evidenceScale(this.bounds.upper))\n .attr('height', evidenceScale(this.bounds.lower) - evidenceScale(this.bounds.upper) + 1)\n .attr('width', timeWidth + 1);\n\n //\n // LAYERS\n //\n\n // Underlayers\n // ENTER\n const evidenceUnderlayerEnter = evidencePlotEnter.append('g')\n .classed('underlayer', true);\n const densityUnderlayerEnter = densityPlotEnter.append('g')\n .classed('underlayer', true);\n const accuracyUnderlayerEnter = accuracyPlotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const evidenceUnderlayerMerge = evidencePlotMerge.select('.underlayer');\n const densityUnderlayerMerge = densityPlotMerge.select('.underlayer');\n const accuracyUnderlayerMerge = accuracyPlotMerge.select('.underlayer');\n\n // Contents\n // ENTER\n evidencePlotEnter.append('g')\n .classed('content', true)\n .append('g').classed('paths', true);\n const densityContentEnter = densityPlotEnter.append('g')\n .classed('content', true);\n accuracyPlotEnter.append('g')\n .classed('content', true);\n // MERGE\n const evidenceContentMerge = evidencePlotMerge.select('.content');\n const densityContentMerge = densityPlotMerge.select('.content');\n const accuracyContentMerge = accuracyPlotMerge.select('.content');\n\n // Overlayers\n // ENTER\n evidencePlotEnter.append('g')\n .classed('overlayer', true);\n densityPlotEnter.append('g')\n .classed('overlayer', true);\n accuracyPlotEnter.append('g')\n .classed('overlayer', true);\n // MERGE\n const evidenceOverlayerMerge = evidencePlotMerge.select('.overlayer');\n const densityOverlayerMerge = densityPlotMerge.select('.overlayer');\n // const accuracyOverlayerMerge = accuracyPlotMerge.select('.overlayer');\n\n //\n // UNDERLAYERS\n //\n\n // Backgrounds\n // ENTER\n evidenceUnderlayerEnter.append('rect')\n .classed('background', true);\n densityUnderlayerEnter.append('rect')\n .classed('background', true);\n // MERGE\n evidenceUnderlayerMerge.select('.background')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('y', evidenceScale(this.bounds.upper))\n .attr('height', evidenceScale(this.bounds.lower) - evidenceScale(this.bounds.upper))\n .attr('width', timeWidth);\n densityUnderlayerMerge.select('.background')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('height', densityHeight)\n .attr('width', timeWidth);\n\n // X Axes (Time)\n // ENTER\n densityUnderlayerEnter\n .filter((datum) => { return datum.outcome === 'error'; })\n .append('g')\n .classed('axis time', true);\n // MERGE\n const timeScaleMerge = densityUnderlayerMerge\n .filter((datum) => { return datum.outcome === 'error'; })\n .select('.axis.time')\n .attr('transform', `translate(0, ${densityHeight + (0.25 * this.rem)})`);\n const timeScaleTransition = timeScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .call(d3.axisBottom(timeScale))\n .attr('font-size', null)\n .attr('font-family', null);\n timeScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n\n // X Axes Titles\n // ENTER\n const timeTitleEnter = densityUnderlayerEnter\n .filter((datum) => { return datum.outcome === 'error'; })\n .append('text')\n .classed('title time', true)\n .attr('text-anchor', 'middle');\n timeTitleEnter.append('tspan')\n .classed('name', true)\n .text('Time (ms)');\n // MERGE\n densityUnderlayerMerge\n .filter((datum) => { return datum.outcome === 'error'; })\n .select('.title.time')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr(\n 'transform',\n `translate(${(timeWidth / 2)}, ${(densityHeight + (2.5 * this.rem))})`,\n );\n\n // Y Axes (Evidence, Density, Accuracy)\n // ENTER\n evidenceUnderlayerEnter.append('g')\n .classed('axis evidence', true);\n densityUnderlayerEnter.append('g')\n .attr('class', (datum) => { return `axis density ${datum.outcome}`; });\n accuracyUnderlayerEnter.append('g')\n .classed('axis accuracy', true);\n // MERGE\n const evidenceScaleMerge = evidenceUnderlayerMerge.select('.axis.evidence')\n .attr('transform', `translate(${-0.25 * this.rem}, 0)`);\n const densityScaleMerge = densityUnderlayerMerge.select('.axis.density')\n .attr('transform', `translate(${-0.25 * this.rem}, 0)`);\n const accuracyScaleMerge = accuracyUnderlayerMerge.select('.axis.accuracy')\n .attr('transform', `translate(${accuracyWidth + (0.25 * this.rem)}, 0)`);\n const evidenceScaleTransition = evidenceScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .call(d3.axisLeft(evidenceScale))\n .attr('font-size', null)\n .attr('font-family', null);\n const densityScaleTransition = densityScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .each((datum, index, elements) => {\n d3.axisLeft(datum.densityScale).ticks(2)(d3.select(elements[index]));\n })\n .attr('font-size', null)\n .attr('font-family', null);\n const accuracyScaleTransition = accuracyScaleMerge.transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .call(d3.axisRight(accuracyScale))\n .attr('font-size', null)\n .attr('font-family', null);\n evidenceScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n densityScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n accuracyScaleTransition.selectAll('line, path')\n .attr('stroke', null);\n\n // Y Axes Titles (Evidence & Density)\n // ENTER\n const evidenceTitleEnter = evidenceUnderlayerEnter.append('text')\n .classed('title evidence', true)\n .attr('text-anchor', 'middle');\n const densityTitleEnter = densityUnderlayerEnter.append('text')\n .attr('class', (datum) => { return `title density ${datum.outcome}`; })\n .attr('text-anchor', 'middle');\n const accuracyTitleEnter = accuracyUnderlayerEnter.append('text')\n .classed('title accuracy', true)\n .attr('text-anchor', 'middle');\n evidenceTitleEnter.append('tspan')\n .classed('name', true)\n .text('Evidence');\n densityTitleEnter.append('tspan')\n .classed('name', true)\n .text('Density');\n accuracyTitleEnter.append('tspan')\n .classed('name', true)\n .text('Accuracy');\n // MERGE\n evidenceUnderlayerMerge.select('.title.evidence')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', `translate(${-2.5 * this.rem}, ${(evidenceHeight / 2)})rotate(-90)`);\n densityUnderlayerMerge.select('.title.density')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', `translate(${-2.5 * this.rem}, ${(densityHeight / 2)})rotate(-90)`);\n accuracyUnderlayerMerge.select('.title.accuracy')\n .transition()\n .duration(transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', `translate(${accuracyWidth + 2.25 * this.rem}, ${(height / 2)})rotate(90)`);\n\n //\n // CONTENTS\n //\n\n // Paths\n // DATA-JOIN\n const pathUpdate = evidenceContentMerge.select('.paths').selectAll('.path')\n .data(\n this.data.trials.filter((trial) => { return trial.path !== undefined; }),\n );\n // ENTER\n const rtLabel = d3.local();\n const pathEnter = pathUpdate.enter().append('g')\n .classed('path', true)\n .attr('data-new-trial-ease-time', 0)\n .on('pointerenter', (event, datum) => {\n if (!this.drag) {\n d3.select(event.currentTarget)\n .classed('highlight', true)\n .raise();\n const myRtLabel = evidenceOverlayerMerge.append('g')\n .classed(`rt-label ${datum.outcome}`, true);\n const rect = myRtLabel.append('rect');\n const text = myRtLabel.append('text')\n .text(`RT = ${datum.rt.toFixed()}`)\n .attr('x', timeScale(datum.rt))\n .attr('y', datum.outcome === 'correct'\n ? evidenceScale(this.bounds.upper) - this.rem * 0.25\n : evidenceScale(this.bounds.lower) + this.rem * 0.125);\n const bbox = text.node().getBBox();\n rect\n .attr('x', bbox.x - this.rem * 0.125)\n .attr('y', bbox.y + this.rem * 0.125)\n .attr('width', bbox.width + this.rem * 0.25)\n .attr('height', bbox.height - this.rem * 0.25);\n rtLabel.set(event.currentTarget, myRtLabel);\n }\n })\n .on('pointerout', (event, datum) => {\n if (!this.drag) {\n d3.select(event.currentTarget)\n .classed('highlight', false)\n .lower();\n event.currentTarget.parentNode.insertBefore(\n event.currentTarget,\n event.currentTarget.parentNode.children[datum.index],\n );\n rtLabel.get(event.currentTarget).remove();\n }\n });\n pathEnter.append('path')\n .classed('curve', true)\n .attr('clip-path', 'url(#clip-evidence)')\n .attr('pathLength', 1)\n .attr('stroke-dashoffset', 1);\n // MERGE\n const pathMerge = pathEnter.merge(pathUpdate)\n .attr('class', (datum) => {\n return `path ${datum.outcome}`;\n });\n pathMerge.select('.curve')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('stroke', (datum) => {\n return this.getComputedStyleValue(`---color-${datum.outcome}`);\n })\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateA = d3.interpolate(\n (element.a !== undefined) ? element.a : this.a,\n this.a,\n );\n const interpolateZ = d3.interpolate(\n (element.z !== undefined) ? element.z : this.z,\n this.z,\n );\n const interpolateV = d3.interpolate(\n (element.v !== undefined) ? element.v : this.v,\n this.v,\n );\n const interpolateT0 = d3.interpolate(\n (element.t0 !== undefined) ? element.t0 : this.t0,\n this.t0,\n );\n return (time) => {\n element.a = interpolateA(time);\n element.z = interpolateZ(time);\n element.v = interpolateV(time);\n element.t0 = interpolateT0(time);\n const path = this.alignPath(datum.seed, element.a, element.z, element.v, element.t0);\n return evidenceLine(path);\n };\n });\n // MERGE - Active Animate Paths\n const pathMergeNewActive = pathMerge.filter((datum) => {\n return (datum.animate && !this.paused);\n });\n if (!pathMergeNewActive.empty()) {\n const easeTime = pathMergeNewActive.attr('data-new-trial-ease-time');\n const scaleIn = (time) => {\n return d3.scaleLinear().domain([0, 1]).range([easeTime, 1])(time);\n };\n const scaleOutGenerator = (easeFunction) => {\n return (time) => {\n return d3.scaleLinear()\n .domain([easeFunction(easeTime), 1]).range([0, 1])(easeFunction(time));\n };\n };\n pathMergeNewActive\n .classed('animate', true)\n .select('.curve')\n .attr('stroke-dasharray', 1);\n pathMergeNewActive\n .transition('new')\n .duration((datum) => {\n // scale the RT for viewing pleasure\n return Math.floor((datum.rt * 1.5) * (1 - easeTime));\n })\n .ease(scaleIn)\n .attr('data-new-trial-ease-time', 1)\n .select('.curve')\n .attrTween('stroke-dashoffset', (datum, index, elements) => {\n const element = elements[index];\n const interpolator = d3.interpolate(\n element.getAttribute('stroke-dashoffset'),\n 0,\n );\n return (time) => { return interpolator(scaleOutGenerator(d3.easeLinear)(time)); };\n })\n .on('end', (datum, index, elements) => {\n const element = elements[index];\n d3.select(element.parentElement)\n .classed('animate', false)\n .attr('data-new-trial-ease-time', null);\n datum.animate = false;\n this.animate = false;\n this.alignState();\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('accumulable-response', {\n detail: {\n outcome: datum.outcome,\n data: this.data,\n model: this.model,\n },\n bubbles: true,\n }));\n });\n }\n // MERGE - Paused Animate Paths\n const pathMergeNewPaused = pathMerge.filter((datum) => {\n return (datum.animate && this.paused);\n });\n if (!pathMergeNewPaused.empty()) {\n const easeTime = pathMergeNewPaused.attr('data-new-trial-ease-time');\n pathMergeNewPaused\n .classed('animate', true)\n .select('.curve')\n .attr('stroke-dasharray', 1)\n .attr('stroke-dashoffset', () => {\n const interpolator = d3.interpolate(1, 0);\n return interpolator(d3.easeLinear(easeTime));\n });\n }\n // MERGE - Non-Animate Paths\n pathMerge.filter((datum) => { return (!datum.animate); })\n .attr('data-new-trial-ease-time', null);\n // EXIT\n pathUpdate.exit().remove();\n\n // Distributions\n // ENTER\n const distEnter = densityContentEnter.append('g')\n .attr('class', (datum) => { return `dist ${datum.outcome}`; });\n distEnter.append('path')\n .classed('curve', true);\n // MERGE\n densityContentMerge.select('.dist').select('.curve')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attrTween('d', (datum, index, elements) => {\n const element = elements[index];\n const interpolateA = d3.interpolate(\n (element.a !== undefined) ? element.a : this.a,\n this.a,\n );\n const interpolateZ = d3.interpolate(\n (element.z !== undefined) ? element.z : this.z,\n this.z,\n );\n const interpolateV = d3.interpolate(\n (element.v !== undefined) ? element.v : this.v,\n this.v,\n );\n const interpolateT0 = d3.interpolate(\n (element.t0 !== undefined) ? element.t0 : this.t0,\n this.t0,\n );\n return (time) => {\n element.a = interpolateA(time);\n element.z = interpolateZ(time);\n element.v = interpolateV(time);\n element.t0 = interpolateT0(time);\n const path = datum.alignDistribution(element.a, element.z, element.v, element.t0);\n return datum.densityLine(path);\n };\n });\n\n // RTs\n // DATA-JOIN\n const rtUpdate = evidenceContentMerge.selectAll('.rt')\n .data(this.data.trials);\n // ENTER\n const rtEnter = rtUpdate.enter().append('g');\n rtEnter.append('line')\n .classed('mark', true)\n .attr('x1', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('x2', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('y1', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.125 * this.rem\n : evidenceScale(-1) + 0.125 * this.rem;\n })\n .attr('y2', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.675 * this.rem\n : evidenceScale(-1) + 0.675 * this.rem;\n });\n // MERGE\n const rtMerge = rtEnter.merge(rtUpdate)\n .attr('class', (datum) => { return `rt ${datum.outcome}`; });\n rtMerge.filter((datum) => { return (!datum.animate); }).select('.mark')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('stroke', (datum) => {\n return this.getComputedStyleValue(`---color-${datum.outcome}`);\n })\n .attr('x1', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('x2', (datum) => {\n return timeScale(datum.rt);\n })\n .attr('y1', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.125 * this.rem\n : evidenceScale(-1) + 0.125 * this.rem;\n })\n .attr('y2', (datum) => {\n return (datum.outcome === 'correct')\n ? evidenceScale(1) - 0.675 * this.rem\n : evidenceScale(-1) + 0.675 * this.rem;\n });\n // EXIT\n rtUpdate.exit().remove();\n\n // Model Accuracy\n // DATA-JOIN\n const accuracyUpdate = accuracyContentMerge.selectAll('.accuracy.model')\n .data(\n [this.model.accuracy, 1 - this.model.accuracy],\n );\n // ENTER\n const accuracyEnter = accuracyUpdate.enter().append('g')\n .attr('class', (_, index) => {\n return `accuracy model ${(index === 0) ? 'correct' : 'error'}`;\n });\n accuracyEnter.append('rect')\n .classed('bar', true)\n .attr('x', 0);\n // MERGE\n accuracyEnter.merge(accuracyUpdate).select('rect')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n // ## Tween based on params?\n .attr('y', (datum, index) => {\n return (index === 0) ? accuracyScale(0) : accuracyScale(1 - datum);\n })\n .attr('width', accuracyWidth)\n .attr('height', (datum) => {\n return accuracyScale(datum);\n });\n // EXIT\n accuracyUpdate.exit().remove();\n\n // Data Accuracy\n // DATA-JOIN\n const dataAccuracyUpdate = accuracyContentMerge.selectAll('.accuracy.data')\n .data(\n !Number.isNaN(this.data.accuracy) ? [this.data.accuracy] : [],\n );\n // ENTER\n const dataAccuracyEnter = dataAccuracyUpdate.enter().append('g')\n .classed('accuracy data', true);\n dataAccuracyEnter.append('line')\n .classed('mark', true);\n // MERGE\n const dataAccuracyMerge = dataAccuracyEnter.merge(dataAccuracyUpdate)\n .attr('class', (datum) => {\n return `accuracy data ${(datum < this.model.accuracy.correct) ? 'correct' : 'error'}`;\n });\n dataAccuracyMerge.select('.mark')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n // ## Tween based on params?\n .attr('x1', 0 + 0.25 * this.rem)\n .attr('x2', accuracyWidth - 0.25 * this.rem)\n .attr('y1', (datum) => {\n return accuracyScale(datum) - 1;\n })\n .attr('y2', (datum) => {\n return accuracyScale(datum) - 1;\n });\n // EXIT\n dataAccuracyUpdate.exit().remove();\n\n //\n // OVERLAYERS\n //\n\n // Boundaries\n // DATA-JOIN\n const boundaryUpdate = evidenceOverlayerMerge.selectAll('.boundary')\n .data([\n {bound: 'upper', value: this.bounds.upper},\n {bound: 'lower', value: this.bounds.lower},\n ]);\n // ENTER\n const boundaryEnter = boundaryUpdate.enter().append('g')\n .attr('class', (_, index) => {\n return `boundary ${(index === 0) ? 'correct' : 'error'}`;\n });\n boundaryEnter.append('line')\n .classed('line', true);\n boundaryEnter.append('line')\n .classed('line touch', true);\n // MERGE\n const boundaryMerge = boundaryEnter.merge(boundaryUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event, datum) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let {a} = this;\n switch (event.key) {\n case 'ArrowUp':\n a += (datum.bound === 'upper')\n ? event.shiftKey\n ? DDMMath.a.STEP\n : DDMMath.a.JUMP\n : event.shiftKey\n ? -DDMMath.a.STEP\n : -DDMMath.a.JUMP;\n break;\n case 'ArrowDown':\n a += (datum.bound === 'upper')\n ? event.shiftKey\n ? -DDMMath.a.STEP\n : -DDMMath.a.JUMP\n : event.shiftKey\n ? DDMMath.a.STEP\n : DDMMath.a.JUMP;\n break;\n default:\n }\n // Clamp a\n a = (a < DDMMath.a.MIN)\n ? DDMMath.a.MIN\n : (a > DDMMath.a.MAX)\n ? DDMMath.a.MAX\n : a;\n this.a = a;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-a', {\n detail: {\n a: this.a,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n boundaryMerge.call(dragBoundary);\n } else {\n boundaryMerge.on('.drag', null);\n }\n }\n boundaryMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.min))\n .attr('x2', timeScale(this.scale.time.max))\n .attr('y1', (datum) => {\n return evidenceScale(datum.value);\n })\n .attr('y2', (datum) => {\n return evidenceScale(datum.value);\n });\n boundaryMerge.select('.line.touch')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.min))\n .attr('x2', timeScale(this.scale.time.max))\n .attr('y1', (datum) => {\n return evidenceScale(datum.value);\n })\n .attr('y2', (datum) => {\n return evidenceScale(datum.value);\n });\n // EXIT\n boundaryUpdate.exit().remove();\n\n // Drift Rate\n // DATA-JOIN\n const driftUpdate = evidenceOverlayerMerge.selectAll('.drift')\n .data([\n {v: this.v, t0: this.t0, startingPoint: this.startingPoint},\n ]);\n // ENTER\n const driftEnter = driftUpdate.enter().append('g')\n .classed('drift', true);\n driftEnter.append('line')\n .classed('line', true);\n driftEnter.append('line')\n .classed('line touch', true);\n driftEnter.append('path')\n .classed('arrow', true);\n driftEnter.append('path')\n .classed('arrow touch', true);\n // MERGE\n const driftMerge = driftEnter.merge(driftUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let {v} = this;\n switch (event.key) {\n case 'ArrowUp':\n v += event.shiftKey\n ? DDMMath.v.STEP\n : DDMMath.v.JUMP;\n break;\n case 'ArrowDown':\n v -= event.shiftKey\n ? DDMMath.v.STEP\n : DDMMath.v.JUMP;\n break;\n default:\n }\n // Clamp z\n v = (v < DDMMath.v.MIN)\n ? DDMMath.v.MIN\n : (v > DDMMath.v.MAX)\n ? DDMMath.v.MAX\n : v;\n this.v = v;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-v', {\n detail: {\n v: this.v,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n driftMerge.call(dragDrift);\n } else {\n driftMerge.on('.drag', null);\n }\n }\n const scaleRatio = (evidenceScale(0) - evidenceScale(1)) / (timeScale(1) - timeScale(0));\n driftMerge\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('transform', (datum) => {\n return `translate(${timeScale(datum.t0)}, ${evidenceScale(datum.startingPoint)})\n rotate(${-Math.atan((datum.v / 1000) * scaleRatio) * (180 / Math.PI)})`;\n });\n driftMerge.select('.line')\n .attr('x2', timeScale(200));\n driftMerge.select('.line.touch')\n .attr('x2', timeScale(200));\n driftMerge.select('.arrow')\n .attr('d', `\n M ${timeScale(200) - this.rem * 0.5},${-this.rem * 0.5}\n l ${this.rem * 0.5},${this.rem * 0.5}\n l ${-this.rem * 0.5},${this.rem * 0.5}\n `);\n driftMerge.select('.arrow.touch')\n .attr('d', `\n M ${timeScale(200) - this.rem * 0.5},${-this.rem * 0.5}\n l ${this.rem * 0.5},${this.rem * 0.5}\n l ${-this.rem * 0.5},${this.rem * 0.5}\n `);\n // EXIT\n driftUpdate.exit().remove();\n\n // Nondecision Time/Starting Point\n // DATA-JOIN\n const t0zUpdate = evidenceOverlayerMerge.selectAll('.t0z')\n .data([\n {t0: this.t0, startingPoint: this.startingPoint},\n ]);\n // ENTER\n const t0zEnter = t0zUpdate.enter().append('g')\n .classed('t0z', true);\n t0zEnter.append('line')\n .classed('line', true);\n t0zEnter.append('line')\n .classed('line touch', true);\n t0zEnter.append('circle')\n .classed('point touch', true);\n // MERGE\n const t0zMerge = t0zEnter.merge(t0zUpdate)\n .attr('tabindex', this.interactive ? 0 : null)\n .classed('interactive', this.interactive)\n .on('keydown', this.interactive\n ? (event) => {\n if (['ArrowUp', 'ArrowDown'].includes(event.key)) {\n let {z} = this;\n switch (event.key) {\n case 'ArrowUp':\n z += event.shiftKey\n ? DDMMath.z.STEP\n : DDMMath.z.JUMP;\n break;\n case 'ArrowDown':\n z -= event.shiftKey\n ? DDMMath.z.STEP\n : DDMMath.z.JUMP;\n break;\n default:\n }\n // Clamp z\n z = (z < DDMMath.z.MIN)\n ? DDMMath.z.MIN\n : (z > DDMMath.z.MAX)\n ? DDMMath.z.MAX\n : z;\n this.z = z;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-z', {\n detail: {\n z: this.z,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n if (['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n let t0 = this.t0; /* eslint-disable-line prefer-destructuring */\n switch (event.key) {\n case 'ArrowRight':\n t0 += event.shiftKey\n ? DDMMath.t0.STEP\n : DDMMath.t0.JUMP;\n break;\n case 'ArrowLeft':\n t0 -= event.shiftKey\n ? DDMMath.t0.STEP\n : DDMMath.t0.JUMP;\n break;\n default:\n }\n // Clamp t0\n t0 = (t0 < DDMMath.t0.MIN)\n ? DDMMath.t0.MIN\n : (t0 > DDMMath.t0.MAX)\n ? DDMMath.t0.MAX\n : t0;\n this.t0 = t0;\n this.alignState();\n this.dispatchEvent(new CustomEvent('ddm-model-t0', {\n detail: {\n t0: this.t0,\n },\n bubbles: true,\n }));\n event.preventDefault();\n }\n }\n : null);\n if (\n this.firstUpdate\n || changedProperties.has('interactive')\n ) {\n if (this.interactive) {\n t0zMerge.call(dragT0z);\n } else {\n t0zMerge.on('.drag', null);\n }\n }\n t0zMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(0))\n .attr('x2', (datum) => { return timeScale(datum.t0); })\n .attr('y1', (datum) => { return evidenceScale(datum.startingPoint); })\n .attr('y2', (datum) => { return evidenceScale(datum.startingPoint); });\n t0zMerge.select('.line.touch')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(0))\n .attr('x2', (datum) => { return timeScale(datum.t0); })\n .attr('y1', (datum) => { return evidenceScale(datum.startingPoint); })\n .attr('y2', (datum) => { return evidenceScale(datum.startingPoint); });\n t0zMerge.select('.point')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('cx', (datum) => { return timeScale(datum.t0); })\n .attr('cy', (datum) => { return evidenceScale(datum.startingPoint); });\n // EXIT\n t0zUpdate.exit().remove();\n\n // a Measure\n // DATA-JOIN\n const aUpdate = evidenceOverlayerMerge.selectAll('.measure.a')\n .data(this.measures ? [this.a] : []);\n // ENTER\n const aEnter = aUpdate.enter().append('g')\n .classed('measure a', true);\n aEnter.append('line')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const aLabel = aEnter.append('text')\n .classed('label', true);\n aLabel.append('tspan')\n .classed('a math-var', true)\n .text('a');\n aLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n aLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const aMerge = aEnter.merge(aUpdate);\n aMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.max) - this.rem * 0.75)\n .attr('y1', evidenceScale(this.bounds.upper) + 2)\n .attr('x2', timeScale(this.scale.time.max) - this.rem * 0.75)\n .attr('y2', evidenceScale(this.bounds.lower) - 2);\n const aLabelMerge = aMerge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.scale.time.max))\n .attr('y', evidenceScale(this.bounds.upper) - this.rem * 0.25);\n aLabelMerge.select('.value')\n .text(d3.format('.2f')(this.a));\n // EXIT\n aUpdate.exit().remove();\n\n // z Measure\n // DATA-JOIN\n const zUpdate = evidenceOverlayerMerge.selectAll('.measure.z')\n .data(this.measures ? [this.z] : []);\n // ENTER\n const zEnter = zUpdate.enter().append('g')\n .classed('measure z', true);\n zEnter.append('line')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const zLabel = zEnter.append('text')\n .classed('label', true);\n zLabel.append('tspan')\n .classed('z math-var', true)\n .text('z');\n zLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n zLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const zMerge = zEnter.merge(zUpdate);\n zMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(this.scale.time.min) + this.rem * 0.75)\n .attr('y1', evidenceScale(this.startingPoint) + 2)\n .attr('x2', timeScale(this.scale.time.min) + this.rem * 0.75)\n .attr('y2', evidenceScale(this.bounds.lower) - 2);\n const zLabelMerge = zMerge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.scale.time.min))\n .attr('y', evidenceScale(this.bounds.lower) + this.rem * 0.125);\n zLabelMerge.select('.value')\n .text(d3.format('.0%')(this.z));\n // EXIT\n zUpdate.exit().remove();\n\n // v Measure\n // DATA-JOIN\n const vUpdate = evidenceOverlayerMerge.selectAll('.measure.v')\n .data(this.measures ? [this.v] : []);\n // ENTER\n const vEnter = vUpdate.enter().append('g')\n .classed('measure v', true);\n vEnter.append('path')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const vLabel = vEnter.append('text')\n .classed('label', true);\n vLabel.append('tspan')\n .classed('v math-var', true)\n .text('v');\n vLabel.append('tspan')\n .classed('equals', true)\n .text(' = ');\n vLabel.append('tspan')\n .classed('value', true);\n // MERGE\n const driftAngle = Math.atan((this.v / 1000) * scaleRatio);\n const driftHypotenuse = timeScale(200) - timeScale(0) + this.rem * 0.75;\n const driftX = Math.cos(driftAngle) * driftHypotenuse;\n const driftY = Math.sin(driftAngle) * driftHypotenuse;\n const vMerge = vEnter.merge(vUpdate);\n vMerge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('d', `\n M ${timeScale(this.t0 + 200) + this.rem * 0.75}, ${evidenceScale(this.startingPoint)}\n A ${timeScale(200) - timeScale(0)} ${timeScale(200) - timeScale(0)} 0 0 0 ${timeScale(this.t0) + driftX} ${evidenceScale(this.startingPoint) - driftY}\n `);\n const vLabelMerge = vMerge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.t0 + 200) + this.rem * 0.5)\n .attr('y', evidenceScale(this.bounds.upper) - this.rem * 0.25);\n vLabelMerge.select('.value')\n .text(d3.format('.2f')(this.v));\n // EXIT\n vUpdate.exit().remove();\n\n // t0 Measure\n // DATA-JOIN\n const t0Update = evidenceOverlayerMerge.selectAll('.measure.t0')\n .data(this.measures ? [this.t0] : []);\n // ENTER\n const t0Enter = t0Update.enter().append('g')\n .classed('measure t0', true);\n t0Enter.append('line')\n .classed('line', true)\n .attr('marker-start', 'url(#measure-arrow)')\n .attr('marker-end', 'url(#measure-arrow)');\n const t0Label = t0Enter.append('text')\n .classed('label', true);\n t0Label.append('tspan')\n .classed('t0 math-var', true)\n .text('t₀');\n t0Label.append('tspan')\n .classed('equals', true)\n .text(' = ');\n t0Label.append('tspan')\n .classed('value', true);\n // MERGE\n const t0Merge = t0Enter.merge(t0Update);\n t0Merge.select('.line')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', timeScale(0) + 2)\n .attr('y1', evidenceScale(this.startingPoint) - this.rem * 0.75)\n .attr('x2', timeScale(this.t0) - 2)\n .attr('y2', evidenceScale(this.startingPoint) - this.rem * 0.75);\n const t0LabelMerge = t0Merge.select('.label')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x', timeScale(this.t0) + this.rem * 0.25)\n .attr('y', evidenceScale(this.bounds.upper) - this.rem * 0.25);\n t0LabelMerge.select('.value')\n .text(d3.format('d')(this.t0));\n // EXIT\n t0Update.exit().remove();\n\n // Means\n // DATA-JOIN\n const meanUpdate = densityOverlayerMerge.selectAll('.model.mean')\n .data((datum) => {\n return this.means ? [datum] : [];\n });\n // ENTER\n const meanEnter = meanUpdate.enter().append('g')\n .attr('class', (datum) => { return `model mean ${datum.outcome}`; });\n meanEnter.append('line')\n .classed('indicator', true);\n // MERGE\n const meanMerge = meanEnter.merge(meanUpdate);\n meanMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => { return timeScale(datum.model.meanRT); })\n .attr('x2', (datum) => { return timeScale(datum.model.meanRT); })\n .attr('y1', (datum) => { return datum.densityScale(this.scale.density.min); })\n .attr('y2', (datum) => { return datum.densityScale(this.scale.density.max); });\n // EXIT\n meanUpdate.exit().remove();\n\n // Data Means\n // DATA-JOIN\n const dataMeanUpdate = densityOverlayerMerge.selectAll('.data.mean')\n .data((datum) => {\n return (this.means && !Number.isNaN(datum.data.meanRT)) ? [datum] : [];\n });\n // ENTER\n const dataMeanEnter = dataMeanUpdate.enter().append('g')\n .attr('class', (datum) => { return `data mean ${datum.outcome}`; });\n dataMeanEnter.append('line')\n .classed('indicator', true)\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.125 : -0.125) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.675 : -0.675) * this.rem;\n });\n // MERGE\n const dataMeanMerge = dataMeanEnter.merge(dataMeanUpdate);\n dataMeanMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => { return timeScale(datum.data.meanRT); })\n .attr('x2', (datum) => { return timeScale(datum.data.meanRT); })\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.125 : -0.125) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.675 : -0.675) * this.rem;\n });\n // EXIT\n dataMeanUpdate.exit().select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', 0)\n .attr('x2', 0)\n .on('end', (datum, index, elements) => {\n d3.select(elements[index].parentElement).remove();\n });\n\n // Standard Deviations\n // DATA-JOIN\n const sdUpdate = densityOverlayerMerge.selectAll('.model.sd')\n .data((datum) => {\n return this.sds ? [datum] : [];\n });\n // ENTER\n const sdEnter = sdUpdate.enter().append('g')\n .attr('class', (datum) => { return `model sd ${datum.outcome}`; });\n sdEnter.append('line')\n .classed('indicator', true)\n .attr('marker-start', 'url(#model-sd-cap)')\n .attr('marker-end', 'url(#model-sd-cap)');\n // MERGE\n const sdMerge = sdEnter.merge(sdUpdate);\n sdMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => { return timeScale(datum.model.meanRT - (datum.model.sdRT / 2)); })\n .attr('x2', (datum) => { return timeScale(datum.model.meanRT + (datum.model.sdRT / 2)); })\n .attr('y1', (datum) => { return datum.densityScale(5); })\n .attr('y2', (datum) => { return datum.densityScale(5); });\n // EXIT\n sdUpdate.exit().remove();\n\n // Data Standard Deviation\n // DATA-JOIN\n const dataSDUpdate = densityOverlayerMerge.selectAll('.data.sd')\n .data((datum) => {\n return (this.sds && !Number.isNaN(datum.data.meanRT) && !Number.isNaN(datum.data.sdRT))\n ? [datum]\n : [];\n });\n // ENTER\n const dataSDEnter = dataSDUpdate.enter().append('g')\n .attr('class', (datum) => { return `data sd ${datum.outcome}`; });\n dataSDEnter.append('line')\n .classed('indicator', true)\n .attr('marker-start', 'url(#data-sd-cap)')\n .attr('marker-end', 'url(#data-sd-cap)')\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n });\n // MERGE\n const dataSDMerge = dataSDEnter.merge(dataSDUpdate);\n dataSDMerge.select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', (datum) => {\n return timeScale(datum.data.meanRT - (datum.data.sdRT / 2));\n })\n .attr('x2', (datum) => {\n return timeScale(datum.data.meanRT + (datum.data.sdRT / 2));\n })\n .attr('y1', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n })\n .attr('y2', (datum) => {\n return datum.densityScale(0) + ((datum.outcome === 'correct') ? 0.375 : -0.375) * this.rem;\n });\n // EXIT\n dataSDUpdate.exit().select('.indicator')\n .transition()\n .duration(this.drag ? 0 : transitionDuration)\n .ease(d3.easeCubicOut)\n .attr('x1', 0)\n .attr('x2', 0)\n .on('end', (datum, index, elements) => {\n d3.select(elements[index].parentElement).remove();\n });\n\n this.firstUpdate = false;\n }\n}\n\ncustomElements.define('ddm-model', DDMModel);\n","\nimport {html, css} from 'lit';\nimport * as d3 from 'd3';\n\nimport {DecidablesMixinResizeable} from '@decidables/decidables-elements';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n RDK2AFCTask element\n <rdk-2afc-task>\n\n Attributes:\n Dots; Coherence;\n # Direction, Speed, Lifetime\n*/\nexport default class RDK2AFCTask extends DecidablesMixinResizeable(AccumulableElement) {\n static get properties() {\n return {\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n count: {\n attribute: 'count',\n type: Number,\n reflect: true,\n },\n probability: {\n attribute: 'probability',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n wait: {\n attribute: 'wait',\n type: Number,\n reflect: true,\n },\n iti: {\n attribute: 'iti',\n type: Number,\n reflect: true,\n },\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n running: {\n attribute: 'running',\n type: Boolean,\n reflect: true,\n },\n\n lifetime: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n speed: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n // Attributes\n this.coherence = 0.5; // Proportion of dots moving coherently\n this.count = 100; // Number of dots\n this.probability = 0.5; // Probability of left (as opposed to right)\n this.duration = 2000; // Duration of stimulus in milliseconds\n this.wait = 2000; // Duration of wait period for response in milliseconds\n this.iti = 2000; // Duration of inter-trial interval in milliseconds\n this.trials = 5; // Number of trials per block\n this.running = false; // Currently executing block of trials\n\n // Properties\n this.lifetime = 400; // Lifetime of each dot in milliseconds\n this.speed = 50; // Rate of dot movement in pixels per second\n\n // Private\n this.firstUpdate = true;\n this.COHERENT = 0; // \"Constant\" for index to coherent dots\n this.RANDOM = 1; // \"Constant\" for index to random dots\n this.dots = [[], []]; // Array of array of dots\n this.trial = 0; // Count of current trial\n\n this.states = ['resetted', 'iti', 'stimulus', 'wait', 'ended']; // Possible states of task\n this.state = 'resetted'; // Current state of task\n\n this.baseTime = 0; // Real time, in milliseconds, that the current block started\n this.pauseTime = 0; // Real time, in milliseconds, that block was paused at\n this.startTime = 0; // Virtual time, in milliseconds, that current stage of trial started\n this.lastTime = 0; // Virtual time, in milliseconds, of the most recent frame\n\n this.LEFT = 180; // \"Constant\" for left stimulus direction\n this.RIGHT = 0; // \"Constant\" for right stimulus direction\n this.currentDirection = undefined; // Direction in degrees for current trial\n\n this.signals = ['left', 'right']; // Possible trial types\n this.signal = undefined; // Current trial type\n\n this.runner = undefined; // D3 Interval for frame timing\n this.xScale = undefined; // D3 Scale for x-axis\n this.yScale = undefined; // D3 Scale for y-axis\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: inline-block;\n\n width: 10rem;\n height: 10rem;\n }\n\n .main {\n width: 100%;\n height: 100%;\n }\n\n .background {\n fill: var(---color-element-disabled);\n stroke: none;\n }\n\n .outline {\n fill: none;\n stroke: var(---color-element-emphasis);\n stroke-width: 2px;\n }\n\n .dot {\n r: 2px;\n }\n\n .dots.coherent {\n fill: var(---color-background);\n }\n\n .dots.random {\n fill: var(---color-background);\n }\n\n .fixation {\n stroke: var(---color-text);\n stroke-width: 2px;\n }\n\n .query {\n font-size: 1.75rem;\n font-weight: 600;\n }\n `,\n ];\n }\n\n render() { /* eslint-disable-line class-methods-use-this */\n return html``;\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n // Bail out if we can't get the width/height/rem\n if (Number.isNaN(this.width) || Number.isNaN(this.height) || Number.isNaN(this.rem)) {\n return;\n }\n\n const elementWidth = this.width;\n const elementHeight = this.height;\n const elementSize = Math.min(elementWidth, elementHeight);\n\n const margin = {\n top: 0.25 * this.rem,\n bottom: 0.25 * this.rem,\n left: 0.25 * this.rem,\n right: 0.25 * this.rem,\n };\n const height = elementSize - (margin.top + margin.bottom);\n const width = elementSize - (margin.left + margin.right);\n\n // X Scale\n this.xScale = d3.scaleLinear()\n .domain([-1, 1])\n .range([0, width]);\n\n // Y Scale\n this.yScale = d3.scaleLinear()\n .domain([1, -1])\n .range([0, height]);\n\n // Svg\n // DATA-JOIN\n const svgUpdate = d3.select(this.renderRoot).selectAll('.main')\n .data([{\n width: this.width,\n height: this.height,\n rem: this.rem,\n }]);\n // ENTER\n const svgEnter = svgUpdate.enter().append('svg')\n .classed('main', true);\n // MERGE\n const svgMerge = svgEnter.merge(svgUpdate)\n .attr('viewBox', `0 0 ${elementSize} ${elementSize}`);\n\n // Clippath\n // ENTER\n svgEnter.append('clipPath')\n .attr('id', 'clip-rdk-task')\n .append('circle');\n // MERGE\n svgMerge.select('clipPath circle')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.xScale(0));\n\n // Plot\n // ENTER\n const plotEnter = svgEnter.append('g')\n .classed('plot', true);\n // MERGE\n const plotMerge = svgMerge.select('.plot')\n .attr('transform', `translate(${margin.left}, ${margin.top})`);\n\n // Underlayer\n // ENTER\n const underlayerEnter = plotEnter.append('g')\n .classed('underlayer', true);\n // MERGE\n const underlayerMerge = plotMerge.select('.underlayer');\n\n // Background\n // ENTER\n underlayerEnter.append('circle')\n .classed('background', true);\n // MERGE\n underlayerMerge.select('.background')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.xScale(0));\n\n // Content\n // ENTER\n plotEnter.append('g')\n .classed('content', true)\n .attr('clip-path', 'url(#clip-rdk-task)');\n // MERGE\n const contentMerge = plotMerge.select('.content');\n\n // Dot Groups\n // DATA-JOIN\n const dotsUpdate = contentMerge.selectAll('.dots')\n .data([[], []]);\n // ENTER\n dotsUpdate.enter().append('g')\n .classed('dots', true)\n .classed('coherent', (datum, index) => { return index === this.COHERENT; })\n .classed('random', (datum, index) => { return index === this.RANDOM; });\n\n // Overlayer\n // ENTER\n const overlayerEnter = plotEnter.append('g')\n .classed('overlayer', true);\n // MERGE\n const overlayerMerge = plotMerge.select('.overlayer');\n\n // Outline\n // ENTER\n overlayerEnter.append('circle')\n .classed('outline', true);\n // MERGE\n overlayerMerge.select('.outline')\n .attr('cx', this.xScale(0))\n .attr('cy', this.yScale(0))\n .attr('r', this.xScale(1) - this.yScale(0));\n\n // Start or stop trial block\n if (this.firstUpdate || changedProperties.has('running')) {\n if (this.running) {\n // (Re)Start\n if (this.pauseTime) {\n // Shift timeline forward as if paused time never happened\n this.baseTime += (d3.now() - this.pauseTime);\n this.pauseTime = 0;\n }\n this.runner = d3.interval(this.run.bind(this), 20); // FIXME??\n } else if (this.runner !== undefined) {\n // Pause\n this.runner.stop();\n this.pauseTime = d3.now();\n }\n }\n\n this.firstUpdate = false;\n }\n\n reset() {\n if (this.runner !== undefined) {\n this.runner.stop();\n }\n this.running = false;\n this.trial = 0;\n this.state = 'resetted';\n this.baseTime = 0;\n this.pauseTime = 0;\n this.startTime = 0;\n this.lastTime = 0;\n this.signal = undefined;\n this.currentDirection = undefined;\n\n const dotsUpdate = d3.select(this.renderRoot).select('.content').selectAll('.dots')\n .data([[], []]);\n const dotUpdate = dotsUpdate.selectAll('.dot')\n .data((datum) => { return datum; });\n dotUpdate.exit()\n .remove();\n\n const fixationUpdate = d3.select(this.renderRoot).select('.content').selectAll('.fixation')\n .data([]);\n fixationUpdate.exit()\n .remove();\n const queryUpdate = d3.select(this.renderRoot).select('.content').selectAll('.query')\n .data([]);\n queryUpdate.exit()\n .remove();\n }\n\n run(/* elapsed */) {\n const realTime = d3.now();\n const currentTime = (this.baseTime) ? (realTime - this.baseTime) : 0;\n const elapsedTime = (this.baseTime) ? (currentTime - this.startTime) : 0;\n const frameTime = (this.baseTime) ? (currentTime - this.lastTime) : 0;\n this.lastTime = currentTime;\n let newTrial = false;\n if (this.state === 'resetted') {\n // Start block with an ITI\n this.state = 'iti';\n this.baseTime = realTime;\n this.startTime = 0;\n this.dispatchEvent(new CustomEvent('rdk-block-start', {\n detail: {\n trials: this.trials,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'iti') && (elapsedTime >= this.iti)) {\n // Start new trial with a stimulus\n newTrial = true;\n this.trial += 1;\n this.state = 'stimulus';\n this.startTime = currentTime;\n this.signal = (Math.random() < this.probability) ? 'left' : 'right';\n this.currentDirection = (this.signal === 'left')\n ? this.LEFT\n : this.RIGHT;\n this.dispatchEvent(new CustomEvent('rdk-trial-start', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'stimulus') && (elapsedTime >= this.duration)) {\n // Stimulus is over, now wait\n this.state = 'wait';\n this.startTime = currentTime;\n this.dispatchEvent(new CustomEvent('rdk-trial-middle', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n } else if ((this.state === 'wait') && (elapsedTime >= this.wait)) {\n // Wait is over, end of trial\n this.dispatchEvent(new CustomEvent('rdk-trial-end', {\n detail: {\n trials: this.trials,\n duration: this.duration,\n wait: this.wait,\n iti: this.iti,\n trial: this.trial,\n signal: this.signal,\n },\n bubbles: true,\n }));\n if (this.trial >= this.trials) {\n // End of block\n this.runner.stop();\n this.running = false;\n this.state = 'ended';\n this.baseTime = 0;\n this.pauseTime = 0;\n this.startTime = 0;\n this.lastTime = 0;\n this.signal = undefined;\n this.currentDirection = undefined;\n this.dispatchEvent(new CustomEvent('rdk-block-end', {\n detail: {\n trials: this.trial,\n },\n bubbles: true,\n }));\n } else {\n // ITI\n this.state = 'iti';\n this.startTime = currentTime;\n }\n }\n\n // Dots\n if (this.state === 'stimulus') {\n this.dots[this.COHERENT].length = Math.round(this.count * this.coherence);\n this.dots[this.RANDOM].length = (this.count - this.dots[this.COHERENT].length);\n\n for (let t = 0; t < this.dots.length; t += 1) {\n for (let i = 0; i < this.dots[t].length; i += 1) {\n const newDot = (this.dots[t][i] === undefined);\n if (newDot) {\n this.dots[t][i] = {};\n }\n const dot = this.dots[t][i];\n if (newTrial || newDot) {\n dot.direction = (t === this.RANDOM) ? (Math.random() * 360) : this.currentDirection;\n dot.birth = currentTime - Math.floor(Math.random() * this.lifetime);\n const angle = Math.random() * 2 * Math.PI;\n const radius = Math.sqrt(Math.random());\n dot.x = this.xScale(radius * Math.cos(angle));\n dot.y = this.yScale(radius * Math.sin(angle));\n } else if (currentTime > (dot.birth + this.lifetime)) {\n // Dot has died, so rebirth\n dot.birth += this.lifetime;\n dot.direction = (t === this.RANDOM) ? (Math.random() * 360) : this.currentDirection;\n const angle = Math.random() * 2 * Math.PI;\n const radius = Math.sqrt(Math.random());\n dot.x = this.xScale(radius * Math.cos(angle));\n dot.y = this.yScale(radius * Math.sin(angle));\n } else {\n if (t === this.COHERENT) {\n dot.direction = this.currentDirection;\n }\n const directionR = dot.direction * (Math.PI / 180);\n dot.dx = this.speed * (frameTime / 1000) * Math.cos(directionR);\n dot.dy = this.speed * (frameTime / 1000) * Math.sin(directionR);\n // Update position\n dot.x += dot.dx;\n dot.y += dot.dy;\n // Calculate squared distance from center\n const distance2 = ((dot.x - this.xScale(0)) ** 2) + ((dot.y - this.yScale(0)) ** 2);\n const radius2 = (this.xScale(1) - this.xScale(0)) ** 2;\n if (distance2 > radius2) {\n // Dot has exited so move to other side\n dot.x = -(dot.x - this.xScale(0)) + this.xScale(0);\n dot.y = -(dot.y - this.yScale(0)) + this.yScale(0);\n }\n }\n }\n }\n }\n\n // Fixation\n // DATA-JOIN\n const fixationUpdate = d3.select(this.renderRoot).select('.content').selectAll('.fixation')\n .data((this.state === 'iti') ? [true] : []);\n // ENTER\n const fixationEnter = fixationUpdate.enter().append('g')\n .classed('fixation', true);\n fixationEnter.append('line')\n .attr('x1', this.xScale(-0.1))\n .attr('y1', this.xScale(0))\n .attr('x2', this.xScale(0.1))\n .attr('y2', this.xScale(0));\n fixationEnter.append('line')\n .attr('x1', this.xScale(0))\n .attr('y1', this.xScale(-0.1))\n .attr('x2', this.xScale(0))\n .attr('y2', this.xScale(0.1));\n // EXIT\n fixationUpdate.exit().remove();\n\n // Dots\n // DATA-JOIN\n const dotsUpdate = d3.select(this.renderRoot).select('.content').selectAll('.dots')\n .data((this.state === 'stimulus') ? this.dots : [[], []]);\n const dotUpdate = dotsUpdate.selectAll('.dot')\n .data((datum) => { return datum; });\n // ENTER\n const dotEnter = dotUpdate.enter().append('circle')\n .classed('dot', true);\n // MERGE\n dotEnter.merge(dotUpdate)\n .attr('cx', (datum) => { return datum.x; })\n .attr('cy', (datum) => { return datum.y; });\n // EXIT\n dotUpdate.exit().remove();\n\n // Query\n // DATA-JOIN\n const queryUpdate = d3.select(this.renderRoot).select('.content').selectAll('.query')\n .data((this.state === 'wait') ? [true] : []);\n // ENTER\n const queryEnter = queryUpdate.enter().append('g')\n .classed('query', true);\n queryEnter.append('text')\n .attr('x', this.xScale(0))\n .attr('y', this.xScale(0))\n .attr('text-anchor', 'middle')\n .attr('alignment-baseline', 'middle')\n .text('?');\n // EXIT\n queryUpdate.exit().remove();\n }\n}\n\ncustomElements.define('rdk-2afc-task', RDK2AFCTask);\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n","\nimport {css} from 'lit';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMEquation Base Class - Not intended for instantiation!\n*/\nexport default class DDMEquation extends AccumulableElement {\n static get properties() {\n return {\n numeric: {\n attribute: 'numeric',\n type: Boolean,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n this.numeric = false;\n }\n\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n display: block;\n\n margin: 1rem;\n }\n\n /* Containing <div> */\n .holder {\n display: flex;\n\n flex-direction: row;\n\n justify-content: left;\n }\n\n /* Overall <table> */\n .equation {\n text-align: center;\n white-space: nowrap;\n\n border-collapse: collapse;\n\n border: 0;\n }\n\n /* Modifies <td> */\n .underline {\n border-bottom: 1px solid var(---color-text);\n }\n\n /* Basic <span> and <var> w/modifiers */\n span,\n var {\n padding: 0 0.25rem;\n\n font-style: normal;\n }\n\n var {\n border-radius: var(---border-radius);\n }\n\n .tight {\n padding: 0;\n }\n\n .paren {\n font-size: 150%;\n }\n\n .bracket {\n font-size: 175%;\n }\n\n .brace {\n font-size: 200%;\n }\n\n .addend {\n position: relative;\n display: inline-block;\n }\n\n .comparison {\n position: relative;\n display: inline-block;\n\n font-size: 125%;\n font-weight: 600;\n }\n\n .function {\n display: inline-block;\n\n border-radius: var(---border-radius);\n }\n\n :host([numeric]) .function {\n padding: 0.25rem;\n }\n\n .exp {\n display: inline-block;\n\n font-size: 0.75rem;\n }\n\n .subscript {\n display: inline-block;\n\n font-size: 66.667%;\n }\n\n .summation {\n display: flex;\n\n flex-direction: column;\n\n line-height: 0.8;\n }\n\n .sigma {\n display: inline-block;\n\n font-size: 200%;\n }\n\n /* Input wrapping <label> */\n decidables-spinner {\n --decidables-spinner-input-width: 4rem;\n\n display: inline-block;\n\n padding: 0.125rem 0.375rem 0.375rem;\n\n line-height: 1.5;\n vertical-align: middle;\n\n border-radius: var(---border-radius);\n }\n\n .n {\n --decidables-spinner-input-width: 2rem;\n }\n\n .left {\n text-align: left;\n }\n\n .right {\n text-align: right;\n }\n\n .bottom {\n vertical-align: bottom;\n }\n\n .top {\n vertical-align: top;\n }\n\n /* Color scheme */\n .a {\n background: var(---color-a-light);\n }\n\n .z {\n background: var(---color-z-light);\n }\n\n .v {\n background: var(---color-v-light);\n }\n\n .t0 {\n background: var(---color-t0-light);\n }\n\n .s {\n background: var(---color-s-light);\n }\n `,\n ];\n }\n}\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMEquation from './ddm-equation';\n\n/*\n DDMEquationAZV2PC element\n <ddm-equation-azv2pc>\n\n Attributes:\n*/\nexport default class DDMEquationAZV2PC extends DDMEquation {\n static get properties() {\n return {\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n\n accuracy: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.alignState();\n }\n\n alignState() {\n this.accuracy = DDMMath.azv2pC(this.a, this.z, this.v);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('ddm-equation-azv2pc-change', {\n detail: {\n a: this.a,\n z: this.z,\n v: this.v,\n accuracy: this.accuracy,\n },\n bubbles: true,\n }));\n }\n\n aInput(event) {\n this.a = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n zInput(event) {\n this.z = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n vInput(event) {\n this.v = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n willUpdate() {\n this.alignState();\n }\n\n render() {\n let a;\n let z;\n let v;\n let s;\n let accuracy;\n if (this.numeric) {\n a = html`<decidables-spinner class=\"a bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.a.MIN}\n max=${DDMMath.a.MAX}\n step=${DDMMath.a.STEP}\n .value=${this.a}\n @input=${this.aInput.bind(this)}\n >\n <var class=\"math-var\">a</var>\n </decidables-spinner>`;\n z = html`<decidables-spinner class=\"z bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.z.MIN}\n max=${DDMMath.z.MAX}\n step=${DDMMath.z.STEP}\n .value=${this.z}\n @input=${this.zInput.bind(this)}\n >\n <var class=\"math-var\">z</var>\n </decidables-spinner>`;\n v = html`<decidables-spinner class=\"v bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.v.MIN}\n max=${DDMMath.v.MAX}\n step=${DDMMath.v.STEP}\n .value=${this.v}\n @input=${this.vInput.bind(this)}\n >\n <var class=\"math-var\">v</var>\n </decidables-spinner>`;\n s = html`<decidables-spinner class=\"s bottom\"\n disabled\n .value=${DDMMath.s.DEFAULT}\n >\n <var class=\"math-var\">s</var>\n </decidables-spinner>`;\n accuracy = html`<decidables-spinner class=\"accuracy bottom\"\n disabled\n .value=${+this.accuracy.toFixed(2)}\n >\n <var>Accuracy</var>\n </decidables-spinner>`;\n } else {\n a = html`<var class=\"math-var a\">a</var>`;\n z = html`<var class=\"math-var z\">z</var>`;\n v = html`<var class=\"math-var v\">v</var>`;\n s = html`<var class=\"math-var s\">s</var>`;\n accuracy = html`<var class=\"accuracy\">Accuracy</var>`;\n }\n const equation = html`\n <tr>\n <td rowspan=\"2\">\n ${accuracy}<span class=\"equals\">=</span>\n </td>\n <td class=\"underline\">\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${a} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${z} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n </td>\n </tr>\n <tr>\n <td>\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${a} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n 1\n </td>\n </tr>`;\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('ddm-equation-azv2pc', DDMEquationAZV2PC);\n","\nimport {html} from 'lit';\n\nimport '@decidables/decidables-elements/spinner';\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMEquation from './ddm-equation';\n\n/*\n DDMEquationAZVT02M element\n <ddm-equation-azvt02m>\n\n Attributes:\n*/\nexport default class DDMEquationAZVT02M extends DDMEquation {\n static get properties() {\n return {\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n\n meanRT: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.t0 = DDMMath.t0.DEFAULT;\n this.alignState();\n }\n\n alignState() {\n this.meanRT = DDMMath.azvt02m(this.a, this.z, this.v, this.t0);\n }\n\n sendEvent() {\n this.dispatchEvent(new CustomEvent('ddm-equation-azvt02m-change', {\n detail: {\n a: this.a,\n z: this.z,\n v: this.v,\n t0: this.t0,\n meanRT: this.meanRT,\n },\n bubbles: true,\n }));\n }\n\n aInput(event) {\n this.a = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n zInput(event) {\n this.z = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n vInput(event) {\n this.v = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n t0Input(event) {\n this.t0 = parseFloat(event.target.value);\n this.alignState();\n this.sendEvent();\n }\n\n willUpdate() {\n this.alignState();\n }\n\n render() {\n let a;\n let z;\n let v;\n let t0;\n let s;\n let meanRT;\n if (this.numeric) {\n a = html`<decidables-spinner class=\"a bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.a.MIN}\n max=${DDMMath.a.MAX}\n step=${DDMMath.a.STEP}\n .value=${this.a}\n @input=${this.aInput.bind(this)}\n >\n <var class=\"math-var\">a</var>\n </decidables-spinner>`;\n z = html`<decidables-spinner class=\"z bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.z.MIN}\n max=${DDMMath.z.MAX}\n step=${DDMMath.z.STEP}\n .value=${this.z}\n @input=${this.zInput.bind(this)}\n >\n <var class=\"math-var\">z</var>\n </decidables-spinner>`;\n v = html`<decidables-spinner class=\"v bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.v.MIN}\n max=${DDMMath.v.MAX}\n step=${DDMMath.v.STEP}\n .value=${this.v}\n @input=${this.vInput.bind(this)}\n >\n <var class=\"math-var\">v</var>\n </decidables-spinner>`;\n t0 = html`<decidables-spinner class=\"t0 bottom\"\n ?disabled=${!this.interactive}\n min=${DDMMath.t0.MIN}\n max=${DDMMath.t0.MAX}\n step=${DDMMath.t0.STEP}\n .value=${this.t0}\n @input=${this.t0Input.bind(this)}\n >\n <var class=\"math-var\">t<sub>0</sub></var>\n </decidables-spinner>`;\n s = html`<decidables-spinner class=\"s bottom\"\n disabled\n .value=${DDMMath.s.DEFAULT}\n >\n <var class=\"math-var\">s</var>\n </decidables-spinner>`;\n meanRT = html`<decidables-spinner class=\"mean-rt bottom\"\n disabled\n .value=${+this.meanRT.toFixed(0)}\n >\n <var>Mean RT</var>\n </decidables-spinner>`;\n } else {\n a = html`<var class=\"math-var a\">a</var>`;\n z = html`<var class=\"math-var z\">z</var>`;\n v = html`<var class=\"math-var v\">v</var>`;\n t0 = html`<var class=\"math-var t0\">t<sub>0</sub></var>`;\n s = html`<var class=\"math-var s\">s</var>`;\n meanRT = html`<var class=\"mean-rt\">Mean RT</var>`;\n }\n const equation = html`\n <tr>\n <td rowspan=\"2\">\n ${meanRT}<span class=\"equals\">=</span>\n ${t0}\n <span class=\"minus\">−</span>\n </td>\n <td class=\"underline\">\n ${z}\n </td>\n <td rowspan=\"2\">\n <span class=\"plus\">+</span>\n </td>\n <td class=\"underline\">\n ${a}\n </td>\n <td rowspan=\"2\"> </td>\n <td class=\"underline\">\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${z} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n 1\n </td>\n </tr>\n <tr>\n <td>\n ${v}\n </td>\n <td>\n ${v}\n </td>\n <td>\n <var class=\"math-greek e tight\">e</var><sup class=\"exp\"><span class=\"minus tight\">−</span><span class=\"paren tight\">(</span>2${v}${a} / ${s}<sup class=\"exp\">2</sup><span class=\"paren tight\">)</span></sup>\n <span class=\"minus\">−</span>\n 1\n </td>\n </tr>`;\n return html`\n <div class=\"holder\">\n <table class=\"equation\">\n <tbody>\n ${equation}\n </tbody>\n </table>\n </div>`;\n }\n}\n\ncustomElements.define('ddm-equation-azvt02m', DDMEquationAZVT02M);\n","\nimport {html, css} from 'lit';\n\nimport AccumulableElement from '../accumulable-element';\n\n/*\n DDMExample Base Class - Not intended for instantiation!\n*/\nexport default class DDMExample extends AccumulableElement {\n static get styles() {\n return [\n super.styles,\n css`\n :host {\n ---border: var(--border, 1px solid var(---color-border));\n display: inline-block;\n\n margin-bottom: 1rem;\n }\n\n .holder {\n display: flex;\n }\n\n .body {\n display: flex;\n\n flex-wrap: wrap;\n\n align-items: center;\n justify-content: left;\n\n padding: 0.625rem;\n\n border: var(---border);\n border-radius: 0.25rem;\n }\n\n .body ::slotted(*) {\n margin: 0.625rem;\n }\n\n /* HACK: Sibling selectors not working with ::slotted */\n /* .body > rdk-task + sdt-response,\n ::slotted(rdk-task) + ::slotted(sdt-response) { */\n /* .body ::slotted(sdt-response) {\n margin-left: 0;\n } */\n\n /* HACK: Sibling selectors not working with ::slotted */\n /* .body > sdt-control + rdk-task,\n ::slotted(sdt-control) + ::slotted(rdk-task) {\n margin-left: 0;\n } */\n /* .body ::slotted(rdk-task) {\n margin-left: 0;\n } */\n `,\n ];\n }\n\n render() { /* eslint-disable-line class-methods-use-this */\n return html`\n <div class=\"holder\">\n <div class=\"body\">\n <slot>Empty!</slot>\n </div>\n </div>`;\n }\n}\n\ncustomElements.define('ddm-example', DDMExample);\n","\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMExample from './ddm-example';\n\n/*\n DDMExampleHuman element\n <ddm-example-human>\n*/\nexport default class DDMExampleHuman extends DDMExample {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n a: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n z: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n v: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n t0: {\n attribute: false,\n type: Number,\n reflect: false,\n },\n };\n }\n\n constructor() {\n super();\n\n this.trials = 10;\n this.duration = 2000;\n this.coherence = 0.5;\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = 'outcome';\n\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.t0 = DDMMath.t0.DEFAULT;\n\n this.accumulableControl = null;\n this.rdkTask = null;\n this.accumulableResponse = null;\n this.accumulableTable = null;\n this.ddmParameters = null;\n this.ddmModel = null;\n this.ddmFit = null;\n\n this.data = undefined;\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.accumulableControl = this.querySelector('accumulable-control');\n this.rdkTask = this.querySelector('rdk-2afc-task');\n this.accumulableResponse = this.querySelector('accumulable-response');\n this.accumulableTable = this.querySelector('accumulable-table');\n this.ddmParameters = this.querySelector('ddm-parameters');\n this.ddmModel = this.querySelector('ddm-model');\n this.ddmFit = this.querySelector('ddm-fit');\n\n // Initialize\n this.ddmModel.clear();\n\n if (this.accumulableControl) {\n this.accumulableControl.addEventListener('accumulable-control-trials', (event) => {\n this.trials = event.detail.trials;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-duration', (event) => {\n this.duration = event.detail.duration;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-coherence', (event) => {\n this.coherence = event.detail.coherence;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-color', (event) => {\n this.color = event.detail.color;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-run', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = true;\n }\n });\n\n this.accumulableControl.addEventListener('accumulable-control-pause', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = false;\n }\n });\n\n this.accumulableControl.addEventListener('accumulable-control-reset', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.reset();\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.reset();\n }\n\n if (this.accumulableTable) {\n this.accumulableTable.correctCount = NaN;\n this.accumulableTable.errorCount = NaN;\n this.accumulableTable.nrCount = NaN;\n this.accumulableTable.accuracy = NaN;\n this.accumulableTable.correctMeanRT = NaN;\n this.accumulableTable.errorMeanRT = NaN;\n this.accumulableTable.meanRT = NaN;\n this.accumulableTable.correctSDRT = NaN;\n this.accumulableTable.errorSDRT = NaN;\n this.accumulableTable.sdRT = NaN;\n }\n\n // if (this.ddmParameters) {\n // }\n\n if (this.ddmModel) {\n this.ddmModel.clear();\n }\n\n if (this.ddmFit) {\n this.ddmFit.clear();\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-start', (event) => {\n if (this.accumulableResponse) {\n this.accumulableResponse.start(event.detail.signal, event.detail.trial);\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-end', (/* event */) => {\n if (this.accumulableResponse) {\n this.accumulableResponse.stop();\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-block-end', (/* event */) => {\n if (this.accumulableControl) {\n this.accumulableControl.complete();\n }\n });\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.addEventListener('accumulable-response', (event) => {\n this.data = event.detail.data;\n\n if (this.ddmModel) {\n this.ddmModel.trial({\n index: event.detail.trial,\n rt: event.detail.rt,\n outcome: event.detail.outcome,\n });\n }\n\n if (this.ddmFit) {\n this.ddmFit.set({\n accuracy: event.detail.data.accuracy,\n correctMeanRT: event.detail.data.correctMeanRT,\n errorMeanRT: event.detail.data.errorMeanRT,\n meanRT: event.detail.data.meanRT,\n correctSDRT: event.detail.data.correctSDRT,\n errorSDRT: event.detail.data.errorSDRT,\n sdRT: event.detail.data.sdRT,\n });\n }\n\n this.requestUpdate();\n });\n }\n\n if (this.ddmFit) {\n this.ddmFit.addEventListener('ddm-fit-update', (event) => {\n this.a = event.detail.a;\n this.z = 0.5; // event.detail.z;\n this.v = event.detail.v;\n this.t0 = event.detail.t0;\n });\n }\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n if (this.accumulableControl) {\n this.accumulableControl.trials = (this.accumulableControl.trials != null)\n ? this.trials\n : undefined;\n this.accumulableControl.duration = (this.accumulableControl.duration != null)\n ? this.duration\n : undefined;\n this.accumulableControl.coherence = (this.accumulableControl.coherence != null)\n ? this.coherence\n : undefined;\n this.accumulableControl.color = (this.accumulableControl.color != null)\n ? this.color\n : undefined;\n }\n\n if (this.rdkTask) {\n this.rdkTask.trials = this.trials;\n this.rdkTask.duration = this.duration;\n this.rdkTask.wait = this.duration;\n this.rdkTask.iti = this.duration;\n this.rdkTask.coherence = this.coherence;\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.a = (this.ddmParameters.a != null)\n ? this.a\n : undefined;\n this.ddmParameters.z = (this.ddmParameters.z != null)\n ? this.z\n : undefined;\n this.ddmParameters.v = (this.ddmParameters.a != null)\n ? this.v\n : undefined;\n this.ddmParameters.t0 = (this.ddmParameters.t0 != null)\n ? this.t0\n : undefined;\n }\n\n if (this.ddmModel) {\n this.ddmModel.a = +this.a;\n this.ddmModel.z = +this.z;\n this.ddmModel.v = +this.v;\n this.ddmModel.t0 = +this.t0;\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.trialTotal = this.trials;\n }\n\n if (this.accumulableTable) {\n this.accumulableTable.color = this.color;\n }\n\n if (this.accumulableTable && this.data) {\n this.accumulableTable.correctCount = this.data.correctCount;\n this.accumulableTable.errorCount = this.data.errorCount;\n this.accumulableTable.nrCount = this.data.nrCount;\n this.accumulableTable.accuracy = this.data.accuracy;\n this.accumulableTable.correctMeanRT = this.data.correctMeanRT;\n this.accumulableTable.errorMeanRT = this.data.errorMeanRT;\n this.accumulableTable.meanRT = this.data.meanRT;\n this.accumulableTable.correctSDRT = this.data.correctSDRT;\n this.accumulableTable.errorSDRT = this.data.errorSDRT;\n this.accumulableTable.sdRT = this.data.sdRT;\n }\n }\n}\n\ncustomElements.define('ddm-example-human', DDMExampleHuman);\n","\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMExample from './ddm-example';\n\n/*\n DDMExampleInteractive element\n <ddm-example-interactive>\n*/\nexport default class DDMExampleInteractive extends DDMExample {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n this.trials = 10;\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = 'outcome';\n\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.t0 = DDMMath.t0.DEFAULT;\n\n this.accumulableControl = null;\n this.accumulableTable = null;\n this.ddmParameters = null;\n this.ddmModel = null;\n\n this.data = undefined;\n this.model = undefined;\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.accumulableControl = this.querySelector('accumulable-control');\n this.accumulableTable = this.querySelector('accumulable-table');\n this.ddmParameters = this.querySelector('ddm-parameters');\n this.ddmModel = this.querySelector('ddm-model');\n\n if (this.accumulableControl) {\n this.accumulableControl.addEventListener('accumulable-control-resample', (/* event */) => {\n this.ddmModel?.resample();\n this.requestUpdate();\n });\n this.accumulableControl.addEventListener('accumulable-control-trials', (event) => {\n this.trials = event.detail.trials;\n });\n this.accumulableControl.addEventListener('accumulable-control-color', (event) => {\n this.color = event.detail.color;\n });\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.addEventListener('ddm-parameters-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmParameters.addEventListener('ddm-parameters-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmParameters.addEventListener('ddm-parameters-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmParameters.addEventListener('ddm-parameters-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n }\n\n if (this.ddmModel) {\n this.ddmModel.addEventListener('ddm-model-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmModel.addEventListener('ddm-model-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmModel.addEventListener('ddm-model-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmModel.addEventListener('ddm-model-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n this.ddmModel.addEventListener('ddm-model-output', (event) => {\n this.data = event.detail.data;\n this.model = event.detail.model;\n this.requestUpdate();\n });\n }\n\n this.requestUpdate();\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n if (this.accumulableControl) {\n this.accumulableControl.trials = (this.accumulableControl.trials != null)\n ? this.trials\n : undefined;\n this.accumulableControl.color = (this.accumulableControl.color != null)\n ? this.color\n : undefined;\n }\n\n if (this.accumulableTable) {\n this.accumulableTable.color = this.color;\n }\n\n if (this.accumulableTable && this.data) {\n this.accumulableTable.correctCount = this.data.correctCount;\n this.accumulableTable.errorCount = this.data.errorCount;\n this.accumulableTable.nrCount = this.data.nrCount;\n this.accumulableTable.accuracy = this.data.accuracy;\n this.accumulableTable.correctMeanRT = this.data.correctMeanRT;\n this.accumulableTable.errorMeanRT = this.data.errorMeanRT;\n this.accumulableTable.meanRT = this.data.meanRT;\n this.accumulableTable.correctSDRT = this.data.correctSDRT;\n this.accumulableTable.errorSDRT = this.data.errorSDRT;\n this.accumulableTable.sdRT = this.data.sdRT;\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.a = (this.ddmParameters.a != null)\n ? this.a\n : undefined;\n this.ddmParameters.z = (this.ddmParameters.z != null)\n ? this.z\n : undefined;\n this.ddmParameters.v = (this.ddmParameters.a != null)\n ? this.v\n : undefined;\n this.ddmParameters.t0 = (this.ddmParameters.t0 != null)\n ? this.t0\n : undefined;\n }\n\n if (this.ddmModel) {\n this.ddmModel.trials = this.trials;\n this.ddmModel.a = +this.a;\n this.ddmModel.z = +this.z;\n this.ddmModel.v = +this.v;\n this.ddmModel.t0 = +this.t0;\n }\n }\n}\n\ncustomElements.define('ddm-example-interactive', DDMExampleInteractive);\n","\nimport DDMMath from '@decidables/accumulable-math';\n\nimport DDMExample from './ddm-example';\n\n/*\n DDMExampleModel element\n <ddm-example-model>\n*/\nexport default class DDMExampleModel extends DDMExample {\n static get properties() {\n return {\n trials: {\n attribute: 'trials',\n type: Number,\n reflect: true,\n },\n duration: {\n attribute: 'duration',\n type: Number,\n reflect: true,\n },\n coherence: {\n attribute: 'coherence',\n type: Number,\n reflect: true,\n },\n color: {\n attribute: 'color',\n type: String,\n reflect: true,\n },\n\n a: {\n attribute: 'boundary-separation',\n type: Number,\n reflect: true,\n },\n z: {\n attribute: 'starting-point',\n type: Number,\n reflect: true,\n },\n v: {\n attribute: 'drift-rate',\n type: Number,\n reflect: true,\n },\n t0: {\n attribute: 'nondecision-time',\n type: Number,\n reflect: true,\n },\n };\n }\n\n constructor() {\n super();\n\n this.trials = 10;\n this.duration = 2000;\n this.coherence = 0.5;\n this.colors = ['none', 'measure', 'outcome', 'all'];\n this.color = 'outcome';\n\n this.a = DDMMath.a.DEFAULT;\n this.z = DDMMath.z.DEFAULT;\n this.v = DDMMath.v.DEFAULT;\n this.t0 = DDMMath.t0.DEFAULT;\n\n this.accumulableControl = null;\n this.rdkTask = null;\n this.ddmParameters = null;\n this.ddmModel = null;\n this.accumulableResponse = null;\n this.accumulableTable = null;\n\n this.trialCount = 0;\n this.signals = ['left', 'right']; // Possible values of 'signal'\n this.signal = undefined; // Signal for current trial\n this.data = undefined;\n this.model = undefined;\n }\n\n connectedCallback() {\n super.connectedCallback();\n\n this.accumulableControl = this.querySelector('accumulable-control');\n this.rdkTask = this.querySelector('rdk-2afc-task');\n this.ddmParameters = this.querySelector('ddm-parameters');\n this.ddmModel = this.querySelector('ddm-model');\n this.accumulableResponse = this.querySelector('accumulable-response');\n this.accumulableTable = this.querySelector('accumulable-table');\n\n if (this.accumulableControl) {\n this.accumulableControl.addEventListener('accumulable-control-trials', (event) => {\n this.trials = event.detail.trials;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-duration', (event) => {\n this.duration = event.detail.duration;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-color', (event) => {\n this.color = event.detail.color;\n });\n\n this.accumulableControl.addEventListener('accumulable-control-run', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = true;\n }\n\n if (this.ddmModel) {\n this.ddmModel.resumeTrial();\n }\n });\n\n this.accumulableControl.addEventListener('accumulable-control-pause', (/* event */) => {\n if (this.rdkTask) {\n this.rdkTask.running = false;\n }\n\n if (this.ddmModel) {\n this.ddmModel.pauseTrial();\n }\n });\n\n this.accumulableControl.addEventListener('accumulable-control-reset', (/* event */) => {\n this.trialCount = 0;\n this.signal = undefined;\n\n if (this.rdkTask) {\n this.rdkTask.reset();\n }\n\n if (this.ddmModel) {\n this.ddmModel.trials = this.trialCount;\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.reset();\n }\n\n if (this.accumulableTable) {\n // this.accumulableTable.clear();\n }\n });\n }\n\n if (this.rdkTask) {\n this.rdkTask.addEventListener('rdk-trial-start', (event) => {\n this.signal = event.detail.signal;\n\n if (this.accumulableResponse) {\n this.accumulableResponse.start(\n event.detail.signal,\n event.detail.trial,\n );\n }\n\n if (this.ddmModel) {\n this.trialCount += 1;\n this.ddmModel.trial();\n }\n });\n\n this.rdkTask.addEventListener('rdk-trial-end', (/* event */) => {\n this.signal = undefined;\n\n if (this.accumulableResponse) {\n this.accumulableResponse.stop();\n }\n });\n\n this.rdkTask.addEventListener('rdk-block-end', (/* event */) => {\n if (this.accumulableControl) {\n this.accumulableControl.complete();\n }\n });\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.addEventListener('ddm-parameters-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmParameters.addEventListener('ddm-parameters-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmParameters.addEventListener('ddm-parameters-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmParameters.addEventListener('ddm-parameters-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n }\n\n if (this.ddmModel) {\n this.ddmModel.addEventListener('ddm-model-a', (event) => {\n this.a = event.detail.a;\n });\n this.ddmModel.addEventListener('ddm-model-z', (event) => {\n this.z = event.detail.z;\n });\n this.ddmModel.addEventListener('ddm-model-v', (event) => {\n this.v = event.detail.v;\n });\n this.ddmModel.addEventListener('ddm-model-t0', (event) => {\n this.t0 = event.detail.t0;\n });\n this.ddmModel.addEventListener('ddm-model-output', (event) => {\n this.data = event.detail.data;\n this.model = event.detail.model;\n this.requestUpdate();\n });\n\n this.ddmModel.addEventListener('accumulable-response', (event) => {\n if (this.accumulableResponse) {\n const response = (event.detail.outcome === 'correct')\n ? this.signal\n : (this.signal === 'left')\n ? 'right'\n : 'left';\n this.accumulableResponse.responded(response);\n }\n\n this.data = event.detail.data;\n this.model = event.detail.model;\n this.requestUpdate();\n });\n }\n\n this.requestUpdate();\n }\n\n update(changedProperties) {\n super.update(changedProperties);\n\n if (this.trialCount > this.trials) {\n this.trialCount = this.trials;\n }\n\n if (this.accumulableControl) {\n this.accumulableControl.trials = (this.accumulableControl.trials != null)\n ? this.trials\n : undefined;\n this.accumulableControl.duration = (this.accumulableControl.duration != null)\n ? this.duration\n : undefined;\n this.accumulableControl.coherence = (this.accumulableControl.coherence != null)\n ? this.coherence\n : undefined;\n this.accumulableControl.color = (this.accumulableControl.color != null)\n ? this.color\n : undefined;\n }\n\n if (this.rdkTask) {\n this.rdkTask.trials = this.trials;\n this.rdkTask.duration = this.duration;\n this.rdkTask.coherence = this.coherence;\n }\n\n if (this.ddmParameters) {\n this.ddmParameters.a = (this.ddmParameters.a != null)\n ? this.a\n : undefined;\n this.ddmParameters.z = (this.ddmParameters.z != null)\n ? this.z\n : undefined;\n this.ddmParameters.v = (this.ddmParameters.a != null)\n ? this.v\n : undefined;\n this.ddmParameters.t0 = (this.ddmParameters.t0 != null)\n ? this.t0\n : undefined;\n }\n\n if (this.ddmModel) {\n this.ddmModel.trials = this.trialCount;\n this.ddmModel.a = +this.a;\n this.ddmModel.z = +this.z;\n this.ddmModel.v = +this.v;\n this.ddmModel.t0 = +this.t0;\n }\n\n if (this.accumulableResponse) {\n this.accumulableResponse.trialTotal = this.trials;\n }\n\n if (this.accumulableTable) {\n this.accumulableTable.color = this.color;\n }\n\n if (this.accumulableTable && this.data) {\n this.accumulableTable.correctCount = this.data.correctCount;\n this.accumulableTable.errorCount = this.data.errorCount;\n this.accumulableTable.nrCount = this.data.nrCount;\n this.accumulableTable.accuracy = this.data.accuracy;\n this.accumulableTable.correctMeanRT = this.data.correctMeanRT;\n this.accumulableTable.errorMeanRT = this.data.errorMeanRT;\n this.accumulableTable.meanRT = this.data.meanRT;\n this.accumulableTable.correctSDRT = this.data.correctSDRT;\n this.accumulableTable.errorSDRT = this.data.errorSDRT;\n this.accumulableTable.sdRT = this.data.sdRT;\n }\n }\n}\n\ncustomElements.define('ddm-example-model', DDMExampleModel);\n"],"names":["t","globalThis","e","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$2","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","r","n","i","css","reduce","c","cssRules","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","JSCompiler_renameProperty","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","notEqual","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","hasOwnProperty","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","has","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","b","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createMarker","createComment","v","_","m","RegExp","g","$","_$litType$","strings","values","x","T","for","E","A","C","createTreeWalker","V","getTemplateHtml","lastIndex","exec","test","startsWith","N","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","ascending","NaN","descending","bisector","compare1","compare2","delta","left","lo","hi","mid","zero","center","right","litElementVersions","bisectRight","e10","sqrt","e5","e2","tickSpec","start","stop","count","step","max","power","floor","log10","error","pow","factor","i1","i2","inc","round","tickIncrement","identity$3","epsilon","translateX","translateY","number","scale","offset","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","transform","context","ticks","apply","domain","format","identity","spacing","range","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","attr","line","select","text","merge","insert","transition","isFinite","filter","each","from","tickSize","axisLeft","noop","value","dispatch","Dispatch","callback","concat","on","typename","types","trim","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","arrayAll","array","matcher","matches","childMatcher","node","find","childFirst","firstElementChild","children","sparse","EnterNode","parent","datum","_next","_parent","__data__","bindIndex","group","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","keyValues","arraylike","attrRemove","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","lower","previousSibling","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","listener","onAdd","event","contextListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","child","next","join","splice","contains","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","selectChild","match","childFind","selectChildren","childrenFilter","bind","constant","enterGroup","updateGroup","previous","i0","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","min","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","property","classed","html","create","before","deep","typenames","parseTypenames","nextId","Local","pointer","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","top","clientTop","pageX","pageY","id","nonpassive","nonpassivecapture","nopropagation","stopImmediatePropagation","noevent","preventDefault","DragEvent","subject","target","identifier","active","dx","dy","defineProperties","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","listeners","clickDistance2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","view","mousemoved","mouseupped","__noselect","MozUserSelect","nodrag","mouse","noclick","setTimeout","yesdrag","touches","changedTouches","clearTimeout","touch","p0","clickDistance","define","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","parseInt","rgbn","Rgb","rgba","hsla","opacity","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","channels","assign","displayable","formatHex8","formatHsl","clamp","gamma","nogamma","exponential","linear","interpolateRgb","rgbGamma","end","colorRgb","numberArray","genericArray","nb","na","date","Date","setTime","interpolateNumber","object","reA","reB","source","interpolateString","am","bm","bs","bi","q","one","interpolate$1","ArrayBuffer","isView","DataView","isNumberArray","valueOf","interpolateRound","svgNode","degrees","PI","rotate","skewX","scaleX","scaleY","decompose","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","taskHead","taskTail","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","interpolateTransformSvg","baseVal","consolidate","matrix","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearInterval","setInterval","elapsed","TypeError","emptyOn","emptyTween","schedule","timing","schedules","__transition","self","tween","duration","ease","init","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","resolve","cancel","interrupt","cubicOut","defaultTiming","pi","tau","tauEpsilon","Path","digits","_x0","_y0","_x1","_y1","_append","appendRound","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","abs","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cos","sin","cw","da","w","formatDecimalParts","toExponential","coefficient","exponent","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","align","sign","symbol","width","comma","precision","formatRounded","formatTypes","%","toLocaleString","replace","toPrecision","X","toUpperCase","identity$1","locale","formatPrefix","prefixes","formatLocale","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","padding","uniform","sourceRandomUniform","randomUniform","defaultSource","normal","sourceRandomNormal","randomNormal","mu","sigma","log","eps","lcg","seed","initRange","unit","normalize","bimap","d0","d1","r0","r1","polymap","bisect","transformer","untransform","unknown","piecewise","output","input","interpolateValue","rescale","clamper","invert","rangeRound","tickStep","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","ceil","colors","Linear","_context","curveLinear","defined","curve","shape","RangeError","withPath","buffer","defined0","lineStart","lineEnd","pointX","pointY","Transform","areaStart","_line","areaEnd","_point","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","DecidablesElement","getComputedStyleValue","changedProperties","d3","greys","light75","light50","light25","dark25","dark50","dark75","shadows","elevations","baselineColor","baselineColorString","inverseBaselineColor","inverseBaselineColorString","opacityUmbra","opacityPenumbra","opacityAmbient","opacityBoost","mapUmbra","mapPenumbra","mapAmbient","cssBoxShadow","elevation","umbraO","penumbraO","ambientO","umbraC","penumbraC","ambientC","umbraM","penumbraM","ambientM","svgDefs","filters","svgFilters","unsafeCSS","customElements","disabled","nonlinear","rangeMax","rangeMin","rangeStep","rangeValue","toRange","fromRange","nonlinearRange","rangeChanged","rangeInputted","spinnerInputted","ifDefined","inputted","checked","changed","DecidablesMixinResizeable","superClass","height","rem","getDimensions","parseFloat","resizeObserver","ResizeObserver","observe","unobserve","AccumulableElement","interactive","correct","nr","lights","acc","cur","darks","AccumulableControl","trials","resample","coherence","run","pause","reset","states","setTrials","doResample","setDuration","setCoherence","chooseColor","doRun","doPause","doReset","complete","DDMMath","static","DEFAULT","MIN","MAX","STEP","JUMP","trials2stats","stats","sums","accumulator","trial","outcome","correctCount","correctRTSum","rt","errorCount","errorRTSum","nrCount","accuracy","correctMeanRT","errorMeanRT","meanRT","sums2","ss","correctSS","errorSS","correctSDRT","errorSDRT","sdRT","azv2pE","zPrime","exp","azv2pC","azvt02m","azv2sd","Z","variance","azvt02mE","phi","azv2sdE","azvt02mC","azv2sdC","tazv2gE","base","term","sum","tazv2gC","data2ez","pC","sd","logit","vrt","mrt","s2","mdt","data2ez2","AccumulableResponse","feedback","payoff","correctPayoff","errorPayoff","nrPayoff","trialCount","trialTotal","payoffs","signals","signal","responses","response","outcomes","startTime","alignState","trialPayoff","totalPayoff","responded","keydown","payoffFormatter","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","payoffFormat","formatToParts","part","AccumulableTable","numeric","summary","sendEvent","correctCountInput","errorCountInput","accuracyInput","correctMeanRTInput","errorMeanRTInput","meanRTInput","correctSDRTInput","errorSDRTInput","sdRTInput","DDMFit","observed","predicted","working","queued","worker","DDMFitWorker","onmessage","fit","postMessage","clear","structuredClone","DDMParameters","setBoundarySeparation","setStartingPoint","setDriftRate","setNondecisionTime","DDMModel","measures","means","sds","human","firstUpdate","evidence","density","bounds","startingPoint","model","animate","paused","pauseTrial","resumeTrial","alignPath","drift","at","alignCorrectDistribution","proportionCorrect","dist","alignErrorDistribution","proportionError","upper","dataStats","correctDist","errorDist","hostWidth","hostHeight","elementWidth","elementHeight","margin","gapHeight","evidenceHeight","densityHeight","gapWidth","timeWidth","accuracyWidth","transitionDuration","timeScale","evidenceScale","correctDensityScale","errorDensityScale","accuracyScale","dragT0z","shift","shiftKey","dragDrift","dragBoundary","boundary","evidenceLine","correctDensityLine","errorDensityLine","svgUpdate","svgEnter","gradient","svgMerge","densityPlotUpdate","densityScale","densityLine","alignDistribution","evidencePlotEnter","densityPlotEnter","accuracyPlotEnter","evidencePlotMerge","densityPlotMerge","accuracyPlotMerge","evidenceUnderlayerEnter","densityUnderlayerEnter","accuracyUnderlayerEnter","evidenceUnderlayerMerge","densityUnderlayerMerge","accuracyUnderlayerMerge","densityContentEnter","evidenceContentMerge","densityContentMerge","accuracyContentMerge","evidenceOverlayerMerge","densityOverlayerMerge","timeScaleMerge","timeTitleEnter","evidenceScaleMerge","densityScaleMerge","accuracyScaleMerge","evidenceScaleTransition","densityScaleTransition","elements","accuracyScaleTransition","evidenceTitleEnter","densityTitleEnter","accuracyTitleEnter","pathUpdate","rtLabel","pathEnter","myRtLabel","bbox","getBBox","pathMerge","interpolateA","interpolateZ","interpolateV","interpolateT0","pathMergeNewActive","easeTime","scaleIn","scaleOutGenerator","easeFunction","interpolator","parentElement","pathMergeNewPaused","distEnter","rtUpdate","rtEnter","rtMerge","accuracyUpdate","accuracyEnter","dataAccuracyUpdate","dataAccuracyEnter","dataAccuracyMerge","boundaryUpdate","bound","boundaryEnter","boundaryMerge","includes","driftUpdate","driftEnter","driftMerge","scaleRatio","t0zUpdate","t0zEnter","t0zMerge","aUpdate","aEnter","aLabel","aMerge","zUpdate","zEnter","zLabel","zMerge","vUpdate","vEnter","vLabel","driftAngle","driftHypotenuse","driftX","driftY","vMerge","t0Update","t0Enter","t0Label","t0Merge","meanUpdate","meanEnter","dataMeanUpdate","dataMeanEnter","sdUpdate","sdEnter","dataSDUpdate","dataSDEnter","RDK2AFCTask","probability","wait","iti","running","lifetime","speed","COHERENT","RANDOM","dots","baseTime","pauseTime","lastTime","LEFT","RIGHT","currentDirection","runner","xScale","yScale","elementSize","plotEnter","plotMerge","underlayerEnter","underlayerMerge","overlayerEnter","overlayerMerge","total","_restart","dotUpdate","realTime","currentTime","elapsedTime","frameTime","newTrial","newDot","dot","direction","birth","angle","radius","directionR","fixationUpdate","fixationEnter","queryUpdate","DDMEquation","DDMEquationAZV2PC","aInput","zInput","vInput","equation","DDMEquationAZVT02M","t0Input","DDMExample","DDMExampleHuman","accumulableControl","rdkTask","accumulableResponse","accumulableTable","ddmParameters","ddmModel","ddmFit","DDMExampleInteractive","DDMExampleModel"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,151,167]}
|