`)}popupDebug(){window.open(this.getDebugURI())}iframeDebug(){const e=document.createElement("iframe");e.width=""+window.innerWidth,e.height=""+window.innerHeight,e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.zIndex="10000",document.body.appendChild(e),e.contentWindow.document.open(),e.contentWindow.document.write(this.getDebugHTML()),e.contentWindow.document.close(),e.contentWindow.document.body.style.background="white";const t=document.createElement("button");t.style.position="absolute",t.style.top="0",t.style.right="0",t.style.zIndex="10001",document.body.appendChild(t),t.textContent="close",["pointerdown","click","touchdown"].forEach(i=>{t.addEventListener(i,()=>{document.body.removeChild(e),document.body.removeChild(t)},!0)})}getPDOMDebugHTML(){let e="";const t="font-weight: bold; font-size: 120%; margin-top: 5px;",i="    ";e+=`
Accessible Instances

`,function t(n,s){e+=s+cc(`${n.isRootInstance?"":n.node.tagName} ${n.toString()}`)+"
",n.children.forEach(e=>{t(e,s+i)})}(this._rootPDOMInstance,""),e+=`
Parallel DOM

`;let n=this._rootPDOMInstance.peer.primarySibling.outerHTML;n=n.replace(/>\n<");const s=n.split("\n");let r="";for(let o=0;o",n||(r+=i)}return e}foreignObjectRasterization(t){const i={};let n=0;function s(e){e.id||(e.id="unknown-canvas-"+n++),i[e.id]=e.toDataURL()}!function e(t){if(t instanceof Fg)_.each(t.blocks,t=>{e(t)});else if(t instanceof eg&&t.firstDrawable&&t.lastDrawable){for(let i=t.firstDrawable;i!==t.lastDrawable;i=i.nextDrawable)e(i);e(t.lastDrawable),(t instanceof hg||t instanceof Cg)&&t.canvas&&t.canvas instanceof window.HTMLCanvasElement&&s(t.canvas)}jg&&t instanceof jg&&(t.domElement instanceof window.HTMLCanvasElement&&s(t.domElement),Array.prototype.forEach.call(t.domElement.getElementsByTagName("canvas"),e=>{s(e)}))}(this._rootBackbone);const r=document.implementation.createHTMLDocument("");r.documentElement.innerHTML=this.domElement.outerHTML,r.documentElement.setAttribute("xmlns",r.documentElement.namespaceURI),r.documentElement.appendChild(document.createElement("style")).innerHTML=`.${vs.A.ROOT_CLASS_NAME} { display:none; } `;let o=r.documentElement.getElementsByTagName("canvas");o=Array.prototype.slice.call(o);for(let e=0;e{e.elementToSVGDataURL(r.documentElement,a,l,t)};let c=0,d=!1;const u=Array.prototype.slice.call(r.documentElement.getElementsByTagName("image"));for(let e=0;e{const e=new window.Image,n=t;e.onload=()=>{const t=document.createElement("canvas");t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),n.setAttribute("xlink:href",t.toDataURL()),0==--c&&h()},e.onerror=()=>{0==--c&&h()},e.src=i})())}d||h()}popupRasterization(){this.foreignObjectRasterization(e=>{e&&window.open(e)})}getTrailFromPDOMIndicesString(e){if(!this._rootPDOMInstance)return null;let t=this._rootPDOMInstance;const i=e.split("-");for(let n=0;n
${(new window.XMLSerializer).serializeToString(e)}
`,a=new window.Image;a.onload=()=>{r.drawImage(a,0,0),n(s.toDataURL())},a.onerror=()=>{n(null)};const l=new TextEncoderLite("utf-8").encode(o),h=fromByteArray(l);a.src="data:image/svg+xml;base64,"+h}static assertSubtreeDisposed(e){0}static addInputListener(e){_.includes(gs.inputListeners,e)||gs.inputListeners.push(e)}static removeInputListener(e){gs.inputListeners.splice(_.indexOf(gs.inputListeners,e),1)}static hasInputListener(e){return _.includes(gs.inputListeners,e)}static interruptInput(){const e=gs.inputListeners.slice(0);for(let t=0;t{(0,ze.Ay)(!i.hasOwnProperty(t)||void 0!==i[t],"Undefined not allowed for key: "+t),void 0!==i[t]&&(e[t]=i[t])}))}XA.INTERRUPT_OTHER_POINTERS=e=>{var t,i,n;null==(n=window.phet)||null==(i=n.joist)||null==(t=i.display)||t.interruptOtherPointers(null==e?void 0:e.pointer)},ot.A.register("Display",XA),Te.A.register("mutate",JA);const $A=JA,ey=["left","right","center","origin"],ty=["top","bottom","center","origin"],iy=["left","right","center"],ny=["top","bottom","center"];let sy=class e extends Se.A{static getAllowedAligns(e){return[...e===Ie.HORIZONTAL?ey:ty,null]}static getAllowedRestrictedAligns(e){return[...e===Ie.HORIZONTAL?iy:ny,null]}static alignToInternal(t,i){return t===Ie.HORIZONTAL?e.horizontalAlignToInternal(i):e.verticalAlignToInternal(i)}static horizontalAlignToInternal(e){return null===e?null:ry[e]}static verticalAlignToInternal(e){return null===e?null:oy[e]}static internalToAlign(e,t){return null===t?null:e===Ie.HORIZONTAL?t.horizontal:t.vertical}constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.POSITIVE_INFINITY;super(),this.horizontal=e,this.vertical=t,this.padRatio=i}};sy.START=new sy("left","top",0),sy.END=new sy("right","bottom",1),sy.CENTER=new sy("center","center",.5),sy.ORIGIN=new sy("origin","origin"),sy.enumeration=new Ee.A(sy,{phetioDocumentation:"Alignment for layout containers"});const ry={left:sy.START,right:sy.END,center:sy.CENTER,origin:sy.ORIGIN},oy={top:sy.START,bottom:sy.END,center:sy.CENTER,origin:sy.ORIGIN};ot.A.register("LayoutAlign",sy);const ay=["margin","xMargin","yMargin","leftMargin","rightMargin","topMargin","bottomMargin","minContentWidth","minContentHeight","maxContentWidth","maxContentHeight"],ly=Wr(e=>class extends e{mutateConfigurable(e){(0,u.A)(e,["margin"],["xMargin","yMargin"]),(0,u.A)(e,["xMargin"],["leftMargin","rightMargin"]),(0,u.A)(e,["yMargin"],["topMargin","bottomMargin"])}setConfigToBaseDefault(){this._leftMargin=0,this._rightMargin=0,this._topMargin=0,this._bottomMargin=0,this._minContentWidth=null,this._minContentHeight=null,this._maxContentWidth=null,this._maxContentHeight=null,this.changedEmitter.emit()}setConfigToInherit(e){e&&void 0!==e.leftMargin||(this._leftMargin=null),e&&void 0!==e.rightMargin||(this._rightMargin=null),e&&void 0!==e.topMargin||(this._topMargin=null),e&&void 0!==e.bottomMargin||(this._bottomMargin=null),e&&void 0!==e.minContentWidth||(this._minContentWidth=null),e&&void 0!==e.minContentHeight||(this._minContentHeight=null),e&&void 0!==e.maxContentWidth||(this._maxContentWidth=null),e&&void 0!==e.maxContentHeight||(this._maxContentHeight=null),this.changedEmitter.emit()}get leftMargin(){return this._leftMargin}set leftMargin(e){this._leftMargin!==e&&(this._leftMargin=e,this.changedEmitter.emit())}get rightMargin(){return this._rightMargin}set rightMargin(e){this._rightMargin!==e&&(this._rightMargin=e,this.changedEmitter.emit())}get topMargin(){return this._topMargin}set topMargin(e){this._topMargin!==e&&(this._topMargin=e,this.changedEmitter.emit())}get bottomMargin(){return this._bottomMargin}set bottomMargin(e){this._bottomMargin!==e&&(this._bottomMargin=e,this.changedEmitter.emit())}get xMargin(){return this._leftMargin}set xMargin(e){this._leftMargin===e&&this._rightMargin===e||(this._leftMargin=e,this._rightMargin=e,this.changedEmitter.emit())}get yMargin(){return this._topMargin}set yMargin(e){this._topMargin===e&&this._bottomMargin===e||(this._topMargin=e,this._bottomMargin=e,this.changedEmitter.emit())}get margin(){return this._topMargin}set margin(e){this._leftMargin===e&&this._rightMargin===e&&this._topMargin===e&&this._bottomMargin===e||(this._leftMargin=e,this._rightMargin=e,this._topMargin=e,this._bottomMargin=e,this.changedEmitter.emit())}get minContentWidth(){return this._minContentWidth}set minContentWidth(e){this._minContentWidth!==e&&(this._minContentWidth=e,this.changedEmitter.emit())}get minContentHeight(){return this._minContentHeight}set minContentHeight(e){this._minContentHeight!==e&&(this._minContentHeight=e,this.changedEmitter.emit())}get maxContentWidth(){return this._maxContentWidth}set maxContentWidth(e){this._maxContentWidth!==e&&(this._maxContentWidth=e,this.changedEmitter.emit())}get maxContentHeight(){return this._maxContentHeight}set maxContentHeight(e){this._maxContentHeight!==e&&(this._maxContentHeight=e,this.changedEmitter.emit())}constructor(){super(...arguments),this._leftMargin=null,this._rightMargin=null,this._topMargin=null,this._bottomMargin=null,this._minContentWidth=null,this._minContentHeight=null,this._maxContentWidth=null,this._maxContentHeight=null,this.changedEmitter=new ct.A}});ot.A.register("MarginLayoutConfigurable",ly);const hy=ly,cy=["orientation","align","cellAlign","stretch","grow"].concat(ay),dy=Wr(e=>class extends(hy(e)){mutateConfigurable(e){super.mutateConfigurable(e),$A(this,cy,e)}setConfigToBaseDefault(){this._align=sy.CENTER,this._cellAlign=sy.START,this._stretch=!1,this._grow=0,super.setConfigToBaseDefault()}setConfigToInherit(e){e&&void 0!==e.align||(this._align=null),e&&void 0!==e.cellAlign||(this._cellAlign=null),e&&void 0!==e.stretch||(this._stretch=null),e&&void 0!==e.grow||(this._grow=null),super.setConfigToInherit(e)}get orientation(){return this._orientation===Ie.HORIZONTAL?"horizontal":"vertical"}set orientation(e){const t="horizontal"===e?Ie.HORIZONTAL:Ie.VERTICAL;this._orientation!==t&&(this._orientation=t,this.orientationChangedEmitter.emit(),this.changedEmitter.emit())}get align(){const e=sy.internalToAlign(this._orientation.opposite,this._align);return e}set align(e){const t=sy.alignToInternal(this._orientation.opposite,e);this._align!==t&&(this._align=t,this.changedEmitter.emit())}get cellAlign(){const e=sy.internalToAlign(this._orientation,this._cellAlign);return e}set cellAlign(e){const t=sy.alignToInternal(this._orientation,e);this._cellAlign!==t&&(this._cellAlign=t,this.changedEmitter.emit())}get stretch(){return this._stretch}set stretch(e){this._stretch!==e&&(this._stretch=e,this.changedEmitter.emit())}get grow(){return this._grow}set grow(e){this._grow!==e&&(this._grow=e,this.changedEmitter.emit())}constructor(){super(...arguments),this._orientation=Ie.HORIZONTAL,this._align=null,this._cellAlign=null,this._stretch=null,this._grow=null,this.orientationChangedEmitter=new ct.A}});ot.A.register("FlowConfigurable",dy);const uy=dy;let py=class{initializeLayoutLine(){this.min=0,this.max=Number.POSITIVE_INFINITY,this.minOrigin=Number.POSITIVE_INFINITY,this.maxOrigin=Number.NEGATIVE_INFINITY,this.size=0,this.position=0}hasOrigin(){return isFinite(this.minOrigin)&&isFinite(this.maxOrigin)}};ot.A.register("LayoutLine",py);let my=class e extends py{initialize(e,t){return this.orientation=e,this.cells=t,this.initializeLayoutLine(),this}getMinimumSize(e){return(this.cells.length-1)*e+_.sum(this.cells.map(e=>e.getMinimumSize(this.orientation)))}freeToPool(){e.pool.freeToPool(this)}clean(){this.cells.length=0,this.freeToPool()}constructor(e,t){super(),this.initialize(e,t)}};my.pool=new xe.A(my,{defaultArguments:[Ie.HORIZONTAL,[]]}),ot.A.register("FlowLine",my);const gy=["left","right","center","spaceBetween","spaceAround","spaceEvenly"],Ay=["top","bottom","center","spaceBetween","spaceAround","spaceEvenly"];let yy=class extends Se.A{static getAllowedJustificationValues(e){return e===Ie.HORIZONTAL?gy:Ay}static justifyToInternal(e,t){return e===Ie.HORIZONTAL?fy[t]:by[t]}static internalToJustify(e,t){return e===Ie.HORIZONTAL?t.horizontal:t.vertical}constructor(e,t,i){super(),this.spacingFunctionFactory=e,this.horizontal=t,this.vertical=i}};yy.START=new yy(()=>()=>0,"left","top"),yy.END=new yy(e=>t=>0===t?e:0,"right","bottom"),yy.CENTER=new yy(e=>t=>0===t?e/2:0,"center","center"),yy.SPACE_BETWEEN=new yy((e,t)=>i=>0!==i?e/(t-1):0,"spaceBetween","spaceBetween"),yy.SPACE_AROUND=new yy((e,t)=>i=>(0!==i?2:1)*e/(2*t),"spaceAround","spaceAround"),yy.SPACE_EVENLY=new yy((e,t)=>i=>e/(t+1),"spaceEvenly","spaceEvenly"),yy.enumeration=new Ee.A(yy,{phetioDocumentation:"Justify for layout containers"});const fy={left:yy.START,right:yy.END,center:yy.CENTER,spaceBetween:yy.SPACE_BETWEEN,spaceAround:yy.SPACE_AROUND,spaceEvenly:yy.SPACE_EVENLY},by={top:yy.START,bottom:yy.END,center:yy.CENTER,spaceBetween:yy.SPACE_BETWEEN,spaceAround:yy.SPACE_AROUND,spaceEvenly:yy.SPACE_EVENLY};ot.A.register("LayoutJustification",yy);let Py=class e{initialize(e){return this.trail=e,this}checkPreconditions(){}get node(){return this.trail.lastNode()}get bounds(){return this.trail.parentToGlobalBounds(this.node.bounds)}get visibleBounds(){return this.trail.parentToGlobalBounds(this.node.visibleBounds)}get width(){return this.bounds.width}get height(){return this.bounds.height}get x(){return this.trail.getParentTransform().transformX(this.node.x)}set x(e){this.node.x=this.trail.getParentTransform().inverseX(e)}get y(){return this.trail.getParentTransform().transformY(this.node.y)}set y(e){this.node.y=this.trail.getParentTransform().inverseY(e)}get translation(){return this.trail.getParentTransform().transformPosition2(this.node.translation)}set translation(e){this.node.translation=this.trail.getParentTransform().inversePosition2(e)}get left(){return this.trail.getParentTransform().transformX(this.node.left)}set left(e){this.node.left=this.trail.getParentTransform().inverseX(e)}get right(){return this.trail.getParentTransform().transformX(this.node.right)}set right(e){this.node.right=this.trail.getParentTransform().inverseX(e)}get centerX(){return this.trail.getParentTransform().transformX(this.node.centerX)}set centerX(e){this.node.centerX=this.trail.getParentTransform().inverseX(e)}get top(){return this.trail.getParentTransform().transformY(this.node.top)}set top(e){this.node.top=this.trail.getParentTransform().inverseY(e)}get bottom(){return this.trail.getParentTransform().transformY(this.node.bottom)}set bottom(e){this.node.bottom=this.trail.getParentTransform().inverseY(e)}get centerY(){return this.trail.getParentTransform().transformY(this.node.centerY)}set centerY(e){this.node.centerY=this.trail.getParentTransform().inverseY(e)}get leftTop(){return this.trail.getParentTransform().transformPosition2(this.node.leftTop)}set leftTop(e){this.node.leftTop=this.trail.getParentTransform().inversePosition2(e)}get centerTop(){return this.trail.getParentTransform().transformPosition2(this.node.centerTop)}set centerTop(e){this.node.centerTop=this.trail.getParentTransform().inversePosition2(e)}get rightTop(){return this.trail.getParentTransform().transformPosition2(this.node.rightTop)}set rightTop(e){this.node.rightTop=this.trail.getParentTransform().inversePosition2(e)}get leftCenter(){return this.trail.getParentTransform().transformPosition2(this.node.leftCenter)}set leftCenter(e){this.node.leftCenter=this.trail.getParentTransform().inversePosition2(e)}get center(){return this.trail.getParentTransform().transformPosition2(this.node.center)}set center(e){this.node.center=this.trail.getParentTransform().inversePosition2(e)}get rightCenter(){return this.trail.getParentTransform().transformPosition2(this.node.rightCenter)}set rightCenter(e){this.node.rightCenter=this.trail.getParentTransform().inversePosition2(e)}get leftBottom(){return this.trail.getParentTransform().transformPosition2(this.node.leftBottom)}set leftBottom(e){this.node.leftBottom=this.trail.getParentTransform().inversePosition2(e)}get centerBottom(){return this.trail.getParentTransform().transformPosition2(this.node.centerBottom)}set centerBottom(e){this.node.centerBottom=this.trail.getParentTransform().inversePosition2(e)}get rightBottom(){return this.trail.getParentTransform().transformPosition2(this.node.rightBottom)}set rightBottom(e){this.node.rightBottom=this.trail.getParentTransform().inversePosition2(e)}get widthSizable(){return this.node.widthSizable}get heightSizable(){return this.node.heightSizable}isSizable(e){return e===Ie.HORIZONTAL?this.widthSizable:this.heightSizable}get minimumWidth(){var e;const t=rr(this.node)?null!=(e=this.node.minimumWidth)?e:0:this.node.width;return Math.abs(this.trail.getParentTransform().transformDeltaX(t))}get minimumHeight(){var e;const t=or(this.node)?null!=(e=this.node.minimumHeight)?e:0:this.node.height;return Math.abs(this.trail.getParentTransform().transformDeltaY(t))}getMinimum(e){return e===Ie.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maxWidth(){return null===this.node.maxWidth?null:Math.abs(this.trail.getParentTransform().transformDeltaX(this.node.maxWidth))}set maxWidth(e){this.node.maxWidth=null===e?null:Math.abs(this.trail.getParentTransform().inverseDeltaX(e))}get maxHeight(){return null===this.node.maxHeight?null:Math.abs(this.trail.getParentTransform().transformDeltaY(this.node.maxHeight))}set maxHeight(e){this.node.maxHeight=null===e?null:Math.abs(this.trail.getParentTransform().inverseDeltaY(e))}getMax(e){return e===Ie.HORIZONTAL?this.maxWidth:this.maxHeight}attemptPreferredSize(e,t){if(this.isSizable(e))if(null===t)this.node[e.preferredSize]=null;else{t=Math.abs(this.trail.getParentTransform()[e===Ie.HORIZONTAL?"inverseDeltaX":"inverseDeltaY"](t));const i=this.getMinimum(e);t=Math.max(i,t);const n=this.getMax(e);null!==n&&(t=Math.min(n,t)),this.node[e.preferredSize]=t}}get preferredWidth(){if(rr(this.node)){const e=this.node.preferredWidth;return null===e?null:Math.abs(this.trail.getParentTransform().transformDeltaX(e))}return null}set preferredWidth(e){this.attemptPreferredSize(Ie.HORIZONTAL,e)}get preferredHeight(){if(or(this.node)){const e=this.node.preferredHeight;return null===e?null:Math.abs(this.trail.getParentTransform().transformDeltaY(e))}return null}set preferredHeight(e){this.attemptPreferredSize(Ie.VERTICAL,e)}get visible(){return this.node.visible}set visible(e){this.node.visible=e}dispose(){this.trail=null,this.freeToPool()}freeToPool(){e.pool.freeToPool(this)}constructor(e){this.initialize(e)}};Py.pool=new xe.A(Py,{maxSize:1e3}),ot.A.register("LayoutProxy",Py);let Vy=class{addNode(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t&&(e._activeParentLayoutConstraint=this),e.boundsProperty.lazyLink(this._updateLayoutListener),e.visibleProperty.lazyLink(this._updateLayoutListener),ar(e)&&(e.minimumWidthProperty.lazyLink(this._updateLayoutListener),e.isWidthResizableProperty.lazyLink(this._updateLayoutListener)),lr(e)&&(e.minimumHeightProperty.lazyLink(this._updateLayoutListener),e.isHeightResizableProperty.lazyLink(this._updateLayoutListener)),this._listenedNodes.add(e)}removeNode(e){e._activeParentLayoutConstraint===this&&(e._activeParentLayoutConstraint=null),e.boundsProperty.unlink(this._updateLayoutListener),e.visibleProperty.unlink(this._updateLayoutListener),ar(e)&&(e.minimumWidthProperty.unlink(this._updateLayoutListener),e.isWidthResizableProperty.unlink(this._updateLayoutListener)),lr(e)&&(e.minimumHeightProperty.unlink(this._updateLayoutListener),e.isHeightResizableProperty.unlink(this._updateLayoutListener)),this._listenedNodes.delete(e)}layout(){}get isLocked(){return this._layoutLockCount>0}lock(){this._layoutLockCount++}unlock(){this._layoutLockCount--}validateLocalPreferredWidth(e){0}validateLocalPreferredHeight(e){0}validateLocalPreferredSize(e){0}updateLayout(){if(this.isLocked)this._layoutAttemptDuringLock=!0;else{this.lock();do{this._layoutAttemptDuringLock=!1,this.layout()}while(this._layoutAttemptDuringLock);this.unlock()}}updateLayoutAutomatically(){this._enabled&&this.updateLayout()}createLayoutProxy(e){const t=e.getTrails(e=>e===this.ancestorNode);return 1===t.length?Py.pool.create(t[0].removeAncestor()):null}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,this.updateLayoutAutomatically())}dispose(){const e=[...this._listenedNodes.keys()];for(let t=0;te.isConnected()&&e.proxy.bounds.isValid()&&(!this.excludeInvisible||e.node.visible))}get excludeInvisible(){return this._excludeInvisible}set excludeInvisible(e){this._excludeInvisible!==e&&(this._excludeInvisible=e,this.updateLayoutAutomatically())}setProxyPreferredSize(e,t,i){t[e.preferredSize]=i}setProxyMinSide(e,t,i){Math.abs(t[e.minSide]-i)>1e-9&&(t[e.minSide]=i)}setProxyOrigin(e,t,i){Math.abs(t[e.coordinate]-i)>1e-9&&(t[e.coordinate]=i)}dispose(){this.preferredWidthProperty.unlink(this._updateLayoutListener),this.preferredHeightProperty.unlink(this._updateLayoutListener),this.layoutOriginProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t){const i=(0,o.Ay)()({preferredWidthProperty:new g.A(null),preferredHeightProperty:new g.A(null),minimumWidthProperty:new g.A(null),minimumHeightProperty:new g.A(null),layoutOriginProperty:new g.A(De.A.ZERO)},t);super(e),this._excludeInvisible=!0,this.layoutBoundsProperty=new h.A(Me.NOTHING,{valueComparisonStrategy:"equalsFunction"}),this.preferredWidthProperty=i.preferredWidthProperty,this.preferredHeightProperty=i.preferredHeightProperty,this.minimumWidthProperty=i.minimumWidthProperty,this.minimumHeightProperty=i.minimumHeightProperty,this.layoutOriginProperty=i.layoutOriginProperty,this.preferredWidthProperty.lazyLink(this._updateLayoutListener),this.preferredHeightProperty.lazyLink(this._updateLayoutListener),this.layoutOriginProperty.lazyLink(this._updateLayoutListener)}};ot.A.register("NodeLayoutConstraint",wy);const vy=[...cy,"spacing","lineSpacing","justify","justifyLines","wrap","excludeInvisible"];let Ey=class e extends(uy(wy)){updateSeparatorVisibility(){let e=0;for(;ee;i--){const e=this.cells[i];e._isSeparator?(e.node.visible=t,t=!1):e.node.visible&&e.node.boundsProperty.value.isValid()&&(t=!0)}}layout(){super.layout();const e=this._orientation,t=this._orientation.opposite;this.updateSeparatorVisibility();const i=this.filterLayoutCells(this.cells);if(this.displayedCells=i,!i.length)return this.layoutBoundsProperty.value=Me.NOTHING,this.minimumWidthProperty.value=null,void(this.minimumHeightProperty.value=null);let n=this.getPreferredProperty(e).value;const s=this.getPreferredProperty(t).value,r=Math.max(...i.map(t=>t.getMinimumSize(e)||0));r>(n||Number.POSITIVE_INFINITY)&&(n=r);const o=[];if(this.wrap){let t=[],s=n||Number.POSITIVE_INFINITY;for(;i.length;){const r=i.shift(),a=r.getMinimumSize(e);0===t.length?(t.push(r),s-=a):this.spacing+a<=s+1e-7?(t.push(r),s-=this.spacing+a):(o.push(my.pool.create(e,t)),s=n||Number.POSITIVE_INFINITY,t=[r],s-=a)}t.length&&o.push(my.pool.create(e,t))}else o.push(my.pool.create(e,i));o.forEach(e=>{e.cells.forEach(i=>{if(e.min=Math.max(e.min,i.getMinimumSize(t)),e.max=Math.min(e.max,i.getMaximumSize(t)),i.effectiveAlign===sy.ORIGIN){const n=i.getOriginBounds();e.minOrigin=Math.min(n[t.minCoordinate],e.minOrigin),e.maxOrigin=Math.max(n[t.maxCoordinate],e.maxOrigin)}}),isFinite(e.minOrigin)&&isFinite(e.maxOrigin)?e.size=Math.max(e.min,e.maxOrigin-e.minOrigin):e.size=e.min});const a=Math.max(...o.map(e=>e.getMinimumSize(this.spacing))),l=_.sum(o.map(e=>e.size))+(o.length-1)*this.lineSpacing,h=this.wrap?r:a,c=Math.max(a,n||0),d=Math.max(l,s||0),u=this.layoutOriginProperty.value[e.coordinate],p=this.layoutOriginProperty.value[e.opposite.coordinate];o.forEach(t=>{const i=_.sum(t.cells.map(t=>t.getMinimumSize(e))),n=this.spacing*(t.cells.length-1);let s,r=c-i-n;for(t.cells.forEach(t=>{t.size=t.getMinimumSize(e)});r>1e-7&&(s=t.cells.filter(t=>0!==t.effectiveGrow&&t.sizee.effectiveGrow)),i=Math.min(Math.min(...s.map(t=>(t.getMaximumSize(e)-t.size)/t.effectiveGrow)),r/t);s.forEach(e=>{e.size+=i*e.effectiveGrow}),r-=i*t}const o=this._justify.spacingFunctionFactory(r,t.cells.length);let a=u;t.cells.forEach((t,i)=>{a+=o(i),i>0&&(a+=this.spacing),t.reposition(e,t.size,a,!0,0,t.effectiveCellAlign),a+=t.size})});const m=d-l,g=(o[0].hasOrigin()?o[0].minOrigin:0)+p;let A=g;if(null===this._justifyLines)o.forEach(e=>{e.size+=m/o.length}),o.forEach(e=>{e.position=A,A+=e.size+this.lineSpacing});else{const e=this._justifyLines.spacingFunctionFactory(m,o.length);o.forEach((t,i)=>{A+=e(i),t.position=A,A+=t.size+this.lineSpacing})}o.forEach(e=>e.cells.forEach(i=>{i.reposition(t,e.size,e.position,i.effectiveStretch,-e.minOrigin,i.effectiveAlign)}));const y=u,f=u+c,b=g,P=g+d;this.layoutBoundsProperty.value=Me.oriented(e,y,b,f,P),this.minimumWidthProperty.value=e===Ie.HORIZONTAL?h:l,this.minimumHeightProperty.value=e===Ie.HORIZONTAL?l:h,this.finishedLayoutEmitter.emit(),o.forEach(e=>e.clean())}get justify(){const e=yy.internalToJustify(this._orientation,this._justify);return e}set justify(e){const t=yy.justifyToInternal(this._orientation,e);this._justify!==t&&(this._justify=t,this.updateLayoutAutomatically())}get justifyLines(){if(null===this._justifyLines)return null;{const e=yy.internalToJustify(this._orientation,this._justifyLines);return e}}set justifyLines(e){const t=null===e?null:yy.justifyToInternal(this._orientation.opposite,e);this._justifyLines!==t&&(this._justifyLines=t,this.updateLayoutAutomatically())}get wrap(){return this._wrap}set wrap(e){this._wrap!==e&&(this._wrap=e,this.updateLayoutAutomatically())}get spacing(){return this._spacing}set spacing(e){this._spacing!==e&&(this._spacing=e,this.updateLayoutAutomatically())}get lineSpacing(){return this._lineSpacing}set lineSpacing(e){this._lineSpacing!==e&&(this._lineSpacing=e,this.updateLayoutAutomatically())}insertCell(e,t){t.orientation=this.orientation,this.cells.splice(e,0,t),this.addNode(t.node),t.changedEmitter.addListener(this._updateLayoutListener),this.updateLayoutAutomatically()}removeCell(e){(0,d.A)(this.cells,e),this.removeNode(e.node),e.changedEmitter.removeListener(this._updateLayoutListener),this.updateLayoutAutomatically()}getCellQuantity(){return this.cells.length}reorderCells(e,t,i){this.cells.splice(t,i-t+1,...e),this.updateLayoutAutomatically()}getPreferredProperty(e){return e===Ie.HORIZONTAL?this.preferredWidthProperty:this.preferredHeightProperty}dispose(){this.lock(),this.cells.forEach(e=>this.removeCell(e)),this.displayedCells=[],super.dispose(),this.unlock()}static create(t,i){return new e(t,i)}constructor(e,t){super(e,t),this.cells=[],this._justify=yy.SPACE_BETWEEN,this._justifyLines=null,this._wrap=!1,this._spacing=0,this._lineSpacing=0,this.displayedCells=[],this.setConfigToBaseDefault(),this.mutateConfigurable(t),$A(this,vy,t),this.changedEmitter.addListener(this._updateLayoutListener),this.orientationChangedEmitter.addListener(()=>this.cells.forEach(e=>{e.orientation=this.orientation}))}};ot.A.register("FlowConstraint",Ey);let Sy=class e{get(e){return(0,ze.Ay)(this._values.includes(e)),(0,ze.Ay)(this._map.has(e)),this._map.get(e)}set(e,t){(0,ze.Ay)(this._values.includes(e)),this._map.set(e,t)}map(t){return new e(this._enumeration,e=>t(this.get(e),e))}forEach(e){this._values.forEach(t=>e(this.get(t),t))}values(){return this._values.map(e=>this.get(e))}constructor(e,t){this._map=new Map,this._enumeration=e,this._values=e.enumeration.values,this._values.forEach(e=>{(0,ze.Ay)(!this._map.has(e),"Enumeration key override problem"),this._map.set(e,t(e))})}};Te.A.register("EnumerationMap",Sy);const Ty=Sy;let Cy=class e extends Ty{get horizontal(){return this.get(Ie.HORIZONTAL)}set horizontal(e){this.set(Ie.HORIZONTAL,e)}get vertical(){return this.get(Ie.VERTICAL)}set vertical(e){this.set(Ie.VERTICAL,e)}with(t,i){return new e(t===Ie.HORIZONTAL?i:this.horizontal,t===Ie.VERTICAL?i:this.vertical)}static create(t){return new e(t(Ie.HORIZONTAL),t(Ie.VERTICAL))}map(t){return new e(t(this.horizontal,Ie.HORIZONTAL),t(this.vertical,Ie.VERTICAL))}constructor(e,t){super(Ie,i=>i===Ie.HORIZONTAL?e:t)}};Te.A.register("OrientationPair",Cy);const Iy=Cy;let xy=class extends g.A{update(){const e=[],t=new Set,i=new Xi(this.leafNode),n=this.rootNode;!function s(){const r=i.rootNode();t.add(r),r===n&&e.push(i.copy()),r.parents.forEach(e=>{i.addAncestor(e),s(),i.removeAncestor()})}(),t.forEach(e=>{this.listenedNodeSet.has(e)||this.addNodeListener(e)}),this.listenedNodeSet.forEach(e=>{t.has(e)||this.removeNodeListener(e)});const s=this.value;let r=s.length===e.length;if(r)for(let o=0;othis.removeNodeListener(e)),super.dispose()}constructor(e,t){super([]),this.listenedNodeSet=new Set,this.rootNode=e,this.leafNode=t,this._trailUpdateListener=this.update.bind(this),this.update()}};ot.A.register("TrailsBetweenProperty",xy);let Dy=class extends ye{dispose(){this.trailsBetweenProperty.dispose(),this.transformTracker&&this.transformTracker.dispose(),super.dispose()}constructor(e,t,i){const n=new xy(e,t);super([n],e=>1===e.length?Py.pool.create(e[0].copy().removeAncestor()):null),this.transformTracker=null,this.trailsBetweenProperty=n,this.lazyLink((e,t)=>{t&&t.dispose()});const s=null==i?void 0:i.onTransformChange;s&&this.link(t=>{this.transformTracker&&(this.transformTracker.dispose(),this.transformTracker=null),t&&(this.transformTracker=new Hs(t.trail.copy().addAncestor(e)),this.transformTracker.addListener(s))})}};ot.A.register("LayoutProxyProperty",Dy);let ky=class{onLayoutOptionsChange(){}get node(){return this._node}isConnected(){return null!==this._proxy}get proxy(){return this._proxy}isSizable(e){return e===Ie.HORIZONTAL?this.proxy.widthSizable:this.proxy.heightSizable}dispose(){this.layoutProxyProperty&&this.layoutProxyProperty.dispose(),this.node.layoutOptionsChangedEmitter.removeListener(this.layoutOptionsListener)}constructor(e,t,i){i?(this.layoutProxyProperty=null,this._proxy=i):(this._proxy=null,this.layoutProxyProperty=new Dy(e.ancestorNode,t,{onTransformChange:()=>e.updateLayoutAutomatically()}),this.layoutProxyProperty.link(t=>{this._proxy=t,e.updateLayoutAutomatically()})),this._constraint=e,this._node=t,this.layoutOptionsListener=this.onLayoutOptionsChange.bind(this),this.node.layoutOptionsChangedEmitter.addListener(this.layoutOptionsListener)}};ot.A.register("LayoutCell",ky);var My,By,Oy,Ly,Ry,Ny,qy;i(5018);const Fy=new c(!(null==(Oy=window)||null==(By=Oy.phet)||null==(My=By.chipper)?void 0:My.queryParameters)||(null==(qy=window)||null==(Ny=qy.phet)||null==(Ry=Ny.chipper)||null==(Ly=Ry.queryParameters)?void 0:Ly.allowLinks),{tandem:P.A.GENERAL_MODEL.createTandem("allowLinksProperty")});ot.A.register("allowLinksProperty",Fy);const Hy=Fy,Yy=(e,t)=>{const i=(0,o.Ay)()({requiredOnly:!1},t),n=[],s=new LineBreaker(e);s[Symbol.iterator]=()=>({next(){const e=s.nextBreak();return null!==e?{value:e,done:!1}:{done:!0}}});let r=0;for(const o of s){const e=o.position;i.requiredOnly&&!o.required||(r!==e&&n.push(new D(r,e)),r=o.position)}return r"element"===e.type.toLowerCase(),zy=e=>"text"===e.type.toLowerCase(),Wy={scratchText:new Rc(""),himalayaGetAttribute(e,t){if(!t)return null;const i=_.find(t.attributes,t=>t.key===e);return i&&i.value||null},himalayaStyleStringToMap(e){const t=e.split(";"),i={};return t.forEach(e=>{if(e.length>0){const t=e.split(":");i[t[0].trim()]=t[1].trim()}}),i}},Qy=Wy;ot.A.register("RichTextUtils",Wy);const Ky=Wr(e=>class extends e{get isCleanable(){return!0}clean(){const e=this;for(let t=e._children.length-1;t>=0;t--){const i=e._children[t];e.removeChild(i),i.isCleanable&&i.clean()}e.matrix=Et.IDENTITY,e.freeToPool()}});ot.A.register("RichTextCleanable",Ky);const jy=Ky;let Zy=class e extends(jy(Dr)){initialize(e){return this.isLTR=e,this.leftSpacing=0,this.rightSpacing=0,this}addElement(e){const t=this.children.length>0,i=e.width>0,n=e.getScaleVector().x,s=e.leftSpacing*n,r=e.rightSpacing*n;return!(!t&&!i)&&(t?i?(this.isLTR?(e.left=this.localRight+this.rightSpacing+s,this.rightSpacing=r):(e.right=this.localLeft-this.leftSpacing-r,this.leftSpacing=s),this.addChild(e),!0):(this.isLTR?this.rightSpacing+=s+r:this.leftSpacing+=s+r,!1):(this.isLTR?(e.left=0,this.leftSpacing=s,this.rightSpacing=r):(e.right=0,this.leftSpacing=s,this.rightSpacing=r),this.addChild(e),!0))}addExtraBeforeSpacing(e){this.isLTR?this.leftSpacing+=e:this.rightSpacing+=e}freeToPool(){e.pool.freeToPool(this)}constructor(e){super(),this.initialize(e)}};Zy.pool=new xe.A(Zy),ot.A.register("RichTextElement",Zy);const _y=(e,t)=>{const i=he.decode(e);return void 0===t?i:`${t?"‪":"‫"}${i}‬`};let Xy=class e extends(jy(Rc)){initialize(e,t,i,n,s,r,o){let a="";for(;e.startsWith(" ");)a+=" ",e=e.slice(1);let l="";for(;e.endsWith(" ");)l=" ",e=e.slice(0,e.length-1);this.string=_y(e,t),this.boundsMethod=n,this.font=i,this.fill=s,this.stroke=r,this.lineWidth=o;const h=a.length?Qy.scratchText.setString(a).setFont(i).width:0,c=l.length?Qy.scratchText.setString(l).setFont(i).width:0;return this.leftSpacing=t?h:c,this.rightSpacing=t?c:h,this}clean(){super.clean(),this.fill=null,this.stroke=null}fitsIn(e,t,i){return this.width+(t?i?this.leftSpacing:this.rightSpacing:0)<=e}freeToPool(){e.pool.freeToPool(this)}constructor(e,t,i,n,s,r,o){super(""),this.initialize(e,t,i,n,s,r,o)}};function Jy(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Hy.value;const i=phet&&phet.chipper&&phet.chipper.isFuzzEnabled();if(t&&!i){const t=window.open(e,"_blank");t&&t.focus()}}Xy.pool=new xe.A(Xy),ot.A.register("RichTextLeaf",Xy),ot.A.register("openPopup",Jy);const $y=Jy;let ef=class e extends(pA(jy(Dr))){initialize(e,t){return(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])&&super.initialize(),this.innerContent=e,this.voicingNameResponse=e,"function"==typeof t?(this.fireListener=new Lr({fire:t,tandem:P.A.OPT_OUT}),this.addInputListener(this.fireListener),this.setPDOMAttribute("href","#"),this.setPDOMAttribute("target","_self"),this.accessibleInputListener={click:e=>{e.domEvent&&e.domEvent.preventDefault(),t()}},this.addInputListener(this.accessibleInputListener)):(this.fireListener=new Lr({fire:e=>{(null==e?void 0:e.isFromPDOM())&&e.domEvent.preventDefault(),self._linkEventsHandled&&e.handle(),$y(t)},tandem:P.A.OPT_OUT}),this.addInputListener(this.fireListener),this.setPDOMAttribute("href",t),this.setPDOMAttribute("target","_blank"),this.allowLinksListener=e=>{this.visible=e},Hy.link(this.allowLinksListener)),this}clean(){super.clean(),this.fireListener&&(this.removeInputListener(this.fireListener),this.fireListener.dispose()),this.fireListener=null,this.accessibleInputListener&&(this.removeInputListener(this.accessibleInputListener),this.accessibleInputListener=null),this.allowLinksListener&&(Hy.unlink(this.allowLinksListener),this.allowLinksListener=null)}freeToPool(){e.pool.freeToPool(this)}constructor(e,t){super(),this.fireListener=null,this.accessibleInputListener=null,this.allowLinksListener=null,this.initialize(e,t,!1),this.mutate({cursor:"pointer",tagName:"a"})}};ef.pool=new xe.A(ef),ot.A.register("RichTextLink",ef);let tf=class e extends(jy(Dr)){initialize(e){return this.addChild(e),this}clean(){super.clean(),this.removeAllChildren()}fitsIn(e){return this.width<=e}freeToPool(){e.pool.freeToPool(this)}constructor(e){super(),this.leftSpacing=0,this.rightSpacing=0,this.initialize(e)}};tf.pool=new xe.A(tf),ot.A.register("RichTextNode",tf);let nf=class e extends(jy(Dr)){initialize(e){return this.localBounds=new Me(0,0,0,e),this}freeToPool(){e.pool.freeToPool(this)}constructor(e){super(),this.initialize(e)}};nf.pool=new xe.A(nf),ot.A.register("RichTextVerticalSpacer",nf);const sf=nf,rf=himalaya,of=["boundsMethod","font","fill","stroke","lineWidth","subScale","subXSpacing","subYOffset","supScale","supXSpacing","supYOffset","capHeightScale","underlineLineWidth","underlineHeightScale","strikethroughLineWidth","strikethroughHeightScale","linkFill","linkEventsHandled","links","nodes","tags","replaceNewlines","align","leading","lineWrap",Rc.STRING_PROPERTY_NAME,"string"],af=(window.QueryStringMachine&&QueryStringMachine.containsKey("stringTest"),new yc({size:20})),lf=["b","strong","i","em","sub","sup","u","s"],hf="COMPLETE",cf="INCOMPLETE",df="NONE",uf={"font-family":"family","font-size":"size","font-stretch":"stretch","font-style":"style","font-variant":"variant","font-weight":"weight","line-height":"lineHeight"},pf=Object.keys(uf);["color"].concat(pf);let mf=class e extends(jo(Dr)){onStringPropertyChange(){this.rebuildRichText()}setStringProperty(t){return this._stringProperty.setTargetProperty(t,this,e.STRING_PROPERTY_TANDEM_NAME)}set stringProperty(e){this.setStringProperty(e)}get stringProperty(){return this.getStringProperty()}getStringProperty(){return this._stringProperty}getPhetioMouseHitTarget(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return"string"===uc.value?this.getStringPropertyPhetioMouseHitTarget(e):super.getPhetioMouseHitTarget(e)}getStringPropertyPhetioMouseHitTarget(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=this._stringProperty.getTargetProperty();return t instanceof b.A?t.getPhetioMouseHitTarget(e):"phetioNotSelectable"}initializePhetioObject(t,i){const n=(0,o.Ay)()({},i),s=this.isPhetioInstrumented();super.initializePhetioObject(t,n),P.A.PHET_IO_ENABLED&&!s&&this.isPhetioInstrumented()&&this._stringProperty.initializePhetio(this,e.STRING_PROPERTY_TANDEM_NAME,()=>new lc(this.string,(0,o.sF)({phetioReadOnly:!0,tandem:this.tandem.createTandem(e.STRING_PROPERTY_TANDEM_NAME),phetioDocumentation:"Property for the displayed text"},n.stringPropertyOptions)))}rebuildRichText(){const e="stretch"===this._lineWrap;this.widthSizable=e,this.pendingMinimumWidth=0,this.needPendingMinimumWidth=e;const t="stretch"===this._lineWrap?this.localPreferredWidth:this._lineWrap;if(this.freeChildrenToPool(),""===this.string)return void this.appendEmptyLeaf();let i,n=this.string.replace(/\u202a/g,'').replace(/\u202b/g,'').replace(/\u202c/g,"");this._replaceNewlines&&(n=n.replace(/\n/g,"
"));try{i=rf.parse(n)}catch(o){i=rf.parse("INVALID TRANSLATION")}this._linkItems.length=0;const s=null===t?Number.POSITIVE_INFINITY:t;let r=Zy.pool.create(!0);for(this._hasAddedLeafToLine=!1;i.length;){const e=i[0],t=r.bounds.isValid()?r.width:0,n=this.appendElement(r,e,this._font,this._fill,!0,s-t,1);n!==df&&(r.bounds.isValid()?this.appendLine(r):this.appendLine(sf.pool.create(Qy.scratchText.setString("X").setFont(this._font).height)),r=Zy.pool.create(!0),this._hasAddedLeafToLine=!1),n!==cf&&i.splice(0,1)}for(r.bounds.isValid()&&this.appendLine(r),0===this.lineContainer.getChildrenCount()&&this.appendEmptyLeaf(),this.alignLines();this._linkItems.length;)(()=>{const e=this._linkItems[0].element,t=this._linkItems[0].href;let i;const n=[];for(i=this._linkItems.length-1;i>=0;i--){const t=this._linkItems[i];t.element===e&&(n.push(t.node),this._linkItems.splice(i,1))}const s=ef.pool.create(e.innerContent,t);for(this.lineContainer.addChild(s),i=0;i{const t=i.content.slice(e.min,e.max),o=Xy.pool.create(t,r,n,this._boundsMethod,s,this._stroke,this._lineWidth),l=o.width*a;return o.dispose(),l})))),!l.fitsIn(c,this._hasAddedLeafToLine,r)){const e=Gy(i.content),t=e=>0===e.length?"":i.content.slice(e[0].min,e[e.length-1].max);if(this._hasAddedLeafToLine||e.length>1){const o=[];let a=!1;for(o.unshift(e.pop());e.length;){if(l.clean(),l=Xy.pool.create(t(e),r,n,this._boundsMethod,s,this._stroke,this._lineWidth),l.fitsIn(c,this._hasAddedLeafToLine,r)||!(this._hasAddedLeafToLine||e.length>1)){a=!0;break}o.unshift(e.pop())}if(!a)return l.clean(),cf;h=cf,i.content=t(o)}}this._hasAddedLeafToLine=!0}else if(Uy(i)){if("br"===i.tagName)return hf;if("span"===i.tagName){const e=Qy.himalayaGetAttribute("dir",i);e&&(r="ltr"===e)}if("node"===i.tagName){const e=Qy.himalayaGetAttribute("id",i),t=e&&this._nodes[e]||null;if(!t)return h;{if(l=tf.pool.create(t),this._hasAddedLeafToLine&&!l.fitsIn(c))return l.clean(),cf;const e=Qy.himalayaGetAttribute("align",i);if("center"===e||"top"===e||"bottom"===e){const t=Qy.scratchText.setString("Test").setFont(n).bounds;"center"===e?l.centerY=t.centerY:"top"===e?l.top=t.top:"bottom"===e&&(l.bottom=t.bottom)}}this._hasAddedLeafToLine=!0}else l=Zy.pool.create(r);const t=Qy.himalayaGetAttribute("style",i);if(t){const e=Qy.himalayaStyleStringToMap(t);e.color&&(s=new jr(e.color));const i={};for(let t=0;te.node!==l),l.clean())}return h}setString(e){return e=""+e,this._stringProperty.set(e),this}set string(e){this.setString(e)}get string(){return this.getString()}getString(){return this._stringProperty.value}setBoundsMethod(e){return e!==this._boundsMethod&&(this._boundsMethod=e,this.rebuildRichText()),this}set boundsMethod(e){this.setBoundsMethod(e)}get boundsMethod(){return this.getBoundsMethod()}getBoundsMethod(){return this._boundsMethod}setFont(e){return this._font!==e&&(this._font=e,this.rebuildRichText()),this}set font(e){this.setFont(e)}get font(){return this.getFont()}getFont(){return this._font}setFill(e){return this._fill!==e&&(this._fill=e,this.rebuildRichText()),this}set fill(e){this.setFill(e)}get fill(){return this.getFill()}getFill(){return this._fill}setStroke(e){return this._stroke!==e&&(this._stroke=e,this.rebuildRichText()),this}set stroke(e){this.setStroke(e)}get stroke(){return this.getStroke()}getStroke(){return this._stroke}setLineWidth(e){return this._lineWidth!==e&&(this._lineWidth=e,this.rebuildRichText()),this}set lineWidth(e){this.setLineWidth(e)}get lineWidth(){return this.getLineWidth()}getLineWidth(){return this._lineWidth}setSubScale(e){return this._subScale!==e&&(this._subScale=e,this.rebuildRichText()),this}set subScale(e){this.setSubScale(e)}get subScale(){return this.getSubScale()}getSubScale(){return this._subScale}setSubXSpacing(e){return this._subXSpacing!==e&&(this._subXSpacing=e,this.rebuildRichText()),this}set subXSpacing(e){this.setSubXSpacing(e)}get subXSpacing(){return this.getSubXSpacing()}getSubXSpacing(){return this._subXSpacing}setSubYOffset(e){return this._subYOffset!==e&&(this._subYOffset=e,this.rebuildRichText()),this}set subYOffset(e){this.setSubYOffset(e)}get subYOffset(){return this.getSubYOffset()}getSubYOffset(){return this._subYOffset}setSupScale(e){return this._supScale!==e&&(this._supScale=e,this.rebuildRichText()),this}set supScale(e){this.setSupScale(e)}get supScale(){return this.getSupScale()}getSupScale(){return this._supScale}setSupXSpacing(e){return this._supXSpacing!==e&&(this._supXSpacing=e,this.rebuildRichText()),this}set supXSpacing(e){this.setSupXSpacing(e)}get supXSpacing(){return this.getSupXSpacing()}getSupXSpacing(){return this._supXSpacing}setSupYOffset(e){return this._supYOffset!==e&&(this._supYOffset=e,this.rebuildRichText()),this}set supYOffset(e){this.setSupYOffset(e)}get supYOffset(){return this.getSupYOffset()}getSupYOffset(){return this._supYOffset}setCapHeightScale(e){return this._capHeightScale!==e&&(this._capHeightScale=e,this.rebuildRichText()),this}set capHeightScale(e){this.setCapHeightScale(e)}get capHeightScale(){return this.getCapHeightScale()}getCapHeightScale(){return this._capHeightScale}setUnderlineLineWidth(e){return this._underlineLineWidth!==e&&(this._underlineLineWidth=e,this.rebuildRichText()),this}set underlineLineWidth(e){this.setUnderlineLineWidth(e)}get underlineLineWidth(){return this.getUnderlineLineWidth()}getUnderlineLineWidth(){return this._underlineLineWidth}setUnderlineHeightScale(e){return this._underlineHeightScale!==e&&(this._underlineHeightScale=e,this.rebuildRichText()),this}set underlineHeightScale(e){this.setUnderlineHeightScale(e)}get underlineHeightScale(){return this.getUnderlineHeightScale()}getUnderlineHeightScale(){return this._underlineHeightScale}setStrikethroughLineWidth(e){return this._strikethroughLineWidth!==e&&(this._strikethroughLineWidth=e,this.rebuildRichText()),this}set strikethroughLineWidth(e){this.setStrikethroughLineWidth(e)}get strikethroughLineWidth(){return this.getStrikethroughLineWidth()}getStrikethroughLineWidth(){return this._strikethroughLineWidth}setStrikethroughHeightScale(e){return this._strikethroughHeightScale!==e&&(this._strikethroughHeightScale=e,this.rebuildRichText()),this}set strikethroughHeightScale(e){this.setStrikethroughHeightScale(e)}get strikethroughHeightScale(){return this.getStrikethroughHeightScale()}getStrikethroughHeightScale(){return this._strikethroughHeightScale}setLinkFill(e){return this._linkFill!==e&&(this._linkFill=e,this.rebuildRichText()),this}set linkFill(e){this.setLinkFill(e)}get linkFill(){return this.getLinkFill()}getLinkFill(){return this._linkFill}setLinkEventsHandled(e){return this._linkEventsHandled!==e&&(this._linkEventsHandled=e,this.rebuildRichText()),this}set linkEventsHandled(e){this.setLinkEventsHandled(e)}get linkEventsHandled(){return this.getLinkEventsHandled()}getLinkEventsHandled(){return this._linkEventsHandled}setLinks(e){return this._links!==e&&(this._links=e,this.rebuildRichText()),this}getLinks(){return this._links}set links(e){this.setLinks(e)}get links(){return this.getLinks()}setNodes(e){return this._nodes!==e&&(this._nodes=e,this.rebuildRichText()),this}getNodes(){return this._nodes}set nodes(e){this.setNodes(e)}get nodes(){return this.getNodes()}setTags(e){return this._tags!==e&&(this._tags=e,this.rebuildRichText()),this}getTags(){return this._tags}set tags(e){this.setTags(e)}get tags(){return this.getTags()}setReplaceNewlines(e){return this._replaceNewlines!==e&&(this._replaceNewlines=e,this.rebuildRichText()),this}set replaceNewlines(e){this.setReplaceNewlines(e)}get replaceNewlines(){return this.getReplaceNewlines()}getReplaceNewlines(){return this._replaceNewlines}setAlign(e){return this._align!==e&&(this._align=e,this.rebuildRichText()),this}set align(e){this.setAlign(e)}get align(){return this.getAlign()}getAlign(){return this._align}setLeading(e){return this._leading!==e&&(this._leading=e,this.rebuildRichText()),this}set leading(e){this.setLeading(e)}get leading(){return this.getLeading()}getLeading(){return this._leading}setLineWrap(e){return this._lineWrap!==e&&(this._lineWrap=e,this.rebuildRichText()),this}set lineWrap(e){this.setLineWrap(e)}get lineWrap(){return this.getLineWrap()}getLineWrap(){return this._lineWrap}mutate(e){return super.mutate(e)}static stringWithFont(e,t){return`${e}`}static himalayaElementToString(t){if(zy(t))return _y(t.content);if(Uy(t)){const i=t.children.map(t=>e.himalayaElementToString(t)).join(""),n=Qy.himalayaGetAttribute("dir",t);return"ltr"===n||"rtl"===n?Qe.A.wrapDirection(i,n):i}return""}static himalayaElementToAccessibleString(t){if(zy(t))return _y(t.content);if(Uy(t)){let i=t.children.map(t=>e.himalayaElementToAccessibleString(t)).join("");const n=Qy.himalayaGetAttribute("dir",t);return"ltr"!==n&&"rtl"!==n||(i=Qe.A.wrapDirection(i,n)),_.includes(lf,t.tagName)?`<${t.tagName}>${i}`:i}return""}static getAccessibleStringProperty(t){return new ch([t],t=>{const i=rf.parse(t);let n="";return i.forEach(t=>{n+=e.himalayaElementToAccessibleString(t)}),n})}constructor(t,i){const n=(0,o.Ay)()({fill:"#000000",tandemNameSuffix:"Text",phetioType:e.RichTextIO,phetioVisiblePropertyInstrumented:!1},i);"string"==typeof t||"number"==typeof t?n.string=t:n.stringProperty=t,super(),this._font=af,this._boundsMethod="hybrid",this._fill="#000000",this._stroke=null,this._lineWidth=1,this._subScale=.75,this._subXSpacing=0,this._subYOffset=0,this._supScale=.75,this._supXSpacing=0,this._supYOffset=0,this._capHeightScale=.75,this._underlineLineWidth=1,this._underlineHeightScale=.15,this._strikethroughLineWidth=1,this._strikethroughHeightScale=.3,this._linkFill="rgb(27,0,241)",this._linkEventsHandled=!1,this._links={},this._nodes={},this._tags={},this._replaceNewlines=!1,this._align="left",this._leading=0,this._lineWrap=null,this._linkItems=[],this._hasAddedLeafToLine=!1,this.needPendingMinimumWidth=!1,this.pendingMinimumWidth=0,this._stringProperty=new dt("",!0,this.onStringPropertyChange.bind(this)),this.lineContainer=new Dr({}),this.addChild(this.lineContainer),this.rebuildRichText(),this.localPreferredWidthProperty.lazyLink(()=>this.rebuildRichText()),this.mutate(n)}};mf.STRING_PROPERTY_TANDEM_NAME=Rc.STRING_PROPERTY_TANDEM_NAME,mf.prototype._mutatorKeys=of.concat(Dr.prototype._mutatorKeys),ot.A.register("RichText",mf),mf.RichTextIO=new w.A("RichTextIO",{valueType:mf,supertype:Dr.NodeIO,documentation:"The PhET-iO Type for the scenery RichText node"});let gf=class extends ba{constructor(e,t,i,n,s,r){let o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Et.IDENTITY;const a=document.createElement("img");new Dr({scale:t,children:[e]}).toCanvas((function(e,t,i,n,s){a.src=e.toDataURL()}),-i*t,-n*t,s*t,r*t),super(a),this.setTransformMatrix(o.timesMatrix(Et.scaling(1/t)))}};ot.A.register("NodePattern",gf);let Af=class extends ky{reposition(e,t,i,n,s,r){const o=n&&this.isSizable(e)?t:this.getMinimumSize(e);this.attemptPreferredSize(e,o),r===sy.ORIGIN?this.positionOrigin(e,i+s):this.positionStart(e,i+(t-this.getCellBounds()[e.size])*r.padRatio);const a=this.getCellBounds();return this.lastAvailableBounds[e.minCoordinate]=i,this.lastAvailableBounds[e.maxCoordinate]=i+t,this.lastUsedBounds.set(a),a}get effectiveLeftMargin(){return null!==this._leftMargin?this._leftMargin:this._marginConstraint._leftMargin}get effectiveRightMargin(){return null!==this._rightMargin?this._rightMargin:this._marginConstraint._rightMargin}get effectiveTopMargin(){return null!==this._topMargin?this._topMargin:this._marginConstraint._topMargin}get effectiveBottomMargin(){return null!==this._bottomMargin?this._bottomMargin:this._marginConstraint._bottomMargin}getEffectiveMinMargin(e){return e===Ie.HORIZONTAL?this.effectiveLeftMargin:this.effectiveTopMargin}getEffectiveMaxMargin(e){return e===Ie.HORIZONTAL?this.effectiveRightMargin:this.effectiveBottomMargin}get effectiveMinContentWidth(){return null!==this._minContentWidth?this._minContentWidth:this._marginConstraint._minContentWidth}get effectiveMinContentHeight(){return null!==this._minContentHeight?this._minContentHeight:this._marginConstraint._minContentHeight}getEffectiveMinContent(e){return e===Ie.HORIZONTAL?this.effectiveMinContentWidth:this.effectiveMinContentHeight}get effectiveMaxContentWidth(){return null!==this._maxContentWidth?this._maxContentWidth:this._marginConstraint._maxContentWidth}get effectiveMaxContentHeight(){return null!==this._maxContentHeight?this._maxContentHeight:this._marginConstraint._maxContentHeight}getEffectiveMaxContent(e){return e===Ie.HORIZONTAL?this.effectiveMaxContentWidth:this.effectiveMaxContentHeight}getMinimumSize(e){return this.getEffectiveMinMargin(e)+Math.max(this.proxy.getMinimum(e),this.getEffectiveMinContent(e)||0)+this.getEffectiveMaxMargin(e)}getMaximumSize(e){return this.getEffectiveMinMargin(e)+(this.getEffectiveMaxContent(e)||Number.POSITIVE_INFINITY)+this.getEffectiveMaxMargin(e)}attemptPreferredSize(e,t){if(this.proxy[e.sizable]){const i=this.getMinimumSize(e),n=this.getMaximumSize(e);let s=(t=(0,et.q)(t,i,n))-this.getEffectiveMinMargin(e)-this.getEffectiveMaxMargin(e);const r=this.proxy.getMax(e);null!==r&&(s=Math.min(r,s)),this._marginConstraint.setProxyPreferredSize(e,this.proxy,s),this.preferredSizeSet.set(e,!0)}}unsetPreferredSize(e){this.proxy[e.sizable]&&this._marginConstraint.setProxyPreferredSize(e,this.proxy,null)}positionStart(e,t){const i=this.getEffectiveMinMargin(e)+t;this._marginConstraint.setProxyMinSide(e,this.proxy,i)}positionOrigin(e,t){this._marginConstraint.setProxyOrigin(e,this.proxy,t)}getOriginBounds(){return this.getCellBounds().shiftedXY(-this.proxy.x,-this.proxy.y)}getCellBounds(){return this.proxy.bounds.withOffsets(this.effectiveLeftMargin,this.effectiveTopMargin,this.effectiveRightMargin,this.effectiveBottomMargin)}dispose(){Ie.enumeration.values.forEach(e=>{this.preferredSizeSet.get(e)&&this.unsetPreferredSize(e)}),super.dispose()}static createHelperNode(e,t,i){const n=new Dr,s=Ui.union(e.map(e=>Ui.bounds(e.lastAvailableBounds))),r=Ui.union(e.map(e=>Ui.bounds(e.lastUsedBounds))),o=Ui.union(e.map(e=>Ui.bounds(e.proxy.bounds))),a=Ui.bounds(t).shapeDifference(s),l=s.shapeDifference(r),h=r.shapeDifference(o),c=(e,t,i)=>{const n=new Rc(e,{font:new yc({size:6,family:"monospace"}),fill:t}),s=Va.bounds(n.bounds,{fill:i,children:[n]});return new gf(s,4,Math.floor(s.left),Math.ceil(s.top+1),Math.floor(s.width),Math.floor(s.height-2),Et.rotation2(-Math.PI/4))};return n.addChild(new ga(a,{fill:c("spacing","#000","#fff"),opacity:.6})),n.addChild(new ga(l,{fill:c("empty","#aaa","#000"),opacity:.6})),n.addChild(new ga(h,{fill:c("margin","#600","#f00"),opacity:.6})),n.addChild(Va.bounds(t,{stroke:"white",lineDash:[2,2],lineDashOffset:2,lineWidth:.4})),n.addChild(Va.bounds(t,{stroke:"black",lineDash:[2,2],lineWidth:.4})),e.forEach(e=>{n.addChild(Va.bounds(e.getCellBounds(),{stroke:"rgba(0,255,0,1)",lineWidth:.4}))}),e.forEach(e=>{n.addChild(Va.bounds(e.proxy.bounds,{stroke:"rgba(255,0,0,1)",lineWidth:.4}))}),e.forEach(e=>{const t=e.getCellBounds(),s=new Or({tandem:P.A.OPT_OUT});n.addChild(Va.bounds(t,{inputListeners:[s]}));let r=i(e);e.effectiveLeftMargin&&(r+=`leftMargin: ${e.effectiveLeftMargin}\n`),e.effectiveRightMargin&&(r+=`rightMargin: ${e.effectiveRightMargin}\n`),e.effectiveTopMargin&&(r+=`topMargin: ${e.effectiveTopMargin}\n`),e.effectiveBottomMargin&&(r+=`bottomMargin: ${e.effectiveBottomMargin}\n`),e.effectiveMinContentWidth&&(r+=`minContentWidth: ${e.effectiveMinContentWidth}\n`),e.effectiveMinContentHeight&&(r+=`minContentHeight: ${e.effectiveMinContentHeight}\n`),e.effectiveMaxContentWidth&&(r+=`maxContentWidth: ${e.effectiveMaxContentWidth}\n`),e.effectiveMaxContentHeight&&(r+=`maxContentHeight: ${e.effectiveMaxContentHeight}\n`),r+=`layoutOptions: ${JSON.stringify(e.node.layoutOptions,null,2).replace(/ /g," ")}\n`;const o=new mf(r.trim().replace(/\n/g,"
"),{font:new yc({size:12})}),a=Va.bounds(o.bounds.dilated(3),{fill:"rgba(255,255,255,0.8)",children:[o],leftTop:t.leftTop});n.addChild(a),s.isOverProperty.link(e=>{a.visible=e})}),n}constructor(e,t,i){super(e,t,i),this.preferredSizeSet=new Iy(!1,!1),this.lastAvailableBounds=Me.NOTHING.copy(),this.lastUsedBounds=Me.NOTHING.copy(),this._marginConstraint=e}};ot.A.register("MarginLayoutCell",Af);let yf=class extends(uy(Af)){get effectiveAlign(){return null!==this._align?this._align:this.flowConstraint._align}get effectiveCellAlign(){return null!==this._cellAlign?this._cellAlign:this.flowConstraint._cellAlign}get effectiveStretch(){return null!==this._stretch?this._stretch:this.flowConstraint._stretch}get effectiveGrow(){return null!==this._grow?this._grow:this.flowConstraint._grow}onLayoutOptionsChange(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.node.layoutOptions&&this.setOptions(this.node.layoutOptions),super.onLayoutOptionsChange(),e||this.flowConstraint.updateLayoutAutomatically()}setOptions(e){const t=(0,o.Ay)()({isSeparator:!1},e);this._isSeparator=t.isSeparator,this.setConfigToInherit(t),this.mutateConfigurable(t)}constructor(e,t,i){super(e,t,i),this.size=0,this._isSeparator=!1,this.flowConstraint=e,this.orientation=e.orientation,this.onLayoutOptionsChange(!0)}};ot.A.register("FlowCell",yf);const ff=["resize","layoutOrigin"];let bf=class extends(Jo(Dr)){linkLayoutBounds(){this._constraint.layoutBoundsProperty.link(e=>{this.localBounds=e})}setExcludeInvisibleChildrenFromBounds(e){super.setExcludeInvisibleChildrenFromBounds(e),this._constraint.excludeInvisible=e}setChildren(e){if(this.constraint.isLocked)return super.setChildren(e);const t=this.getChildren();return this.constraint.lock(),super.setChildren(e),this.constraint.unlock(),_.isEqual(t,e)||this.constraint.updateLayoutAutomatically(),this}updateLayout(){this._constraint.updateLayout()}get resize(){return this._constraint.enabled}set resize(e){this._constraint.enabled=e}get layoutOrigin(){return this.layoutOriginProperty.value}set layoutOrigin(e){this.layoutOriginProperty.value=e}get constraint(){return this._constraint}dispose(){this._constraint.dispose(),super.dispose()}constructor(e){super(e),this.layoutOriginProperty=new ph(De.A.ZERO)}};ot.A.register("LayoutNode",bf);const Pf={DISABLED_OPACITY:.45,DEFAULT_COLOR_PROFILE:"default",PROJECTOR_COLOR_PROFILE:"projector"};ot.A.register("SceneryConstants",Pf);const Vf=Pf,wf=[...ff,...vy.filter(e=>"excludeInvisible"!==e),"forward","forwardProperty"],vf={orientation:"horizontal",spacing:0,align:"center",stretch:!1,forward:!0};let Ef=class extends bf{onFlowBoxChildInserted(e,t){const i=new yf(this._constraint,e,this._constraint.createLayoutProxy(e));if(this._cellMap.set(e,i),this.forward)this._constraint.insertCell(t,i);else{const e=this._constraint.getCellQuantity()-t;this._constraint.insertCell(e,i)}}onFlowBoxChildRemoved(e){const t=this._cellMap.get(e);this._cellMap.delete(e),this._constraint.removeCell(t),t.dispose()}onFlowBoxChildrenReordered(e,t){const i=this._children.slice(e,t+1);this.forward||i.reverse(),this._constraint.reorderCells(i.map(e=>this._cellMap.get(e)),e,t)}onFlowBoxChildrenChanged(){this._constraint.updateLayoutAutomatically()}onFlowBoxForwardReverseChanged(){this.onFlowBoxChildrenReordered(0,this._children.length-1),this.onFlowBoxChildrenChanged()}getCell(e){const t=this._cellMap.get(e);return t}get orientation(){return this._constraint.orientation}set orientation(e){this._constraint.orientation=e}get spacing(){return this._constraint.spacing}set spacing(e){this._constraint.spacing=e}get lineSpacing(){return this._constraint.lineSpacing}set lineSpacing(e){this._constraint.lineSpacing=e}get justify(){return this._constraint.justify}set justify(e){this._constraint.justify=e}get justifyLines(){return this._constraint.justifyLines}set justifyLines(e){this._constraint.justifyLines=e}get wrap(){return this._constraint.wrap}set wrap(e){this._constraint.wrap=e}get align(){return this._constraint.align}set align(e){this._constraint.align=e}get stretch(){return this._constraint.stretch}set stretch(e){this._constraint.stretch=e}get grow(){return this._constraint.grow}set grow(e){this._constraint.grow=e}get margin(){return this._constraint.margin}set margin(e){this._constraint.margin=e}get xMargin(){return this._constraint.xMargin}set xMargin(e){this._constraint.xMargin=e}get yMargin(){return this._constraint.yMargin}set yMargin(e){this._constraint.yMargin=e}get leftMargin(){return this._constraint.leftMargin}set leftMargin(e){this._constraint.leftMargin=e}get rightMargin(){return this._constraint.rightMargin}set rightMargin(e){this._constraint.rightMargin=e}get topMargin(){return this._constraint.topMargin}set topMargin(e){this._constraint.topMargin=e}get bottomMargin(){return this._constraint.bottomMargin}set bottomMargin(e){this._constraint.bottomMargin=e}get minContentWidth(){return this._constraint.minContentWidth}set minContentWidth(e){this._constraint.minContentWidth=e}get minContentHeight(){return this._constraint.minContentHeight}set minContentHeight(e){this._constraint.minContentHeight=e}get maxContentWidth(){return this._constraint.maxContentWidth}set maxContentWidth(e){this._constraint.maxContentWidth=e}get maxContentHeight(){return this._constraint.maxContentHeight}set maxContentHeight(e){this._constraint.maxContentHeight=e}setForwardProperty(e){return this._forwardProperty.setTargetProperty(e,this,null)}set forwardProperty(e){this.setForwardProperty(e)}get forwardProperty(){return this.getForwardProperty()}getForwardProperty(){return this._forwardProperty}setForward(e){return this.forwardProperty.set(e),this}set forward(e){this.setForward(e)}get forward(){return this.isForward()}isForward(){return this.forwardProperty.value}dispose(){this._constraint.lock(),this.childInsertedEmitter.removeListener(this.onChildInserted),this.childRemovedEmitter.removeListener(this.onChildRemoved),this.childrenReorderedEmitter.removeListener(this.onChildrenReordered),this.childrenChangedEmitter.removeListener(this.onChildrenChanged),this._forwardProperty.dispose();for(const e of this._cellMap.values())e.dispose();super.dispose()}setOrientation(e){return this.orientation=e,this}getOrientation(){return this.orientation}setSpacing(e){return this.spacing=e,this}getSpacing(){return this.spacing}setAlign(e){return this.align=e,this}getAlign(){return this.align}setResize(e){return this.resize=e,this}isResize(){return this.resize}getHelperNode(){return Af.createHelperNode(this.constraint.displayedCells,this.constraint.layoutBoundsProperty.value,e=>{let t="";const i=Ie.fromLayoutOrientation(e.orientation);return t+=`align: ${sy.internalToAlign(i,e.effectiveAlign)}\n`,t+=`stretch: ${e.effectiveStretch}\n`,t+=`grow: ${e.effectiveGrow}\n`,t})}mutate(e){return e?super.mutate(e):this}constructor(e){const t=(0,o.Ay)()({excludeInvisibleChildrenFromBounds:!0,resize:!0,disabledOpacity:Vf.DISABLED_OPACITY,forward:vf.forward,forwardProperty:null},e);super(),this._cellMap=new Map,this._constraint=new Ey(this,{preferredWidthProperty:this.localPreferredWidthProperty,preferredHeightProperty:this.localPreferredHeightProperty,minimumWidthProperty:this.localMinimumWidthProperty,minimumHeightProperty:this.localMinimumHeightProperty,layoutOriginProperty:this.layoutOriginProperty,orientation:vf.orientation,spacing:vf.spacing,align:vf.align,stretch:vf.stretch,excludeInvisible:!1}),this._forwardProperty=new dt(vf.forward,!1,this.onFlowBoxForwardReverseChanged.bind(this)),this.onChildInserted=this.onFlowBoxChildInserted.bind(this),this.onChildRemoved=this.onFlowBoxChildRemoved.bind(this),this.onChildrenReordered=this.onFlowBoxChildrenReordered.bind(this),this.onChildrenChanged=this.onFlowBoxChildrenChanged.bind(this),this.childInsertedEmitter.addListener(this.onChildInserted),this.childRemovedEmitter.addListener(this.onChildRemoved),this.childrenReorderedEmitter.addListener(this.onChildrenReordered),this.childrenChangedEmitter.addListener(this.onChildrenChanged);const i=_.omit(t,Er),n=_.pick(t,Er);this._constraint.lock(),this.mutate(i),this._constraint.unlock(),this._constraint.updateLayout(),this.mutate(n),this.linkLayoutBounds()}};Ef.DEFAULT_FLOW_BOX_OPTIONS=vf,Ef.prototype._mutatorKeys=[..._o,...wf,...Dr.prototype._mutatorKeys],ot.A.register("FlowBox",Ef);const Sf=["xAlign","yAlign","stretch","xStretch","yStretch","grow","xGrow","yGrow"].concat(ay),Tf=Wr(e=>class extends(hy(e)){mutateConfigurable(e){super.mutateConfigurable(e),(0,u.A)(e,["stretch"],["xStretch","yStretch"]),(0,u.A)(e,["grow"],["xGrow","yGrow"]),$A(this,Sf,e)}setConfigToBaseDefault(){this._xAlign=sy.CENTER,this._yAlign=sy.CENTER,this._xStretch=!1,this._yStretch=!1,this._xGrow=0,this._yGrow=0,super.setConfigToBaseDefault()}setConfigToInherit(e){e&&void 0!==e.xAlign||(this._xAlign=null),e&&void 0!==e.yAlign||(this._yAlign=null),(!e||void 0===e.stretch&&void 0===e.xStretch)&&(this._xStretch=null),(!e||void 0===e.stretch&&void 0===e.yStretch)&&(this._yStretch=null),(!e||void 0===e.grow&&void 0===e.xGrow)&&(this._xGrow=null),(!e||void 0===e.grow&&void 0===e.yGrow)&&(this._yGrow=null),super.setConfigToInherit(e)}get xAlign(){const e=null===this._xAlign?null:this._xAlign.horizontal;return e}set xAlign(e){const t=sy.horizontalAlignToInternal(e);this._xAlign!==t&&(this._xAlign=t,this.changedEmitter.emit())}get yAlign(){const e=null===this._yAlign?null:this._yAlign.vertical;return e}set yAlign(e){const t=sy.verticalAlignToInternal(e);this._yAlign!==t&&(this._yAlign=t,this.changedEmitter.emit())}get grow(){return this._xGrow}set grow(e){this._xGrow===e&&this._yGrow===e||(this._xGrow=e,this._yGrow=e,this.changedEmitter.emit())}get xGrow(){return this._xGrow}set xGrow(e){this._xGrow!==e&&(this._xGrow=e,this.changedEmitter.emit())}get yGrow(){return this._yGrow}set yGrow(e){this._yGrow!==e&&(this._yGrow=e,this.changedEmitter.emit())}get stretch(){return this._xStretch}set stretch(e){this._xStretch===e&&this._yStretch===e||(this._xStretch=e,this._yStretch=e,this.changedEmitter.emit())}get xStretch(){return this._xStretch}set xStretch(e){this._xStretch!==e&&(this._xStretch=e,this.changedEmitter.emit())}get yStretch(){return this._yStretch}set yStretch(e){this._yStretch!==e&&(this._yStretch=e,this.changedEmitter.emit())}constructor(){super(...arguments),this._xAlign=null,this._yAlign=null,this._xStretch=null,this._yStretch=null,this._xGrow=null,this._yGrow=null}});ot.A.register("GridConfigurable",Tf);const Cf=Tf;let If=class e extends py{initialize(e,t,i){return this.index=e,this.cells=t,this.grow=i,this.initializeLayoutLine(),this}freeToPool(){e.pool.freeToPool(this)}clean(){this.cells.length=0,this.freeToPool()}constructor(e,t,i){super(),this.initialize(e,t,i)}};If.pool=new xe.A(If,{defaultArguments:[0,[],0]}),ot.A.register("GridLine",If);const xf=[...Sf,"excludeInvisible","spacing","xSpacing","ySpacing"];let Df=class e extends(Cf(wy)){layout(){super.layout();const e=this.filterLayoutCells([...this.cells]);if(this.displayedCells=e,!e.length)return this.layoutBoundsProperty.value=Me.NOTHING,this.minimumWidthProperty.value=null,this.minimumHeightProperty.value=null,void this.displayedLines.forEach(e=>e.clear());const t=new Iy(0,0),i=new Iy(this.preferredWidthProperty.value,this.preferredHeightProperty.value),n=new Me(0,0,0,0);[Ie.HORIZONTAL,Ie.VERTICAL].forEach(s=>{const r=this._spacing.get(s),o=this.displayedLines.get(s);o.forEach(e=>e.clean()),o.clear();const a=_.sortedUniq(_.sortBy(_.flatten(e.map(e=>e.getIndices(s))))).map(t=>{const i=_.filter(e,e=>e.containsIndex(s,t)),n=Math.max(...i.map(e=>e.getEffectiveGrow(s))),r=If.pool.create(t,i,n);return o.set(t,r),r}),l=new Map(e.map(e=>[e,e.getIndices(s).map(e=>{const t=o.get(e);return t})])),h=e=>l.get(e),c=a.slice(0,-1).map(e=>"number"==typeof r?r:r[e.index]);e.forEach(e=>{if(1===e.size.get(s)){const t=o.get(e.position.get(s));if(t.min=Math.max(t.min,e.getMinimumSize(s)),t.max=Math.min(t.max,e.getMaximumSize(s)),e.getEffectiveAlign(s)===sy.ORIGIN){const i=e.getOriginBounds();t.minOrigin=Math.min(i[s.minCoordinate],t.minOrigin),t.maxOrigin=Math.max(i[s.maxCoordinate],t.maxOrigin)}}});{const t=1e-9,i=e=>_.sum(h(e).map(e=>e.min)),n=e=>i(e)(!isFinite(e.max)||e.mine.size.get(s)>1).filter(n);for(;a.length;){const l=e=>{const n=h(e).filter(o);if(!n.length)return null;const r=i(e),a=e.getMinimumSize(s)-r;if(ae.grow));return{cell:e,growingLines:n.slice(),space:a,weights:new Map(n.map(e=>{let t;return t=l>0?a*(e.grow/l):a/n.length,[e,t]}))}};let c=[];for(const e of a){const t=l(e);t&&c.push(t)}const d=()=>{c=c.map(e=>e.growingLines.some(e=>r.has(e))?l(e.cell):e).filter(e=>null!==e)};let u=[],p=!0;for(;p&&c.length;){p=!1,u=[];for(const n of e){const e=n.getMaximumSize(s);if(isFinite(e)){const s=h(n).filter(e=>c.some(t=>t.growingLines.includes(e)));if(s.length){const o=e-i(n);if(oe.growingLines)),t=new Map(e.map(e=>{let t=0;for(const i of c)i.growingLines.includes(e)&&(t+=i.weights.get(e));return[e,t]}));let i=Number.POSITIVE_INFINITY;for(const n of[...c,...u]){const e=_.sum(n.growingLines.map(e=>t.get(e)));i=Math.min(i,n.space/e)}for(const n of e){const e=t.get(n);n.min+=e*i}a=a.filter(n)}}}a.forEach(e=>{e.hasOrigin()?e.size=Math.max(e.min,e.maxOrigin-e.minOrigin):e.size=e.min});const d=_.sum(a.map(e=>e.size))+_.sum(c);t.set(s,d);const u=Math.max(d,i.get(s)||0);let p,m=u-d;for(;m>1e-7&&(p=a.filter(e=>e.grow>0&&e.sizee.grow)),t=Math.min(Math.min(...p.map(e=>(e.max-e.size)/e.grow)),m/e);p.forEach(e=>{e.size+=t*e.grow}),m-=t*e}const g=(a[0].hasOrigin()?a[0].minOrigin:0)+this.layoutOriginProperty.value[s.coordinate];n[s.minCoordinate]=g,n[s.maxCoordinate]=g+u,a.forEach((e,t)=>{const i=_.sum(a.slice(0,t).map(e=>e.size)),n=_.sum(c.slice(0,t));e.position=g+i+n}),e.forEach(e=>{const t=e.position.get(s),i=e.size.get(s),r=t+i-1,l=h(e),d=o.get(t);let u=0;t!==r&&a.slice(0,-1).forEach((e,i)=>{e.index>=t&&e.indexe.size))+u,m=d.position,g=e.reposition(s,p,m,e.getEffectiveStretch(s),-d.minOrigin,e.getEffectiveAlign(s));n[s.minCoordinate]=Math.min(n[s.minCoordinate],g[s.minCoordinate]),n[s.maxCoordinate]=Math.max(n[s.maxCoordinate],g[s.maxCoordinate])})}),this.layoutBoundsProperty.value=n,this.minimumWidthProperty.value=t.horizontal,this.minimumHeightProperty.value=t.vertical,this.finishedLayoutEmitter.emit()}get spacing(){return this.xSpacing}set spacing(e){this._spacing.get(Ie.HORIZONTAL)===e&&this._spacing.get(Ie.VERTICAL)===e||(this._spacing.set(Ie.HORIZONTAL,e),this._spacing.set(Ie.VERTICAL,e),this.updateLayoutAutomatically())}get xSpacing(){return this._spacing.get(Ie.HORIZONTAL)}set xSpacing(e){this._spacing.get(Ie.HORIZONTAL)!==e&&(this._spacing.set(Ie.HORIZONTAL,e),this.updateLayoutAutomatically())}get ySpacing(){return this._spacing.get(Ie.VERTICAL)}set ySpacing(e){this._spacing.get(Ie.VERTICAL)!==e&&(this._spacing.set(Ie.VERTICAL,e),this.updateLayoutAutomatically())}addCell(e){this.cells.add(e),this.addNode(e.node),e.changedEmitter.addListener(this._updateLayoutListener),this.updateLayoutAutomatically()}removeCell(e){this.cells.delete(e),this.removeNode(e.node),e.changedEmitter.removeListener(this._updateLayoutListener),this.updateLayoutAutomatically()}dispose(){this.lock(),[...this.cells].forEach(e=>this.removeCell(e)),this.displayedLines.forEach(e=>e.clear()),this.displayedCells=[],super.dispose(),this.unlock()}getIndices(e){const t=[];return this.cells.forEach(i=>{t.push(...i.getIndices(e))}),_.sortedUniq(_.sortBy(t))}getCell(e,t){return _.find([...this.cells],i=>i.containsRow(e)&&i.containsColumn(t))||null}getCellFromNode(e){return _.find([...this.cells],t=>t.node===e)||null}getCells(e,t){return _.filter([...this.cells],i=>i.containsIndex(e,t))}static create(t,i){return new e(t,i)}constructor(e,t){super(e,t),this.cells=new Set,this.displayedCells=[],this.displayedLines=new Iy(new Map,new Map),this._spacing=new Iy(0,0),this.setConfigToBaseDefault(),this.mutateConfigurable(t),$A(this,xf,t),this.changedEmitter.addListener(this._updateLayoutListener)}};ot.A.register("GridConstraint",Df);let kf=class extends(Cf(Af)){get effectiveXAlign(){return null!==this._xAlign?this._xAlign:this.gridConstraint._xAlign}get effectiveYAlign(){return null!==this._yAlign?this._yAlign:this.gridConstraint._yAlign}getEffectiveAlign(e){return e===Ie.HORIZONTAL?this.effectiveXAlign:this.effectiveYAlign}get effectiveXGrow(){return null!==this._xGrow?this._xGrow:this.gridConstraint._xGrow}get effectiveYGrow(){return null!==this._yGrow?this._yGrow:this.gridConstraint._yGrow}getEffectiveGrow(e){return e===Ie.HORIZONTAL?this.effectiveXGrow:this.effectiveYGrow}get effectiveXStretch(){return null!==this._xStretch?this._xStretch:this.gridConstraint._xStretch}get effectiveYStretch(){return null!==this._yStretch?this._yStretch:this.gridConstraint._yStretch}getEffectiveStretch(e){return e===Ie.HORIZONTAL?this.effectiveXStretch:this.effectiveYStretch}onLayoutOptionsChange(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.setOptions(this.node.layoutOptions),super.onLayoutOptionsChange(),e||this.gridConstraint.updateLayoutAutomatically()}setOptions(e){const t=(0,o.Ay)()({column:0,row:0,horizontalSpan:1,verticalSpan:1},e);this.setConfigToInherit(t),this.position=new Iy(t.column,t.row),this.size=new Iy(t.horizontalSpan,t.verticalSpan),this.mutateConfigurable(t)}containsIndex(e,t){const i=this.position.get(e),n=this.size.get(e);return t>=i&&t"excludeInvisible"!==e),"rows","columns","autoRows","autoColumns"];let Bf=class extends bf{setLines(e,t){const i=[];for(let n=0;ne.node)}getNodesInColumn(e){return this.constraint.getCells(Ie.HORIZONTAL,e).map(e=>e.node)}addRow(e){return this.rows=[...this.rows,e],this}addColumn(e){return this.columns=[...this.columns,e],this}insertRow(e,t){return this.rows=[...this.rows.slice(0,e),t,...this.rows.slice(e)],this}insertColumn(e,t){return this.columns=[...this.columns.slice(0,e),t,...this.columns.slice(e)],this}removeRow(e){return this.rows=[...this.rows.slice(0,e),...this.rows.slice(e+1)],this}removeColumn(e){return this.columns=[...this.columns.slice(0,e),...this.columns.slice(e+1)],this}set autoRows(e){this._autoRows!==e&&(this._autoRows=e,this.updateAutoRows())}get autoRows(){return this._autoRows}set autoColumns(e){this._autoColumns!==e&&(this._autoColumns=e,this.updateAutoColumns())}get autoColumns(){return this._autoColumns}updateAutoLines(e,t){if(null!==t&&0===this._autoLockCount){let i=0;this.constraint.lock(),this.children.filter(e=>e.bounds.isValid()&&(!this._constraint.excludeInvisible||e.visible)).forEach((n,s)=>{const r=s%t,o=Math.floor(s/t);n.layoutOptions&&n.layoutOptions[e.line]===r&&n.layoutOptions[e.opposite.line]===o&&1===n.layoutOptions.horizontalSpan&&1===n.layoutOptions.verticalSpan||(i++,n.mutateLayoutOptions({[e.line]:s%t,[e.opposite.line]:Math.floor(s/t),horizontalSpan:1,verticalSpan:1}))}),this.constraint.unlock(),i>0&&this.constraint.updateLayoutAutomatically()}}updateAutoRows(){this.updateAutoLines(Ie.VERTICAL,this.autoRows)}updateAutoColumns(){this.updateAutoLines(Ie.HORIZONTAL,this.autoColumns)}updateAllAutoLines(){this.updateAutoRows(),this.updateAutoColumns()}setChildren(e){const t=this.getChildren();return this._autoLockCount++,super.setChildren(e),this._autoLockCount--,_.isEqual(t,e)||this.updateAllAutoLines(),this}onGridBoxChildInserted(e,t){e.visibleProperty.lazyLink(this.onChildVisibilityToggled);const i=new kf(this._constraint,e,this._constraint.createLayoutProxy(e));this._cellMap.set(e,i),this._constraint.addCell(i),this.updateAllAutoLines()}onGridBoxChildRemoved(e){const t=this._cellMap.get(e);this._cellMap.delete(e),this._constraint.removeCell(t),t.dispose(),this.updateAllAutoLines(),e.visibleProperty.unlink(this.onChildVisibilityToggled)}mutate(e){return(0,u.A)(e,["rows"],["columns"],["children","autoRows","autoColumns"]),super.mutate(e)}get spacing(){return this._constraint.spacing}set spacing(e){this._constraint.spacing=e}get xSpacing(){return this._constraint.xSpacing}set xSpacing(e){this._constraint.xSpacing=e}get ySpacing(){return this._constraint.ySpacing}set ySpacing(e){this._constraint.ySpacing=e}get xAlign(){return this._constraint.xAlign}set xAlign(e){this._constraint.xAlign=e}get yAlign(){return this._constraint.yAlign}set yAlign(e){this._constraint.yAlign=e}get grow(){return this._constraint.grow}set grow(e){this._constraint.grow=e}get xGrow(){return this._constraint.xGrow}set xGrow(e){this._constraint.xGrow=e}get yGrow(){return this._constraint.yGrow}set yGrow(e){this._constraint.yGrow=e}get stretch(){return this._constraint.stretch}set stretch(e){this._constraint.stretch=e}get xStretch(){return this._constraint.xStretch}set xStretch(e){this._constraint.xStretch=e}get yStretch(){return this._constraint.yStretch}set yStretch(e){this._constraint.yStretch=e}get margin(){return this._constraint.margin}set margin(e){this._constraint.margin=e}get xMargin(){return this._constraint.xMargin}set xMargin(e){this._constraint.xMargin=e}get yMargin(){return this._constraint.yMargin}set yMargin(e){this._constraint.yMargin=e}get leftMargin(){return this._constraint.leftMargin}set leftMargin(e){this._constraint.leftMargin=e}get rightMargin(){return this._constraint.rightMargin}set rightMargin(e){this._constraint.rightMargin=e}get topMargin(){return this._constraint.topMargin}set topMargin(e){this._constraint.topMargin=e}get bottomMargin(){return this._constraint.bottomMargin}set bottomMargin(e){this._constraint.bottomMargin=e}get minContentWidth(){return this._constraint.minContentWidth}set minContentWidth(e){this._constraint.minContentWidth=e}get minContentHeight(){return this._constraint.minContentHeight}set minContentHeight(e){this._constraint.minContentHeight=e}get maxContentWidth(){return this._constraint.maxContentWidth}set maxContentWidth(e){this._constraint.maxContentWidth=e}get maxContentHeight(){return this._constraint.maxContentHeight}set maxContentHeight(e){this._constraint.maxContentHeight=e}setExcludeInvisibleChildrenFromBounds(e){super.setExcludeInvisibleChildrenFromBounds(e),this.updateAllAutoLines()}dispose(){this._constraint.lock(),this.childInsertedEmitter.removeListener(this.onChildInserted),this.childRemovedEmitter.removeListener(this.onChildRemoved);for(const e of this._cellMap.values())e.dispose(),e.node.visibleProperty.unlink(this.onChildVisibilityToggled);super.dispose()}getHelperNode(){return Af.createHelperNode(this.constraint.displayedCells,this.constraint.layoutBoundsProperty.value,e=>{let t="";return t+=`row: ${e.position.vertical}\n`,t+=`column: ${e.position.horizontal}\n`,e.size.horizontal>1&&(t+=`horizontalSpan: ${e.size.horizontal}\n`),e.size.vertical>1&&(t+=`verticalSpan: ${e.size.vertical}\n`),t+=`xAlign: ${sy.internalToAlign(Ie.HORIZONTAL,e.effectiveXAlign)}\n`,t+=`yAlign: ${sy.internalToAlign(Ie.VERTICAL,e.effectiveYAlign)}\n`,t+=`xStretch: ${e.effectiveXStretch}\n`,t+=`yStretch: ${e.effectiveYStretch}\n`,t+=`xGrow: ${e.effectiveXGrow}\n`,t+=`yGrow: ${e.effectiveYGrow}\n`,t})}constructor(e){const t=(0,o.Ay)()({excludeInvisibleChildrenFromBounds:!0,resize:!0},e);super(),this._cellMap=new Map,this._autoRows=null,this._autoColumns=null,this._autoLockCount=0,this._constraint=new Df(this,{preferredWidthProperty:this.localPreferredWidthProperty,preferredHeightProperty:this.localPreferredHeightProperty,minimumWidthProperty:this.localMinimumWidthProperty,minimumHeightProperty:this.localMinimumHeightProperty,layoutOriginProperty:this.layoutOriginProperty,excludeInvisible:!1}),this.onChildInserted=this.onGridBoxChildInserted.bind(this),this.onChildRemoved=this.onGridBoxChildRemoved.bind(this),this.onChildVisibilityToggled=this.updateAllAutoLines.bind(this),this.childInsertedEmitter.addListener(this.onChildInserted),this.childRemovedEmitter.addListener(this.onChildRemoved);const i=_.omit(t,Er),n=_.pick(t,Er);this._constraint.lock(),this.mutate(i),this._constraint.unlock(),this._constraint.updateLayout(),this.mutate(n),this.linkLayoutBounds()}};Bf.prototype._mutatorKeys=[..._o,...Mf,...Dr.prototype._mutatorKeys],ot.A.register("GridBox",Bf);const Of={stretch:!0,isSeparator:!0};let Lf=class extends ac{constructor(e){super((0,o.hz)()({},{layoutOptions:Of,stroke:"rgb(100,100,100)"},e))}};ot.A.register("Separator",Lf);let Rf=class extends(jo(Lf)){constructor(e){super(),this.localPreferredWidthProperty.link(e=>{null!==e&&(this.x2=e)}),this.mutate(e)}};ot.A.register("HSeparator",Rf);let Nf=class extends Ef{onFlowBoxChildInserted(e,t){super.onFlowBoxChildInserted(e,t)}mutate(e){return super.mutate(e)}constructor(e){super((0,o.Ay)()({orientation:"horizontal"},e))}};ot.A.register("HBox",Nf);let qf=class extends(Wo(Lf)){constructor(e){super(),this.localPreferredHeightProperty.link(e=>{null!==e&&(this.y2=e)}),this.mutate(e)}};ot.A.register("VSeparator",qf);let Ff=class extends Ef{onFlowBoxChildInserted(e,t){super.onFlowBoxChildInserted(e,t)}mutate(e){return super.mutate(e)}constructor(e){super((0,o.Ay)()({orientation:"vertical"},e))}};ot.A.register("VBox",Ff);let Hf=class extends Dr{calculateDOMBounds(){const e=$(this._element);return new Me(0,0,e.width(),e.height())}invalidateDOM(){if(this.invalidateDOMLock)return;this.invalidateDOMLock=!0;const e=document.createElement("div");$(e).css({display:"hidden",padding:"0 !important",margin:"0 !important",position:"absolute",left:0,top:0,width:65535,height:65535}),this._container.removeChild(this._element),e.appendChild(this._element),document.body.appendChild(e);const t=this.calculateDOMBounds();this.invalidateSelf(t),this._$container.width(t.getWidth()),this._$container.height(t.getHeight()),document.body.removeChild(e),e.removeChild(this._element),this._container.appendChild(this._element),this.invalidateDOMLock=!1}createDOMDrawable(e,t){return jg.createFromPool(e,t)}isPainted(){return!0}setElement(e){return this._element!==e&&(this._element&&this._container.removeChild(this._element),this._element=e,this._container.appendChild(this._element),this.invalidateDOM()),this}set element(e){this.setElement(e)}get element(){return this.getElement()}getElement(){return this._element}setPreventTransform(e){this._preventTransform!==e&&(this._preventTransform=e)}set preventTransform(e){this.setPreventTransform(e)}get preventTransform(){return this.isTransformPrevented()}isTransformPrevented(){return this._preventTransform}setAllowInput(e){this._allowInput!==e&&(this._allowInput=e,this.invalidateAllowInput(e))}isInputAllowed(){return this._allowInput}invalidateAllowInput(e){this._container.dataset.sceneryAllowInput=e?"true":"false",this._container.style.pointerEvents=e?"auto":"none"}set allowInput(e){this.setAllowInput(e)}get allowInput(){return this.isInputAllowed()}mutate(e){return super.mutate(e)}constructor(e,t){(e=>!(!e||!e.jquery))(e)&&(e=e[0]),super(),this._container=document.createElement("div"),this._container.style.position="absolute",this._container.style.left="0",this._container.style.top="0",this._allowInput=!1,this._$container=$(this._container),this.invalidateDOMLock=!1,this._preventTransform=!1,this.invalidateAllowInput(this._allowInput),t=Ph({element:e},t),this.mutate(t),this.setRendererBitmask(en.bitmaskDOM)}};Hf.prototype._mutatorKeys=["element","preventTransform","allowInput"].concat(Dr.prototype._mutatorKeys),ot.A.register("DOM",Hf);const Yf=Wr(e=>class extends e{insertChild(e,t){throw new Error("Attempt to insert child into Leaf")}removeChildWithIndex(e,t){throw new Error("Attempt to remove child from Leaf")}constructor(){super(...arguments)}});ot.A.register("Leaf",Yf);const Gf=Yf;let Uf=class extends(Gf(Dr)){constructor(e,t,i){super(),this.localBounds=new Me(0,0,e,t),this.mutate(i)}};ot.A.register("Spacer",Uf);let zf=class extends No{initialize(e,t){super.initialize(e,t),this.contextChangeListener=this.contextChangeListener||this.onWebGLContextChange.bind(this),this.painter=null}createPainter(){return new(0,this.node.painterType)(this.webGLBlock.gl,this.node)}onWebGLContextChange(){this.painter=this.createPainter()}onAddToBlock(e){this.webGLBlock=e,this.painter=this.createPainter(),e.glChangedEmitter.addListener(this.contextChangeListener)}onRemoveFromBlock(e){e.glChangedEmitter.removeListener(this.contextChangeListener)}draw(){const e=this.instance.relativeTransform.matrix,t=this.painter.paint(e,this.webGLBlock.projectionMatrix);return t}dispose(){this.painter.dispose(),this.painter=null,this.webGLBlock&&(this.webGLBlock=null),super.dispose()}markPaintDirty(){this.markDirty()}get shaderAttributes(){return this.node.shaderAttributes}};zf.prototype.webglRenderer=en.webglCustom,ot.A.register("WebGLNodeDrawable",zf),ws.mixInto(zf);const Wf=zf;let Qf=class extends Dr{setCanvasBounds(e){return this.invalidateSelf(e),this}set canvasBounds(e){this.setCanvasBounds(e)}get canvasBounds(){return this.getCanvasBounds()}getCanvasBounds(){return this.getSelfBounds()}isPainted(){return!0}invalidatePaint(){const e=this._drawables.length;for(let t=0;t{const t=e;return jf.has(t)||jf.set(t,new w.A(`ReferenceIO<${e.typeName}>`,{isValidValue:t=>Y.A.isValueValid(t,e.validator),documentation:"Uses reference identity for serializing and deserializing, and validates based on its parameter PhET-iO Type.",parameterTypes:[e],toStateObject:e=>({phetioID:e.tandem.phetioID}),stateSchema:{phetioID:B.A},fromStateObject(e){if(phet.phetio.phetioEngine.hasPhetioObject(e.phetioID))return phet.phetio.phetioEngine.getPhetioElement(e.phetioID);throw new Kf.A},applyState(e){}})),jf.get(t)};A.A.register("ReferenceIO",Zf);const _f=Zf,Xf={isColorDef:e=>null===e||"string"==typeof e||e instanceof jr||(0,le.w)(e)&&(null===e.value||"string"==typeof e.value||e.value instanceof jr),scenerySerialize:e=>null===e?"null":e instanceof jr?`'${e.toCSS()}'`:"string"==typeof e?`'${e}'`:Xf.scenerySerialize(e.value),ColorDefIO:null};Xf.ColorDefIO=new w.A("ColorDefIO",{isValidValue:Xf.isColorDef,supertype:(0,k.A)(pn([B.A,jr.ColorIO,_f(h.A.PropertyIO((0,k.A)(pn([B.A,jr.ColorIO]))))]))}),ot.A.register("ColorDef",Xf);const Jf=Xf,$f=new jr("transparent");let eb=class e{isActiveSVGGradientStop(){return!!this.svgGradient}initialize(e,t,i){return this.svgGradient=e,this.color=i,this.ratio=t,this.svgElement=this.svgElement||document.createElementNS(Eo,"stop"),this.svgElement.setAttribute("offset",""+t),this.dirty=!0,this.update(),this.propertyListener=this.propertyListener||this.onPropertyChange.bind(this),this.colorListener=this.colorListener||this.markDirty.bind(this),(0,le.w)(i)?(i.lazyLink(this.propertyListener),i.value instanceof jr&&(i.value.changeEmitter.addListener(this.colorListener),this.lastColor=i.value)):i instanceof jr&&i.changeEmitter.addListener(this.colorListener),this}onPropertyChange(e,t){null!==this.lastColor&&(this.lastColor.changeEmitter.removeListener(this.colorListener),this.lastColor=null),e instanceof jr&&(e.changeEmitter.addListener(this.colorListener),this.lastColor=e),this.markDirty()}markDirty(){this.dirty=!0,this.svgGradient.markDirty()}update(){if(!this.dirty)return;this.dirty=!1;let e=this.color;(0,le.w)(e)&&(e=e.value),null===e&&(e="transparent"),"string"==typeof e?$f.setCSS(e):$f.set(e);const t=`stop-opacity: ${$f.a.toFixed(20)};`;$f.alpha=1;const i=`stop-color: ${$f.toCSS()};`;this.svgElement.setAttribute("style",`${i} ${t}`)}dispose(){const e=this.color;this.lastColor&&(this.lastColor.changeEmitter.removeListener(this.colorListener),this.lastColor=null),(0,le.w)(e)?e.hasListener(this.propertyListener)&&e.unlink(this.propertyListener):e instanceof jr&&e.changeEmitter.removeListener(this.colorListener),this.color=null,this.svgGradient=null,this.freeToPool()}freeToPool(){e.pool.freeToPool(this)}constructor(e,t,i){this.lastColor=null,this.initialize(e,t,i)}};eb.pool=new xe.A(eb),ot.A.register("SVGGradientStop",eb);const tb=eb;let ib=class{isActiveSVGGradient(){return!!this.svgBlock}initialize(e,t){this.svgBlock=e,this.gradient=t;const i=void 0!==this.definition;this.definition=this.definition||this.createDefinition(),i||this.definition.setAttribute("gradientUnits","userSpaceOnUse"),t.transformMatrix?this.definition.setAttribute("gradientTransform",t.transformMatrix.getSVGTransform()):this.definition.removeAttribute("gradientTransform");const n=t.getSVGStops();this.stops=Pi(this.stops);for(let s=0;s{e+=`.addColorStop( ${t.ratio}, ${Jf.scenerySerialize(t.color)} )`}),e}constructor(e,t,i,n){super(),this.start=new De.A(e,t),this.end=new De.A(i,n)}};sb.prototype.isLinearGradient=!0,ot.A.register("LinearGradient",sb);let rb=class e extends ib{initialize(e,t){return super.initialize(e,t),this.definition.setAttribute("cx",""+t.largePoint.x),this.definition.setAttribute("cy",""+t.largePoint.y),this.definition.setAttribute("r",""+t.maxRadius),this.definition.setAttribute("fx",""+t.focalPoint.x),this.definition.setAttribute("fy",""+t.focalPoint.y),this}createDefinition(){return document.createElementNS(Eo,"radialGradient")}freeToPool(){e.pool.freeToPool(this)}constructor(e,t){super(e,t)}};rb.pool=new xe.A(rb),ot.A.register("SVGRadialGradient",rb);let ob=class extends Xr{createCanvasGradient(){return uo.createRadialGradient(this.start.x,this.start.y,this.startRadius,this.end.x,this.end.y,this.endRadius)}createSVGPaint(e){return rb.pool.create(e,this)}getSVGStops(){const e=this.startIsLarger,t=this.maxRadius,i=this.minRadius;const n=this.stops.map((function(n){let s=e?1-n.ratio:n.ratio;var r,o;return i>0&&(s=(o=i/t)+(s-(r=0))*(1-o)/(1-r)),{ratio:s,color:n.color}}));return e&&n.reverse(),n}toString(){let e=`new phet.scenery.RadialGradient( ${this.start.x}, ${this.start.y}, ${this.startRadius}, ${this.end.x}, ${this.end.y}, ${this.endRadius} )`;return _.each(this.stops,t=>{e+=`.addColorStop( ${t.ratio}, ${Jf.scenerySerialize(t.color)} )`}),e}constructor(e,t,i,n,s,r){if(super(),this.start=new De.A(e,t),this.end=new De.A(n,s),We.A.safari){const i=(e+n)/2,r=(t+s)/2;this.start.x=i,this.start.y=r,this.end.x=i,this.end.y=r}this.startRadius=i,this.endRadius=r,this.focalPoint=this.start.plus(this.end.minus(this.start).times(this.startRadius/(this.startRadius-this.endRadius))),this.startIsLarger=this.startRadius>this.endRadius,this.largePoint=this.startIsLarger?this.start:this.end,this.maxRadius=Math.max(this.startRadius,this.endRadius),this.minRadius=Math.min(this.startRadius,this.endRadius),this.startRadius,this.endRadius}};function ab(e,t){const i=(0,o.Ay)()({resolution:1,sourceBounds:null,useTargetBounds:!0,wrap:!0,useCanvas:!1,nodeOptions:{},imageOptions:{}},t),n=i.resolution,s=i.sourceBounds;const r=new Dr({scale:n,children:[e]});let a=s||e.getSafeTransformedVisibleBounds().dilated(2).roundedOut();1!==n&&(a=new Me(n*a.minX,n*a.minY,n*a.maxX,n*a.maxY),a.width%1!=0&&(a.maxX+=1-a.width%1),a.height%1!=0&&(a.maxY+=1-a.height%1));let l=null;r.toCanvas((function(e,t,s,r,a){const h=i.useCanvas?e:e.toDataURL();l=new Jh(h,(0,o.sF)({},i.imageOptions,{x:-t,y:-s,initialWidth:r,initialHeight:a})),l.scale(1/n,1/n,!0)}),-a.minX,-a.minY,(0,tt.q)(a.width),(0,tt.q)(a.height));const h=l;r.dispose();let c,d=e.getVisibleBounds();if(s&&(d=s.intersection(d)),i.useTargetBounds&&(h.imageBounds=h.parentToLocalBounds(d)),i.wrap){const e=new Dr({children:[h]});i.useTargetBounds&&(e.localBounds=d),c=e}else i.useTargetBounds&&(h.localBounds=h.parentToLocalBounds(d)),c=h;return c.mutate(i.nodeOptions)}ob.prototype.isRadialGradient=!0,ot.A.register("RadialGradient",ob);let lb=class{focusin(e){this.focusInGroupProperty.value=!0,this.focusTargetProperty.value=e.target,this._focusWasInGroup=!0}focusout(e){var t;const i=null==(t=Zn.value)?void 0:t.trail;i&&i.containsNode(this.groupParent)||(this.focusInGroupProperty.value=!1,this.focusTargetProperty.value=null,this._focusWasInGroup=!1)}get focusWasInGroup(){return this._focusWasInGroup}dispose(){this.focusInGroupProperty.dispose(),this.focusTargetProperty.dispose()}constructor(e){this._focusWasInGroup=!1,this.focusInGroupProperty=new c(!1),this.focusTargetProperty=new h.A(null),this.groupParent=e}};ot.A.register("GroupFocusListener",lb);const hb="data:audio/mpeg;base64,//tQxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAFAAAE5AAzMzMzMzMzMzMzMzMzMzMzMzMzZmZmZmZmZmZmZmZmZmZmZmZmZmaZmZmZmZmZmZmZmZmZmZmZmZmZmczMzMzMzMzMzMzMzMzMzMzMzMzM//////////////////////////8AAAA5TEFNRTMuOTlyAaUAAAAAAAAAABRAJAZmQgAAQAAABOTGvClKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7UMQAAAjxrv+ggLoZGTXh9oJQAa222FG3ASABBG51MY/j4AAB4AYI3/H3//Pqd/zv0Jp/8//zn3n6Mmf/J7f//8jf+fOeeggHA4RXkGh8XEwHAMHD4udyCYuhAALhgJqWJAEDGMYxvHlyAHxc9P76dP//T/Rm//p+v9tvb0Tzr1XyfnelP/3b0//5vo86Mlm0dHQrscccRQg5oSYpziaiB52oQCkxnR6LQisRCEMhluyeqEhIiWMiSvQjhwDTCtCPyDkNrP+UsBTNwVsJGSD/+1LEFoAQMWtluYaQEWGP7H+wYAR9IvpDLBawV8OWbG5oShmbiVnh8GAU6ZIjnetMKuOcpmaSndX80HuS7puaIKq/6lvM36lIJf8+Zm6CFA0t3fV/91IOhPJ1GCH13q//5o6DJl9/F3ErtwAGRlJ26tx4H5gV4lzzrIqy8jTNBZl1Hep3doI2/x6AMOljV5/M4clzeagOVs4SmnmZk2fTyahylhxZ1R7/1HlnhEe4KgF3SISoKnviYs9T8sp4Ku5ICsAAg3RwNdct5GVqea2W4P/7UsQHgAuZRzrtmE8JO4qkaa4M4MXAzUcoyYPSsZe/D4w5DUicEmE/ziQka1VaLTh0y8+qp/UtRMpQoli5jYCz6St//RjTOrPXlI/KJaZ2RHX6mMrJqxfqVjPM/K/thi6pyAAPlyOxkEr9tPgR2ldNwBRI0383ZJR5NmIAG2zBZOw1tKaJR6jzjIxgTlVLjBgJmawwRo8JXAUYCz1gr/q+aVWur8tO+j4iUe////6ii3UCwZHQhxd93nYdy9H1MjPwThY/VGgQQLo200aOkCDF//tSxA+CCwg1HK3lIQHXlCPo97AIw8D44EBOcB8oGBIND4gcCBc+IFHC7wwUOA+oMiAaH1PDCw+mxbydxPV3/zjbCnci8p/9nIJTQYSH5vktZIAEdHIA5HkiS4k11MYsCUFS8QSbEVhJUnQlFpKIJNQhJJrBKEZ8kiKoJIkqToSj5KJJ6hiCTXCUJUZJEl45Ek9TCUfQkkyuSSbzS72V1mVruLnhMeBUsHREPDQiPA0VOiJwdKuBlR5Fqtbk3f///t8FdSogAuxJp2uAWhIWFmv/+1LEBgPGHADHoIhgIAAANIAAAATcLVLFRWKCwsLCyxUVFVf6xVmLCws1YqKior////2RVn/+LCwtTEFNRTMuOTkuM1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==",cb=Il(Bl,hb),db=Cl.A.createLock(hb),ub=new kl;let pb=!1;const mb=()=>{pb||(db(),pb=!0)},gb=Bl.decodeAudioData(cb.buffer,e=>{null===ub.audioBufferProperty.value&&(ub.audioBufferProperty.set(e),mb())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),ub.audioBufferProperty.set(Bl.createBuffer(1,1,Bl.sampleRate)),mb()});gb&&gb.then(e=>{null===ub.audioBufferProperty.value&&(ub.audioBufferProperty.set(e),mb())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),mb()});const Ab=ub;let yb=class{play(){this.soundPlayer.setPlaybackRate(this.playbackRate),this.soundPlayer.play()}stop(){this.soundPlayer.stop()}constructor(e,t){this.soundPlayer=e,this.playbackRate=t}};const fb=new class{getSoundClipInstance(){return this._basisSoundClip||(this._basisSoundClip=new Rm(Ab,{initialOutputLevel:.7,rateChangesAffectPlayingSounds:!1}),Jl.addSoundGenerator(this._basisSoundClip,{categoryName:"user-interface"})),this._basisSoundClip}getSelectionSoundPlayer(e){if(!this.soundPlayers[e]){const t=Math.pow(2,-e/12);this.soundPlayers[e]=new yb(this.getSoundClipInstance(),t)}return this.soundPlayers[e]}constructor(){this._basisSoundClip=null,this.soundPlayers=[]}};xl.register("multiSelectionSoundPlayerFactory",fb);const bb=fb,Pb=e=>{if(e instanceof Rc||e instanceof mf)return e.stringProperty;if(e.children)for(const t of e.children){const e=Pb(t);if(e)return e}return null},Vb=new e.A("sun");let wb=class e extends(jo(pA(Dr))){dispose(){this.disposeAquaRadioButton(),super.dispose()}constructor(t,i,n,s){const r=(0,o.Ay)()({centerColor:"black",radius:e.DEFAULT_RADIUS,selectedColor:"rgb( 143, 197, 250 )",deselectedColor:"white",xSpacing:8,stroke:"black",soundPlayer:bb.getSelectionSoundPlayer(0),a11yNameAttribute:null,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,cursor:"pointer",disabledOpacity:Vf.DISABLED_OPACITY,tandem:P.A.REQUIRED,tandemNameSuffix:"RadioButton",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!1,tagName:"input",inputType:"radio",containerTagName:"li",labelTagName:"label",appendLabel:!0,appendDescription:!0,accessibleNameBehavior:pA.BASIC_ACCESSIBLE_NAME_BEHAVIOR},s);super(),this.onInputEmitter=new v.A,this._isMouseAreaCustomized=!1,this._isTouchAreaCustomized=!1,this._isSettingAreas=!1,this.value=i;const a=new Dr,l=new xh(r.radius/3,{fill:r.centerColor}),h=new xh(r.radius,{fill:r.selectedColor,stroke:r.stroke}),c=new Dr({children:[h,l]});a.addChild(c);const d=new Dr,u=new xh(r.radius,{fill:r.deselectedColor,stroke:r.stroke});d.addChild(u);const p=new Dr({children:[a,d],pickable:!1}),m=()=>{n.left=u.right+r.xSpacing,n.centerY=u.centerY};n.boundsProperty.link(m);const g=new Va({});a.pickable=d.pickable=!1,n.pickable=!1,this.children=[p,n,g],this.constraint=new vb(this,p,n,g,r),this.constraint.updateLayout();const A=e=>{a.visible=e===i,d.visible=!a.visible};t.link(A);const y=()=>{const e=t.value;t.set(i),e!==t.value&&this.onInputEmitter.emit()},f=new Lr({fire:y,tandem:r.tandem});this.addInputListener(f),this.onInputEmitter.addListener(()=>{r.soundPlayer.play(),this.voicingSpeakNameResponse()});const b={change:y};this.addInputListener(b),t.value===i&&this.setPDOMAttribute("checked","checked");const V=e=>{this.pdomChecked=e===i};t.link(V),r.accessibleName||(r.accessibleName=Pb(n)),null!==r.a11yNameAttribute&&this.setPDOMAttribute("name",r.a11yNameAttribute),this.mutate(r),this.disposeAquaRadioButton=()=>{this.constraint.dispose(),this.onInputEmitter.dispose(),this.removeInputListener(f),this.removeInputListener(b),t.unlink(V),t.unlink(A),n.boundsProperty.hasListener(m)&&n.boundsProperty.unlink(m),f.dispose()}}};wb.DEFAULT_RADIUS=7;let vb=class extends Vy{layout(){super.layout();const e=this.createLayoutProxy(this.labelNode),t=e.minimumWidth,i=this.radioNode.width+this.options.xSpacing+t,n=Math.max(i,this.radioButton.localPreferredWidth||0);rr(this.labelNode)&&(e.preferredWidth=n-this.radioNode.width-this.options.xSpacing),e.left=this.radioNode.right+this.options.xSpacing,e.centerY=this.radioNode.centerY,this.rectangle.rectBounds=this.radioNode.bounds.union(e.bounds).withMaxX(Math.max(this.radioNode.left+n,e.right)),this.radioButton._isSettingAreas=!0,this.radioButton._isTouchAreaCustomized||(this.radioButton.touchArea=this.radioButton.localBounds.dilatedXY(this.options.touchAreaXDilation,this.options.touchAreaYDilation)),this.radioButton._isMouseAreaCustomized||(this.radioButton.mouseArea=this.radioButton.localBounds.dilatedXY(this.options.mouseAreaXDilation,this.options.mouseAreaYDilation)),this.radioButton._isSettingAreas=!1,e.dispose(),this.radioButton.localMinimumWidth=i}dispose(){this.radioButton.localPreferredWidthProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t,i,n,s){super(e),this.radioButton=e,this.radioNode=t,this.labelNode=i,this.rectangle=n,this.options=s,this.radioButton.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.addNode(i)}};function Eb(e,t){return e.map(e=>e.createNode(t&&e.tandemName?t.createTandem(e.tandemName):P.A.OPTIONAL))}Vb.register("AquaRadioButton",wb);let Sb=class{static validateLinkedElementInstrumentation(e,t){0}};Vb.register("SunUtil",Sb);let Tb=0;let Cb=class extends Ef{onRadioButtonInput(){this.onInputEmitter.emit()}dispose(){this.disposeAquaRadioButtonGroup(),super.dispose()}getButton(e){const t=_.find(this.radioButtons,t=>t.value===e);return t}constructor(e,t,i){Tb++;const n=(0,o.Ay)()({touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,orientation:"vertical",spacing:3,stretch:!0,disabledOpacity:Vf.DISABLED_OPACITY,tandem:P.A.REQUIRED,tandemNameSuffix:"RadioButtonGroup",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioFeatured:!0,tagName:"ul",labelTagName:"h3",ariaRole:"radiogroup",accessibleHelpTextBehavior:Js.HELP_TEXT_BEFORE_CONTENT,groupFocusHighlight:!0},i),s=Eb(t,n.tandem);"vertical"===n.orientation&&(n.align=n.align||"left");const r=t.map((t,i)=>{const r=s[i];return new wb(e,t.value,r,(0,o.sF)({a11yNameAttribute:"AquaRadioButtonGroup"+Tb,soundPlayer:bb.getSelectionSoundPlayer(i),tandem:t.tandemName?n.tandem.createTandem(t.tandemName):n.tandem===P.A.OPT_OUT?P.A.OPT_OUT:P.A.REQUIRED,touchAreaXDilation:"horizontal"===n.orientation?n.spacing/2:n.touchAreaXDilation,touchAreaYDilation:"vertical"===n.orientation?n.spacing/2:n.touchAreaYDilation,mouseAreaXDilation:"horizontal"===n.orientation?n.spacing/2:n.mouseAreaXDilation,mouseAreaYDilation:"vertical"===n.orientation?n.spacing/2:n.mouseAreaYDilation},n.radioButtonOptions,t.options))});n.children=r,super(n),this.onInputEmitter=new v.A;const a=new lb(this);a.focusTargetProperty.link(e=>{if(e){const t=e;a.focusWasInGroup?t.voicingSpeakNameResponse():t.voicingSpeakFullResponse({contextResponse:null,hintResponse:this.accessibleHelpText})}}),this.addInputListener(a),this.addAriaLabelledbyAssociation({thisElementName:qs.PRIMARY_SIBLING,otherNode:this,otherElementName:qs.LABEL_SIBLING});const l={keydown:e=>{Gn.A.isArrowKey(e.domEvent)&&e.pointer.reserveForKeyboardDrag()}};this.addInputListener(l);const h=this.onRadioButtonInput.bind(this);for(let o=0;o{this.removeInputListener(l),r.forEach(e=>e.dispose()),this.onInputEmitter.dispose(),a.dispose(),s.forEach(e=>e.dispose())},this.radioButtons=r}};Vb.register("AquaRadioButtonGroup",Cb);let Ib=class extends Se.A{};Ib.IDLE=new Ib,Ib.OVER=new Ib,Ib.PRESSED=new Ib,Ib.enumeration=new Ee.A(Ib),Vb.register("ButtonInteractionState",Ib);let xb=class extends be{constructor(e){super([e.focusedProperty,e.overProperty,e.looksOverProperty,e.looksPressedProperty],(e,t,i,n)=>i&&!n?Ib.OVER:(t||e)&&n?Ib.PRESSED:Ib.IDLE,{valueType:Ib})}};Vb.register("PushButtonInteractionStateProperty",xb);let Db=class extends Je{dispose(){this.disposeButtonModel(),super.dispose()}createPressListener(e){var t=this;e=(0,o.sF)({canStartPress:()=>this.enabledProperty.value},e);const i=new Or(e);this.listeners.push(i),i.isPressedProperty.lazyLink(e=>{this.interrupted=i.interrupted,this.downProperty.set(e)}),i.isOverProperty.lazyLink(this.overProperty.set.bind(this.overProperty)),i.isFocusedProperty.lazyLink(this.focusedProperty.set.bind(this.focusedProperty)),i.pdomClickingProperty.lazyLink(this.pdomClickingProperty.set.bind(this.pdomClickingProperty)),this.looksPressedMultilink&&this.looksPressedMultilink.dispose(),this.looksOverMultilink&&this.looksOverMultilink.dispose();const n=this.listeners.map(e=>e.looksPressedProperty);n.push(this.downProperty),this.looksPressedMultilink=Ve.multilinkAny(n,(function(){for(var e=arguments.length,i=new Array(e),n=0;ne||t,!1)}));const s=this.listeners.map(e=>e.looksOverProperty);return this.looksOverMultilink=Ve.multilinkAny(s,(function(){for(var e=arguments.length,i=new Array(e),n=0;ne||t,!1)})),i}constructor(e){const t=(0,o.Ay)()({startCallback:_.noop,endCallback:_.noop,tandem:P.A.REQUIRED,phetioState:b.A.DEFAULT_OPTIONS.phetioState,phetioReadOnly:b.A.DEFAULT_OPTIONS.phetioReadOnly,phetioFeatured:b.A.DEFAULT_OPTIONS.phetioFeatured},e);t.enabledPropertyOptions=(0,o.sF)({phetioState:t.phetioState,phetioReadOnly:t.phetioReadOnly,phetioDocumentation:"When disabled, the button is grayed out and cannot be pressed",phetioFeatured:!0},t.enabledPropertyOptions),super(t),this.overProperty=new c(!1),this.downProperty=new c(!1,{reentrant:!0}),this.pdomClickingProperty=new c(!1),this.focusedProperty=new c(!1),this.looksPressedProperty=new c(!1),this.looksOverProperty=new c(!1),this.produceSoundEmitter=new v.A,this.interrupted=!1,this.listeners=[],this.looksPressedMultilink=null,this.looksOverMultilink=null,this.downProperty.lazyLink(e=>{e?t.startCallback():t.endCallback(this.looksOverProperty.get())}),this.enabledProperty.link(e=>{if(!e)for(let t=0;t{this.overProperty.dispose(),this.downProperty.dispose(),this.pdomClickingProperty.dispose(),this.produceSoundEmitter.dispose(),this.looksPressedMultilink&&this.looksPressedMultilink.dispose(),this.looksOverMultilink&&this.looksOverMultilink.dispose(),this.listeners=[]}}};Vb.register("ButtonModel",Db);let kb=class extends Db{dispose(){this.disposePushButtonModel(),super.dispose()}addListener(e){this.firedEmitter.addListener(e)}removeListener(e){this.firedEmitter.removeListener(e)}fire(){this.isFiringProperty.value=!0,this.firedEmitter.emit(),this.isFiringProperty.value=!1}constructor(e){const t=(0,o.Ay)()({fireOnDown:!1,listener:null,interruptListener:null,fireOnHold:!1,fireOnHoldDelay:400,fireOnHoldInterval:100,tandem:P.A.REQUIRED,phetioReadOnly:b.A.DEFAULT_OPTIONS.phetioReadOnly},e);super(t),this.startEvent=null,this.isFiringProperty=new c(!1),this.firedEmitter=new v.A({tandem:t.tandem.createTandem("firedEmitter"),phetioDocumentation:"Emits when the button is fired",phetioReadOnly:t.phetioReadOnly,phetioEventType:je.A.USER,hasListenerOrderDependencies:!0}),t.interruptListener&&this.firedEmitter.addListener(()=>{t.interruptListener(this.startEvent)}),null!==t.listener&&this.firedEmitter.addListener(t.listener),t.fireOnHold&&(this.timer=new Ke({callback:this.fire.bind(this),delay:t.fireOnHoldDelay,interval:t.fireOnHoldInterval}));const i=e=>{if(e){var i,n,s,r;if(this.enabledProperty.get())this.startEvent=(null==(r=window.phet)||null==(s=r.joist)||null==(n=s.display)||null==(i=n._input)?void 0:i.currentSceneryEvent)||null,t.fireOnDown&&this.fire(),this.timer&&this.timer.start(),(t.fireOnDown||this.timer)&&this.produceSoundEmitter.emit()}else{const e=!t.fireOnDown&&(this.overProperty.get()||this.focusedProperty.get())&&this.enabledProperty.get()&&!this.interrupted;this.timer?this.timer.stop(e):e&&(this.produceSoundEmitter.emit(),this.fire())}};this.downProperty.link(i);const n=e=>{!e&&this.timer&&this.timer.stop(!1)};this.enabledProperty.link(n),this.disposePushButtonModel=()=>{this.isFiringProperty.value=!1,this.isFiringProperty.dispose(),this.firedEmitter.dispose(),this.downProperty.unlink(i),this.enabledProperty.unlink(n),this.timer&&(this.timer.dispose(),this.timer=null)}}};Vb.register("PushButtonModel",kb);let Mb=class extends h.A{setPaint(e){this._paint=e,this._paintObserver.setPrimary(e)}set paint(e){this.setPaint(e)}get paint(){return this.getPaint()}getPaint(){return this._paint}setLuminanceFactor(e){this.luminanceFactor!==e&&(this._luminanceFactor=e,this.invalidatePaint())}set luminanceFactor(e){this.setLuminanceFactor(e)}get luminanceFactor(){return this.getLuminanceFactor()}getLuminanceFactor(){return this._luminanceFactor}invalidatePaint(){this.value=la.toColor(this._paint).colorUtilsBrightness(this._luminanceFactor)}dispose(){this.paint=null,super.dispose()}constructor(e,t){const i=la.toColor(e),n=(0,o.Ay)()({luminanceFactor:0,valueComparisonStrategy:"equalsFunction"},t);super(i,n),this._paint=null,this._luminanceFactor=n.luminanceFactor,this._changeListener=this.invalidatePaint.bind(this),this._paintObserver=new $r(this._changeListener),this.setPaint(e)}};ot.A.register("PaintColorProperty",Mb);let Bb=1,Ob=class{isDOMCompatible(){return!1}isSVGCompatible(){return!1}isCanvasCompatible(){return!!ms.canvasFilter&&this.isDOMCompatible()}isWebGLCompatible(){return!1}toString(){return this.id}static applyColorMatrix(e,t,i,n){const s=document.createElementNS(Eo,"feColorMatrix");s.setAttribute("type","matrix"),s.setAttribute("values",e),s.setAttribute("in",i),s.setAttribute("color-interpolation-filters","sRGB"),n&&s.setAttribute("result",n),t.appendChild(s)}constructor(){this.id="filter"+Bb++,this.filterRegionPercentageIncrease=0}};ot.A.register("Filter",Ob);const Lb=bo.supportsImageDataCanvasFilter();let Rb=class extends Ob{applySVGFilter(e,t,i){Ob.applyColorMatrix(`${wt(this.m00)} ${wt(this.m01)} ${wt(this.m02)} ${wt(this.m03)} ${wt(this.m04)} ${wt(this.m10)} ${wt(this.m11)} ${wt(this.m12)} ${wt(this.m13)} ${wt(this.m14)} ${wt(this.m20)} ${wt(this.m21)} ${wt(this.m22)} ${wt(this.m23)} ${wt(this.m24)} ${wt(this.m30)} ${wt(this.m31)} ${wt(this.m32)} ${wt(this.m33)} ${wt(this.m34)}`,e,t,i)}applyCanvasFilter(e){const t=e.canvas.width,i=e.canvas.height,n=e.context.getImageData(0,0,t,i),s=t*i;for(let r=0;r0&&void 0!==arguments[0]?arguments[0]:1;const t=1-e;super(.2126+.7874*t,.7152-.7152*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152+.2848*t,.0722-.0722*t,0,0,.2126-.2126*t,.7152-.7152*t,.0722+.9278*t,0,0,0,0,0,1,0),this.amount=e}};Fb.FULL=new Fb(1),ot.A.register("Grayscale",Fb);const Hb=Jo(Dr);let Yb=class extends Hb{invalidateAlignment(){this._group&&this._group.onAlignBoxResized(this),this.constraint.updateLayout()}setAlignBounds(e){return this._xSet=!0,this._ySet=!0,this._alignBounds===e||e&&this._alignBounds&&e.equals(this._alignBounds)||(this._alignBounds=e,this.constraint.updateLayout()),this}set alignBounds(e){this.setAlignBounds(e)}get alignBounds(){return this.getAlignBounds()}getAlignBounds(){return this._alignBounds}setGroup(e){return this._group!==e&&(this._group&&this._group.removeAlignBox(this),this._group=e,this._group&&this._group.addAlignBox(this)),this}set group(e){this.setGroup(e)}get group(){return this.getGroup()}getGroup(){return this._group}setXAlign(e){return this._xAlign!==e&&(this._xAlign=e,this.invalidateAlignment()),this}set xAlign(e){this.setXAlign(e)}get xAlign(){return this.getXAlign()}getXAlign(){return this._xAlign}setYAlign(e){return this._yAlign!==e&&(this._yAlign=e,this.invalidateAlignment()),this}set yAlign(e){this.setYAlign(e)}get yAlign(){return this.getYAlign()}getYAlign(){return this._yAlign}getAlign(){return this._xAlign}setAlign(e){return this.setXAlign(e),this.setYAlign(e),this}get align(){return this.getAlign()}set align(e){this.setAlign(e)}setMargin(e){return this._leftMargin===e&&this._rightMargin===e&&this._topMargin===e&&this._bottomMargin===e||(this._leftMargin=this._rightMargin=this._topMargin=this._bottomMargin=e,this.invalidateAlignment()),this}set margin(e){this.setMargin(e)}get margin(){return this.getMargin()}getMargin(){return this._leftMargin}setXMargin(e){return this._leftMargin===e&&this._rightMargin===e||(this._leftMargin=this._rightMargin=e,this.invalidateAlignment()),this}set xMargin(e){this.setXMargin(e)}get xMargin(){return this.getXMargin()}getXMargin(){return this._leftMargin}setYMargin(e){return this._topMargin===e&&this._bottomMargin===e||(this._topMargin=this._bottomMargin=e,this.invalidateAlignment()),this}set yMargin(e){this.setYMargin(e)}get yMargin(){return this.getYMargin()}getYMargin(){return this._topMargin}setLeftMargin(e){return this._leftMargin!==e&&(this._leftMargin=e,this.invalidateAlignment()),this}set leftMargin(e){this.setLeftMargin(e)}get leftMargin(){return this.getLeftMargin()}getLeftMargin(){return this._leftMargin}setRightMargin(e){return this._rightMargin!==e&&(this._rightMargin=e,this.invalidateAlignment()),this}set rightMargin(e){this.setRightMargin(e)}get rightMargin(){return this.getRightMargin()}getRightMargin(){return this._rightMargin}setTopMargin(e){return this._topMargin!==e&&(this._topMargin=e,this.invalidateAlignment()),this}set topMargin(e){this.setTopMargin(e)}get topMargin(){return this.getTopMargin()}getTopMargin(){return this._topMargin}setBottomMargin(e){return this._bottomMargin!==e&&(this._bottomMargin=e,this.invalidateAlignment()),this}set bottomMargin(e){this.setBottomMargin(e)}get bottomMargin(){return this.getBottomMargin()}getBottomMargin(){return this._bottomMargin}getContent(){return this._content}get content(){return this.getContent()}getContentBounds(){const e=this._content.bounds;return new Me(e.left-this._leftMargin,e.top-this._topMargin,e.right+this._rightMargin,e.bottom+this._bottomMargin)}getMinimumWidth(){var e;return("stretch"===this._xAlign&&rr(this._content)?null!=(e=this._content.minimumWidth)?e:0:this._content.width)+this._leftMargin+this._rightMargin}getMinimumHeight(){var e;return("stretch"===this._yAlign&&or(this._content)?null!=(e=this._content.minimumHeight)?e:0:this._content.height)+this._topMargin+this._bottomMargin}setAdjustedLocalBounds(e){if(this._xSet&&this._ySet)this.localBounds=e;else if(this._xSet){const t=this.getContentBounds();this.localBounds=new Me(e.minX,t.minY,e.maxX,t.maxY)}else if(this._ySet){const t=this.getContentBounds();this.localBounds=new Me(t.minX,e.minY,t.maxX,e.maxY)}else this.localBounds=this.getContentBounds()}dispose(){this._alignBoundsProperty&&this._alignBoundsProperty.unlink(this._alignBoundsPropertyListener),this._content.boundsProperty.unlink(this._contentBoundsListener),ar(this._content)&&this._content.minimumWidthProperty.unlink(this._contentBoundsListener),lr(this._content)&&this._content.minimumHeightProperty.unlink(this._contentBoundsListener),this._content=new Dr,this.group=null,this.constraint.dispose(),super.dispose()}mutate(e){return super.mutate(e)}constructor(e,t){const i=(0,o.Ay)()({children:[e]},t);super({sizable:!1}),this._xSet=!1,this._ySet=!1,this._contentBoundsListener=_.noop,this._content=e,this._alignBounds=null,this._xAlign="center",this._yAlign="center",this._leftMargin=0,this._rightMargin=0,this._topMargin=0,this._bottomMargin=0,this._group=null,this._contentBoundsListener=this.invalidateAlignment.bind(this),this._alignBoundsProperty=null,this._alignBoundsPropertyListener=_.noop,(0,u.A)(i,["alignBounds"],["alignBoundsProperty"]),(null==t?void 0:t.alignBoundsProperty)&&(this._alignBoundsProperty=t.alignBoundsProperty,i.alignBounds=this._alignBoundsProperty.value,this._alignBoundsPropertyListener=e=>{this.alignBounds=e},this._alignBoundsProperty.lazyLink(this._alignBoundsPropertyListener)),this.localBounds=new Me(0,0,0,0),this.constraint=new Gb(this,e),this._content.boundsProperty.link(this._contentBoundsListener),ar(this._content)&&this._content.minimumWidthProperty.link(this._contentBoundsListener),lr(this._content)&&this._content.minimumHeightProperty.link(this._contentBoundsListener),this.mutate(i),Ve.multilink([this.localPreferredWidthProperty,this.localPreferredHeightProperty],(e,t)=>{if(null!==e||null!==t){const i=this._alignBounds||new Me(0,0,0,0);e&&(i.minX=0,i.maxX=e,this._xSet=!0),t&&(i.minY=0,i.maxY=t,this._ySet=!0),this._alignBounds=i,this.constraint.updateLayout()}})}},Gb=class extends Vy{updateProperty(e,t){const i=this.content[e],n=this.alignBox.localBounds[e]+t;Math.abs(i-n)>1e-5&&(this.content[e]=n)}layout(){super.layout();const e=this.alignBox,t=this.content;if(!t.bounds.isValid())return;const i=e.leftMargin+e.rightMargin,n=e.topMargin+e.bottomMargin;if(null!==e.alignBounds)e.setAdjustedLocalBounds(e.alignBounds);else{const s=t.width+i,r=t.height+n;e.setAdjustedLocalBounds(new Me(0,0,s,r))}const s=isFinite(t.width)?(rr(t)?t.minimumWidth||0:t.width)+i:null,r=isFinite(t.height)?(or(t)?t.minimumHeight||0:t.height)+n:null;t.localBounds.isEmpty()||("center"===e.xAlign?this.updateProperty("centerX",(e.leftMargin-e.rightMargin)/2):"left"===e.xAlign?this.updateProperty("left",e.leftMargin):"right"===e.xAlign?this.updateProperty("right",-e.rightMargin):"stretch"===e.xAlign&&(t.preferredWidth=e.localWidth-e.leftMargin-e.rightMargin,this.updateProperty("left",e.leftMargin)),"center"===e.yAlign?this.updateProperty("centerY",(e.topMargin-e.bottomMargin)/2):"top"===e.yAlign?this.updateProperty("top",e.topMargin):"bottom"===e.yAlign?this.updateProperty("bottom",-e.bottomMargin):"stretch"===e.yAlign&&(t.preferredHeight=e.localHeight-e.topMargin-e.bottomMargin,this.updateProperty("top",e.topMargin))),e.localMinimumWidth=e.widthSizable?s:e.localWidth,e.localMinimumHeight=e.heightSizable?r:e.localHeight}constructor(e,t){super(e),this.alignBox=e,this.content=t,this.addNode(t),e.isWidthResizableProperty.lazyLink(this._updateLayoutListener),e.isHeightResizableProperty.lazyLink(this._updateLayoutListener)}};Yb.prototype._mutatorKeys=["alignBounds","align","xAlign","yAlign","margin","xMargin","yMargin","leftMargin","rightMargin","topMargin","bottomMargin","group"].concat(Hb.prototype._mutatorKeys),ot.A.register("AlignBox",Yb);const Ub={LIGHT_BLUE:new jr(153,206,255),LIGHT_GRAY:new jr(220,220,220)},zb=new qb(.7),Wb=new Nb(1.2);let Qb=class e extends(Jo(pA(Dr))){dispose(){this.disposeButtonNode(),super.dispose()}setBaseColor(e){this._settableBaseColorProperty.paint=e}set baseColor(e){this.setBaseColor(e)}get baseColor(){return this.getBaseColor()}getBaseColor(){return this._settableBaseColorProperty.paint}pdomClick(){this._pressListener.click(null)}constructor(t,i,n,s){var r;const a=(0,o.Ay)()({content:null,xMargin:10,yMargin:5,xAlign:"center",yAlign:"center",xContentOffset:0,yContentOffset:0,baseColor:Ub.LIGHT_BLUE,cursor:"pointer",buttonAppearanceStrategy:e.FlatAppearanceStrategy,buttonAppearanceStrategyOptions:{},contentAppearanceStrategy:null,contentAppearanceStrategyOptions:{},enabledAppearanceStrategy:(e,t,i,n)=>{i.filters=e?[]:[zb,Wb],n&&(n.filters=e?[]:[Fb.FULL],n.opacity=e?1:Vf.DISABLED_OPACITY)},disabledColor:Ub.LIGHT_GRAY,tagName:"button",tandemNameSuffix:"Button",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},s);a.listenerOptions=(0,o.sF)({tandem:null==(r=a.tandem)?void 0:r.createTandem("pressListener")},a.listenerOptions),a.enabledProperty=t.enabledProperty,super(),this.contentContainer=null,this.layoutSizeProperty=new g.A(new Ne(0,0)),this.content=a.content,this.buttonModel=t,this._settableBaseColorProperty=new Mb(a.baseColor),this._disabledColorProperty=new Mb(a.disabledColor),this.baseColorProperty=new de([this._settableBaseColorProperty,this.enabledProperty,this._disabledColorProperty],(e,t,i)=>t?e:i),this._pressListener=t.createPressListener(a.listenerOptions),this.addInputListener(this._pressListener),i.fill=this.baseColorProperty,this.addChild(i);const l=new a.buttonAppearanceStrategy(i,n,this.baseColorProperty,a.buttonAppearanceStrategyOptions);let h;a.contentAppearanceStrategy&&a.content&&(h=new a.contentAppearanceStrategy(a.content,n,a.contentAppearanceStrategyOptions)),this.maxLineWidth=l.maxLineWidth;let c=null,d=null;a.content&&(this.contentContainer=new Dr({children:[a.content],pickable:!1}),c=new Yb(this.contentContainer,{xAlign:a.xAlign,yAlign:a.yAlign,leftMargin:a.xMargin+a.xContentOffset,rightMargin:a.xMargin-a.xContentOffset,topMargin:a.yMargin+a.yContentOffset,bottomMargin:a.yMargin-a.yContentOffset}),d=Ve.multilink([i.boundsProperty,this.layoutSizeProperty],(e,t)=>{t.width>0&&t.height>0&&(c.alignBounds=Me.point(e.center).dilatedXY(t.width/2,t.height/2))}),this.addChild(c)),this.mutate(a),this.enabledProperty.link(e=>a.enabledAppearanceStrategy(e,this,i,c)),this.disposeButtonNode=()=>{c&&c.dispose(),d&&d.dispose(),l.dispose&&l.dispose(),h&&h.dispose&&h.dispose(),this._pressListener.dispose(),this.baseColorProperty.dispose(),this._settableBaseColorProperty.dispose(),this._disabledColorProperty.dispose()}}};Qb.FlatAppearanceStrategy=class{dispose(){this.disposeFlatAppearanceStrategy()}constructor(e,t,i,n){const s=new Mb(i,{luminanceFactor:.4}),r=new Mb(i,{luminanceFactor:-.4}),a=i,l=s,h=r,c=(0,o.sF)({stroke:r},n),d="number"==typeof c.lineWidth?c.lineWidth:1;function u(t){switch(t){case Ib.IDLE:e.fill=a;break;case Ib.OVER:e.fill=l;break;case Ib.PRESSED:e.fill=h;break;default:throw new Error("unsupported interactionState: "+t)}}e.stroke=c.stroke||r,e.lineWidth=d,this.maxLineWidth=e.hasStroke()?d:0,e.cachedPaints=[a,l,h],t.link(u),this.disposeFlatAppearanceStrategy=()=>{t.hasListener(u)&&t.unlink(u),s.dispose(),r.dispose()}}},Vb.register("ButtonNode",Qb);let Kb=class e extends Qb{constructor(t,i,n){let s=(0,o.Ay)()({size:null,minWidth:10,minHeight:10,xMargin:8,yMargin:5,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,touchAreaXShift:0,touchAreaYShift:0,mouseAreaXShift:0,mouseAreaYShift:0,stroke:null,lineWidth:.5,cornerRadius:4,leftTopCornerRadius:null,rightTopCornerRadius:null,leftBottomCornerRadius:null,rightBottomCornerRadius:null,buttonAppearanceStrategy:e.ThreeDAppearanceStrategy},n);s.content,s.size,s.buttonAppearanceStrategyOptions||(s.buttonAppearanceStrategyOptions={stroke:s.stroke,lineWidth:s.lineWidth});const r=new ga(null),a=_.pick(s,Dr.REQUIRES_BOUNDS_OPTION_KEYS);var l;s=_.omit(s,Dr.REQUIRES_BOUNDS_OPTION_KEYS),super(t,r,i,s),this.buttonNodeConstraint=new jb(this,this.layoutSizeProperty,{content:null!=(l=s.content)?l:null,size:s.size,buttonBackground:r,buttonBackgroundOptions:s,minWidth:s.minWidth,minHeight:s.minHeight,xMargin:s.xMargin,yMargin:s.yMargin,maxLineWidth:this.maxLineWidth,touchAreaXDilation:s.touchAreaXDilation,touchAreaYDilation:s.touchAreaYDilation,touchAreaXShift:s.touchAreaXShift,touchAreaYShift:s.touchAreaYShift,mouseAreaXDilation:s.mouseAreaXDilation,mouseAreaYDilation:s.mouseAreaYDilation,mouseAreaXShift:s.mouseAreaXShift,mouseAreaYShift:s.mouseAreaYShift}),this.addDisposable(this.buttonNodeConstraint),this.mutate(a)}};Kb.ThreeDAppearanceStrategy=class{dispose(){this.disposeThreeDAppearanceStrategy()}constructor(e,t,i,n){const s=n&&n.stroke?n.stroke:new Mb(i,{luminanceFactor:-.4}),r=n&&void 0!==n.lineWidth?n.lineWidth:.5,a=(0,o.Ay)()({stroke:s,lineWidth:r,overStroke:s,overLineWidth:r,overFill:i,overButtonOpacity:1,selectedStroke:s,selectedLineWidth:r,selectedButtonOpacity:1,deselectedStroke:s,deselectedFill:null,deselectedLineWidth:r,deselectedButtonOpacity:1},n),l=new Mb(i,{luminanceFactor:.7}),h=new Mb(i,{luminanceFactor:.5}),c=new Mb(i,{luminanceFactor:.2}),d=new Mb(i,{luminanceFactor:-.3}),u=new Mb(i,{luminanceFactor:-.4}),p=new Mb(i,{luminanceFactor:-.5}),m=new de([i],e=>e.withAlpha(0)),g=new jr(255,255,255,.7),A=new ga(null,{stroke:a.stroke,lineWidth:a.lineWidth,pickable:!1});let y;e.addChild(A),this.maxLineWidth="number"==typeof a.lineWidth?a.lineWidth:0;const f=()=>{if(!e.shape)return;const n=e.shape.bounds.width,s=e.shape.bounds.height;A.shape=e.shape;const r=Math.min(7/s,1),o=Math.max(1-3/s,0),u=Math.min(7/n,1),f=Math.max(1-3/n,0),b=new sb(0,0,0,s).addColorStop(0,l).addColorStop(r,i).addColorStop(o,i).addColorStop(1,p),P=new sb(0,0,n,0).addColorStop(0,g).addColorStop(u,m).addColorStop(f,m).addColorStop(1,p),V=new sb(0,0,0,s).addColorStop(0,l).addColorStop(r,h).addColorStop(o,h).addColorStop(1,p),w=new sb(0,0,n,0).addColorStop(0,g).addColorStop(u/2,new jr(255,255,255,0)).addColorStop(f,m).addColorStop(1,d),v=new sb(0,0,0,s).addColorStop(0,l).addColorStop(.67*r,d).addColorStop(o,c).addColorStop(1,p);e.cachedPaints=[b,V,v],A.cachedPaints=[P,w],y&&t.unlink(y),y=t=>{switch(t){case Ib.IDLE:e.fill=a.deselectedFill||b,e.stroke=a.deselectedStroke,e.lineWidth=a.deselectedLineWidth,e.opacity=a.deselectedButtonOpacity,A.fill=P,A.opacity=a.deselectedButtonOpacity;break;case Ib.OVER:e.fill=V,e.stroke=a.overStroke,e.lineWidth=a.overLineWidth,e.opacity=a.overButtonOpacity,A.fill=w,A.opacity=a.overButtonOpacity;break;case Ib.PRESSED:e.fill=v,e.stroke=a.selectedStroke,e.lineWidth=a.selectedLineWidth,e.opacity=a.selectedButtonOpacity,A.fill=w,A.opacity=a.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+t)}},t.link(y)};e.selfBoundsProperty.link(f),this.disposeThreeDAppearanceStrategy=()=>{e.selfBoundsProperty.unlink(f),t.hasListener(y)&&t.unlink(y),l.dispose(),h.dispose(),c.dispose(),d.dispose(),u.dispose(),p.dispose(),m.dispose()}}};let jb=class extends Vy{layout(){super.layout();const e=this.buttonNode,t=this.options.content,i=t?this.createLayoutProxy(t):null;if(!!t!=!!i)return;const n=e.widthSizable,s=e.heightSizable;let r=i?i.minimumWidth+2*this.options.xMargin:0,o=i?i.minimumHeight+2*this.options.yMargin:0;this.options.size&&(r=this.options.size.width,o=this.options.size.height),this.options.minWidth&&(r=Math.max(this.options.minWidth+this.options.maxLineWidth,r)),this.options.minHeight&&(o=Math.max(this.options.minHeight+this.options.maxLineWidth,o));const a=this.isFirstLayout||n?r:e.localMinimumWidth,l=this.isFirstLayout||s?o:e.localMinimumHeight;var h,c;if(this.lastLocalWidth=this.isFirstLayout||n?Math.max(a,n&&null!=(h=e.localPreferredWidth)?h:0):this.lastLocalWidth,this.lastLocalHeight=this.isFirstLayout||s?Math.max(l,s&&null!=(c=e.localPreferredHeight)?c:0):this.lastLocalHeight,(this.isFirstLayout||n||s)&&(this.options.buttonBackground.shape=function(e,t,i){const n=Math.min(e/2,t/2);return Ui.roundedRectangleWithRadii(0,0,e,t,{topLeft:Math.min(n,null!==i.leftTopCornerRadius?i.leftTopCornerRadius:i.cornerRadius),topRight:Math.min(n,null!==i.rightTopCornerRadius?i.rightTopCornerRadius:i.cornerRadius),bottomLeft:Math.min(n,null!==i.leftBottomCornerRadius?i.leftBottomCornerRadius:i.cornerRadius),bottomRight:Math.min(n,null!==i.rightBottomCornerRadius?i.rightBottomCornerRadius:i.cornerRadius)})}((n?this.lastLocalWidth:a)-this.options.maxLineWidth,(s?this.lastLocalHeight:l)-this.options.maxLineWidth,this.options.buttonBackgroundOptions),this.buttonNode.touchArea=this.options.buttonBackground.localBounds.dilatedXY(this.options.touchAreaXDilation,this.options.touchAreaYDilation).shiftedXY(this.options.touchAreaXShift,this.options.touchAreaYShift),this.buttonNode.mouseArea=this.options.buttonBackground.localBounds.dilatedXY(this.options.mouseAreaXDilation,this.options.mouseAreaYDilation).shiftedXY(this.options.mouseAreaXShift,this.options.mouseAreaYShift)),i){const e=this.lastLocalWidth-2*this.options.xMargin,t=this.lastLocalHeight-2*this.options.yMargin;if(i.preferredWidth=e,i.preferredHeight=t,this.options.size){const i=this.buttonNode.contentContainer;i.maxWidth=e,i.maxHeight=t}}this.isFirstLayout=!1,this.layoutSizeProperty.value=new Ne(this.lastLocalWidth,this.lastLocalHeight),e.localMinimumWidth=a,e.localMinimumHeight=l,i&&i.dispose()}dispose(){this.buttonNode.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t,i){super(e),this.buttonNode=e,this.layoutSizeProperty=t,this.isFirstLayout=!0,this.lastLocalWidth=0,this.lastLocalHeight=0,this.options=i,this.buttonNode.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.options.content&&this.addNode(this.options.content),this.layout()}};Vb.register("RectangularButton",Kb);let Zb=class extends Kb{dispose(){super.dispose(),this.disposeRectangularPushButton()}addListener(e){this.pushButtonModel.addListener(e)}removeListener(e){this.pushButtonModel.removeListener(e)}constructor(e){const t=(0,o.Ay)()({soundPlayer:Wm.get("pushButton"),tandem:P.A.REQUIRED,listenerOptions:{tandem:P.A.OPT_OUT}},e),i=t.listener,n=_.omit(t,["listener"]),s=new kb(n);super(s,new xb(s),n),this.pushButtonModel=s,i&&this.addListener(i);const r=()=>{t.soundPlayer.play()};s.produceSoundEmitter.addListener(r),this.disposeRectangularPushButton=function(){s.produceSoundEmitter.removeListener(r),s.dispose()}}};Vb.register("RectangularPushButton",Zb);const _b=Ui.roundRectangle(1,1,25,25,4.99,4.99).getStrokedShape(new pi({lineWidth:2})),Xb=new Ui("M26,14.68v6.33c0,2.76-2.23,4.99-4.99,4.99H5.99c-2.76,0-4.99-2.23-4.99-4.99V5.99C1,3.23,3.23,1,5.99,1h15.02").getStrokedShape(new pi({lineWidth:2,lineCap:"round"})),Jb=new Ui("M13.42,21.27l-7.42-7.42c-.68-.68-.68-1.78,0-2.46l1.71-1.71c.68-.68,1.78-.68,2.46,0l4.48,4.48L28.29.51c.68-.68,1.78-.68,2.46,0l1.71,1.71c.68.68.68,1.78,0,2.46L15.88,21.27c-.68.68-1.78.68-2.46,0Z"),$b=new Ui([...Xb.subpaths,...Jb.subpaths]),eP={valueType:"boolean"},tP=Tt(1.3,0,0,0,1.3,0,0,0,1),iP=_b.transformed(tP),nP=$b.transformed(tP);let sP=class extends(jo(pA(Dr))){setInputEnabledProperty(e){return this}dispose(){this.constraint.dispose(),this.disposeCheckbox(),super.dispose()}setCheckboxColorBackground(e){this.backgroundNode.fill=e}set checkboxColorBackground(e){this.setCheckboxColorBackground(e)}get checkboxColorBackground(){return this.getCheckboxColorBackground()}getCheckboxColorBackground(){return this.backgroundNode.fill}setCheckboxColor(e){this.checkedNode.fill=this.uncheckedNode.fill=e}set checkboxColor(e){this.setCheckboxColor(e)}get checkboxColor(){return this.getCheckboxColor()}getCheckboxColor(){return this.checkedNode.fill}setMouseArea(e){return this._isSettingAreas||(this._isMouseAreaCustomized=!0),super.setMouseArea(e)}setTouchArea(e){return this._isSettingAreas||(this._isTouchAreaCustomized=!0),super.setTouchArea(e)}constructor(e,t,i){const n=(0,o.Ay)()({spacing:5,boxWidth:21,checkboxColor:"black",checkboxColorBackground:"white",touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,checkedSoundPlayer:Wm.get("checkboxChecked"),uncheckedSoundPlayer:Wm.get("checkboxUnchecked"),phetioDisplayOnlyPropertyInstrumented:!1,cursor:"pointer",disabledOpacity:Vf.DISABLED_OPACITY,tandem:P.A.REQUIRED,tandemNameSuffix:"Checkbox",phetioEventType:je.A.USER,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioReadOnly:b.A.DEFAULT_OPTIONS.phetioReadOnly,phetioFeatured:!0,tagName:"input",inputType:"checkbox",appendDescription:!0,voicingCheckedObjectResponse:null,voicingUncheckedObjectResponse:null,accessibleNameBehavior:pA.BASIC_ACCESSIBLE_NAME_BEHAVIOR,accessibleHelpTextBehavior:pA.BASIC_HELP_TEXT_BEHAVIOR,checkedContextResponse:null,uncheckedContextResponse:null,voiceNameResponseOnSelection:!0},i);super(),this._isMouseAreaCustomized=!1,this._isTouchAreaCustomized=!1,this._isSettingAreas=!1,this.backgroundNode=new Va(0,-n.boxWidth,.95*n.boxWidth,.95*n.boxWidth,.2*n.boxWidth,.2*n.boxWidth,{fill:n.checkboxColorBackground}),this.uncheckedNode=new ga(iP,{fill:n.checkboxColor});const s=n.boxWidth/this.uncheckedNode.width;this.uncheckedNode.scale(s),this.uncheckedNode.center=this.backgroundNode.center,this.checkedNode=new ga(nP,{scale:s,fill:n.checkboxColor}),this.checkedNode.translation=this.uncheckedNode.translation;const r=new Dr({children:[this.backgroundNode,this.checkedNode,this.uncheckedNode]}),a=new Va({});this.children=[r,t,a],this.constraint=new rP(this,r,this.checkedNode,t,a,n),this.constraint.updateLayout(),t.pickable=!1,t.pdomVisible=!1;const l=new Lr({fire:()=>{e.value=!e.value,(0,L.A)(e.value,eP),e.value?(n.checkedSoundPlayer.play(),n.checkedContextResponse&&this.alertDescriptionUtterance(n.checkedContextResponse),this.voicingSpeakResponse({nameResponse:n.voiceNameResponseOnSelection?this.voicingNameResponse:null,objectResponse:Tn.alertableToText(n.voicingCheckedObjectResponse),contextResponse:Tn.alertableToText(n.checkedContextResponse)})):(n.uncheckedSoundPlayer.play(),n.uncheckedContextResponse&&this.alertDescriptionUtterance(n.uncheckedContextResponse),this.voicingSpeakResponse({nameResponse:n.voiceNameResponseOnSelection?this.voicingNameResponse:null,objectResponse:Tn.alertableToText(n.voicingUncheckedObjectResponse),contextResponse:Tn.alertableToText(n.uncheckedContextResponse)}))},tandem:n.tandem});this.addInputListener(l);const h=new c(!1,{tandem:n.phetioDisplayOnlyPropertyInstrumented?n.tandem.createTandem("displayOnlyProperty"):P.A.OPT_OUT,phetioFeatured:!0,phetioDocumentation:"disables interaction for use as a legend"}),d=new de([this.enabledProperty,h],(e,t)=>e&&!t);super.setInputEnabledProperty(d);const u=new Ve([e,h],(e,t)=>{this.checkedNode.visible=e,this.uncheckedNode.visible=!e,r.visible=!t,this.tagName=t?"p":"input",t||(this.pdomChecked=e)});this.mutate(n),this.setExcludeLabelSiblingFromInput(),n.accessibleName||(this.accessibleName=Pb(t)),this.addLinkedElement(e,{tandemName:"property"}),this.disposeCheckbox=()=>{a.dispose(),this.backgroundNode.dispose(),this.uncheckedNode.dispose(),this.checkedNode.dispose(),r.dispose(),l.dispose(),u.dispose(),d.dispose(),h.dispose()}}},rP=class extends Vy{layout(){super.layout();const e=this.createLayoutProxy(this.content);if(!e)return;const t=e.minimumWidth,i=this.checkedNode.right-this.checkboxNode.left,n=i+this.options.spacing+t,s=Math.max(n,this.checkbox.localPreferredWidth||0);e.preferredWidth=s-i-this.options.spacing,e.left=this.checkedNode.right+this.options.spacing,e.centerY=this.checkedNode.centerY,this.rectangle.rectBounds=this.checkboxNode.bounds.union(e.bounds).withMaxX(Math.max(this.checkboxNode.left+s,e.right)),this.checkbox._isSettingAreas=!0,this.checkbox._isTouchAreaCustomized||(this.checkbox.touchArea=this.checkbox.localBounds.dilatedXY(this.options.touchAreaXDilation,this.options.touchAreaYDilation)),this.checkbox._isMouseAreaCustomized||(this.checkbox.mouseArea=this.checkbox.localBounds.dilatedXY(this.options.mouseAreaXDilation,this.options.mouseAreaYDilation)),this.checkbox._isSettingAreas=!1,e.dispose(),this.checkbox.localMinimumWidth=n}dispose(){this.checkbox.localPreferredWidthProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t,i,n,s,r){super(e),this.checkbox=e,this.checkboxNode=t,this.checkedNode=i,this.content=n,this.rectangle=s,this.options=r,this.checkbox.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.addNode(n)}};Vb.register("Checkbox",sP);let oP=class e extends Vy{layout(){if(super.layout(),!_.some(this.cells,e=>!e.isConnected())){const e=this.cells.map(e=>e.proxy);this.layoutCallback.apply(null,e),this.finishedLayoutEmitter.emit()}}dispose(){this.cells.forEach(e=>e.dispose()),super.dispose()}static create(t,i,n){return new e(t,i,n)}constructor(e,t,i){super(e),this.lock(),this.nodes=t,this.cells=t.map(e=>new ky(this,e,null)),this.layoutCallback=i,this.nodes.forEach(e=>this.addNode(e,!1)),this.unlock(),this.updateLayout()}};ot.A.register("ManualConstraint",oP);let aP=class e extends Dr{dispose(){this.disposeToggleNode(),super.dispose()}static CENTER(e){for(let t=1;t{const t=[];for(let n=0;ne.dispose())}}};Vb.register("ToggleNode",aP);let lP=class extends aP{constructor(e,t,i,n){super(e,[{value:!0,createNode:()=>t},{value:!1,createNode:()=>i}],n)}};Vb.register("BooleanToggleNode",lP);let hP=class extends fe{constructor(e){super([e.looksOverProperty,e.looksPressedProperty],(e,t)=>e&&!t?Ib.OVER:t?Ib.PRESSED:Ib.IDLE,{valueType:Ib})}};Vb.register("ToggleButtonInteractionStateProperty",hP);let cP=class extends Db{dispose(){this.disposeToggleButtonModel(),super.dispose()}toggle(){this.toggledEmitter.emit(),this.produceSoundEmitter.emit()}constructor(e,t,i,n){const s=(0,o.Ay)()({tandem:P.A.REQUIRED},n);super(s),this.valueOff=e,this.valueOn=t,this.valueProperty=i;const r=e=>{(this.overProperty.get()||this.focusedProperty.get())&&this.enabledProperty.get()&&!this.interrupted&&(e||this.toggle())};this.downProperty.link(r),this.toggledEmitter=new v.A({tandem:s.tandem.createTandem("toggledEmitter"),phetioDocumentation:"Emits when the button is toggled",phetioEventType:je.A.USER});this.toggledEmitter.addListener(()=>{this.valueProperty.value=this.valueProperty.value===this.valueOff?this.valueOn:this.valueOff}),this.disposeToggleButtonModel=()=>{this.downProperty.unlink(r),this.toggledEmitter.dispose()}}};Vb.register("ToggleButtonModel",cP);let dP=class extends Kb{dispose(){this.disposeRectangularToggleButton(),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({valueOffSoundPlayer:Wm.get("toggleOff"),valueOnSoundPlayer:Wm.get("toggleOn"),tandem:P.A.REQUIRED,phetioFeatured:!0,listenerOptions:{tandem:P.A.OPT_OUT}},n),r=new cP(t,i,e,s),a=new hP(r);super(r,a,s),this.addLinkedElement(e,{tandemName:"property"});const l=()=>{e.value===t?s.valueOffSoundPlayer.play():e.value===i&&s.valueOnSoundPlayer.play()};this.buttonModel.produceSoundEmitter.addListener(l),this.disposeRectangularToggleButton=()=>{this.buttonModel.produceSoundEmitter.removeListener(l),r.dispose()}}};Vb.register("RectangularToggleButton",dP);let uP=class extends dP{dispose(){this.disposeBooleanRectangularToggleButton(),super.dispose()}constructor(e,t,i,n){const s=new lP(e,t,i);super(e,!1,!0,(0,o.Ay)()({content:s,tandem:P.A.REQUIRED},n)),this.disposeBooleanRectangularToggleButton=()=>{s.dispose()}}};Vb.register("BooleanRectangularToggleButton",uP);let pP=class extends uP{dispose(){this.disposeExpandCollapseButton(),super.dispose()}constructor(e,t){const i=(0,o.Ay)()({sideLength:25,stroke:"black",touchAreaXDilation:5,touchAreaYDilation:5,tandem:P.A.REQUIRED,tandemNameSuffix:"Button"},t);i.cornerRadius=.1*i.sideLength,i.xMargin=.2*i.sideLength,i.yMargin=i.xMargin,i.buttonAppearanceStrategy=Qb.FlatAppearanceStrategy;const n=.6*i.sideLength,s={lineWidth:.15*i.sideLength,stroke:"white",centerX:i.sideLength/2,centerY:i.sideLength/2,pickable:!1},r=(new Ui).moveTo(n/2,0).lineTo(n/2,n).moveTo(0,n/2).lineTo(n,n/2),a=new ga(r,s),l=(new Ui).moveTo(-n/2,0).lineTo(n/2,0),h=new ga(l,s);super(e,h,a,i);const c=e=>{this.baseColor=e?"rgb( 255, 85, 0 )":"rgb( 0, 179, 0 )",this.setPDOMAttribute("aria-expanded",e)};e.link(c),this.disposeExpandCollapseButton=()=>{e.unlink(c)}}};Vb.register("ExpandCollapseButton",pP);const mP={fill:"white",stroke:"black",lineWidth:1,lineDash:[],xMargin:5,yMargin:5,cornerRadius:10,resize:!0,backgroundPickable:!0,excludeInvisibleChildrenFromBounds:!0,align:"left",minWidth:0,minHeight:0,labelTagName:"span",accessibleHelpTextBehavior:Js.HELP_TEXT_BEFORE_CONTENT};let gP=class extends(Jo(Dr)){getStroke(){return this._background.stroke}get stroke(){return this.getStroke()}set stroke(e){this.setStroke(e)}setStroke(e){this._background.stroke=e,this.constraint&&this.constraint.updateLayoutAutomatically()}getFill(){return this._background.fill}get fill(){return this.getFill()}set fill(e){this.setFill(e)}setFill(e){this._background.fill=e}setExcludeInvisibleChildrenFromBounds(e){super.setExcludeInvisibleChildrenFromBounds(e),this.constraint.updateLayoutAutomatically()}constructor(e,t){const i=(0,o.hz)()({},mP,t);super(),this._content=e,this._backgroundContainer=new Dr,this._background=new Va(0,0,1,1,{lineWidth:i.lineWidth,pickable:i.backgroundPickable,lineDash:i.lineDash,cornerRadius:i.cornerRadius}),this.setStroke(i.stroke),this.setFill(i.fill),this.addChild(this._backgroundContainer),this.addChild(e),this.constraint=new AP(this,i),this.constraint.updateLayout(),this.constraint.enabled=i.resize,this.mutate(i)}};gP.DEFAULT_PANEL_OPTIONS=mP;let AP=class extends Vy{layout(){super.layout();const e=this.panel,t=e._content,i=e._background,n=e.isChildIncludedInLayout(t);if(e._backgroundContainer.children=n?[i]:[],!n)return e.localMinimumWidth=null,void(e.localMinimumHeight=null);const s=this.createLayoutProxy(t);if(!s)return;const r=null===e.stroke?0:this.lineWidth,o=s.minimumWidth,a=s.minimumHeight,l=Math.max(this.minWidth,o+2*this.xMargin)+r,h=Math.max(this.minHeight,a+2*this.yMargin)+r,c=Math.max(l,e.localPreferredWidth||0),d=Math.max(h,e.localPreferredHeight||0);s.preferredWidth=c-r-2*this.xMargin,s.preferredHeight=d-r-2*this.yMargin,i.setRect(0,0,c-r,d-r),"center"===this.align?s.center=i.center:"left"===this.align?(s.left=i.centerX-i.rectWidth/2+this.xMargin,s.centerY=i.centerY):(s.right=i.centerX+i.rectWidth/2-this.xMargin,s.centerY=i.centerY),e.localMinimumWidth=l,e.localMinimumHeight=h,s.dispose()}dispose(){this.panel.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.panel.localPreferredHeightProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t){super(e),this.panel=e,this.minWidth=t.minWidth,this.minHeight=t.minHeight,this.xMargin=t.xMargin,this.yMargin=t.yMargin,this.lineWidth=t.lineWidth,this.align=t.align,this.panel.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.panel.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.addNode(e._content)}};function yP(e,t,i,n,s,r,o){try{var a=e[r](o),l=a.value}catch(h){return void i(h)}a.done?t(l):Promise.resolve(l).then(n,s)}function fP(e){return function(){var t=this,i=arguments;return new Promise((function(n,s){var r=e.apply(t,i);function o(e){yP(r,n,s,o,a,"next",e)}function a(e){yP(r,n,s,o,a,"throw",e)}o(void 0)}))}}Vb.register("Panel",gP);const bP=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return se(e,t)};let PP=class extends Se.A{};PP.MOUSE=new PP,PP.TOUCH=new PP,PP.NONE=new PP,PP.enumeration=new Ee.A(PP);let VP=class e{static initialize(t,i){document.addEventListener("keydown",n=>{n.ctrlKey&&"H"===n.key&&(e.helper||(e.helper=new e(t,i)),e.helper.activeProperty.value=!e.helper.activeProperty.value)})}constructor(e,t){this.sim=e,this.simDisplay=t,this.activeProperty=new g.A(!1),this.visualTreeVisibleProperty=new c(!1,{tandem:P.A.OPT_OUT}),this.pdomTreeVisibleProperty=new c(!1,{tandem:P.A.OPT_OUT}),this.underPointerVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.optionsVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.previewVisibleProperty=new c(!1,{tandem:P.A.OPT_OUT}),this.selectedNodeContentVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.selectedTrailContentVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.highlightVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.boundsVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.selfBoundsVisibleProperty=new c(!1,{tandem:P.A.OPT_OUT}),this.getHelperNodeVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.helperVisibleProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.inputBasedPickingProperty=new c(!0,{tandem:P.A.OPT_OUT}),this.useLeafNodeProperty=new c(!1,{tandem:P.A.OPT_OUT}),this.pointerAreaTypeProperty=new lh(PP.MOUSE,{tandem:P.A.OPT_OUT}),this.pointerPositionProperty=new g.A(De.A.ZERO),this.overInterfaceProperty=new c(!1,{tandem:P.A.OPT_OUT}),this.selectedTrailProperty=new g.A(null),this.treeHoverTrailProperty=new g.A(null),this.pointerTrailProperty=new de([this.pointerPositionProperty,this.overInterfaceProperty,this.pointerAreaTypeProperty,this.inputBasedPickingProperty],(e,i,n,s)=>{if(i)return null;if(!s)return LP(t.rootNode,e);let r=t.rootNode.hitTest(e,n===PP.MOUSE,n===PP.TOUCH);if(r&&!this.useLeafNodeProperty.value){for(;r.length>0&&0===r.lastNode().inputListeners.length;)r.removeDescendant();if(0===r.length)r=null;else{const e=r.lastNode().inputListeners[0];e instanceof Or&&e.targetNode&&e.targetNode!==r.lastNode()&&r.containsNode(e.targetNode)&&(r=r.subtrailTo(e.targetNode))}}return r},{tandem:P.A.OPT_OUT,valueComparisonStrategy:"equalsFunction"}),this.previewTrailProperty=new de([this.selectedTrailProperty,this.treeHoverTrailProperty,this.pointerTrailProperty],(e,t,i)=>e||(t||i)),this.previewShapeProperty=new de([this.previewTrailProperty,this.inputBasedPickingProperty,this.pointerAreaTypeProperty],(e,t,i)=>e?t?qP(e,i===PP.MOUSE,i===PP.TOUCH):qP(e,!1,!1):null),this.helperNodeProperty=new de([this.selectedTrailProperty],e=>{if(e){const t=e.lastNode();return(e=>!!e.getHelperNode)(t)?t.getHelperNode():null}return null}),this.screenViewProperty=new g.A(null),this.imageDataProperty=new g.A(null),this.colorProperty=new de([this.pointerPositionProperty,this.imageDataProperty],(e,t)=>{if(!t)return jr.TRANSPARENT;const i=Math.floor(e.x/this.simDisplay.width*t.width),n=Math.floor(e.y/this.simDisplay.height*t.height),s=4*(i+t.width*n);return i<0||n<0||i>t.width||n>t.height?jr.TRANSPARENT:new jr(t.data[s],t.data[s+1],t.data[s+2],t.data[s+3]/255)},{tandem:P.A.OPT_OUT});const i=new c(phet.chipper.queryParameters.fuzz,{tandem:P.A.OPT_OUT});i.lazyLink(e=>{phet.chipper.queryParameters.fuzz=e});const n=new c(!1,{tandem:P.A.OPT_OUT}),s=new g.A({name:"view units",multiplier:0}),o=new g.A(Me.NOTHING),a=new Dr({renderer:"svg"}),l=new hh(this.pointerPositionProperty,{tandem:P.A.OPT_OUT,bidirectional:!0,map:e=>{const t=this.screenViewProperty.value;if(t){const i=t.globalToLocalPoint(e);return`global: x: ${bP(e.x)}, y: ${bP(e.y)}
view: x: ${bP(i.x)}, y: ${bP(i.y)}`}return"-"}}),h=new mf(l,{font:new Wc(12)}),d=new hh(this.colorProperty,{tandem:P.A.OPT_OUT,bidirectional:!0,map:e=>`${e.toHexString()} ${e.toCSS()}`}),u=new mf(d,{font:new Wc(12)});this.colorProperty.link(e=>{u.fill=jr.getLuminance(e)>128?jr.BLACK:jr.WHITE});const p=new jr("#804000"),m=new jr("#208020"),A=new jr(255,100,0),y=new jr(0,0,255),f=new jr(255,0,0),b=new jr(200,0,200),V=new de([this.inputBasedPickingProperty,this.pointerAreaTypeProperty],(e,t)=>e?t===PP.MOUSE?y:t===PP.TOUCH?f:b:A,{tandem:P.A.OPT_OUT}),w=new gP(u,{cornerRadius:0,stroke:null,fill:this.colorProperty}),v=new Dr({visibleProperty:this.previewVisibleProperty}),E=new Va(0,0,200,200,{fill:new gf(new Dr({children:[new Va(0,0,10,10,{fill:"#ddd"}),new Va(10,10,10,10,{fill:"#ddd"}),new Va(0,10,10,10,{fill:"#fafafa"}),new Va(10,0,10,10,{fill:"#fafafa"})]}),2,0,0,20,20),stroke:"black",visibleProperty:this.previewVisibleProperty});this.previewTrailProperty.link(e=>{if(v.removeAllChildren(),e){v.addChild(E);const t=e.lastNode();if(t.bounds.isValid()){const e=.9*window.devicePixelRatio*Math.min(E.selfBounds.width/t.width,E.selfBounds.height/t.height);v.addChild(new Dr({scale:e/window.devicePixelRatio,center:E.center,children:[ab(t,{resolution:e,sourceBounds:t.bounds.dilated(.01*t.bounds.width).roundedOut()})]}))}}});const S=new Ff({spacing:3,align:"left",visibleProperty:this.selectedNodeContentVisibleProperty});this.previewTrailProperty.link(e=>{S.children=e?MP(e):[]});const T=new wP(i,"Fuzz"),C=new wP(n,"Measuring Tape"),I=new wP(this.visualTreeVisibleProperty,"Visual Tree"),x=new wP(this.pdomTreeVisibleProperty,"PDOM Tree"),D=new wP(this.inputBasedPickingProperty,"Input-based"),k=new wP(this.useLeafNodeProperty,"Use Leaf",{enabledProperty:this.inputBasedPickingProperty}),M=new wP(this.highlightVisibleProperty,"Highlight",{labelOptions:{fill:V}}),B=new wP(this.boundsVisibleProperty,"Bounds",{labelOptions:{fill:p}}),O=new wP(this.selfBoundsVisibleProperty,"Self Bounds",{labelOptions:{fill:m}}),L=new wP(this.getHelperNodeVisibleProperty,"getHelperNode()"),R=new Cb(this.pointerAreaTypeProperty,[{value:PP.MOUSE,createNode:e=>new Rc("Mouse",{fontSize:12})},{value:PP.TOUCH,createNode:e=>new Rc("Touch",{fontSize:12})},{value:PP.NONE,createNode:e=>new Rc("None",{fontSize:12})}],{orientation:"horizontal",enabledProperty:this.inputBasedPickingProperty,radioButtonOptions:{xSpacing:3},spacing:10,tandem:P.A.OPT_OUT}),N=new Ff({align:"left",visibleProperty:this.selectedTrailContentVisibleProperty});this.previewTrailProperty.link(e=>{if(N.children=[],e){e.nodes.slice().forEach((t,i)=>{N.addChild(new mf(`${i>0?e.nodes[i-1].children.indexOf(t):"-"} ${t.constructor.name}`,{font:new Wc(12),fill:i===e.nodes.length-1?"black":"#bbb",layoutOptions:{leftMargin:10*i},cursor:"pointer",inputListeners:[new Lr({fire:()=>{this.selectedTrailProperty.value=e.subtrailTo(t),H()},tandem:P.A.OPT_OUT})]}))}),e.lastNode().children.forEach((t,i)=>{N.addChild(new mf(`${e.lastNode().children.indexOf(t)} ${t.constructor.name}`,{font:new Wc(12),fill:"#88f",layoutOptions:{leftMargin:10*e.nodes.length},cursor:"pointer",inputListeners:[new Lr({fire:()=>{this.selectedTrailProperty.value=e.copy().addDescendant(t,i),H()},tandem:P.A.OPT_OUT})]}))}),e.isVisible()||N.addChild(new Rc("invisible",{fill:"#60a",fontSize:12})),1!==e.getOpacity()&&N.addChild(new Rc("opacity: "+e.getOpacity(),{fill:"#888",fontSize:12}));const t=_.some(e.nodes,e=>!1===e.pickable||!e.visible),i=_.some(e.nodes,e=>e.inputListeners.length>0||!0===e.pickable);!t&&i&&N.addChild(new Rc("Hit Tested",{fill:"#f00",fontSize:12})),e.getMatrix().isIdentity()||N.addChild(new Dr({children:[new xP(e.getMatrix())]}))}});const q=new TP(this.visualTreeVisibleProperty,this,()=>new EP(new Xi(t.rootNode),this)),F=new TP(this.pdomTreeVisibleProperty,this,()=>new SP(t._rootPDOMInstance,this)),H=()=>{q.focusSelected(),F.focusSelected()},Y=new ga(null,{visibleProperty:this.boundsVisibleProperty,stroke:p,fill:p.withAlpha(.1),lineDash:[2,2],lineDashOffset:2});this.previewTrailProperty.link(e=>{e&&e.lastNode().localBounds.isValid()?Y.shape=Ui.bounds(e.lastNode().localBounds).transformed(e.getMatrix()):Y.shape=null});const G=new ga(null,{visibleProperty:this.selfBoundsVisibleProperty,stroke:m,fill:m.withAlpha(.1),lineDash:[2,2],lineDashOffset:1});this.previewTrailProperty.link(e=>{e&&e.lastNode().selfBounds.isValid()?G.shape=Ui.bounds(e.lastNode().selfBounds).transformed(e.getMatrix()):G.shape=null});const U=new de([V],e=>e.withAlpha(.2),{tandem:P.A.OPT_OUT}),z=new ga(null,{stroke:V,lineDash:[2,2],fill:U,visibleProperty:this.highlightVisibleProperty});this.previewShapeProperty.link(e=>{z.shape=e});const W=new Dr({visibleProperty:this.getHelperNodeVisibleProperty});this.selectedTrailProperty.link(e=>{e&&(W.matrix=e.getMatrix())}),this.helperNodeProperty.link(e=>{W.removeAllChildren(),e&&W.addChild(e)}),a.addChild(Y),a.addChild(G),a.addChild(z);const Q=new Dr;Q.addInputListener(new Or({press:()=>{this.selectedTrailProperty.value=this.pointerTrailProperty.value,H()},tandem:P.A.OPT_OUT})),a.addChild(Q),a.addChild(W);const K=new Ef({orientation:"vertical",spacing:5,align:"left",children:[h,w],visibleProperty:this.underPointerVisibleProperty}),j=new Ff({spacing:3,align:"left",children:[CP("Tools"),new Ff({spacing:3,align:"left",children:[new Nf({spacing:10,children:[T,C]}),new Nf({spacing:10,children:[I,...t._accessible?[x]:[]]})]}),CP("Picking",void 0,{layoutOptions:{topMargin:3}}),new Ff({spacing:3,align:"left",children:[new Nf({spacing:10,children:[D,k]}),R]}),CP("Show",void 0,{layoutOptions:{topMargin:3}}),new Ff({spacing:3,align:"left",children:[new Nf({spacing:10,children:[M,L]}),new Nf({spacing:10,children:[B,O]})]})],visibleProperty:this.optionsVisibleProperty}),Z=new Ff({spacing:5,align:"left",children:[IP("Under Pointer",this.underPointerVisibleProperty,K,{layoutOptions:{topMargin:0}}),K,IP("Options",this.optionsVisibleProperty,j),j,IP("Preview",this.previewVisibleProperty,v),v,IP("Selected Trail",this.selectedTrailContentVisibleProperty,N),N,IP("Selected Node",this.selectedNodeContentVisibleProperty,S),S],visibleProperty:this.helperVisibleProperty}),X=new Ff({spacing:5,align:"left",children:[IP("Helper",this.helperVisibleProperty,Z),new Rf,Z]}),J=new gP(X,{fill:"rgba(255,255,255,0.85)",stroke:"rgba(0,0,0,0.85)",cornerRadius:0});J.addInputListener(new _c({translateNode:!0,targetNode:J,tandem:P.A.OPT_OUT})),J.addInputListener({wheel:e=>{const t=e.domEvent.deltaY;J.y-=1*t}}),a.addChild(J),a.addChild(q),a.addChild(F);const $=new Jm(s,{tandem:P.A.OPT_OUT,visibleProperty:n,textBackgroundColor:"rgba(0,0,0,0.5)"});$.basePositionProperty.value=new De.A(100,300),$.tipPositionProperty.value=new De.A(200,300),a.addChild($);const ee=e=>{this.helperDisplay.width=e.width,this.helperDisplay.height=e.height,o.value=o.value.withMaxX(e.width).withMaxY(e.height),Q.mouseArea=new Me(0,0,e.width,e.height),Q.touchArea=new Me(0,0,e.width,e.height),q.resize(e),F.resize(e)},te=e=>{var t;this.overInterfaceProperty.value=J.bounds.containsPoint(this.pointerPositionProperty.value)||this.visualTreeVisibleProperty.value&&q.bounds.containsPoint(this.pointerPositionProperty.value)||this.pdomTreeVisibleProperty.value&&F.bounds.containsPoint(this.pointerPositionProperty.value)||W.containsPoint(this.pointerPositionProperty.value),null==(t=this.helperDisplay)||t.updateDisplay()};document.addEventListener("keyup",e=>{"Escape"===e.key&&(this.selectedTrailProperty.value=null)}),this.activeProperty.lazyLink(t=>{if(t){e.activeProperty.value=!1;const t=e.selectedScreenProperty.value;t.hasView()?this.screenViewProperty.value=t.view:this.screenViewProperty.value=null,this.helperDisplay=new XA(a,{assumeFullWindow:!0}),this.helperDisplay.initializeEvents(),e.dimensionProperty.link(ee),r.A.addListener(te),document.body.appendChild(this.helperDisplay.domElement),this.helperDisplay.domElement.style.zIndex="10000";const i=e=>{this.pointerPositionProperty.value=e.pointer.point};this.helperDisplay.addInputListener({move:i,down:i,up:i}),this.screenViewProperty.value&&(s.value={name:"view units",multiplier:this.screenViewProperty.value.getGlobalToLocalMatrix().getScaleVector().x}),this.simDisplay.foreignObjectRasterization(e=>{if(e){const t=document.createElement("img");t.addEventListener("load",()=>{const e=t.width,i=t.height,n=document.createElement("canvas"),s=n.getContext("2d");n.width=e,n.height=i,s.drawImage(t,0,0),this.activeProperty.value&&(this.imageDataProperty.value=s.getImageData(0,0,e,i))}),t.src=e}else console.log("Could not load foreign object rasterization")})}else e.dimensionProperty.unlink(ee),r.A.removeListener(te),document.body.removeChild(this.helperDisplay.domElement),this.helperDisplay.dispose(),e.activeProperty.value=!0,this.imageDataProperty.value=null,this.visualTreeVisibleProperty.value=!1})}};eh.A.register("Helper",VP);let wP=class extends sP{constructor(e,t,i){const n=(0,o.Ay)()({tandem:P.A.OPT_OUT,boxWidth:14,labelOptions:{font:new Wc(12)}},i);super(e,new mf(t,n.labelOptions),n)}},vP=class extends Dr{expand(){this.expandedProperty.value=!0}collapse(){this.expandedProperty.value=!1}expandRecusively(){this.expandedProperty.value=!0,this.childTreeNodes.forEach(e=>{e.expandRecusively()})}collapseRecursively(){this.expandedProperty.value=!1,this.childTreeNodes.forEach(e=>{e.collapseRecursively()})}constructor(e,t){const i=(0,o.Ay)()({createChildren:()=>[],spacing:0,indent:5},t);super({excludeInvisibleChildrenFromBounds:!0}),this.selfNode=e,this.selfNode.centerY=0,this.expandedProperty=new g.A(!0),this.childTreeNodes=K({elements:i.createChildren()});const n=(new Ui).moveToPoint(De.A.createPolar(4.8,3/4*Math.PI).plusXY(1.5,0)).lineTo(1.5,0).lineToPoint(De.A.createPolar(4.8,5/4*Math.PI).plusXY(1.5,0));this.expandCollapseButton=new Va(-6,-6,12,12,{children:[new ga(n,{stroke:"#888",lineCap:"round",lineWidth:1.5})],visible:!1,cursor:"pointer",right:0}),this.expandedProperty.link(e=>{this.expandCollapseButton.rotation=e?Math.PI/2:0}),this.expandCollapseButton.addInputListener(new Lr({fire:()=>{this.expandedProperty.value=!this.expandedProperty.value},tandem:P.A.OPT_OUT})),this.addChild(this.expandCollapseButton),this.childContainer=new Ef({orientation:"vertical",align:"left",spacing:i.spacing,children:this.childTreeNodes,x:i.indent,y:this.selfNode.bottom+i.spacing,visibleProperty:this.expandedProperty}),this.addChild(this.childContainer),this.addChild(e);const s=()=>{this.childContainer.children=this.childTreeNodes,this.expandCollapseButton.visible=this.childTreeNodes.length>0};this.childTreeNodes.addItemAddedListener(()=>{s()}),this.childTreeNodes.addItemRemovedListener(()=>{s()}),s(),this.mutate(i)}},EP=class e extends vP{find(e){if(e.equals(this.trail))return this;{const t=_.find(this.childTreeNodes,t=>e.isExtensionOf(t.trail,!0));return t?t.find(e):null}}constructor(t,i){const n=t.lastNode(),s=t.isVisible(),r=new yc({size:12}),o=new Nf({spacing:5}),a=n.constructor.name;a&&o.addChild(new Rc(a,{font:r,pickable:!1,fill:s?"#000":"#60a"})),n instanceof Rc&&o.addChild(new Rc('"'+n.string+'"',{font:r,pickable:!1,fill:"#666"}));const l=Va.bounds(o.bounds,{children:[o],cursor:"pointer",fill:new de([i.selectedTrailProperty,i.pointerTrailProperty],(e,i)=>e&&t.equals(e)?"rgba(0,128,255,0.4)":i&&t.equals(i)?"rgba(0,128,255,0.2)":"transparent",{tandem:P.A.OPT_OUT})});l.addInputListener({enter:()=>{i.treeHoverTrailProperty.value=t},exit:()=>{i.treeHoverTrailProperty.value=null}}),l.addInputListener(new Lr({fire:()=>{i.selectedTrailProperty.value=t},tandem:P.A.OPT_OUT})),super(l,{createChildren:()=>t.lastNode().children.map(n=>new e(t.copy().addDescendant(n),i))}),n.visible||(this.expandedProperty.value=!1),this.trail=t}},SP=class e extends vP{find(e){if(e.equals(this.instance.trail))return this;{const t=_.find(this.childTreeNodes,t=>e.isExtensionOf(t.instance.trail,!0));return t?t.find(e):null}}constructor(t,i){const n=t.trail,s=n.isPDOMVisible(),r=new yc({size:12}),o=new Nf({spacing:5});if(n.nodes.length){const e=s?"#000":"#60a",i=n.lastNode();i.tagName&&o.addChild(new Rc(i.tagName,{font:new yc({size:12,weight:"bold"}),fill:e})),i.labelContent&&o.addChild(new Rc(i.labelContent,{font:r,fill:"#800"})),i.innerContent&&o.addChild(new Rc(i.innerContent,{font:r,fill:"#080"})),i.descriptionContent&&o.addChild(new Rc(i.descriptionContent,{font:r,fill:"#444"}));const a=t.parent?t.parent.trail:new Xi,l=n.nodes.slice(a.nodes.length).map(e=>e.constructor.name).filter(e=>"Node"!==e).join(",");l&&o.addChild(new Rc(`(${l})`,{font:r,fill:"#008"}))}else o.addChild(new Rc("(root)",{font:r}));const a=Va.bounds(o.bounds,{children:[o],cursor:"pointer",fill:new de([i.selectedTrailProperty,i.pointerTrailProperty],(e,t)=>e&&n.equals(e)?"rgba(0,128,255,0.4)":t&&n.equals(t)?"rgba(0,128,255,0.2)":"transparent",{tandem:P.A.OPT_OUT})});n.length&&(a.addInputListener({enter:()=>{i.treeHoverTrailProperty.value=n},exit:()=>{i.treeHoverTrailProperty.value=null}}),a.addInputListener(new Lr({fire:()=>{i.selectedTrailProperty.value=n},tandem:P.A.OPT_OUT}))),super(a,{createChildren:()=>t.children.map(t=>new e(t,i))}),this.instance=t,this.trail=n}},TP=class extends Va{resize(e){this.rectHeight=e.height,this.right=e.width,this.treeContainer.clipArea=Ui.bounds(this.localBounds.dilated(10))}constrainTree(){this.treeNode&&(this.treeNode.bottomthis.selfBounds.top+5&&(this.treeNode.top=this.selfBounds.top+5),this.treeNode.rightthis.selfBounds.left+8&&(this.treeNode.left=this.selfBounds.left+8))}focusTrail(e){if(this.treeNode){const t=this.treeNode.find(e);if(t){const e=t.localToGlobalPoint(t.selfNode.center).y-this.centerY;this.treeNode.y-=e,this.constrainTree()}}}focusPointer(){this.helper.pointerTrailProperty.value&&this.focusTrail(this.helper.pointerTrailProperty.value)}focusSelected(){null!==this.helper.selectedTrailProperty.value&&this.focusTrail(this.helper.selectedTrailProperty.value)}constructor(e,t,i){super({fill:"rgba(255,255,255,0.85)",stroke:"black",rectWidth:400,visibleProperty:e,pickable:!0}),this.helper=t,this.treeContainer=new Dr,this.addChild(this.treeContainer),this.addInputListener(new _c({targetNode:this,drag:(e,t)=>{this.x=this.x+t.modelDelta.x},tandem:P.A.OPT_OUT})),this.addInputListener({wheel:e=>{const t=e.domEvent.deltaX,i=e.domEvent.deltaY;this.treeNode&&(this.treeNode.x-=1*t,this.treeNode.y-=1*i),this.constrainTree()}}),t.pointerTrailProperty.lazyLink(()=>{t.selectedTrailProperty.value||this.focusPointer()}),Ve.multilink([t.activeProperty,e],(e,t)=>{e&&t?(this.treeNode=i(),this.treeNode.x=500,this.treeNode.y=500,this.treeContainer.children=[this.treeNode],this.focusSelected(),this.constrainTree()):this.treeContainer.children=[]})}};const CP=(e,t,i)=>new Rc(e,(0,p.A)({fontSize:14,fontWeight:"bold",visibleProperty:t?new de([t.boundsProperty],e=>!e.isEmpty()):new g.A(!0)},i)),IP=(e,t,i,n)=>{const s=CP(e,i,n);return s.addInputListener(new Lr({fire:()=>{t.value=!t.value},tandem:P.A.OPT_OUT})),s.cursor="pointer",new Nf({spacing:7,children:[new pP(t,{tandem:P.A.OPT_OUT,sideLength:14}),s],visibleProperty:s.visibleProperty})};let xP=class extends Bf{constructor(e){super({xSpacing:5,ySpacing:0,children:[new Rc(e.m00(),{layoutOptions:{column:0,row:0}}),new Rc(e.m01(),{layoutOptions:{column:1,row:0}}),new Rc(e.m02(),{layoutOptions:{column:2,row:0}}),new Rc(e.m10(),{layoutOptions:{column:0,row:1}}),new Rc(e.m11(),{layoutOptions:{column:1,row:1}}),new Rc(e.m12(),{layoutOptions:{column:2,row:1}}),new Rc(e.m20(),{layoutOptions:{column:0,row:2}}),new Rc(e.m21(),{layoutOptions:{column:1,row:2}}),new Rc(e.m22(),{layoutOptions:{column:2,row:2}})]})}},DP=class extends ga{constructor(e){super(e,{maxWidth:15,maxHeight:15,stroke:"black",cursor:"pointer",strokePickable:!0}),this.addInputListener(new Lr({fire:()=>RP(e.getSVGPath()),tandem:P.A.OPT_OUT}))}},kP=class extends Jh{constructor(e){super(e.getImage(),{maxWidth:15,maxHeight:15})}};const MP=e=>{const t=[],i=e.lastNode(),n=(0,Ur.A)(i.constructor).map(e=>e.name).filter(e=>e&&"Object"!==e),s=n.includes("Node")?n.slice(0,n.indexOf("Node")):n;s.length>0&&t.push(new mf(s.map((e,t)=>0===t?`${e}`:`
 ${_.repeat(" ",t)}extends ${e}`).join(""),{font:new Wc(12)}));const r=(e,i)=>{t.push(new Nf({spacing:0,align:"top",children:[new Rc(e+": ",{fontSize:12}),i]}))},o=(e,t)=>{void 0!==t&&r(e,new mf(""+t,{lineWrap:400,font:new Wc(12),cursor:"pointer",inputListeners:[new Lr({fire:()=>RP(""+t),tandem:P.A.OPT_OUT})]}))},a=e=>new Nf({spacing:4,children:[new Va(0,0,10,10,{fill:e,stroke:"black",lineWidth:.5}),new Rc(e.toHexString(),{fontSize:12}),new Rc(e.toCSS(),{fontSize:12})],cursor:"pointer",inputListeners:[new Lr({fire:()=>RP(e.toHexString()),tandem:P.A.OPT_OUT})]}),l=(e,t)=>{const i=e=>new Nf({spacing:3,children:[new Rc(e.ratio,{fontSize:12}),a(BP(e.color)||jr.TRANSPARENT)]});t instanceof _r?t instanceof sb?r(e,new Ff({align:"left",spacing:3,children:[new Rc(`LinearGradient (${t.start.x},${t.start.y}) => (${t.end.x},${t.end.y})`,{fontSize:12}),...t.stops.map(i)]})):t instanceof ob?r(e,new Ff({align:"left",spacing:3,children:[new Rc(`RadialGradient (${t.start.x},${t.start.y}) ${t.startRadius} => (${t.end.x},${t.end.y}) ${t.endRadius}`,{fontSize:12}),...t.stops.map(i)]})):t instanceof ba&&r(e,new Ff({align:"left",spacing:3,children:[new Rc("Pattern",{fontSize:12}),new Jh(t.image,{maxWidth:10,maxHeight:10})]})):((e,t)=>{const i=BP(t);null!==i&&r(e,a(i))})(e,t)},h=(e,t)=>{t.equals(Me.NOTHING)||(t.equals(Me.EVERYTHING)?o(e,"everything"):r(e,new mf(`x: [${t.minX}, ${t.maxX}]
y: [${t.minY}, ${t.maxY}]`,{font:new Wc(12)})))},c=(e,t)=>r(e,new DP(t));return i.tandem.supplied&&o("tandem",i.tandem.phetioID.split(".").join(" ")),i instanceof Hf&&o("element",i.element.constructor.name),ar(i)&&(!i.widthSizable&&o("widthSizable",i.widthSizable),null!==i.preferredWidth&&o("preferredWidth",i.preferredWidth),i.preferredWidth!==i.localPreferredWidth&&o("localPreferredWidth",i.localPreferredWidth),null!==i.minimumWidth&&o("minimumWidth",i.minimumWidth),i.minimumWidth!==i.localMinimumWidth&&o("localMinimumWidth",i.localMinimumWidth)),lr(i)&&(!i.heightSizable&&o("heightSizable",i.heightSizable),null!==i.preferredHeight&&o("preferredHeight",i.preferredHeight),i.preferredHeight!==i.localPreferredHeight&&o("localPreferredHeight",i.localPreferredHeight),null!==i.minimumHeight&&o("minimumHeight",i.minimumHeight),i.minimumHeight!==i.localMinimumHeight&&o("localMinimumHeight",i.localMinimumHeight)),i.layoutOptions&&o("layoutOptions",JSON.stringify(i.layoutOptions,null,2)),i instanceof bf&&(!i.resize&&o("resize",i.resize),!i.layoutOrigin.equals(De.A.ZERO)&&o("layoutOrigin",i.layoutOrigin)),i instanceof Ef&&(o("orientation",i.orientation),o("align",i.align),i.spacing&&o("spacing",i.spacing),i.lineSpacing&&o("lineSpacing",i.lineSpacing),o("justify",i.justify),i.justifyLines&&o("justifyLines",i.justifyLines),i.wrap&&o("wrap",i.wrap),i.stretch&&o("stretch",i.stretch),i.grow&&o("grow",i.grow),i.leftMargin&&o("leftMargin",i.leftMargin),i.rightMargin&&o("rightMargin",i.rightMargin),i.topMargin&&o("topMargin",i.topMargin),i.bottomMargin&&o("bottomMargin",i.bottomMargin),null!==i.minContentWidth&&o("minContentWidth",i.minContentWidth),null!==i.minContentHeight&&o("minContentHeight",i.minContentHeight),null!==i.maxContentWidth&&o("maxContentWidth",i.maxContentWidth),null!==i.maxContentHeight&&o("maxContentHeight",i.maxContentHeight)),i instanceof Bf&&(o("xAlign",i.xAlign),o("yAlign",i.yAlign),i.xSpacing&&o("xSpacing",i.xSpacing),i.ySpacing&&o("ySpacing",i.ySpacing),i.xStretch&&o("xStretch",i.xStretch),i.yStretch&&o("yStretch",i.yStretch),i.xGrow&&o("xGrow",i.xGrow),i.yGrow&&o("yGrow",i.yGrow),i.leftMargin&&o("leftMargin",i.leftMargin),i.rightMargin&&o("rightMargin",i.rightMargin),i.topMargin&&o("topMargin",i.topMargin),i.bottomMargin&&o("bottomMargin",i.bottomMargin),null!==i.minContentWidth&&o("minContentWidth",i.minContentWidth),null!==i.minContentHeight&&o("minContentHeight",i.minContentHeight),null!==i.maxContentWidth&&o("maxContentWidth",i.maxContentWidth),null!==i.maxContentHeight&&o("maxContentHeight",i.maxContentHeight)),i instanceof Va&&(h("rectBounds",i.rectBounds),(i.cornerXRadius||i.cornerYRadius)&&(i.cornerXRadius===i.cornerYRadius?o("cornerRadius",i.cornerRadius):(o("cornerXRadius",i.cornerXRadius),o("cornerYRadius",i.cornerYRadius)))),i instanceof ac&&(o("x1",i.x1),o("y1",i.y1),o("x2",i.x2),o("y2",i.y2)),i instanceof xh&&o("radius",i.radius),i instanceof Rc&&(o("text",i.string),o("font",i.font),"hybrid"!==i.boundsMethod&&o("boundsMethod",i.boundsMethod)),i instanceof mf&&(o("text",i.string),o("font",i.font instanceof yc?i.font.getFont():i.font),l("fill",i.fill),l("stroke",i.stroke),"hybrid"!==i.boundsMethod&&o("boundsMethod",i.boundsMethod),null!==i.lineWrap&&o("lineWrap",i.lineWrap)),i instanceof Jh&&(r("image",new kP(i)),o("imageWidth",i.imageWidth),o("imageHeight",i.imageHeight),1!==i.imageOpacity&&o("imageOpacity",i.imageOpacity),i.imageBounds&&h("imageBounds",i.imageBounds),i.initialWidth&&o("initialWidth",i.initialWidth),i.initialHeight&&o("initialHeight",i.initialHeight),i.hitTestPixels&&o("hitTestPixels",i.hitTestPixels)),(i instanceof Ug||i instanceof Qf)&&h("canvasBounds",i.canvasBounds),i instanceof ga&&(i.shape&&c("shape",i.shape),"accurate"!==i.boundsMethod&&o("boundsMethod",i.boundsMethod)),(i instanceof ga||i instanceof Rc)&&(l("fill",i.fill),l("stroke",i.stroke),i.lineDash.length&&o("lineDash",i.lineDash),i.fillPickable||o("fillPickable",i.fillPickable),i.strokePickable&&o("strokePickable",i.strokePickable),1!==i.lineWidth&&o("lineWidth",i.lineWidth),"butt"!==i.lineCap&&o("lineCap",i.lineCap),"miter"!==i.lineJoin&&o("lineJoin",i.lineJoin),0!==i.lineDashOffset&&o("lineDashOffset",i.lineDashOffset),10!==i.miterLimit&&o("miterLimit",i.miterLimit)),i.tagName&&o("tagName",i.tagName),i.accessibleName&&o("accessibleName",i.accessibleName),i.accessibleHelpText&&o("accessibleHelpText",i.accessibleHelpText),i.pdomHeading&&o("pdomHeading",i.pdomHeading),i.containerTagName&&o("containerTagName",i.containerTagName),i.containerAriaRole&&o("containerAriaRole",i.containerAriaRole),i.innerContent&&o("innerContent",i.innerContent),i.inputType&&o("inputType",i.inputType),i.inputValue&&o("inputValue",i.inputValue),i.pdomNamespace&&o("pdomNamespace",i.pdomNamespace),i.ariaLabel&&o("ariaLabel",i.ariaLabel),i.ariaRole&&o("ariaRole",i.ariaRole),i.ariaValueText&&o("ariaValueText",i.ariaValueText),i.labelTagName&&o("labelTagName",i.labelTagName),i.labelContent&&o("labelContent",i.labelContent),i.appendLabel&&o("appendLabel",i.appendLabel),i.descriptionTagName&&o("descriptionTagName",i.descriptionTagName),i.descriptionContent&&o("descriptionContent",i.descriptionContent),i.appendDescription&&o("appendDescription",i.appendDescription),i.pdomVisible||o("pdomVisible",i.pdomVisible),i.pdomOrder&&o("pdomOrder",i.pdomOrder.map(e=>null===e?"null":e.constructor.name)),i.visible||o("visible",i.visible),1!==i.opacity&&((e,t)=>{o(e,t)})("opacity",i.opacity),null!==i.pickable&&o("pickable",i.pickable),i.enabled||o("enabled",i.enabled),i.inputEnabled||o("inputEnabled",i.inputEnabled),null!==i.cursor&&o("cursor",i.cursor),i.transformBounds&&o("transformBounds",i.transformBounds),i.renderer&&o("renderer",i.renderer),i.usesOpacity&&o("usesOpacity",i.usesOpacity),i.layerSplit&&o("layerSplit",i.layerSplit),i.cssTransform&&o("cssTransform",i.cssTransform),i.excludeInvisible&&o("excludeInvisible",i.excludeInvisible),i.preventFit&&o("preventFit",i.preventFit),null!==i.webglScale&&o("webglScale",i.webglScale),i.matrix.isIdentity()||((e,t)=>{r(e,new xP(t))})("matrix",i.matrix),null!==i.maxWidth&&o("maxWidth",i.maxWidth),null!==i.maxHeight&&o("maxHeight",i.maxHeight),null!==i.clipArea&&c("clipArea",i.clipArea),null!==i.mouseArea&&(i.mouseArea instanceof Me?h("mouseArea",i.mouseArea):c("mouseArea",i.mouseArea)),null!==i.touchArea&&(i.touchArea instanceof Me?h("touchArea",i.touchArea):c("touchArea",i.touchArea)),i.inputListeners.length&&o("inputListeners",i.inputListeners.map(e=>e.constructor.name).join(", ")),t.push(new Uf(5,5)),h("localBounds",i.localBounds),i.localBoundsOverridden&&o("localBoundsOverridden",i.localBoundsOverridden),h("bounds",i.bounds),isFinite(i.width)&&o("width",i.width),isFinite(i.height)&&o("height",i.height),t.push(new Zb({content:new Rc("Copy Path",{fontSize:12}),listener:()=>RP("phet.joist.display.rootNode"+e.indices.map(e=>`.children[ ${e} ]`).join("")),tandem:P.A.OPT_OUT})),t},BP=e=>{const t=(0,le.w)(e)?e.value:e;return null===t?null:jr.toColor(t)},OP=e=>{if(e instanceof _r)return!0;{const t=BP(e);return!!t&&t.alpha>0}},LP=(e,t)=>{if(!e.visible)return null;const i=e._transform.getInverse().timesVector2(t),n=e.clipArea;if(null!==n&&!n.containsPoint(i))return null;for(let s=e._children.length-1;s>=0;s--){const t=e._children[s],n=LP(t,i);if(n)return n.addAncestor(e,s)}if(e.selfBounds.containsPoint(i))if(e instanceof ga&&e.hasShape()){if(OP(e.fill)&&e.getShape().containsPoint(i))return new Xi(e);if(OP(e.stroke)&&e.getStrokedShape().containsPoint(i))return new Xi(e)}else if(e.containsPointSelf(i))return new Xi(e);return null},RP=fP((function*(e){var t;yield null==(t=navigator.clipboard)?void 0:t.writeText(e)})),NP=(e,t,i)=>{let n=Ui.union([...t&&e.mouseArea?[e.mouseArea instanceof Ui?e.mouseArea:Ui.bounds(e.mouseArea)]:[],...i&&e.touchArea?[e.touchArea instanceof Ui?e.touchArea:Ui.bounds(e.touchArea)]:[],e.getSelfShape(),...e.children.filter(e=>e.visible&&!1!==e.pickable).map(e=>NP(e,t,i).transformed(e.matrix))].filter(e=>e.bounds.isValid()));return e.hasClipArea()&&(n=n.shapeIntersection(e.clipArea)),n},qP=(e,t,i)=>{let n=NP(e.lastNode(),t,i);for(let s=e.nodes.length-1;s>=0;s--){const t=e.nodes[s];t.hasClipArea()&&(n=n.shapeIntersection(t.clipArea)),n=n.transformed(t.matrix)}return n};let FP=class extends Tn{constructor(e){const t=(0,o.Ay)()({alertStableDelay:500},e);super(t)}};mn.register("ActivationUtterance",FP);let HP=class extends Dr{constructor(e,t){const i=(0,o.Ay)()({keyFill:"white",keyShadowFill:"black",lineWidth:1.3,cornerRadius:2,xShadowOffset:1.7,yShadowOffset:1.7,xMargin:0,yMargin:0,xAlign:"center",yAlign:"center",xPadding:4,yPadding:4,keyHeight:23,minKeyWidth:23,forceSquareKey:!1},t),n=new Dr({children:[e]}),s=new Dr({children:[n]}),r=new Yb(s,{xAlign:i.xAlign,yAlign:i.yAlign,xMargin:i.xMargin,yMargin:i.yMargin}),a=new Va(0,0,1,1,i.cornerRadius,i.cornerRadius,{fill:i.keyShadowFill}),l=new Va(0,0,1,1,i.cornerRadius,i.cornerRadius,{fill:i.keyFill,stroke:"black",lineWidth:i.lineWidth}),h=()=>{let t=1;const o=i.keyHeight-i.yPadding;e.height>o&&(t=o/e.height),n.setScaleMagnitude(t);let h=Math.max(i.minKeyWidth,n.width+i.xPadding);if(i.forceSquareKey){const t=i.minKeyWidth-i.xPadding;let n=1;e.width>t&&(n=t/e.width),h=i.keyHeight,s.setScaleMagnitude(n)}r.setAlignBounds(new Me(0,0,h,i.keyHeight)),a.setRectBounds(r.bounds.shiftedXY(i.xShadowOffset,i.yShadowOffset)),l.setRectBounds(r.bounds)};e.boundsProperty.link(h),i.children=[a,l,r],super(i),this.disposeEmitter.addListener(()=>e.boundsProperty.unlink(h))}};va.register("KeyNode",HP);let YP=class e extends HP{static getAltKeyString(){return We.A.mac?jc.key.optionStringProperty:jc.key.altStringProperty}static altOrOption(t){return new e(e.getAltKeyString(),t)}static capsLock(t){return new e(jc.key.capsLockStringProperty,t)}static esc(t){return new e(jc.key.escStringProperty,t)}static end(t){return new e(jc.key.endStringProperty,t)}static enter(t){return new e(jc.key.enterStringProperty,t)}static fn(t){return new e(jc.key.fnStringProperty,t)}static home(t){return new e(jc.key.homeStringProperty,t)}static pageDown(t){return new e(jc.key.pageDownStringProperty,t)}static pageUp(t){return new e(jc.key.pageUpStringProperty,t)}static space(t){return new e(jc.key.spaceStringProperty,t)}static shift(t){return new e(jc.key.shiftStringProperty,t)}static tab(t){return new e(jc.key.tabStringProperty,t)}constructor(e,t){const i=(0,o.Ay)()({font:new Wc({size:16}),fill:"black",textMaxWidth:55,xPadding:11},t),n=new mf(e,{font:i.font,fill:i.fill,maxWidth:i.textMaxWidth});super(n,i),this.addDisposable(n)}};va.register("TextKeyNode",YP);const GP=new jr(0,200,0),UP=new jr(255,85,0),zP=new jr(0,135,0),WP=new jr(106,206,245),QP=new jr(254,225,5),KP={ACCELERATION:new jr(255,255,50),APPLIED_FORCE:new jr(236,153,55),BUTTON_YELLOW:QP,ELASTIC_POTENTIAL_ENERGY:new jr(0,204,255),FRICTION_FORCE:UP,GRAVITATIONAL_FORCE:new jr(50,130,215),GRAVITATIONAL_POTENTIAL_ENERGY:new jr(55,130,215),HEAT_THERMAL_ENERGY:UP,IMAGINARY_PART:new jr(153,51,102),KINETIC_ENERGY:new jr(30,200,45),MOMENTUM:new jr(50,50,255),NET_WORK:GP,NORMAL_FORCE:new jr(255,235,0),PHET_LOGO_BLUE:WP,PHET_LOGO_YELLOW:QP,POSITION:jr.BLUE,REAL_PART:new jr(255,153,0),RED_COLORBLIND:UP,RESET_ALL_BUTTON_BASE_COLOR:new jr(247,151,34),GREEN_COLORBLIND:zP,TOTAL_ENERGY:new jr(180,180,0),TOTAL_FORCE:GP,VELOCITY:new jr(50,255,50),WALL_FORCE:new jr(153,51,0),SCREEN_ICON_FRAME:"#dddddd"};va.register("PhetColorScheme",KP);const jP=KP,ZP={DEFAULT_BUTTON_RADIUS:20.8,PLAY_CONTROL_BUTTON_RADIUS:28};va.register("SceneryPhetConstants",ZP);const _P=ZP;let XP=class e extends Qb{constructor(t,i,n){let s=(0,o.Ay)()({sizable:!1,radius:n&&n.content?null:30,lineWidth:.5,stroke:null,touchAreaDilation:0,mouseAreaDilation:0,touchAreaXShift:0,touchAreaYShift:0,mouseAreaXShift:0,mouseAreaYShift:0,cursor:"pointer",xMargin:5,yMargin:5,buttonAppearanceStrategy:e.ThreeDAppearanceStrategy},n);s.content,s.radius,s.buttonAppearanceStrategyOptions||(s.buttonAppearanceStrategyOptions={stroke:s.stroke,lineWidth:s.lineWidth});const r=new xh(1),a=_.pick(s,Dr.REQUIRES_BOUNDS_OPTION_KEYS);var l;s=_.omit(s,Dr.REQUIRES_BOUNDS_OPTION_KEYS),super(t,r,i,s),this.buttonNodeConstraint=new JP(this,this.layoutSizeProperty,{content:null!=(l=s.content)?l:null,radius:s.radius,buttonBackground:r,xMargin:s.xMargin,yMargin:s.yMargin,maxLineWidth:this.maxLineWidth,touchAreaDilation:s.touchAreaDilation,touchAreaXShift:s.touchAreaXShift,touchAreaYShift:s.touchAreaYShift,mouseAreaDilation:s.mouseAreaDilation,mouseAreaXShift:s.mouseAreaXShift,mouseAreaYShift:s.mouseAreaYShift}),this.addDisposable(this.buttonNodeConstraint),this.mutate(a)}};XP.ThreeDAppearanceStrategy=class{dispose(){this.disposeThreeDAppearanceStrategy()}constructor(e,t,i,n){const s=n&&n.stroke?n.stroke:new Mb(i,{luminanceFactor:-.4}),r=n&&void 0!==n.lineWidth?n.lineWidth:.3,a=(0,o.Ay)()({stroke:s,lineWidth:r,overStroke:s,overLineWidth:r,overButtonOpacity:1,selectedStroke:s,selectedLineWidth:r,selectedButtonOpacity:1,deselectedFill:null,deselectedStroke:s,deselectedLineWidth:r,deselectedButtonOpacity:1,overFill:i},n),l=new Mb(i,{luminanceFactor:.8}),h=new Mb(i,{luminanceFactor:.7}),c=new Mb(i,{luminanceFactor:.3}),d=new Mb(i,{luminanceFactor:-.1}),u=new Mb(i,{luminanceFactor:-.2}),p=new Mb(i,{luminanceFactor:-.4}),m=new Mb(i,{luminanceFactor:-.5}),g=new de([i],e=>e.withAlpha(0)),A=new xh(1,{stroke:a.stroke?a.stroke:p,lineWidth:a.lineWidth,pickable:!1});let y;e.addChild(A),this.maxLineWidth=A.hasStroke()&&a&&"number"==typeof a.lineWidth?a.lineWidth:0;const f=()=>{const n=e.radius,s=n-2.5,r=n+2.5;if(n<2.5)return;const o=new ob(2.5,2.5,s,2.5,2.5,r).addColorStop(0,i).addColorStop(1,h),p=new ob(-2.5,-2.5,s,-2.5,-2.5,r).addColorStop(0,g).addColorStop(1,m),f=new ob(2.5,2.5,s,2.5,2.5,r).addColorStop(0,c).addColorStop(1,l),b=new ob(-2.5,-2.5,s,-2.5,-2.5,r).addColorStop(0,g).addColorStop(1,m),P=new ob(-2.5,-2.5,0,0,0,r).addColorStop(0,d).addColorStop(.6,u).addColorStop(.8,i).addColorStop(1,l);A.radius=n,e.cachedPaints=[o,f,P],A.cachedPaints=[p,b],y&&t.unlink(y),y=t=>{switch(t){case Ib.IDLE:e.fill=a.deselectedFill||o,e.stroke=a.deselectedStroke,e.lineWidth=a.deselectedLineWidth,e.opacity=a.deselectedButtonOpacity,A.fill=p,A.opacity=a.deselectedButtonOpacity;break;case Ib.OVER:e.fill=f,e.stroke=a.overStroke,e.lineWidth=a.overLineWidth,e.opacity=a.overButtonOpacity,A.fill=b,A.opacity=a.overButtonOpacity;break;case Ib.PRESSED:e.fill=P,e.stroke=a.selectedStroke,e.lineWidth=a.selectedLineWidth,e.opacity=a.selectedButtonOpacity,A.fill=b,A.opacity=a.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+t)}},t.link(y)};e.selfBoundsProperty.link(f),this.disposeThreeDAppearanceStrategy=()=>{e.selfBoundsProperty.unlink(f),t.hasListener(y)&&t.unlink(y),l.dispose(),h.dispose(),c.dispose(),d.dispose(),u.dispose(),p.dispose(),m.dispose(),g.dispose()}}};let JP=class extends Vy{layout(){super.layout();const e=this.buttonNode,t=this.options.content,i=t?this.createLayoutProxy(t):null;if(!!t!=!!i)return;const n=e.widthSizable,s=e.heightSizable,r=i?i.minimumWidth+2*this.options.xMargin:0,o=i?i.minimumHeight+2*this.options.yMargin:0;let a=Math.max(r,o)/2;null!==this.options.radius&&(a=this.options.radius);let l=this.isFirstLayout||n?2*a:e.localMinimumWidth,h=this.isFirstLayout||s?2*a:e.localMinimumHeight;var c,d;this.lastLocalWidth=this.isFirstLayout||n?Math.max(l,n&&null!=(c=e.localPreferredWidth)?c:0):this.lastLocalWidth,this.lastLocalHeight=this.isFirstLayout||s?Math.max(h,s&&null!=(d=e.localPreferredHeight)?d:0):this.lastLocalHeight;const u=Math.max(this.lastLocalWidth,this.lastLocalHeight);if(!n&&s&&(l=u),!s&&n&&(h=u),this.isFirstLayout||n||s){const e=(u-this.options.maxLineWidth)/2;this.options.buttonBackground.radius=e}if(this.isFirstLayout||n||s){const e=this.options.buttonBackground.localBounds.width/2;this.buttonNode.touchArea=Ui.circle(this.options.touchAreaXShift,this.options.touchAreaYShift,e+this.options.touchAreaDilation),this.buttonNode.mouseArea=Ui.circle(this.options.mouseAreaXShift,this.options.mouseAreaYShift,e+this.options.mouseAreaDilation),this.buttonNode.focusHighlight=Ui.circle(0,0,e+5)}if(i){const e=u-2*this.options.xMargin,t=u-2*this.options.yMargin;if(i.preferredWidth=e,i.preferredHeight=t,null!==this.options.radius){const i=this.buttonNode.contentContainer;i.maxWidth=e,i.maxHeight=t}}this.isFirstLayout=!1,this.layoutSizeProperty.value=new Ne(this.lastLocalWidth,this.lastLocalHeight),e.localMinimumWidth=l,e.localMinimumHeight=h}dispose(){this.buttonNode.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t,i){super(e),this.buttonNode=e,this.layoutSizeProperty=t,this.isFirstLayout=!0,this.lastLocalWidth=0,this.lastLocalHeight=0,this.options=i,this.buttonNode.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.buttonNode.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.options.content&&this.addNode(this.options.content),this.layout()}};Vb.register("RoundButton",XP);let $P=class extends XP{dispose(){super.dispose(),this.disposeRoundPushButton()}addListener(e){this.pushButtonModel.addListener(e)}removeListener(e){this.pushButtonModel.removeListener(e)}constructor(e){const t=(0,o.Ay)()({soundPlayer:Wm.get("pushButton"),tandem:P.A.REQUIRED,listenerOptions:{tandem:P.A.OPT_OUT}},e),i=t.listener,n=_.omit(t,["listener"]),s=new kb(n);super(s,new xb(s),n),this.pushButtonModel=s,i&&this.addListener(i);const r=()=>{t.soundPlayer.play()};s.produceSoundEmitter.addListener(r),this.disposeRoundPushButton=()=>{s.produceSoundEmitter.removeListener(r),s.dispose()}}};Vb.register("RoundPushButton",$P);let eV=class extends Ui{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super();const i=t?.8:0,n=.4*e-i,s=.625*e+i,r=(t?2:2.25)*(s-n),o=.35*-Math.PI,a=-2*Math.PI*.85,l=.18*-Math.PI;this.moveTo(n*Math.cos(o),n*Math.sin(o)),this.lineTo(s*Math.cos(o),s*Math.sin(o));const h=o+a;this.arc(0,0,s,o,h,!0);const c=(r-(s-n))/2;this.lineTo((s+c)*Math.cos(h),(s+c)*Math.sin(h));const d=.55*(s+n);this.lineTo(d*Math.cos(h+l),d*Math.sin(h+l)),this.lineTo((n-c)*Math.cos(h),(n-c)*Math.sin(h)),this.lineTo(n*Math.cos(h),n*Math.sin(h)),this.arc(0,0,n,h,o),this.close()}};va.register("ResetShape",eV);let tV=class extends $P{constructor(e){const t=e&&e.radius?e.radius:24,i=(0,o.Ay)()({radius:t,arrowColor:"black",baseColor:"white",xMargin:6,yMargin:6,xContentOffset:(null==e?void 0:e.adjustShapeForStroke)?0:-.03*t,yContentOffset:-.0125*t,tandem:P.A.REQUIRED,tandemNameSuffix:"ResetButton",adjustShapeForStroke:!1},e),n=new eV(i.radius,i.adjustShapeForStroke),s=new ga(n,i.adjustShapeForStroke?{fill:i.arrowColor,stroke:"rgb(80,80,80)",lineWidth:.7}:{fill:i.arrowColor}),r=new ga(n.transformed(Et.scaling(-1,-1)));s.localBounds=s.localBounds.union(r.localBounds),i.content=s,super(i)}};va.register("ResetButton",tV);const iV=3/_P.DEFAULT_BUTTON_RADIUS;let nV=class e extends tV{interruptScreenViewInput(){const e=this.getParentScreenViews();for(let t=0;t=0;t--){const n=e[t];if(n instanceof i){s.push(n);break}}}return _.uniq(s)}dispose(){this.disposeResetAllButton(),super.dispose()}constructor(t){const i=(0,o.Ay)()({radius:_P.DEFAULT_BUTTON_RADIUS,phetioRestoreScreenStateOnReset:!0,interruptScreenViewInput:!0,touchAreaDilation:5.2,baseColor:jP.RESET_ALL_BUTTON_BASE_COLOR,arrowColor:"white",tandem:P.A.REQUIRED,tandemNameSuffix:"ResetAllButton",phetioDocumentation:"The orange, round button that can be used to restore the initial state",soundPlayer:Wm.get("resetAll"),accessibleName:jc.a11y.resetAll.labelStringProperty,voicingNameResponse:jc.a11y.resetAll.labelStringProperty,voicingContextResponse:jc.a11y.voicing.resetAll.contextResponseStringProperty,adjustShapeForStroke:!0},t);i.xMargin=i.yMargin=i.radius*iV,super(i);const n=new FP({alert:jc.a11y.resetAll.alertStringProperty});let s=Tl.enabled;const r=new Map;this.pushButtonModel.isFiringProperty.lazyLink(e=>{Im.value=e,e?(i.interruptScreenViewInput&&this.interruptScreenViewInput(),s=Tl.enabled,Tl.enabled=!1,Tl.clear()):(P.A.PHET_IO_ENABLED&&i.phetioRestoreScreenStateOnReset&&this.isPhetioInstrumented()&&phet.phetio.phetioEngine.phetioStateEngine.restoreStateForScreen(i.tandem),Tl.enabled=s,this.voicingSpeakFullResponse()),this.forEachUtteranceQueue(t=>{e?(r.set(t,t.enabled),t.enabled=!1,t.clear()):(t.enabled=r.get(t)||t.enabled,t.addToBack(n))})});const a=td.createGlobal(this,{keyStringProperties:e.RESET_ALL_HOTKEY_DATA.keyStringProperties,fire:()=>this.pdomClick(),fireOnDown:!1});this.disposeResetAllButton=()=>{a.dispose(),r.clear()}}};nV.RESET_ALL_HOTKEY_DATA=new Ia({keyStringProperties:[new h.A("alt+r")],keyboardHelpDialogLabelStringProperty:jc.keyboardHelpDialog.resetAllStringProperty,keyboardHelpDialogPDOMLabelStringProperty:Qe.A.fillIn(jc.a11y.keyboardHelpDialog.general.resetAllDescriptionPatternStringProperty,{altOrOption:YP.getAltKeyString()}),repoName:va.name,global:!0}),va.register("ResetAllButton",nV);let sV=class e extends YP{static a(t){return new e(jc.key.aStringProperty,t)}static c(t){return new e(jc.key.cStringProperty,t)}static d(t){return new e(jc.key.dStringProperty,t)}static l(t){return new e(jc.key.lStringProperty,t)}static r(t){return new e(jc.key.rStringProperty,t)}static s(t){return new e(jc.key.sStringProperty,t)}static w(t){return new e(jc.key.wStringProperty,t)}static one(t){return new e(jc.key.oneStringProperty,t)}static two(t){return new e(jc.key.twoStringProperty,t)}static three(t){return new e(jc.key.threeStringProperty,t)}constructor(e,t){super(e,(0,o.Ay)()({xPadding:5,forceSquareKey:!0},t))}};va.register("LetterKeyNode",sV);let rV=class extends sV{constructor(e,t){super(e.toString(),t)}};va.register("NumberKeyNode",rV);let oV=class extends Ui{constructor(e){super();const t=e.width/2-e.height/2,i=e.width/2+e.height/2;this.moveTo(t,0).lineTo(i,0).lineTo(i,t).lineTo(e.width,t).lineTo(e.width,i).lineTo(i,i).lineTo(i,e.width).lineTo(t,e.width).lineTo(t,i).lineTo(0,i).lineTo(0,t).lineTo(t,t).close()}};va.register("PlusShape",oV);const aV=new Ne(20,5);let lV=class extends ga{constructor(e){const t=(0,o.Ay)()({size:aV,fill:"black"},e);super(new oV(t.size),t)}};va.register("PlusNode",lV);const hV=.6*Math.sqrt(3)*10,cV={up:0,down:Math.PI,left:-Math.PI/2,right:Math.PI/2};let dV=class extends HP{constructor(e,t){const i=(0,o.Ay)()({arrowFill:"black",arrowStroke:"black",arrowLineJoin:"round",arrowLineWidth:3,arrowHeight:10,arrowWidth:hV,yPadding:13,forceSquareKey:!0},t),n=i.arrowHeight,s=i.arrowWidth,r=i.arrowLineJoin,a=i.arrowLineWidth,l=i.arrowFill,h=i.arrowStroke,c=new Ui;c.moveTo(n/2,0).lineTo(n,s+0).lineTo(0,s+0).close(),super(new ga(c,{fill:l,stroke:h,lineJoin:r,lineWidth:a,rotation:cV[e]}),i)}};va.register("ArrowKeyNode",dV);const uV=new Wc(16);let pV=class e{static iconRow(e,t){const i=(0,o.Ay)()({spacing:1.3,children:e},t);return new Nf(i)}static iconOrIcon(t,i,n){const s=(0,o.sF)({spacing:e.DEFAULT_ICON_SPACING},n),r=new Rc(jc.keyboardHelpDialog.orStringProperty,{font:uV,maxWidth:16});return e.iconRow([new Dr({children:[t]}),r,new Dr({children:[i]})],s)}static iconToIcon(t,i,n){const s=(0,o.sF)({spacing:e.DEFAULT_ICON_SPACING/2},n),r=new Rc(jc.keyboardHelpDialog.hyphenStringProperty,{font:uV,maxWidth:16});return e.iconRow([new Dr({children:[t]}),r,new Dr({children:[i]})],s)}static iconPlusIcon(t,i,n){return e.iconPlusIconRow([t,i],n)}static iconPlusIconRow(t,i){const n=(0,o.sF)({plusIconSize:new Ne(8,1.2),spacing:e.DEFAULT_ICON_SPACING},i),s=[];for(let e=0;e{const i=e.ENGLISH_KEY_TO_KEY_NODE.get(t);return i}),n=e.ENGLISH_KEY_TO_KEY_NODE.get(t.keyDescriptorsProperty.value[0].key);return e.iconPlusIconRow([...i,n])}constructor(){}};pV.DEFAULT_ICON_SPACING=6.5,pV.ENGLISH_KEY_TO_KEY_NODE=new Map([["a",new sV("A")],["j",new sV("J")],["shift",YP.shift()],["alt",YP.altOrOption()],["escape",YP.esc()],["arrowLeft",new dV("left")],["arrowRight",new dV("right")],["arrowUp",new dV("up")],["arrowDown",new dV("down")],["pageUp",YP.pageUp()],["pageDown",YP.pageDown()],["home",YP.home()],["end",YP.end()],["r",new sV("R")],["s",new sV("S")],["l",new sV("L")],["c",new sV("C")],["h",new sV("H")],["w",new sV("W")],["j",new sV("J")],["k",new sV("K")],["n",new sV("N")],["0",new sV("0")],["1",new sV("1")],["2",new sV("2")],["3",new sV("3")]]),va.register("KeyboardHelpIconFactory",pV);const mV=new Wc({size:19,weight:"bold"});let gV=class extends(bA(Ff)){createReadingBlockResponseProperty(){const e=[this.headingStringProperty];for(let t=0;t{let e="";return e+=this.headingStringProperty.value+", ",this.keyboardHelpSectionRows.forEach(t=>{t.readingBlockContent&&(e+=Pn.getResponseText(t.readingBlockContent)+" ")}),e})}static alignHelpSectionIcons(e){const t=_.maxBy(e,e=>e.iconVBox.left),i=t.iconVBox.left;e.forEach(e=>{e.contentHBox.spacing=e.contentHBox.spacing+i-e.iconVBox.left})}constructor(e,t,i){const n=(0,o.Ay)()({headingOptions:{font:mV,maxWidth:335,tagName:"h2",innerContent:e},textMaxWidth:235,vBoxOptions:{align:"left",spacing:13},a11yContentTagName:"ul",spacing:13,align:"left"},i),s=new mf(e,n.headingOptions),r=[],a=[];for(let o=0;o0&&(e=Math.max(e,s)),isFinite(r)&&r>0&&(t=Math.max(t,r))}if(this._maxWidthProperty.value=e,this._maxHeightProperty.value=t,e>0&&t>0)for(let i=0;i=0;e--)this._alignBoxes[e].dispose();super.dispose()}constructor(e){const t=(0,o.hz)()({},yV,e);super(t),this._alignBoxes=[],this._matchHorizontal=t.matchHorizontal,this._matchVertical=t.matchVertical,this._resizeLock=!1,this._maxWidthProperty=new H(0),this._maxHeightProperty=new H(0),this.id=AV++}};ot.A.register("AlignGroup",fV);const bV=new Wc(16);let PV=class e{setContentsVisible(e){this.text.visible=e,this.label.visible=e,this.icon.visible=e}static labelWithIcon(t,i,n){const s=(0,o.Ay)()({labelInnerContent:null,readingBlockContent:null,labelOptions:{font:bV},iconOptions:{tagName:"li"}},n),r=new mf(t,s.labelOptions),a=new fV({matchHorizontal:!1}),l=a.createBox(r),h=a.createBox(new Dr({children:[i]}),s.iconOptions);return h.innerContent=s.labelInnerContent,new e(r,l,h,{readingBlockContent:s.readingBlockContent||s.labelInnerContent})}static labelWithIconList(t,i,n){const s=(0,o.Ay)()({labelInnerContent:null,readingBlockContent:null,iconsVBoxOptions:{},labelOptions:{font:bV}},n);s.iconsVBoxOptions=(0,o.sF)({spacing:.75*gV.DEFAULT_VERTICAL_ICON_SPACING,align:"left",tagName:"li",innerContent:s.labelInnerContent},s.iconsVBoxOptions);const r=new mf(t,s.labelOptions),a=new fV({matchHorizontal:!1});a.createBox(new Dr({children:[i[0]]}));const l=a.createBox(r),h=[];for(let e=0;e""+e;let TV=class extends ch{constructor(e,t,i){const n=(0,o.Ay)()({formatNames:[],decimalPlaces:null,phetioFeatured:!0,tandemNameSuffix:"StringProperty"},i),s=[e],r={},a=Object.keys(t);a.forEach(e=>{const i=t[e];(0,le.w)(i)&&s.push(i);let o=SV;if(null!==n.decimalPlaces&&("number"==typeof n.decimalPlaces||null!==n.decimalPlaces[e])){const t="number"==typeof n.decimalPlaces||null===n.decimalPlaces?n.decimalPlaces:n.decimalPlaces[e];o=e=>SV("number"==typeof e?se(e,t):e)}n.maps&&n.maps.hasOwnProperty(e)?r[e]=t=>o(n.maps[e](t)):r[e]=o}),super(s,(function(){for(var i=arguments.length,o=new Array(i),l=0;l{const t=s.indexOf(e);return t>=0?o[t]:e};let c=""+h(e);n.formatNames.forEach((e,t)=>{c=c.replace(new RegExp(`\\{${t}\\}`,"g"),`{{${e}}}`)});const d=c.match(/\{\{[^{}]+\}\}/g)||[];for(let e=0;e{e.setScaleMagnitude(1),e.setScaleMagnitude(Math.min(i.maxIconWidthProportion*n.width/e.width,i.maxIconHeightProportion*n.height/e.height)),e.center=n.center};e.localBoundsProperty.link(s),i.children=[n,e],super(i),this.disposeScreenIcon=()=>{e.localBoundsProperty.hasListener(s)&&e.localBoundsProperty.unlink(s)}}};eh.A.register("ScreenIcon",xV);const DV=CV.A.a11y.screenNamePatternStringProperty,kV=CV.A.a11y.goToScreenPatternStringProperty,MV=CV.A.a11y.screenSimPatternStringProperty,BV=CV.A.a11y.simScreenStringProperty,OV=new Ne(147,100),LV=OV.width/OV.height,RV=IV.width/IV.height;let NV=class e extends b.A{get model(){return this._model}get view(){return this._view}hasModel(){return!!this._model}hasView(){return!!this._view}reset(){}initializeModel(){this._model=this.createModel()}initializeView(e,t,i,n){var s;this._view=this.createView(this.model),this._view.setVisible(!1),phet.chipper.queryParameters.dev&&this._view.addChild((s=this._view.layoutBounds,new ga(Ui.bounds(s),{stroke:"red",lineWidth:3,pickable:!1}))),phet.chipper.queryParameters.showVisibleBounds&&this._view.addChild(function(e){const t=new ga(Ui.bounds(e.visibleBoundsProperty.value),{stroke:"blue",lineWidth:6,pickable:!1});return e.visibleBoundsProperty.link(e=>{t.shape=Ui.bounds(e)}),t}(this._view)),Ve.multilink([t,e,this.pdomDisplayNameProperty],(e,t,s)=>{let r;r=1===i?e:n?t:Qe.A.fillIn(MV,{screenName:s,simName:t}),this._view.setScreenSummaryIntroAndTitle(t,s,r,i>1)})}constructor(t,i,n){const s=(0,o.Ay)()({name:null,instrumentNameProperty:!0,backgroundColorProperty:new h.A("white"),homeScreenIcon:null,showUnselectedHomeScreenIconFrame:!1,navigationBarIcon:null,showScreenIconFrameForNavigationBarFill:null,maxDT:.5,createKeyboardHelpNode:null,screenButtonsHelpText:null,tandem:P.A.REQUIRED,tandemNameSuffix:P.A.SCREEN_TANDEM_NAME_SUFFIX,phetioType:e.ScreenIO,phetioState:!1,phetioFeatured:!0},n);if(super(s),!s.homeScreenIcon){const e=new Va(0,0,IV.width,IV.height);s.homeScreenIcon=new xV(e,{fill:s.backgroundColorProperty.value,maxIconWidthProportion:1,maxIconHeightProportion:1})}s.navigationBarIcon||(s.navigationBarIcon=s.homeScreenIcon),qV(s.homeScreenIcon,IV,RV,"homeScreenIcon"),qV(s.navigationBarIcon,OV,LV,"navigationBarIcon"),this.backgroundColorProperty=s.backgroundColorProperty,s.name?(this.nameProperty=s.name,s.instrumentNameProperty&&this.addLinkedElement(s.name,{tandemName:"nameProperty"})):this.nameProperty=new h.A(""),this.homeScreenIcon=s.homeScreenIcon,this.navigationBarIcon=s.navigationBarIcon,this.showUnselectedHomeScreenIconFrame=s.showUnselectedHomeScreenIconFrame,this.showScreenIconFrameForNavigationBarFill=s.showScreenIconFrameForNavigationBarFill,this.createKeyboardHelpNode=s.createKeyboardHelpNode,this.pdomDisplayNameProperty=new de([this.nameProperty,DV],e=>null===e?"":Qe.A.fillIn(DV,{name:e})),this.maxDT=s.maxDT,this.createModel=t,this.createView=i,this._model=null,this._view=null,this.activeProperty=new c(!0,{tandem:s.tandem.createTandem("activeProperty"),phetioReadOnly:!0,phetioDocumentation:"Indicates whether the screen is currently displayed in the simulation. For single-screen simulations, there is only one screen and it is always active."}),this.screenButtonsHelpText="",s.screenButtonsHelpText?this.screenButtonsHelpText=s.screenButtonsHelpText:this.nameProperty.value?this.screenButtonsHelpText=new TV(kV,{name:this.nameProperty},{tandem:P.A.OPT_OUT}):this.screenButtonsHelpText=BV}};function qV(e,t,i,n){e.width,e.height}NV.HOME_SCREEN_ICON_ASPECT_RATIO=RV,NV.MINIMUM_HOME_SCREEN_ICON_SIZE=IV,NV.MINIMUM_NAVBAR_ICON_SIZE=OV,NV.ScreenIO=new w.A("ScreenIO",{valueType:NV,supertype:_f(w.A.ObjectIO),documentation:"Section of a simulation which has its own model and view."}),eh.A.register("Screen",NV);const FV=NV;let HV=class{reset(){}constructor(e,t,i,n){this.simScreens=t,this.screenProperty=e,this.activeSimScreensProperty=i,this.selectedScreenProperty=new h.A(t[0],{validValues:t,phetioValueType:FV.ScreenIO,tandem:n.createTandem("selectedScreenProperty"),phetioFeatured:!0}),this.screenProperty.link(e=>{_.includes(t,e)&&(this.selectedScreenProperty.value=e)})}};eh.A.register("HomeScreenModel",HV);const YV=HV;let GV=class extends Dr{setHighlighted(e){this.highlightRectangle.stroke=e?this.gradient:"transparent"}constructor(e,t){const i=(0,o.Ay)()({xMargin1:6,yMargin1:6,cornerRadius:0},t);super();const n=e.width+2*i.xMargin1,s=e.height+2*i.yMargin1;this.gradient=new sb(0,0,n,0).addColorStop(0,"#fbff41").addColorStop(.1475,"#fef98b").addColorStop(.465,"#feff40").addColorStop(.77,"#fffccd").addColorStop(1,"#fbff41");const r=new Va(0,0,n,s,i.cornerRadius,i.cornerRadius,{stroke:this.gradient,lineWidth:3,x:e.x-i.xMargin1,y:e.y-i.yMargin1});this.addChild(r),this.mutate(i);const a=Me.rect(r.x,r.y,n,s);this.highlightRectangle=Va.bounds(a.dilated(.75),{stroke:"transparent",lineWidth:4.5}),this.addChild(this.highlightRectangle)}};eh.A.register("Frame",GV);const UV=GV;let zV=class extends(pA(Ff)){constructor(e,t,i){const n=(0,o.Ay)()({cursor:"pointer",showUnselectedHomeScreenIconFrame:!1,tagName:"button",appendDescription:!0,containerTagName:"li",phetioEventType:je.A.USER,phetioDocumentation:"A button on the home screen for choosing a simulation screen"},i),s=new de([t.selectedScreenProperty],t=>t===e),r=new c(!1);let a=Ue(2,4,.875,.5,t.simScreens.length);t.simScreens.length>=5&&(a=.4);const l=140*a,h=e.homeScreenIcon,d=new Dr({children:[h],scale:l/h.height}),u=new Dr({children:[h],scale:140/h.height}),m=new Va(0,0,d.width,d.height,{stroke:n.showUnselectedHomeScreenIconFrame?jP.SCREEN_ICON_FRAME:null,lineWidth:.7}),g=new UV(u),A=new Dr({children:[m,d]}),y=new Dr({children:[g,u]}),f=new Dr({pdomVisible:!1}),b=new Rc(e.nameProperty);super((0,p.A)({children:[f,b]},n)),this.screen=e,this.addAriaDescribedbyAssociation({otherNode:this,otherElementName:qs.DESCRIPTION_SIBLING,thisElementName:qs.PRIMARY_SIBLING});const P={small:{node:[A],font:new Wc(18),spacing:3},large:{node:[y],font:new Wc(42),spacing:0}},V=()=>{const e=s.value||r.value?1:.5;u.opacity=e,d.opacity=e,b.fill=s.value||r.value?"white":"gray"};s.link(e=>{const t=e?P.large:P.small;f.children=t.node,b.font=t.font,b.maxWidth=f.width,V(),this.setSpacing(t.spacing)}),r.link(e=>{g.setHighlighted(e),V()});const w=new Tn;let v=!1;const E=new Lr({fire:()=>{const i=E.pointer&&E.pointer.isTouchLike();!s.value||i&&!v?(t.selectedScreenProperty.value=e,this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})):(t.screenProperty.value=e,this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null,utterance:w}))},tandem:n.tandem.createTandem("fireListener")});this.addInputListener(E),this.addInputListener({focus:e=>{!s.value&&E.fire(e)}}),this.addInputListener({click:()=>!s.value&&this.focus()}),this.addInputListener({focus:()=>r.set(!0),blur:()=>r.set(!1),over:()=>r.set(!0),out:()=>r.set(!1)});const S=()=>{v=t.selectedScreenProperty.value===e,t.selectedScreenProperty.value=e};this.addInputListener({touchover:S,penover:S}),this.boundsProperty.link(()=>{this.mouseArea=this.touchArea=Ui.bounds(this.localBounds)})}};eh.A.register("HomeScreenButton",zV);const WV=zV;let QV=class extends Bm{playAssociatedSound(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=this.valueToWrappedAudioBufferMap.get(e);if("running"===this.audioContext.state){if(this.fullyEnabled&&i.audioBufferProperty.value){const e=this.audioContext.currentTime;this.localGainNode.gain.cancelScheduledValues(e),this.localGainNode.gain.setValueAtTime(1,e);const n=this.audioContext.createBufferSource();n.buffer=i.audioBufferProperty.value,n.playbackRate.setValueAtTime(this.playbackRate,this.audioContext.currentTime),n.connect(this.localGainNode),this.activeBufferSources.push(n),n.onended=()=>{const e=this.activeBufferSources.indexOf(n);e>-1&&this.activeBufferSources.splice(e,1)},n.start(e+t)}}else this.audioContextStateChangeListener&&Wl.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener),this.timeOfDeferredPlayRequest=Date.now(),this.audioContextStateChangeListener=()=>{(Date.now()-this.timeOfDeferredPlayRequest)/1e3<.2&&this.playAssociatedSound(e,.1),Wl.removeStateChangeListener(this.audioContext,this.audioContextStateChangeListener),this.audioContextStateChangeListener=null},Wl.addStateChangeListener(this.audioContext,this.audioContextStateChangeListener)}setPlaybackRate(e){this.playbackRate=e}stopAll(){const e=this.audioContext.currentTime+.1;this.localGainNode.gain.linearRampToValueAtTime(0,e),this.activeBufferSources.forEach(t=>{t.stop(e)}),this.activeBufferSources.length=0}constructor(e,t){const i=(0,o.Ay)()({initialPlaybackRate:1},t);super(i),this.activeBufferSources=[],this.valueToWrappedAudioBufferMap=e,this.localGainNode=this.audioContext.createGain(),this.localGainNode.connect(this.soundSourceDestination),this.fullyEnabledProperty.lazyLink(e=>{e||this.stopAll()}),this.playbackRate=void 0===i.initialPlaybackRate?1:i.initialPlaybackRate,this.audioContextStateChangeListener=null,this.timeOfDeferredPlayRequest=Number.NEGATIVE_INFINITY}};xl.register("MultiClip",QV);const KV=QV,jV="data:audio/mpeg;base64,//swxAAAA3QZA7SQgDGEjym3NTiCAAACbs2AAAGqCgEAwSYujQIIOnKgQlAxTrlAGAggCQSAwInoJvJduAAez8PpG6ltDAnjvbjMiRIIeZ8jCLEDtPFAGSK7XQEZTQi1GA3iTA+IE+k480aDYsDtQDcS3fBEADmMTmT7e3jeDG4gGOAxR8Dh/nLqSno12c54A6EAACGqr6gAAAAA//syxAUACNxrZVmngBkFD2oftpAHABnBKKR1MTRk5pB4lkDgpMUXQGD5aKBVhLL7yiBQtJJbSRasLM2vlmJJ7KBLb7LG/VsXXJ6ZJ5SxZ6RWtABLeAAAoGBF5hGFGFph7YsPDQYVllF5t1d2H3GaasV236GdJGCNHUMVnJKgsG0NOEKNNzCr2k41Wf/8hCjU042QqgpQAAJuUucYCP/7MsQEggiQZ0JuaMdZDw3n3c0k5ghh0TnRSUDh0ZOwRw5BvmqI4OALrQGXEBz3OA5dNBcMujKItB6BklEt6WFYbCwQeiK0w0pK0LiIuuHfwJMYAgEMyZRovoQqkyGMhIsnM3ke44YZMBSS1FMk/7MVZy1uLQU21dhHaFJhX2xsNMS+0zwdHdIjDKXvck1R//////oqAAAPTAAACWr/+zLEBAIING03Tukm4Q0NpundmN4fJflgDAAa5oUHQqNpmhsZYyi0Mzo0SQsOSuizOZSXxLGBhuga0pqTcRtCm8oKCKaNTxVT8MblG/bABJMCyAXHyRNYgYDAGafAqIQsNPoMPRBASOmOF6GzuwfZbazDQKYaU+onoKg0WOQLMkxl3pclcrIL/7Ff/83/f//1XwAAKaTFkAjkTeUk//swxAWCSHxbN03xJTEKjeZJ3STWCzDHw8ojMJB47TijXwwMABwsCZW+HH7jDUaemppFI63opfHWzIugDBRpuX81VWeRMfv/9V30f//QUs0pmh2bmFTIMDwpMERfBPNmCyga4PhhZIydiDdgyWAsRiYlOYGyM1JfeogQbu/o0aO45++iBj0mKxQc/d/////atQQACAYnGAAB3JFO//syxAWACGxvQ6zthPj0jGfdvCVGKiFwT3QuOAdjPRExuFNvH0RU0kCaTRdoaJY1xWSceIZOVHGCIenzHqmEJ9qu92bGBopOTCHJ6YrATTcdAA3KlHY22ca3xQSNv6gVSGXSp3jE0wDGbdmS0geVXHSUmQoWEWR1IlOrW5ZBadfN9RIYzZ8bp7/htQwACU4pBAABy0ACy4w6qCxkpf/7MsQJAEdka0Ws7SUw5A2oNaYNZjH6EDBqGhzw2lAuuW0r5ZzKwyXIy/wEKlaIv8Q7lwXk525/1PVpaZ/0hAAApRuCYTcPtELDEBEFznqMjYcxKw+78v8DXuD5biw3UD0iR2ua3ZbmDsMGo4p8v41GocKCV/0UKggAAkq5BAABrFRN0AsIjzwhwMN1gMCDgWaSaJ9gwjoOYKjgmaf/+zLEEoBHXGlBraULMNKNJyW0lZ+Kl+MnwqTNg08FIVqFMbxfF8Y04t/YAAKd4TEPv2pIAAQ2AgoFOJ8QdWgIwP8MAUSsmeymKic4WaXEE2tUerJNRhYqEwnvPsmIkmoQBl//ACb6mmqcYMjLAFTM3ilNLAQCmAxrR4Zm06CX+ksAJSQCXJdYYtAoHxNM6mhJ++ytQF9PrAAAJkOJ//swxB6ARvhpOy2YrvDjiiVlvqSkkiMBRlMB1jnz8EioYjZ0YeiQYhi4dWhSNFmLA60aEt9DsjXIA2wXP0Q2pHEErh69IejxHQF1GACLPcB7HOATQJa2AnsxYPLTBmcz+yGAVpUdeJ2YalsdWPD1mcNAS2yAIF6oKoAJF2pA8oHQ5+hMAhSa7YDMp8mZKY0MB5QtIi9mhsbOjwYR//syxCmAR0BPMsfsw7DnjGt0/LGPRsNHfGWejtoKJRwoZ4xEVwZjuVDlUDc/aPJlvObfYpQqUAUtyAAAB64m9LLkX2POQYXCQTZEy7T0wzJoTQFhwfQeK3iJZpUNjZji4cCRwGkAPD0glMgWuDNcbpIYEyXbacAQEAIZFUiwydu7A+QQmj4pkSnVbupBfKfJj25gqb4z0iTDCe++hP/7MsQzgEdgZUlMpNC44g0mSb0Y5ozSnYlhPv9zsk6TYRoRAAAB0IcLjLqMDCc1UExGGzI1pNSGxGJmZhySLbxWTV0pTEic8EqMJBHWlwyzGrryaQxqXQuJQADYD7gRg1ch8B7KoiNSPMMzKxo/K8I3MwBhO2IUgHVbNK1UhECmGLhwBgYgBtOj+b5ZX3WziZ7my1Jb/6pZJk0WaNL/+zLEPYNHeE8ubm0nIOQKJA2NmHgCFTGDBeIx4cz8wFOAsKHBE76Qh348IAMugYyGHbIKFkWdduby53scuZX3FqABNwAG6lUDNiQ4mC0EahAA4HzCk/J6gIZGvCSeUtkgcskrsRxTqlWTOQ+wZE2elVku/+n6vyO6CEwAAZ6mU1YGiRiaEceGFlznC83IsBCjFlXVgl4H7Xg1syh8//swxEcDBlg/GAxzYkDcB+KNzSDi5MJZafMOhKapn8HLzv++rSgAkpbADXqR+kegchCIANNggUlWjapq9Le47sSFTHZa/bXAYlqM8rPYhWNtwYaKlkKf8rUnAAABKpqTWC2wMzN4cy5FNowTcAgiDDU0MyzaHUQh4SpS5zkJxrVtQzO1FXFVBM7rDUrGAFG99gAT0sNBXkiS1TGC//syxFWCRqBBCm3pBxDJi6DpvAkeOFrDRL8AcbCEzNYromyrcdkFQl6rWB4zLlQ0O+EVyd/f7u7tAAAAwn0IQgJ3WvGk2afAi+M1MgBoYzTiisJvExKk3FGqJ1VMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7MsRlgEZkMOZs7wRguogddPY9R1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zLEeIPE+C79zOHmeAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",ZV=Il(Bl,jV),_V=Cl.A.createLock(jV),XV=new kl;let JV=!1;const $V=()=>{JV||(_V(),JV=!0)},ew=Bl.decodeAudioData(ZV.buffer,e=>{null===XV.audioBufferProperty.value&&(XV.audioBufferProperty.set(e),$V())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),XV.audioBufferProperty.set(Bl.createBuffer(1,1,Bl.sampleRate)),$V()});ew&&ew.then(e=>{null===XV.audioBufferProperty.value&&(XV.audioBufferProperty.set(e),$V())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),$V()});const tw=XV,iw="data:audio/mpeg;base64,//swxAACBbQfAa1vAjjzBGF2uiAGAAAAVtwAAAB7yZwNh6oRieZxJ6ZAiC/ATEjWf4paPzHKWsS3vMPHu8R6o/M8eAnZcHGwD9C4jQ2xTmNgzZHbzxk5zD0HTBEWTHspzBMqDK8KxIF37fd35ff/MUdUL/Ebxn9X8v1v6Fr/qUoAAAAEOAWfACgXUDbgA1LRszBjFcN1Q5A37hmD//syxA4ACgAhKbngkhD9BGDHvgAGGWHvMr8isweRLzBiAgMNQMkxCAAAEEEBgeVczyMNGKtsf6F4Giv/rT/odb3f/NeUfP4tFRANCwGGTlYyyEw/cJjMePwAT7SyQczJUPyKoQwYKqCgmCeiMBgE4FSYDIBVgYCxMAaABwCAANnj7qmgbL//++oAAACT1PNJAHxGinXcyGFGEMY9Mv/7MsQKAAcgGyWu+0Bw1gNkqey8jtZp4mrGBaEuYskFTJir6hjU38h9pGJE1e6j2dP16PZ0+3/r0e0AEfK5YkoDQMIPEstTDOAsMYyMs59DMBoM08VQseAdGGgKwaNoyxP16PIbk+2fs9nT7f//tpoAAAJ72ShtQGa8BoaQQT5hFA5GMcVKdoQoJiOAPgkrOATlQcDhXSQ2qmoydr3/+zLEFoJHJBsnr2GEcMsDZPXfYEaeS3N//s7fTvR/p/SFN8xoeGOEfTDSZ6D6YHbMbFxFJgYAxBqwaRl6p2KP3OOIqcUqvattP9yPq0/6PZv//9MAAAKTiC1xwHUiuHc40mB8CKYCqQx3mymHxcm6GBZP17maxazTein9P+j6m0+3o9llP/9lIOZgrByCHtnZWY4ZiqUpj4uvGhXg//swxCSCBowbJa77gDDRg2Il7+xGuBg9YF4Jpo0hixIXkQQs+iqhVNf1f0r//9v/sd/b/k0AAAAKcFJBzzB8nPiVAZdJYBiuEJnyGdkYSIe5+JIBOnyxgEWjVUbPleFtdPVo//7aPTRZ9bP//pCu9FwMmga40MyCTMMhDE7Fz7dKMIDElBibcARSRyHt9Bnbq/s3pQAAAANVnW6Q//syxDOCRxAfD49rBDCZA2N17vAGCA4OIM4qpYxYOwwIzM5oCgxiAktuxQi1OBF1E6XJqSZp0fRZ+j+zp////SAA0iQCsAHUo9Ia9HYZvsF6GoXAqf9il5jeBrH0jZkRcd+mtIOAlu7GetVcvLMd3/p//9lH/YoAAAXgGg7h7VkfY5r0nAFGMhRQdmDlw/OW+eialAABX+GAANouzf/7MsRIAgZsGxXuvMYw2AReve3ghCHw7VaMOCTf7AkcLBW2GGCSRH8ABzEFogX0VXiamZeIAAAANmlTC4o1mzOAYj1V86QwPjSTpkY95TRZARC/grAwJq4SVhZMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+zLEVwBDmBsIjeeAOI2FXrW9GE5VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//swxHqDxWAq183lZngAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",nw=Il(Bl,iw),sw=Cl.A.createLock(iw),rw=new kl;let ow=!1;const aw=()=>{ow||(sw(),ow=!0)},lw=Bl.decodeAudioData(nw.buffer,e=>{null===rw.audioBufferProperty.value&&(rw.audioBufferProperty.set(e),aw())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),rw.audioBufferProperty.set(Bl.createBuffer(1,1,Bl.sampleRate)),aw()});lw&&lw.then(e=>{null===rw.audioBufferProperty.value&&(rw.audioBufferProperty.set(e),aw())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),aw()});const hw=rw;let cw=class extends Se.A{};cw.HOME_SCREEN_SELECTED=new cw,cw.DIFFERENT_ICON_SELECTED=new cw,cw.enumeration=new Ee.A(cw);let dw=class extends KV{constructor(e,t){super(new Map([[cw.HOME_SCREEN_SELECTED,tw],[cw.DIFFERENT_ICON_SELECTED,hw]]),t),e.screenProperty.lazyLink(t=>{t.model===e&&this.playAssociatedSound(cw.HOME_SCREEN_SELECTED)}),e.selectedScreenProperty.lazyLink(()=>{e.screenProperty.value.model===e&&this.playAssociatedSound(cw.DIFFERENT_ICON_SELECTED)})}};eh.A.register("HomeScreenSoundGenerator",dw);const uw=dw;let pw=class extends Dr{constructor(e,t){super((0,o.Ay)()({containerTagName:"section",tagName:"div",labelContent:e,labelTagName:"h2"},t))}};va.register("PDOMSectionNode",pw);let mw=class extends pw{constructor(e){super(jc.a11y.simSection.controlAreaStringProperty,e)}};va.register("ControlAreaNode",mw);let gw=class extends pw{constructor(e){super(jc.a11y.simSection.playAreaStringProperty,e)}};va.register("PlayAreaNode",gw);let Aw=class extends Dr{setIntroString(e,t,i){this.openingSummaryNode.innerContent=i&&t?Qe.A.fillIn(jc.a11y.simSection.screenSummary.multiScreenIntroStringProperty,{screen:t}):Qe.A.fillIn(jc.a11y.simSection.screenSummary.singleScreenIntroPatternStringProperty,{sim:e})}constructor(){super(),this.openingSummaryNode=new Dr({tagName:"p"});const e=new Dr({tagName:"p",innerContent:jc.a11y.simSection.screenSummary.keyboardShortcutsHintStringProperty});this.addChild(this.openingSummaryNode),this.addChild(e),this.pdomOrder=[this.openingSummaryNode,null,e]}};va.register("ScreenSummaryNode",Aw);const yw=new Me(0,0,1024,618);let fw=class e extends Dr{setPDOMOrder(e){throw new Error("Do not set the pdomOrder on ScreenView directly. Order Nodes under the `pdomScreenSummaryNode, pdomPlayAreaNode, and pdomControlAreaNode instead. This ensures that sims have a consistent heading structure and content is under those sections which is important for screen reader accessibility.")}setChildren(e){return Dr.prototype.setChildren.call(this,e),this.pdomParentNode&&!this.hasChild(this.pdomParentNode)&&(this.addChild(this.pdomParentNode),this.pdomParentNode.moveToBack()),this}getLayoutScale(t){return e.getLayoutScale(this.layoutBounds,t)}layout(t,i){this.matrix=e.getLayoutMatrix(this.layoutBounds,t,i),this.visibleBoundsProperty.value=this.parentToLocalBounds(t)}get screenSummaryContent(){return this._screenSummaryContent}set screenSummaryContent(e){this.setScreenSummaryContent(e)}setScreenSummaryContent(e){this._screenSummaryContent&&this.pdomScreenSummaryNode.removeChild(this._screenSummaryContent),this._screenSummaryContent=e,e&&this.pdomScreenSummaryNode.addChild(e)}setScreenSummaryIntroAndTitle(e,t,i,n){this.pdomScreenSummaryNode.setIntroString(e,t,n),this.pdomTitleNode.accessibleName=i}getVoicingOverviewContent(){return this._screenSummaryContent?this._screenSummaryContent.getVoicingOverviewString():null}getVoicingDetailsContent(){return this._screenSummaryContent?this._screenSummaryContent.getVoicingDetailsString():null}getVoicingHintContent(){return this._screenSummaryContent?this._screenSummaryContent.getVoicingInteractionHintString():null}interruptSubtreeInput(){var e,t,i;return null==(i=window.phet)||null==(t=i.joist)||null==(e=t.display)||e.interruptOtherPointers(),super.interruptSubtreeInput()}static getLayoutScale(e,t){return Math.min(t.width/e.width,t.height/e.height)}static getLayoutMatrix(t,i,n){const s=(0,o.Ay)()({verticalAlign:"center"},n),r=i.width,a=i.height,l=e.getLayoutScale(t,i);let h=0,c=0;return l===r/t.width?(c=a/l-t.height,"center"===s.verticalAlign&&(c/=2)):l===a/t.height&&(h=(r/l-t.width)/2),Et.rowMajor(l,0,h*l+i.left,0,l,c*l+i.top,0,0,1)}step(e){}constructor(e){const t=(0,o.Ay)()({layoutBounds:yw.copy(),layerSplit:!0,excludeInvisible:!0,tandem:P.A.REQUIRED,visiblePropertyOptions:{phetioState:!1,phetioReadOnly:!0},containerTagName:"article",tagName:"div",screenSummaryContent:null,includePDOMNodes:!0},e);super(t),this._screenSummaryContent=null,this.layoutBounds=t.layoutBounds,this.visibleBoundsProperty=new h.A(t.layoutBounds),this.pdomTitleNode=new Dr({tagName:"h1",focusHighlight:"invisible"}),this.pdomPlayAreaNode=new gw,this.pdomControlAreaNode=new mw,this.pdomScreenSummaryNode=new Aw,t.screenSummaryContent&&this.setScreenSummaryContent(t.screenSummaryContent),this.visibleProperty.lazyLink(e=>{e?(this.pdomTitleNode.focusable=!0,this.pdomTitleNode.focus()):this.pdomTitleNode.focusable=!1}),this.pdomTitleNode.addInputListener({blur:()=>{this.pdomTitleNode.focusable=!1}}),this.pdomParentNode=new Dr({children:t.includePDOMNodes?[this.pdomTitleNode,this.pdomScreenSummaryNode,this.pdomControlAreaNode,this.pdomPlayAreaNode]:[this.pdomTitleNode]}),this.addChild(this.pdomParentNode),this.pdomParentNode.pdomOrder=t.includePDOMNodes?[this.pdomTitleNode,this.pdomScreenSummaryNode,this.pdomPlayAreaNode,this.pdomControlAreaNode]:[this.pdomTitleNode]}};fw.DEFAULT_LAYOUT_BOUNDS=yw,eh.A.register("ScreenView",fw);const bw=fw;let Pw=class e extends bw{focusHighlightedScreenButton(){for(let e=0;e{""!==e&&(e+=" "),e+=Qe.A.fillIn(CV.A.a11y.homeScreenButtonDetailsPatternStringProperty,{name:t.screen.pdomDisplayNameProperty.value,screenHint:t.screen.screenButtonsHelpText})}),e}getVoicingHintContent(){return CV.A.a11y.homeScreenHintStringProperty}constructor(t,i,n){const s=(0,o.Ay)()({layoutBounds:e.LAYOUT_BOUNDS,warningNode:null,includePDOMNodes:!1},n);super(s);const r=new Dr({tagName:"p"});this.addChild(r),this.selectedScreenProperty=i.selectedScreenProperty;const a=new Rc(t,{font:new Wc({size:52,family:e.TITLE_FONT_FAMILY}),fill:"white",y:130,maxWidth:this.layoutBounds.width-10});a.localBoundsProperty.link(()=>{a.centerX=this.layoutBounds.centerX}),this.addChild(a);const l=s.tandem.createTandem("buttonGroup");this.screenButtons=_.map(i.simScreens,e=>{const t=new WV(e,i,{showUnselectedHomeScreenIconFrame:e.showUnselectedHomeScreenIconFrame,accessibleHelpText:e.screenButtonsHelpText,voicingHintResponse:e.screenButtonsHelpText,tandem:e.tandem.supplied?l.createTandem(e.tandem.name+"Button"):P.A.REQUIRED});return t.voicingNameResponse=e.pdomDisplayNameProperty,t.accessibleName=e.pdomDisplayNameProperty,t});let h=60;4===i.simScreens.length&&(h=33),i.simScreens.length>=5&&(h=20),this.homeScreenScreenSummaryIntroProperty=new TV(CV.A.a11y.homeScreenDescriptionPatternStringProperty,{name:t,screens:i.simScreens.length},{tandem:P.A.OPT_OUT}),r.accessibleName=new TV(CV.A.a11y.homeScreenIntroPatternStringProperty,{description:this.homeScreenScreenSummaryIntroProperty,hint:CV.A.a11y.homeScreenHintStringProperty},{tandem:P.A.OPT_OUT}),this.screenButtons.forEach(e=>{e.voicingContextResponse=t});const c=new Nf({spacing:h,align:"top",maxWidth:this.layoutBounds.width-118,tagName:"ol"});if(i.activeSimScreensProperty.link(e=>{c.children=e.map(e=>_.find(this.screenButtons,t=>t.screen===e))}),this.addChild(new Yb(c,{alignBounds:this.layoutBounds,yAlign:"top",topMargin:this.layoutBounds.height/3+20})),Jl.addSoundGenerator(new uw(i,{initialOutputLevel:.5}),{categoryName:"user-interface"}),s.warningNode){const e=s.warningNode;this.addChild(e),e.centerX=this.layoutBounds.centerX,e.bottom=this.layoutBounds.maxY-2}}};Pw.LAYOUT_BOUNDS=new Me(0,0,768,504),Pw.TITLE_FONT_FAMILY="Century Gothic, Futura",eh.A.register("HomeScreenView",Pw);const Vw=Pw,ww=CV.A.a11y.homeStringProperty,vw=jr.BLACK;let Ew=class extends FV{constructor(e,t,i,n,s){const r=(0,o.Ay)()({backgroundColorProperty:new h.A(vw),name:ww,createKeyboardHelpNode:()=>new EV,instrumentNameProperty:!1},s);super(()=>new YV(t(),i,n,r.tandem.createTandem("model")),t=>new Vw(e,t,{warningNode:r.warningNode,tandem:r.tandem.createTandem("view")}),r)}};Ew.BACKGROUND_COLOR=vw,eh.A.register("HomeScreen",Ew);const Sw=Ew;let Tw=class{reset(){this.backgroundColorProperty.reset()}constructor(){this.backgroundColorProperty=new h.A(jr.BLACK),this.navigationBarDarkProperty=new de([this.backgroundColorProperty],e=>e.equals(jr.BLACK)),this.navigationBarFillProperty=new de([this.navigationBarDarkProperty],e=>e?jr.WHITE:jr.BLACK),this.navigationBarTextFillProperty=new de([this.navigationBarFillProperty],e=>e.equals(jr.BLACK)?jr.WHITE:jr.BLACK)}};eh.A.register("LookAndFeel",Tw);const Cw=Tw;let Iw=class{clear(){this.total=0,this.numSamples=0;for(let e=0;e=this.windowSize}updateRunningAverage(e){return this.numSamples=Math.min(this.windowSize,this.numSamples+1),this.total-=this.samples[this.sampleIndex],this.total+=e,this.samples[this.sampleIndex]=e,this.sampleIndex=(this.sampleIndex+1)%this.windowSize,this.getRunningAverage()}constructor(e){this.windowSize=e,this.samples=new Array(e),this.sampleIndex=0,this.total=0,this.numSamples=0,this.clear()}};C.A.register("RunningAverage",Iw);const xw=Iw;let Dw=!1,kw=class e{measure(){if(!window.performance||!window.performance.memory||!window.performance.memory.usedJSHeapSize)return;const t=window.performance.memory.usedJSHeapSize;this.lastMemory=t;const i=this.runningAverage.updateRunningAverage(t);if(this.memoryLimit&&this.runningAverage.isSaturated()&&!Dw&&i>this.memoryLimit&&t>.5*this.memoryLimit)throw Dw=!0,new Error(`Average memory used (${e.memoryString(i)}) is above our memoryLimit (${e.memoryString(this.memoryLimit)}). Current memory: ${e.memoryString(t)}.`)}static memoryString(e){return Math.ceil(e/1048576)+"MB"}constructor(e){const t=(0,o.Ay)()({windowSize:2e3,memoryLimit:phet.chipper.queryParameters.memoryLimit},e);this.memoryLimit=1048576*t.memoryLimit,this.runningAverage=new xw(t.windowSize),this.lastMemory=0}};eh.A.register("MemoryMonitor",kw);const Mw=kw;let Bw=class e extends Vy{layout(){super.layout();const e=this.cells.map(e=>e.isConnected()?e.proxy:null);this.layoutCallback.apply(null,e),this.finishedLayoutEmitter.emit()}dispose(){this.cells.forEach(e=>e.dispose()),super.dispose()}static create(t,i,n){return new e(t,i,n)}constructor(e,t,i){super(e),this.lock(),this.nodes=t,this.cells=t.map(e=>new ky(this,e,null)),this.layoutCallback=i,this.nodes.forEach(e=>this.addNode(e,!1)),this.unlock(),this.updateLayout()}};ot.A.register("RelaxedManualConstraint",Bw);const Ow=e=>{(0,ze.Ay)(e.trim()===e,"path must be trimmed");const t=Ki.A.get(window,e);return void 0!==t?t:null};Te.A.register("getGlobal",Ow);const Lw=Ow;let Rw=class extends Zb{constructor(e){const t=(0,o.Ay)()({iconLength:16,pathOptions:{stroke:"white",lineWidth:2.5,lineCap:"round"},baseColor:jP.RED_COLORBLIND,xMargin:4,yMargin:4,soundPlayer:Wm.get("generalClose"),accessibleName:jc.a11y.closeStringProperty,voicingNameResponse:jc.a11y.closeStringProperty},e),i=(new Ui).moveTo(-t.iconLength/2,-t.iconLength/2).lineTo(t.iconLength/2,t.iconLength/2).moveTo(t.iconLength/2,-t.iconLength/2).lineTo(-t.iconLength/2,t.iconLength/2);t.content=new ga(i,t.pathOptions),super(t)}};va.register("CloseButton",Rw);const Nw=new class{play(){}stop(){}};xl.register("nullSoundPlayer",Nw);const qw=Nw,Fw=new w.A("DynamicMarkerIO",{supertype:w.A.ObjectIO,applyState:_.noop,toStateObject:()=>({}),isValidValue:_.stubTrue,documentation:"PhET-iO Type used as a place holder for dynamic elements to be created when set for state."});A.A.register("DynamicMarkerIO",Fw);const Hw=Fw,Yw=e=>{(0,ze.Ay)(e.split(".").length>1,"path must have multiple parts"),(0,ze.Ay)(e.trim()===e,"path must be trimmed");const t=e.split("."),i=t.pop(),n=Ki.A.get(window,t);return n?n[i].bind(n):null};Te.A.register("gracefulBind",Yw);const Gw=Yw,Uw=(e,t)=>class extends e{layout(e){this.layoutBounds&&(this.popupParent.matrix=bw.getLayoutMatrix(this.layoutBounds,e))}shouldShowPopup(){return!(this.isModal&&this.disableModals)}show(){this.shouldShowPopup()&&(this._nodeToFocusOnHide=this._focusOnHideNode||_n(),this.isShowingProperty.value=!0,this._focusOnShowNode&&this._focusOnShowNode.focusable&&this._focusOnShowNode.focus())}hide(){this.interruptSubtreeInput(),this.isShowingProperty.value=!1,this._nodeToFocusOnHide&&this._nodeToFocusOnHide.focusable&&this._nodeToFocusOnHide.focus()}get focusOnHideNode(){return this._focusOnHideNode}dispose(){this.hide(),this.isShowingProperty.dispose(),super.dispose()}constructor(){for(var e,i=arguments.length,n=new Array(i),s=0;s{e?h.showPopup(this.popupParent,h.isModal):h.hidePopup(this.popupParent,h.isModal)})}};let zw=class extends Dr{constructor(e,t){const i=(0,o.Ay)()({children:[e]},t);super(i),this.show=i.show,this.hide=i.hide,this.layout=i.layout}};Vb.register("Popupable",Uw);const Ww=Uw,Qw=(0,Qc.A)("SUN");Vb.register("SunStrings",Qw);const Kw=Qw;let jw=class e extends(Ww(gP,1)){dispose(){this.disposeDialog(),super.dispose()}constructor(t,i){var n;const s=(0,o.Ay)()({xSpacing:10,ySpacing:10,topMargin:15,bottomMargin:15,leftMargin:null,maxWidthMargin:12,maxHeightMargin:12,closeButtonLength:18.2,closeButtonTopMargin:10,closeButtonRightMargin:10,title:null,titleAlign:"center",layoutStrategy:Zw,closeButtonListener:()=>this.hide(),closeButtonColor:"black",closeButtonTouchAreaXDilation:0,closeButtonTouchAreaYDilation:0,closeButtonMouseAreaXDilation:0,closeButtonMouseAreaYDilation:0,closeButtonVoicingDialogTitle:null,closeButtonLastInPDOM:!1,openedSoundPlayer:Wm.get("generalOpen"),closedSoundPlayer:Wm.get("generalClose"),sim:Lw("phet.joist.sim"),showCallback:null,hideCallback:null,layoutBounds:bw.DEFAULT_LAYOUT_BOUNDS,focusOnShowNode:null,cornerRadius:10,resize:!0,fill:"white",stroke:"black",backgroundPickable:!0,maxHeight:null,maxWidth:null,tandemNameSuffix:["Dialog",P.k],phetioType:e.DialogIO,phetioState:!0,phetioVisiblePropertyInstrumented:!1,tagName:"div",ariaRole:"dialog",positionInPDOM:!0},i);s.xMargin=0,s.yMargin=0,null===s.leftMargin&&(s.leftMargin=s.xSpacing+s.closeButtonLength+s.closeButtonRightMargin),!s.maxWidth&&s.layoutBounds&&(s.maxWidth=_w(s.layoutBounds.width,s.maxWidthMargin)),!s.maxHeight&&s.layoutBounds&&(s.maxHeight=_w(s.layoutBounds.height,s.maxHeightMargin));const r=new Tn({priority:Tn.MEDIUM_PRIORITY,voicingCanAnnounceProperties:[zn.voicingFullyEnabledProperty]}),a=new Rw({iconLength:s.closeButtonLength,baseColor:"transparent",buttonAppearanceStrategy:Qb.FlatAppearanceStrategy,xMargin:0,yMargin:0,listener:()=>{a.voicingSpeakContextResponse({utterance:r}),s.closeButtonListener()},pathOptions:{stroke:s.closeButtonColor},tandem:null==(n=s.tandem)?void 0:n.createTandem("closeButton"),phetioState:!1,phetioVisiblePropertyInstrumented:!1,phetioEnabledPropertyInstrumented:!1,soundPlayer:qw,voicingContextResponse:Kw.a11y.closedStringProperty});let l;if(s.closeButtonVoicingDialogTitle){const e="string"==typeof s.closeButtonVoicingDialogTitle?new g.A(s.closeButtonVoicingDialogTitle):s.closeButtonVoicingDialogTitle;l=a.voicingNameResponse=new TV(Kw.a11y.titleClosePatternStringProperty,{title:e},{tandem:P.A.OPT_OUT})}a.touchArea=a.bounds.dilatedXY(s.closeButtonTouchAreaXDilation,s.closeButtonTouchAreaYDilation),a.mouseArea=a.bounds.dilatedXY(s.closeButtonMouseAreaXDilation,s.closeButtonMouseAreaYDilation);const h=new Dr({tagName:"h1"}),c=new Dr({tagName:"p"});let d=[h,c,s.title,t];s.closeButtonLastInPDOM?d.push(a):d.unshift(a),d=d.filter(e=>null!=e),s.focusOnShowNode=s.focusOnShowNode?s.focusOnShowNode:d[0].focusable?d[0]:a;const u=new Ff({children:s.title?[s.title,t]:[t],spacing:s.ySpacing,align:s.titleAlign}),p=new Yb(u,{topMargin:s.topMargin,bottomMargin:s.bottomMargin,leftMargin:s.leftMargin}),m=new Yb(a,{topMargin:s.closeButtonTopMargin,rightMargin:s.closeButtonRightMargin}),A=new Nf({children:[h,c,p,m],spacing:s.xSpacing,align:"top"});super(A,s),this.isShowingProperty.lazyLink(e=>{e?(s.openedSoundPlayer.play(),s.showCallback&&s.showCallback()):(s.closedSoundPlayer.play(),s.hideCallback&&s.hideCallback())}),this.sim=s.sim,this.closeButton=a;const y=Ve.multilink([this.sim.boundsProperty,this.sim.screenBoundsProperty,this.sim.scaleProperty,this.sim.selectedScreenProperty,this.isShowingProperty,this.localBoundsProperty],(e,t,i)=>{e&&t&&i&&s.layoutStrategy(this,e,t,i)});this.pdomOrder=d,Js.forwardAccessibleName(this,h),this.accessibleHelpTextBehavior=(e,t,i,n)=>(n.push(()=>{c.innerContent=i}),t),!s.accessibleName&&s.title&&(this.accessibleName=Pb(s.title)),this.addAriaLabelledbyAssociation({thisElementName:qs.PRIMARY_SIBLING,otherNode:h,otherElementName:qs.LABEL_SIBLING});const f=new td({keys:["escape","tab","shift+tab"],fire:(e,t)=>{const i=e;if("escape"===t)i.preventDefault(),this.hide();else if(("tab"===t||"shift+tab"===t)&&nA.isFullScreen()){const e=Jn.pdomFocus.trail.getUniqueId(),t=hn.A.getNextFocusable().id===e,n=hn.A.getPreviousFocusable().id===e;t&&n&&i.preventDefault()}}});this.addInputListener(f),this.disposeDialog=()=>{y.dispose(),m.dispose(),this.removeInputListener(f),f.dispose(),l&&l.dispose(),a.dispose(),r.dispose(),u.dispose(),A.removeAllChildren(),A.detach()}}};function Zw(e,t,i,n){e.layoutBounds&&(e.center=e.layoutBounds.center)}function _w(e,t){return e>2*t?e-2*t:e}jw.DialogIO=new w.A("DialogIO",{valueType:jw,supertype:Hw}),Vb.register("Dialog",jw);var Xw=i(222);let Jw=class extends P.A{constructor(e,t,i){super(e,t,(0,o.Ay)()({isValidTandemName:e=>P.A.getRegexFromCharacterClass(Xw.A.BASE_DYNAMIC_TANDEM_CHARACTER_CLASS).test(e)},i))}};A.A.register("DynamicTandem",Jw);const $w=Jw;i(8981);let ev=class extends b.A{stateSetOnAllChildrenOfDynamicElement(e,t){for(let i=0;i0&&void 0!==arguments[0]?arguments[0]:this.tandem.createTandem(P.k),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.defaultArguments;if(_.hasIn(window,"phet.joist.sim")&&phet.joist.sim.isConstructionCompleteProperty.value)return null;if(P.A.PHET_IO_ENABLED&&phet.preloads.phetio.createArchetypes){const i=Array.isArray(t)?t:t(),n=this.createElement(e,...i);return this.isPhetioInstrumented()&&n.markDynamicElementArchetype(),n}return null}createDynamicElement(e,t,i){let n;n=this.tandem.hasChild(e)?this.tandem.createTandem(e,this.tandem.getExtendedOptions()):new $w(this.tandem,e,this.tandem.getExtendedOptions());const s=this.createElement(n,...t);return P.A.PHET_IO_ENABLED&&this.isPhetioInstrumented()&&(0,L.A)(s,i.validator),s}assertDynamicPhetioObject(e){P.A.PHET_IO_ENABLED&&P.A.VALIDATION}emitDataStreamEvent(e,t,i){this.phetioStartEvent(t,{data:(0,p.A)({phetioID:e.tandem.phetioID},i)}),this.phetioEndEvent()}createdEventListener(e){const t=e.phetioState?{state:this.phetioType.parameterTypes[0].toStateObject(e)}:null;this.emitDataStreamEvent(e,"created",t)}disposedEventListener(e){this.emitDataStreamEvent(e,"disposed")}dispose(){}disposeElement(e){e.dispose(),this.notificationsDeferred?this.deferredDisposals.push(e):this.elementDisposedEmitter.emit(e,e.tandem.phetioID)}notifyElementDisposedWhileDeferred(e){this.elementDisposedEmitter.emit(e,e.tandem.phetioID),(0,d.A)(this.deferredDisposals,e)}notifyElementCreated(e){this.notificationsDeferred?this.deferredCreations.push(e):this.elementCreatedEmitter.emit(e,e.tandem.phetioID)}notifyElementCreatedWhileDeferred(e){this.elementCreatedEmitter.emit(e,e.tandem.phetioID),(0,d.A)(this.deferredCreations,e)}setNotificationsDeferred(e){if(!e){for(;this.deferredCreations.length>0;)this.notifyElementCreatedWhileDeferred(this.deferredCreations[0]);for(;this.deferredDisposals.length>0;)this.notifyElementDisposedWhileDeferred(this.deferredDisposals[0])}this.notificationsDeferred=e}get archetype(){return function(e){if(null===e)throw new Error("archetype should exist");return e}(this._archetype)}getMetadata(e){const t=super.getMetadata(e);return(0,p.A)({phetioDynamicElementName:this.phetioDynamicElementName},t)}constructor(e,t,i){const n=(0,o.Ay)()({phetioState:!1,supportsDynamicState:!0,containerSuffix:"Container",phetioDynamicElementName:void 0},i);if(Array.isArray(t),n.tandem&&!n.phetioDynamicElementName&&(n.phetioDynamicElementName=n.tandem.name.slice(0,n.tandem.name.length-n.containerSuffix.length)),super(n),this.supportsDynamicState=n.supportsDynamicState,this.phetioDynamicElementName=n.phetioDynamicElementName,this.createElement=e,this.defaultArguments=t,this._archetype=this.createArchetype(),this.elementCreatedEmitter=new v.A({parameters:[{valueType:b.A,phetioType:n.phetioType.parameterTypes[0],name:"element"},{name:"phetioID",phetioType:B.A}],tandem:n.tandem.createTandem("elementCreatedEmitter"),phetioDocumentation:"Emitter that fires whenever a new dynamic element is added to the container."}),this.elementDisposedEmitter=new v.A({parameters:[{valueType:b.A,phetioType:n.phetioType.parameterTypes[0],name:"element"},{name:"phetioID",phetioType:B.A}],tandem:n.tandem.createTandem("elementDisposedEmitter"),phetioDocumentation:"Emitter that fires whenever a dynamic element is removed from the container."}),P.A.PHET_IO_ENABLED&&this.isPhetioInstrumented()&&(this.elementCreatedEmitter.addListener(e=>this.createdEventListener(e)),this.elementDisposedEmitter.addListener(e=>this.disposedEventListener(e))),this.notificationsDeferred=!1,this.deferredCreations=[],this.deferredDisposals=[],P.A.PHET_IO_ENABLED&&this.supportsDynamicState&&!this.phetioIsArchetype&&this.isPhetioInstrumented()){const e=phet.phetio.phetioEngine.phetioStateEngine;e.clearDynamicElementsEmitter.addListener((e,t)=>{this.tandem.hasAncestor(t)&&(this.clear({phetioState:e}),this.setNotificationsDeferred(!0))}),e.undeferEmitter.addListener(()=>{this.notificationsDeferred&&this.setNotificationsDeferred(!1)}),e.addSetStateHelper((e,t)=>{let i=!1,n=0;for(;this.deferredCreations.length>0;){if(n>200)throw new Error("Too many iterations in deferred creations, stillToSetIDs = "+t.join(", "));const e=this.deferredCreations[0];this.stateSetOnAllChildrenOfDynamicElement(e.tandem.phetioID,t)&&(this.notifyElementCreatedWhileDeferred(e),i=!0),n++}return i})}}};A.A.register("PhetioDynamicElementContainer",ev);const tv=ev,iv=$l.A.CAPSULE_SUFFIX,nv=new m.A;let sv=class extends tv{disposeElement(){super.disposeElement(this.element),this.element=null}hasElement(){return null!==this.element}getElement(){if(!this.element){for(var e=arguments.length,t=new Array(e),i=0;i1&&void 0!==arguments[1]&&arguments[1];return this.element=this.createDynamicElement(this.phetioDynamicElementName,e,P.A.PHET_IO_ENABLED?this.phetioType.parameterTypes[0]:null),this.notifyElementCreated(this.element),this.element}constructor(e,t,i){const n=(0,o.Ay)()({containerSuffix:iv,disposeOnClear:!0,disposeCreatedOnStateSet:!1},i);super(e,t,n),this.element=null,this.disposeOnClear=n.disposeOnClear,this.disposeCreatedOnStateSet=n.disposeCreatedOnStateSet}};sv.PhetioCapsuleIO=e=>(nv.has(e)||nv.set(e,new w.A(`PhetioCapsuleIO<${e.typeName}>`,{valueType:sv,documentation:"An array that sends notifications when its values have changed.",parameterTypes:[e],metadataDefaults:{phetioDynamicElementName:null},addChildElement(t,i,n){const s=e.stateObjectToCreateElementArguments(n);return t.create(s,!0)}})),nv.get(e)),A.A.register("PhetioCapsule",sv);const rv=sv,ov=new Image,av=Cl.A.createLock(ov);ov.onload=av,ov.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAA+CAYAAABuv5bfAAAACXBIWXMAABhMAAAYTAGIN/zbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAttJREFUeNrsW91RwzAMdnu8txsQJqiZoGECyhtvlAmaDSgbZIRuQEYIG4QJCBukb7yFiHPvgisV+fJTJ5XudL24MpI/9Ge7mZRlqUZG24pfas93FadtKpiq8dG8awVjBE0LaM09LW9bwWRkOS2o+NNeo3jaaQ9LrLGPLhRdjSB/hYbvke/TLpQOKTyDGkjwuWTMuekip/nuaQDQ2nxeO8zbVxx1AZjvoMUVbxznQA7bGS66MszX8MSqIOVRqeGkK88aiqdtT3z3bgACoLJzGOerp0Fozayw2yItxVnIR09bWYAdxnJfDPSxuQ2t5y+fAMM8LUSM7pserefvf3JcH5TU8+chp2lTphdK6FQBgjRRAGiBQXEmuLD6wHBqXF8A4xFEYgSeVgoWbt4moLXYcsBlxERYvQ6lTxuspwkJaOfbe87V8fVYytwKZQo/37LlcmLLpNXfW6aCOOEIDP9nI7YWysZjKnEKoahanCFyESIXI3IJIhchcgUipwkbNSJbMG1MmDZuMcUu4bkg/mOYV3DksLEZU67p/LmDHslpUggGABp28Zq1PIbpgMKwt8b2RMHg2thb9QytfEVVsEgdH0unxBnVrZVLMgI0bVVFqspybewNtELxb6y5ctwFUSA1sVFymhQCAe2yQdvBBoLBK2TuCpGLiW1QYcllJ/JhXa5AtlDK6LF1L/sC7YkppxuMBUhXv2DuUGYEaFrCU3La+EHbjxwL9k+zXJpbTeQMTsMaI01nTjTFd8zF3CInE1hju25gd2PQuF35UHcTktOkEAhowyeXnBYjjWKE5Ja1YV+Ia+POcKugbYjtEWbQ0iPQXGzcSXhKThPQLqYQPCCFICYS78qjNXJtTLoALWH+4Uyd6aUIB2pko4SngCagDa4QQPMXCjw4BvJDZXf6gvD8EBycKAVPg37lTbBgERz566npvZ4FDxZgv+/F11+SDRX/PP3SKDM7ixwefgQYAIqW2LtFfuBbAAAAAElFTkSuQmCC";const lv=ov,hv=new Image,cv=Cl.A.createLock(hv);hv.onload=cv,hv.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAAA+CAYAAABuv5bfAAAACXBIWXMAABhMAAAYTAGIN/zbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxlJREFUeNrsW8tx2zAQBWPfpWNupiswc8oxcgVhbr6ZJbADswSWoBJQAtwBVUHoDqhbcmIWnuVEhpfSYkhKILU7s8MR/CgsnoH9AFDUtq1akkRRVMDj5aDpEcZoxuzji1qerKfuYImkJULa8JlWj+4CluTTwJ/F8Ph92Abji2Sm9RNmZ5h2mndT9HU7c6Ks/9qg/iQgZpJ+57I8cel1JNnnD8Zr9zC++qpmGhBlCcqQqDuPV/eg+RSEdY4ySAUprXmeWlmybASd0rYglycVBY/MKIOqJ5tZM1mexZG/vWKUNEBSdZF/aqAzrYHHykkdCrBVh2DfbYCEpQ5hVtJzLb25Jrcb5/NbSIR9mmkY4jcXtunJ+fwHt3suKfqD/0SflmC4bkV71XSpjBUb3hshhZ0Hrm8wifyuRDjyFfRvhAyK8GUnpI2Yp41+GDHTrScbtV/mkKcFL0KakBZY7Yl78ImzF2d6sG5VUQG2YeBqqmTCbe3DU6aG2uHALaX4lI3UWPps7BMqidsQm4JUxZAzNw81gcsJXEPgkh4bEwLbMG3UTBsLqm+f5flAtFGn2QkTR7WtmLih7689+hGfJoFgBqRRB6/VyG1UHzYw7J22vaKvG3BtPE/0VP/PG49GMGjLITrpUxHMbl0D7pvjS6jvqzF6xqeiLNfGs5GG4dgwsVxcxcTVinGRxcdG8WkSCIS06yYNnPEWtGVoSrybEriSKoPsmaeDq3rsqRxcg2WUiyvdvhXv8swoM+2ZiUsGtMVEVv/ArFBWbt15pB9ZnuLTFkbafuFcsLeFfCqCpMdncMqWkkg6ayopBkf9yByMW030JdXZALsHVwSsrHyu1YT4NAkEQtoixOdgpSQSxdz1LYDL0PmGIlwbt4Dbsv204h2sULiCwBkV1k0fro1mioMVEfFpQlqYgQDkFxEISsrxgqYBjZFrox6dNLzDrxm4Sk1wAjSmDLVRlqeQJqTNLhBkxDWoaxSSA7mo7C9vdnnuhAcvsSXYe74iv0bhqd1MjbvCNBNCWIRlH36OffAj+1hW4CexiXDZ3VT6J8AAo7gFqk0pOnsAAAAASUVORK5CYII=";const dv=hv;let uv=class extends Nf{constructor(e,t,i){const n=(0,o.Ay)()({fill:"white",highlightWidth:1,pickable:!1},i);n.spacing=e;const s=n.fill,r=jr.toColor(s).withAlpha(0),a={fill:new sb(0,0,0,t).addColorStop(0,r).addColorStop(.5,s).addColorStop(1,r)},l=new Va(0,0,n.highlightWidth,t,a),h=new Va(0,0,n.highlightWidth,t,a);n.children=[l,h],super(n)}};eh.A.register("HighlightNode",uv);const pv=uv;let mv=class extends(pA(Dr)){isPDOMClicking(){return this._pressListener.pdomClickingProperty.get()}constructor(e,t,i){const n=(0,o.Ay)()({cursor:"pointer",listener:null,highlightExtensionWidth:0,highlightExtensionHeight:0,highlightCenterOffsetX:0,highlightCenterOffsetY:0,pointerAreaDilationX:0,pointerAreaDilationY:0,enabledPropertyOptions:{phetioFeatured:!1},disabledOpacity:Vf.DISABLED_OPACITY,tagName:"button"},i),s=function(t){return new pv(e.width+n.highlightExtensionWidth,e.height+n.highlightExtensionHeight,{centerX:e.centerX+n.highlightCenterOffsetX,centerY:e.centerY+n.highlightCenterOffsetY,fill:t,pickable:!1})},r=s("white"),a=s("black");n.children=[e,r,a],super(n),this.buttonModel=new kb(n);const l=new xb(this.buttonModel);this.interactionStateProperty=l,Ve.multilink([l,t,this.buttonModel.enabledProperty],(e,t,i)=>{const n=!t.equals(jr.BLACK);r.visible=!n&&i&&(e===Ib.OVER||e===Ib.PRESSED),a.visible=n&&i&&(e===Ib.OVER||e===Ib.PRESSED)}),this.buttonModel.enabledProperty.link(e=>{this.cursor=e?n.cursor:null}),this._pressListener=this.buttonModel.createPressListener({tandem:P.A.OPT_OUT}),this.addInputListener(this._pressListener),this.mouseArea=this.touchArea=Ui.bounds(this.bounds.dilatedXY(n.pointerAreaDilationX,n.pointerAreaDilationY)),this.focusHighlight=Ui.bounds(this.bounds.shiftedY(-3))}};eh.A.register("JoistButton",mv);let gv=class extends(bA(Rc)){constructor(e,t){const i=(0,o.Ay)()({readingBlockNameResponse:e},t);i.readingBlockDisabledTagName?i.accessibleName=void 0===i.accessibleName?e:i.accessibleName:i.accessibleParagraph=void 0===i.accessibleParagraph?e:i.accessibleParagraph,super(e),this.focusHighlight=new hA(this),this.mutate(i)}};ot.A.register("VoicingText",gv);const Av=gv,yv=CV.A.a11y.keyboardHelp.tabToGetStartedStringProperty;let fv=class extends jw{constructor(e,t,i){const n=(0,o.Ay)()({titleAlign:"center",fill:"rgb( 214, 237, 249 )",ySpacing:15,phetioReadOnly:!0,phetioDynamicElement:!0,closeButtonVoicingDialogTitle:CV.A.keyboardShortcuts.titleStringProperty,isDisposable:!1},i),s=new Dr({tagName:"div"}),r=n.tandem.createTandem("content"),a=[];e.forEach(e=>{const t=e.tandem.supplied?r.createTandem(e.tandem.name):P.A.REQUIRED,i=e.createKeyboardHelpNode(t);a.push(i)});const l=new Av(CV.A.keyboardShortcuts.titleStringProperty,{font:new Wc({weight:"bold",size:24}),maxWidth:670,accessibleParagraph:null}),h=new bv,c=new Ff({children:[l,h],spacing:5});n.title=c,super(s,n),Ve.multilink([t,this.isShowingProperty],(t,i)=>{const n=a[e.indexOf(t)];i&&(s.children=[n])})}},bv=class extends(bA(Dr)){constructor(e){const t=(0,o.Ay)()({readingBlockNameResponse:yv},e);super();const i=YP.tab(),n=VV.labelWithIcon(CV.A.keyboardShortcuts.toGetStartedStringProperty,i,{labelInnerContent:yv,iconOptions:{tagName:"p"}}),s=new Nf({children:[n.icon,n.label],spacing:4});this.addChild(s),this.mutate(t)}};eh.A.register("KeyboardHelpDialog",fv);const Pv=CV.A.a11y.keyboardHelp.keyboardShortcutsStringProperty;let Vv=class extends mv{constructor(e,t,i,n){const s=(0,o.Ay)()({highlightExtensionWidth:8.6,highlightExtensionHeight:10,highlightCenterOffsetY:2,visiblePropertyOptions:{phetioFeatured:!0},accessibleName:Pv,voicingNameResponse:Pv},n);let r=null;s.listener=()=>{r.getElement().show()};const a=new Jh(lv,{scale:17.085/lv.height,pickable:!1});super(a,i,s),r=new rv(i=>new fv(e,t,{tandem:i,focusOnHideNode:this}),[],{tandem:s.tandem.createTandem("keyboardHelpDialogCapsule"),phetioType:rv.PhetioCapsuleIO(jw.DialogIO),disposeOnClear:!1}),i.link(e=>{a.image=e.equals(jr.BLACK)?lv:dv})}};eh.A.register("KeyboardHelpButton",Vv);const wv=Vv,vv=Math.PI/2.7,Ev=-1*vv;let Sv=class extends mv{constructor(e,t,i){const n=(0,o.Ay)()({highlightExtensionWidth:8.6,highlightExtensionHeight:10,highlightCenterOffsetY:0,enabled:!(phet.chipper.isFuzzEnabled()&&phet.chipper.supportsAnyVoicing()),visiblePropertyOptions:{phetioFeatured:!0},phetioFeatured:!0,accessibleName:CV.A.a11y.soundToggle.labelStringProperty,voicingNameResponse:CV.A.a11y.soundToggle.labelStringProperty},i);n.listener=()=>e.set(!e.get());const s=new Dr,r=new Dr,a=new Va(0,0,24.86,22,{fill:"transparent"});s.addChild(a),r.addChild(a);const l=new ga((new Ui).moveTo(9.8252,0).lineTo(4.519592,(16.94-5.929)/2).lineTo(1,(16.94-5.929)/2).arc(1,(16.94-5.929)/2+1,1,1.5*Math.PI,Math.PI,!0).lineToRelative(0,5.929-2).arc(1,10.4345,1,Math.PI,.5*Math.PI,!0).lineToRelative(4.519592-1,0).lineTo(9.8252,16.94).lineTo(9.8252,0).close(),{stroke:"black",lineWidth:1.5,lineJoin:"round",centerY:r.centerY,left:0});s.addChild(l),r.addChild(l);const h=new ga((new Ui).moveTo(0,0).lineTo(16.94*.52,16.94*.52).moveTo(0,16.94*.52).lineTo(16.94*.52,0),{stroke:"black",lineWidth:1.7,lineCap:"round",right:r.width,centerY:r.centerY});r.addChild(h);const c=new ga((new Ui).arc(0,0,10.6722,vv,Ev,!0).moveToPoint(new De.A(6.776,0).rotated(vv)).arc(0,0,6.776,vv,Ev,!0).moveToPoint(new De.A(6.776-16.94*.23,0).rotated(vv)).arc(0,0,6.776-16.94*.23,vv,Ev,!0),{stroke:"black",lineWidth:1.7,lineCap:"round",right:s.width,centerY:s.centerY});s.addChild(c),super(new aP(nh.anyOutputEnabledProperty,[{value:!0,createNode:()=>s},{value:!1,createNode:()=>r}],{maxHeight:18.7}),t,n),this.addLinkedElement(e,{tandemName:"property"});const d=new FP;e.lazyLink(e=>{n.supportsAudioPreferences&&(this.setPDOMAttribute("aria-pressed",e),d.alert=e?CV.A.a11y.soundToggle.alert.simSoundOnStringProperty:CV.A.a11y.soundToggle.alert.simSoundOffStringProperty,this.alertDescriptionUtterance(d),zn.voicingFullyEnabledProperty.value&&zn.speakIgnoringEnabled(d))}),this.setPDOMAttribute("aria-pressed",e.get()),nh.anySubcomponentEnabledProperty.link(e=>{this.enabled=e}),t.link(e=>{const t=e.equals(jr.BLACK)?"white":"black";l.stroke=t,h.stroke=t,c.stroke=t})}};eh.A.register("NavigationBarAudioToggleButton",Sv);const Tv=Sv,Cv=new Image,Iv=Cl.A.createLock(Cv);Cv.onload=Iv,Cv.src="data:image/png;base64,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";const xv=Cv,Dv=new Image,kv=Cl.A.createLock(Dv);Dv.onload=kv,Dv.src="data:image/png;base64,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";const Mv=Dv,Bv=new Wc({weight:"bold",size:16}),Ov=new Wc(16),Lv=new Wc({size:24,weight:"bold"}),Rv=new Wc(20),Nv={font:Rv,maxWidth:120},qv=new Wc(16),Fv={font:qv,maxWidth:500},Hv=new Wc({weight:"bold",size:16}),Yv={font:Hv,maxWidth:360},Gv={TOGGLE_SWITCH_OPTIONS:{size:new Ne(36,18),trackFillRight:"#64bd5a",enabled:!(phet.chipper.isFuzzEnabled()&&phet.chipper.supportsAnyVoicing()),voicingIgnoreVoicingManagerProperties:!0,tandem:P.A.OPT_OUT},CONTROL_LABEL_OPTIONS:{font:Bv,maxWidth:360},CONTROL_DESCRIPTION_OPTIONS:{font:Ov,lineWrap:"stretch"},TOGGLE_SWITCH_LABEL_OPTIONS:{font:Ov},TAB_FONT:Rv,TAB_OPTIONS:Nv,TITLE_FONT:Lv,CONTENT_FONT:qv,CONTENT_MAX_WIDTH:500,PANEL_SECTION_CONTENT_OPTIONS:Fv,PANEL_SECTION_LABEL_FONT:Hv,PANEL_SECTION_LABEL_MAX_WIDTH:360,PANEL_SECTION_LABEL_OPTIONS:Yv,CONTENT_SPACING:20,VERTICAL_CONTENT_SPACING:5,CONTENT_INDENTATION_SPACING:15,LABEL_CONTENT_SPACING:10},Uv=new Ne(60,30);let zv=class extends(pA(Dr)){dispose(){this.disposeToggleSwitch(),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({size:Uv,toggleWhileDragging:null,dragThreshold:3,toggleThreshold:1,thumbFill:null,thumbStroke:"black",thumbTouchAreaXDilation:8,thumbTouchAreaYDilation:8,thumbMouseAreaXDilation:0,thumbMouseAreaYDilation:0,trackFillLeft:null,trackFillRight:null,trackStroke:"black",cursor:"pointer",disabledOpacity:Vf.DISABLED_OPACITY,switchToLeftSoundPlayer:Wm.get("switchToLeft"),switchToRightSoundPlayer:Wm.get("switchToRight"),tandem:P.A.REQUIRED,tandemNameSuffix:"Switch",phetioEventType:je.A.USER,phetioReadOnly:b.A.DEFAULT_OPTIONS.phetioReadOnly,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioFeatured:!0,tagName:"button",accessibleSwitch:!0,leftValueContextResponse:null,rightValueContextResponse:null},n);let r=null;s.trackFillLeft&&s.trackFillRight||(r=new sb(0,0,0,s.size.height).addColorStop(0,"rgb( 40, 40, 40 )").addColorStop(1,"rgb( 200, 200, 200 )")),s.trackFillLeft=s.trackFillLeft||r,s.trackFillRight=s.trackFillRight||r,s.thumbFill=s.thumbFill||new sb(0,0,0,s.size.height).addColorStop(0,"white").addColorStop(1,"rgb( 200, 200, 200 )"),s.accessibleName&&(s.voicingNameResponse=s.accessibleName),super(),this.onInputEmitter=new v.A;const a=s.size.height/2,l=new Va(0,0,s.size.width,s.size.height,a,a,{stroke:s.trackStroke,fill:s.trackFillLeft});this.addChild(l);const h=new Va(0,0,s.size.width,s.size.height,a,a,{stroke:s.trackStroke,fill:s.trackFillRight});this.addChild(h);const c=new Va(0,0,.5*s.size.width,s.size.height,a,a,{fill:s.thumbFill,stroke:s.thumbStroke});this.addChild(c),(s.thumbTouchAreaXDilation||s.thumbTouchAreaYDilation)&&(c.touchArea=Ui.roundRect(-s.thumbTouchAreaXDilation,-s.thumbTouchAreaYDilation,.5*s.size.width+2*s.thumbTouchAreaXDilation,s.size.height+2*s.thumbTouchAreaYDilation,a,a)),(s.thumbMouseAreaXDilation||s.thumbMouseAreaYDilation)&&(c.mouseArea=Ui.roundRect(-s.thumbMouseAreaXDilation,-s.thumbMouseAreaYDilation,.5*s.size.width+2*s.thumbMouseAreaXDilation,s.size.height+2*s.thumbMouseAreaYDilation,a,a));const d=e=>{const i=l.lineWidth/2;e===t?c.left=-i:c.right=s.size.width+i,h.rectWidth=c.right-i,s.accessibleSwitch&&(this.setPDOMAttribute("aria-pressed",e!==t),this.setPDOMAttribute("aria-checked",e!==t))};s.accessibleSwitch&&(this.ariaRole="switch"),e.link(d);const u=s.dragThreshold*s.dragThreshold,p=new De.A(0,0);let m=!1;const g=new $e.A(t=>{e.value=t,this.onInputEmitter.emit()},{parameters:[{validValues:[t,i],phetioPrivate:!0}],tandem:s.tandem.createTandem("toggleAction"),phetioDocumentation:"Occurs when the switch is toggled via user interaction",phetioReadOnly:s.phetioReadOnly,phetioEventType:je.A.USER});this.onInputEmitter.addListener(()=>{e.value===t?s.switchToLeftSoundPlayer.play():s.switchToRightSoundPlayer.play();const n=e.value===i?s.rightValueContextResponse:s.leftValueContextResponse;n&&(this.alertDescriptionUtterance(n),this.voicingSpeakResponse({contextResponse:Tn.alertableToText(n)}))});const A=()=>c.centerX!e||"move"!==e.type&&"enter"!==e.type||_.includes(e.trail.nodes,c),start:()=>{p.setXY(0,0),m=!1},drag:(t,i)=>{p.add(i.modelDelta),m=m||p.magnitudeSquared>u;const n=i.getCurrentTarget().globalToLocalPoint(t.pointer.point),r=c.width/2,o=l.lineWidth/2;c.centerX=(0,et.q)(n.x,r-o,s.size.width-r+o),h.rectWidth=c.right-o;const a=n.x<(1-2*s.toggleThreshold)*r||n.x>(2*s.toggleThreshold-1)*r+s.size.width,d=A();(!0===s.toggleWhileDragging||a&&null===s.toggleWhileDragging)&&e.value!==d&&g.execute(d)},end:()=>{const n=e.value===t?i:t,s=m?A():n;e.value!==s&&g.execute(s),d(s)},canClick:!0});this.addInputListener(y),this.mutate(s),this.addLinkedElement(e,{tandemName:"property"}),this.switchToLeftSoundPlayer=s.switchToLeftSoundPlayer,this.switchToRightSoundPlayer=s.switchToRightSoundPlayer,this.disposeToggleSwitch=()=>{l.dispose(),h.dispose(),e.unlink(d),g.dispose(),y.dispose(),this.onInputEmitter.dispose()}}};Vb.register("ToggleSwitch",zv);let Wv=class extends Bf{constructor(e){const t=(0,o.Ay)()({headingControl:!1,labelSpacing:10,allowDescriptionStretch:!0,valueLabelXSpacing:8,ySpacing:5,nestedContent:[],grow:1,layoutOptions:{stretch:!(null==e?void 0:e.headingControl)}},e);if(super(t),t.controlNode&&(this.enabledProperty.link(e=>{t.controlNode.enabled=e}),t.controlNode.layoutOptions={row:0,column:1,xAlign:"right"},this.addChild(t.controlNode)),t.labelNode&&(t.labelNode.layoutOptions={row:0,column:0,xAlign:"left",rightMargin:t.labelSpacing},this.addChild(t.labelNode)),t.descriptionNode&&t.labelNode){const e={row:1,column:0,horizontalSpan:2,xAlign:"left"};t.allowDescriptionStretch&&(e.minContentWidth=480,e.stretch=!0),t.descriptionNode.layoutOptions=e,this.addChild(t.descriptionNode)}else t.descriptionNode&&(t.descriptionNode.layoutOptions={row:0,column:0,xAlign:"left"},this.addChild(t.descriptionNode));this.disabledOpacity=Vf.DISABLED_OPACITY}};eh.A.register("PreferencesControl",Wv);const Qv=Wv;let Kv=class extends Dr{constructor(e,t,i,n){const s=(0,o.Ay)()({tagName:"div",labelTagName:"h2"},n);s.tandem=P.A.OPT_OUT,super(s),Ve.multilink([t,i],(t,i)=>{this.visible=t===e&&i})}};eh.A.register("PreferencesPanel",Kv);const jv=Kv;let Zv=class extends Ff{constructor(e){const t=(0,o.Ay)()({spacing:Gv.CONTENT_SPACING,titleNode:null,contentNode:null,contentNodeOptions:{},contentLeftMargin:30},e),i=new fV({matchVertical:!1}),n=[];if(t.titleNode&&n.push(i.createBox(t.titleNode,{xAlign:"left"})),t.contentNode){const e=(0,o.sF)({children:[t.contentNode]},t.contentNodeOptions);n.push(i.createBox(new Dr(e),{leftMargin:t.contentLeftMargin,xAlign:"left"}))}t.children=n,super(t)}};eh.A.register("PreferencesPanelSection",Zv);const _v=Zv;let Xv=class extends Se.A{};Xv.OVERVIEW=new Xv,Xv.SIMULATION=new Xv,Xv.VISUAL=new Xv,Xv.AUDIO=new Xv,Xv.INPUT=new Xv,Xv.LOCALIZATION=new Xv,Xv.enumeration=new Ee.A(Xv),eh.A.register("PreferencesType",Xv);let Jv=class extends(bA(mf)){constructor(e,t){const i=(0,o.Ay)()({readingBlockNameResponse:e,readingBlockTagName:"button"},t);i.readingBlockDisabledTagName?i.accessibleName=void 0===i.accessibleName?e:i.accessibleName:i.accessibleParagraph=void 0===i.accessibleParagraph?e:i.accessibleParagraph,super(e,i),this.focusHighlight=new hA(this)}};ot.A.register("VoicingRichText",Jv);const $v=Jv,eE=CV.A.preferences.tabs.audio.sounds.titleStringProperty,tE=CV.A.preferences.tabs.audio.sounds.extraSounds.titleStringProperty,iE=CV.A.preferences.tabs.audio.sounds.descriptionStringProperty,nE=CV.A.preferences.tabs.audio.sounds.extraSounds.descriptionStringProperty,sE=CV.A.a11y.preferences.tabs.audio.sounds.soundsOnStringProperty,rE=CV.A.a11y.preferences.tabs.audio.sounds.soundsOffStringProperty,oE=CV.A.a11y.preferences.tabs.audio.sounds.extraSounds.extraSoundsOnStringProperty,aE=CV.A.a11y.preferences.tabs.audio.sounds.extraSounds.extraSoundsOffStringProperty,lE=CV.A.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;let hE=class extends _v{constructor(e,t){const i=(0,o.Ay)()({includeTitleToggleSwitch:!0},t),n=new Rc(eE,Gv.PANEL_SECTION_LABEL_OPTIONS),s=new TV(lE,{label:eE,description:iE},{tandem:P.A.OPT_OUT}),r=new Av(iE,(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:s})),a=new zv(e.soundEnabledProperty,!1,!0,(0,o.sF)({visible:i.includeTitleToggleSwitch,accessibleName:eE,leftValueContextResponse:rE,rightValueContextResponse:sE},Gv.TOGGLE_SWITCH_OPTIONS)),l=new Qv({labelNode:n,descriptionNode:r,allowDescriptionStretch:!1,controlNode:a});let h=null;if(e.supportsExtraSound){const t=new Rc(tE,Gv.PANEL_SECTION_CONTENT_OPTIONS),i=new sP(e.extraSoundEnabledProperty,t,{labelTagName:"label",labelContent:tE,voicingNameResponse:tE,voicingIgnoreVoicingManagerProperties:!0,voiceNameResponseOnSelection:!1,checkedContextResponse:oE,uncheckedContextResponse:aE,tandem:P.A.OPT_OUT}),n=new TV(lE,{label:tE,description:nE},{tandem:P.A.OPT_OUT}),s=new $v(nE,(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{lineWrap:300,maxHeight:100,readingBlockNameResponse:n,disabledOpacity:Vf.DISABLED_OPACITY}));h=new Ff({children:[i,s],align:"left",spacing:5,tagName:"div"});const r=e=>{h.children.forEach(t=>t.setEnabled(e))};e.soundEnabledProperty.link(r)}super({titleNode:l,contentNode:h})}};eh.A.register("SoundPanelSection",hE);const cE=hE;function dE(e,t){return parseFloat(se(e,t))}function uE(e){if(Math.floor(e)===e)return 0;{const t=e.toString();if(t.includes("e")){const e=t.split("e"),i=e[0],n=Number(e[1]),s=i.includes(".")?i.split(".")[1].length:0;return Math.max(s-n,0)}return t.split(".")[1].length}}function pE(e,t){return dE((0,tt.q)(e/t)*t,uE(t))}C.A.register("toFixedNumber",dE),C.A.register("numberOfDecimalPlaces",uE),C.A.register("roundToInterval",pE);let mE=class extends Zb{constructor(e,t,i){const n=(0,o.Ay)()({cursor:"pointer",baseColor:"white",stroke:"black",lineWidth:1,cornerRadius:4,xMargin:7,yMargin:5,touchAreaXDilation:7,touchAreaYDilation:7,arrowHeight:20,arrowWidth:20*Math.sqrt(3)/2,arrowFill:"black",arrowStroke:null,arrowLineWidth:1,numberOfArrows:1,arrowSpacing:-10,fireOnHold:!0,fireOnHoldDelay:400,fireOnHoldInterval:100,startCallback:_.noop,endCallback:_.noop},i);n.listener=t;const s=new Ui;for(let r=0;re.x).concat(t.points.map(e=>e.x)))}getIntersectedXValues(t){const i=this.getCombinedXValues(t),n=[];for(let e=0;es)&&(e===i.length-2||o.xnew De.A(e,i(this.evaluate(e),t.evaluate(e)))))}binaryPointwiseOperation(e,t){return this.binaryXOperation(e,t,this.getCombinedXValues(e))}binaryIntersectingOperation(e,t){return this.binaryXOperation(e,t,this.getIntersectedXValues(e))}plus(e){return this.binaryPointwiseOperation(e,(e,t)=>e+t)}minus(e){return this.binaryPointwiseOperation(e,(e,t)=>e-t)}min(e){return this.binaryIntersectingOperation(e,Math.min)}max(e){return this.binaryIntersectingOperation(e,Math.max)}withXValues(t){return new e(t.map(e=>new De.A(e,this.evaluate(e))))}inverted(){const t=this.points.map(e=>new De.A(e.y,e.x));return t.length>1&&t[0].x>t[1].x&&t.reverse(),new e(t)}static sum(){for(var e=arguments.length,t=new Array(e),i=0;ie.plus(t))}static min(){for(var e=arguments.length,t=new Array(e),i=0;ie.min(t))}static max(){for(var e=arguments.length,t=new Array(e),i=0;ie.max(t))}static constant(t){return new e([new De.A(0,t)])}static linear(t,i){return new e([new De.A(0,i),new De.A(1,t+i)])}static sortedUniqueEpsilon(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;e=_.sortBy(e);for(let i=0;ipE(e,1e-9),vE=()=>1,EE=()=>{};let SE=class e extends Ze.A{playSoundIfThresholdReached(e,t){if(e!==t){const i=this.constrainValue(e),n=this.constrainValue(t),s=this.getSurroundingThresholds(n),r=this.getSurroundingThresholds(i),o=1===s.length&&1===r.length&&Math.abs(s[0]-r[0])>this.interThresholdDistance||1===s.length&&2===r.length&&s[0]!==r[0]&&s[0]!==r[1]||2===s.length&&1===r.length&&r[0]!==s[0]&&r[0]!==s[1]||2===s.length&&2===r.length&&r[0]!==s[0],a=1===r.length&&(2===s.length||s[0]!==r[0]);(o||a||i===this.valueRangeProperty.value.min||i===this.valueRangeProperty.value.max)&&this.playSoundForValueChange(e,t)}}playSoundForValueChange(t,i){const n=this.constrainValue(t),s=this.constrainValue(i);if(n!==s||i!==t&&(t===this.valueRangeProperty.value.min||t===this.valueRangeProperty.value.max))if(t===this.valueRangeProperty.value.min&&this.minSoundPlayer!==e.USE_MIDDLE_SOUND)this.minSoundPlayer.play();else if(t===this.valueRangeProperty.value.max&&this.maxSoundPlayer!==e.USE_MIDDLE_SOUND)this.maxSoundPlayer.play();else{const e=Bl.currentTime;if(e-this.timeOfMostRecentMiddleSound>this.minimumInterMiddleSoundTime){let i,r;n>s?(i=this.middleMovingUpPlaybackRateMapper,r=this.middleMovingUpSoundPlayer):(i=this.middleMovingDownPlaybackRateMapper,r=this.middleMovingDownSoundPlayer),i!==vE&&r.setPlaybackRate(i(t)),r.play(),this.timeOfMostRecentMiddleSound=e}}}getSurroundingThresholds(e){const t=Math.floor(pE((e-this.valueRangeProperty.value.min)/this.interThresholdDistance,1e-7)),i=pE(t*this.interThresholdDistance+this.valueRangeProperty.value.min,1e-7),n=[i];if(i!==e){const e=Math.min(pE(i+this.interThresholdDistance,1e-7),this.valueRangeProperty.value.max);e>i&&n.push(e)}return n}constructor(e,t){const i=(0,o.Ay)()({middleMovingUpSoundPlayer:Wm.get("generalSoftClick"),middleMovingDownSoundPlayer:VE,middleMovingUpPlaybackRateMapper:vE,middleMovingDownPlaybackRateMapper:vE,numberOfMiddleThresholds:null,interThresholdDelta:null,constrainValue:wE,minSoundPlayer:PE,maxSoundPlayer:Wm.get("generalBoundaryBoop"),minimumInterMiddleSoundTime:.035},t);null===i.numberOfMiddleThresholds&&null===i.interThresholdDelta&&(i.numberOfMiddleThresholds=5),super(i),this.interThresholdDistance=5,this.valueRangeProperty=e instanceof D?new g.A(e):e,this.middleMovingUpSoundPlayer=i.middleMovingUpSoundPlayer,this.middleMovingDownSoundPlayer=i.middleMovingDownSoundPlayer,this.middleMovingUpPlaybackRateMapper=i.middleMovingUpPlaybackRateMapper,this.middleMovingDownPlaybackRateMapper=i.middleMovingDownPlaybackRateMapper,this.minSoundPlayer=i.minSoundPlayer,this.maxSoundPlayer=i.maxSoundPlayer,this.minimumInterMiddleSoundTime=i.minimumInterMiddleSoundTime,this.timeOfMostRecentMiddleSound=0,this.constrainValue=i.constrainValue;const n=e=>{null!==i.numberOfMiddleThresholds?this.interThresholdDistance=e.getLength()/(i.numberOfMiddleThresholds+1):null!==i.interThresholdDelta?this.interThresholdDistance=i.interThresholdDelta:this.interThresholdDistance=e.getLength()/2};this.valueRangeProperty.link(n),this.disposeEmitter.addListener(()=>{this.valueRangeProperty.unlink(n)})}};SE.NO_SOUND=new SE(new D(0,1),{middleMovingUpSoundPlayer:qw,minSoundPlayer:qw,maxSoundPlayer:qw}),SE.USE_MIDDLE_SOUND={play:EE,stop:EE},xl.register("ValueChangeSoundPlayer",SE);const TE=SE,CE={HOME_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("home")],binderName:"Set value to minimum",repoName:Vb.name}),END_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("end")],binderName:"Set value to maximum",repoName:Vb.name}),PAGE_UP_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("pageUp")],binderName:"Increment value by page",repoName:Vb.name}),PAGE_DOWN_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("pageDown")],binderName:"Decrement value by page",repoName:Vb.name}),UP_ARROW_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("arrowUp")],binderName:"Increment value by up arrow",repoName:Vb.name}),DOWN_ARROW_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("arrowDown")],binderName:"Decrement value by down arrow",repoName:Vb.name}),RIGHT_ARROW_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("arrowRight")],binderName:"Increment value by right arrow",repoName:Vb.name}),LEFT_ARROW_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("arrowLeft")],binderName:"Decrement value by left arrow",repoName:Vb.name}),SHIFT_HOTKEY_DATA:new Ia({keyStringProperties:[new h.A("shift")],binderName:"Increment/decrement in smaller steps",repoName:Vb.name}),isRangeKey:e=>Ia.anyHaveKeyStroke([CE.HOME_HOTKEY_DATA,CE.END_HOTKEY_DATA,CE.PAGE_UP_HOTKEY_DATA,CE.PAGE_DOWN_HOTKEY_DATA,CE.UP_ARROW_HOTKEY_DATA,CE.DOWN_ARROW_HOTKEY_DATA,CE.RIGHT_ARROW_HOTKEY_DATA,CE.LEFT_ARROW_HOTKEY_DATA],e)},IE=CE,xE=e=>""+e,DE={withNameResponse:!1,withObjectResponse:!0,onlyOnValueChange:!0},kE=["startInput","endInput","onInput","constrainValue","keyboardStep","shiftKeyboardStep","pageKeyboardStep","ariaOrientation","panTargetNode","roundToStepSize","pdomMapPDOMValue","pdomMapValue","pdomRepeatEqualValueText","pdomCreateAriaValueText","pdomCreateContextResponseAlert","contextResponsePerValueChangeDelay","contextResponseMaxDelay","pdomDependencies","voicingOnEndResponseOptions"],ME=(e,t)=>{const i=Go("AccessibleValueHandler",kE,class extends(pA(e)){set startInput(e){this._startInput=e}get startInput(){return this._startInput}set onInput(e){this._onInput=e}get onInput(){return this._onInput}set endInput(e){this._endInput=e}get endInput(){return this._endInput}set constrainValue(e){this._constrainValue=e}get constrainValue(){return this._constrainValue}set panTargetNode(e){this._panTargetNode=e}get panTargetNode(){return this._panTargetNode}set roundToStepSize(e){this._roundToStepSize=e}get roundToStepSize(){return this._roundToStepSize}set pdomMapPDOMValue(e){this._pdomMapPDOMValue=e,this.invalidateEnabledRange(this._enabledRangeProperty.value),this.invalidateValueProperty(),this.invalidateAriaValueText()}get pdomMapPDOMValue(){return this._pdomMapPDOMValue}set pdomMapValue(e){this._pdomMapValue=e}get pdomMapValue(){return this._pdomMapValue}set pdomRepeatEqualValueText(e){this._pdomRepeatEqualValueText=e,this.invalidateAriaValueText()}get pdomRepeatEqualValueText(){return this._pdomRepeatEqualValueText}set pdomCreateAriaValueText(e){this._pdomCreateAriaValueText=e,this.invalidateAriaValueText()}get pdomCreateAriaValueText(){return this._pdomCreateAriaValueText}set pdomCreateContextResponseAlert(e){this._pdomCreateContextResponseAlert=e}get pdomCreateContextResponseAlert(){return this._pdomCreateContextResponseAlert}set contextResponsePerValueChangeDelay(e){this._contextResponsePerValueChangeDelay=e}get contextResponsePerValueChangeDelay(){return this._contextResponsePerValueChangeDelay}set contextResponseMaxDelay(e){this._contextResponseMaxDelay=e}get contextResponseMaxDelay(){return this._contextResponseMaxDelay}set voicingOnEndResponseOptions(e){this._voicingOnEndResponseOptions=e}get voicingOnEndResponseOptions(){return this._voicingOnEndResponseOptions}invalidateAriaValueText(){this._updateAriaValueText(this._oldValue),this._oldValue=this._valueProperty.value}invalidateEnabledRange(e){const t=this._getMappedValue(e.min),i=this._getMappedValue(e.max);this.setPDOMAttribute("min",t),this.setPDOMAttribute("max",i),this._updateSiblingStepAttribute()}invalidateValueProperty(){const e=this._getMappedValue();this.setPDOMAttribute("aria-valuenow",e),this.inputValue=e}invalidatePDOMDependencies(){this._dependenciesMultilink&&this._dependenciesMultilink.dispose(),this._dependenciesMultilink=Ve.multilinkAny(this._pdomDependencies.concat([this._valueProperty]),this._pdomValueTextUpdateListener)}setPDOMDependencies(e){this._pdomDependencies=e,this.invalidatePDOMDependencies()}getPDOMDependencies(){return this._pdomDependencies}set pdomDependencies(e){this.setPDOMDependencies(e)}get pdomDependencies(){return this.getPDOMDependencies()}_updateAriaValueText(e){const t=this._getMappedValue(),i=this._pdomCreateAriaValueText(t,this._valueProperty.value,e);let n=hn.A.unwrapStringProperty(i);this._pdomRepeatEqualValueText&&this.ariaValueText&&n===this.ariaValueText.replace(new RegExp(" ","g"),"")&&(n=this.ariaValueText+" "),this.ariaValueText=n}alertContextResponse(){let e=!1;if(this._pdomCreateContextResponseAlert){const t=this._getMappedValue(),i=this._pdomCreateContextResponseAlert(t,this._valueProperty.value,this._valueOnStart);i&&(this._contextResponseUtterance.alert=i,this.forEachUtteranceQueue(t=>{e||(t.hasUtterance(this._contextResponseUtterance)?(e=!0,this._timesChangedBeforeAlerting++):this._timesChangedBeforeAlerting=1),this._contextResponseUtterance.alertStableDelay=Math.min(this._contextResponseMaxDelay,this._timesChangedBeforeAlerting*this._contextResponsePerValueChangeDelay),t.addToBack(this._contextResponseUtterance)}))}}reset(){this._pdomCreateAriaValueText.reset&&this._pdomCreateAriaValueText.reset(),this._pdomCreateContextResponseAlert&&this._pdomCreateContextResponseAlert.reset&&this._pdomCreateContextResponseAlert.reset(),this._timesChangedBeforeAlerting=0,this._updateAriaValueText(null)}_getMappedValue(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._valueProperty.value;return this._pdomMapPDOMValue(e)}getAccessibleValueHandlerInputListener(){return{keydown:this.handleKeyDown.bind(this),keyup:this.handleKeyUp.bind(this),input:this.handleInput.bind(this),change:this.handleChange.bind(this),blur:this.handleBlur.bind(this),interrupt:this.handleInterrupt.bind(this)}}handleKeyDown(e){const t=e.domEvent,i=Gn.A.getEventCode(t);if(i&&(this._shiftKey=t.shiftKey,Gn.A.isKeyEvent(t,Gn.A.KEY_TAB)&&(this._blockInput=!0),this.enabledProperty.get())){const n=(0,$s.qU)(i);if(IE.isRangeKey(n)&&(t.preventDefault(),!t.metaKey)){e.pointer.reserveForKeyboardDrag();let s=!0;this._anyKeysDown()||this._onInteractionStart(e),this._rangeKeysDown[i]=!0;let r=this._valueProperty.get();if(Ia.anyHaveKeyStroke([IE.HOME_HOTKEY_DATA,IE.END_HOTKEY_DATA],n))IE.END_HOTKEY_DATA.hasKeyStroke(n)?r=this._enabledRangeProperty.get().max:IE.HOME_HOTKEY_DATA.hasKeyStroke(n)&&(r=this._enabledRangeProperty.get().min);else{let e;Ia.anyHaveKeyStroke([IE.PAGE_DOWN_HOTKEY_DATA,IE.PAGE_UP_HOTKEY_DATA],n)?(e=this.pageKeyboardStep,IE.PAGE_UP_HOTKEY_DATA.hasKeyStroke(n)?r=this._valueProperty.get()+e:IE.PAGE_DOWN_HOTKEY_DATA.hasKeyStroke(n)&&(r=this._valueProperty.get()-e)):Ia.anyHaveKeyStroke([IE.LEFT_ARROW_HOTKEY_DATA,IE.RIGHT_ARROW_HOTKEY_DATA,IE.UP_ARROW_HOTKEY_DATA,IE.DOWN_ARROW_HOTKEY_DATA],n)&&(e=t.shiftKey?this.shiftKeyboardStep:this.keyboardStep,s=!t.shiftKey,Ia.anyHaveKeyStroke([IE.UP_ARROW_HOTKEY_DATA,IE.RIGHT_ARROW_HOTKEY_DATA],n)?r=this._valueProperty.get()+e:Ia.anyHaveKeyStroke([IE.DOWN_ARROW_HOTKEY_DATA,IE.LEFT_ARROW_HOTKEY_DATA],n)&&(r=this._valueProperty.get()-e),this._roundToStepSize&&(r=BE(r,this._valueProperty.get(),e)))}const o=this._pdomMapValue(r,this._valueProperty.get());let a=o;s&&(a=this._constrainValue(o)),this._valueProperty.set((0,et.q)(a,this._enabledRangeProperty.get().min,this._enabledRangeProperty.get().max)),this._onInput(e,this._valueOnStart);const l=this._panTargetNode||this;al.initialized&&al.listener.panToNode(l,!0,l.limitPanDirection)}}}handleKeyUp(e){const t=Gn.A.getEventCode(e.domEvent),i=(0,$s.qU)(t);this._allKeysUp()||(IE.SHIFT_HOTKEY_DATA.hasKeyStroke(i)&&(this._shiftKey=!1),this.enabledProperty.get()&&IE.isRangeKey(i)&&(this._rangeKeysDown[t]=!1,this._allKeysUp()&&this._onInteractionEnd(e)))}handleChange(e){this._pdomInputHandled||this.handleInput(e),this._pdomInputHandled=!1}handleInput(e){if(this.enabledProperty.get()&&!this._blockInput){this._pdomInputHandled=!0;let t=this._valueProperty.get();const i=parseFloat(e.domEvent.target.value),n=this._shiftKey?this.shiftKeyboardStep:this.keyboardStep,s=this._getMappedValue();this._onInteractionStart(e),i>s?t=this._valueProperty.get()+n:i!e)}_anyKeysDown(){return!!_.find(this._rangeKeysDown,e=>e)}_updateSiblingStepAttribute(){let e="any";if(We.A.mobileSafari){const t=Math.min(this.keyboardStep,this.shiftKeyboardStep,this.pageKeyboardStep);e=Math.pow(10,-uE(t));const i=this._getMappedValue(this._enabledRangeProperty.get().min),n=this._getMappedValue(this._enabledRangeProperty.get().max);e/(n-i)<1e-5&&(e=n/100,e=Number(e.toPrecision(8)))}this.setPDOMAttribute("step",e)}voicingOnEndResponse(e,t){const i=(0,o.sF)({},this._voicingOnEndResponseOptions,t),n=e!==this._valueProperty.value,s=this._valueProperty.value===this._enabledRangeProperty.value.min||this._valueProperty.value===this._enabledRangeProperty.value.max,r=!(!i.withNameResponse||!this.voicingNameResponse)||!(!i.withObjectResponse||!this.voicingObjectResponse);(!i.onlyOnValueChange||s||n)&&r&&this.voicingSpeakFullResponse({nameResponse:i.withNameResponse?this.voicingNameResponse:null,objectResponse:i.withObjectResponse?this.voicingObjectResponse:null,hintResponse:null})}dispose(){this._disposeAccessibleValueHandler(),super.dispose()}constructor(){for(var e=arguments.length,i=new Array(e),n=0;na.value.max-e,inverseMap:e=>a.value.max-e}):this._valueProperty=r,this._enabledRangeProperty=a,this._pdomValueTextUpdateListener=this.invalidateAriaValueText.bind(this),this.keyboardStep=(a.get().max-a.get().min)/20,this.shiftKeyboardStep=(a.get().max-a.get().min)/100,this.pageKeyboardStep=(a.get().max-a.get().min)/10,this._valueOnStart=r.value,this.invalidatePDOMDependencies();const l=this.invalidateEnabledRange.bind(this);this._enabledRangeProperty.link(l);const c=this.invalidateValueProperty.bind(this);this._valueProperty.link(c),this._pdomPointerListener={interrupt:()=>{this._interruptAccessibleValueHandler(null)},cancel:()=>{this._interruptAccessibleValueHandler(null)}},this._disposeAccessibleValueHandler=()=>{this._enabledRangeProperty.unlink(l),this._valueProperty.unlink(c),s.reverseAlternativeInput&&this._valueProperty.dispose(),this._dependenciesMultilink&&this._dependenciesMultilink.dispose(),this._panTargetNode=null,this._pdomDependencies=[]}}});return i.prototype._mutatorKeys=kE.concat(i.prototype._mutatorKeys),i};Vb.register("AccessibleValueHandler",ME);const BE=function(e,t,i){let n=e;return 0!==i&&(n=(0,tt.q)(n/i)*i,n=OE(n,t,i)),n},OE=function(e,t,i){let n=e;const s=Math.abs(e-t),r=s>i,o=ja(s,i,1e-14);return r&&!o&&(n+=e>t?-i:i),n};ME.DEFAULT_TAG_NAME="input";const LE=ME,RE=["startDrag","drag","endDrag"],NE=(e,t)=>{const i=Go("AccessibleSlider",RE,class extends(LE(e,t)){set startDrag(e){this._startDrag=e,this.startInput=e}get startDrag(){return this._startDrag}set drag(e){this._drag=e,this.onInput=e}get drag(){return this._drag}set endDrag(e){this._endDrag=e,this.endInput=e}get endDrag(){return this._endDrag}dispose(){this._disposeAccessibleSlider(),super.dispose()}constructor(){for(var e=arguments.length,i=new Array(e),n=0;n{this.removeInputListener(s)}}});return i.prototype._mutatorKeys=RE.concat(i.prototype._mutatorKeys),i};Vb.register("AccessibleSlider",NE);const qE=NE;let FE=class{evaluate(e){return HE(this.a1,this.a2,this.b1,this.b2,e,this.clamp)}inverse(e){return HE(this.b1,this.b2,this.a1,this.a2,e,this.clamp)}constructor(e,t,i,n){let s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];this.a1=e,this.a2=t,this.b1=i,this.b2=n,this.clamp=s}};const HE=(e,t,i,n,s,r)=>{let o=Ue(e,t,i,n,s);if(r){const e=Math.max(i,n),t=Math.min(i,n);o=(0,et.q)(o,t,e)}return o};C.A.register("LinearFunction",FE);const YE=new TE(new D(0,1));let GE=class extends(jo(Dr)){dispose(){this.disposeSliderTrack(),super.dispose()}constructor(e,t,i,n){super(),this.rangeProperty=i instanceof D?new g.A(i):i;const s=(0,o.Ay)()({size:new Ne(100,5),startDrag:_.noop,drag:_.noop,endDrag:_.noop,constrainValue:_.identity,enabledRangeProperty:this.rangeProperty,soundGenerator:YE,valueChangeSoundGeneratorOptions:{},voicingOnEndResponse:_.noop,leftVisualOverflow:0,rightVisualOverflow:0,tandem:P.A.REQUIRED,tandemNameSuffix:"TrackNode"},n);s.soundGenerator===YE?s.soundGenerator=new TE(this.rangeProperty.value,s.valueChangeSoundGeneratorOptions||{}):null===s.soundGenerator&&(s.soundGenerator=TE.NO_SOUND),this.leftVisualOverflow=s.leftVisualOverflow,this.rightVisualOverflow=s.rightVisualOverflow,this.minimumSize=s.size,this.minimumWidth=this.minimumSize.width,this.internalWidthProperty=new de([this.localPreferredWidthProperty],e=>(null===e?this.minimumSize.width:Math.max(this.minimumSize.width,e))-s.leftVisualOverflow-s.rightVisualOverflow),this.sizeProperty=new de([this.internalWidthProperty],e=>new Ne(e,this.minimumSize.height)),this.valueToPositionProperty=new de([this.rangeProperty,this.internalWidthProperty],(e,t)=>new FE(e.min,e.max,0,t,!0));const r=(t,i)=>{const n=e.value,r=i.subtrailTo(this).getTransform().inversePosition2(t.pointer.point).x,o=this.valueToPositionProperty.value.inverse(r),a=s.enabledRangeProperty.value.constrainValue(o),l=s.constrainValue(a);e.set(l),"down"===t.type&&s.soundGenerator.playSoundIfThresholdReached(l,n)};this.addChild(t);let a=e.value;this.dragListener=new _c({tandem:s.tandem.createTandem("dragListener"),start:(t,i)=>{s.startDrag(t),a=e.value,r(t,i.pressedTrail)},drag:(e,t)=>{s.drag(e),r(e,t.pressedTrail)},end:e=>{s.endDrag(e),s.voicingOnEndResponse(a)}}),t.addInputListener(this.dragListener),this.mutate(s),this.disposeSliderTrack=()=>{t.removeInputListener(this.dragListener),this.dragListener.dispose()}}};Vb.register("SliderTrack",GE);let UE=class extends GE{dispose(){this.disposeDefaultSliderTrack(),super.dispose()}constructor(e,t,i){const n=(0,o.Ay)()({fillEnabled:"white",fillDisabled:"gray",stroke:"black",lineWidth:1,cornerRadius:0},i),s=new Va({fill:n.fillDisabled,stroke:n.stroke,lineWidth:n.lineWidth,cornerRadius:n.cornerRadius,cursor:"default",pickable:!1}),r=new Va({fill:n.fillEnabled,stroke:n.stroke,lineWidth:n.lineWidth,cornerRadius:n.cornerRadius});super(e,new Dr({children:[s,r]}),t,(0,o.sF)({leftVisualOverflow:null!==n.stroke?n.lineWidth/2:0,rightVisualOverflow:null!==n.stroke?n.lineWidth/2:0},n));const a=Ve.multilink([n.enabledRangeProperty,this.valueToPositionProperty,this.sizeProperty],(e,t,i)=>{const n=t.evaluate(e.min),o=t.evaluate(e.max);s.setRect(0,0,i.width,i.height),r.setRect(n,0,o-n,i.height)});this.disposeDefaultSliderTrack=()=>{a.dispose()}}};Vb.register("DefaultSliderTrack",UE);let zE=class extends Va{constructor(e){const t=(0,o.Ay)()({size:new Ne(22,45),fillHighlighted:"rgb( 71, 207, 255 )",centerLineStroke:"white",fill:"rgb( 50, 145, 184 )",stroke:"black",lineWidth:1,tandem:P.A.REQUIRED,tandemNameSuffix:"ThumbNode"},e);void 0===t.cornerRadius&&(t.cornerRadius=.25*t.size.width),t.cachedPaints=[t.fill,t.fillHighlighted],super(0,0,t.size.width,t.size.height,t);const i=Va.bounds(this.bounds.dilated(5),{fill:"transparent",localBounds:this.bounds,pickable:!1});this.addChild(i);this.addChild(new ga(Ui.lineSegment(t.size.width/2,3,t.size.width/2,t.size.height-3),{stroke:t.centerLineStroke}));const n=new Or({attach:!1,tandem:P.A.OPT_OUT});n.isHighlightedProperty.link(e=>{this.fill=e?t.fillHighlighted:t.fill}),this.addInputListener(n)}};Vb.register("SliderThumb",zE);const WE={VALUE_NAMED_PLACEHOLDER:"{{value}}",VALUE_NUMBERED_PLACEHOLDER:"{0}",SLIDER_VERTICAL_ROTATION:-Math.PI/2};Vb.register("SunConstants",WE);const QE=WE;let KE=class{dispose(){this.parent.removeChild(this.tickNode),this.labelContainer&&this.labelContainer.dispose(),this.labelXProperty.dispose(),this.labelManualConstraint&&this.labelManualConstraint.dispose()}constructor(e,t,i,n,s,r,o,a,l){this.parent=e,this.value=t,this.label=i,this.labelXProperty=new de([l.valueToPositionProperty],e=>e.evaluate(t)),this.tickNode=new Dr,e.addChild(this.tickNode);const h=o.setTickInitialPoint(l.bounds,n),c=new ga((new Ui).moveTo(h.x,h.y).lineTo(0,h.y-n),{stroke:s,lineWidth:r});this.labelXProperty.link(e=>{c.x=e}),this.tickNode.addChild(c),i&&(this.labelContainer=new Dr({pickable:!1}),this.tickNode.addChild(this.labelContainer),this.labelContainer.addChild(i),a===Ie.VERTICAL&&(this.labelContainer.rotation=-QE.SLIDER_VERTICAL_ROTATION),this.labelManualConstraint=oP.create(this.tickNode,[c,this.labelContainer],(e,t)=>{o.positionLabel(t,e.bounds)}))}};Vb.register("SliderTick",KE);const jE=new Ne(100,5),ZE=new Ne(17,34);let _E=class e extends(Jo(qE(Dr,0))){get majorTicksVisible(){return this.getMajorTicksVisible()}set majorTicksVisible(e){this.setMajorTicksVisible(e)}get minorTicksVisible(){return this.getMinorTicksVisible()}set minorTicksVisible(e){this.setMinorTicksVisible(e)}dispose(){this.disposeSlider(),this.ticks.forEach(e=>{e.dispose()}),super.dispose()}addMajorTick(e,t){this.addTick(this.majorTicksParent,e,t,this.tickOptions.majorTickLength,this.tickOptions.majorTickStroke,this.tickOptions.majorTickLineWidth)}addMinorTick(e,t){this.addTick(this.minorTicksParent,e,t,this.tickOptions.minorTickLength,this.tickOptions.minorTickStroke,this.tickOptions.minorTickLineWidth)}addTick(e,t,i,n,s,r){this.ticks.push(new KE(e,t,i,n,s,r,this.tickOptions,this.orientation,this.track))}setMajorTicksVisible(e){this.majorTicksParent.visible=e}getMajorTicksVisible(){return this.majorTicksParent.visible}setMinorTicksVisible(e){this.minorTicksParent.visible=e}getMinorTicksVisible(){return this.minorTicksParent.visible}constructor(t,i,n){const s=(0,o.Ay)()({orientation:Ie.HORIZONTAL,trackNode:null,trackSize:null,trackFillEnabled:"white",trackFillDisabled:"gray",trackStroke:"black",trackLineWidth:1,trackCornerRadius:0,trackPickable:!0,thumbNode:null,thumbSize:null,thumbFill:"rgb(50,145,184)",thumbFillHighlighted:"rgb(71,207,255)",thumbStroke:"black",thumbLineWidth:1,thumbCenterLineStroke:"white",thumbTouchAreaXDilation:11,thumbTouchAreaYDilation:11,thumbMouseAreaXDilation:0,thumbMouseAreaYDilation:0,thumbYOffset:0,tickLabelSpacing:6,positionLabel:(e,t)=>{e.centerX=t.centerX,e.bottom=t.top-s.tickLabelSpacing},majorTickLength:25,majorTickStroke:"black",majorTickLineWidth:1,minorTickLength:10,minorTickStroke:"black",minorTickLineWidth:1,setTickInitialPoint:(e,t)=>new De.A(0,e.top),cursor:"pointer",startDrag:_.noop,drag:_.noop,endDrag:_.noop,constrainValue:_.identity,disabledOpacity:Vf.DISABLED_OPACITY,soundGenerator:YE,valueChangeSoundGeneratorOptions:{},phetioLinkedProperty:null,tandem:P.A.REQUIRED,tandemNameSuffix:"Slider",phetioType:e.SliderIO,phetioFeatured:!0,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},n),r=i instanceof D?new g.A(i):i;if(s.soundGenerator===YE?s.soundGenerator=new TE(r.value,s.valueChangeSoundGeneratorOptions||{}):null===s.soundGenerator&&(s.soundGenerator=TE.NO_SOUND),s.soundGenerator!==TE.NO_SOUND){let e=t.value;const i=s.drag;s.drag=n=>{n.isFromPDOM()?s.soundGenerator.playSoundForValueChange(t.value,e):s.soundGenerator.playSoundIfThresholdReached(t.value,e),i(n),e=t.value}}s.orientation===Ie.VERTICAL&&(s.trackSize&&(s.trackSize=s.trackSize.swapped()),s.thumbSize&&(s.thumbSize=s.thumbSize.swapped()),bE(s,"thumbTouchAreaXDilation","thumbTouchAreaYDilation"),bE(s,"thumbMouseAreaXDilation","thumbMouseAreaYDilation")),s.trackSize=s.trackSize||jE,s.thumbSize=s.thumbSize||ZE;const a=s.tandem.createTandem(e.THUMB_NODE_TANDEM_NAME);P.A.VALIDATION&&s.thumbNode;const l=s.thumbNode||new zE({size:s.thumbSize,fill:s.thumbFill,fillHighlighted:s.thumbFillHighlighted,stroke:s.thumbStroke,lineWidth:s.thumbLineWidth,centerLineStroke:s.thumbCenterLineStroke,tandem:a}),c=!s.enabledRangeProperty,d=_.pick(s,Dr.REQUIRES_BOUNDS_OPTION_KEYS),u=(0,o.sF)({ariaOrientation:s.orientation,valueProperty:t,panTargetNode:l,enabledRangeProperty:s.enabledRangeProperty||(i instanceof D?new h.A(i,{valueType:D,isValidValue:e=>e.min>=i.min&&e.max<=i.max,tandem:s.tandem.createTandem("enabledRangeProperty"),valueComparisonStrategy:"equalsFunction",phetioValueType:D.RangeIO,phetioDocumentation:"Sliders support two ranges: the outer range which specifies the min and max of the track and the enabledRangeProperty, which determines how low and high the thumb can be dragged within the track."}):i)},s);super(u),this.ticks=K(),this.proposedValue=null,this.orientation=u.orientation,this.enabledRangeProperty=u.enabledRangeProperty,this.tickOptions=_.pick(s,"tickLabelSpacing","majorTickLength","majorTickStroke","majorTickLineWidth","minorTickLength","minorTickStroke","minorTickLineWidth","setTickInitialPoint","positionLabel");const p=[];this.majorTicksParent=new Dr,this.minorTicksParent=new Dr,p.push(this.majorTicksParent),p.push(this.minorTicksParent);const m=s.tandem.createTandem(e.TRACK_NODE_TANDEM_NAME);P.A.VALIDATION&&s.trackNode;const A=new Dr;p.push(A),this.track=s.trackNode||new UE(t,i,{size:u.trackSize,fillEnabled:u.trackFillEnabled,fillDisabled:u.trackFillDisabled,stroke:u.trackStroke,lineWidth:u.trackLineWidth,cornerRadius:u.trackCornerRadius,startDrag:u.startDrag,drag:u.drag,endDrag:u.endDrag,constrainValue:u.constrainValue,enabledRangeProperty:this.enabledRangeProperty,soundGenerator:s.soundGenerator,pickable:u.trackPickable,voicingOnEndResponse:this.voicingOnEndResponse.bind(this),tandem:m}),p.push(this.track),l.setCenterY(this.track.centerY+s.thumbYOffset),p.push(l);const y=new Dr({children:p});s.orientation===Ie.VERTICAL&&(y.rotation=QE.SLIDER_VERTICAL_ROTATION),this.addChild(y),s.thumbNode||!s.thumbTouchAreaXDilation&&!s.thumbTouchAreaYDilation||(l.touchArea=l.localBounds.dilatedXY(s.thumbTouchAreaXDilation,s.thumbTouchAreaYDilation)),s.thumbNode||!s.thumbMouseAreaXDilation&&!s.thumbMouseAreaYDilation||(l.mouseArea=l.localBounds.dilatedXY(s.thumbMouseAreaXDilation,s.thumbMouseAreaYDilation));let b=0,V=t.value;const w=new _c({tandem:l.tandem.createTandem("dragListener"),start:(e,i)=>{if(this.enabledProperty.get()){V=t.value,s.startDrag(e);const n=i.pressedTrail.subtrailTo(y).getTransform();b=n.inversePosition2(e.pointer.point).x-l.centerX}},drag:(e,i)=>{if(this.enabledProperty.get()){const n=i.pressedTrail.subtrailTo(y).getTransform().inversePosition2(e.pointer.point).x-b;this.proposedValue=this.track.valueToPositionProperty.value.inverse(n);const r=this.enabledRangeProperty.get().constrainValue(this.proposedValue);t.set(s.constrainValue(r)),s.drag(e)}},end:e=>{this.enabledProperty.get()&&(s.endDrag(e),this.voicingOnEndResponse(V)),this.proposedValue=null}});l.addInputListener(w),this.thumbDragListener=w,this.trackDragListener=this.track.dragListener;const v=Ve.multilink([t,this.track.valueToPositionProperty],(e,t)=>{l.centerX=t.evaluate(e)}),E=e=>{if(!t.isPhetioInstrumented()||!f.value)if(null===this.proposedValue)t.set((0,et.q)(t.value,e.min,e.max));else{const i=(0,et.q)(this.proposedValue,e.min,e.max),n=s.constrainValue(i);t.set(n)}};this.enabledRangeProperty.link(E);const S=new XE(this,this.track,l,y,s.orientation,A,this.ticks);this.disposeSlider=()=>{S.dispose(),l.dispose&&l.dispose(),this.track.dispose&&this.track.dispose(),c?this.enabledRangeProperty.dispose():this.enabledRangeProperty.unlink(E),v.dispose(),w.dispose()},this.focusHighlight=new rA(l);const T=s.phetioLinkedProperty||(t instanceof O.A?t:null);T&&this.addLinkedElement(T,{tandemName:"valueProperty"}),!c&&this.enabledRangeProperty instanceof O.A&&this.addLinkedElement(this.enabledRangeProperty,{tandemName:"enabledRangeProperty"}),this.mutate(d)}};_E.THUMB_NODE_TANDEM_NAME="thumbNode",_E.TRACK_NODE_TANDEM_NAME="trackNode",_E.SliderIO=new w.A("SliderIO",{valueType:_E,documentation:"A traditional slider component, with a knob and possibly tick marks",supertype:Dr.NodeIO});let XE=class extends Vy{layout(){super.layout();const e=this.slider,t=this.track,i=this.thumb;this.trackSpacer.localBounds=t.localBounds.dilatedX(i.width/2);const n=t.leftVisualOverflow+t.rightVisualOverflow,s=t.minimumWidth,r=s-n,o=e=>Ue(t.rangeProperty.value.min,t.rangeProperty.value.max,0,1,e),a=-i.width/2-t.leftVisualOverflow,l=i.width/2-t.leftVisualOverflow,h=new D(a,s+l);if(this.ticks.forEach(e=>{const t=r*o(e.value),i=e.tickNode.width/2;h.includeRange(new D(-i,i).shifted(t))}),e.widthSizable&&null!==this.preferredProperty.value){const e=AE.max(AE.linear(1,l),...this.ticks.map(e=>{const t=o(e.value);return AE.linear(t,e.tickNode.width/2-n*t)})).minus(AE.min(AE.constant(a),...this.ticks.map(e=>{const t=o(e.value);return AE.linear(t,-e.tickNode.width/2-n*t)}))),i=e.withXValues([s-1,s,...e.points.map(e=>e.x).filter(e=>e>s+1e-10)]).inverted();t.preferredWidth=Math.max(s,i.evaluate(this.preferredProperty.value))}else t.preferredWidth=t.minimumWidth;const c=h.getLength();this.orientation===Ie.HORIZONTAL?e.localMinimumWidth=c:e.localMinimumHeight=c}dispose(){this.disposeSliderConstraint(),super.dispose()}constructor(e,t,i,n,s,r,o){super(e),this.slider=e,this.track=t,this.thumb=i,this.sliderPartsNode=n,this.orientation=s,this.trackSpacer=r,this.ticks=o,s===Ie.HORIZONTAL?(e.heightSizable=!1,this.preferredProperty=this.slider.localPreferredWidthProperty):(e.widthSizable=!1,this.preferredProperty=this.slider.localPreferredHeightProperty),this.preferredProperty.lazyLink(this._updateLayoutListener),this.track.rangeProperty.lazyLink(this._updateLayoutListener),this.thumb.localBoundsProperty.lazyLink(this._updateLayoutListener);const a=e=>{e.tickNode.localBoundsProperty.lazyLink(this._updateLayoutListener),o.addItemRemovedListener(t=>{t===e&&t.tickNode.localBoundsProperty.hasListener(this._updateLayoutListener)&&e.tickNode.localBoundsProperty.unlink(this._updateLayoutListener)})};o.addItemAddedListener(a),this.addNode(t),this.layout(),this.disposeSliderConstraint=()=>{o.removeItemAddedListener(a),this.preferredProperty.unlink(this._updateLayoutListener),this.track.rangeProperty.unlink(this._updateLayoutListener),this.thumb.localBoundsProperty.unlink(this._updateLayoutListener)}}};Vb.register("Slider",_E);const JE={PLUS:"+",MINUS:"−",TIMES:"×",DIVIDE:"÷",DOT:"⋅",UNARY_PLUS:"+",UNARY_MINUS:"-",EQUAL_TO:"=",NOT_EQUAL_TO:"≠",GREATER_THAN:">",LESS_THAN:"<",LESS_THAN_OR_EQUAL:"≤",GREATER_THAN_OR_EQUAL:"≥",PERCENT:"%",INFINITY:"∞",PLUS_MINUS:"±",ALPHA:"α",BETA:"β",THETA:"θ",PHI:"φ",PI:"π",PSI:"ψ",NO_VALUE:"—",DEGREES:"°"};va.register("MathSymbols",JE);const $E=JE,eS=new Wc(20);let tS=class e extends Dr{dispose(){this.disposeNumberDisplay(),super.dispose()}setNumberFont(e){this.valueText.font=e}set numberFont(e){this.setNumberFont(e)}setNumberFill(e){this.valueText.fill=e}set numberFill(e){this.setNumberFill(e)}setBackgroundFill(e){this.backgroundNode.fill=e}set backgroundFill(e){this.setBackgroundFill(e)}get backgroundFill(){return this.getBackgroundFill()}getBackgroundFill(){return this.backgroundNode.fill}setBackgroundStroke(e){this.backgroundNode.stroke=e}set backgroundStroke(e){this.setBackgroundStroke(e)}getBackgroundWidth(){return this.backgroundNode.getRectWidth()}setBackgroundWidth(e){this.backgroundNode.setRectWidth(e)}get backgroundWidth(){return this.getBackgroundWidth()}set backgroundWidth(e){this.setBackgroundWidth(e)}constructor(t,i,n){const s=(0,o.Ay)()({align:"right",valuePattern:QE.VALUE_NAMED_PLACEHOLDER,decimalPlaces:0,numberFormatter:null,numberFormatterDependencies:[],useRichText:!1,useFullHeight:!1,textOptions:{font:eS,fill:"black",maxWidth:null,phetioReadOnly:!0},xMargin:8,yMargin:2,cornerRadius:0,backgroundFill:"white",backgroundStroke:"lightGray",backgroundLineWidth:1,backgroundLineDash:[],minBackgroundWidth:0,noValueString:$E.NO_VALUE,noValueAlign:null,noValuePattern:null,tandem:P.A.OPT_OUT,phetioType:e.NumberDisplayIO},n);const r=new g.A(s.numberFormatter?s.numberFormatter:e=>null===s.decimalPlaces?""+e:se(e,s.decimalPlaces));s.noValueAlign||(s.noValueAlign=s.align);const a=e=>e.includes(QE.VALUE_NUMBERED_PLACEHOLDER)?Qe.A.format(e,QE.VALUE_NAMED_PLACEHOLDER):e,l="string"==typeof s.valuePattern?new g.A(a(s.valuePattern)):new de([s.valuePattern],a);s.noValuePattern||(s.noValuePattern=new de([l],e=>e));const h="string"==typeof s.noValuePattern?new g.A(s.noValuePattern):s.noValuePattern,c=de.deriveAny([r,...s.numberFormatterDependencies],()=>iS(i.min,s.noValueString,r.value)),d=de.deriveAny([r,...s.numberFormatterDependencies],()=>iS(i.max,s.noValueString,r.value)),u=new de([l,c,d],(e,t,i)=>Qe.A.fillIn(e,{value:t.length>i.length?t:i})),p=s.useRichText?mf:Rc,m=s.textOptions.tandem||s.tandem.createTandem("valueText"),A=de.deriveAny([t,h,l,r,...s.numberFormatterDependencies],()=>{const e=t.value,i=h.value,n=l.value,o=r.value,a=null===e&&i?i:n,c=iS(e,s.noValueString,o);return Qe.A.fillIn(a,{value:c})},{phetioFeatured:!0,phetioValueType:B.A,tandemNameSuffix:"StringProperty",tandem:m.createTandem(Rc.STRING_PROPERTY_TANDEM_NAME)}),y=(0,o.sF)({tandem:m},s.textOptions,{maxWidth:null}),f=new p(A,y),b=f.height,V=new Va({cornerRadius:s.cornerRadius,fill:s.backgroundFill,stroke:s.backgroundStroke,lineWidth:s.backgroundLineWidth,lineDash:s.backgroundLineDash});u.link(e=>{const t=new p(e,_.omit(y,"tandem"));f.maxWidth=null!==s.textOptions.maxWidth?s.textOptions.maxWidth:0!==t.width?t.width:null,t.maxWidth=f.maxWidth,V.rectWidth=Math.max(s.minBackgroundWidth,t.width+2*s.xMargin),V.rectHeight=(s.useFullHeight?b:t.height)+2*s.yMargin});const w=new Dr({children:[f]});s.children=[V,w],super(),this.numberFormatterProperty=r,this.valueText=f,this.backgroundNode=V,this.valueStringProperty=A,oP.create(this,[w,V],(e,i)=>{const n=null===t.value?s.noValueAlign:s.align,r=i.centerY;"center"===n?e.center=new De.A(i.centerX,r):"left"===n?e.leftCenter=new De.A(i.left+s.xMargin,r):e.rightCenter=new De.A(i.right-s.xMargin,r)}),this.mutate(s),this.disposeNumberDisplay=()=>{A.dispose(),l.dispose()}}};tS.NumberDisplayIO=new w.A("NumberDisplayIO",{valueType:tS,supertype:Dr.NodeIO,documentation:"A numeric readout with a background"}),va.register("NumberDisplay",tS);const iS=(e,t,i)=>{let n=t;return null!==e&&(n=i(e)),n},nS=["startDrag","endDrag","leftStart","leftEnd","rightStart","rightEnd"],sS=new TE(new D(0,1)),rS=new Ne(180,3),oS=new Ne(17,34);let aS=class e extends(jo(Dr)){dispose(){this.disposeNumberControl(),super.dispose()}static withMinMaxTicks(t,i,n,s){const r=(0,o.Ay)()({tickLabelFont:new Wc(12)},s);return r.sliderOptions=(0,o.sF)({majorTicks:[{value:n.min,label:new Rc(n.min,{font:r.tickLabelFont})},{value:n.max,label:new Rc(n.max,{font:r.tickLabelFont})}]},r.sliderOptions),new e(t,i,n,r)}static createLayoutFunction1(e){const t=(0,o.Ay)()({align:"center",titleXSpacing:5,arrowButtonsXSpacing:15,ySpacing:5},e);return(e,i,n,s,r)=>(n.mutateLayoutOptions({grow:1}),new Ff({align:t.align,spacing:t.ySpacing,children:[new Nf({spacing:t.titleXSpacing,children:[e,i]}),new Nf({layoutOptions:{stretch:!0},spacing:t.arrowButtonsXSpacing,children:[s,n,r]})]}))}static createLayoutFunction2(e){const t=(0,o.Ay)()({align:"center",xSpacing:5,ySpacing:5},e);return(e,i,n,s,r)=>(n.mutateLayoutOptions({stretch:!0}),new Ff({align:t.align,spacing:t.ySpacing,children:[new Nf({spacing:t.xSpacing,children:[e,s,i,r]}),n]}))}static createLayoutFunction3(e){const t=(0,o.Ay)()({alignTitle:"center",alignNumber:"center",titleLeftIndent:0,xSpacing:5,ySpacing:5},e);return(e,i,n,s,r)=>{n.mutateLayoutOptions({stretch:!0});const o=new Ff({spacing:t.ySpacing,align:t.alignTitle,children:[new Yb(e,{leftMargin:t.titleLeftIndent}),new Ff({layoutOptions:{stretch:!0},spacing:t.ySpacing,align:t.alignNumber,children:[new Nf({spacing:t.xSpacing,children:[s,i,r]}),n]})]});return e.boundsProperty.lazyLink(()=>{o.updateLayout()}),o}}static createLayoutFunction4(e){const t=(0,o.Ay)()({sliderPadding:0,verticalSpacing:5,arrowButtonSpacing:5,numberDisplayParentNodeOptions:{excludeInvisibleChildrenFromBounds:!0},layoutInvisibleButtons:!1,createBottomContent:null},e);return(e,i,n,s,r)=>{n.mutateLayoutOptions({grow:1});const a=!!s,l=new Nf({spacing:t.arrowButtonSpacing,children:a?[s,n,r]:[n],excludeInvisibleChildrenFromBounds:!t.layoutInvisibleButtons}),h=t.createBottomContent?t.createBottomContent(l):l;return h.mutateLayoutOptions({stretch:!0,xMargin:t.sliderPadding}),new Ff({spacing:t.verticalSpacing,children:[new Nf({spacing:t.sliderPadding,children:[e,new Dr((0,o.sF)({children:[i]},t.numberDisplayParentNodeOptions))],layoutOptions:{stretch:!0}}),h]})}}constructor(t,i,n,s){!function(e){!e.startCallback&&e.endCallback;let t=!1,i=!1;e.arrowButtonOptions&&(t=lS(e.arrowButtonOptions));e.sliderOptions&&(i=lS(e.sliderOptions))}(s||{});const r=(0,o.Ay)()({numberDisplayOptions:{},sliderOptions:{},arrowButtonOptions:{},titleNodeOptions:{},useRichText:!1,startCallback:_.noop,endCallback:_.noop,delta:1,disabledOpacity:.5,layoutFunction:e.createLayoutFunction1(),includeArrowButtons:!0,soundGenerator:sS,valueChangeSoundGeneratorOptions:{},tandem:P.A.REQUIRED,tandemNameSuffix:"Control",phetioType:e.NumberControlIO,phetioEnabledPropertyInstrumented:!0,visiblePropertyOptions:{phetioFeatured:!0}},s);super();const a=r.arrowButtonOptions&&r.arrowButtonOptions.hasOwnProperty("scale"),l=()=>c.enabledRangeProperty?c.enabledRangeProperty.value:n,h=e=>{const t=pE(e,c.delta);return l().constrainValue(t)};if(r.soundGenerator===sS){let e=r.valueChangeSoundGeneratorOptions;_.isEmpty(r.valueChangeSoundGeneratorOptions)&&(e={interThresholdDelta:r.delta,constrainValue:h}),r.soundGenerator=new TE(n,e)}else null===r.soundGenerator&&(r.soundGenerator=TE.NO_SOUND);const c=(0,o.sF)({arrowButtonOptions:{touchAreaXDilation:3.5,touchAreaYDilation:7,mouseAreaXDilation:0,mouseAreaYDilation:0,enabledEpsilon:0,leftStart:r.startCallback,leftEnd:r.endCallback,rightStart:r.startCallback,rightEnd:r.endCallback,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}},sliderOptions:{orientation:Ie.HORIZONTAL,startDrag:r.startCallback,endDrag:r.endCallback,majorTickLength:20,minorTickStroke:"rgba( 0, 0, 0, 0.3 )",majorTicks:[],minorTickSpacing:0,constrainValue:h,soundGenerator:r.soundGenerator,tandem:r.tandem.createTandem(e.SLIDER_TANDEM_NAME)},numberDisplayOptions:{textOptions:{font:new Wc(12),stringPropertyOptions:{phetioFeatured:!0}},tandem:r.tandem.createTandem("numberDisplay"),visiblePropertyOptions:{phetioFeatured:!0}},titleNodeOptions:{font:new Wc(12),maxWidth:null,fill:"black",tandem:r.tandem.createTandem("titleText")}},r);c.enabledRangeProperty&&(c.sliderOptions.enabledRangeProperty=c.enabledRangeProperty),c.arrowButtonOptions.tagName=null,this.groupFocusHighlight=c.includeArrowButtons;const d=c.useRichText?new mf(t,c.titleNodeOptions):new Rc(t,c.titleNodeOptions),u=new tS(i,n,c.numberDisplayOptions);c.sliderOptions.trackNode||(c.sliderOptions=(0,o.sF)({trackSize:c.sliderOptions.orientation===Ie.HORIZONTAL?rS:rS.swapped()},c.sliderOptions)),c.sliderOptions.thumbNode||(c.sliderOptions=(0,o.sF)({thumbSize:c.sliderOptions.orientation===Ie.HORIZONTAL?oS:oS.swapped(),thumbTouchAreaXDilation:6},c.sliderOptions)),c.sliderOptions=(0,o.sF)({shiftKeyboardStep:c.delta,pdomCreateAriaValueText:()=>u.valueStringProperty.value,phetioType:_E.SliderIO},c.sliderOptions),c.sliderOptions.thumbFill&&!c.sliderOptions.thumbFillHighlighted&&(this.thumbFillProperty=new Mb(c.sliderOptions.thumbFill),c.sliderOptions.thumbFillHighlighted=new de([this.thumbFillProperty],e=>e.brighterColor())),this.slider=new _E(i,n,c.sliderOptions),Js.forwardAccessibleName(this,this.slider),Js.forwardHelpText(this,this.slider);let p=null,m=null,g=null;if(c.includeArrowButtons){const e=c.arrowButtonOptions.touchAreaXDilation,t=c.arrowButtonOptions.mouseAreaXDilation;if(p=new mE("left",()=>{const e=i.get();let t=i.get()-c.delta;t=pE(t,c.delta),t=Math.max(t,l().min),i.set(t),c.soundGenerator.playSoundForValueChange(t,e),this.slider.voicingOnEndResponse(e)},(0,o.sF)({soundPlayer:qw,startCallback:c.arrowButtonOptions.leftStart,endCallback:c.arrowButtonOptions.leftEnd,tandem:c.tandem.createTandem("decrementButton"),touchAreaXShift:-e,mouseAreaXShift:-t},c.arrowButtonOptions)),m=new mE("right",()=>{const e=i.get();let t=i.get()+c.delta;t=pE(t,c.delta),t=Math.min(t,l().max),i.set(t),c.soundGenerator.playSoundForValueChange(t,e),this.slider.voicingOnEndResponse(e)},(0,o.sF)({soundPlayer:qw,startCallback:c.arrowButtonOptions.rightStart,endCallback:c.arrowButtonOptions.rightEnd,tandem:c.tandem.createTandem("incrementButton"),touchAreaXShift:e,mouseAreaXShift:t},c.arrowButtonOptions)),!a){p.setScaleMagnitude(1);const e=u.localBounds.height/p.height;p.setScaleMagnitude(e),m.setScaleMagnitude(e)}g=()=>{const e=i.value;p.enabled=e-c.arrowButtonOptions.enabledEpsilon>l().min&&!this.slider.isFocused(),m.enabled=e+c.arrowButtonOptions.enabledEpsilon{p.enabled=!1,m.enabled=!1},blur:()=>g()})}const A=c.sliderOptions.majorTicks;for(let e=0;e0)for(let e=n.min;e<=n.max;)_.find(A,t=>t.value===e)||this.slider.addMinorTick(e),e+=c.sliderOptions.minorTickSpacing;const y=c.layoutFunction(d,u,this.slider,p,m);if(this.widthSizable=rr(y),ar(y)){const e=e=>{this.localMinimumWidth=e};y.minimumWidthProperty.link(e);const t=e=>{y.preferredWidth=e};this.localPreferredWidthProperty.link(t),this.disposeEmitter.addListener(()=>{y.minimumWidthProperty.unlink(e),this.localPreferredWidthProperty.unlink(t)})}c.children=[y],this.mutate(c),this.numberDisplay=u,this.disposeNumberControl=()=>{d.dispose(),u.dispose(),this.slider.dispose(),this.thumbFillProperty&&this.thumbFillProperty.dispose(),p&&p.dispose(),m&&m.dispose(),g&&i.unlink(g),g&&c.enabledRangeProperty&&c.enabledRangeProperty.unlink(g)}}};function lS(e){const t=Object.keys(e);return nS.filter(e=>_.includes(t,e)).length>0}aS.NumberControlIO=new w.A("NumberControlIO",{valueType:aS,documentation:"A number control with a title, slider and +/- buttons",supertype:Dr.NodeIO}),aS.SLIDER_TANDEM_NAME="slider",va.register("NumberControl",aS);let hS=class e extends(Jo(Dr)){getCollapsedBoxHeight(){const e=this.constraint.lastCollapsedBoxHeight;return e}getExpandedBoxHeight(){const e=this.constraint.lastExpandedBoxHeight;return e}reset(){this.resetAccordionBox()}constructor(t,i){const n=(0,o.Ay)()({titleNode:null,expandedProperty:null,expandedDefaultValue:!0,resize:!0,overrideTitleNodePickable:!0,allowContentToOverlapTitle:!1,cursor:"pointer",lineWidth:1,cornerRadius:10,stroke:"black",fill:"rgb( 238, 238, 238 )",minWidth:0,titleAlignX:"center",titleAlignY:"center",titleXMargin:10,titleYMargin:2,titleXSpacing:5,showTitleWhenExpanded:!0,useExpandedBoundsWhenCollapsed:!0,useContentWidthWhenCollapsed:!0,titleBarExpandCollapse:!0,buttonAlign:"left",buttonXMargin:4,buttonYMargin:2,contentAlign:"center",contentVerticalAlign:"center",contentXMargin:15,contentYMargin:8,contentXSpacing:5,contentYSpacing:8,expandedSoundPlayer:Wm.get("accordionBoxOpened"),collapsedSoundPlayer:Wm.get("accordionBoxClosed"),tagName:"div",headingTagName:"h3",helpTextExpanded:null,helpTextCollapsed:null,contextResponseExpanded:null,contextResponseCollapsed:null,voicingHintResponseExpanded:null,voicingHintResponseCollapsed:null,tandem:P.A.REQUIRED,tandemNameSuffix:"AccordionBox",phetioType:e.AccordionBoxIO,phetioEventType:je.A.USER,visiblePropertyOptions:{phetioFeatured:!0},titleBarOptions:{fill:null,stroke:null}},i);n.expandCollapseButtonOptions=(0,o.sF)({sideLength:16,cursor:n.cursor,valueOnSoundPlayer:n.expandedSoundPlayer,valueOffSoundPlayer:n.collapsedSoundPlayer,accessibleNameBehavior:pA.BASIC_ACCESSIBLE_NAME_BEHAVIOR,tandem:n.tandem.createTandem("expandCollapseButton")},n.expandCollapseButtonOptions),super(),this.expandedBoxOutline=null,this.collapsedBoxOutline=null;let s=n.titleNode;s||(s=new Rc("",{tandem:n.tandem.createTandem("titleText")}),this.addDisposable(s)),n.overrideTitleNodePickable&&(s.pickable=!1),this.expandedProperty=n.expandedProperty,this.expandedProperty||(this.expandedProperty=new c(n.expandedDefaultValue,{tandem:n.tandem.createTandem("expandedProperty"),phetioFeatured:!0}),this.addDisposable(this.expandedProperty)),this.expandCollapseButton=new pP(this.expandedProperty,n.expandCollapseButtonOptions),this.addDisposable(this.expandCollapseButton);const r={fill:n.fill,cornerRadius:n.cornerRadius};this.expandedBox=new Va(r),this.collapsedBox=new Va(r),this.expandedTitleBar=new cS(null,(0,o.sF)({lineWidth:n.lineWidth,cursor:n.cursor},n.titleBarOptions)),this.expandedBox.addChild(this.expandedTitleBar),this.collapsedTitleBar=new dS((0,o.sF)({cornerRadius:n.cornerRadius,cursor:n.cursor},n.titleBarOptions)),this.collapsedBox.addChild(this.collapsedTitleBar);const a=new rA(n.showTitleWhenExpanded?this.expandedTitleBar:this.expandCollapseButton),l=new rA(this.collapsedTitleBar);this.addDisposable(this.collapsedTitleBar,this.expandedTitleBar),n.titleBarExpandCollapse?this.collapsedTitleBar.addInputListener({down:()=>{this.expandCollapseButton.isEnabled()&&(this.phetioStartEvent("expanded"),this.expandedProperty.value=!0,n.expandedSoundPlayer.play(),this.phetioEndEvent())}}):(this.expandedTitleBar.interactiveHighlight="invisible",this.collapsedTitleBar.interactiveHighlight="invisible"),n.showTitleWhenExpanded&&n.titleBarExpandCollapse&&this.expandedTitleBar.addInputListener({down:()=>{this.expandCollapseButton.isEnabled()&&(this.phetioStartEvent("collapsed"),n.collapsedSoundPlayer.play(),this.expandedProperty.value=!1,this.phetioEndEvent())}});const h=()=>{const e=this.expandCollapseButton.visible&&this.expandCollapseButton.pickable;this.collapsedTitleBar.pickable=e,this.expandedTitleBar.pickable=e};if(this.expandCollapseButton.visibleProperty.lazyLink(h),this.expandCollapseButton.pickableProperty.lazyLink(h),this.expandCollapseButton.enabledProperty.link(e=>{const t=n.titleBarExpandCollapse&&e;this.collapsedTitleBar.cursor=t&&n.cursor||null,this.expandedTitleBar.cursor=t&&n.cursor||null}),this.expandedBox.addChild(t),n.stroke){const e={stroke:n.stroke,lineWidth:n.lineWidth,cornerRadius:n.cornerRadius,pickable:!1};this.expandedBoxOutline=new Va(e),this.expandedBox.addChild(this.expandedBoxOutline),this.collapsedBoxOutline=new Va(e),this.collapsedBox.addChild(this.collapsedBoxOutline)}const d=new Dr({excludeInvisibleChildrenFromBounds:!n.useExpandedBoundsWhenCollapsed});this.addChild(d);const u=new Dr({tagName:"div",ariaRole:"region",pdomOrder:[t],ariaLabelledbyAssociations:[{otherNode:this.expandCollapseButton,otherElementName:qs.PRIMARY_SIBLING,thisElementName:qs.PRIMARY_SIBLING}]}),p=new Dr({tagName:n.headingTagName,pdomOrder:[this.expandCollapseButton]}),m=new Dr({tagName:"p"}),g=new Dr({children:[p,m,u],pdomOrder:[p,m,s,u]});this.addChild(g),Js.forwardAccessibleName(this,this.expandCollapseButton),this.accessibleHelpTextBehavior=(e,t,i,n)=>(n.push(()=>{m.innerContent=i}),t),!n.accessibleName&&n.titleNode&&(this.accessibleName=Pb(n.titleNode)),this.constraint=new uS(this,t,d,this.expandedBox,this.collapsedBox,this.expandedTitleBar,this.collapsedTitleBar,this.expandedBoxOutline,this.collapsedBoxOutline,s,this.expandCollapseButton,n),this.constraint.updateLayout(),this.constraint.enabled=n.resize;this.expandedProperty.link(()=>{const e=this.expandedProperty.value;this.expandedBox.visible=e,this.collapsedBox.visible=!e,u.visible=e,this.expandCollapseButton.setFocusHighlight(e?a:l),this.expandedTitleBar.interactiveHighlightEnabled=e&&n.showTitleWhenExpanded,s.visible=e&&n.showTitleWhenExpanded||!e,g.setPDOMAttribute("aria-hidden",!e),this.accessibleHelpText=e?n.helpTextExpanded:n.helpTextCollapsed,this.expandCollapseButton.voicingHintResponse=e?n.voicingHintResponseExpanded:n.voicingHintResponseCollapsed;const t=e?n.contextResponseExpanded:n.contextResponseCollapsed;this.expandCollapseButton.voicingSpeakFullResponse({contextResponse:Tn.alertableToText(t),hintResponse:null}),this.alertDescriptionUtterance(t)},{disposer:this}),this.mutate(_.omit(n,"cursor")),this.resetAccordionBox=()=>{n.expandedProperty||this.expandedProperty.reset()}}};hS.AccordionBoxIO=new w.A("AccordionBoxIO",{valueType:hS,supertype:Dr.NodeIO,events:["expanded","collapsed"]});let cS=class extends(Ah(ga)){},dS=class extends(Ah(Va)){},uS=class extends Vy{layout(){super.layout();const e=this.options;if(!this.accordionBox.isChildIncludedInLayout(this.contentNode))return void(this.containerNode.children=[]);this.containerNode.children=[this.expandedBox,this.collapsedBox,this.titleNode,this.expandCollapseButton];const t=this.accordionBox.expandedProperty.value,i=t||e.useExpandedBoundsWhenCollapsed,n=null===e.stroke?0:e.lineWidth,s=this.createLayoutProxy(this.contentNode),r=this.createLayoutProxy(this.titleNode),o=s.minimumWidth,a=s.minimumHeight,l=r.minimumWidth,h=Math.max(this.expandCollapseButton.height+2*e.buttonYMargin,this.titleNode.height+2*e.titleYMargin),c=e.showTitleWhenExpanded?Math.max((e.allowContentToOverlapTitle?e.contentYMargin:h+e.contentYSpacing)+a+e.contentYMargin,h):Math.max(this.expandCollapseButton.height+2*e.buttonYMargin,a+2*e.contentYMargin);let d=Math.max(e.minWidth,e.buttonXMargin+this.expandCollapseButton.width+e.titleXSpacing+l+e.titleXMargin);"center"===e.titleAlignX&&(d=Math.max(d,2*(e.buttonXMargin+this.expandCollapseButton.width+e.titleXSpacing)+l),d=Math.max(d,2*e.titleXMargin+l));const u=!t&&!e.useContentWidthWhenCollapsed;d=u?Math.max(d,this.expandCollapseButton.width+e.titleXSpacing+l+e.titleXMargin):e.showTitleWhenExpanded?Math.max(d,o+2*e.contentXMargin):Math.max(d,this.expandCollapseButton.width+o+e.buttonXMargin+e.contentXMargin+e.contentXSpacing);const p=d+n,m=(i?c:h)+n,g=Math.max(p,this.accordionBox.localPreferredWidth||0)-n,A=Math.max(m,this.accordionBox.localPreferredHeight||0)-n;this.lastCollapsedBoxHeight=h,i&&(this.lastExpandedBoxHeight=A),this.collapsedBox.rectWidth=g,this.collapsedBox.rectHeight=h;const y=this.collapsedBox.selfBounds;if(this.collapsedTitleBar.rectWidth=g,this.collapsedTitleBar.rectHeight=h,this.collapsedBoxOutline&&(this.collapsedBoxOutline.rectWidth=g,this.collapsedBoxOutline.rectHeight=h),i){this.expandedBox.rectWidth=g,this.expandedBox.rectHeight=A;const t=this.expandedBox.selfBounds;this.expandedBoxOutline&&(this.expandedBoxOutline.rectWidth=g,this.expandedBoxOutline.rectHeight=A),this.expandedTitleBar.shape=Ui.roundedRectangleWithRadii(0,0,g,h,{topLeft:e.cornerRadius,topRight:e.cornerRadius});let i=t.left+e.contentXMargin,n=t.right-e.contentXMargin;e.showTitleWhenExpanded||("left"===e.buttonAlign?i+=this.expandCollapseButton.width+e.contentXSpacing:n-=this.expandCollapseButton.width+e.contentXSpacing);const s=n-i,r=A-(e.showTitleWhenExpanded&&!e.allowContentToOverlapTitle?h+e.contentYMargin+e.contentYSpacing:2*e.contentYMargin);rr(this.contentNode)&&null!==this.accordionBox.localPreferredWidth&&(this.contentNode.preferredWidth=s),or(this.contentNode)&&null!==this.accordionBox.localPreferredHeight&&(this.contentNode.preferredHeight=r),"top"===e.contentVerticalAlign?this.contentNode.top=t.bottom-e.contentYMargin-r:"bottom"===e.contentVerticalAlign?this.contentNode.bottom=t.bottom-e.contentYMargin:this.contentNode.centerY=t.bottom-e.contentYMargin-r/2,"left"===e.contentAlign?this.contentNode.left=i:"right"===e.contentAlign?this.contentNode.right=n:this.contentNode.centerX=(i+n)/2}let f=y.left+e.titleXMargin,b=y.right-e.titleXMargin;"left"===e.buttonAlign?(this.expandCollapseButton.left=y.left+e.buttonXMargin,f=this.expandCollapseButton.right+e.titleXSpacing):(this.expandCollapseButton.right=y.right-e.buttonXMargin,b=this.expandCollapseButton.left-e.titleXSpacing),rr(this.titleNode)&&(this.titleNode.preferredWidth=b-f),"left"===e.titleAlignX?this.titleNode.left=f:"right"===e.titleAlignX?this.titleNode.right=b:u?this.titleNode.left=f:this.titleNode.centerX=y.centerX,"top"===e.titleAlignY?(this.expandCollapseButton.top=this.collapsedBox.top+Math.max(e.buttonYMargin,e.titleYMargin),this.titleNode.top=this.expandCollapseButton.top):(this.expandCollapseButton.centerY=this.collapsedBox.centerY,this.titleNode.centerY=this.expandCollapseButton.centerY),s.dispose(),r.dispose(),this.accordionBox.localMinimumWidth=p,this.accordionBox.localMinimumHeight=m}dispose(){this.accordionBox.localPreferredWidthProperty.unlink(this._updateLayoutListener),this.accordionBox.localPreferredHeightProperty.unlink(this._updateLayoutListener),this.accordionBox.expandedProperty.unlink(this._updateLayoutListener),super.dispose()}constructor(e,t,i,n,s,r,o,a,l,h,c,d){super(e),this.accordionBox=e,this.contentNode=t,this.containerNode=i,this.expandedBox=n,this.collapsedBox=s,this.expandedTitleBar=r,this.collapsedTitleBar=o,this.expandedBoxOutline=a,this.collapsedBoxOutline=l,this.titleNode=h,this.expandCollapseButton=c,this.options=d,this.lastCollapsedBoxHeight=null,this.lastExpandedBoxHeight=null,this.accordionBox.localPreferredWidthProperty.lazyLink(this._updateLayoutListener),this.accordionBox.localPreferredHeightProperty.lazyLink(this._updateLayoutListener),this.accordionBox.expandedProperty.lazyLink(this._updateLayoutListener),this.addNode(t),this.addNode(h)}};Vb.register("AccordionBox",hS);const pS=(e,t)=>e.size===t.size&&_.every([...e],e=>t.has(e));let mS=class extends g.A{update(){const e=new Set;!function t(i){i.parents.forEach(i=>{e.add(i),t(i)})}(this.node),e.forEach(e=>{this.listenedNodeSet.has(e)||this.addNodeListener(e)}),this.listenedNodeSet.forEach(t=>{e.has(t)||t===this.node||this.removeNodeListener(t)}),this.value=e,this.updateEmitter.emit()}addNodeListener(e){this.listenedNodeSet.add(e),e.parentAddedEmitter.addListener(this._nodeUpdateListener),e.parentRemovedEmitter.addListener(this._nodeUpdateListener)}removeNodeListener(e){this.listenedNodeSet.delete(e),e.parentAddedEmitter.removeListener(this._nodeUpdateListener),e.parentRemovedEmitter.removeListener(this._nodeUpdateListener)}dispose(){this.listenedNodeSet.forEach(e=>this.removeNodeListener(e)),this.updateEmitter.dispose(),super.dispose()}constructor(e){super(new Set),this.node=e,this.listenedNodeSet=new Set,this.updateEmitter=new ct.A,this.valueComparisonStrategy=pS,this._nodeUpdateListener=this.update.bind(this),this.addNodeListener(e),this.update()}};ot.A.register("AncestorNodesProperty",mS);let gS=class extends g.A{update(){const e=[...this.fromAncestorsProperty.value,this.from],t=[...this.toAncestorsProperty.value,this.to],i=e.filter(e=>t.includes(e));let n=!1;const s=i.filter(i=>{const s=e.filter(e=>i.hasChild(e)),r=t.filter(e=>i.hasChild(e)),o=[],a=[];Zi(s,r,o,a,[]),(s.length>1||r.length>1)&&(o.length||a.length)&&(n=!0);const l=o.length>0||this.from===i,h=a.length>0||this.to===i;return l&&h});n||1!==s.length?(this.rootNode=null,this.fromTrail=null,this.toTrail=null):(this.rootNode=s[0],this.fromTrail=this.from.getUniqueTrailTo(this.rootNode),this.toTrail=this.to.getUniqueTrailTo(this.rootNode));const r=new Set;this.fromTrail&&this.fromTrail.nodes.forEach(e=>r.add(e)),this.toTrail&&this.toTrail.nodes.forEach(e=>r.add(e)),r.forEach(e=>{this.listenedNodeSet.has(e)||this.addNodeListener(e)}),this.listenedNodeSet.forEach(e=>{r.has(e)||e===this.from||e===this.to||this.removeNodeListener(e)}),this.updateMatrix()}updateMatrix(){if(this.rootNode&&this.fromTrail&&this.toTrail){const e=1===this.fromTrail.nodes.length,t=1===this.toTrail.nodes.length,i=e&&"parent"===this.fromCoordinateFrame||t&&"parent"===this.toCoordinateFrame,n=this.fromTrail.getMatrixConcatenation(i?0:1,this.fromTrail.nodes.length-("parent"===this.fromCoordinateFrame?1:0)),s=this.toTrail.getMatrixConcatenation(i?0:1,this.toTrail.nodes.length-("parent"===this.toCoordinateFrame?1:0));this.value=s.inverted().timesMatrix(n)}else this.value=null}addNodeListener(e){this.listenedNodeSet.add(e),e.transformEmitter.addListener(this._nodeTransformListener)}removeNodeListener(e){this.listenedNodeSet.delete(e),e.transformEmitter.removeListener(this._nodeTransformListener)}dispose(){this.fromAncestorsProperty.dispose(),this.toAncestorsProperty.dispose(),this.listenedNodeSet.forEach(e=>{e.transformEmitter.hasListener(this._nodeTransformListener)&&e.transformEmitter.removeListener(this._nodeTransformListener)}),super.dispose()}constructor(e,t,i){const n=(0,o.Ay)()({fromCoordinateFrame:"local",toCoordinateFrame:"local"},i);super(Et.IDENTITY),this.from=e,this.to=t,this.rootNode=null,this.fromTrail=null,this.toTrail=null,this.listenedNodeSet=new Set,this.fromCoordinateFrame=n.fromCoordinateFrame,this.toCoordinateFrame=n.toCoordinateFrame,this.valueComparisonStrategy="equalsFunction",this.fromAncestorsProperty=new mS(e),this.toAncestorsProperty=new mS(t);const s=this.update.bind(this);this._nodeTransformListener=this.updateMatrix.bind(this),this.fromAncestorsProperty.updateEmitter.addListener(s),this.toAncestorsProperty.updateEmitter.addListener(s),this.update()}};ot.A.register("MatrixBetweenProperty",gS);const AS={mutateNode(e,t){t?e.setPDOMAttribute("aria-haspopup",t):e.removePDOMAttribute("aria-haspopup"),e.positionInPDOM=!!t}};ot.A.register("AriaHasPopUpMutator",AS);const yS=AS;var fS=i(8434);const bS={};let PS=0;function VS(e){const t=bS[e];this.parents[0].childrenChangedEmitter.removeListener(t),delete bS[e]}function wS(e,t,i){let n=e.indexOfChild(t)+i;for(;n>0&&n=0&&n{const t={index:null};return e.parents[0]&&(t.index=e.parents[0].indexOfChild(e)),t},applyState:(e,t)=>{const i=e.parents[0];if(i&&t.index){const n=i.children;n[i.indexOfChild(e)]=n[t.index],n[t.index]=e,i.setChildren(n)}},stateSchema:{index:(0,k.A)(M.A)},methods:{linkIndex:{returnType:M.A,parameterTypes:[(0,fS.A)(re.A,[M.A])],documentation:"Following the PropertyIO.link pattern, subscribe for notifications when the index in the parent changes, and receive a callback with the current value. The return value is a numeric ID for use with clearLinkIndex.",implementation:function(e){const t=()=>{const t=this.parents[0].indexOfChild(this);e(t)};this.parents[0].childrenChangedEmitter.addListener(t),t();const i=PS;return bS[i]=t,PS++,i}},unlinkIndex:{returnType:re.A,parameterTypes:[M.A],documentation:"Unlink a listener that has been added using linkIndex, by its numerical ID (like setTimeout/clearTimeout)",implementation:VS},clearLinkIndex:{returnType:re.A,parameterTypes:[M.A],documentation:'Deprecated, see "unlinkIndex".',implementation:function(e){VS.call(this,e)}},moveForward:{returnType:re.A,parameterTypes:[],implementation:function(){var e;(e=this)._parents.forEach(t=>wS(t,e,1))},documentation:"Move this Node one index forward in each of its parents, skipping invisible Nodes. If the Node is already at the front, this is a no-op."},moveBackward:{returnType:re.A,parameterTypes:[],implementation:function(){var e;(e=this)._parents.forEach(t=>wS(t,e,-1))},documentation:"Move this Node one index backward in each of its parents, skipping invisible Nodes. If the Node is already at the back, this is a no-op."}}});ot.A.register("IndexedNodeIO",vS);const ES=vS;let SS=class extends(pA(Dr)){supplyOpenResponseOnNextFocus(){this._supplyOpenResponseOnNextFocus=!0}dispose(){this.disposeComboBoxListItemNode(),super.dispose()}comboBoxListItemNodeVoicingFocusListener(){this.voicingSpeakFullResponse({nameResponse:this._supplyOpenResponseOnNextFocus?this.voicingNameResponse:null,objectResponse:this._supplyOpenResponseOnNextFocus?null:this.voicingObjectResponse,contextResponse:null,hintResponse:this._supplyOpenResponseOnNextFocus?this.voicingHintResponse:null}),this._supplyOpenResponseOnNextFocus=!1}constructor(e,t,i,n,s){const r=(0,o.Ay)()({cursor:"pointer",align:"left",xMargin:6,highlightFill:"rgb( 245, 245, 245 )",highlightCornerRadius:4,tagName:"li",focusable:!0,ariaRole:"option",positionInPDOM:!0,voicingFocusListener:()=>this.comboBoxListItemNodeVoicingFocusListener(),comboBoxVoicingNameResponsePattern:QE.VALUE_NAMED_PLACEHOLDER,tandem:P.A.REQUIRED,tandemNameSuffix:"Item",phetioType:ES,phetioState:!0,visiblePropertyOptions:{phetioFeatured:!0}},s);r.comboBoxVoicingNameResponsePattern=r.comboBoxVoicingNameResponsePattern.get?r.comboBoxVoicingNameResponsePattern.get():r.comboBoxVoicingNameResponsePattern,r.innerContent=e.accessibleName||null,r.voicingObjectResponse=e.accessibleName||null;const a="string"==typeof r.comboBoxVoicingNameResponsePattern?new h.A(r.comboBoxVoicingNameResponsePattern):r.comboBoxVoicingNameResponsePattern,l=new TV(a,{value:e.accessibleName},{tandem:P.A.OPT_OUT});r.voicingNameResponse=l;const c=new Va({cornerRadius:r.highlightCornerRadius}),d=new Dr({children:[t]}),u=e=>{c.rectWidth=e,d.maxWidth=e};i.link(u);const p=e=>{c.rectHeight=e,d.maxHeight=e};n.link(p),r.children=[c,d],super(r),this._supplyOpenResponseOnNextFocus=!1,oP.create(this,[c,d],(e,t)=>{"left"===r.align?t.left=e.left+r.xMargin:"right"===r.align?t.right=e.right-r.xMargin:t.centerX=e.centerX,t.centerY=e.centerY}),this.item=e,this.localBoundsProperty.link(e=>{this.focusHighlight=Ui.bounds(e)});const m=new Or({attach:!1,tandem:P.A.OPT_OUT});this.addInputListener(m),m.looksOverProperty.link(e=>{c.fill=e?r.highlightFill:null}),this.disposeComboBoxListItemNode=()=>{m.dispose(),l.dispose(),i.unlink(u),n.unlink(p)}}};Vb.register("ComboBoxListItemNode",SS);let TS=class e extends gP{dispose(){this.disposeComboBoxListBox(),super.dispose()}setItemVisible(e,t){this.getListItemNode(e).visible=t}isItemVisible(e){return this.getListItemNode(e).visible}getAllListItemNodes(){return this.content.children}getVisibleListItemNodes(){return this.getAllListItemNodes().filter(e=>e.visible)}getListItemNode(e){const t=_.find(this.getAllListItemNodes(),t=>t.item.value===e);return t}getFocusedItemNode(){const e=_.find(this.getAllListItemNodes(),e=>e.focused);return e}focusListItemNode(e){let t=this.getListItemNode(e);t.visible||(t=_.find(this.getAllListItemNodes(),e=>e.visible)),t&&(t.supplyOpenResponseOnNextFocus(),t.focus())}voiceOnNewSelection(e,t,i){const n={nameResponse:i.voicingNameResponse,objectResponse:null,contextResponse:i.voicingContextResponse,hintResponse:null};t===e&&(n.contextResponse=null),this.voiceOnSelectionNode.voicingSpeakResponse(n)}static getMaxItemWidthProperty(e){const t=_.flatten(e.map(e=>{const t=[e.boundsProperty];return ar(e)&&(t.push(e.isWidthResizableProperty),t.push(e.minimumWidthProperty)),t}));return de.deriveAny(t,()=>Math.max(...e.map(e=>rr(e)?e.minimumWidth||0:e.width)))}static getMaxItemHeightProperty(e){const t=e.map(e=>e.boundsProperty);return de.deriveAny(t,()=>Math.max(...e.map(e=>e.height)))}constructor(t,i,n,s,r,a,l,h){const c=(0,o.Ay)()({highlightFill:"rgb( 245, 245, 245 )",comboBoxListItemNodeOptions:{},xMargin:12,yMargin:8,backgroundPickable:!0,tagName:"ul",ariaRole:"listbox",groupFocusHighlight:!0,openedSoundPlayer:Wm.get("generalOpen"),closedNoChangeSoundPlayer:Wm.get("generalClose"),visiblePropertyOptions:{phetioReadOnly:!0}},h),d=new $e.A(e=>{const i=e.currentTarget;this.selectionOnFireAction=i;const n=t.value;r(),t.value=this.selectionOnFireAction.item.value,s(),this.voiceOnNewSelection(t.value,n,i),e.abort()},{parameters:[{phetioPrivate:!0,valueType:kr}],tandem:l.createTandem("fireAction"),phetioEventType:je.A.USER}),u={up(e){d.execute(e)},keyup:e=>{e.domEvent&&Gn.A.isAnyKeyEvent(e.domEvent,[Gn.A.KEY_ENTER,Gn.A.KEY_SPACE])&&d.execute(e)},click:e=>{d.execute(e)}},p=e.getMaxItemWidthProperty(n),m=e.getMaxItemHeightProperty(n),g=new de([p],e=>e+c.xMargin),A=new de([m],e=>e+c.yMargin),y=[];i.forEach((e,t)=>{const i=new SS(e,n[t],g,A,(0,o.sF)({align:c.align,highlightFill:c.highlightFill,highlightCornerRadius:c.cornerRadius,xMargin:.5*c.xMargin,tandem:e.tandemName?l.createTandem(e.tandemName):P.A.OPTIONAL},c.comboBoxListItemNodeOptions,e.comboBoxListItemNodeOptions));y.push(i),i.addInputListener(u)});const f=new Ff({spacing:0,excludeInvisibleChildrenFromBounds:!0,children:y});super(f,(0,o.sF)({},c,{xMargin:c.xMargin/2,yMargin:c.yMargin/2})),this.content=f,this.voiceOnSelectionNode=a,this.selectionOnFireAction=this.getListItemNode(t.value);const b=i.map(e=>bb.getSelectionSoundPlayer(i.indexOf(e)));let V;this.visibleProperty.lazyLink(e=>{if(e)c.openedSoundPlayer.play(),V=this.getListItemNode(t.value);else if(V===this.selectionOnFireAction)c.closedNoChangeSoundPlayer.play();else{const e=this.selectionOnFireAction.item;if(e.soundPlayer)e.soundPlayer.play();else{const e=this.getVisibleListItemNodes().indexOf(this.selectionOnFireAction);-1!==e&&b[e].play()}}});const w=new td({keys:["escape","tab","shift+tab","arrowUp","arrowDown","home","end"],fire:(e,t)=>{const i=this.getVisibleListItemNodes();if("escape"===t||"tab"===t||"shift+tab"===t)s(),r();else if("arrowUp"===t||"arrowDown"===t){const n=e;n.preventDefault();const s="arrowDown"===t?1:-1,r=i.indexOf(this.getFocusedItemNode()),o=r+s;i[o]&&i[o].focus()}else"home"===t?i[0].focus():"end"===t&&i[i.length-1].focus()}});this.addInputListener(w),this.disposeComboBoxListBox=()=>{for(let e=0;e(t.labelContent=i,t);let IS=class extends Zb{setAriaHasPopUp(e){yS.mutateNode(this,!!e&&"listbox")}setDisplayOnly(e){this.arrow.visible=!e,this.separatorLine.visible=!e,this.tagName=e?"p":"button",this.setAriaHasPopUp(!e)}blockNextVoicingFocusListener(){this._blockNextVoicingFocusListener=!0}dispose(){this.disposeComboBoxButton(),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({align:"left",arrowDirection:"down",arrowFill:"black",comboBoxVoicingNameResponsePattern:QE.VALUE_NAMED_PLACEHOLDER,cursor:"pointer",baseColor:"white",buttonAppearanceStrategy:Qb.FlatAppearanceStrategy,xMargin:12,yMargin:8,stroke:"black",lineWidth:1,soundPlayer:qw,phetioEnabledPropertyInstrumented:!1,phetioVisiblePropertyInstrumented:!1,localPreferredWidthProperty:new g.A(null),localMinimumWidthProperty:new g.A(null),containerTagName:"div",labelTagName:"p",accessibleNameBehavior:CS},n),r=s.xMargin,a=s.yMargin,l=TS.getMaxItemWidthProperty(i),c=TS.getMaxItemHeightProperty(i),d=new ga(null,{fill:s.arrowFill}),u=_.find(t,t=>t.value===e.value),p=t.indexOf(u),m=new Dr({layoutOptions:{yMargin:a,grow:1,xAlign:s.align},children:[i[p]]}),A=new ac(0,0,0,0,{stroke:"black",lineWidth:s.lineWidth});s.content=new Bf({rows:[[m,A,d]]}),Ve.multilink([l,c],(e,t)=>{const i=t+2*a,n=i,o=.35*n,l=2*o*Math.sqrt(3)/3,h=r,c=r-s.lineWidth/2,u=-s.lineWidth/2;var p,g,y;d.shape=(p=s.arrowDirection,g=l,y=o,"up"===p?(new Ui).moveTo(0,y).lineTo(g/2,0).lineTo(g,y).close():(new Ui).moveTo(0,0).lineTo(g,0).lineTo(g/2,y).close()),d.mutateLayoutOptions({minContentWidth:n,minContentHeight:n}),m.mutateLayoutOptions({minContentWidth:e,minContentHeight:t,leftMargin:h,rightMargin:c}),A.y2=i,A.mutateLayoutOptions({rightMargin:u})}),s.xMargin=0,s.yMargin=0,super(s),this.minimumWidthProperty.link(e=>{s.localMinimumWidthProperty.value=e});const y=e=>{this.preferredWidth=e};s.localPreferredWidthProperty.link(y),this._blockNextVoicingFocusListener=!1,this.voicingFocusListener=()=>{!this._blockNextVoicingFocusListener&&this.defaultFocusListener(),this._blockNextVoicingFocusListener=!1};let f=null;const b=new de([e],e=>{const i=_.find(t,t=>t.value===e);return i});new de([b],e=>i[t.indexOf(e)]).link(e=>{m.removeAllChildren(),m.addChild(e)}),b.link(e=>{this.innerContent=e.accessibleName||null;const t="string"==typeof s.comboBoxVoicingNameResponsePattern?new h.A(s.comboBoxVoicingNameResponsePattern):s.comboBoxVoicingNameResponsePattern;f&&f.dispose(),this.voicingNameResponse=f=new TV(t,{value:e.accessibleName||""},{tandem:P.A.OPT_OUT})}),this.ariaLabelledbyAssociations=[{otherNode:this,otherElementName:qs.LABEL_SIBLING,thisElementName:qs.PRIMARY_SIBLING},{otherNode:this,otherElementName:qs.PRIMARY_SIBLING,thisElementName:qs.PRIMARY_SIBLING}],this.setAriaHasPopUp(!0),this.disposeComboBoxButton=()=>{l.dispose(),c.dispose(),b.dispose(),s.localPreferredWidthProperty.unlink(y),f&&f.dispose()},this.arrow=d,this.separatorLine=A}};Vb.register("ComboBoxButton",IS);const xS=(e,t,i,n)=>(n.push(()=>{e.button.accessibleName=i}),t),DS=(e,t,i,n)=>(n.push(()=>{e.button.accessibleHelpText=i}),t);let kS=class e extends(jo(Dr)){dispose(){this.disposeComboBox(),super.dispose()}showListBox(){this.listBox.visibleProperty.value=!0}hideListBox(){this.listBox.visibleProperty.value=!1}scaleListBox(){if(!this.listBox.localBounds.isEmpty()){const e=this.button.localToGlobalBounds(this.button.localBounds).width/this.button.localBounds.width,t=this.listBox.localToGlobalBounds(this.listBox.localBounds).width/this.listBox.localBounds.width;this.listBox.scale(e/t)}}scaleAndPositionListBox(e){e&&(this.scaleListBox(),"above"===this.listPosition?this.listBox.leftBottom=e.timesVector2(this.button.leftTop):this.listBox.leftTop=e.timesVector2(this.button.leftBottom))}setItemVisible(e,t){this.listBox.setItemVisible(e,t)}isItemVisible(e){return this.listBox.isItemVisible(e)}setInputEnabledProperty(e){return this}constructor(t,i,n,s){const r=(0,o.Ay)()({align:"left",listPosition:"below",labelXSpacing:10,disabledOpacity:.5,cornerRadius:4,highlightFill:"rgb( 245, 245, 245 )",xMargin:12,yMargin:8,buttonFill:"white",buttonStroke:"black",buttonLineWidth:1,buttonTouchAreaXDilation:0,buttonTouchAreaYDilation:0,buttonMouseAreaXDilation:0,buttonMouseAreaYDilation:0,listFill:"white",listStroke:"black",listLineWidth:1,openedSoundPlayer:Wm.get("generalOpen"),closedNoChangeSoundPlayer:Wm.get("generalClose"),tagName:"div",buttonLabelTagName:"p",accessibleNameBehavior:xS,accessibleHelpTextBehavior:DS,comboBoxVoicingNameResponsePattern:QE.VALUE_NAMED_PLACEHOLDER,comboBoxVoicingContextResponse:null,comboBoxVoicingHintResponse:null,tandem:P.A.REQUIRED,tandemNameSuffix:"ComboBox",phetioType:e.ComboBoxIO,phetioFeatured:!0,phetioEventType:je.A.USER,visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0},s),a=Eb(i,r.tandem.createTandem("items"));i.forEach((e,t)=>{e.accessibleName||(e.accessibleName=Pb(a[t]))}),super(),this.nodes=a,this.listPosition=r.listPosition,this.button=new IS(t,i,a,{align:r.align,arrowDirection:"below"===r.listPosition?"down":"up",cornerRadius:r.cornerRadius,xMargin:r.xMargin,yMargin:r.yMargin,baseColor:r.buttonFill,stroke:r.buttonStroke,lineWidth:r.buttonLineWidth,touchAreaXDilation:r.buttonTouchAreaXDilation,touchAreaYDilation:r.buttonTouchAreaYDilation,mouseAreaXDilation:r.buttonMouseAreaXDilation,mouseAreaYDilation:r.buttonMouseAreaYDilation,localPreferredWidthProperty:this.localPreferredWidthProperty,localMinimumWidthProperty:this.localMinimumWidthProperty,comboBoxVoicingNameResponsePattern:r.comboBoxVoicingNameResponsePattern,labelTagName:r.buttonLabelTagName,tandem:r.tandem.createTandem("button")}),this.addChild(this.button),this.listBox=new TS(t,i,a,this.hideListBox.bind(this),()=>{this.button.isFocusable()&&(this.button.blockNextVoicingFocusListener(),this.button.focus())},this.button,r.tandem.createTandem("listBox"),{align:r.align,highlightFill:r.highlightFill,xMargin:r.xMargin,yMargin:r.yMargin,cornerRadius:r.cornerRadius,fill:r.listFill,stroke:r.listStroke,lineWidth:r.listLineWidth,visible:!1,comboBoxListItemNodeOptions:{comboBoxVoicingNameResponsePattern:r.comboBoxVoicingNameResponsePattern,voicingContextResponse:r.comboBoxVoicingContextResponse,voicingHintResponse:r.comboBoxVoicingHintResponse},openedSoundPlayer:r.openedSoundPlayer,closedNoChangeSoundPlayer:r.closedNoChangeSoundPlayer,ariaLabelledbyAssociations:[{otherNode:this.button,otherElementName:qs.LABEL_SIBLING,thisElementName:qs.PRIMARY_SIBLING}]}),n.addChild(this.listBox),this.listParent=n,this.pdomOrder=[null,this.listBox];const l=new gS(this.button,this.listParent,{fromCoordinateFrame:"parent",toCoordinateFrame:"local"});Ve.multilink([l,this.button.localBoundsProperty,this.listBox.localBoundsProperty],e=>{this.scaleAndPositionListBox(e)}),this.opacityProperty.link(e=>{this.listBox.opacityProperty.value=e}),this.mutate(r),this.button.addListener(()=>{this.listBox.visibleProperty.value=!this.listBox.visibleProperty.value,this.listBox.visibleProperty.value&&this.listBox.focusListItemNode(t.value)}),this.display=null,this.clickToDismissListener={down:e=>{(!phet.chipper.isFuzzEnabled()||qe.A.nextDouble()<.005)&&(e.trail.containsNode(this.button)||e.trail.containsNode(this.listBox)||this.hideListBox())}},this.dismissWithFocusListener=e=>{e&&!e.trail.containsNode(this.listBox)&&this.hideListBox()},Zn.link(this.dismissWithFocusListener),this.listBox.visibleProperty.link(e=>{e?(this.scaleListBox(),this.listBox.moveToFront(),this.display=this.getUniqueTrail().rootNode().getRootedDisplays()[0],this.display.addInputListener(this.clickToDismissListener)):this.display&&this.display.hasInputListener(this.clickToDismissListener)&&(this.display.removeInputListener(this.clickToDismissListener),this.display=null)}),this.displayOnlyProperty=new c(!1,{tandem:r.tandem.createTandem("displayOnlyProperty"),phetioFeatured:!0,phetioDocumentation:"disables interaction with the ComboBox and makes it appear like a display that shows the current selection"}),this.displayOnlyProperty.link(e=>{this.hideListBox(),this.button.setDisplayOnly(e)});const h=new de([this.enabledProperty,this.displayOnlyProperty],(e,t)=>e&&!t);super.setInputEnabledProperty(h),this.addLinkedElement(t,{tandemName:"property"}),this.visibleProperty.link(e=>{e||this.hideListBox()}),this.disposeComboBox=()=>{l.dispose(),this.display&&this.display.hasInputListener(this.clickToDismissListener)&&this.display.removeInputListener(this.clickToDismissListener),Zn.unlink(this.dismissWithFocusListener),this.displayOnlyProperty.dispose(),this.listBox.dispose(),this.button.dispose(),a.forEach(e=>e.dispose())}}};kS.ComboBoxIO=new w.A("ComboBoxIO",{valueType:kS,documentation:"A combo box is composed of a push button and a listbox. The listbox contains items that represent choices. Pressing the button pops up the listbox. Selecting from an item in the listbox sets the value of an associated Property. The button shows the item that is currently selected.",supertype:Dr.NodeIO,events:["listBoxShown","listBoxHidden"]}),Vb.register("ComboBox",kS);let MS=class extends _E{constructor(e,t,i){super(e,t,(0,o.Ay)()({orientation:Ie.HORIZONTAL},i))}};Vb.register("HSlider",MS);var BS=i(2432);const OS=CV.A.a11y.preferences.tabs.audio.voicing.titleStringProperty,LS=CV.A.a11y.preferences.tabs.audio.voicing.toolbar.titleStringProperty,RS=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.titleStringProperty,NS=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.labelStringStringProperty,qS=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.pitch.titleStringProperty,FS=CV.A.a11y.preferences.tabs.audio.voicing.voicingOnStringProperty,HS=CV.A.a11y.preferences.tabs.audio.voicing.voicingOffStringProperty,YS=CV.A.a11y.preferences.tabs.audio.voicing.voicingOffOnlyAvailableInEnglishStringProperty,GS=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.variablesPatternStringProperty,US=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.titleStringProperty,zS=CV.A.a11y.preferences.tabs.audio.voicing.toolbar.toolbarRemovedStringProperty,WS=CV.A.a11y.preferences.tabs.audio.voicing.toolbar.toolbarAddedStringProperty,QS=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.titleStringProperty,KS=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.descriptionStringProperty,jS=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.labelStringProperty,ZS=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.labelStringProperty,_S=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.labelStringProperty,XS=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.enabledAlertStringProperty,JS=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.objectDetails.disabledAlertStringProperty,$S=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.enabledAlertStringProperty,eT=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.contextChanges.disabledAlertStringProperty,tT=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.enabledAlertStringProperty,iT=CV.A.a11y.preferences.tabs.audio.voicing.simVoicingOptions.helpfulHints.disabledAlertStringProperty,nT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.titleStringProperty,sT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.titlePatternStringProperty,rT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.voice.noVoicesAvailableStringProperty,oT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.expandedAlertStringProperty,aT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.collapsedAlertStringProperty,lT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.writtenVariablesPatternStringProperty,hT=CV.A.a11y.preferences.tabs.labelledDescriptionPatternStringProperty,cT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.voiceRateNormalStringProperty,dT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.lowStringProperty,uT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.normalStringProperty,pT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.aboveNormalStringProperty,mT=CV.A.a11y.preferences.tabs.audio.voicing.customizeVoice.rate.rangeDescriptions.highStringProperty,gT=CV.A.preferences.tabs.audio.voicing.titleEnglishOnlyStringProperty,AT=CV.A.preferences.tabs.audio.voicing.descriptionStringProperty,yT=new Map;yT.set(new D(.5,.75),dT),yT.set(new D(.75,1.25),uT),yT.set(new D(1.25,1.5),pT),yT.set(new D(1.5,2),mT);const fT=new Ne(13,26),bT=new Ne(100,5);let PT=class extends _v{constructor(e,t){const i=BS.A.availableRuntimeLocales&&BS.A.supportsDynamicLocale?gT:OS,n=new Rc(i,Gv.PANEL_SECTION_LABEL_OPTIONS),s=new TV(hT,{label:i,description:AT},{tandem:P.A.OPT_OUT}),r=new Av(AT,(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:s})),a=new zv(e.voicingEnabledProperty,!1,!0,(0,o.sF)({accessibleName:i},Gv.TOGGLE_SWITCH_OPTIONS)),l=new Qv({labelNode:n,descriptionNode:r,allowDescriptionStretch:!1,controlNode:a}),h=new Rc(LS,Gv.PANEL_SECTION_LABEL_OPTIONS),c=new zv(e.toolbarEnabledProperty,!1,!0,(0,o.sF)({accessibleName:LS,leftValueContextResponse:zS,rightValueContextResponse:WS},Gv.TOGGLE_SWITCH_OPTIONS)),d=new Qv({labelNode:h,controlNode:c}),u=new Rc(QS,(0,p.A)({},Gv.PANEL_SECTION_LABEL_OPTIONS,{tagName:"h3",accessibleName:QS})),m=new TV(hT,{label:QS,description:KS},{tandem:P.A.OPT_OUT}),g=new Av(KS,(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:m})),A=(e,t,i,n,s)=>{const r=new Rc(e,Gv.PANEL_SECTION_CONTENT_OPTIONS);return new sP(t,r,{labelTagName:"label",labelContent:e,voicingNameResponse:e,voicingIgnoreVoicingManagerProperties:!0,voiceNameResponseOnSelection:!1,checkedContextResponse:i,uncheckedContextResponse:n,tandem:P.A.OPT_OUT})},y=new Dr,f=[];e.supportsVoicing&&f.push(A(jS,e.voicingObjectResponsesEnabledProperty,XS,JS),A(ZS,e.voicingContextResponsesEnabledProperty,$S,eT)),f.push(A(_S,e.voicingHintResponsesEnabledProperty,tT,iT));const b=new Ff({align:"left",spacing:Gv.VERTICAL_CONTENT_SPACING,children:f});y.children=[u,g,b],g.leftTop=u.leftBottom.plusXY(0,Gv.VERTICAL_CONTENT_SPACING),b.leftTop=g.leftBottom.plusXY(Gv.CONTENT_INDENTATION_SPACING,Gv.VERTICAL_CONTENT_SPACING);const V=new VT(RS,NS,e.voiceRateProperty),w=new vT(qS,e.voicePitchProperty),v=new Ff({spacing:Gv.VERTICAL_CONTENT_SPACING,align:"left",children:[V,w]}),E=new Rc(US,(0,p.A)({},Gv.PANEL_SECTION_LABEL_OPTIONS,{cursor:"pointer"})),S=new hS(v,{titleNode:E,titleAlignX:"left",titleXSpacing:8,contentXMargin:0,expandedDefaultValue:!1,expandCollapseButtonOptions:{sideLength:20,voicingIgnoreVoicingManagerProperties:!0},fill:null,stroke:null,contextResponseExpanded:oT,contextResponseCollapsed:aT,tandem:P.A.OPT_OUT}),T=new Dr({children:[y,d,S]});d.leftTop=y.leftBottom.plusXY(0,20),S.leftTop=d.leftBottom.plusXY(0,20),super({titleNode:l,contentNode:T});e.voicingEnabledProperty.link(e=>{T.visible=e});BS.A.link(e=>{l.enabledProperty.value=e.startsWith("en")});const C=new Tn;e.voicingEnabledProperty.lazyLink(t=>{e.voicingMainWindowVoicingEnabledProperty.value&&(C.alert=t?FS:BS.A.value.startsWith("en")?HS:YS,this.isInsidePhetioArchetype()||zn.speakIgnoringEnabled(C),this.alertDescriptionUtterance(C))});let I=null;zn.voicesProperty.link(t=>{I&&(v.removeChild(I),I.dispose());let i=[];if(t.length>0){i=zn.getEnglishPrioritizedVoices().slice(0,12)}const n=phet.joist.sim.topLayer||new Dr;I=new wT(e.voiceProperty,i,n),v.addChild(I)})}},VT=class extends aS{constructor(e,t,i){super(e,i,i.range,{includeArrowButtons:!1,layoutFunction:aS.createLayoutFunction4(),delta:.25,accessibleName:t,titleNodeOptions:(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:45}),numberDisplayOptions:{decimalPlaces:2,valuePattern:GS,textOptions:(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:45})},sliderOptions:{thumbSize:fT,trackSize:bT,keyboardStep:.25,minorTickSpacing:.25,voicingOnEndResponseOptions:{withNameResponse:!0}},tandem:P.A.OPT_OUT}),this.slider.voicingNameResponse=t,this.slider.voicingIgnoreVoicingManagerProperties=!0;const n=new TV(lT,{value:i},{tandem:P.A.OPT_OUT}),s=new de([i,cT,n],(e,t,i)=>1===e?t:i);this.slider.voicingObjectResponse=s}},wT=class extends kS{dispose(){this.disposeVoiceComboBox(),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({listPosition:"above",accessibleName:nT,comboBoxVoicingNameResponsePattern:sT.value,tandem:P.A.OPT_OUT},n),r=[];0===t.length&&r.push({value:null,createNode:e=>new Rc(rT,Gv.PANEL_SECTION_CONTENT_OPTIONS),accessibleName:rT}),t.forEach(e=>{r.push({value:e,createNode:t=>new Rc(e.name,Gv.PANEL_SECTION_CONTENT_OPTIONS),accessibleName:e.name})}),e.set(r[0].value),super(e,r,i,s),this.button.voicingIgnoreVoicingManagerProperties=!0,this.disposeVoiceComboBox=()=>{r.forEach(e=>{e.value=null})}}},vT=class extends Ff{getPitchDescriptionString(e){let t="";return yT.forEach((i,n)=>{n.contains(e)&&(t=i)}),t}constructor(e,t){const i=new Rc(e,Gv.PANEL_SECTION_CONTENT_OPTIONS),n=t.range,s=new MS(t,n,{majorTickLength:10,thumbSize:fT,trackSize:bT,keyboardStep:.25,shiftKeyboardStep:.1,constrainValue:e=>pE(e,.01),labelTagName:"label",labelContent:e,voicingNameResponse:e,voicingIgnoreVoicingManagerProperties:!0,tandem:P.A.OPT_OUT}),r=new Rc("Low",{font:new Wc(14)});s.addMajorTick(n.min,r);const o=new Rc("High",{font:new Wc(14)});s.addMajorTick(n.max,o),super();t.link((e,t)=>{s.voicingObjectResponse=this.getPitchDescriptionString(e)}),this.mutate({children:[i,s],spacing:5})}};eh.A.register("VoicingPanelSection",PT);const ET=PT,ST=CV.A.preferences.tabs.audio.audioFeatures.titleStringProperty;let TT=class extends jv{constructor(e,t,i,n){super(Xv.AUDIO,t,i,{labelContent:ST});const s={align:"left",spacing:Gv.CONTENT_SPACING,excludeInvisibleChildrenFromBounds:!1},r=new Ff(s),a=new Ff(s);if(e.supportsAnyVoicing){const t=new ET(e);r.addChild(t)}if(e.supportsSound){const t=e.supportsAnyVoicing!==e.supportsSound&&0===e.customPreferences.length,i=new cE(e,{includeTitleToggleSwitch:!t});a.addChild(i)}const l=new Nf({align:"top",spacing:10,children:[r,a],tagName:"div"});e.customPreferences.forEach((e,t)=>{const i=t%2==0?r:a,s=e.createContent(n.tandem),o=new _v({contentNode:s,contentNodeOptions:{excludeInvisibleChildrenFromBounds:!0},contentLeftMargin:0});i.addChild(o)});const h=new Rc(ST,Gv.PANEL_SECTION_LABEL_OPTIONS),c=new zv(e.audioEnabledProperty,!1,!0,(0,o.sF)({accessibleName:ST},Gv.TOGGLE_SWITCH_OPTIONS)),d=new Qv({labelNode:h,controlNode:c,headingControl:!0});e.audioEnabledProperty.link(e=>{l.enabled=e});const u=new Ff({align:"center",spacing:25,children:[d,l]});this.addChild(u)}};eh.A.register("AudioPreferencesTabPanel",TT);const CT=TT,IT=CV.A.a11y.preferences.tabs.input.gestureControl.enabledAlertStringProperty,xT=CV.A.a11y.preferences.tabs.input.gestureControl.disabledAlertStringProperty,DT=CV.A.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;let kT=class extends jv{constructor(e,t,i,n){super(Xv.INPUT,t,i,{labelContent:"Input"});const s=new Ff({spacing:Gv.CONTENT_SPACING,align:"left"});if(this.addChild(s),e.supportsGestureControl){const t=new Rc("Gesture Control",Gv.PANEL_SECTION_LABEL_OPTIONS),i=new $v("Use touch with custom swipes and taps instead. No direct touch with gesture control enabled.",(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{lineWrap:350,maxHeight:100,readingBlockNameResponse:Qe.A.fillIn(DT,{label:"Gesture Control",description:"Use touch with custom swipes and taps instead. No direct touch with gesture control enabled."})})),n=new zv(e.gestureControlsEnabledProperty,!1,!0,(0,o.sF)({accessibleName:"Gesture Control",leftValueContextResponse:xT,rightValueContextResponse:IT},Gv.TOGGLE_SWITCH_OPTIONS)),r=new Qv({labelNode:t,descriptionNode:i,allowDescriptionStretch:!1,controlNode:n}),a=new _v({titleNode:r,contentLeftMargin:0});s.addChild(a)}const r=new Ff({spacing:Gv.CONTENT_SPACING,align:"left"});e.customPreferences.forEach(e=>{const t=e.createContent(n.tandem);r.addChild(new Dr({children:[t]}))});const a=new _v({contentNode:r,contentLeftMargin:0});s.addChild(a)}};eh.A.register("InputPreferencesPanel",kT);const MT=kT,BT=window.phet&&phet.chipper?phet.chipper.packageObject:{name:"placeholder"};eh.A.register("packageJSON",BT);const OT=BT;var LT,RT;const NT=_.uniq(["usa",...(null==OT||null==(RT=OT.phet)||null==(LT=RT.simFeatures)?void 0:LT.supportedRegionsAndCultures)||[]]),qT=e=>!(!e||!NT.includes(e)),FT=window.phet.chipper.queryParameters.regionAndCulture,HT=qT(FT)?FT:"usa";let YT=class extends h.A{unguardedSet(e){qT(e)&&super.unguardedSet(e)}};const GT=NT.length>1,UT=new YT(HT,{validValues:NT.sort(),tandem:GT?P.A.GENERAL_MODEL.createTandem("regionAndCultureProperty"):P.A.OPT_OUT,phetioFeatured:GT,phetioValueType:B.A,phetioDocumentation:"Describes how a region and culture will be portrayed in the sim."});eh.A.register("regionAndCultureProperty",UT);const zT=UT;let WT=class extends Va{constructor(e,t){const i=Qe.A.localeToLocalizedName(t),n=phet.chipper.queryParameters.dev?Qe.A.wrapLTR(`${i} (${t})`):i,s=phet.chipper.localeData[t],r=s.englishName,o=new Rc(n,{font:Gv.CONTENT_FONT});super(o.bounds.dilated(5),{cursor:"pointer",tagName:"button",accessibleName:r}),o.center=this.center,this.addChild(o),this.locale=t;const a=Wm.get("pushButton"),l=new Lr({fire:()=>{e.value=t,a.play(),this.alertDescriptionUtterance(Qe.A.fillIn(CV.A.a11y.preferences.tabs.localization.languageSelection.languageChangeResponsePatternStringProperty,{language:r}))},tandem:P.A.OPT_OUT});this.addInputListener(l),l.isOverProperty.link(e=>{this.stroke=e?EA.getInnerGroupHighlightColor():jr.TRANSPARENT});e.link(e=>{this.fill=e===t?jP.PHET_LOGO_BLUE:null})}};eh.A.register("LanguageSelectionNode",WT);let QT=class extends gP{constructor(e){super(new Bf({xMargin:5,xAlign:"left",autoRows:15,maxWidth:1e3,resize:!1,children:e.availableRuntimeLocales.map(t=>new WT(e,t))}))}};eh.A.register("LocalePanel",QT);const KT=QT,jT={africa:CV.A.preferences.tabs.localization.regionAndCulture.africaStringProperty,africaModest:CV.A.preferences.tabs.localization.regionAndCulture.africaModestStringProperty,asia:CV.A.preferences.tabs.localization.regionAndCulture.asiaStringProperty,latinAmerica:CV.A.preferences.tabs.localization.regionAndCulture.latinAmericaStringProperty,oceania:CV.A.preferences.tabs.localization.regionAndCulture.oceaniaStringProperty,random:CV.A.preferences.tabs.localization.regionAndCulture.randomStringProperty,usa:CV.A.preferences.tabs.localization.regionAndCulture.unitedStatesOfAmericaStringProperty};let ZT=class extends kS{constructor(e){const t=(0,o.Ay)()({tandem:P.A.OPT_OUT},e),i=NT.slice().sort().map(e=>({value:e,createNode:()=>new Rc(jT[e],Gv.PANEL_SECTION_CONTENT_OPTIONS)}));super(zT,i,phet.joist.sim.topLayer,t)}};eh.A.register("RegionAndCultureComboBox",ZT);const _T=ZT,XT=CV.A.preferences.tabs.localization.titleStringProperty,JT=CV.A.preferences.tabs.localization.regionAndCulture.titleStringProperty,$T=CV.A.preferences.tabs.localization.regionAndCulture.descriptionStringProperty;let eC=class extends jv{constructor(e,t,i,n){const s=(0,o.Ay)()({labelContent:XT,phetioVisiblePropertyInstrumented:!1},n);super(Xv.LOCALIZATION,t,i,s);const r=new Ff({spacing:Gv.CONTENT_SPACING});if(NT.length>1){const e=new _T,t=new Rc(JT,Gv.CONTROL_LABEL_OPTIONS),i=new mf($T,Gv.CONTROL_DESCRIPTION_OPTIONS);r.addChild(new Qv({labelNode:t,controlNode:e,descriptionNode:i}))}if(e.supportsDynamicLocale&&e.includeLocalePanel){const t=new Av(CV.A.preferences.tabs.localization.languageSelection.titleStringProperty,(0,o.sF)({},Gv.CONTROL_LABEL_OPTIONS,{readingBlockDisabledTagName:"h3"})),i=new $v(CV.A.preferences.tabs.localization.languageSelection.descriptionStringProperty,Gv.CONTROL_DESCRIPTION_OPTIONS),n=new KT(e.localeProperty),s=new Ff({children:[t,i,n],align:"left",spacing:5,stretch:!0,layoutOptions:{stretch:!0}});r.addChild(s)}e.customPreferences.forEach(e=>{const t=e.createContent(n.tandem);r.addChild(new Dr({children:[t]}))}),r.align=r.children.length>1?"left":"center";const a=new _v({contentNode:r,contentLeftMargin:0});this.addChild(a)}};eh.A.register("LocalizationPreferencesPanel",eC);const tC=eC,iC=new de([BS.A],e=>"ltr"===phet.chipper.localeData[e].direction);eh.A.register("isLeftToRightProperty",iC);const nC=iC;let sC=class extends jv{constructor(e,t){super(Xv.OVERVIEW,e,t);const i=(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{maxWidth:null,lineWrap:600,maxHeight:600,tagName:"p"}),n=[new $v(CV.A.preferences.tabs.general.accessibilityIntroStringProperty,i),new $v(CV.A.preferences.tabs.general.moreAccessibilityStringProperty,i)],s=new Ff({spacing:10,children:n});this.addChild(s);nC.link(e=>{n.forEach(t=>{const i=e?"left":"right";t.align=i,s.align=i})})}};eh.A.register("OverviewPreferencesPanel",sC);const rC=sC;let oC=class extends jv{constructor(e,t,i,n){const s=(0,o.Ay)()({labelContent:"Simulation",phetioVisiblePropertyInstrumented:!1},n);super(Xv.SIMULATION,t,i,s);const r=new Ff({align:"left",spacing:Gv.CONTENT_SPACING});this.addChild(r);const a=[];e.customPreferences.forEach(e=>{const t=e.createContent(s.tandem),i=new _v({contentNode:t});a.push(i)}),r.children=a}};eh.A.register("SimulationPreferencesPanel",oC);const aC=oC;let lC=class extends Qv{constructor(e,t){const i=new Rc(CV.A.projectorModeStringProperty,Gv.PANEL_SECTION_LABEL_OPTIONS),n=new Av(CV.A.preferences.tabs.visual.projectorModeDescriptionStringProperty,Gv.PANEL_SECTION_CONTENT_OPTIONS),s=phet.chipper.colorProfiles.find(e=>e!==Vf.PROJECTOR_COLOR_PROFILE),r=new zv(e,s,Vf.PROJECTOR_COLOR_PROFILE,(0,o.sF)({accessibleName:CV.A.projectorModeStringProperty},Gv.TOGGLE_SWITCH_OPTIONS)),a=new TV(CV.A.a11y.preferences.tabs.labelledDescriptionPatternStringProperty,{label:CV.A.projectorModeStringProperty,description:CV.A.preferences.tabs.visual.projectorModeDescriptionStringProperty},{tandem:P.A.OPT_OUT});n.readingBlockNameResponse=a,super((0,o.Ay)()({labelNode:i,descriptionNode:n,controlNode:r},t))}};eh.A.register("ProjectorModeToggleSwitch",lC);const hC=lC,cC=CV.A.preferences.tabs.visual.interactiveHighlightsStringProperty,dC=CV.A.preferences.tabs.visual.interactiveHighlightsDescriptionStringProperty,uC=CV.A.a11y.preferences.tabs.visual.interactiveHighlights.enabledAlertStringProperty,pC=CV.A.a11y.preferences.tabs.visual.interactiveHighlights.disabledAlertStringProperty,mC=CV.A.a11y.preferences.tabs.labelledDescriptionPatternStringProperty;let gC=class extends jv{constructor(e,t,i,n){const s=(0,o.Ay)()({labelContent:"Visual"},n),r=s.tandem;s.tandem=P.A.OPT_OUT,super(Xv.VISUAL,t,i,s);const a=new Ff({spacing:Gv.CONTENT_SPACING,align:"left"});if(e.supportsProjectorMode){const t=new hC(e.colorProfileProperty);a.addChild(t)}if(e.supportsInteractiveHighlights){const t=new Rc(cC,Gv.PANEL_SECTION_LABEL_OPTIONS),i=new TV(mC,{label:cC,description:dC},{tandem:P.A.OPT_OUT}),n=new Av(dC,(0,p.A)({},Gv.PANEL_SECTION_CONTENT_OPTIONS,{readingBlockNameResponse:i})),s=new zv(e.interactiveHighlightsEnabledProperty,!1,!0,(0,o.sF)({accessibleName:cC,leftValueContextResponse:pC,rightValueContextResponse:uC},Gv.TOGGLE_SWITCH_OPTIONS)),r=new Qv({labelNode:t,descriptionNode:n,allowDescriptionStretch:!1,controlNode:s});a.addChild(r)}e.customPreferences.forEach(e=>{const t=e.createContent(r),i=new Dr({children:[t]});a.addChild(i)});const l=new _v({contentNode:a,contentLeftMargin:0});this.addChild(l)}};eh.A.register("VisualPreferencesPanel",gC);const AC=gC;let yC=class extends Dr{getSelectedContent(){for(let e=0;e{e.focusable=!1}})}};eh.A.register("PreferencesPanels",yC);const bC=yC,PC=new Ui("M17.98,18.88c-.83,4.11-2.49,6.69-3.68,8.09-.26.02-.53.03-.8.03-.21,0-.42-.01-.63-.02-1.19-1.4-2.86-3.98-3.69-8.09h8.8ZM19.98,18.88c-.62,3.38-1.76,5.87-2.88,7.62,3.94-1.09,7.17-3.92,8.78-7.62h-5.89ZM7.18,18.88H1.12c1.64,3.76,4.94,6.62,8.97,7.67-1.13-1.75-2.29-4.26-2.92-7.67ZM8.67,13.5c0,1.23.08,2.36.21,3.41h9.41c.13-1.06.21-2.19.21-3.41s-.08-2.35-.2-3.4h-9.42c-.12,1.05-.2,2.18-.2,3.4ZM26.55,10.1h-6.28c.12,1.06.19,2.18.19,3.4s-.08,2.35-.2,3.41h6.28c.29-1.09.45-2.23.45-3.41s-.17-2.31-.45-3.4ZM6.7,13.5c0-1.22.08-2.34.19-3.4H.45c-.28,1.09-.45,2.22-.45,3.4s.17,2.32.45,3.41h6.44c-.12-1.07-.2-2.19-.2-3.41ZM19.99,8.13h5.9c-1.61-3.7-4.83-6.54-8.78-7.63,1.12,1.75,2.26,4.24,2.88,7.63ZM13.5,0c-.21,0-.42.01-.64.02-1.19,1.4-2.86,3.98-3.69,8.11h8.81C17.16,4.01,15.49,1.43,14.3.03c-.27-.02-.53-.03-.8-.03ZM10.09.44C6.05,1.5,2.75,4.36,1.12,8.13h6.06c.63-3.43,1.78-5.94,2.91-7.69Z");let VC=class extends(pA(Dr)){constructor(e,t,i,n){const s=(0,o.Ay)()({iconNode:null,pointerAreaXDilation:0,phetioFeatured:!0,visiblePropertyOptions:{phetioFeatured:!0},cursor:"pointer",tagName:"button",accessibleName:e,ariaRole:"tab",focusable:!0,containerTagName:"li",containerAriaRole:"presentation"},n),r=[new Rc(e,Gv.TAB_OPTIONS)];s.iconNode&&r.push(s.iconNode);const a=new Nf({children:r,spacing:8}),l=new Va({children:[a]}),h=new ac(0,0,0,0,{stroke:gl.INNER_FOCUS_COLOR,lineWidth:5});super(s),this.children=[l,h],a.boundsProperty.link(e=>{l.rectBounds=e.dilatedXY(15,10),h.x2=e.width,h.centerTop=e.centerBottom.plusXY(0,5),this.mouseArea=this.localBounds.dilatedX(s.pointerAreaXDilation),this.touchArea=this.mouseArea}),this.value=i;const c=new TV(CV.A.a11y.preferences.tabs.tabResponsePatternStringProperty,{title:e},{tandem:P.A.OPT_OUT});this.voicingNameResponse=c;const d=new Or({press:()=>{t.set(i),this.focus(),this.voicingSpeakNameResponse()},tandem:P.A.OPT_OUT});this.addInputListener(d),Ve.multilink([t,d.isOverProperty],(e,t)=>{l.opacity=e===i?1:t?.8:.6,this.focusable=e===i,h.visible=e===i})}};eh.A.register("PreferencesTab",VC);const wC=VC;let vC=class extends Nf{getTabVisibleProperty(e){const t=_.find(this.content,t=>t.value===e);return t.visibleProperty}focusSelectedTab(){this.content.forEach(e=>{e.value===this.selectedPanelProperty.value&&e.focus()})}constructor(e,t,i){const n=(0,o.Ay)()({isDisposable:!1,tagName:"ul",ariaRole:"tablist",groupFocusHighlight:!0,spacing:10,align:"bottom"},i);super(n),this.selectedButton=null,this.content=[],this.selectedPanelProperty=t;const s=t=>_.includes(e,t),r=n.spacing/2;s(Xv.OVERVIEW)&&this.content.push(new wC(CV.A.preferences.tabs.overview.titleStringProperty,t,Xv.OVERVIEW,{pointerAreaXDilation:r,tandem:n.tandem.createTandem("overviewTab")})),s(Xv.SIMULATION)&&this.content.push(new wC(CV.A.preferences.tabs.simulation.titleStringProperty,t,Xv.SIMULATION,{pointerAreaXDilation:r,tandem:n.tandem.createTandem("simulationTab")})),s(Xv.VISUAL)&&this.content.push(new wC(CV.A.preferences.tabs.visual.titleStringProperty,t,Xv.VISUAL,{pointerAreaXDilation:r,tandem:n.tandem.createTandem("visualTab")})),s(Xv.AUDIO)&&this.content.push(new wC(CV.A.preferences.tabs.audio.titleStringProperty,t,Xv.AUDIO,{pointerAreaXDilation:r,tandem:n.tandem.createTandem("audioTab")})),s(Xv.INPUT)&&this.content.push(new wC(CV.A.preferences.tabs.input.titleStringProperty,t,Xv.INPUT,{pointerAreaXDilation:r,tandem:n.tandem.createTandem("inputTab")})),s(Xv.LOCALIZATION)&&this.content.push(new wC(CV.A.preferences.tabs.localization.titleStringProperty,t,Xv.LOCALIZATION,{pointerAreaXDilation:r,iconNode:new ga(PC,{scale:.734,fill:"black"}),tandem:n.tandem.createTandem("localizationTab")})),this.children=this.content,Ve.multilinkAny([t,...this.content.map(e=>e.visibleProperty)],()=>{if(!this.content.find(e=>e.value===t.value).visibleProperty.value){const e=this.content.find(e=>e.visibleProperty.value);e&&(t.value=e.value)}});const a=new td({keys:["arrowRight","arrowLeft"],fireOnDown:!1,fire:(e,i)=>{e&&e.preventDefault();const n="arrowRight"===i?1:-1;for(let s=0;s{this.content.forEach(e=>{e.value===this.selectedPanelProperty.value&&(this.selectedButton=e)})}),1===e.length&&(this.focusable=!1,this.inputEnabledProperty.value=!1)}};eh.A.register("PreferencesTabs",vC);const EC=vC,SC="data:audio/mpeg;base64,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Ak9VmOWhIXESKVktJ2z4qoUibZXEhJVmo54y2pTCpKrkqInxtCMiURCZMUikUkts1JpZqUkLOLbHCI0RE1oSXNz+SbNkLMYykmzS0yFmTUlVCZ6udDBEKnkJlZCQhktiVP8kt2mGpHnoyCiA//u0xFQAFJGA2aSZNKMnNZKxzTAlCSoDGlYIaVGpygYYefKF0UpWkqkrtgp6HRRPZ5axHA+enRVOHHuXIak+k6KgHkM9YJwSlxO+7i7XWv7etVMjdXHJVJA/RPnrxiHQnFtT7Ubs7M81d1qM5hc9lw+EkhHZdLh2oMkqI6XmSVTa388cpVBk+crFS06YfpGtgvy6B6ubzT5iVVCpnL8ZJXz2BGeprtHKHFuQrC0SWDoeSoZnhGAiKi22w9p6SjtQfUMkPvmzPZvfXN6zV52lmQL/9EfSDeEzcSop1UxBTUUzLjk5LjVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//u0xAADwAAAAAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",TC=Il(Bl,SC),CC=Cl.A.createLock(SC),IC=new kl;let xC=!1;const DC=()=>{xC||(CC(),xC=!0)},kC=Bl.decodeAudioData(TC.buffer,e=>{null===IC.audioBufferProperty.value&&(IC.audioBufferProperty.set(e),DC())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),IC.audioBufferProperty.set(Bl.createBuffer(1,1,Bl.sampleRate)),DC()});kC&&kC.then(e=>{null===IC.audioBufferProperty.value&&(IC.audioBufferProperty.set(e),DC())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),DC()});const MC=IC;let BC=class extends Rm{dispose(){Ze.A.assertNotDisposable()}constructor(e,t){super(MC,t);e.lazyLink(()=>{this.play()})}};eh.A.register("PreferencesTabSwitchSoundGenerator",BC);const OC=BC;let LC=class extends jw{focusSelectedTab(){this.preferencesTabs.focusSelectedTab()}focusSelectedPanel(){this.preferencesPanels.focusSelectedPanel()}constructor(e,t){const i=new Rc(CV.A.preferences.titleStringProperty,{font:Gv.TITLE_FONT,maxWidth:Gv.CONTENT_MAX_WIDTH}),n=(0,o.Ay)()({titleAlign:"center",title:i,isDisposable:!1,phetioDynamicElement:!0,closeButtonVoicingDialogTitle:CV.A.preferences.titleStringProperty},t),s=[Xv.OVERVIEW];e.supportsSimulationPreferences()&&s.push(Xv.SIMULATION),e.supportsVisualPreferences()&&s.push(Xv.VISUAL),e.supportsAudioPreferences()&&s.push(Xv.AUDIO),e.supportsInputPreferences()&&s.push(Xv.INPUT),e.supportsLocalizationPreferences()&&s.push(Xv.LOCALIZATION);const r=new lh(Xv.OVERVIEW,{validValues:s,tandem:n.tandem.createTandem("selectedTabProperty")}),a=new EC(s,r,{tandem:n.tandem.createTandem("preferencesTabs")}),l=new bC(e,s,r,a,{tandem:n.tandem.createTandem("preferencesPanels")}),h=new Ff({children:[a,new Rf({layoutOptions:{bottomMargin:20,stretch:!0}}),l]}),c=new OC(r,{initialOutputLevel:.2});Jl.addSoundGenerator(c,{categoryName:"user-interface"}),super(h,n),this.preferencesTabs=a,this.preferencesPanels=l,a.addInputListener(new td({keys:["arrowDown"],fire:()=>{this.focusSelectedPanel()}})),h.addInputListener(new td({keys:["arrowUp"],fire:e=>{this.focusSelectedTab()},enabledProperty:new de([Zn],()=>{const e=_n();return!!e&&this.preferencesPanels.isFocusableSelectedContent(e)})}))}};eh.A.register("PreferencesDialog",LC);const RC=LC;let NC=class extends mv{constructor(e,t,i){const n=(0,o.Ay)()({listener:()=>{const e=r.getElement();e.show(),e.focusSelectedTab()},highlightExtensionWidth:8.6,highlightExtensionHeight:10,accessibleName:CV.A.preferences.titleStringProperty,positionInPDOM:!0,voicingNameResponse:CV.A.preferences.titleStringProperty,visiblePropertyOptions:{phetioFeatured:!0}},i),s=new Jh(xv,{scale:18.85/xv.height,pickable:!1});super(s,t,n);const r=new rv(t=>new RC(e,{tandem:t,focusOnHideNode:this}),[],{tandem:n.tandem.createTandem("preferencesDialogCapsule"),phetioType:rv.PhetioCapsuleIO(jw.DialogIO),disposeOnClear:!1});t.link(e=>{s.image=e.equals(jr.BLACK)?xv:Mv}),this.setPDOMAttribute("aria-haspopup",!0)}};eh.A.register("NavigationBarPreferencesButton",NC);const qC=NC;let FC=class extends Nf{constructor(e,t,i){const n=(0,o.Ay)()({align:"center",spacing:2,tandem:P.A.REQUIRED},i),s=[];if(e.preferencesModel.shouldShowDialog()){const i=new qC(e.preferencesModel,t,{tandem:n.tandem.createTandem("preferencesButton"),pointerAreaDilationX:1,pointerAreaDilationY:1});s.push(i)}const r=e.preferencesModel.supportsAudioPreferences();if(r&&s.push(new Tv(nh.audioEnabledProperty,t,{tandem:n.tandem.createTandem("audioToggleButton"),pointerAreaDilationX:1,pointerAreaDilationY:.15,supportsAudioPreferences:r})),e.hasKeyboardHelpContent){const i=new wv(e.screens,e.selectedScreenProperty,t,{tandem:n.tandem.createTandem("keyboardHelpButton"),pointerAreaDilationX:1,pointerAreaDilationY:1});phet.chipper.queryParameters.supportsInteractiveDescription&&!We.A.mobileSafari&&s.push(i)}n.children=s,super(_.omit(n,"tandem"))}};eh.A.register("A11yButtonsHBox",FC);const HC=FC,YC=new Ui("M44.34,17.66l-4.29-3.57V1.83c0-1.01-.82-1.82-1.82-1.82h-3.88c-1.01,0-1.82.82-1.82,1.82v5.98L23.67.43c-.68-.56-1.66-.56-2.34,0L.66,17.66c-.77.64-.88,1.8-.23,2.57l.77.93c.64.77,1.8.88,2.57.23L22.5,5.78l18.73,15.61c.77.64,1.92.54,2.57-.23l.77-.93c.64-.77.54-1.92-.23-2.57Z M22.55,9.13L5.05,23.57v14.6c0,1.01.82,1.82,1.82,1.82h11.77v-11.89h7.82v11.89h11.77c1.01,0,1.82-.82,1.82-1.82v-14.6l-17.5-14.44Z"),GC=CV.A.a11y.homeStringProperty,UC=CV.A.a11y.goToScreenPatternStringProperty;let zC=class extends mv{constructor(e,t,i,n){const s=new TV(UC,{name:GC}),r=(0,o.Ay)()({highlightExtensionWidth:4,containerTagName:"li",accessibleHelpText:s,appendDescription:!0,voicingHintResponse:s},n),a=new ga(YC);a.setScaleMagnitude(.48*e/a.height*.85);const l=new Va(0,0,a.width/.85+12,e);a.center=l.center;const h=new Dr({children:[l,a]}),c=new Tn,d=r.listener;r.listener=()=>{d&&d(),this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null,utterance:c})},super(h,t,r),this.focusHighlight=Ui.bounds(this.bounds.setMaxY(this.bounds.maxY-2)),Ve.multilink([this.interactionStateProperty,t],(e,t)=>{t.equals(jr.BLACK)?a.fill=e===Ib.PRESSED?"gray":"white":a.fill=e===Ib.PRESSED?"#444":"#222"}),this.addInputListener({focus:()=>{this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})}}),i.link(e=>{this.accessibleName=e,this.voicingNameResponse=e})}};eh.A.register("HomeButton",zC);const WC=e=>e.width+8;let QC=class extends(pA(Dr)){constructor(e,t,i,n,s,r){const a=(0,o.Ay)()({cursor:"pointer",phetioDocumentation:`Button in the navigation bar that selects the '${i.tandem.name}' screen`,maxButtonWidth:null,tagName:"button",containerTagName:"li",accessibleHelpText:i.screenButtonsHelpText,appendDescription:!0,voicingHintResponse:i.screenButtonsHelpText},r);super(),this.screen=i,i.pdomDisplayNameProperty.link(e=>{this.accessibleName=e,this.voicingNameResponse=e});const l=new Dr({children:[i.navigationBarIcon],maxHeight:.625*s,pdomVisible:!1}),h=new Va(0,0,l.width,l.height),c=new Dr({children:[l,h]}),d=new Rc(i.nameProperty,{font:new Wc(10)}),u=new Ff({children:[c,d],pickable:!1,usesOpacity:!0,maxHeight:s}),p=new Va({rectBounds:u.bounds}),m=WC(p),g=new pv(m,p.height,{center:u.center,fill:"white"}),A=new pv(m,p.height,{center:u.center,fill:"black"}),y=new de([t],e=>e===i);this.buttonModel=new kb({listener:()=>{t.value!==i&&this.voicingSpeakFullResponse({objectResponse:null,hintResponse:null}),t.value=i},tandem:a.tandem,phetioEnabledPropertyInstrumented:!1});const f=this.buttonModel.createPressListener({tandem:P.A.OPT_OUT});this.addInputListener(f),this.addInputListener({focus:()=>{this.voicingSpeakFullResponse({objectResponse:null,contextResponse:null})}}),Ve.multilink([y,this.buttonModel.looksPressedProperty,this.buttonModel.looksOverProperty,e,this.buttonModel.enabledProperty],(e,t,n,s,r)=>{const o=!s.equals(jr.BLACK),a=o?"black":jP.BUTTON_YELLOW,l=o?"gray":"white";d.fill=e?a:l,u.opacity=e?1:t?.65:.5,g.visible=!o&&r&&(n||t),A.visible=o&&r&&(n||t),"black"===i.showScreenIconFrameForNavigationBarFill&&s.equals(jr.BLACK)?h.stroke=jP.SCREEN_ICON_FRAME:"white"===i.showScreenIconFrameForNavigationBarFill&&s.equals(jr.WHITE)?h.stroke="black":h.stroke="transparent"}),this.buttonModel.enabledProperty.link(e=>{this.cursor=e?a.cursor:null});const b=()=>{u.spacing=(0,et.q)(12-d.height,0,3),p.setRectBounds(u.bounds),g.spacing=A.spacing=WC(p),g.center=A.center=u.center};u.boundsProperty.lazyLink(b),d.boundsProperty.link(b),this.children=[u,p,g,A];const V=a.maxButtonWidth&&this.width>a.maxButtonWidth;d.maxWidth=V?l.maxWidth=a.maxButtonWidth-(this.width-u.width):this.width,this.localBoundsProperty.link(e=>{this.focusHighlight=Ui.bounds(e)}),this.mutate(a)}};eh.A.register("NavigationBarScreenButton",QC);const KC=QC;let jC=class extends ga{constructor(e){const t=new Ui;for(let i=0;i<3;i++)t.circle(0,3.543*i*2.5,2.5);super(t,e)}};eh.A.register("KebabMenuIcon",jC);const ZC=jC,_C=new Ui("M9.65,20.8L.33,11.48c-.44-.44-.44-1.16,0-1.6l1.93-1.93c.44-.44,1.16-.44,1.6,0l6.59,6.59L24.65.33c.44-.44,1.16-.44,1.6,0l1.93,1.93c.44.44.44,1.16,0,1.6L11.26,20.8c-.44.44-1.16.44-1.6,0Z"),XC=new ga(_C,{fill:"rgba(0,0,0,0.7)",maxWidth:15.5}),JC=XC.width+2;let $C=class extends(jo(pA(Dr))){dispose(){this.disposeMenuItem(),super.dispose()}constructor(e,t,i,n,s,r){const a=(0,o.Ay)()({separatorBefore:!1,checkedProperty:null,textFill:"black",cursor:"pointer",phetioDocumentation:"Item buttons shown in a popup menu",phetioEventType:je.A.USER,tagName:"button",containerTagName:"li",containerAriaRole:"none",ariaRole:"menuitem",positionInPDOM:!0},r);super(),s&&this.setVisibleProperty(Hy);const l=e=>{this.innerContent=e,this.voicingNameResponse=e};t.link(l),this.present=n;const h=new Rc(t,{font:new Wc(18),fill:a.textFill,maxWidth:400}),c=new Va({cornerRadius:5});h.boundsProperty.link(e=>{this.localMinimumWidth=e.width+2+5+JC,c.rectHeight=e.height+3+3}),this.localPreferredWidthProperty.link(e=>{(e=null===e?this.localMinimumWidth:Math.max(this.localMinimumWidth||0,e))&&(c.rectWidth=e)}),this.addChild(c),this.addChild(h),oP.create(this,[c,h],(e,t)=>{t.left=e.left+2+JC,t.centerY=e.centerY}),this.addInputListener({enter:()=>{c.fill="#a6d2f4"},exit:()=>{c.fill=null}}),this.addInputListener(new Lr({tandem:a.tandem,fire:t=>{e(t),i(t)}})),this.separatorBefore=a.separatorBefore;let d=null;if(a.checkedProperty){const e=new Dr({children:[XC],right:h.left-2,centerY:h.centerY});d=t=>{e.visible=t},a.checkedProperty.link(d),this.addChild(e)}this.mutate(a),this.disposeMenuItem=()=>{a.checkedProperty&&d&&a.checkedProperty.hasListener(d)&&a.checkedProperty.unlink(d),t.hasListener(l)&&t.unlink(l),h.dispose()}}};Vb.register("MenuItem",$C);let eI=class extends Uf{constructor(e,t){super(0,e,t)}};ot.A.register("VStrut",eI);let tI=class extends Ff{dispose(){this.disposeCreditsNode(),super.dispose()}constructor(e,t){const i={font:(t=(0,o.Ay)()({titleFont:new Wc({size:18,weight:"bold"}),textFont:new Wc(16),align:"left",spacing:1,maxWidth:550},t)).textFont,align:"left",lineWrap:t.maxWidth,tagName:"p"},n=[];n.push(new Av(CV.A.credits.titleStringProperty,{font:t.titleFont,readingBlockDisabledTagName:"h2"}));const s=(e,t)=>new de([e],e=>Qe.A.format(e,`‪${t}‬`));if(e.leadDesign){const t=s(CV.A.credits.leadDesignStringProperty,e.leadDesign);n.push(new $v(t,i))}if(e.softwareDevelopment){const t=s(CV.A.credits.softwareDevelopmentStringProperty,e.softwareDevelopment);n.push(new $v(t,i))}if(e.team){const t=s(CV.A.credits.teamStringProperty,e.team);n.push(new $v(t,i))}if(e.contributors){const t=s(CV.A.credits.contributorsStringProperty,e.contributors);n.push(new $v(t,i))}if(e.qualityAssurance){const t=s(CV.A.credits.qualityAssuranceStringProperty,e.qualityAssurance);n.push(new $v(t,i))}if(e.graphicArts){const t=s(CV.A.credits.graphicArtsStringProperty,e.graphicArts);n.push(new $v(t,i))}if(e.soundDesign){const t=s(CV.A.credits.soundDesignStringProperty,e.soundDesign);n.push(new $v(t,i))}if(e.thanks){n.length>0&&n.push(new eI(13)),n.push(new Av(CV.A.credits.thanksStringProperty,{font:t.titleFont,readingBlockDisabledTagName:"h2"}));const s=new $v(e.thanks,i);n.push(s)}t.children=n,super(t),this.disposeCreditsNode=()=>{n.forEach(e=>{e.dispose&&e.dispose()})}}};eh.A.register("CreditsNode",tI);let iI=class e{serialize(){return{major:this.major,minor:this.minor,maintenance:this.maintenance,testType:this.testType,testNumber:this.testNumber,buildTimestamp:this.buildTimestamp}}get isSimNotPublished(){return!!(this.major<1||1===this.major&&0===this.minor&&0===this.maintenance&&this.testType)}get isSimPublished(){return!this.isSimNotPublished}get majorMinor(){return`${this.major}.${this.minor}`}static deserialize(t){let{major:i,minor:n,maintenance:s,testType:r,testNumber:o,buildTimestamp:a}=t;return new e(i,n,s,{testType:r,testNumber:o,buildTimestamp:a})}compareNumber(t){return e.comparator(this,t)}static comparator(e,t){return e.majort.major?1:e.minort.minor?1:e.maintenancet.maintenance?1:0}isAfter(e){return 1===this.compareNumber(e)}isBeforeOrEqualTo(e){return this.compareNumber(e)<=0}toString(){let e=`${this.major}.${this.minor}.${this.maintenance}`;return"string"==typeof this.testType&&(e+=`-${this.testType}.${this.testNumber}`),e}static parse(t,i){const n=t.match(/^(\d+)\.(\d+)\.(\d+)(-(([^.-]+)\.(\d+)))?(-([^.-]+))?$/);if(!n)throw new Error("could not parse version: "+t);const s=Number(n[1]),r=Number(n[2]),o=Number(n[3]),a=n[6],l=void 0===n[7]?n[7]:Number(n[7]);return new e(s,r,o,{testType:a,testNumber:l,buildTimestamp:i})}static fromBranch(t){const i=t.split(".");(0,ze.Ay)(2===i.length,"Bad branch, should be {{MAJOR}}.{{MINOR}}, had: "+t);const n=Number(t.split(".")[0]),s=Number(t.split(".")[1]);return new e(n,s,0)}static ensureReleaseBranch(t){const i=e.fromBranch(t.split("-")[0]);(0,ze.Ay)(i.major>0,"Major version for a branch should be greater than zero"),(0,ze.Ay)(i.minor>=0,"Minor version for a branch should be greater than (or equal) to zero")}constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};"string"==typeof e&&(e=Number(e)),"string"==typeof t&&(t=Number(t)),"string"==typeof i&&(i=Number(i)),"string"==typeof n.testNumber&&(n.testNumber=Number(n.testNumber));const{buildTimestamp:s=null,testType:r=null,testNumber:o=null}=n;(0,ze.Ay)("number"==typeof e&&e>=0&&e%1==0,"major version should be a non-negative integer: "+e),(0,ze.Ay)("number"==typeof t&&t>=0&&t%1==0,"minor version should be a non-negative integer: "+t),(0,ze.Ay)("number"==typeof i&&i>=0&&i%1==0,"maintenance version should be a non-negative integer: "+i),(0,ze.Ay)("string"!=typeof r||"number"==typeof o,"if testType is provided, testNumber should be a number"),this.major=e,this.minor=t,this.maintenance=i,this.testType=r,this.testNumber=o,this.buildTimestamp=s}},nI=class extends Se.A{};nI.UP_TO_DATE=new nI,nI.OUT_OF_DATE=new nI,nI.CHECKING=new nI,nI.OFFLINE=new nI,nI.UNCHECKED=new nI,nI.enumeration=new Ee.A(nI,{phetioDocumentation:"Describes the states that can occur during an Update check"}),eh.A.register("UpdateState",nI);const sI=OT.name,rI=iI.parse(OT.version,phet.chipper.buildTimestamp),oI="https:"===document.location.protocol?"https:":"http:";const aI=new class{clearTimeout(){window.clearTimeout(this.timeoutId)}setTimeout(){this.timeoutId=window.setTimeout(this.timeoutCallback,15e3)}resetTimeout(){this.stateProperty.value===nI.CHECKING&&(this.clearTimeout(),this.setTimeout())}timeout(){this.stateProperty.value=nI.OFFLINE}check(){if(!this.areUpdatesChecked||this.stateProperty.value!==nI.UNCHECKED&&this.stateProperty.value!==nI.OFFLINE)return;if(this.ourVersion.isSimNotPublished)return void(this.stateProperty.value=nI.UP_TO_DATE);const e=new XMLHttpRequest;"withCredentials"in e&&(this.stateProperty.value=nI.CHECKING,this.setTimeout(),e.onload=()=>{this.clearTimeout();try{const t=JSON.parse(e.responseText);t.error?(console.log("Update check failure: "+t.error),this.stateProperty.value=nI.OFFLINE):(this.updateURL&&(this.updateURL=t.updateURL),this.latestVersion=iI.parse(t.latestVersion,t.buildTimestamp),"out-of-date"===t.state?this.stateProperty.value=nI.OUT_OF_DATE:"up-to-date"===t.state?this.stateProperty.value=nI.UP_TO_DATE:(console.log("Failed to get proper state: "+t.state),this.stateProperty.value=nI.OFFLINE))}catch(t){this.stateProperty.value=nI.OFFLINE}},e.onerror=()=>{this.clearTimeout(),this.stateProperty.value=nI.OFFLINE},e.open("post",oI+"//phet.colorado.edu/services/check-html-updates",!0),e.send(JSON.stringify({api:"1.0",simulation:sI,locale:phet.joist.sim.locale,currentVersion:this.ourVersion.toString(),buildTimestamp:phet.chipper.buildTimestamp})))}constructor(){this.stateProperty=new lh(nI.UNCHECKED),this.latestVersion=null,this.ourVersion=rI,this.timeoutCallback=this.timeout.bind(this),this.areUpdatesChecked="phet"===phet.chipper.brand&&!phet.chipper.isApp&&phet.chipper.queryParameters.yotta,this.updateURL=`https://phet.colorado.edu/html-sim-update?simulation=${encodeURIComponent(sI)}&version=${encodeURIComponent(rI.toString())}&buildTimestamp=${encodeURIComponent(""+phet.chipper.buildTimestamp)}`,this.timeoutId=-1}};eh.A.register("updateCheck",aI);const lI=aI;let hI=class e extends Dr{step(e){this.indicatorRotation+=10*e*this.speed;let t=this.indicatorRotation;for(let i=0;i{n.dispose()}}};Vb.register("TextPushButton",cI);const dI=new Ui("M44.96,35.84L25.07,1.39c-1.07-1.85-3.73-1.85-4.8,0L.38,35.84c-1.07,1.85.27,4.16,2.4,4.16h39.79c2.13,0,3.47-2.31,2.4-4.16ZM25.22,34.07c0,.9-.73,1.62-1.62,1.62h-1.85c-.9,0-1.62-.73-1.62-1.62v-1.85c0-.9.73-1.62,1.62-1.62h1.85c.9,0,1.62.73,1.62,1.62v1.85ZM25.22,15.52l-.55,11.16c-.04.87-.76,1.55-1.62,1.55h-.74c-.86,0-1.58-.68-1.62-1.54l-.57-11.16v-3.14c0-.9.73-1.62,1.62-1.62h1.85c.9,0,1.62.73,1.62,1.62v3.14Z"),uI=new Wc(14),pI={createCheckingNode:function(e){const t=new hI({diameter:e.big?24:18}),i=new Nf((0,p.A)({spacing:e.big?10:8,maxWidth:550,children:[t,new Av(CV.A.updates.checkingStringProperty,{font:new Wc(e.big?16:14),fontWeight:e.big?"bold":"normal"})]},e));return i.step=function(e){lI.stateProperty.value===nI.CHECKING&&t.step(e)},i.stepListener=i.step.bind(i),i},createUpToDateNode:function(e){return new Nf((0,p.A)({spacing:8,maxWidth:550,children:[new Va(0,0,20,20,5,5,{fill:"#5c3",scale:e.big?1.2:1,children:[new ga(_C,{fill:"#fff",scale:.48,centerX:10,centerY:10})]}),new Av(CV.A.updates.upToDateStringProperty,{font:new Wc(e.big?16:14),fontWeight:e.big?"bold":"normal"})]},e))},createOutOfDateAboutNode:function(e){const t=new de([CV.A.updates.outOfDateStringProperty,Hy],(e,t)=>t?`${e}`:e),i={url:lI.updateURL},n=new mf(t,{links:i,font:uI});return new Nf((0,p.A)({spacing:8,maxWidth:550,children:[new ga(dI,{fill:"#E87600",scale:.381}),n],tagName:"div"},e))},createOutOfDateDialogNode:function(e,t,i,n){const s=new de([CV.A.updates.newVersionAvailableStringProperty],e=>Qe.A.format(e,i)),r=new de([CV.A.updates.yourCurrentVersionStringProperty],e=>Qe.A.format(e,t));return new Ff((0,p.A)({spacing:15,maxWidth:550,children:[new Ff({spacing:5,align:"left",children:[new Av(s,{font:new Wc(16),fontWeight:"bold"}),new Av(r,{font:uI})]}),new Nf({spacing:25,children:[new cI(CV.A.updates.getUpdateStringProperty,{visibleProperty:Hy,baseColor:"#6f6",font:uI,listener:function(){$y(lI.updateURL)}}),new cI(CV.A.updates.noThanksStringProperty,{baseColor:"#ddd",font:uI,listener:function(){e.hide()}})]})]},n))},createOfflineNode:function(e){return new Nf((0,p.A)({spacing:0,maxWidth:550,children:[new eI(20),new Av(CV.A.updates.offlineStringProperty,{font:new Wc(e.big?16:14),fontWeight:e.big?"bold":"normal"})]},e))}};eh.A.register("UpdateNodes",pI);const mI=pI;let gI=class extends jw{show(){this.shouldShowPopup()&&(lI.areUpdatesChecked&&!this.isShowingProperty.value&&(lI.resetTimeout(),lI.stateProperty.value!==nI.OFFLINE&&lI.stateProperty.value!==nI.UNCHECKED||lI.check(),this.updateStepListener&&we.A.addListener(this.updateStepListener),this.updateVisibilityListener&&lI.stateProperty.link(this.updateVisibilityListener)),super.show())}hide(){this.isShowingProperty.value&&(super.hide(),lI.areUpdatesChecked&&(this.updateVisibilityListener&&lI.stateProperty.unlink(this.updateVisibilityListener),this.updateStepListener&&we.A.removeListener(this.updateStepListener)))}constructor(e,t,i,n){const s=(0,o.Ay)()({xSpacing:26,topMargin:26,bottomMargin:26,leftMargin:26,phetioReadOnly:!0,phetioDynamicElement:!0,isDisposable:!1,accessibleName:e,tandem:P.A.REQUIRED},n),r=phet.brand.Brand;let a=[];const l=new Av(e,{font:new Wc(32),maxWidth:550,accessibleParagraph:null});a.push(l);const h=new de([CV.A.versionPatternStringProperty],e=>Qe.A.format(e,t));a.push(new Av(h,{font:new Wc(16),maxWidth:550})),phet.chipper.buildTimestamp&&a.push(new Av(phet.chipper.buildTimestamp,{font:new Wc(10.4),maxWidth:550}));let c=null,d=null,u=null;if(lI.areUpdatesChecked){const e={left:0,top:0},t=mI.createCheckingNode(e),i=mI.createUpToDateNode(e),n=mI.createOutOfDateAboutNode(e),s=mI.createOfflineNode(e);c=t.stepListener,d=e=>{t.visible=e===nI.CHECKING,i.visible=e===nI.UP_TO_DATE,n.visible=e===nI.OUT_OF_DATE,s.visible=e===nI.OFFLINE,t.pdomVisible=t.visible,i.pdomVisible=i.visible,n.pdomVisible=n.visible,s.pdomVisible=s.visible},u=new Dr({children:[t,i,n,s],maxWidth:550,visibleProperty:Hy}),a.push(u)}const p=[];if(r.name&&p.push(new $v(r.name,{font:new Wc(16),supScale:.5,supYOffset:3,maxWidth:550,readingBlockDisabledTagName:"h2"})),r.copyright){const e=phet.chipper.buildTimestamp?phet.chipper.buildTimestamp.split("-")[0]:(new Date).getFullYear(),t=Qe.A.fillIn(r.copyright,{year:e});p.push(new Av(t,{font:new Wc(12),maxWidth:550}))}let m=null;r.additionalLicenseStatement&&(m=new $v(r.additionalLicenseStatement,{font:new Wc(10.4),fill:"gray",align:"left",maxWidth:550}),p.push(m)),p.length>0&&(a.push(new eI(15)),a=a.concat(p));let g=null;"phet"!==r.id&&"phet-io"!==r.id||(a.push(new eI(15)),g=new tI(i,{titleFont:new Wc({size:16,weight:"bold"}),textFont:new Wc(12),maxWidth:550}),a.push(g));const A=r.getLinks(OT.name,BS.A.value);if(A&&A.length>0){const e=new Ff({spacing:6,align:"left",maxWidth:550});a.push(e),BS.A.link(t=>{e.children.forEach(e=>e.dispose());const i=r.getLinks(OT.name,t),n=[];n.push(new eI(15));for(let e=0;ee?`${i}`:`${i}: ${t.url}`),r=new mf(s,{links:{url:t.url},font:new Wc(16)});r.disposeEmitter.addListener(()=>{s.dispose()}),n.push(r)}e.children=n})}super(new Ff({align:"left",spacing:6,children:a,tagName:"div"}),s),this.updateStepListener=c,this.updateVisibilityListener=d,this.addAriaLabelledbyAssociation({thisElementName:qs.PRIMARY_SIBLING,otherElementName:qs.PRIMARY_SIBLING,otherNode:l})}};eh.A.register("AboutDialog",gI);let AI=class e{static generateScreenshotAtIncreasedResolution(e,t){const i=document.createElement("canvas"),n=i.getContext("2d"),s=bo.backingScale(n)*t;i.width=e.display.width*s,i.height=e.display.height*s,n.scale(s,s),n.fillStyle=e.display.domElement.style.backgroundColor,n.fillRect(0,0,i.width,i.height);const r=new ur(i,n);return e.rootNode.renderToCanvasSubtree(r,Et.scaling(s)),i}static renderAtScale(e,t){const i=document.createElement("canvas"),n=i.getContext("2d");return i.width=e.width*t,i.height=e.height*t,n.scale(t,t),n.drawImage(e,0,0),i}static generateScreenshot(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"image/png";const n=e.generateScreenshotAtIncreasedResolution(t,2);return e.renderAtScale(n,.5).toDataURL(i)}};eh.A.register("ScreenshotGenerator",AI);const yI=AI;let fI=class extends jw{show(){this.shouldShowPopup()&&(lI.areUpdatesChecked&&!this.isShowingProperty.value&&(lI.resetTimeout(),lI.stateProperty.value!==nI.OFFLINE&&lI.stateProperty.value!==nI.UNCHECKED||lI.check(),we.A.addListener(this.updateStepListener),lI.stateProperty.link(this.updateVisibilityListener)),super.show())}hide(){this.isShowingProperty.value&&(super.hide(),lI.areUpdatesChecked&&(lI.stateProperty.unlink(this.updateVisibilityListener),we.A.removeListener(this.updateStepListener)))}constructor(e){const t={centerX:0,centerY:0,big:!0},i=mI.createCheckingNode(t),n=mI.createUpToDateNode(t),s=new Dr({tagName:"div"}),r=mI.createOfflineNode(t);super(new Dr({children:[i,n,s,r],tagName:"div"}),e);const o=()=>{const e=lI.latestVersion?lI.latestVersion.toString():"x.x.xx",i=lI.ourVersion.toString();s.children=[mI.createOutOfDateDialogNode(this,i,e,t)]};o(),this.updateStepListener=i.stepListener,this.updateVisibilityListener=e=>{e===nI.OUT_OF_DATE&&o(),i.visible=e===nI.CHECKING,n.visible=e===nI.UP_TO_DATE,s.visible=e===nI.OUT_OF_DATE,r.visible=e===nI.OFFLINE,i.pdomVisible=i.visible,n.pdomVisible=n.visible,s.pdomVisible=s.visible,r.pdomVisible=r.visible}}};eh.A.register("UpdateDialog",fI);let bI=class e extends(Ww(Dr,0)){dispose(){this.disposePhetMenu(),_.each(this.items,e=>e.dispose()),super.dispose()}constructor(t,i){const n="phet"===phet.chipper.brand,s=phet.chipper.isApp,r=(0,o.Ay)()({phetioType:e.PhetMenuIO,phetioState:!1,phetioDocumentation:"This menu is displayed when the PhET button is pressed.",phetioVisiblePropertyInstrumented:!1,tagName:"ul",ariaRole:"menu"},i);super(r);const a=new rv(e=>new gI(t.simNameProperty,t.version,t.credits,{tandem:e,focusOnHideNode:this.focusOnHideNode}),[],{tandem:r.tandem.createTandem("aboutDialogCapsule"),phetioType:rv.PhetioCapsuleIO(jw.DialogIO),disposeOnClear:!1});let l=null;const h=[{textStringProperty:CV.A.menuItem.phetWebsiteStringProperty,present:n,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{$y("https://phet.colorado.edu/"+t.locale)}},{textStringProperty:CV.A.menuItem.reportAProblemStringProperty,present:n&&!s,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{const e=`https://phet.colorado.edu/files/troubleshooting/?sim=${encodeURIComponent(t.simNameProperty.value)}&version=${encodeURIComponent(`${t.version} ${phet.chipper.buildTimestamp?phet.chipper.buildTimestamp:"(unbuilt)"}`)}&url=${encodeURIComponent(window.location.href)}&dependencies=${encodeURIComponent(JSON.stringify({}))}`;$y(e)}},{textStringProperty:new g.A("QR code"),present:phet.chipper.queryParameters.qrCode,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{$y(`http://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(window.location.href)}&size=220x220&margin=0`)}},{textStringProperty:CV.A.menuItem.getUpdateStringProperty,present:lI.areUpdatesChecked,shouldBeHiddenWhenLinksAreNotAllowed:!0,callback:()=>{l||(l=new fI({focusOnHideNode:this.focusOnHideNode})),l.show()},options:{textFill:new de([lI.stateProperty],e=>e===nI.OUT_OF_DATE?"#0a0":"#000")}},{textStringProperty:CV.A.menuItem.screenshotStringProperty,present:!s&&!phet.chipper.isFuzzEnabled(),shouldBeHiddenWhenLinksAreNotAllowed:!1,callback:()=>{const e=yI.generateScreenshot(t);if(window.Blob&&new window.Blob){const i="data:image/png;base64,",n=e.slice(i.length),s=window.atob(n),r=new window.Uint8Array(s.length);for(let e=0;e{phet.chipper.isFuzzEnabled()||nA.toggleFullScreen(t.display)},options:{checkedProperty:nA.isFullScreenProperty,tandem:r.tandem.createTandem("fullScreenMenuItem"),phetioDocumentation:"This menu item requests full-screen access for the simulation display.",visiblePropertyOptions:{phetioFeatured:!0}}},{textStringProperty:CV.A.menuItem.aboutStringProperty,present:!0,shouldBeHiddenWhenLinksAreNotAllowed:!1,callback:()=>a.getElement().show(),options:{separatorBefore:n,tandem:r.tandem.createTandem("aboutMenuItem"),phetioDocumentation:"This menu item shows a dialog with information about the simulation.",phetioVisiblePropertyInstrumented:!1}}].filter(e=>e.present||e.options&&e.options.tandem).map(e=>new $C(()=>this.hide(),e.textStringProperty,e.callback,e.present,e.shouldBeHiddenWhenLinksAreNotAllowed,e.options)).filter(e=>e.present);this.items=h;const c=new Ff({stretch:!0,spacing:2,children:_.flatten(h.map(e=>e.separatorBefore?[new Rf({stroke:"gray"}),e]:[e]))}),d=new ga(null,{fill:"white",stroke:"black"});c.localBoundsProperty.link(()=>{c.left=5,c.top=5}),c.boundsProperty.link(e=>{d.shape=PI(e.width+10,e.height+10)}),this.addChild(d),this.addChild(c);const u=new td({keys:["escape","arrowDown","arrowUp","tab","shift+tab"],fire:(e,t)=>{const i=this.items[0],n=this.items[this.items.length-1];if(e&&e.preventDefault(),"arrowDown"===t){(n.focused?i:hn.A.getNextFocusable()).focus()}else if("arrowUp"===t){(i.focused?n:hn.A.getPreviousFocusable()).focus()}else"escape"!==t&&"tab"!==t&&"shift+tab"!==t||this.hide()}});this.addInputListener(u),this.disposePhetMenu=()=>{this.removeInputListener(u),u.dispose()}}};bI.PhetMenuIO=new w.A("PhetMenuIO",{valueType:bI,documentation:"The PhET Menu in the bottom right of the screen"});const PI=(e,t)=>{const i=(new Ui).moveTo(e-20,t).lineToRelative(0,20).lineToRelative(-20,-20).close();return Ui.roundRect(0,0,e,t,8,8).shapeUnion(i)};eh.A.register("PhetMenu",bI);const VI=bI;let wI=class e extends mv{constructor(t,i,n){const s=phet.brand.Brand,r=s.logoOnBlackBackground,o=s.logoOnWhiteBackground,a=new Jh(r,{scale:.28/r.height*108*.85,pickable:!1}),l=new ZC({scale:.83,left:a.width+8,bottom:a.bottom-.5,pickable:!1}),h=new Dr({children:[a,l]}),c=Wm.get("pushButton");super(h,i,{highlightExtensionWidth:6,highlightExtensionHeight:5,highlightCenterOffsetY:4,listener:()=>{d.show(),d.items[0].focus(),c.play()},tandem:n,phetioType:e.PhetButtonIO,phetioDocumentation:"The button that appears at the right side of the navigation bar, which shows a menu when pressed",enabledPropertyOptions:{phetioFeatured:!0,phetioDocumentation:"When disabled, the (three dots) are hidden and the button cannot be pressed, hiding the PhET menu."},phetioVisiblePropertyInstrumented:!1,accessibleName:CV.A.a11y.phetMenuStringProperty,voicingNameResponse:CV.A.a11y.phetMenuStringProperty});const d=new VI(t,{tandem:n.createTandem("phetMenu"),focusOnHideNode:this});Ve.multilink([t.boundsProperty,t.screenBoundsProperty,t.scaleProperty,d.localBoundsProperty],(e,t,i)=>{if(e&&t&&i){d.setScaleMagnitude(i),d.right=e.right-2;const n=e.height-t.height;d.bottom=t.bottom+n/2}}),Ve.multilink([i,t.selectedScreenProperty,lI.stateProperty],(e,i,n)=>{const s=i===t.homeScreen,h=!e.equals(jr.BLACK)&&!s,c=n===nI.OUT_OF_DATE;l.fill=h?c?"#0a0":"#222":c?"#3F3":"white",a.image=h?o:r}),this.buttonModel.enabledProperty.link(e=>{l.visible=e}),yS.mutateNode(this,!0)}};wI.PhetButtonIO=new w.A("PhetButtonIO",{valueType:wI,documentation:"The PhET Button in the bottom right of the screen"}),eh.A.register("PhetButton",wI);const vI=wI,EI=new Ne(Vw.LAYOUT_BOUNDS.width,40);let SI=class extends Dr{layout(e,t,i){this.background.rectWidth=t,this.background.rectHeight=i,this.barContents.setScaleMagnitude(e)}constructor(e,t){super(),this.homeButton=null,this.navigationBarFillProperty=new de([e.selectedScreenProperty,e.lookAndFeel.navigationBarFillProperty],(t,i)=>t===e.homeScreen?Sw.BACKGROUND_COLOR:i),this.background=new Va(0,0,EI.width,EI.height,{pickable:!0,fill:this.navigationBarFillProperty}),this.addChild(this.background),this.barContents=new Dr,this.addChild(this.barContents);const i=new Rc(e.displayedSimNameProperty,{font:new Wc(16),fill:e.lookAndFeel.navigationBarTextFillProperty,tandem:t.createTandem("titleText"),phetioFeatured:!0,phetioDocumentation:"Displays the title of the simulation in the navigation bar (bottom left)",visiblePropertyOptions:{phetioFeatured:!0},stringPropertyOptions:{phetioReadOnly:!0},phetioVisiblePropertyInstrumented:!0}),n=new Dr({children:[i],visibleProperty:new de([e.selectedScreenProperty],t=>t!==e.homeScreen)});this.barContents.addChild(n);const s=new vI(e,this.navigationBarFillProperty,t.createTandem("phetButton"));let r;this.barContents.addChild(s),this.a11yButtonsHBox=new HC(e,this.navigationBarFillProperty,{tandem:t}),this.barContents.addChild(this.a11yButtonsHBox),this.localeNode&&this.barContents.addChild(this.localeNode),this.addAriaLabelledbyAssociation({thisElementName:qs.PRIMARY_SIBLING,otherNode:this,otherElementName:qs.LABEL_SIBLING});const o=this.a11yButtonsHBox.bounds.isValid()?this.a11yButtonsHBox.width:0;if(1===e.simScreens.length)i.maxWidth=Vw.LAYOUT_BOUNDS.width-10-25-6-o-(this.localeNode?this.localeNode.width:0)-6-s.width-10;else{const n=Math.min(i.width,.2*Vw.LAYOUT_BOUNDS.width),a=new c(!0,{tandem:P.A.GENERAL_MODEL.createTandem("screens").createTandem("isUserNavigableProperty"),phetioFeatured:!0,phetioDocumentation:"If the screens are user navigable, icons are displayed in the navigation bar and the user can switch between screens."});r=new Dr({tagName:"ol",containerTagName:"nav",labelTagName:"h2",labelContent:CV.A.a11y.simScreensStringProperty,visibleProperty:new de([e.activeSimScreensProperty,e.selectedScreenProperty,a],(t,i,n)=>i!==e.homeScreen&&t.length>1&&n)}),r.ariaLabelledbyAssociations=[{thisElementName:qs.CONTAINER_PARENT,otherElementName:qs.LABEL_SIBLING,otherNode:r}],this.barContents.addChild(r),this.homeButton=new zC(EI.height,e.lookAndFeel.navigationBarFillProperty,e.homeScreen?e.homeScreen.pdomDisplayNameProperty:new lc("NO HOME SCREEN"),{listener:()=>{e.selectedScreenProperty.value=e.homeScreen},tandem:t.createTandem("homeButton"),centerY:EI.height/2}),e.homeScreen&&r.addChild(this.homeButton);const l=Vw.LAYOUT_BOUNDS.width/2-10-n-25-5-this.homeButton.width-5,h=Vw.LAYOUT_BOUNDS.width/2-6-o-(this.localeNode?this.localeNode.width:0)-6-s.width-10,d=2*Math.min(l,h),u=(d-0*(e.simScreens.length-1))/e.simScreens.length,p=e.simScreens.map(i=>new KC(e.lookAndFeel.navigationBarFillProperty,e.selectedScreenProperty,i,e.simScreens.indexOf(i),EI.height,{maxButtonWidth:u,tandem:i.tandem.supplied?t.createTandem(i.tandem.name+"Button"):P.A.REQUIRED})),m=[this.homeButton,...p],g=Math.max(60,_.maxBy(p,e=>e.width).width),A=_.maxBy(p,e=>e.height).height,y=new Map;p.forEach(e=>{y.set(e.screen,new Yb(e,{excludeInvisibleChildrenFromBounds:!0,alignBounds:new Me(0,0,g,A),visibleProperty:e.visibleProperty}))});const f=new Nf({spacing:0,maxWidth:d});r.addChild(f),e.activeSimScreensProperty.link(e=>{f.children=e.map(e=>y.get(e))}),oP.create(this,[this.background,f],(e,t)=>{t.center=e.center}),Bw.create(this.barContents,[this.homeButton,...p],(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;ne&&e.visible);e&&s.length>0&&(e.right=Math.min(...s.map(e=>e.left))-5)})),oP.create(this.barContents,[this.homeButton,i],(e,t)=>{t.maxWidth=e.left-10-25}),e.simNameProperty.link(e=>{m.forEach(t=>{t.voicingContextResponse=e})})}i.left=10,i.centerY=EI.height/2,s.centerY=EI.height/2,oP.create(this,[this.background,s],(e,t)=>{t.right=e.right-10}),oP.create(this.barContents,[s,this.a11yButtonsHBox],(e,t)=>{t.right=e.left-6,t.centerY=e.centerY}),this.localeNode&&oP.create(this.barContents,[s,this.a11yButtonsHBox,this.localeNode],(e,t,i)=>{t.right=e.left-6,t.centerY=e.centerY,i.centerY=e.centerY,i.right=Math.min(t.left,e.left)-6}),this.layout(1,EI.width,EI.height);const a=new Dr({tagName:"div",containerTagName:"section",labelTagName:"h2",labelContent:CV.A.a11y.simResourcesStringProperty,pdomOrder:[this.a11yButtonsHBox,s].filter(e=>void 0!==e)});a.ariaLabelledbyAssociations=[{thisElementName:qs.CONTAINER_PARENT,otherElementName:qs.LABEL_SIBLING,otherNode:a}],this.addChild(a)}};SI.NAVIGATION_BAR_SIZE=EI,eh.A.register("NavigationBar",SI);const TI=SI,CI=_.hasIn(window,"phet.chipper.queryParameters.colorProfile")?phet.chipper.queryParameters.colorProfile:Vf.DEFAULT_COLOR_PROFILE,II=_.hasIn(window,"phet.chipper.colorProfiles")?phet.chipper.colorProfiles:[Vf.DEFAULT_COLOR_PROFILE],xI=new lc(CI,{tandem:P.A.GENERAL_VIEW.createTandem("colorProfileProperty"),phetioFeatured:!0,validValues:II});ot.A.register("colorProfileProperty",xI);const DI=xI;let kI=null;let MI=class e{registerToLocalStorage(e,t){const i="PREFERENCES:"+t;window.localStorage.getItem(i)&&(e.value=JSON.parse(window.localStorage.getItem(i))),e.link(e=>{window.localStorage.setItem(i,JSON.stringify(e))}),this.registedProperties.push(e)}static register(t,i){return phet.chipper.queryParameters.preferencesStorage?(kI||(kI=new e),kI.enabled&&kI.registerToLocalStorage(t,i),t):t}constructor(){this.enabled=!0,this.registedProperties=[];try{window.localStorage.setItem("test","test")}catch(e){if(this.enabled=!1,e instanceof Error){if(!(window.navigator.userAgent.includes("Safari")&&!window.navigator.userAgent.includes("Chrome"))||!e.message.includes("QuotaExceededError"))throw e;console.log("It looks like you are browsing with private mode in Safari. Please turn that setting off if you want to use PreferencesStorage")}}}};eh.A.register("PreferencesStorage",MI);const BI=MI;function OI(){return(OI=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:[];const n=e.createTandem(t.tandemName),s=i;for(let r=0;r0}supportsSimulationPreferences(){return this.preferenceModelHasCustom(this.simulationModel)}supportsVisualPreferences(){return this.visualModel.supportsInteractiveHighlights||this.visualModel.supportsProjectorMode||this.preferenceModelHasCustom(this.visualModel)}supportsAudioPreferences(){return this.audioModel.supportsSound||this.audioModel.supportsExtraSound||this.audioModel.supportsAnyVoicing||this.preferenceModelHasCustom(this.audioModel)}supportsInputPreferences(){return this.inputModel.supportsGestureControl||this.preferenceModelHasCustom(this.inputModel)}supportsLocalizationPreferences(){return this.localizationModel.supportsDynamicLocale||NT.length>1||this.preferenceModelHasCustom(this.localizationModel)}shouldShowDialog(){return this.supportsSimulationPreferences()||this.supportsVisualPreferences()||this.supportsInputPreferences()||this.supportsLocalizationPreferences()||this.supportsAudioPreferences()}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=phet.chipper.queryParameters,n=OI({},(0,o.Ay)()({tandem:P.A.OPT_OUT,phetioType:e.PreferencesModelIO,phetioFeatured:!0,phetioState:!1,phetioReadOnly:!0},t),{simulationOptions:(0,o.Ay)()({tandemName:"simulationModel",customPreferences:[]},t.simulationOptions),visualOptions:(0,o.Ay)()({tandemName:"visualModel",supportsProjectorMode:!1,supportsInteractiveHighlights:i.supportsInteractiveHighlights,customPreferences:[]},t.visualOptions),audioOptions:(0,o.Ay)()({tandemName:"audioModel",supportsVoicing:i.supportsVoicing,supportsTier1Voicing:i.supportsTier1Voicing,supportsSound:i.supportsSound,supportsExtraSound:i.supportsExtraSound,customPreferences:[]},t.audioOptions),inputOptions:(0,o.Ay)()({tandemName:"inputModel",supportsGestureControl:i.supportsGestureControl,customPreferences:[]},t.inputOptions),localizationOptions:(0,o.Ay)()({tandemName:"localizationModel",supportsDynamicLocale:!!BS.A.availableRuntimeLocales&&BS.A.supportsDynamicLocale&&phet.chipper.queryParameters.supportsDynamicLocale,customPreferences:[],includeLocalePanel:!0},t.localizationOptions)});super(n),this.simulationModel=n.simulationOptions;const s=n.tandem.createTandem("visualModel");this.visualModel=(0,p.A)({interactiveHighlightsEnabledProperty:new c(phet.chipper.queryParameters.interactiveHighlightsInitiallyEnabled,{tandem:s.createTandem("interactiveHighlightsEnabledProperty"),phetioState:!1}),colorProfileProperty:DI},n.visualOptions);const r=Hn.isSpeechSynthesisSupported()&&(phet.chipper.locale.startsWith("en")||phet.chipper.queryParameters.supportsDynamicLocale&&_.some(BS.A.availableRuntimeLocales,e=>e.startsWith("en"))),a="disabled"!==phet.chipper.queryParameters.audio,l=n.audioOptions.supportsVoicing&&r&&a,h=n.audioOptions.supportsTier1Voicing&&r&&a,d=l||h;this.audioModel={supportsVoicing:l,supportsTier1Voicing:h,supportsAnyVoicing:d,supportsSound:n.audioOptions.supportsSound&&a,supportsExtraSound:n.audioOptions.supportsExtraSound&&a,audioEnabledProperty:nh.audioEnabledProperty,soundEnabledProperty:Jl.enabledProperty,extraSoundEnabledProperty:Jl.extraSoundEnabledProperty,voicingEnabledProperty:zn.enabledProperty,voicingMainWindowVoicingEnabledProperty:zn.mainWindowVoicingEnabledProperty,voicingObjectResponsesEnabledProperty:wn.objectResponsesEnabledProperty,voicingContextResponsesEnabledProperty:wn.contextResponsesEnabledProperty,voicingHintResponsesEnabledProperty:wn.hintResponsesEnabledProperty,voicePitchProperty:zn.voicePitchProperty,voiceRateProperty:zn.voiceRateProperty,voiceProperty:zn.voiceProperty,toolbarEnabledProperty:new c(!phet.chipper.queryParameters.voicingRemoveToolbar,{tandem:n.tandem.createTandem("audioModel").createTandem("toolbarEnabledProperty"),phetioState:!1}),customPreferences:n.audioOptions.customPreferences,tandemName:n.audioOptions.tandemName};const u=n.tandem.createTandem("inputModel");if(this.inputModel=(0,p.A)({gestureControlsEnabledProperty:new c(!1,{tandem:u.createTandem("gestureControlsEnabledProperty"),phetioState:!1})},n.inputOptions),this.localizationModel=(0,p.A)({localeProperty:BS.A},n.localizationOptions),this.audioModel.supportsExtraSound,this.addPhetioLinkedElementsForModel(n.tandem,this.simulationModel),this.addPhetioLinkedElementsForModel(n.tandem,this.visualModel,[{property:this.visualModel.colorProfileProperty}]),this.addPhetioLinkedElementsForModel(n.tandem,this.audioModel,[{property:this.audioModel.audioEnabledProperty,tandemName:"audioEnabledProperty"},{property:this.audioModel.soundEnabledProperty,tandemName:"soundEnabledProperty"},{property:this.audioModel.extraSoundEnabledProperty,tandemName:"extraSoundEnabledProperty"},{property:this.audioModel.voicingEnabledProperty,tandemName:"voicingEnabledProperty"},{property:this.audioModel.voicingMainWindowVoicingEnabledProperty,tandemName:"voicingMainWindowVoicingEnabledProperty"},{property:this.audioModel.voicingObjectResponsesEnabledProperty,tandemName:"voicingObjectResponsesEnabledProperty"},{property:this.audioModel.voicingContextResponsesEnabledProperty,tandemName:"voicingContextResponsesEnabledProperty"},{property:this.audioModel.voicingHintResponsesEnabledProperty,tandemName:"voicingHintResponsesEnabledProperty"},{property:this.audioModel.voicePitchProperty,tandemName:"voicePitchProperty"},{property:this.audioModel.voiceRateProperty,tandemName:"voiceRateProperty"}]),this.addPhetioLinkedElementsForModel(n.tandem,this.inputModel),this.addPhetioLinkedElementsForModel(n.tandem,this.localizationModel,[{property:this.localizationModel.localeProperty,tandemName:"localeProperty"}]),d){zn.enabledProperty.value=phet.chipper.queryParameters.voicingInitiallyEnabled;let e=!1;if(BS.A.link(t=>{const i=zn.voicingSupportedForLocale(t);zn.enabledProperty.value?(zn.enabledProperty.value=i,e=!0):e&&i&&(zn.enabledProperty.value=!0,e=!1)}),zn.enabledProperty.link(e=>{Tl.enabled=e,!e&&Tl.clear()}),phet.chipper.queryParameters.voicingInitiallyEnabled){const e=Ve.multilink([zn.voicesProperty,zn.isInitializedProperty],(t,i)=>{i&&t.length>0&&(zn.voiceProperty.value=zn.getEnglishPrioritizedVoices()[0],Ve.unmultilink(e))})}wn.objectResponsesEnabledProperty.value=!!phet.chipper.queryParameters.voicingAddObjectResponses,wn.contextResponsesEnabledProperty.value=!!phet.chipper.queryParameters.voicingAddContextResponses,wn.hintResponsesEnabledProperty.value=!!phet.chipper.queryParameters.voicingAddHintResponses}phet.chipper.queryParameters.printVoicingResponses&&zn.startSpeakingEmitter.addListener(e=>console.log(e)),this.registerPreferencesStorage()}};LI.PreferencesModelIO=new w.A("PreferencesModelIO",{valueType:LI,toStateObject:e=>({supportsProjectorMode:e.visualModel.supportsProjectorMode,supportsInteractiveHighlights:e.visualModel.supportsInteractiveHighlights,supportsVoicing:e.audioModel.supportsVoicing,supportsTier1Voicing:e.audioModel.supportsTier1Voicing,supportsSound:e.audioModel.supportsSound,supportsExtraSound:e.audioModel.supportsExtraSound,supportsGestureControl:e.inputModel.supportsGestureControl,supportsDynamicLocale:e.localizationModel.supportsDynamicLocale,supportsAudioPreferences:e.supportsAudioPreferences(),supportsInputPreferences:e.supportsInputPreferences(),supportsLocalizationPreferences:e.supportsLocalizationPreferences(),supportsSimulationPreferences:e.supportsSimulationPreferences(),supportsVisualPreferences:e.supportsVisualPreferences()}),stateSchema:{supportsProjectorMode:a.A,supportsInteractiveHighlights:a.A,supportsVoicing:a.A,supportsTier1Voicing:a.A,supportsSound:a.A,supportsExtraSound:a.A,supportsGestureControl:a.A,supportsDynamicLocale:a.A,supportsAudioPreferences:a.A,supportsInputPreferences:a.A,supportsLocalizationPreferences:a.A,supportsSimulationPreferences:a.A,supportsVisualPreferences:a.A}}),eh.A.register("PreferencesModel",LI);let RI=class e{static start(t){const i=new e;t.frameStartedEmitter.addListener(()=>i.frameStarted()),t.frameEndedEmitter.addListener(()=>i.frameEnded())}frameStarted(){this.frameStartTime=Date.now()}frameEnded(){if(this.allTimes.length>0&&this.allTimes.length%60==0){let e=0;for(let i=0;i0&&(this.longTimes.sort((e,t)=>t-e),t=t+" — "+this.longTimes),$("#phetProfiler").html(t);for(let i=0;i<30;i++)this.histogram[i]=0;this.longTimes.length=0,this.allTimes.length=0}if(this.previousFrameStartTime){const e=this.frameStartTime-this.previousFrameStartTime;this.allTimes.push(e),e<30?this.histogram[e]++:this.longTimes.push(e)}this.previousFrameStartTime=this.frameStartTime}constructor(){this.allTimes=[],this.histogram=[],this.longTimes=[],this.frameStartTime=0,this.previousFrameStartTime=0;for(let e=0;e<30;e++)this.histogram.push(0);$("body").append('
')}};eh.A.register("Profiler",RI);const NI=RI,qI=new Image,FI=Cl.A.createLock(qI);qI.onload=FI,qI.src="data:image/png;base64,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";const HI=qI;let YI=class e extends jw{dispose(){this.disposeOopsDialog(),super.dispose()}constructor(t,i){const n=(0,o.Ay)()({iconPosition:"right",topMargin:20,bottomMargin:20,phetioType:e.OopsDialogIO},i),s=new mf(t,(0,o.Ay)()({font:new Wc(20),maxWidth:600,maxHeight:400},n.richTextOptions)),r=n.iconNode||new Jh(HI,{maxHeight:132});super(new Nf({spacing:20,children:"left"===n.iconPosition?[r,s]:[s,r]}),n),this.disposeOopsDialog=()=>{s.dispose()},"string"!=typeof t&&this.addLinkedElement(t)}};YI.OopsDialogIO=new w.A("OopsDialogIO",{valueType:YI,supertype:jw.DialogIO}),va.register("OopsDialog",YI);let GI=class extends YI{constructor(e,t){const i=(0,o.Ay)()({richTextOptions:{font:new Wc(16)},title:new Rc(CV.A.queryParametersWarningDialog.invalidQueryParametersStringProperty,{font:new Wc(28)}),tandem:P.A.OPT_OUT},t);let n=CV.A.queryParametersWarningDialog.oneOrMoreQueryParametersStringProperty.value+"

";e.forEach(e=>{n+=`${e.key}=${e.value}
`}),n+="
"+CV.A.queryParametersWarningDialog.theSimulationWillStartStringProperty.value,super(n,i)}};eh.A.register("QueryParametersWarningDialog",GI);const UI=GI,zI="data:audio/mpeg;base64,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",WI=Il(Bl,zI),QI=Cl.A.createLock(zI),KI=new kl;let jI=!1;const ZI=()=>{jI||(QI(),jI=!0)},_I=Bl.decodeAudioData(WI.buffer,e=>{null===KI.audioBufferProperty.value&&(KI.audioBufferProperty.set(e),ZI())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),KI.audioBufferProperty.set(Bl.createBuffer(1,1,Bl.sampleRate)),ZI()});_I&&_I.then(e=>{null===KI.audioBufferProperty.value&&(KI.audioBufferProperty.set(e),ZI())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),ZI()});const XI=KI;let JI=class extends Rm{constructor(e,t,i){super(XI,i),e.lazyLink(e=>{e!==t&&this.play()})}};eh.A.register("ScreenSelectionSoundGenerator",JI);const $I=JI;function ex(e,t,i,n,s,r,o,a,l){1===e.length&&i&&t&&tx("homeScreen",t,"cannot specify homeScreen=true for single-screen sims");let h=[];if(!o||r&&0!==r.length||(tx("screens",r,'"?screens" query parameter must have screen values'),h=e),o&&r)for(let p=0;p=0&&i1&&t&&(d=l(h),c.unshift(d));let u=0===n?c[0]:e[n-1];return c.includes(u)||(tx("initialScreen",n,"invalid initial screen: "+n),u=c[0]),{homeScreen:d,initialScreen:u,selectedSimScreens:h,screens:c,allScreensCreated:_.isEqual(new Set(e),new Set(h))&&(!(e.length>1)||!!d)}}function tx(e,t,i){QueryStringMachine.addWarning(e,t,i)}eh.A.register("selectScreens",ex);const ix={INPUT:[...Gn.A.ARROW_KEYS,Gn.A.KEY_PAGE_UP,Gn.A.KEY_PAGE_DOWN,Gn.A.KEY_HOME,Gn.A.KEY_END,Gn.A.KEY_ENTER,Gn.A.KEY_SPACE],DIV:[...Gn.A.ARROW_KEYS,...Gn.A.WASD_KEYS],P:[Gn.A.KEY_ESCAPE],BUTTON:[Gn.A.KEY_ENTER,Gn.A.KEY_SPACE]},nx=Gn.A.ALL_KEYS;let sx=class{chooseNextElement(){if(null===this.currentElement)this.currentElement=document.activeElement;else if(this.random.nextDouble()<.1){this.clearListeners();const e=hn.A.getRandomFocusable(this.random);e&&(e.focus(),this.currentElement=e)}}clearListeners(){this.keyupListeners.forEach(e=>{we.A.clearTimeout(e.timeout),e()})}triggerClickEvent(){const e=document.activeElement;e instanceof HTMLElement&&e.click()}triggerKeyDownUpEvents(e){this.triggerDOMEvent("keydown",e);const t=this.random.nextInt(100),i=()=>{this.triggerDOMEvent("keyup",e),this.keyupListeners.includes(i)&&this.keyupListeners.splice(this.keyupListeners.indexOf(i),1)};i.timeout=we.A.setTimeout(i,100===t?2e3:t),this.keyupListeners.push(i)}triggerRandomKeyDownUpEvents(e){const t=nx[Math.floor(this.random.nextDouble()*(nx.length-1))];this.triggerKeyDownUpEvents(t)}fuzzBoardEvents(e){if(this.display&&this.display._input&&this.display._input.pdomPointer){const e=this.display._input.pdomPointer;e&&!e.blockTrustedEvents&&(e.blockTrustedEvents=!0)}for(let t=0;t({identifier:e.id,target:i,clientX:e.position.x,clientY:e.position.y}));if(void 0!==window.Touch&&void 0!==window.TouchEvent&&1===window.Touch.length&&1===window.TouchEvent.length){const t=n.map(e=>new window.Touch(e));return new window.TouchEvent(e,{cancelable:!0,bubbles:!0,touches:t,targetTouches:[],changedTouches:t,shiftKey:!1})}{const t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!0,!0,{touches:n,targetTouches:[],changedTouches:n}),t}}getRandomPosition(){return new De.A(Math.floor(this.random.nextDouble()*this.display.width),Math.floor(this.random.nextDouble()*this.display.height))}createTouch(e){const t={id:this.nextTouchID++,position:e};return this.touches.push(t),t}removeTouch(e){this.touches.splice(this.touches.indexOf(e),1)}touchStart(e){const t=this.createTouchEvent("touchstart",[e]);this.display._input.validatePointers(),this.display._input.touchStart(e.id,e.position,new ns(t))}touchMove(e){e.position=this.getRandomPosition();const t=this.createTouchEvent("touchmove",[e]);this.display._input.validatePointers(),this.display._input.touchMove(e.id,e.position,new ns(t))}touchEnd(e){const t=this.createTouchEvent("touchend",[e]);this.display._input.validatePointers(),this.display._input.touchEnd(e.id,e.position,new ns(t))}touchCancel(e){const t=this.createTouchEvent("touchcancel",[e]);this.display._input.validatePointers(),this.display._input.touchCancel(e.id,e.position,new ns(t))}mouseToggle(){const e=document.createEvent("MouseEvent");e.initMouseEvent(this.isMouseDown?"mouseup":"mousedown",!0,!0,window,1,this.mousePosition.x,this.mousePosition.y,this.mousePosition.x,this.mousePosition.y,!1,!1,!1,!1,0,null),this.display._input.validatePointers(),this.isMouseDown?(this.display._input.mouseUp(this.mousePosition,new ns(e)),this.isMouseDown=!1):(this.display._input.mouseDown(null,this.mousePosition,new ns(e)),this.isMouseDown=!0)}mouseMove(){this.mousePosition=this.getRandomPosition();const e=document.createEvent("MouseEvent");e.initMouseEvent("mousemove",!0,!0,window,0,this.mousePosition.x,this.mousePosition.y,this.mousePosition.x,this.mousePosition.y,!1,!1,!1,!1,0,null),this.display._input.validatePointers(),this.display._input.mouseMove(this.mousePosition,new ns(e))}constructor(e,t){this.display=e,this.touches=[],this.nextTouchID=1,this.isMouseDown=!1,this.mousePosition=new De.A(0,0),this.random=new Ge.A({seed:t}),this.mouseToggleAction=()=>{this.mouseToggle()},this.mouseMoveAction=()=>{this.mouseMove()},this.touchStartAction=()=>{const e=this.createTouch(this.getRandomPosition());this.touchStart(e)},this.touchMoveAction=()=>{const e=this.random.sample(this.touches);this.touchMove(e)},this.touchEndAction=()=>{const e=this.random.sample(this.touches);this.touchEnd(e),this.removeTouch(e)},this.touchCancelAction=()=>{const e=this.random.sample(this.touches);this.touchCancel(e),this.removeTouch(e)}}};ot.A.register("InputFuzzer",ox);const ax=ox;var lx=i(2232);let hx=class e{handleEvent(e){"ArrowLeft"===e.code?this.halveStrings():"ArrowRight"===e.code?this.doubleStrings():"ArrowUp"===e.code?this.setStride(this.stride+1):"ArrowDown"===e.code?this.setStride(this.stride-1):"Space"===e.code&&this.reset()}doubleStrings(){this.setStringFactor(Math.min(2*this.stringFactor,8))}halveStrings(){this.setStringFactor(Math.max(.5*this.stringFactor,.01))}setStringFactor(e){this.stringFactor=e,console.log("stringFactor = "+this.stringFactor),function(e){lx.A.forEach(t=>{if(t.restoreInitialValue("en"),1!==e){const i=t.property.value.replace(/[\u202A\u202B\u202C]/g,"");t.property.value=function(e,t){if(e>1)return function(e,t){let i=e;for(;t>1;)i+=e,t-=1;return i}(t,e);{const i=t.match(/{{(.+?)}}/g)||[],n=t.replace(/{{(.+?)}}/g,""),s=dE(n.length*e+1,0);return n.substring(0,s)+i.join("")}}(e,i)}})}(this.stringFactor)}setStride(t){const i=e.WORDS;t>i.length-1?t=0:t<0&&(t=i.length-1),this.stride=t,console.log("stride = "+this.stride),lx.A.forEach((e,t)=>{e.property.value=i[(t+this.stride)%i.length]})}reset(){this.setStride(0),this.setStringFactor(1)}constructor(){this.stringFactor=1,this.stride=0}};hx.WORDS="Sometimes when Hippopotomonstrosesquippedaliophobia want lyrics you turn to Shakespeare like the following text copied from some work To be or not to be that is the question Supercalifragilisticexpeladocious tis nobler in the mind to suffer The slings and arrows of antidisestablishmentarianism fortune Or to take Incomprehensibility against a sea of Floccinaucinihilipilification".split(" "),eh.A.register("DynamicStringTest",hx);let cx=class e extends XA{fuzzInputEvents(){const e=phet.chipper.queryParameters.fuzzTouch||phet.chipper.queryParameters.fuzz,t=phet.chipper.queryParameters.fuzzMouse||phet.chipper.queryParameters.fuzz;(t||e)&&this.inputFuzzer.fuzzEvents(phet.chipper.queryParameters.fuzzRate,t,e,phet.chipper.queryParameters.fuzzPointers),phet.chipper.queryParameters.fuzzBoard&&document.hasFocus()&&this.keyboardFuzzer.fuzzBoardEvents(phet.chipper.queryParameters.fuzzRate)}step(e){this.supportsPanAndZoomProperty.value&&al.listener.step(e)}getFocusablePlaceholder(){if(this.focusablePlaceholder)return this.focusablePlaceholder;if(this.isAccessible())return null;{this.focusablePlaceholder=document.createElement("div"),this.focusablePlaceholder.tabIndex=0;const e=document.createElement("span"),t="This is an interactive sim. It changes as you play with it.";return e.innerHTML=t,e.ariaLabel=t,e.setAttribute("style",vs.R),this.focusablePlaceholder.appendChild(e),document.body.appendChild(this.focusablePlaceholder),this.focusablePlaceholder}}constructor(t){const i=(0,o.Ay)()({rootRenderer:"svg",webgl:e.DEFAULT_WEBGL,allowBackingScaleAntialiasing:!0,allowSceneOverflow:!1,allowWebGL:phet.chipper.queryParameters.webgl,assumeFullWindow:!0,forceSVGRefresh:phet.chipper.queryParameters.forceSVGRefresh,accessibility:phet.chipper.queryParameters.supportsInteractiveDescription,preventMultitouch:phet.chipper.queryParameters.preventMultitouch,interruptMultitouch:phet.chipper.queryParameters.interruptMultitouch,tandem:P.A.REQUIRED},t);i.interactiveHighlightsEnabledProperty=i.preferencesModel.visualModel.interactiveHighlightsEnabledProperty,i.rootRenderer=phet.chipper.queryParameters.rootRenderer||i.rootRenderer,QueryStringMachine.containsKey("webgl")&&(i.webgl=phet.chipper.queryParameters.webgl),bo.setWebGLEnabled(i.webgl),phet.chipper.isFuzzEnabled()&&(window.open=function(){return{focus:_.noop,blur:_.noop}}),$("body").css("padding","0").css("margin","0").css("overflow","hidden"),document.getElementById("sim")&&document.getElementById("sim").parentNode===document.body&&document.body.removeChild(document.getElementById("sim")),document.onselectstart=function(){return!1},super(new Dr({renderer:i.rootRenderer}),i),this.simulationRoot=new Dr,this.focusablePlaceholder=null,this.simulationRoot=new Dr,this.rootNode.addChild(this.simulationRoot),We.A.chromium&&this.simulationRoot.transformEmitter.addListener(()=>{this.refreshSVGOnNextFrame()});const n=phet.chipper.queryParameters.randomSeed*Math.PI;if(this.inputFuzzer=new ax(this,n),this.keyboardFuzzer=new rx(this,n),this.supportsPanAndZoomProperty=new c(phet.chipper.queryParameters.supportsPanAndZoom,{tandem:i.tandem.createTandem("supportsPanAndZoomProperty"),phetioFeatured:!0}),this.domElement.id="sim",phet.chipper.queryParameters.supportsInteractiveDescription&&(this.pdomRootElement.lang="en"),phet.chipper.queryParameters.sceneryLog&&ot.A.enableLogging(phet.chipper.queryParameters.sceneryLog),phet.chipper.queryParameters.sceneryStringLog&&ot.A.switchLogToString(),"dynamic"===phet.chipper.queryParameters.stringTest){const e=new hx;window.addEventListener("keydown",t=>e.handleEvent(t))}this.initializeEvents({tandem:P.A.GENERAL_CONTROLLER.createTandem("input")}),window.phet.joist.rootNode=this.rootNode,window.phet.joist.display=this,this.setPointerDisplayVisible(phet.chipper.queryParameters.showPointers),this.setPointerAreaDisplayVisible(phet.chipper.queryParameters.showPointerAreas),this.setHitAreaDisplayVisible(phet.chipper.queryParameters.showHitAreas),this.setCanvasNodeBoundsVisible(phet.chipper.queryParameters.showCanvasNodeBounds),this.setFittedBlockBoundsVisible(phet.chipper.queryParameters.showFittedBlockBounds),al.initialize(this.simulationRoot,{tandem:i.tandem.createTandem("panZoomListener"),stepEmitter:null});const s=al.listener;this.supportsPanAndZoomProperty.link(e=>{e?this.addInputListener(s):this.hasInputListener(s)&&this.removeInputListener(s)}),window.addEventListener("pageshow",e=>{e.persisted&&window.location.reload()})}};cx.DEFAULT_WEBGL=!1,eh.A.register("SimDisplay",cx);var dx=i(1346);let ux=class e extends b.A{putInfo(e,t){void 0===t&&(t="{{undefined}}"),this.info[e]=t}constructor(t){let i,n,s;super({tandem:P.A.GENERAL_MODEL.createTandem("simInfo"),phetioType:e.SimInfoIO,phetioReadOnly:!0,phetioDocumentation:"A collection of data about the runtime and simulation. Available in the simStarted PhET-iO data stream event, as well as on demand in the PhET-iO state."}),this.info={},this.putInfo("url",window.location.href),this.putInfo("randomSeed",window.phet.chipper.queryParameters.randomSeed),this.putInfo("userAgent",window.navigator.userAgent),this.putInfo("language",window.navigator.language),this.putInfo("window",`${window.innerWidth}x${window.innerHeight}`),this.putInfo("referrer",document.referrer),this.putInfo("checkIE11StencilSupport",bo.checkIE11StencilSupport()),this.putInfo("isWebGLSupported",!!phet.chipper.queryParameters.webgl&&bo.isWebGLSupported);const r=[];window.navigator.pointerEnabled&&r.push("pointerEnabled"),window.navigator.msPointerEnabled&&r.push("msPointerEnabled"),window.navigator.onLine||r.push("offline");try{i=document.createElement("canvas"),n=i.getContext("2d"),s=bo.backingStorePixelRatio(n),this.putInfo("pixelRatio",`${window.devicePixelRatio||1}/${s}`),(window.devicePixelRatio||1)/s!=1&&r.push("pixelRatioScaling")}catch(o){}this.putInfo("flags",r.join(", ")),i=null,this.putInfo("simName",t.simNameProperty.value),this.putInfo("simVersion",t.version),this.putInfo("repoName",OT.name),this.putInfo("screens",t.screens.map(e=>{const i={name:e.nameProperty.value||t.simNameProperty.value};return P.A.PHET_IO_ENABLED&&(i.phetioID=e.tandem.phetioID),i})),P.A.PHET_IO_ENABLED&&(this.putInfo("screenPropertyValue",t.selectedScreenProperty.value.tandem.phetioID),this.putInfo("wrapperMetadata",phet.preloads.phetio.simStartedMetadata),this.putInfo("dataStreamVersion",phet.phetio.dataStream.VERSION),this.putInfo("phetioCommandProcessorProtocol",phet.phetio.phetioCommandProcessor.PHET_IO_PROTOCOL))}};ux.SimInfoIO=new w.A("SimInfoIO",{valueType:ux,toStateObject:e=>({simName:e.info.simName,screens:e.info.screens,repoName:e.info.repoName,screenPropertyValue:e.info.screenPropertyValue,dataStreamVersion:e.info.dataStreamVersion,phetioCommandProcessorProtocol:e.info.phetioCommandProcessorProtocol,simVersion:e.info.simVersion,wrapperMetadata:e.info.wrapperMetadata,randomSeed:e.info.randomSeed,url:e.info.url,userAgent:e.info.userAgent,window:e.info.window,referrer:e.info.referrer,language:e.info.language,pixelRatio:e.info.pixelRatio,isWebGLSupported:e.info.isWebGLSupported,checkIE11StencilSupport:e.info.checkIE11StencilSupport,flags:e.info.flags||null}),applyState:_.noop,stateSchema:{simName:B.A,screens:(0,V.A)(dx.A),repoName:B.A,screenPropertyValue:B.A,wrapperMetadata:(0,k.A)(dx.A),dataStreamVersion:B.A,phetioCommandProcessorProtocol:B.A,simVersion:(0,k.A)(B.A),randomSeed:(0,k.A)(M.A),url:(0,k.A)(B.A),userAgent:(0,k.A)(B.A),window:(0,k.A)(B.A),referrer:(0,k.A)(B.A),language:(0,k.A)(B.A),pixelRatio:(0,k.A)(B.A),isWebGLSupported:(0,k.A)(a.A),checkIE11StencilSupport:(0,k.A)(a.A),flags:(0,k.A)(B.A)},apiStateKeys:["screens","repoName","dataStreamVersion","phetioCommandProcessorProtocol"]}),eh.A.register("SimInfo",ux);const px=ux;let mx=class{start(){this.sim.isConstructionCompleteProperty.link(e=>{e&&window.parent!==window&&window.parent.postMessage({message:"init"},"*")})}constructor(e){this.sim=e,window.addEventListener("message",t=>{"pause"===t.data.messageName?(e.stepOneFrame(),e.activeProperty.value=!1):"resume"===t.data.messageName&&(e.activeProperty.value=!0)})}};eh.A.register("LegendsOfLearningSupport",mx);const gx=mx;let Ax=class{createOverviewContent(){const e=this.screenProperty.value.view;return e.getVoicingOverviewContent()}createDetailsContent(){const e=this.screenProperty.value.view;return e.getVoicingDetailsContent()}createHintContent(){this.screenProperty.value.view;return this.screenProperty.value.view.getVoicingHintContent()}constructor(e){this.screenProperty=e}};eh.A.register("VoicingToolbarAlertManager",Ax);const yx=Ax;let fx=class extends Ui{constructor(e){super(),this.rect(0,0,e,e)}};va.register("StopIconShape",fx);let bx=class extends XP{dispose(){this.disposeRoundToggleButton(),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({valueOffSoundPlayer:Wm.get("toggleOff"),valueOnSoundPlayer:Wm.get("toggleOn"),tandem:P.A.REQUIRED,phetioFeatured:!0,listenerOptions:{tandem:P.A.OPT_OUT}},n),r=new cP(t,i,e,s),a=new hP(r);super(r,a,s),this.addLinkedElement(e,{tandemName:"property"});const l=()=>{e.value===t?s.valueOffSoundPlayer.play():e.value===i&&s.valueOnSoundPlayer.play()};this.buttonModel.produceSoundEmitter.addListener(l),this.disposeRoundToggleButton=()=>{this.buttonModel.produceSoundEmitter.removeListener(l),r.dispose()}}};Vb.register("RoundToggleButton",bx);let Px=class extends bx{dispose(){this.disposeBooleanRoundToggleButton(),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({content:null,tandem:P.A.REQUIRED},n),r=new lP(e,t,i);s.content=r,super(e,!1,!0,s),this.disposeBooleanRoundToggleButton=function(){r.dispose()}}};Vb.register("BooleanRoundToggleButton",Px);const Vx=Px;let wx=class extends Ui{constructor(e,t){super(),this.moveTo(0,0),this.lineTo(e,t/2),this.lineTo(0,t),this.close()}};va.register("PlayIconShape",wx);let vx=class e extends Vx{dispose(){this.disposePlayStopButton(),super.dispose()}constructor(t,i,n){const s=(0,o.Ay)()({radius:_P.PLAY_CONTROL_BUTTON_RADIUS,scaleFactorWhenNotPlaying:1,includeGlobalHotkey:!1,startPlayingLabel:jc.a11y.playControlButton.playStringProperty,endPlayingLabel:null,valueOffSoundPlayer:Wm.get("pause"),valueOnSoundPlayer:Wm.get("play"),xMargin:0,yMargin:0},n),r=.8*s.radius,a=s.radius,l=new ga(new wx(r,a),{fill:"black",centerX:.05*s.radius,centerY:0}),h=new xh(s.radius,{children:[l]});i.centerX=0,i.centerY=0;const c=new xh(s.radius,{children:[i]});super(t,c,h,s);const d=(e,t)=>{this.innerContent=e?s.endPlayingLabel:s.startPlayingLabel;const i=null===t?1:1/s.scaleFactorWhenNotPlaying;this.scale(e?i:s.scaleFactorWhenNotPlaying)};t.link(d);let u=null;s.includeGlobalHotkey&&phet.chipper.queryParameters.supportsInteractiveDescription&&(u=td.createGlobal(this,{keyStringProperties:e.TOGGLE_PLAY_HOTKEY_DATA.keyStringProperties,fireOnDown:!1,fire:()=>{t.set(!t.get());const e=t.get()?s.valueOnSoundPlayer:s.valueOffSoundPlayer;e&&e.play()}})),this.disposePlayStopButton=()=>{t.hasListener(d)&&t.unlink(d),u&&u.dispose()}}};vx.TOGGLE_PLAY_HOTKEY_DATA=new Ia({keyStringProperties:[new h.A("alt+k")],keyboardHelpDialogLabelStringProperty:jc.keyboardHelpDialog.timingControls.pauseOrPlayActionStringProperty,repoName:va.name,global:!0}),va.register("PlayControlButton",vx);let Ex=class extends vx{constructor(e,t){const i=(0,o.Ay)()({radius:_P.PLAY_CONTROL_BUTTON_RADIUS,endPlayingLabel:jc.a11y.playControlButton.stopStringProperty},t),n=.75*i.radius;super(e,new ga(new fx(n),{fill:"black"}),i)}};va.register("PlayStopButton",Ex);const Sx=CV.A.a11y.toolbar.voicing.titleStringProperty,Tx=CV.A.a11y.toolbar.voicing.quickInfoStringProperty,Cx=CV.A.a11y.toolbar.voicing.simVoicingOnAlertStringProperty,Ix=CV.A.a11y.toolbar.voicing.simVoicingOffAlertStringProperty,xx=CV.A.a11y.toolbar.titleStringProperty,Dx=CV.A.a11y.toolbar.voicing.playOverviewLabelStringProperty,kx=CV.A.a11y.toolbar.voicing.playDetailsLabelStringProperty,Mx=CV.A.a11y.toolbar.voicing.playHintLabelStringProperty,Bx=CV.A.a11y.toolbar.voicing.overviewLabelStringProperty,Ox=CV.A.a11y.toolbar.voicing.detailsLabelStringProperty,Lx=CV.A.a11y.toolbar.voicing.hintLabelStringProperty;let Rx=class extends Dr{constructor(e,t,i){var n,s;const r=(0,o.Ay)()({isDisposable:!1,tagName:"section",labelTagName:"h2",labelContent:xx,visiblePropertyOptions:{phetioReadOnly:!0}},i);super(r);const a={font:new Wc(14),fill:t.navigationBarTextFillProperty,maxWidth:90},l=new Rc(Sx,a),h=new Av(Tx,a);h.focusHighlight=new hA(h,{innerStroke:"white"});const c=new zv(zn.mainWindowVoicingEnabledProperty,!1,!0,(0,o.sF)({accessibleName:Sx,rightValueContextResponse:Cx,leftValueContextResponse:Ix,tandem:null==(n=r.tandem)?void 0:n.createTandem("muteSpeechSwitch")},Gv.TOGGLE_SWITCH_OPTIONS)),d=new Qv({labelNode:l,controlNode:c,tandem:null==(s=r.tandem)?void 0:s.createTandem("muteSpeechControl")}),u=new fV,p=new fV,m=new Nx(Bx,Dx,u,p,t,e.createOverviewContent.bind(e)),g=new Nx(Ox,kx,u,p,t,e.createDetailsContent.bind(e)),A=new Nx(Lx,Mx,u,p,t,e.createHintContent.bind(e));this.children=[d,h,m.content,g.content,A.content],h.leftTop=d.leftBottom.plusXY(0,10),m.content.leftTop=h.leftBottom.plusXY(20,10),g.content.leftTop=m.content.leftBottom.plusXY(0,10),A.content.leftTop=g.content.leftBottom.plusXY(0,10);const y=[m,g,A],f=[m.playingProperty,g.playingProperty,A.playingProperty];y.forEach(e=>{e.playingProperty.link(t=>{e.playContent(f)})})}},Nx=class{playContent(e){if(this.playingProperty.value){_.without(e,this.playingProperty).forEach(e=>{e.value=!1}),this.objectResponseUtterance.priorityProperty.value=Tn.TOP_PRIORITY,this.playStopButton.voicingSpeakResponse({objectResponse:this.createAlert(),utterance:this.objectResponseUtterance})}else Tl.cancelUtterance(this.objectResponseUtterance)}constructor(e,t,i,n,s,r){this.lookAndFeel=s,this.objectResponseUtterance=new Tn,this.createAlert=r,this.playingProperty=new c(!1,{reentrant:!0}),this.playStopButton=new Ex(this.playingProperty,{startPlayingLabel:t,voicingNameResponse:t,voicingIgnoreVoicingManagerProperties:!0,radius:12,tandem:P.A.OPT_OUT});const o=new Rc(e,{font:new Wc(12),fill:this.lookAndFeel.navigationBarTextFillProperty,maxWidth:100}),a=i.createBox(o,{xAlign:"left"}),l=n.createBox(this.playStopButton,{xAlign:"right"});this.content=new Nf({children:[a,l],spacing:10}),zn.endSpeakingEmitter.addListener((e,t)=>{t===this.objectResponseUtterance&&(this.playingProperty.set(!1),XA.hasInputListener(d)&&XA.removeInputListener(d))});const h=e=>{e.trail.nodes.includes(this.playStopButton)||(XA.removeInputListener(d),this.objectResponseUtterance.priorityProperty.value=Tn.LOW_PRIORITY)},d={down:h,focus:h};zn.startSpeakingEmitter.addListener((e,t)=>{t===this.objectResponseUtterance&&XA.addInputListener(d)})}};eh.A.register("VoicingToolbarItem",Rx);const qx=Rx,Fx=CV.A.a11y.toolbar.openToolbarStringProperty,Hx=CV.A.a11y.toolbar.closeToolbarStringProperty,Yx=CV.A.a11y.toolbar.hideToolbarStringProperty,Gx=CV.A.a11y.toolbar.showToolbarStringProperty,Ux=CV.A.a11y.toolbar.toolbarShownStringProperty,zx=CV.A.a11y.toolbar.toolbarHiddenStringProperty;let Wx=class extends Dr{getDisplayedWidth(){return this.rightPositionProperty.value*this.layoutScale+this.openButton.width/2}getHiddenPosition(){return-this.contentMargin/2}updateDestinationPosition(){this.isShowingProperty.value?this.rightDestinationPosition=this.openProperty.value?this.contentWidth+2*this.contentMargin:this.contentMargin:this.rightDestinationPosition=this.getHiddenPosition()}step(e){const t=Math.abs(this.rightPositionProperty.value-this.rightDestinationPosition);if(0!==t){const i=Math.min(t,250*e),n=this.rightPositionProperty.value;this.rightPositionProperty.value=this.rightDestinationPosition>n?n+i:n-i}}layout(e,t){this.layoutScale=e,this.menuContent.setScaleMagnitude(e),this.openButton.setScaleMagnitude(e),this.backgroundRectangle.rectWidth=e*(this.contentWidth+2*this.contentMargin),this.backgroundRectangle.rectHeight=t,this.backgroundRectangle.right=this.rightPositionProperty.value*e,this.openButton.center=this.backgroundRectangle.rightCenter,this.menuContent.centerTop=this.backgroundRectangle.centerTop.plusXY(0,15)}constructor(e,t,i,n){var s;const r=(0,o.Ay)()({isDisposable:!1,tagName:"div",visiblePropertyOptions:{phetioReadOnly:!0}},n);super(r),this.layoutScale=1,this.isEnabledProperty=e,this.backgroundRectangle=new Va(0,0,0,0,{fill:i.navigationBarFillProperty}),this.openProperty=new c(!phet.chipper.queryParameters.voicingCollapseToolbar),this.isShowingProperty=de.and([this.isEnabledProperty,zn.enabledProperty,nh.audioEnabledProperty]);const a=new yx(t);this.menuContent=new qx(a,i,{tandem:null==(s=r.tandem)?void 0:s.createTandem("menuContent")});const l=new Qx;this.openButton=new $P({content:l,listener:()=>this.openProperty.toggle(),buttonAppearanceStrategy:Qb.FlatAppearanceStrategy,baseColor:"lightgrey",tandem:P.A.OPT_OUT}),this.contentWidth=this.menuContent.localBounds.width,this.contentMargin=this.openButton.localBounds.width,this.rightPositionProperty=new H(this.getHiddenPosition()),this.rightDestinationPosition=0;const h=new Dr({children:[this.backgroundRectangle,this.menuContent,this.openButton]});this.addChild(h);we.A.addListener(e=>{this.step(e)});this.openProperty.link((e,t)=>{if(l.matrix=e?Et.scaling(-1,1):Et.IDENTITY,this.menuContent.pdomVisible=e,this.openButton.accessibleName=e?Hx:Fx,this.openButton.voicingNameResponse=e?Yx:Gx,this.updateDestinationPosition(),null!==t){const t=e?Ux:zx;this.openButton.voicingSpeakContextResponse({contextResponse:t}),this.alertDescriptionUtterance(t)}});this.isShowingProperty.link(e=>{this.updateDestinationPosition(),h.pdomVisible=e})}},Qx=class extends ga{constructor(){const e=new Ui;for(let t=0;t<2;t++){const i=8*t;e.moveTo(i,0),e.lineTo(i+5,6),e.lineTo(i,12)}super(e,{stroke:"black",lineWidth:3.5,lineCap:"round"})}};eh.A.register("Toolbar",Wx);const Kx=Wx,jx=We.A.android||We.A.mobileSafari;phet.joist.elapsedTime=0,phet.joist.playbackModeEnabledProperty=new c(phet.chipper.queryParameters.playbackMode);let Zx=class extends b.A{updateViews(){this.resizeToWindow(),this.selectedScreenProperty.value.view.step&&this.selectedScreenProperty.value.view.step(0),this.display.descriptionUtteranceQueue.clear(),Tl.clear(),r.A.runOnNextTick(()=>phet.joist.display.updateDisplay())}finishInit(e){_.each(e,e=>{e.view.layerSplit=!0,this.detachInactiveScreenViews||this.display.simulationRoot.addChild(e.view)}),this.display.simulationRoot.addChild(this.navigationBar),this.preferencesModel.audioModel.supportsAnyVoicing&&(this.display.simulationRoot.addChild(this.toolbar),this.display.simulationRoot.pdomOrder=[this.toolbar],zn.voicingFullyEnabledProperty.link(e=>{this.setSimVoicingVisible(e)})),this.selectedScreenProperty.link(t=>{e.forEach(e=>{const i=e===t;i&&(e.activeProperty.set(i),this.detachInactiveScreenViews&&!this.display.simulationRoot.hasChild(e.view)&&this.display.simulationRoot.insertChild(0,e.view)),e.view.setVisible(i),i||(this.detachInactiveScreenViews&&this.display.simulationRoot.hasChild(e.view)&&this.display.simulationRoot.removeChild(e.view),e.activeProperty.set(i))}),this.updateBackground(),f.value||al.listener.resetTransform()}),this.display.simulationRoot.addChild(this.topLayer);const t=()=>{phet.joist.playbackModeEnabledProperty.value||(this.resizePending=!0)};if($(window).resize(t),window.addEventListener("resize",t),window.addEventListener("orientationchange",t),window.visualViewport&&window.visualViewport.addEventListener("resize",t),this.resizeToWindow(),lI.check(),QueryStringMachine.warnings.length){const e=new UI(QueryStringMachine.warnings,{closeButtonListener:()=>{e.hide(),e.dispose()}});e.show()}}showPopup(e,t){t&&(this.rootNode.interruptSubtreeInput(),this.modalNodeStack.push(e),this.setPDOMViewsVisible(!1),this.setNonModalVoicingVisible(!1)),e.layout&&e.layout(this.screenBoundsProperty.value),this.topLayer.addChild(e)}hidePopup(e,t){t&&(this.modalNodeStack.remove(e),0===this.modalNodeStack.length&&(this.setNonModalVoicingVisible(zn.voicingFullyEnabledProperty.value),this.setPDOMViewsVisible(!0))),this.topLayer.removeChild(e)}resizeToWindow(){this.resizePending=!1,this.resize(window.innerWidth,window.innerHeight)}resize(e,t){this.resizeAction.execute(e,t)}start(){const e=[];this.screens.forEach(t=>{e.push(()=>{t.backgroundColorProperty.hasListener(this.updateBackground)||t.backgroundColorProperty.link(this.updateBackground),t.initializeModel()}),e.push(()=>{t.initializeView(this.simNameProperty,this.displayedSimNameProperty,this.screens.length,this.homeScreen===t)})});const t=i=>{setTimeout(()=>{e[i]();const n=Ue(0,e.length-1,.25,1,i),s="phet-io"===phet.chipper.brand?"progressBarClipArea":"progressBarForeground";document.getElementById(s)&&document.getElementById(s).setAttribute("width",""+n*this.splashScreenProgressBarWidth),i+1{if(this.finishInit(this.screens),bo.polyfillRequestAnimationFrame(),phet.chipper.queryParameters.profiler&&NI.start(this),this._isConstructionCompleteProperty.value=!0,this.boundRunAnimationLoop(),phet.joist.playbackModeEnabledProperty.value){0,we.A.emit(0)}P.A.PHET_IO_ENABLED&&!phet.preloads.phetio.queryParameters.phetioStandalone||window.phetSplashScreen.dispose(),phet.chipper.brand,this.simStartedTime=Date.now(),phet.chipper.queryParameters.continuousTest&&phet.chipper.reportContinuousTestResult({type:"continuous-test-load"}),phet.chipper.queryParameters.postMessageOnLoad&&window.parent&&window.parent.postMessage(JSON.stringify({type:"load",url:window.location.href}),"*")},25)},30/e.length)};t(0)}runAnimationLoop(){window.requestAnimationFrame(this.boundRunAnimationLoop),this.activeProperty.value&&!phet.joist.playbackModeEnabledProperty.value&&(this.fuzzFrame(),this.stepOneFrame());const e=Date.now();r.A.emit(_x(this.lastAnimationFrameTime,e)),this.lastAnimationFrameTime=e,P.A.PHET_IO_ENABLED&&phet.phetio.phetioCommandProcessor.onAnimationLoop(this)}stepOneFrame(){const e=Date.now(),t=_x(this.lastStepTime,e);this.lastStepTime=e,t>0&&this.stepSimulation(t)}stepSimulation(e){this.stepSimulationAction.execute(e)}setPDOMViewsVisible(e){for(let t=0;t=2&&this.screens.forEach(e=>{if(!(e instanceof Sw)&&e.nameProperty instanceof ve.A){e.nameProperty.stringKey}})}fuzzFrame(){this.frameCounter>0&&this.display.fuzzInputEvents(),P.A.PHET_IO_ENABLED&&phet.phetio.phetioEngine.fuzzElements()}getAssertionDebugInfo(){var e,t;const i={seed:qe.A.getSeed(),currentScreenName:null==(t=this.selectedScreenProperty)||null==(e=t.value)?void 0:e.constructor.name,secondsSinceSimStarted:null===this.simStartedTime?"sim not started":(Date.now()-this.simStartedTime)/1e3};return this.topLayer.children.length>1&&(i.simTopLayer=this.topLayer.children.map(e=>`${e.constructor.name}${e.constructor.name.includes("Parent")?": "+e.children.map(e=>e.constructor.name):""}`)),i}constructor(e,t,i){const n=window.phetSplashScreenDownloadComplete(phet.chipper.brand);phet.chipper.queryParameters.launchCounter&&(e=function(e){let t=null,i=null;try{t=window.localStorage.getItem("phet.sim.launchCount")}catch(n){console.error("Error accessing localStorage:",n)}if(t){i=parseInt(t,10)+1}else i=1;try{window.localStorage.setItem("phet.sim.launchCount",se(i,0))}catch(n){console.error("Error accessing localStorage:",n)}return new g.A(e.value+" (Run "+i+")")}(e));const s=(0,o.Ay)()({credits:{},homeScreenWarningNode:null,preferencesModel:null,webgl:cx.DEFAULT_WEBGL,detachInactiveScreenViews:!1,phetioState:!1,phetioReadOnly:!0,tandem:P.A.ROOT},i);s.preferencesModel||(s.preferencesModel=new LI);const r={webgl:s.webgl,tandem:P.A.GENERAL_VIEW.createTandem("display"),preferencesModel:s.preferencesModel};super(s),this._isConstructionCompleteProperty=new h.A(!1),this.isConstructionCompleteProperty=this._isConstructionCompleteProperty,this.frameStartedEmitter=new v.A,this.frameEndedEmitter=new v.A({tandem:P.A.GENERAL_MODEL.createTandem("frameEndedEmitter"),phetioHighFrequency:!0,phetioDocumentation:"Indicates when a frame ends. Listen to this Emitter if you have an action that must be performed after the model and view step completes."}),this.activeProperty=new c(!0,{tandem:P.A.GENERAL_MODEL.createTandem("activeProperty"),phetioFeatured:!0,phetioDocumentation:"Determines whether the entire simulation is running and processing user input. Setting this property to false pauses the simulation, and prevents user interaction."}),this.scaleProperty=new H(1),this.boundsProperty=new h.A(null),this.screenBoundsProperty=new h.A(null),this.lookAndFeel=new Cw,this.memoryMonitor=new Mw,this.version=OT.version,this.frameCounter=0,this.resizePending=!0,this.locale=phet.chipper.locale||"en",this.toolbar=null,this.modalNodeStack=K(),this.barrierRectangle=new Ea(this.modalNodeStack),this.topLayer=new Dr({children:[this.barrierRectangle]}),this.lastStepTime=null,this.lastAnimationFrameTime=null,this.simStartedTime=null,this.credits=s.credits,this.detachInactiveScreenViews=s.detachInactiveScreenViews,this.simNameProperty=e,this.splashScreenProgressBarWidth=n,phet.joist.playbackModeEnabledProperty.lazyLink(()=>{throw new Error("playbackModeEnabledProperty cannot be changed after Sim construction has begun")});const a=new h.A(new Ne(0,0),{valueComparisonStrategy:"equalsFunction"});this.dimensionProperty=a,this.resizeAction=new $e.A((e,t)=>{if(a.value=new Ne(e,t),0===e||0===t)return;const i=Math.min(e/Vw.LAYOUT_BOUNDS.width,t/Vw.LAYOUT_BOUNDS.height),n=i*TI.NAVIGATION_BAR_SIZE.height;this.navigationBar.layout(i,e,n),this.navigationBar.y=t-n,this.display.setSize(new Ne(e,t));const s=t-this.navigationBar.height;this.toolbar&&this.toolbar.layout(i,s);const r=this.toolbar?this.toolbar.getDisplayedWidth():0,o=new Me(r,0,e,s);_.each(this.screens,e=>e.view.layout(o)),this.topLayer.children.forEach(e=>{e.layout&&e.layout(o)}),We.A.mobileSafari&&window.scrollTo(0,0),this.scaleProperty.value=i,this.boundsProperty.value=new Me(0,0,e,t),this.screenBoundsProperty.value=o.copy(),al.listener.setTargetScale(i),al.listener.setTargetBounds(this.boundsProperty.value),al.listener.setPanBounds(this.boundsProperty.value),gl.layoutScale=i},{tandem:P.A.GENERAL_MODEL.createTandem("resizeAction"),parameters:[{name:"width",phetioType:M.A},{name:"height",phetioType:M.A}],phetioPlayback:!0,phetioEventMetadata:{alwaysPlaybackableOverride:!0},phetioDocumentation:"Executes when the sim is resized. Values are the sim dimensions in CSS pixels."}),this.stepSimulationAction=new $e.A(e=>{this.frameStartedEmitter.emit(),this.frameCounter++,e*=phet.chipper.queryParameters.speed,this.resizePending&&this.resizeToWindow();const t=this.selectedScreenProperty.value;e=Math.min(e,t.maxDT),phet.joist.elapsedTime+=1e3*e,we.A.emit(e),t.model.step&&e&&t.model.step(e),window.TWEEN&&window.TWEEN.update(phet.joist.elapsedTime),this.display.step(e),t.view.step(e),P.A.PHET_IO_ENABLED&&!phet.phetio.phetioEngine.isReadyForDisplay||this.display.updateDisplay(),phet.chipper.queryParameters.memoryLimit&&this.memoryMonitor.measure(),this.frameEndedEmitter.emit()},{tandem:P.A.GENERAL_MODEL.createTandem("stepSimulationAction"),parameters:[{name:"dt",phetioType:M.A,phetioDocumentation:"The amount of time stepped in each call, in seconds."}],phetioHighFrequency:!0,phetioPlayback:!0,phetioDocumentation:"A function that steps time forward."});const l=P.A.GENERAL_MODEL.createTandem("screens"),d=ex(t,phet.chipper.queryParameters.homeScreen,QueryStringMachine.containsKey("homeScreen"),phet.chipper.queryParameters.initialScreen,QueryStringMachine.containsKey("initialScreen"),phet.chipper.queryParameters.screens,QueryStringMachine.containsKey("screens"),e=>{const i=e.map(e=>t.indexOf(e)+1),n=_.flatten(Le.combinationsOf(i).map(e=>Ye.permutationsOf(e))).filter(e=>e.length>0).sort();this.availableScreensProperty=new h.A(i,{tandem:l.createTandem("availableScreensProperty"),isValidValue:e=>_.some(n,t=>_.isEqual(e,t)),phetioFeatured:!0,phetioValueType:(0,V.A)(M.A),phetioDocumentation:"Controls which screens are available, and the order they are displayed."}),this.activeSimScreensProperty=new de([this.availableScreensProperty],e=>e.map(e=>t[e-1]))},e=>new Sw(this.simNameProperty,()=>this.selectedScreenProperty,e,this.activeSimScreensProperty,{tandem:s.tandem.createTandem($l.A.HOME_SCREEN_COMPONENT_NAME),warningNode:s.homeScreenWarningNode}));this.homeScreen=d.homeScreen,this.simScreens=d.selectedSimScreens,this.screens=d.screens,this.allScreensCreated=d.allScreensCreated,this.selectedScreenProperty=new h.A(d.initialScreen,{tandem:l.createTandem("selectedScreenProperty"),phetioFeatured:!0,phetioDocumentation:"Determines which screen is selected in the simulation",validValues:this.screens,phetioValueType:FV.ScreenIO}),this.activeSimScreensProperty.lazyLink(e=>{const t=this.selectedScreenProperty.value;t===this.homeScreen?1===e.length?this.selectedScreenProperty.value=e[0]:e.includes(this.homeScreen.model.selectedScreenProperty.value)||(this.homeScreen.model.selectedScreenProperty.value=e[0]):e.includes(t)||(this.selectedScreenProperty.value=e[0])}),this.displayedSimNameProperty=de.deriveAny([this.availableScreensProperty,this.simNameProperty,this.selectedScreenProperty,CV.A.simTitleWithScreenNamePatternStringProperty,..._.uniq(this.screens.map(e=>e.nameProperty))],()=>{const e=this.availableScreensProperty.value,i=this.simNameProperty.value,n=this.selectedScreenProperty.value,s=CV.A.simTitleWithScreenNamePatternStringProperty.value,r=n.nameProperty.value,o=1===e.length&&t.length>1;return o&&i&&r?Qe.A.fillIn(s,{simName:i,screenName:r}):o&&r?r:i},{tandem:P.A.GENERAL_MODEL.createTandem("displayedSimNameProperty"),tandemNameSuffix:"NameProperty",phetioDocumentation:"Customize this string by editing its dependencies.",phetioFeatured:!0,phetioValueType:B.A});const u=new c(!0,{tandem:P.A.GENERAL_MODEL.createTandem("browserTabVisibleProperty"),phetioDocumentation:"Indicates whether the browser tab containing the simulation is currently visible",phetioReadOnly:!0,phetioFeatured:!0});this.browserTabVisibleProperty=u,document.addEventListener("visibilitychange",()=>{u.set("visible"===document.visibilityState)},!1),this.supportsGestureDescription=phet.chipper.queryParameters.supportsInteractiveDescription&&jx,this.hasKeyboardHelpContent=_.some(this.simScreens,e=>!!e.createKeyboardHelpNode),window.phet.joist.sim=this,this.preferencesModel=s.preferencesModel,nh.initialize(this),this.preferencesModel.audioModel.supportsSound&&Jl.addSoundGenerator(new $I(this.selectedScreenProperty,this.homeScreen,{initialOutputLevel:.5}),{categoryName:"user-interface"}),window.phet.joist.ScreenshotGenerator=yI,this.simNameProperty.link(e=>{document.title=e}),this.preferencesModel.audioModel.supportsAnyVoicing&&(this.toolbar=new Kx(this.preferencesModel.audioModel.toolbarEnabledProperty,this.selectedScreenProperty,this.lookAndFeel),this.toolbar.rightPositionProperty.lazyLink(()=>{this.resize(this.boundsProperty.value.width,this.boundsProperty.value.height)})),this.display=new cx(r),this.rootNode=this.display.rootNode,VP.initialize(this,this.display),this.activeProperty.lazyLink(e=>{e&&(this.lastStepTime=null,this.lastAnimationFrameTime=null)}),Ve.multilink([this.activeProperty,phet.joist.playbackModeEnabledProperty],(e,t)=>{t?(this.display.interactive=!0,Yn.A.enabled=!0):(this.display.interactive=e,Yn.A.enabled=e)}),document.body.appendChild(this.display.domElement),ah.start(this),this.navigationBar=new TI(this,P.A.GENERAL_VIEW.createTandem("navigationBar")),this.updateBackground=()=>{this.lookAndFeel.backgroundColorProperty.value=jr.toColor(this.selectedScreenProperty.value.backgroundColorProperty.value)},this.lookAndFeel.backgroundColorProperty.link(e=>{this.display.backgroundColor=e}),this.selectedScreenProperty.link(()=>this.updateBackground()),this.selectedScreenProperty.lazyLink((e,t)=>t.view.interruptSubtreeInput()),this.simInfo=new px(this),P.A.PHET_IO_ENABLED&&phet.phetio.phetioEngine.onSimConstructionStarted(this.simInfo,this.isConstructionCompleteProperty,this.frameEndedEmitter,this.display),f.lazyLink(e=>{e||this.updateViews()}),this.boundRunAnimationLoop=this.runAnimationLoop.bind(this),phet.chipper.queryParameters.legendsOfLearning&&new gx(this).start()}};function _x(e,t){return null===e?1/60:(t-e)/1e3}eh.A.register("Sim",Zx);let Xx=class extends Zx{constructor(e,t,i){super(e,t,i);const n=this.display.getFocusablePlaceholder();(0,ze.Ay)(n),this.display.addInputListener({down:()=>{document.activeElement===document.body&&n.focus()}})}};t.register("CCKCSim",Xx);let Jx=class extends Cb{constructor(e,t,i){super(e,t,(0,o.Ay)()({orientation:"vertical",align:"left"},i))}};Vb.register("VerticalAquaRadioButtonGroup",Jx);const $x=(0,Qc.A)("CIRCUIT_CONSTRUCTION_KIT_COMMON");t.register("CircuitConstructionKitCommonStrings",$x);const eD=$x;let tD=class extends Se.A{};tD.MAGNITUDE=new tD,tD.SIGNED=new tD,tD.enumeration=new Ee.A(tD),t.register("AmmeterReadoutType",tD);const iD=new lh("magnitude"===s.ammeterReadout?tD.MAGNITUDE:tD.SIGNED,{tandem:P.A.PREFERENCES.createTandem("ammeterReadoutTypeProperty"),phetioFeatured:!0});t.register("ammeterReadoutTypeProperty",iD);const nD=iD;let sD=class extends Se.A{};sD.IEC=new sD,sD.IEEE=new sD,sD.BRITISH=new sD,sD.enumeration=new Ee.A(sD),t.register("SchematicType",sD);const rD=new lh("ieee"===s.schematicStandard?sD.IEEE:"iec"===s.schematicStandard?sD.IEC:sD.BRITISH,{tandem:P.A.PREFERENCES.createTandem("schematicTypeProperty"),phetioFeatured:!0});t.register("schematicTypeProperty",rD);const oD=rD;let aD=class extends Ff{constructor(e){const t=e.createTandem("schematicStandardPreferencesControl"),i=e.createTandem("ammeterReadoutPreferencesControl"),n=Gv.PANEL_SECTION_CONTENT_OPTIONS,s=new Jx(oD,[{createNode:()=>new Rc(eD.ieeeStringProperty,n),value:sD.IEEE,tandemName:"ieeeRadioButton"},{createNode:()=>new Rc(eD.iecStringProperty,n),value:sD.IEC,tandemName:"iecRadioButton"},{createNode:()=>new Rc(eD.britishStringProperty,n),value:sD.BRITISH,tandemName:"britishRadioButton"}],{tandem:t.createTandem("radioButtonGroup"),phetioVisiblePropertyInstrumented:!1,radioButtonOptions:{radius:8}}),r=new Jx(nD,[{createNode:()=>new Rc(eD.magnitudeStringProperty,n),value:tD.MAGNITUDE,tandemName:"magnitudeRadioButton"},{createNode:()=>new Rc(eD.signedStringProperty,n),value:tD.SIGNED,tandemName:"signedRadioButton"}],{tandem:i.createTandem("radioButtonGroup"),phetioVisiblePropertyInstrumented:!1,radioButtonOptions:{radius:8}});super({align:"left",spacing:Gv.CONTENT_SPACING,tandem:e,children:[new Ff({align:"left",spacing:Gv.CONTENT_SPACING,children:[new Rc(eD.schematicStandardStringProperty,Gv.PANEL_SECTION_LABEL_OPTIONS),s],tandem:t,visiblePropertyOptions:{phetioFeatured:!0}}),new Rf,new Ff({align:"left",spacing:Gv.CONTENT_SPACING,children:[new Rc(eD.ammeterReadoutStringProperty,Gv.PANEL_SECTION_LABEL_OPTIONS),r],tandem:i,visiblePropertyOptions:{phetioFeatured:!0}})]})}};t.register("CCKCSimulationPreferencesContentNode",aD);let lD=null;const hD=Cl.A.createLock({name:"brand"}),cD=new URLSearchParams(window.location.search).has("esbuild");if(i(876)(`./${phet.chipper.brand}/js/Brand.${cD?"ts":"js"}`).then(e=>hD()).catch(e=>!1),P.A.PHET_IO_ENABLED){const e=Cl.A.createLock({name:"phetioEngine"});Promise.resolve().then((function(){var e=new Error("Cannot find module '../../phet-io/js/phetioEngine.js'");throw e.code="MODULE_NOT_FOUND",e})).then(t=>{lD=t.default,e()}).catch(e=>!1)}const dD=Cl.A.createLock({name:"launch"});const uD=new class{launch(e){Cl.A.addListener(()=>{window.phet.joist.launchSimulation=()=>{this.launchComplete=!0,P.A.PHET_IO_ENABLED&&(null==lD||lD.onCrossFrameListenersReady()),e()},P.A.PHET_IO_ENABLED&&(null==lD||lD.initialize()),phet.chipper.queryParameters.postMessageOnReady&&window.parent&&window.parent.postMessage(JSON.stringify({type:"ready",url:window.location.href}),"*"),P.A.PHET_IO_ENABLED&&!phet.preloads.phetio.queryParameters.phetioStandalone||phet.chipper.queryParameters.playbackMode||window.phet.joist.launchSimulation()}),dD(),window.phet.joist.launchCalled=!0}constructor(){this.launchComplete=!1}};eh.A.register("simLauncher",uD);const pD=uD,mD=new e.A("circuitConstructionKitDc"),gD=(0,Qc.A)("CIRCUIT_CONSTRUCTION_KIT_DC");mD.register("CircuitConstructionKitDcStrings",gD);const AD=gD,yD={PAUSED_DT:1e-6,ZOOM_SCALES:[.5,1,1.6],RETURN_ITEM_HIT_BOX_RATIO:.2,TOOLBOX_ICON_HEIGHT:31,TOOLBOX_ICON_WIDTH:60,METER_PRECISION:2,DEFAULT_RESISTANCE:10,DEFAULT_CAPACITANCE:.1,DEFAULT_BATTERY_RESISTANCE:s.batteryMinimumResistance,BATTERY_RESISTANCE_RANGE:new D(s.batteryMinimumResistance,10),RIGHT_SIDE_PANEL_MIN_WIDTH:190,VERTICAL_MARGIN:5,HORIZONTAL_MARGIN:10,TAP_THRESHOLD:15,SLIDER_TRACK_SIZE:new Ne(160,5),FONT_AWESOME_ICON_SCALE:.07,HIGHLIGHT_LINE_WIDTH:5,WIRE_RESISTIVITY_RANGE:new D(s.wireResistivity,.0168),WIRE_CROSS_SECTIONAL_AREA:5e-4,MINIMUM_WIRE_RESISTANCE:1e-14,MINIMUM_RESISTANCE:1.1e-10,DRAG_BOUNDS_EROSION:20,CHARGE_SEPARATION:28,BATTERY_LENGTH:102,AC_VOLTAGE_LENGTH:68,SWITCH_LENGTH:112,SWITCH_START:1/3,SWITCH_END:2/3,RESISTOR_LENGTH:110,FUSE_LENGTH:110,WIRE_LENGTH:100,CAPACITOR_LENGTH:110,INDUCTOR_LENGTH:110,COIN_LENGTH:85,ERASER_LENGTH:90,PENCIL_LENGTH:130,HAND_LENGTH:140,DOG_LENGTH:170,DOLLAR_BILL_LENGTH:140,PAPER_CLIP_LENGTH:75,SERIES_AMMETER_LENGTH:121,CORNER_RADIUS:6,SCHEMATIC_LINE_WIDTH:4,MAX_RESISTANCE:1e9,BULB_SCALE:2.52,HIGH_EDITOR_DELTA:100,HIGH_RESISTANCE:1e3,HIGH_RESISTANCE_RANGE:new D(100,1e4),PANEL_LINE_WIDTH:1.3,THUMB_SIZE:new Ne(13,24),MAJOR_TICK_LENGTH:18,MINOR_TICK_LENGTH:12,FONT_SIZE:14,DEFAULT_FONT:new Wc(14),NUMBER_OF_WIRES:50,NUMBER_OF_TIME_DIVISIONS:4,CHART_SERIES_COLOR:"#404041",DC_CAROUSEL_SCALE:1.2,AC_CAROUSEL_SCALE:.85,MAX_DT:.5};t.register("CCKCConstants",yD);const fD=yD;let bD=class extends h.A{constructor(e,t){super(e,(0,o.Ay)()({valueType:jr,phetioValueType:jr.ColorIO},t))}};ot.A.register("ColorProperty",bD);const PD=[];let VD=class extends bD{dispose(){(0,d.A)(PD,this),super.dispose()}constructor(e,t,i,n){const s=(0,o.Ay)()({valueComparisonStrategy:"equalsFunction",tandemNameSuffix:["ColorProperty","FillProperty","StrokeProperty"]},n);i=_.mapValues(i,e=>jr.toColor(e).setImmutable()),super(jr.toColor(i[DI.value]||i[Vf.DEFAULT_COLOR_PROFILE]),s),this.colorProfileMap=i,DI.link(e=>{this.value=jr.toColor(this.colorProfileMap[e]||this.colorProfileMap[Vf.DEFAULT_COLOR_PROFILE])}),this.name=`${e.name}.${t}`,this.link(e=>{window.parent!==window&&window.parent.postMessage(JSON.stringify({type:"reportColor",name:this.name,value:e.toHexString(),alpha:e.getAlpha()}),"*")}),PD.push(this)}};window.addEventListener("message",e=>{let t;try{t=JSON.parse(e.data)}catch(i){}if(t&&"setColor"===t.type)for(let n=0;n3&&void 0!==arguments[3])||arguments[3];this.width=e,this.height=t,this.url=i,this.img=new Image,this.img.src=this.url,this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height;const s=this.canvas.getContext("2d"),r=n?Cl.A.createLock(this.img):null;this.img.onload=()=>{s.drawImage(this.img,0,0),r&&r()}}};SD.A.register("MipmapElement",TD);const CD=[new TD(194,315,"data:image/png;base64,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"),new TD(97,158,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAACeCAYAAAAiwmRvAAAAAklEQVR4AewaftIAABMpSURBVO3BCXzdBZ0g8O/v938veUlboLQcqcpRELFZlaFyDDi6CjoD46KO1PtA1guJ4oEoIkGjFVHBK3QGFRfUjwceq44DIiDj0NaL6lhJrYoFy1EOpQdp+9ImedtYXGqblhbykteS7zc0rgqehaMwEy2YiFbsbqM9MQGrcZ+NVqIXa7AWC/BT/BBVDSg0jja8EM/HXjgEd+FOrMEfsBjL8Bsb9WIJpmOijZ6INhyKg9CKadgXN+NuXIMvYJkGEMbWDJyOI3EolmAJrsOVWGLkTMdxOBH7YQZuQg8+gkXGSBgbHXgZnoRF+BEuwyKjpw1vw9PwJCzClbgAVaMojJ4KZuN5aMIP8REsMvam4x14DlpxFd6J5UZBGB0XYhb68CW8X+N6E16FJ+IbOBPL1VGorzfibUh8Ce+383gRzsY0XI6z1Emoj+mYgyNxGd6Dqp3T23EGVuFsfM8ICyPvrTgbC3EGFtn5VfAZnIQr8HojKIycCj6HE3ExzrXrmYULsAKvwCIjIIyM6fgmJuHVmGfXNRmX4yici894hAqP3HPxDdyKp+MWu7YqvoI9cRYm4XqPQOGRmYXP4t/xYvR79LgOfXg7DsCVHqbCwzcLn8JXcbpHp5/iVpyFA3Clh6Hw8MzCHHwGZ3l0W4RbcRYOwJV2UGHHHYsv4gqcadyQRbgVZ2EKrrUDCjumDf+B6/Fa4za1CHehE1X8xHYq7JirsRwnGTechQicjUX4ne1Q2H6fw5NxInqN25q5OBSn4Quoeghp+7weJ+MtWGbcQzkVK/AF26Hw0Cbjy/giLjZue92A96HADbah8NC+gDJeZNyOuBe74Y34MnptRdq2WXgO3mPcw3EObsUnbUPatnPwLVxr3MN1Jk7A8bYibd17sSfeYdwjMQ/fwwdtRdq6V+PrWG7cI3UODsGLDCMN7zw04xzjRsISXIW3G0Ya3kvwdVSNGynn4ol4ts2kLb0MU3GOcSNpCX6EM20mbek0/ABV40baR3AsJttE+lszcBguMq4e5uI3ONsm0t86Hb/GAuPqZT6eaRPpbx2LucbV04dxKGZ4QHpQO56AjxtXT8vQg1M8ID3oTfgllhlXb4txlAekBz0FvzRuNPwfPNED0oOehMuMGw0/stEzbJA2OhGr8HPjRstinGyDtNHJuNm40bQMT7RB2mh/3GLcaPpP7GmDtNE0fM+40XQt9rdB2ugA/Ni40fR7NGN6CU/FKiwzinq63txO7cU4hpigVttHmIC91VlQrXEH7sBNuLC9s3uJ0XcHDg2chlNxhFHQ0/XmNwWn1NSO0CCCKq6rcVZ7Z/cio+fH+FqBV2EPXK6Oero62k5/5pFX4Aw8RmMp4RC88vRnHjlpzvU/+6HR8XKsThyKfnXU09UxHTfgBI1tN7ynp6vjS0ZHPw5NFFiiTnq6Oir4Dg6y83h5T1fH542OphICvernM/gfhtePBcGymlhA7Y/4DdaprwPwzzgcTzW81/R0dfy+vbP7fHVWUkc9XR0z8C+GEVxd45z2zu4FRt9CfNcGPV0db8B7sJ8tvbWnq+Nr7Z3dS9RRqq+zMMFmgs/O6Oz+p/bO7gXGWHtn9yU4GottaW/MVmepjoIZttQzo7P79RpIe2f3MjwLd9lM8I89XR2T1VGqo5rY15au0IDaO7uX4aM2U2MyTlVHiUHsqQ5CbS+bCeZpUO2d3RfhDzYTnKA+ErcnBvFYdVAT99rSVA0sxK9tpiYmqY8C9yUWo6QuamttIU7SwGpqP7GlNvUxEb9K/AYT1EGIu2yhdkJPV8dMjetOo2cKliR+jjZ1UGOezdSYjC/1dHVUjGvDksSN2AttRlytC0tt6VBc19PVUfHo9USswrK00a04wghr7+yu4kPot6VjcLVHr/+JpTZIG92J56uD9s7uS3Cp4T19UVfHNz06PQ0rbZA2uhkHqpP2zu43hrjSMGr8S09Xx3U9XR0Vjy7TsNQGaaPv4AB1VFN7IeYb3rNwtUeXafi2DdJGV2JPHKFO2ju7qzgO8w3v6T1dHT/q6eqo2PW1YT/cYIP0oF/jpeqovbO7iuMw3/Cejut6ujoqdm0vxO+w3AbpQb/CTHXW3tldxXGYb3jH4Lqero6KXdcJuN0D0oM+j5moqLP2zu4qjsN8wzuGmN/T1dFm1/RYXOUB6UEL8EecYhS0d3ZXcRzmG1bt7/DDnq6ONruW6ZiOb3pA+ls9eLFR0t7ZXcVxmG94h2JuT1fHTLuOU7AYyzwg/a1P4XBMNkraO7ur7Z3dxwbfMrzpwbd7ujpm2jU8Az02kf7WXNyCtxllMzq7Xxh8yzBqPDbEd3u6OmbZuVVwGC62ibSlefhHY2BGZ/cLg88aRk1tGub0dHXMsvM6Bcvwc5tIW/ognoCZxsCMzu7XB3MMbyrm9HR1zLJzegkW2kza0jL8FJ3GyIzO7tMxG/22NBVzero6Ztm5TMZTcYHNpOFdimMw2Rhp7+x+Lz6MfluaGuITPV0dM+08zsbvsMBm0vCuwFK8zxhq7+w+F51YbTM1tWn4Wk9Xx2Q7h+Nxg2GkrbsCLzDG2ju7z8c5WG1LB+FrGt+zcRDeZxhp6y5AH84zxto7uz9JXIR+W3p2T1fHbI3tDNyA5YaRtu3reIUG0N756U5cYhjBaT1dHdM1pjb8Az5hK9K2daEZ52kA7Z3dHbjGZmpMxmyN6QNYjGttRdq2Ki7FqahoDK/GUls6XuOp4ARcbhvSQ3s/1mG2BtDe2b2MuMCWpvZ0vflEjWU27sMc25C2z8fxKrRpAO2dn56DP9pC7SSNo4JZ+IaHkLbPHPwRH9c4brWl6RrHbPTh/R5C2n7vxj/heI2h32aC1Bgm42X4V9shbb9r8X18VGMYtJkaqTF8DPfgItsh7ZjTsC9mG7c1M3AyZttOaccsx6dxGqYbN5yLsABX2E5px30IC3CJcZt7FY7AO+2A9PC8AU/GbOP+qoJz8A0ssAPSw7MEn8BpONa4IZ9CDWfYQenhOx8/Qrdxz8VLMRtVOyg9Mqdid3zOo1cFH8N38EUPQ3pkluMtOBlv9ej0eRu91sOUHrnv4dM4B8d6dDkDJ6IDVQ9TGhnn4mp8AW0eHWbivbgY13oE0sh5LVbiq3Z9FVyGH+Mcj1AaOVX8M/bDV+zavmmjFxkBaWQtw8k4HhfbNX0ah+MUVI2ANPIW4E14CT5g1/IBvBJvwQIjpKQ+vo5peL+NzrXzOwOn4Tx83QgKdfCdjoP+b4hnrh/U1D+g0tJc3J8RtYggUgQRiRARRMoIESEiRYaIkJEiQ2bKImUWiiIVRSpKzc3lUrlSKpWVyyXlprKm5vK6lkrT2kpLiyzStqzrW2fVqlV677/fmjVrVdf06Vu3zkD/YFFTTKzVBtUGa2q1QbXBwcHetatl1NaXC9W+csv3XnDBz19hhJTUwcSBP0zA7oYk1tvNQwgPiBCCQCQZRKplqmWhVhRqRaFWlAyWywZLTWpNzTQ3i0pLk77Wplg/UVEq2ZasrmXFn9VWLjfYu8rA2tUGqlUDA/02FQhyN3/RjObBOHgvIyiNG3Np3JhL48ZcGjfm0rgxl8aNudRA1tWaLF71d7bH0vunWdtfsj1+srTQyFIDmXvv0d5986FW9e9hW/pr4cKeg11328EeytxbSk78WsU9vaFRpQZx3/p9feyO/awaLLnqjqNtyzW3Pcl/rWrVtbjN7fdPtjWr+jj9P5otXx8+8Z/NGlVqENcum6k6mIb8271T3bZmhuH8uW93s//wWEPWDqbPLzrQ1nzlxmYLV4Uh5y8s+cVthUaUGsDSNTNccu8Um/rKHw8xnKtufbLqYPqrr9w1wS/u3sfm7liZ3nJD2abe/YNmjSiNgd/2Tvfb3ul+2zvdb3un++pth6rZ6IiWNYZc1TvRwuVPtakl9x+oe9mehhwxoSqjZsgHFkzTN5A2NeeGJusG/cWRkwcNuebu9O83lTWakjHwpt8+zXBeNnm5E9qWeOWimYacf8uBvjj5V5qLQUMuX/J4NRud2b7Egnv38ZFbpli4uuyaJW1e+KT7DPnVHSUfWlgy5KX7D7jopKqD57RaPRDecHWTY6b3m5j+Yt7SA61dy7q+QevXMzhIZNXhU+YaLalBFFHzvMfc5DGti5y2958MWdZf9oM7jzXk5/ce5ppVEw15zT4rHLLHUs896Ld2LwYMeeeNU/xpbdmQzmtbDAl0Hr/OvpNq/u249YYs6wtfvrHJkHm3TXHKz/d12k37OuP305x56zRnLZ3mX5ftYzSVjIE5T5hrc+Vkr+ZbEI5v+4VL7z3eulr62B1tnjLlMT665ABDylEz66DFhkxuXmv2k+7S8d+P0TsQvrFwb4fs0+/KuwtDLjii36H7DBhy8mHrnD+/bFFveOu8sqP3K3vPvEkaQckYeMLEJTYXHrRn+R7vetxtPrB0f4O18Ppf/73Vg4Uh79j/Lnu3/AklQ47bf4mn3TLV3JXNzvv1BFMW1wxpyZpXHt3nryolPvu/+hz7lYrBGs+5Yncr+sOQdx94t+c9bp6+atXAQL/RlhrUM/aZ7+CmPkNWDxaGTCuvd8LjfmFz7zr8DkNq+NP6MOTzz1lv30k1mzrmwH5vfPyAISv6w5C9SgNOPPA3xlJqUIUBbztgiU29++BbVYp+m5sx9U9OP2C1v3rKbjXPf/I6wznzmX0i/H8ffMoyu5X7jKXUwNr3+KVZk1cacvxuvZ469de25lVPudNuRc2QS567VqVkWAdNHfTJY9cb8vy9+zzrgNuMtdTgXjl9vqml9V538H/blmmT1vjoUfd5V3ufmY9dZ1tedVSfGRMHnfn3d2kEJQ1u9/IKn2if5zEt96KwLScecp/1uQ4ttmX3Zr7zkhUmDa51/0pjLu0E9m+92/ZoLtVMbR2wPR6324BGkcaNuTRuzKVxYy6NG3Np3JhL48ZcSR3ceJvNhI0CiRASSRRIEQVRiCiJKIksiSzJokkWZUWprCg1KZWblZqalZuaNdUqmqKiWYtKtmoptWptatVamaAoCltVq1m9vteKWG6lle4fWGnNul5r1662vrrawPq1BgfWGhyoqg1Wqa2jtl7NegxY17K2ZgSV1MGH503+6fLly5/tARFEhIiQGTJTURSKolAUhVKppFQqKZVKyuWycrmsqalJU1OT5uZmzc3NKpWKSqWipaVFS0uLlpYWrdFqQnmCCSaYWEw0sTzRxOaJJlUmKYrC1gwODlpZXenP+Wf3uc/yweVWrFth5ZqVVq1a5f7779fbW9bbm9asoVqlWh20bt2AgYFabdKk1ZcaQakOli9ffu7uu+++2C6oXC7/cMWKFV83glKdTJo06TK7mIgY3GOPPc4ywlKd3H777RdMmTLll3YhlUrlqrvuuusXRliqo7322mtORNTsAjJzfbVa/d/qINXR4sWLPzdp0qQb7QIqlcp3+/r67lYHqc5mzpx5dlEUNTuxoihW33PPPSerk1Rn119//XVTpkz5Lzux5ubm76ijNAoOO+yw1zU1NQ3YCRVF8aelS5e+XB2lUXD11Vf/vrW19Ro7oXK5/G11lkbJtGnT3jBhwoSqnUhm3nbzzTe/Tp2lUXLTTTctrVQq37cTaWpq+ppRkEbRPffc84LW1tZeO4HMXLpw4cJ3GgVplE2aNOnbdgLNzc2XGiVplN1+++2vrFQq92lgRVH8ft68eV1GSRoDe+6555c1sObm5s8aRWkM3HLLLW9ubW29QwMqiuKm73//+x81itIYaWpq+pLGU2tpafmcUVYyRu688853X3jhhS+dMmXKfhEhM2WmzJSZMlNmKopCZsqiUGTKolAqClkUSkWhKApFUShKJaWiUJRKSqWSzBQRIkJGiAgRITIFBms1AwMDaoODBgYH1Wo1K1eu/NnRRx31SaOsZAwdfvjhcyLiQxGRG4hMGSEiZKaIkJkiQmaKCJEpI0SmjBCZMkJkygiRKSNEpowQmTJCZMoIkSkiZKaIkJkiQkT0trW1nWMMFMbQ5ZdfPu81r3lNGUdGRCkiRISIEBEiQkSICBEhIkSEiBARIkJEiAgRISJEhIgQESJCRIgIESEiRISIEBEiQkTY4J5arXbe5D32+KoxUBhjl1122fWnnnrq7yLiyIjYIyJEhIgQESJCRIgIESEiRISIEBEiQkSICBEhIkSEiBARIkJEiAgRISJEhIgQETb4fbVa/Ye999rrGmMkNJC5c+deEZkvyIhSZooImSkiZKaIEJkyQmTKCJEpI0SmjBCZMkJkygiRKSNEpowQmSJCRKyOiMunTplyujEWGsy8+fOPzogPZeYzIiI3EBEyU0SITBkhMmWEyJQRIlNGiEwZITJlhMiUESJTRojM9bg6M1+719Spd2sAoUHNnz//8aVS6cLIPDYj9sxMESEyZYTIlBEiU0aITBkhMmWEyJQRIlNGELE0In42ra1tlgYTdgI33njjaVkUJwUHZVFMz4giMmWEyJQRIlNGiEwZITLXB4si87ba4ODF+++///c1qLATWrBgweNL5fLrSkVxcGaWM7NJRF/QX+NXTzjkkPfbifw/CbcpoWtgzwEAAAAASUVORK5CYII="),new TD(49,79,"data:image/png;base64,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"),new TD(25,40,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAoCAYAAAALz1FrAAAAAklEQVR4AewaftIAAARQSURBVLXBW2zddQEA4O/3v53ubG0pZ0JZyS6BOUcXAnG6BwHRGDOJLyPRxE6Nxki0JROTaYzBgzT6gCFbRDq3MB5IjLqFB/RBwYiCxoBOljhahDnwQtVkg3W9bDu9nP7tUhJGe87p2cXvCxrrwXrzqsiRoGpeglN4CLPqCGr7JG7Ca9ivsY/hA3gTuzXpG7jHhbsT38P1lnAvPuHircFuvFsdX8V2l24VHnSe2LzbsB4DLt04UmzDH5znu0hcXt9ByZwI3ahgxuX1BO4yJ8I2HHT5/RmZORFivOL/Y9acBFV1DN3f93VsFvIr1BTO4pnu8sButU1hfYzb8awFhvp7f50HXwwhXIU2lFBCCSWUCGvJ7+z70Ptu3vPbQz+12HvQmWDaAoP9fZ8m/3AQHu4uD+zQwGB/36NB/rmh/r67u8sDD3unHFmE1AKBaxDwO0vYVB74Qp6Hk7jNYsvwaoTcYk/geC5/YKi/9yZLCEEFqcVKeC5CsEB3eeBvhG8GSjmPD/b3bnFxckxFOINbLNBdHngUXwusDMJPBvt7P+jCBXMi7MdH1NBd3vMIvkLeFoQfDfX3btW8W3DWnAinEKuju7znsZwv5fKU8Mhgf+9mzfko9pkTmfd77FTHpvKex4OwI6cND1hahIAxcyLzfoUOlNTRXR44GHiacKOl7cQz3hJ520Hco4FcPkGeamwV2vG0t0Te9hecwGdcmj782Hki7/QQNuL9Ls5deB1DzhNZ7Nv4FK53AUbPTLbhauy1QFDDU1/uOBREN4cQ5yFEoiiWZoniimIorSxFq7pWVZMkVZmseOnFIaMjlXh2dko1ih7b+oPhz1sgUUNiJEIsR448opoxvYKZmGpHEqIZoXqW6ZPMHBdh1spYDZElnDjb7bXxzc754382maympmZ4cjDVrEQDR07e6oWTK6VR7splEw6/caX0H63eNZp57l+xdR2xl9/coGW6pKPlr+qJNLCh/Yiedb9x61XDdr18o89ufNGJMV4fzdx7R0X5yXZjlVgaT2ok0UAhHnXO2tbD7t4wbXk64uMb/62za7UVhcj9WyecHn7J6KnjGok0qWv5K85pa5lyxbKqc9aWpjQjUcOrb8Szs/ksEiG0iOJWhWKH1rjTZFgjSddJ0kRl+ozhanBi9Kjq1H9FWXVaDYkadj61/Bfj4+PvLRTi0Na2TKnUrqvrGtel17kh3GCiuFGapsZmxjw7PeH5v484enRk/PTp0/vUEKlhbGzsvkKhcNQFKBQKv6xUKn9SQ6SONE33hxByTYjjeKRYLParI1LH+Pj4g2maHtGEYrH482PHjg2pI9FAT0/PD7ds2fL9lpaWQktLi2KxqLW1VVtbmyzLdF17ras7O4d379p1nwYSDezdu3dfz/btIU2SHVmWbciyLMqyTJZlsiybTLPs+VKp9K0DBw78UwNBk144fHhbmqa3Z1nWnmXZcBzHP1uzevUhTfgfTJhAUmzU/MYAAAAASUVORK5CYII="),new TD(13,20,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAIESURBVI3BT0hTcQDA8e/vvbc5kW3N3puIMTVzDaxgCDGhOhQYhFBQqJShp8p36RzB0EcX230eomOX6NahQ4eiRhpCUTxDBE2CpmR/tik52Z/Xo73qTYr8fAR/HAZ6gTJQBQQ1CrAEZNjhJHCZf7sAnMWlExjj/84DJ3CMARK7M4pNAipAld0pY1OAKg5zUn8goBNhCX4S2BZ7kulhajaBXmwXsZmGPjBv6C/ZwZzUn84b+jVqzgDHJEBgEzBjgdc0xm/gJvgIooWaEDAjARK2nmT6i8C6IhBDpqFP8HcCqEhADjiOrSc5PWdhjQDnTGP8KvUEIGOTgIdAN45DyWkTuA+in3qXgAw2iZoFYIjfrDJYEo7C1nYjUAGWsAkcd4YDE5GQN6HIHssfiATbIpG9Wlhafj233r6e+746MD17CoeCY3+ooAGnN4pdVKXPdMg+8pt7oqXiKxoo4abgslHqZDG/D29RYfltgDZVoZDvQmtYwE3Bxe95T6+6gtLYRvfBbvyBAG9yS2wVqaPgmF3xrX7aLFuyp0Vo7UewmvoJ+oM8y1cofHj+DRcFx81HxVs+n2+0tdV74Kjmp0NuoaiEmN8Olp68a0pDnl8kXGKx2N3BwcFqIpFAVVVCzc0k+vpeZLPZe7jIuKytrWVSqVQ1Go02hcPhr6qmPY7H49dvT03lcPkBy4eYT4ZWwzkAAAAASUVORK5CYII=")];var ID=i(6401);function xD(e){const t=new De.A(0,0);let i=0;return e.forEach((n,s)=>{const r=e[(s+1)%e.length],o=n.x*r.y-r.x*n.y;i+=o/2,t.addXY((n.x+r.x)*o,(n.y+r.y)*o)}),t.divideScalar(6*i),t}function DD(e){return(Math.exp(e)+Math.exp(-e))/2}function kD(e,t,i){return Math.sqrt(Yt(e,t,i))}function MD(e,t){return e/t%1==0?0:e%t}function BD(e,t){return Math.abs(0===t?e:BD(t,MD(e,t)))}function OD(e,t){return(0,tt.q)(Math.abs(e*t)/BD(e,t))}function LD(e){return Math.log(e)/Math.LN10}function RD(e,t,i,n){const s=e.x-n.x,r=e.y-n.y,o=(e.x-n.x)*(e.x-n.x)+(e.y-n.y)*(e.y-n.y),a=t.x-n.x,l=t.y-n.y,h=(t.x-n.x)*(t.x-n.x)+(t.y-n.y)*(t.y-n.y),c=i.x-n.x,d=i.y-n.y,u=(i.x-n.x)*(i.x-n.x)+(i.y-n.y)*(i.y-n.y);return s*l*u+r*h*c+o*a*d-o*l*c-r*a*u-s*h*d>0}function ND(e,t){return Fe(e+1,t-1)}function qD(e){return(Math.exp(e)-Math.exp(-e))/2}function FD(e,t,i){i=void 0===i?1e-5:i;const n=new nt(0,0,0),s=t.direction,r=t.position,o=r.minus(n),a=s.dot(o),l=4*a*a-4*(o.magnitudeSquared-e*e);if(l(0,et.q)(e,t,i),moduloBetweenDown:(e,t,i)=>Wt(e,t,i),moduloBetweenUp:(e,t,i)=>Qt(e,t,i),rangeInclusive:(e,t)=>Fe(e,t),rangeExclusive:(e,t)=>ND(e,t),toRadians:e=>HD(e),toDegrees:e=>Zt(e),mod:(e,t)=>MD(e,t),gcd:(e,t)=>BD(e,t),lcm:(e,t)=>OD(e,t),lineLineIntersection:(e,t,i,n)=>Kt(e,t,i,n),circleCenterFromPoints:(e,t,i)=>jt(e,t,i),pointInCircleFromPoints:(e,t,i,n)=>RD(e,t,i,n),sphereRayIntersection:(e,t,i)=>FD(e,t,i),solveLinearRootsReal:(e,t)=>Ut(e,t),solveQuadraticRootsReal:(e,t,i)=>zt(e,t,i),solveCubicRootsReal:(e,t,i,n,s)=>Xt(e,t,i,n,s),cubeRoot:e=>_t(e),linear:(e,t,i,n,s)=>Ue(e,t,i,n,s),roundSymmetric:e=>(0,tt.q)(e),toFixed:(e,t)=>se(e,t),toFixedNumber:(e,t)=>dE(e,t),equalsEpsilon:(e,t,i)=>ja(e,t,i),lineSegmentIntersection:(e,t,i,n,s,r,o,a)=>Gt(e,t,i,n,s,r,o,a),distToSegmentSquared:(e,t,i)=>Yt(e,t,i),distToSegment:(e,t,i)=>kD(e,t,i),arePointsCollinear:(e,t,i,n)=>Ht(e,t,i,n),triangleArea:(e,t,i)=>Ft(e,t,i),triangleAreaSigned:(e,t,i)=>qt(e,t,i),centroidOfPolygon:e=>xD(e),cosh:e=>DD(e),sinh:e=>qD(e),log10:e=>LD(e),boxMullerTransform:(e,t,i)=>(0,ID.v)(e,t,i),numberOfDecimalPlaces:e=>uE(e),roundToInterval:(e,t)=>pE(e,t)};C.A.register("Utils",YD);const GD=YD,UD=new D(0,Number.POSITIVE_INFINITY);let zD=class extends b.A{dispose(){this.disposeStopwatch(),super.dispose()}reset(){this.positionProperty.reset(),this.isVisibleProperty.reset(),this.isRunningProperty.reset(),this.timeProperty.reset()}step(e){this.setTime(this.timeProperty.value+e)}setTime(e){this.isRunningProperty.value&&(this.timeProperty.value=this.timeProperty.range.constrainValue(e),this.timeProperty.value>=this.timeProperty.range.max&&(this.isRunningProperty.value=!1))}constructor(e){const t=(0,o.Ay)()({position:De.A.ZERO,isVisible:!1,timePropertyOptions:{range:UD,units:"s",isValidValue:e=>e>=0,phetioReadOnly:!0,phetioHighFrequency:!0},tandem:P.A.REQUIRED,tandemNameSuffix:"Stopwatch",phetioType:_f(w.A.ObjectIO),phetioState:!1},e);super(t),this.positionProperty=new ph(t.position,{tandem:t.tandem.createTandem("positionProperty"),phetioDocumentation:`view coordinates for the upper-left of the stopwatch (initially ${t.position.x},${t.position.y})`,phetioFeatured:!0}),this.isVisibleProperty=new c(t.isVisible,{tandem:t.tandem.createTandem("isVisibleProperty"),phetioFeatured:!0}),this.isRunningProperty=new c(!1,{tandem:t.tandem.createTandem("isRunningProperty"),phetioFeatured:!0}),this.timeProperty=new H(0,(0,o.sF)({tandem:t.tandem.createTandem("timeProperty"),phetioFeatured:!0},t.timePropertyOptions));const i=()=>{f.value||(this.isRunningProperty.value=!1,this.timeProperty.value=0)};this.isVisibleProperty.link(i),this.disposeStopwatch=()=>{this.isVisibleProperty.unlink(i),this.positionProperty.dispose(),this.isVisibleProperty.dispose(),this.isRunningProperty.dispose(),this.timeProperty.dispose()}}};zD.ZERO_TO_ALMOST_SIXTY=new D(0,3599.99),va.register("Stopwatch",zD);let WD=class extends Se.A{};WD.FORWARD=new WD,WD.BACKWARD=new WD,WD.UNSPECIFIED=new WD,WD.enumeration=new Ee.A(WD),t.register("CurrentSense",WD);let QD=0,KD=class extends b.A{setPosition(e){this.positionProperty.set(e),this.unsnappedPositionProperty.set(e)}dispose(){this.isSelected()&&(this.selectionProperty.value=null),this.positionProperty.dispose(),this.voltageProperty.dispose(),this.isDraggableProperty.dispose(),this.isCuttableProperty.dispose(),this.labelStringProperty.dispose(),super.dispose()}isSelected(){return this.selectionProperty.value===this}constructor(e,t,i){const n=(0,o.Ay)()({draggable:!0,attachable:!0,interactive:!0,blackBoxInterface:!1,insideTrueBlackBox:!1,tandem:P.A.OPTIONAL,phetioDynamicElement:!0},i);super(n),this.index=QD++,this.selectionProperty=t,this.vertexTandem=n.tandem,this.positionProperty=new ph(e,{tandem:n.tandem&&n.tandem.createTandem("positionProperty"),valueComparisonStrategy:"equalsFunction",isValidValue:e=>e.isFinite(),phetioReadOnly:!0,phetioHighFrequency:!0,phetioFeatured:!0}),this.unsnappedPositionProperty=new ph(e,{isValidValue:e=>e.isFinite()}),this.voltageProperty=new H(0,{tandem:n.tandem&&n.tandem.createTandem("voltageProperty"),units:"V",phetioReadOnly:!0,phetioHighFrequency:!0,phetioFeatured:!0}),this.isDraggableProperty=new c(n.draggable,{tandem:n.tandem&&n.tandem.createTandem("isDraggableProperty"),phetioFeatured:!0}),this.interactiveProperty=new c(n.interactive),this.attachableProperty=new c(n.attachable),this.blackBoxInterfaceProperty=new c(n.blackBoxInterface),this.insideTrueBlackBoxProperty=new c(n.insideTrueBlackBox),this.relayerEmitter=new v.A,this.vertexSelectedPropertyListener=null,this.isDragged=!1,this.outerWireStub=!1,this.isCuttableProperty=new c(!0,{tandem:n.tandem.createTandem("isCuttableProperty"),phetioFeatured:!0}),this.labelStringProperty=new lc("",(0,o.sF)({tandem:n.tandem.createTandem("labelStringProperty"),phetioDocumentation:"Shows a custom text label next to the Vertex",phetioFeatured:!0}))}};KD.VertexIO=new w.A("VertexIO",{valueType:KD,toStateObject:e=>({position:De.A.Vector2IO.toStateObject(e.positionProperty.value)}),stateObjectToCreateElementArguments:e=>[De.A.Vector2IO.fromStateObject(e.position)],stateSchema:{position:De.A.Vector2IO}}),t.register("Vertex",KD);let jD=0;const ZD=_f(KD.VertexIO);let _D=class e extends b.A{computeVoltageDifference(){return this.endVertexProperty.value.voltageProperty.value-this.startVertexProperty.value.voltageProperty.value}linkVertex(e,t,i){t&&(t.positionProperty.hasListener(this.vertexMovedListener)&&t.positionProperty.unlink(this.vertexMovedListener),t.voltageProperty.hasListener(this.vertexVoltageListener)&&t.voltageProperty.unlink(this.vertexVoltageListener),t.positionProperty.get().equals(e.positionProperty.get())||this.vertexMovedEmitter.emit()),e.positionProperty.hasListener(this.vertexMovedListener)||e.positionProperty.lazyLink(this.vertexMovedListener),e.voltageProperty.hasListener(this.vertexVoltageListener)||e.voltageProperty.link(this.vertexVoltageListener),this.voltageDifferenceProperty.set(this.computeVoltageDifference())}step(e,t,i){}get startPositionProperty(){return this.startVertexProperty.get().positionProperty}get endPositionProperty(){return this.endVertexProperty.get().positionProperty}emitVertexMoved(){this.vertexMovedEmitter.emit()}dispose(){this.circuitElementDisposed=!0,this.disposeEmitterCircuitElement.emit(),this.disposeEmitterCircuitElement.dispose(),this.startVertexProperty.unlink(this.linkVertexListener),this.endVertexProperty.unlink(this.linkVertexListener),this.startPositionProperty.hasListener(this.vertexMovedListener)&&this.startPositionProperty.unlink(this.vertexMovedListener),this.endPositionProperty.hasListener(this.vertexMovedListener)&&this.endPositionProperty.unlink(this.vertexMovedListener);const e=this.startVertexProperty.value.voltageProperty,t=this.endVertexProperty.value.voltageProperty;e.hasListener(this.vertexVoltageListener)&&e.unlink(this.vertexVoltageListener),t.hasListener(this.vertexVoltageListener)&&t.unlink(this.vertexVoltageListener),this.isEditableProperty.dispose(),this.isDisposableProperty.dispose(),this.isValueDisplayableProperty.dispose(),this.startVertexProperty.dispose(),this.endVertexProperty.dispose(),this.labelStringProperty.dispose(),this.currentSenseProperty.dispose(),this.currentProperty.dispose(),super.dispose()}replaceVertex(e,t){const i=this.startVertexProperty.get();this.endVertexProperty.get();e===i?this.startVertexProperty.set(t):this.endVertexProperty.set(t)}getOppositeVertex(e){return this.startVertexProperty.get()===e?this.endVertexProperty.get():this.startVertexProperty.get()}containsVertex(e){return this.startVertexProperty.get()===e||this.endVertexProperty.get()===e}containsBothVertices(e,t){return this.containsVertex(e)&&this.containsVertex(t)}updateMatrixForPoint(e,t){const i=this.startPositionProperty.get(),n=this.endPositionProperty.get(),s=i.blend(n,e/this.chargePathLength),r=De.A.getAngleBetweenVectors(i,n);t.setToTranslationRotationPoint(s,r)}containsScalarPosition(e){return e>=0&&e<=this.chargePathLength}toVertexString(){return`${this.startVertexProperty.value.index} -> ${this.endVertexProperty.value.index}`}constructor(t,i,n,s,r){const a=(0,o.Ay)()({interactive:!0,isSizeChangedOnViewChange:!0,insideTrueBlackBox:!1,isMetallic:!1,isFlammable:!1,tandem:s,isCurrentReentrant:!1,phetioDynamicElement:!0,phetioType:e.CircuitElementIO,isEditablePropertyOptions:{},isValueDisplayablePropertyOptions:{},labelStringPropertyOptions:{}},r);super(a),this.id=jD++,this.creationTime=phet.joist.elapsedTime,this.isFlammable=a.isFlammable,this.isMetallic=a.isMetallic,this.isSizeChangedOnViewChange=a.isSizeChangedOnViewChange,this.startVertexProperty=new h.A(t,{phetioValueType:KD.VertexIO,tandem:s.createTandem("startVertexProperty"),phetioState:!1,phetioReadOnly:!0,phetioFeatured:!0}),this.endVertexProperty=new h.A(i,{phetioValueType:KD.VertexIO,tandem:s.createTandem("endVertexProperty"),phetioState:!1,phetioReadOnly:!0,phetioFeatured:!0}),this.currentProperty=new H(0,{reentrant:a.isCurrentReentrant,tandem:s.createTandem("currentProperty"),phetioReadOnly:!0,phetioHighFrequency:!0,phetioFeatured:!0}),this.currentProperty.link(e=>{}),this.currentSenseProperty=new lh(WD.UNSPECIFIED,{tandem:s.createTandem("currentSenseProperty")}),this.interactiveProperty=new c(a.interactive),this.insideTrueBlackBoxProperty=new c(a.insideTrueBlackBox),this.chargeLayoutDirty=!0,this.connectedEmitter=new v.A,this.moveToFrontEmitter=new v.A,this.vertexSelectedEmitter=new v.A,this.vertexMovedEmitter=new v.A,this.startDragEmitter=new v.A({parameters:[{valueType:kr}]}),this.disposeEmitterCircuitElement=new v.A,this.vertexMovedListener=this.emitVertexMoved.bind(this),this.linkVertexListener=this.linkVertex.bind(this),this.startPositionProperty.link(this.vertexMovedListener),this.endPositionProperty.link(this.vertexMovedListener),this.voltageDifferenceProperty=new H(this.computeVoltageDifference()),this.vertexVoltageListener=()=>this.voltageDifferenceProperty.set(this.computeVoltageDifference()),this.startVertexProperty.link(this.linkVertexListener),this.endVertexProperty.link(this.linkVertexListener),this.chargePathLength=n,this.circuitElementDisposed=!1,this.lengthProperty=void 0,this.isEditableProperty=new c(!0,(0,o.sF)({tandem:s.createTandem("isEditableProperty"),phetioDocumentation:"Whether the CircuitElement can have its numerical characteristics changed by the user",phetioFeatured:!0},a.isEditablePropertyOptions)),this.isDisposableProperty=new c(!0,{tandem:s.createTandem("isDisposableProperty"),phetioDocumentation:"Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent",phetioFeatured:!0}),this.isValueDisplayableProperty=new c(!0,(0,o.sF)({tandem:s.createTandem("isValueDisplayableProperty"),phetioDocumentation:'Whether the CircuitElement\'s value can be displayed when the "values" checkbox is selected',phetioFeatured:!0},a.isValueDisplayablePropertyOptions)),this.labelStringProperty=new lc("",(0,o.sF)({tandem:s.createTandem("labelStringProperty"),phetioDocumentation:"Shows a custom text label next to the circuit element",phetioFeatured:!0},a.labelStringPropertyOptions))}};_D.CircuitElementIO=new w.A("CircuitElementIO",{valueType:_D,documentation:"A Circuit Element, such as battery, resistor or wire",toStateObject:e=>({startVertexID:ZD.toStateObject(e.startVertexProperty.value),endVertexID:ZD.toStateObject(e.endVertexProperty.value)}),stateSchema:{startVertexID:ZD,endVertexID:ZD},stateObjectToCreateElementArguments:e=>[ZD.fromStateObject(e.startVertexID),ZD.fromStateObject(e.endVertexID)]}),t.register("CircuitElement",_D);let XD=class extends b.A{reset(){this.isActiveProperty.reset(),this.bodyPositionProperty.reset(),this.isDraggingProbesWithBodyProperty.reset()}constructor(e,t){super({tandem:e,phetioState:!1,phetioFeatured:!0}),this.phetioIndex=t,this.isActiveProperty=new c(!1,{tandem:e.createTandem("isActiveProperty"),phetioFeatured:!0}),this.bodyPositionProperty=new ph(De.A.ZERO,{tandem:e.createTandem("bodyPositionProperty"),phetioFeatured:!0}),this.isDraggingProbesWithBodyProperty=new c(!0,{tandem:e.createTandem("isDraggingProbesWithBodyProperty")}),this.droppedEmitter=new v.A({parameters:[{valueType:Me}]})}};t.register("Meter",XD);let JD=class extends XD{setConnectionAndCurrent(e){this.currentProperty.value=null===e?null:e.current,this.probeConnectionProperty.value=null===e?null:e.circuitElement}reset(){super.reset(),this.currentProperty.reset(),this.probePositionProperty.reset()}constructor(e,t){super(e,t),this.currentProperty=new h.A(null,{tandem:e.createTandem("currentProperty"),units:"A",phetioValueType:(0,k.A)(M.A),phetioReadOnly:!0,phetioFeatured:!0}),this.probePositionProperty=new ph(De.A.ZERO,{tandem:e.createTandem("probePositionProperty"),phetioFeatured:!0}),this.probeConnectionProperty=new h.A(null,{tandem:e.createTandem("probeConnectionProperty"),phetioFeatured:!0,phetioValueType:(0,k.A)(_f(_D.CircuitElementIO)),phetioReadOnly:!0,phetioDocumentation:"The circuit element that the ammeter is connected to, or null if not connected to a circuit element"}),this.isActiveProperty.link(e=>{e||(this.probeConnectionProperty.value=null)})}};t.register("Ammeter",JD);const $D=new v.A({parameters:[{valueType:Object},{valueType:P.A}]});A.A.register("phetioStateSetEmitter",$D);const ek=$D,tk=new m.A;let ik=class extends tv{dispose(){}disposeElement(e){(0,d.A)(this._array,e),this.countProperty.value=this._array.length,super.disposeElement(e)}getArray(){return this._array}getArrayCopy(){return this._array.slice()}getElement(e){return this._array[e]}getLastElement(){return this.getElement(this.count-1)}get count(){return this.countProperty.value}filter(e){return this._array.filter(e)}includes(e){return this._array.includes(e)}indexOf(e){return this._array.indexOf(e)}forEach(e){this._array.forEach(e)}find(e){return this._array.find(e)}map(e){return this._array.map(e)}clear(e){const t=(0,o.Ay)()({phetioState:null,resetIndex:!0},e);for(;this._array.length>0;)this.disposeElement(this._array[0]);t.resetIndex&&(this.groupElementIndex=this.groupElementStartingIndex)}createCorrespondingGroupElement(e){const t=$l.A.getGroupElementIndex(e);this.groupElementIndex===t&&this.groupElementIndex++;for(var i=arguments.length,n=new Array(i>1?i-1:0),s=1;s2&&void 0!==arguments[2]&&arguments[2];const i=this.phetioDynamicElementName+$l.A.GROUP_SEPARATOR+e,n=P.A.PHET_IO_ENABLED&&this.isPhetioInstrumented()?this.phetioType.parameterTypes[0]:null,s=this.createDynamicElement(i,t,n);return this._array.push(s),this.countProperty.value=this._array.length,this.notifyElementCreated(s),s}constructor(e,t,i){var n;const s=(0,o.Ay)()({groupElementStartingIndex:1,containerSuffix:"Group"},i);super(e,t,s),this._array=[],this.groupElementStartingIndex=s.groupElementStartingIndex,this.groupElementIndex=this.groupElementStartingIndex,this.countProperty=new H(0,{tandem:null==(n=s.tandem)?void 0:n.createTandem("countProperty"),phetioDocumentation:"the number of elements in the group",phetioReadOnly:!0,phetioFeatured:!0,numberType:"Integer"})}};ik.PhetioGroupIO=e=>(tk.has(e)||tk.set(e,new w.A(`PhetioGroupIO<${e.typeName}>`,{isValidValue:e=>e instanceof ik,documentation:"An array that sends notifications when its values have changed.",metadataDefaults:{phetioDynamicElementName:null},parameterTypes:[e],addChildElement(t,i,n){const s=e.stateObjectToCreateElementArguments(n),r=$l.A.getGroupElementIndex(i),o=t.createIndexedElement(r,s,!0);return t.groupElementIndex=Math.max(r+1,t.groupElementIndex),o}})),tk.get(e)),A.A.register("PhetioGroup",ik);const nk=ik,sk=new w.A("GetSetButtonsIO",{isValidValue:e=>!0});A.A.register("GetSetButtonsIO",sk);const rk=sk;let ok=class extends _D{constructor(e,t,i,n,s){const r=(0,o.Ay)()({numberOfDecimalPlaces:1},s);super(e,t,i,n,r),this.numberOfDecimalPlaces=r.numberOfDecimalPlaces,this.distanceBetweenVertices=e.positionProperty.get().distance(t.positionProperty.get()),this.isFixedCircuitElement=!0}};t.register("FixedCircuitElement",ok);let ak=class extends fe{constructor(e,t,i){super([e,t],(e,t)=>Math.abs(e*e*t),{units:"W",tandem:i,phetioValueType:M.A,phetioDocumentation:"The dissipated power in Watts",phetioHighFrequency:!0,phetioFeatured:!0})}};t.register("PowerDissipatedProperty",ak);let lk=class extends ok{dispose(){this.voltageProperty.dispose(),this.powerDissipatedProperty.dispose(),this.powerGeneratedProperty.dispose(),super.dispose()}getCircuitProperties(){return[this.voltageProperty]}constructor(e,t,i,n,s,r){const a=(0,o.Ay)()({initialOrientation:"right",voltage:9,isFlammable:!0,numberOfDecimalPlaces:1,voltagePropertyOptions:{tandem:s.createTandem("voltageProperty"),phetioFeatured:!0}},r);super(e,t,n,s,a),this.voltageProperty=new H(a.voltage,a.voltagePropertyOptions),this.internalResistanceProperty=i,this.powerDissipatedProperty=new ak(this.currentProperty,i,s.createTandem("powerDissipatedProperty")),this.powerGeneratedProperty=new de([this.currentProperty,this.voltageProperty],(e,t)=>Math.abs(e*t),{tandem:s.createTandem("powerGeneratedProperty"),phetioValueType:M.A,phetioHighFrequency:!0,phetioFeatured:!0}),this.initialOrientation=a.initialOrientation}};t.register("VoltageSource",lk);let hk=class e extends lk{getCircuitProperties(){return[this.frequencyProperty,this.phaseProperty,this.maximumVoltageProperty,...super.getCircuitProperties()]}dispose(){this.maximumVoltageProperty.dispose(),this.frequencyProperty.dispose(),this.phaseProperty.dispose(),this.isPhaseEditableProperty.dispose(),this.isFrequencyEditableProperty.dispose(),this.isVoltageEditableProperty.dispose(),super.dispose()}step(e,t,i){super.step(e,t,i),this.time=e,this.voltageProperty.value=-this.maximumVoltageProperty.value*Math.sin(2*Math.PI*this.frequencyProperty.value*e+this.phaseProperty.value*Math.PI/180)}constructor(t,i,n,s,r){const a=(0,o.Ay)()({initialOrientation:"right",voltage:9,isFlammable:!0,numberOfDecimalPlaces:2,voltagePropertyOptions:{range:e.VOLTAGE_RANGE}},r);super(t,i,n,fD.BATTERY_LENGTH,s,a),this.isTraversibleProperty=new c(!0),this.maximumVoltageProperty=new H(a.voltage,{tandem:s.createTandem("maximumVoltageProperty"),range:e.MAX_VOLTAGE_RANGE}),this.frequencyProperty=new H(e.DEFAULT_FREQUENCY,{tandem:s.createTandem("frequencyProperty"),range:e.FREQUENCY_RANGE}),this.phaseProperty=new H(0,{range:new D(-180,180),tandem:s.createTandem("phaseProperty"),units:$E.DEGREES}),this.isPhaseEditableProperty=new c(!0,{tandem:s.createTandem("isPhaseEditableProperty")}),this.isFrequencyEditableProperty=new c(!0,{tandem:s.createTandem("isFrequencyEditableProperty")}),this.isVoltageEditableProperty=new c(!0,{tandem:s.createTandem("isVoltageEditableProperty")}),this.time=0}};hk.VOLTAGE_RANGE=new D(-120,120),hk.DEFAULT_FREQUENCY=.5,hk.FREQUENCY_RANGE=new D(.1,2),hk.MAX_VOLTAGE_RANGE=new D(0,120),t.register("ACVoltage",hk);const ck=eD.currentUnitsStringProperty,dk=eD.voltageUnitsStringProperty,uk={createCurrentReadout:function(e,t){if(s.fullPrecisionAmmeter)return e+"";{const i=t?1e3:1e10,n=t?"> 10^3":"> 10^10",s=t?"< -10^3":"< -10^10",r=nD.value;if(null===e)return $E.NO_VALUE;if(r===tD.MAGNITUDE&&Math.abs(e)>i)return n;if(r===tD.SIGNED&&e>i)return n;if(r===tD.SIGNED&&e<-i)return s;{const t=nD.value===tD.MAGNITUDE?Math.abs(e):e;return Qe.A.fillIn(ck,{current:GD.toFixed(t,fD.METER_PRECISION)})}}},createVoltageReadout:function(e){return Qe.A.fillIn(dk,{voltage:GD.toFixed(e,fD.METER_PRECISION)})},setInSceneGraph:function(e,t,i){e&&!t.hasChild(i)?t.addChild(i):!e&&t.hasChild(i)&&t.removeChild(i)},clampMagnitude(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e20;return Math.abs(e)>t?Math.sign(e)*t:e},getDropItemHitBoxForBounds(e){const t=.5*(1-fD.RETURN_ITEM_HIT_BOX_RATIO);return e.erodedXY(t*e.width,t*e.height)}};t.register("CCKCUtils",uk);const pk=uk;let mk=class extends ok{clear(){this.mnaVoltageDrop=0,this.mnaCurrent=0,this.clearEmitter.emit()}dispose(){this.clearEmitter.dispose(),this.isClearableProperty.dispose(),super.dispose()}constructor(e,t,i,n,s){super(e,t,i,n,s),this.mnaVoltageDrop=0,this.mnaCurrent=0,this.clearEmitter=new v.A,this.isClearableProperty=new c(!0,{tandem:n.createTandem("isClearableProperty"),phetioDocumentation:"Determines whether the button to clear the component can be shown"})}};t.register("DynamicCircuitElement",mk);let gk=class e extends mk{dispose(){this.capacitanceProperty.dispose(),super.dispose()}getCircuitProperties(){return[this.capacitanceProperty]}constructor(t,i,n,s){const r=(0,o.Ay)()({capacitance:e.CAPACITANCE_DEFAULT,numberOfDecimalPlaces:e.NUMBER_OF_DECIMAL_PLACES},s);super(t,i,fD.CAPACITOR_LENGTH,n,r),this.isTraversibleProperty=new c(!0),this.capacitanceProperty=new H(r.capacitance,{range:e.CAPACITANCE_RANGE,tandem:n.createTandem("capacitanceProperty")}),this.capacitanceProperty.lazyLink((e,t)=>{const i=t*(this.endVertexProperty.value.voltageProperty.value-this.startVertexProperty.value.voltageProperty.value)/e,n=this.startVertexProperty.value.voltageProperty.value,s=(i-(this.endVertexProperty.value.voltageProperty.value-n))/2;this.startVertexProperty.value.voltageProperty.value-=s,this.endVertexProperty.value.voltageProperty.value+=s,this.mnaVoltageDrop=-i})}};gk.CAPACITANCE_RANGE=new D(s.capacitanceMin,s.capacitanceMax),gk.NUMBER_OF_DECIMAL_PLACES=s.capacitorNumberDecimalPlaces,gk.CAPACITANCE_DEFAULT=s.capacitanceDefault,t.register("Capacitor",gk);let Ak=class e extends ok{dispose(){super.dispose(),this.currentRatingProperty.dispose(),this.isRepairableProperty.dispose(),this.isTrippedProperty.dispose()}resetFuse(){this.isTrippedProperty.reset(),this.timeCurrentRatingExceeded=0}step(e,t,i){super.step(e,t,i),Math.abs(this.currentProperty.value)>this.currentRatingProperty.value+1e-6?this.timeCurrentRatingExceeded+=t:this.timeCurrentRatingExceeded=0,this.timeCurrentRatingExceeded>0&&(this.isTrippedProperty.value=!0),this.resistanceProperty.value=this.isTrippedProperty.value?fD.MAX_RESISTANCE:1/this.currentRatingProperty.value*.06}getCircuitProperties(){return[this.resistanceProperty,this.isTrippedProperty]}constructor(t,i,n,s,r){const a=(0,o.Ay)()({fuseLength:fD.RESISTOR_LENGTH,currentRating:e.DEFAULT_CURRENT_RATING,isCurrentReentrant:!0,numberOfDecimalPlaces:1},r);super(t,i,a.fuseLength,n,a),this.currentRatingProperty=new H(a.currentRating,{range:e.RANGE,tandem:n.createTandem("currentRatingProperty"),phetioFeatured:!0}),this.isTrippedProperty=new c(!1,{tandem:n.createTandem("isTrippedProperty"),phetioFeatured:!0}),this.isTraversibleProperty=de.not(this.isTrippedProperty),this.resistanceProperty=new H(fD.MINIMUM_RESISTANCE),this.timeCurrentRatingExceeded=0,this.isRepairableProperty=new c(!0,{tandem:n.createTandem("isRepairableProperty"),phetioFeatured:!0}),this.isTrippedProperty.lazyLink(()=>{s&&s.componentEditedEmitter.emit()})}};Ak.RANGE=new D(.5,20),Ak.DEFAULT_CURRENT_RATING=4,t.register("Fuse",Ak);const yk=fD.INDUCTOR_LENGTH;let fk=class e extends mk{dispose(){this.inductanceProperty.dispose(),super.dispose()}getCircuitProperties(){return[this.inductanceProperty]}constructor(t,i,n,s){const r=(0,o.Ay)()({inductance:e.INDUCTANCE_DEFAULT,numberOfDecimalPlaces:e.INDUCTANCE_NUMBER_OF_DECIMAL_PLACES},s);super(t,i,yk,n,r),this.isTraversibleProperty=new c(!0),this.inductanceProperty=new H(r.inductance,{range:e.INDUCTANCE_RANGE,tandem:n.createTandem("inductanceProperty")})}};fk.INDUCTANCE_DEFAULT=s.inductanceDefault,fk.INDUCTANCE_RANGE=new D(s.inductanceMin,s.inductanceMax),fk.INDUCTANCE_NUMBER_OF_DECIMAL_PLACES=s.inductorNumberDecimalPlaces,t.register("Inductor",fk);let bk=class extends Se.A{};bk.LIFELIKE=new bk,bk.SCHEMATIC=new bk,bk.enumeration=new Ee.A(bk,{phetioDocumentation:"Enumeration that determines how the circuit elements are rendered: lifelike or schematic"}),t.register("CircuitElementViewType",bk);const Pk=[new De.A(.623,2.063),new De.A(.623,.7605),new De.A(.471,.46464),new De.A(.471,.3834),new De.A(.591,.336),new De.A(.823*.87,.565*.6),new De.A(.77256,.36),new De.A(.922*.87,.699*.6),new De.A(.80649,1.474),new De.A(.88992,1.474)],Vk=[new De.A(.5,2.06),new De.A(.5,.34),new De.A(.89,.34),new De.A(.89,1.474)];let wk=class e extends ok{static createAtPosition(t,i,n,s,r,o,a){return new e(t,i,s,r,o,a)}static createVertexPair(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const s=e.createSamplePoints(t);return{startVertex:n?new KD(s[0],i.selectionProperty):i.vertexGroup.createNextElement(s[0]),endVertex:n?new KD(s[1],i.selectionProperty):i.vertexGroup.createNextElement(s[1])}}static createSamplePoints(e){const t=new De.A(19,10),i=new De.A(e.x-18,e.y).plus(t),n=i.plus(De.A.createPolar(36,-Math.PI/4));return[i,n]}updatePathLength(){this.chargePathLength=this.getPathLength()}getPathLength(){let t=0;const i=this.viewTypeProperty.value===bk.LIFELIKE?Pk:Vk;let n=e.getFilamentPathPoint(0,De.A.ZERO,i);for(let s=1;s3&&void 0!==arguments[3]?arguments[3]:0;return new e(t,new D(t,t),i,n,s)}constructor(e,t,i,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;super(),this.defaultResistance=e,this.range=t,this.isMetallic=i,this.length=n,this.verticalOffset=s}};Ek.RESISTOR=new Ek(10,new D(0,120),!1,fD.RESISTOR_LENGTH),Ek.EXTREME_RESISTOR=new Ek(1e3,new D(100,1e4),!1,fD.RESISTOR_LENGTH),Ek.COIN=Ek.fixed(0,!0,fD.COIN_LENGTH),Ek.PAPER_CLIP=Ek.fixed(0,!0,fD.PAPER_CLIP_LENGTH),Ek.PENCIL=Ek.fixed(25,!1,fD.PENCIL_LENGTH),Ek.ERASER=Ek.fixed(1e6,!1,fD.ERASER_LENGTH),Ek.HAND=Ek.fixed(1e5,!1,fD.HAND_LENGTH,15),Ek.DOG=Ek.fixed(1e5,!1,fD.DOG_LENGTH,-40),Ek.DOLLAR_BILL=Ek.fixed(1e6,!1,fD.DOLLAR_BILL_LENGTH),Ek.enumeration=new Ee.A(Ek),t.register("ResistorType",Ek);let Sk=class e extends ok{dispose(){this.resistanceProperty.dispose(),this.powerDissipatedProperty.dispose(),this.isColorCodeVisibleProperty.dispose(),super.dispose()}isResistanceEditable(){return this.resistorType===Ek.EXTREME_RESISTOR||this.resistorType===Ek.RESISTOR}getCircuitProperties(){return[this.resistanceProperty]}constructor(t,i,n,s,r){const a=(0,o.Ay)()({isFlammable:!0,phetioType:e.ResistorIO,numberOfDecimalPlaces:n===Ek.RESISTOR?1:0},r);a.isMetallic=n.isMetallic,n!==Ek.RESISTOR&&n!==Ek.EXTREME_RESISTOR&&(a.isEditablePropertyOptions={tandem:P.A.OPT_OUT}),super(t,i,n.length,s,a),this.isTraversibleProperty=new c(!0),this.resistorType=n,this.resistanceProperty=new H(n.defaultResistance,{tandem:s.createTandem("resistanceProperty"),range:this.resistorType.range,phetioFeatured:!0}),this.powerDissipatedProperty=new ak(this.currentProperty,this.resistanceProperty,s.createTandem("powerDissipatedProperty")),this.isColorCodeVisibleProperty=new c(!0,{tandem:this.resistorType===Ek.RESISTOR?s.createTandem("isColorCodeVisibleProperty"):P.A.OPT_OUT,phetioDocumentation:"Whether the view can display the resistor color code bands",phetioFeatured:!0})}};Sk.RESISTANCE_DECIMAL_PLACES=1,Sk.HIGH_RESISTANCE_DECIMAL_PLACES=0,Sk.ResistorIO=new w.A("ResistorIO",{valueType:Sk,supertype:_D.CircuitElementIO,stateSchema:{resistorType:(0,pt.A)(Ek)},toStateObject:e=>{const t=_D.CircuitElementIO.toStateObject(e);return _.merge({resistorType:(0,pt.A)(Ek).toStateObject(e.resistorType)},t)},stateObjectToCreateElementArguments(e){const t=_D.CircuitElementIO.stateObjectToCreateElementArguments(e);return t.push((0,pt.A)(Ek).fromStateObject(e.resistorType)),t}}),t.register("Resistor",Sk);let Tk=class extends ok{getCircuitProperties(){return[]}constructor(e,t,i,n){const s=(0,o.Ay)()({isEditablePropertyOptions:{tandem:P.A.OPT_OUT},isValueDisplayablePropertyOptions:{tandem:P.A.OPT_OUT},labelStringPropertyOptions:{tandem:P.A.OPT_OUT}},n);super(e,t,fD.SERIES_AMMETER_LENGTH,i,s),this.isTraversibleProperty=new c(!0),this.resistanceProperty=new H(0)}};t.register("SeriesAmmeter",Tk);const Ck=fD.SWITCH_LENGTH,Ik=fD.SWITCH_START,xk=fD.SWITCH_END;let Dk=class extends ok{dispose(){this.isClosedProperty.dispose(),super.dispose()}updateMatrixForPoint(e,t){const i=this.startPositionProperty.get(),n=this.endPositionProperty.get(),s=e/this.chargePathLength;if(s>Ik&&s{this.resistanceProperty.value=e?0:fD.MAX_RESISTANCE,n&&n.componentEditedEmitter.emit()})}};t.register("Switch",Dk);let kk=class extends _D{step(e,t,i){super.step(e,t,i),this.update()}update(){const e=this.startPositionProperty.get(),t=this.endPositionProperty.get(),i=e.distance(t),n=5e-4*i;this.lengthProperty.set(n);const s=this.resistivityProperty.get()*n/fD.WIRE_CROSS_SECTIONAL_AREA,r=Math.max(fD.MINIMUM_WIRE_RESISTANCE,s);this.resistanceProperty.set(r),this.chargePathLength=Math.max(i,1e-6)}getCircuitProperties(){return[this.resistanceProperty]}dispose(){this.vertexMovedEmitter.removeListener(this.updateListener),this.resistivityProperty.unlink(this.updateListener),super.dispose()}constructor(e,t,i,n,s){const r=(0,o.Ay)()({wireStub:!1,isMetallic:!0,isEditablePropertyOptions:{tandem:P.A.OPT_OUT},isValueDisplayablePropertyOptions:{tandem:P.A.OPT_OUT},labelStringPropertyOptions:{tandem:P.A.OPT_OUT}},s),a=e.positionProperty.get().distance(t.positionProperty.get());super(e,t,a,n,r),this.isTraversibleProperty=new c(!0),this.wireStub=r.wireStub,this.resistanceProperty=new H(fD.MINIMUM_WIRE_RESISTANCE),phet.chipper.queryParameters.dev&&this.resistanceProperty.link(console.log),this.resistivityProperty=i,this.lengthProperty=new H(0),this.updateListener=()=>this.update(),this.vertexMovedEmitter.addListener(this.updateListener),this.resistivityProperty.link(this.updateListener),this.update()}};t.register("Wire",kk);let Mk=class{constructor(e,t,i){this.id=e,this.node0=t,this.node1=i}};t.register("CoreModel",Mk);let Bk=class extends Mk{constructor(e,t,i,n,s){super(e,t,i),this.voltage=n,this.current=s}};t.register("DynamicCoreModel",Bk);let Ok=class extends Bk{constructor(e,t,i,n,s,r){super(e,t,i,n,s),this.capacitance=r,this.capacitorVoltageNode1=null}};t.register("LTACapacitor",Ok);let Lk=class extends Bk{constructor(e,t,i,n,s,r){super(e,t,i,n,s),this.inductance=r,this.inductorVoltageNode1=null}};t.register("LTAInductor",Lk);let Rk=class{getNodeVoltage(e){return this.mnaSolution.getNodeVoltage(e)}getCurrent(e){return e.resistance>0?this.mnaSolution.getCurrentForResistor(e):this.mnaSolution.getSolvedCurrent(e)}getCurrentForCompanion(e){return _.find(this.currentCompanions,t=>t.element.id===e.id).getValueForSolution(this.mnaSolution)}getVoltage(e,t){return this.getNodeVoltage(t)-this.getNodeVoltage(e)}constructor(e,t,i){this.circuit=e,this.mnaSolution=t,this.currentCompanions=i}};t.register("LTASolution",Rk);let Nk=class e{update(t){this.solution=this.ltaCircuit.solvePropagate(t);const i=this.ltaCircuit.updateCircuit(this.solution);return new e(i,this.solution)}getCharacteristicArray(){const e=[];for(let t=0;t{t+=n.state.ltaSolution.getCurrent(e)*n.dt,i+=n.dt});const n=t/i;return n}getTimeAverageCurrentForCoreModel(e){let t=0,i=0;this.resultSet.forEach(n=>{t+=n.state.ltaSolution.getCurrentForCompanion(e)*n.dt,i+=n.dt});const n=t/i;return n}getInstantaneousCurrent(e){return this.getFinalState().ltaSolution.getCurrent(e)}getInstantaneousVoltage(e){return this.getFinalState().ltaSolution.getVoltage(e.nodeId0,e.nodeId1)}getInstantaneousVoltageForCoreModel(e){return this.getFinalState().ltaSolution.getVoltage(e.node0,e.node1)}getInstantaneousCurrentForCoreModel(e){return this.getFinalState().ltaSolution.getCurrentForCompanion(e)}getFinalState(){return _.last(this.resultSet).state}constructor(e){this.resultSet=e}};t.register("LTAStateSet",qk);let Fk=class{containsNodeId(e){return this.nodeId0===e||this.nodeId1===e}getOppositeNode(e){return this.nodeId0===e?this.nodeId1:this.nodeId0}toString(){return`${this.nodeId0}, ${this.nodeId1}`}constructor(e,t){this.nodeId0=e,this.nodeId1=t}};t.register("MNACircuitElement",Fk);let Hk=class extends Fk{constructor(e,t,i){super(e,t),this.voltage=i}};t.register("MNABattery",Hk);let Yk=class{getSolvedCurrent(e){return this.elements.get(e)}approxEquals(e,t){const i=Array.from(this.nodeVoltages.keys()),n=Array.from(e.nodeVoltages.keys());_.difference(i,n);for(let s=0;sMath.abs(e-t)<1e-4;t.register("MNASolution",Yk);let Uk=class{toString(){return"toString() only defined when assertions are enabled"}getCurrentCount(){let e=0;for(let t=0;t0;){const i=e[0];t.push(i);const n=this.getConnectedNodeIds(i);for(let t=0;t0;){const e=i.shift();t.push(e);for(let n=0;nnew Kk(e)),n=[...t,...i],s=e=>{const t=zk(n,e);return t},r=new Na(e.length,this.getNumVars()),o=new Na(e.length,1);let a;try{for(let t=0;t{for(let i=0;i{const o=t.cond();return`Debugging circuit: ${e.toString()}\n equations:\n${n.join("\n")}\n\nA.cond=1E${GD.toFixed(Math.log10(o),4)} = ${GD.toFixed(o,4)} \nA=\n${t.transpose().toString()}\nz=\n${i.transpose().toString()}\nunknowns=\n${s.map(e=>e.toTermName()).join(", ")}\nx=\n${r.transpose().toString()}\n `};let _k=class extends Fk{constructor(e,t,i){super(e,t),this.resistance=i}};t.register("MNAResistor",_k);const Xk=s.minDT,Jk=s.searchTimeStep;let $k=class{stepInTimeWithHistory(e,t,i){let n=e,s=0;const r=[];let o=i;for(;si-s&&(o=i-s))}return phet.log&&console.log("states per frame: "+r.length),r}search(e,t,i,n){if(i===fD.PAUSED_DT)return{dt:fD.PAUSED_DT,state:t.update(e,fD.PAUSED_DT)};if(i<=Xk)return{dt:Xk,state:t.update(e,Xk)};if(Jk){const s=t.update(e,i),r=n||t.update(e,i/2),o=t.update(r,i/2),a=t.distance(s,o);return a<1e-5?{dt:i,state:o}:this.search(e,t,i/2,r)}return{dt:Xk,state:t.update(e,Xk)}}};t.register("TimestepSubdivisions",$k);let eM=class e{solvePropagate(e){const t=[],i=[],n=[];let r=0;this.ltaBatteries.forEach(e=>{const s="syntheticNode"+r++,o=new Hk(e.node0,s,e.voltage),a=new _k(s,e.node1,e.resistance);t.push(o),i.push(a),n.push({element:e,getValueForSolution:e=>e.getSolvedCurrent(o)})}),this.ltaCapacitors.forEach(o=>{const a="syntheticNode"+r++,l="syntheticNode"+r++,h=e/2/o.capacitance,c=s.capacitorResistance,d=h*o.current-o.voltage,u=new Hk(o.node0,a,d),p=new _k(a,l,h),m=new _k(l,o.node1,c);t.push(u),i.push(p),i.push(m),o.capacitorVoltageNode1=l,n.push({element:o,getValueForSolution:e=>e.getCurrentForResistor(p)})}),this.ltaInductors.forEach(o=>{const a="syntheticNode"+r++,l="syntheticNode"+r++,h=2*o.inductance/e,c=o.voltage+-h*o.current,d=new Hk(o.node0,a,c),u=new _k(a,l,h),p=new _k(l,o.node1,s.inductorResistance);t.push(d),i.push(u),i.push(p),o.inductorVoltageNode1=l,n.push({element:o,getValueForSolution:e=>e.getCurrentForResistor(u)})});const o=t,a=[...this.ltaResistors,...i],l=new Uk(o,a,[]).solve();return new Rk(this,l,n)}solveWithSubdivisions(e,t){const i={update:(e,t)=>e.update(t),distance:(e,t)=>tM(e.getCharacteristicArray(),t.getCharacteristicArray())},n=e.stepInTimeWithHistory(new Nk(this,null),i,t);return new qk(n)}solveWithSubdivisions2(e){return this.solveWithSubdivisions(new $k,e)}updateWithSubdivisions(e){return this.solveWithSubdivisions2(e).getFinalState().ltaCircuit}solveItWithSubdivisions(e){return this.solveWithSubdivisions2(e).getFinalState().ltaSolution}update(e){return this.updateCircuit(this.solvePropagate(e))}updateCircuit(t){const i=this.ltaCapacitors.map(e=>new Ok(e.id,e.node0,e.node1,t.getVoltage(e.node0,e.capacitorVoltageNode1),t.getCurrentForCompanion(e),e.capacitance)),n=this.ltaInductors.map(e=>new Lk(e.id,e.node0,e.node1,t.getVoltage(e.node0,e.inductorVoltageNode1),t.getCurrentForCompanion(e),e.inductance));return new e(this.ltaResistors,this.ltaBatteries,i,n)}constructor(e,t,i,n){this.ltaResistors=e,this.ltaBatteries=t,this.ltaCapacitors=i,this.ltaInductors=n}};const tM=(e,t)=>{let i=0;for(let n=0;nMath.log(e)/Math.log(t),n=m.getFinalState().ltaSolution.getVoltage(t.nodeId0,t.nodeId1),s=Math.abs(n),r=2,o=3;t.resistance=wk.REAL_BULB_COLD_RESISTANCE+o*s/e(s+r,r),i.resistanceProperty.value=t.resistance}}p=new eM(n,i,s,r),m=p.solveWithSubdivisions(sM,t)}i.forEach(e=>{h.get(e).currentProperty.value=m.getTimeAverageCurrentForCoreModel(e)}),n.forEach(e=>{l.get(e).currentProperty.value=m.getTimeAverageCurrent(e)}),s.forEach(e=>{const t=c.get(e);t.currentProperty.value=m.getTimeAverageCurrentForCoreModel(e),t.mnaCurrent=pk.clampMagnitude(m.getInstantaneousCurrentForCoreModel(e)),t.mnaVoltageDrop=pk.clampMagnitude(m.getInstantaneousVoltageForCoreModel(e))}),r.forEach(e=>{const t=d.get(e);t.currentProperty.value=m.getTimeAverageCurrentForCoreModel(e),t.mnaCurrent=pk.clampMagnitude(m.getInstantaneousCurrentForCoreModel(e)),t.mnaVoltageDrop=pk.clampMagnitude(m.getInstantaneousVoltageForCoreModel(e))}),o.forEach(e=>{e.currentProperty.value=0,e instanceof wk&&e.isReal&&(e.resistanceProperty.value=wk.REAL_BULB_COLD_RESISTANCE)});const g=[],A=[];e.vertexGroup.forEach(e=>{const t=m.getFinalState().ltaSolution.getNodeVoltage(e.index+"");"number"==typeof t?(e.voltageProperty.value=-t,g.push(e)):A.push(e)});const y=(e,t,i)=>{if(!g.includes(i)){const n=e===t.startVertexProperty.value?1:-1;t.isTraversibleProperty.value&&(t instanceof Sk||t instanceof kk||t instanceof wk||t instanceof Dk||t instanceof Ak||t instanceof Tk?(i.voltageProperty.value=e.voltageProperty.value,g.push(i)):t instanceof lk?(i.voltageProperty.value=e.voltageProperty.value+n*t.voltageProperty.value,g.push(i)):(t instanceof gk||t instanceof fk)&&(i.voltageProperty.value=e.voltageProperty.value-n*t.mnaVoltageDrop,g.push(i)))}},f=[],b=(t,i)=>{f.push(t),e.circuitElements.forEach(e=>{if(e.containsVertex(t)){const n=e.getOppositeVertex(t);!f.includes(n)&&e.isTraversibleProperty.value&&(i(t,e,n),b(n,i))}})},P=[...g,...A];P.forEach(e=>{f.includes(e)||b(e,y)});const V=[...o],w=t=>e.conserveCurrent(t,V);f.length=0,P.forEach(e=>b(e,w)),A.forEach(e=>{})}};t.register("LinearTransientAnalysis",oM);const aM=fD.BATTERY_LENGTH;let lM=class e extends lk{step(e,t,i){}dispose(){this.isReversibleProperty.dispose(),super.dispose()}constructor(t,i,n,s,r,a){const l=(0,o.Ay)()({initialOrientation:"right",voltage:e.VOLTAGE_DEFAULT,isFlammable:!0,numberOfDecimalPlaces:"normal"===s?e.VOLTAGE_DECIMAL_PLACES:e.HIGH_VOLTAGE_DECIMAL_PLACES,voltagePropertyOptions:{range:"normal"===s?e.VOLTAGE_RANGE:e.HIGH_VOLTAGE_RANGE}},a);super(t,i,n,aM,r,l),this.isTraversibleProperty=new c(!0),this.initialOrientation=l.initialOrientation,this.batteryType=s,this.isReversibleProperty=new c(!0,{tandem:r.createTandem("isReversibleProperty"),phetioFeatured:!0})}};lM.VOLTAGE_DEFAULT=9,lM.VOLTAGE_RANGE=new D(0,120),lM.VOLTAGE_DECIMAL_PLACES=1,lM.HIGH_VOLTAGE_DEFAULT=1e3,lM.HIGH_VOLTAGE_RANGE=new D(100,1e5),lM.HIGH_VOLTAGE_DECIMAL_PLACES=0,t.register("Battery",lM);let hM=class extends Ze.A{updatePositionAndAngle(){this.circuitElement.updateMatrixForPoint(this.distance,this.matrix),this.changedEmitter.emit()}dispose(){this.changedEmitter.dispose(),super.dispose()}constructor(e,t,i,n){super(),this.charge=n,this.circuitElement=e,this.distance=t,this.matrix=Et.identity(),this.visibleProperty=i,this.changedEmitter=new v.A,this.updatePositionAndAngle()}};t.register("Charge",hM);const cM=.43*fD.CHARGE_SEPARATION,dM=function(e){return Math.abs(e.currentProperty.get())};let uM=class{reset(){this.timeScaleProperty.reset(),this.timeScaleRunningAverage.clear()}step(e){if(0===this.charges.length||0===this.circuit.circuitElements.length)return;e=Math.min(e,1/30);const t=_.maxBy(this.circuit.circuitElements,dM),i=dM(t),n=25*i*(1/30);this.scale=n>=cM?cM/n:1;const s=GD.clamp(this.timeScaleRunningAverage.updateRunningAverage(this.scale),0,1);this.timeScaleProperty.set(s);for(let r=0;re.updatePositionAndAngle())}equalizeAll(e){const t=qe.A.shuffle(_.range(this.charges.length));for(let i=0;i=1e-10&&this.equalizeCharge(n,e)}}equalizeCharge(e,t){const i=this.circuit.getChargesInCircuitElement(e.circuitElement),n=_.sortBy(i,"distance"),s=n.indexOf(e),r=n[s+1],o=n[s-1];if(r&&o){const i=r.distance-o.distance,n=e.distance;let s=o.distance+i/2;const a=Math.abs(s-n);if(Math.sign(s-n)===Math.sign(-e.circuitElement.currentProperty.get()*e.charge)){const i=Math.abs(68.75*t);a>i&&(sn&&(s=n+i)),s>=0&&s<=e.circuitElement.chargePathLength&&(e.distance=s)}}}propagate(e,t){const i=e.distance,n=-e.circuitElement.currentProperty.get()*e.charge;if(Math.abs(n)>1e-10){const s=i+25*n*t*this.scale;if(e.circuitElement.containsScalarPosition(s))e.distance=s;else{const t=n<0?-s:s-e.circuitElement.chargePathLength,i=s<0?e.circuitElement.startVertexProperty.get():e.circuitElement.endVertexProperty.get(),r=this.getPositions(e,t,i,0);if(r.length>0){const t=_.maxBy(r,"distanceToClosestElectron");e.circuitElement=t.circuitElement,e.distance=t.distance}}}}getPositions(e,t,i,n){const s=this.circuit,r=this.circuit.getNeighborCircuitElements(i),o=[];for(let a=0;a1e-10&&l.startVertexProperty.get()===i?(c=GD.clamp(t,0,l.chargePathLength),d=!0):h<-1e-10&&l.endVertexProperty.get()===i&&(c=GD.clamp(l.chargePathLength-t,0,l.chargePathLength),d=!0),d){const t=s.getChargesInCircuitElement(l),r=l.startVertexProperty.get()===i;let a=0;if(t.length>0)a=r?_.minBy(t,"distance").distance:l.chargePathLength-_.maxBy(t,"distance").distance,"number"==typeof c&&o.push({circuitElement:l,distance:c,distanceToClosestElectron:a});else if(n<20){const t=this.getPositions(e,0,l.getOppositeVertex(i),n+1);if(t.length>0){const e=_.minBy(t,"distanceToClosestElectron");"number"==typeof c&&o.push({circuitElement:l,distance:c,distanceToClosestElectron:e.distanceToClosestElectron+l.chargePathLength})}}}}return o}constructor(e){this.charges=e.charges,this.circuit=e,this.scale=1,this.timeScaleRunningAverage=new xw(30),this.timeScaleProperty=new H(1,{range:new D(0,1)})}};t.register("ChargeAnimator",uM);let pM=class extends Se.A{};pM.ELECTRONS=new pM,pM.CONVENTIONAL=new pM,pM.enumeration=new Ee.A(pM),t.register("CurrentType",pM);let mM=class extends Se.A{};mM.EXPLORE=new mM,mM.TEST=new mM,mM.enumeration=new Ee.A(mM),t.register("InteractionMode",mM);const gM=e=>e<0?WD.BACKWARD:e>0?WD.FORWARD:WD.UNSPECIFIED,AM=_.constant(!0);let yM=class e extends b.A{disposeCircuitElement(e){this.circuitElements.remove(e),this.groups.forEach(t=>t.includes(e)&&t.disposeElement(e))}createVertexPairArray(e,t){return[this.createVertex(e.plusXY(-t/2,0)),this.createVertex(e.plusXY(t/2,0))]}createVertex(e){return this.vertexGroup.createNextElement(e)}moveVerticesApart(e,t){const i=this.getNeighboringVertices(e),n=this.getNeighboringVertices(t);1!==i.length||e.blackBoxInterfaceProperty.get()?1!==n.length||t.blackBoxInterfaceProperty.get()||this.bumpAwaySingleVertex(t,n[0]):this.bumpAwaySingleVertex(e,i[0])}relayoutAllCharges(){this.circuitElements.forEach(e=>{e.chargeLayoutDirty=!0}),this.layoutChargesInDirtyCircuitElements()}bumpAwaySingleVertex(e,t){const i=e.positionProperty.value.distance(t.positionProperty.value);if(i<20){let i=t.positionProperty.value.minus(e.positionProperty.value);0===i.magnitude&&(i=new De.A(1,0));const n=i.normalized().times(-45);this.translateVertexGroup(e,n)}else{const n=Math.PI/4*100/i;this.rotateSingleVertexByAngle(e,t,n);const s=this.closestDistanceToOtherVertex(e);this.rotateSingleVertexByAngle(e,t,-2*n);const r=this.closestDistanceToOtherVertex(e);r<=s&&this.rotateSingleVertexByAngle(e,t,2*n)}}rotateSingleVertexByAngle(e,t,i){const n=e.positionProperty.get(),s=t.positionProperty.get(),r=n.distance(s),o=n.minus(s).angle,a=s.plus(De.A.createPolar(r,o+i));e.unsnappedPositionProperty.set(a),e.positionProperty.set(a)}closestDistanceToOtherVertex(e){let t=null;for(let i=0;i!e.blackBoxInterfaceProperty.value).forEach(e=>this.vertexGroup.disposeElement(e)),this.markDirty()}else this.circuitElements.clear(),this.groups.forEach(e=>e.clear()),this.vertexGroup.clear()}cutVertex(e){if(e.isDragged)return;let t=this.getNeighborCircuitElements(e);if(t.length<=1)return;t=t.filter(e=>e.interactiveProperty.get());const i=()=>t.map(t=>{const i=t.getOppositeVertex(e).positionProperty.get(),n=e.positionProperty.get();let s=i.minus(n);return 0===s.magnitude&&(s=De.A.createPolar(1,qe.A.nextDouble()*Math.PI*2)),s.withMagnitude(30)});let n=i(),s=n.map(e=>e.angle);t.length>2&&(t=_.sortBy(t,e=>{const i=t.indexOf(e);return s[i]}),n=i(),s=n.map(e=>e.angle));const r=2*Math.PI/t.length;let o=[];const a=_.sum(s)/s.length;if(2===t.length){const e=De.A.createPolar(30,a-r/t.length),i=De.A.createPolar(30,a+r/t.length),n=s[0]-a;o=n<0?[e,i]:[i,e]}else{const e=t.length<=5?30:30*t.length/5;t.forEach((t,i)=>{o.push(De.A.createPolar(e,r*i+s[0]))})}t.forEach((t,i)=>{const n=this.vertexGroup.createNextElement(e.positionProperty.get());t.replaceVertex(e,n),this.translateVertexGroup(n,o[i])}),e.blackBoxInterfaceProperty.get()||this.vertexGroup.disposeElement(e),this.markDirty()}translateVertexGroup(e,t){const i=this.findAllFixedVertices(e);for(let n=0;ne.blackBoxInterfaceProperty.get())}isSingle(e){return 1===this.getNeighborCircuitElements(e.startVertexProperty.get()).length&&1===this.getNeighborCircuitElements(e.endVertexProperty.get()).length}removeVertexIfOrphaned(e){0!==this.getNeighborCircuitElements(e).length||e.blackBoxInterfaceProperty.get()||e.isDisposed||this.vertexGroup.disposeElement(e)}getNeighborCircuitElements(e){return this.circuitElements.filter(t=>t.containsVertex(e))}getNeighborCircuitElementsForCircuitElement(e){return[...this.getNeighborCircuitElements(e.startVertexProperty.value),...this.getNeighborCircuitElements(e.endVertexProperty.value)].filter(t=>t!==e)}countCircuitElements(e){return this.circuitElements.count(t=>t.containsVertex(e))}getVoltageBetweenConnections(e,t,i){return null===e||null===t?null:this.areVerticesElectricallyConnected(e.vertex,t.vertex)?e.vertex.insideTrueBlackBoxProperty.get()&&!i||t.vertex.insideTrueBlackBoxProperty.get()&&!i?null:e.voltage-t.voltage:null}areVerticesElectricallyConnected(e,t){return this.searchVertices(e,(e,t)=>t.isTraversibleProperty.value).includes(t)}markDirty(){this.dirty=!0}connect(e,t){t.blackBoxInterfaceProperty.get()?this.connect(t,e):(this.circuitElements.forEach(i=>{i.containsVertex(t)&&(i.replaceVertex(t,e),i.connectedEmitter.emit())}),t.isDraggableProperty.value||(e.isDraggableProperty.value=t.isDraggableProperty.value),t.isCuttableProperty.value||(e.isCuttableProperty.value=t.isCuttableProperty.value),""===e.labelStringProperty.value&&(e.labelStringProperty.value=t.labelStringProperty.value),this.vertexGroup.disposeElement(t),this.markDirty(),e.relayerEmitter.emit())}step(e){this.stepActions.forEach(e=>e()),this.stepActions.length=0,this.timeProperty.value+=e;const t=this.circuitElements.filter(e=>e.step),i=this.circuitElements.filter(e=>e instanceof mk);if(t.forEach(t=>t.step(this.timeProperty.value,e,this)),this.dirty||t.length>0||i.length>0){oM.solveModifiedNodalAnalysis(this,e),this.dirty=!1,this.circuitElements.filter(e=>e instanceof fk).forEach(e=>{const t=t=>this.getNeighborCircuitElements(t).filter(t=>t!==e).filter(e=>Math.abs(e.currentProperty.value)>1e-4).length>0;t(e.startVertexProperty.value)||t(e.endVertexProperty.value)||e.clear()}),this.circuitChangedEmitter.emit()}this.determineSenses(),this.chargeAnimator.step(e)}layoutChargesInDirtyCircuitElements(){this.circuitElements.forEach(e=>this.layoutCharges(e))}isVertexAdjacent(e,t){return e!==t&&this.circuitElements.some(i=>i.containsBothVertices(e,t))}getNeighborVerticesInGroup(e,t){const i=[];for(let n=0;n{0===e.currentProperty.value&&(e.currentSenseProperty.value=WD.UNSPECIFIED)});const t=this.circuitElements.filter(e=>0!==e.currentProperty.value);for(;;){if(0===t.filter(e=>e.currentSenseProperty.value===WD.UNSPECIFIED).length)break;this.propagateSenses();const i=t.filter(e=>e.currentSenseProperty.value===WD.UNSPECIFIED);if(0===i.length)break;let n=!1;const s=i.filter(e=>e instanceof hk);if(s.length>0){const t=s[0],i=this.circuitElements.filter(e=>e instanceof hk&&e.currentSenseProperty.value!==WD.UNSPECIFIED&&e!==t);i.length>0&&(e.assignSense(t,i[0]),n=!0)}if(!n){i.sort((e,t)=>this.getNeighborCircuitElementsForCircuitElement(e).length-this.getNeighborCircuitElementsForCircuitElement(t).length);const e=i[0];e.currentSenseProperty.value=gM(e.currentProperty.value),n=!0}}}static assignSense(e,t){const i=e.currentProperty.value,n=t.currentProperty.value,s=t.currentSenseProperty.value,r=n>=0&&s===WD.FORWARD?"positive":n>=0&&s===WD.BACKWARD||n<0&&s===WD.FORWARD?"negative":n<0&&s===WD.BACKWARD?"positive":"error";var o;e.currentSenseProperty.value="positive"===r?gM(i):(o=i)<0?WD.FORWARD:o>0?WD.BACKWARD:WD.UNSPECIFIED}propagateSenses(){const t=this.circuitElements.filter(e=>e.currentSenseProperty.value!==WD.UNSPECIFIED);if(t.length>0){const i=[];t.forEach(e=>{i.includes(e.startVertexProperty.value)||i.push(e.startVertexProperty.value),i.includes(e.endVertexProperty.value)||i.push(e.endVertexProperty.value)});const n=[];for(;i.length>0;){const t=i.pop();if(!n.includes(t)){const s=this.getNeighborCircuitElements(t);for(let r=0;re!==o&&e.currentSenseProperty.value!==WD.UNSPECIFIED);t.length>0&&e.assignSense(o,t[0])}n.includes(a)||i.includes(a)||i.push(a)}n.push(t)}}}}searchVertices(e,t){const i=[],n=[e],s=[];for(;n.length>0;){const e=n.pop();if(!s.includes(e)){const i=this.getNeighborCircuitElements(e);for(let r=0;r0;){const n=t.pop();if(!i.includes(n)){i.push(n);for(let i=0;it.circuitElement===e)}findAllFixedVertices(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>!0;return this.searchVertices(e,(e,i,n)=>t?i instanceof ok&&t(e,i,n):i instanceof ok)}getSelectedVertex(){const e=this.selectionProperty.value;return e instanceof KD?e:null}getDropTarget(e,t,i){mM.TEST;let n=this.vertexGroup.filter(t=>{if(this.isVertexAdjacent(e,t))return!1;if(t===e)return!1;if(t.isDragged)return!1;if(!(e.unsnappedPositionProperty.get().distance(t.positionProperty.get())<30))return!1;if(!t.attachableProperty.get())return!1;for(let r=0;r{if(!i.blackBoxInterfaceProperty.get()&&!t.containsPoint(i.positionProperty.get()))return!1;const n=i.positionProperty.get().minus(e.positionProperty.get());if(!i.blackBoxInterfaceProperty.get()&&!t.containsPoint(i.positionProperty.get()))return!0;for(let r=0;r!e.outerWireStub)}if(0===n.length)return null;return _.sortBy(n,t=>e.unsnappedPositionProperty.get().distance(t.positionProperty.get()))[0]}checkCurrentConservation(e){console.log("####### "+e),this.vertexGroup.forEach(e=>{const t=this.getNeighborCircuitElements(e);let i=0;t.forEach(t=>{const n=(t.startVertexProperty.value===e?1:-1)*t.currentProperty.value;i+=n}),console.log(`${e.index}: ${i}`)})}conserveCurrent(e,t){const i=this.getNeighborCircuitElements(e);let n=0;if(i.forEach(t=>{const i=(t.startVertexProperty.value===e?1:-1)*t.currentProperty.value;n+=i}),Math.abs(n)>1e-10){const s=i.filter(e=>!t.includes(e)),r=n/s.length;s.forEach(i=>{const n=i.startVertexProperty.value===e?1:-1;i.currentProperty.value+=-n*r,t.push(i)})}}flip(e){const t=e.startVertexProperty.value,i=e.endVertexProperty.value;e.startVertexProperty.value=i,e.endVertexProperty.value=t;const n=e.currentSenseProperty.value===WD.FORWARD?WD.BACKWARD:e.currentSenseProperty.value===WD.BACKWARD?WD.FORWARD:WD.UNSPECIFIED;e.currentSenseProperty.value=n,e.chargeLayoutDirty=!0,this.layoutChargesInDirtyCircuitElements(),this.markDirty()}layoutCharges(e){if(e.chargeLayoutDirty){e.chargeLayoutDirty=!1;const t=this.getChargesInCircuitElement(e),i=fD.CHARGE_SEPARATION/2,n=e.chargePathLength-i,s=i,r=n-s,o=Math.ceil(r/fD.CHARGE_SEPARATION),a=r/(o-1);for(let l=0;l0&&t[0].charge===h&&t[0].circuitElement===e&&t[0].visibleProperty===this.showCurrentProperty){const i=t.shift();i.circuitElement=e,i.distance=r,i.updatePositionAndAngle()}else{const t=new hM(e,r,this.showCurrentProperty,h);this.charges.add(t)}}this.charges.removeAll(t)}}toString(){return this.circuitElements.map(e=>e.constructor.name).join(", ")}reset(){this.clear(),this.showCurrentProperty.reset(),this.currentTypeProperty.reset(),this.wireResistivityProperty.reset(),this.sourceResistanceProperty.reset(),this.chargeAnimator.reset(),this.selectionProperty.reset()}constructor(e,t,i,n){super({tandem:i,phetioType:fM,phetioState:!1}),this.viewTypeProperty=e,this.addRealBulbsProperty=t;const r=n;this.includeACElements=r.includeACElements,this.includeLabElements=r.includeLabElements,this.blackBoxStudy=r.blackBoxStudy,this.wireResistivityProperty=new H(fD.WIRE_RESISTIVITY_RANGE.min,{tandem:i.parentTandem.createTandem("wireResistivityProperty"),range:fD.WIRE_RESISTIVITY_RANGE,phetioFeatured:!0}),this.sourceResistanceProperty=new H(fD.DEFAULT_BATTERY_RESISTANCE,{tandem:i.parentTandem.createTandem("sourceResistanceProperty"),range:fD.BATTERY_RESISTANCE_RANGE,phetioFeatured:!0}),this.circuitElements=K({phetioState:!0,phetioType:K.ObservableArrayIO(_f(_D.CircuitElementIO)),tandem:i.createTandem("circuitElements"),phetioDocumentation:"All Circuit Elements, used for state save/restore",phetioFeatured:!0,elementAddedEmitterOptions:{phetioFeatured:!0},elementRemovedEmitterOptions:{phetioFeatured:!0},lengthPropertyOptions:{phetioFeatured:!0}}),this.charges=K(),this.currentTypeProperty=new lh("electrons"===s.currentType?pM.ELECTRONS:pM.CONVENTIONAL,{tandem:i.parentTandem.createTandem("currentTypeProperty"),phetioFeatured:!0}),this.currentTypeProperty.lazyLink(()=>this.relayoutAllCharges()),this.showCurrentProperty=new c(s.showCurrent,{tandem:i.parentTandem.createTandem("showCurrentProperty"),phetioFeatured:!0}),this.timeProperty=new H(0),this.chargeAnimator=new uM(this);const o=this.markDirty.bind(this);this.circuitElements.addItemAddedListener(e=>{e.getCircuitProperties().forEach(e=>e.lazyLink(o)),e instanceof mk&&(e.clearEmitter.addListener(o),e.disposeEmitterCircuitElement.addListener(()=>{e.clearEmitter.removeListener(o)})),e.chargeLayoutDirty=!0;const t=()=>this.markAllConnectedCircuitElementsDirty(e.startVertexProperty.get());e.lengthProperty&&(e.lengthProperty.link(t),e.disposeEmitterCircuitElement.addListener(()=>e.lengthProperty.unlink(t))),this.markDirty(),e.currentSenseProperty.lazyLink(a)}),this.circuitElements.addItemRemovedListener(e=>{this.removeVertexIfOrphaned(e.startVertexProperty.get()),this.removeVertexIfOrphaned(e.endVertexProperty.get()),this.selectionProperty.get()===e&&(this.selectionProperty.value=null),e.getCircuitProperties().forEach(e=>e.unlink(o)),this.charges.removeAll(this.getChargesInCircuitElement(e)),e.currentSenseProperty.unlink(a),this.markDirty()}),this.charges.addItemRemovedListener(e=>e.dispose()),this.circuitChangedEmitter=new v.A,this.vertexDroppedEmitter=new v.A({parameters:[{valueType:KD}]}),this.componentEditedEmitter=new v.A,this.selectionProperty=new h.A(null,{tandem:i.createTandem("selectionProperty"),phetioValueType:(0,k.A)(_f(pn([_D.CircuitElementIO,KD.VertexIO]))),phetioFeatured:!0});const a=()=>{this.dirty=!0,this.circuitChangedEmitter.emit()};this.vertexGroup=new nk((e,t)=>new KD(t,this.selectionProperty,{tandem:e,phetioType:KD.VertexIO}),[new De.A(-1e3,0)],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(KD.VertexIO),tandem:i.createTandem("vertexGroup")});const l=this.vertexGroup.createArchetype(this.vertexGroup.tandem.createTandem("archetypeStartVertex"),[new De.A(0,0)]),d=this.vertexGroup.createArchetype(this.vertexGroup.tandem.createTandem("archetypeEndVertex"),[new De.A(100,0)]);this.vertexGroup.elementCreatedEmitter.addListener(e=>{e.positionProperty.link(a);this.vertexGroup.filter(t=>e===t);this.selectionProperty.value=null}),this.stepActions=[],this.vertexDroppedEmitter.addListener(e=>{this.stepActions.push(()=>{const t=this.getNeighboringVertices(e);t.push(e);const i=[];if(t.forEach(e=>{this.vertexGroup.forEach(t=>{e!==t&&i.push({v1:e,v2:t})})}),i.length>0){const e=e=>e.v2.unsnappedPositionProperty.get().distance(e.v1.unsnappedPositionProperty.get()),t=_.minBy(i,e);e(t)<20&&!t.v1.isDragged&&!t.v2.isDragged&&this.moveVerticesApart(t.v1,t.v2)}})}),this.sourceResistanceProperty.link(o);const u=()=>[l,d];this.wireGroup=new nk((e,t,i)=>new kk(t,i,this.wireResistivityProperty,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("wireGroup")}),this.batteryGroup=new nk((e,t,i)=>new lM(t,i,this.sourceResistanceProperty,"normal",e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("batteryGroup")});const p=this.includeLabElements&&!this.includeACElements;this.extremeBatteryGroup=p?new nk((e,t,i)=>new lM(t,i,this.sourceResistanceProperty,"high-voltage",e,{voltage:1e3,numberOfDecimalPlaces:lM.HIGH_VOLTAGE_DECIMAL_PLACES}),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("extremeBatteryGroup"),phetioDynamicElementName:"extremeBattery"}):null,this.acVoltageGroup=this.includeACElements?new nk((e,t,i)=>new hk(t,i,this.sourceResistanceProperty,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("acVoltageGroup")}):null,this.resistorGroup=new nk((e,t,i)=>new Sk(t,i,Ek.RESISTOR,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Sk.ResistorIO),tandem:i.createTandem("resistorGroup")}),this.extremeResistorGroup=p?new nk((e,t,i)=>new Sk(t,i,Ek.EXTREME_RESISTOR,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Sk.ResistorIO),tandem:i.createTandem("extremeResistorGroup")}):null,this.householdObjectGroup=new nk((e,t,i,n)=>new Sk(t,i,n,e),()=>[...u(),Ek.COIN],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Sk.ResistorIO),tandem:i.createTandem("householdObjectGroup")}),this.fuseGroup=new nk((e,t,i)=>new Ak(t,i,e,this),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("fuseGroup")}),this.seriesAmmeterGroup=this.includeLabElements?new nk((e,t,i)=>new Tk(t,i,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("seriesAmmeterGroup")}):null,this.extremeLightBulbGroup=p?new nk((e,t,i)=>wk.createAtPosition(t,i,this,fD.HIGH_RESISTANCE,this.viewTypeProperty,e,{isExtreme:!0}),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("extremeLightBulbGroup")}):null,this.capacitorGroup=this.includeACElements?new nk((e,t,i)=>new gk(t,i,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("capacitorGroup")}):null,this.inductorGroup=this.includeACElements?new nk((e,t,i)=>new fk(t,i,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("inductorGroup")}):null,this.switchGroup=new nk((e,t,i)=>new Dk(t,i,e,this),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("switchGroup")}),this.lightBulbGroup=new nk((e,t,i)=>new wk(t,i,fD.DEFAULT_RESISTANCE,this.viewTypeProperty,e),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("lightBulbGroup")}),this.realLightBulbGroup=this.includeLabElements&&!this.includeACElements?new nk((e,t,i)=>new wk(t,i,fD.DEFAULT_RESISTANCE,this.viewTypeProperty,e,{isReal:!0,isEditablePropertyOptions:{tandem:P.A.OPT_OUT}}),u,{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(_D.CircuitElementIO),tandem:i.createTandem("realLightBulbGroup")}):null,this.groups=[this.wireGroup,this.batteryGroup,this.resistorGroup,this.switchGroup,this.lightBulbGroup,this.fuseGroup,this.householdObjectGroup,...this.extremeBatteryGroup?[this.extremeBatteryGroup]:[],...this.extremeResistorGroup?[this.extremeResistorGroup]:[],...this.extremeLightBulbGroup?[this.extremeLightBulbGroup]:[],...this.realLightBulbGroup?[this.realLightBulbGroup]:[],...this.seriesAmmeterGroup?[this.seriesAmmeterGroup]:[],...this.acVoltageGroup?[this.acVoltageGroup]:[],...this.capacitorGroup?[this.capacitorGroup]:[],...this.inductorGroup?[this.inductorGroup]:[]],this.dirty=!1}};const fM=new w.A("CircuitStateIO",{supertype:rk,valueType:yM,methods:{getValue:{returnType:dx.A,parameterTypes:[],implementation:function(){return phet.phetio.phetioEngine.phetioStateEngine.getState(this)},documentation:"Gets the current value of the circuit on this screen."},getValidationError:{returnType:(0,k.A)(B.A),parameterTypes:[dx.A],implementation:function(e){const t=Array.from(Object.keys(e));for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:e.voltageProperty.value;this.vertex=e,this.voltage=i,this.circuitElement=t}};bM.VoltageConnectionIO=new w.A("VoltageConnectionIO",{valueType:bM,documentation:"In order to describe how a Voltmeter probe is connected to a circuit. It indicates the measured Vertex or Circuit Element, and the voltage at that point. For non-ideal wires, the voltage indicates the partial voltage dropped up to that point on the wire, like a potentiometer.",toStateObject:e=>({connection:_f(w.A.ObjectIO).toStateObject(e.circuitElement||e.vertex),voltage:e.voltage}),fromStateObject:e=>null,stateSchema:{connection:_f(w.A.ObjectIO),voltage:M.A}}),t.register("VoltageConnection",bM);let PM=class extends XD{reset(){super.reset(),this.voltageProperty.reset(),this.redProbePositionProperty.reset(),this.blackProbePositionProperty.reset()}constructor(e,t){super(e,t),this.voltageProperty=new h.A(null,{tandem:e.createTandem("voltageProperty"),units:"V",phetioValueType:(0,k.A)(M.A),phetioReadOnly:!0,phetioFeatured:!0}),this.redProbePositionProperty=new ph(De.A.ZERO,{tandem:e.createTandem("redProbePositionProperty"),phetioFeatured:!0}),this.blackProbePositionProperty=new ph(De.A.ZERO,{tandem:e.createTandem("blackProbePositionProperty"),phetioFeatured:!0}),this.blackProbeConnectionProperty=new h.A(null,{tandem:e.createTandem("blackProbeConnectionProperty"),phetioValueType:(0,k.A)(bM.VoltageConnectionIO),phetioReadOnly:!0,phetioFeatured:!0}),this.redProbeConnectionProperty=new h.A(null,{tandem:e.createTandem("redProbeConnectionProperty"),phetioValueType:(0,k.A)(bM.VoltageConnectionIO),phetioReadOnly:!0,phetioFeatured:!0}),this.isActiveProperty.link(e=>{e||(this.blackProbeConnectionProperty.value=null,this.redProbeConnectionProperty.value=null)})}};t.register("Voltmeter",PM);const VM=new e.A("twixt");let wM=class e{static polynomialEaseInValue(e,t){return Math.pow(t,e)}static polynomialEaseOutValue(e,t){return 1-Math.pow(1-t,e)}static polynomialEaseInOutValue(t,i){return i<=.5?.5*Math.pow(2*i,t):1-e.polynomialEaseInOutValue(t,1-i)}static polynomialEaseInDerivative(e,t){return e*Math.pow(t,e-1)}static polynomialEaseOutDerivative(e,t){return e*Math.pow(1-t,e-1)}static polynomialEaseInOutDerivative(t,i){return i<=.5?Math.pow(2,t-1)*t*Math.pow(i,t-1):e.polynomialEaseInOutDerivative(t,1-i)}static polynomialEaseInSecondDerivative(e,t){return(e-1)*e*Math.pow(t,e-2)}static polynomialEaseOutSecondDerivative(e,t){return-(e-1)*e*Math.pow(1-t,e-2)}static polynomialEaseInOutSecondDerivative(t,i){return i<=.5?Math.pow(2,t-1)*(t-1)*t*Math.pow(i,t-2):-e.polynomialEaseInOutSecondDerivative(t,1-i)}static polynomialEaseIn(t){return new e(e.polynomialEaseInValue.bind(null,t),e.polynomialEaseInDerivative.bind(null,t),e.polynomialEaseInSecondDerivative.bind(null,t))}static polynomialEaseOut(t){return new e(e.polynomialEaseOutValue.bind(null,t),e.polynomialEaseOutDerivative.bind(null,t),e.polynomialEaseOutSecondDerivative.bind(null,t))}static polynomialEaseInOut(t){return new e(e.polynomialEaseInOutValue.bind(null,t),e.polynomialEaseInOutDerivative.bind(null,t),e.polynomialEaseInOutSecondDerivative.bind(null,t))}constructor(e,t,i){this.value=e,this.derivative=t,this.secondDerivative=i}};wM.LINEAR=wM.polynomialEaseIn(1),wM.QUADRATIC_IN=wM.polynomialEaseIn(2),wM.QUADRATIC_OUT=wM.polynomialEaseOut(2),wM.QUADRATIC_IN_OUT=wM.polynomialEaseInOut(2),wM.CUBIC_IN=wM.polynomialEaseIn(3),wM.CUBIC_OUT=wM.polynomialEaseOut(3),wM.CUBIC_IN_OUT=wM.polynomialEaseInOut(3),wM.QUARTIC_IN=wM.polynomialEaseIn(4),wM.QUARTIC_OUT=wM.polynomialEaseOut(4),wM.QUARTIC_IN_OUT=wM.polynomialEaseInOut(4),wM.QUINTIC_IN=wM.polynomialEaseIn(5),wM.QUINTIC_OUT=wM.polynomialEaseOut(5),wM.QUINTIC_IN_OUT=wM.polynomialEaseInOut(5),VM.register("Easing",wM);const vM=wM;let EM=class{step(e){const t=this.ratio;if(t<1){let i=t+e/.35;i>1&&(i=1),this.ratio=i;const n=vM.CUBIC_IN_OUT.value(i)-vM.CUBIC_IN_OUT.value(t);return this.zoomCallback(n*this.totalDelta),i>=1}return t>=1}constructor(e,t,i){this.easing=vM.CUBIC_IN_OUT,this.ratio=0,this.totalDelta=t-e,this.zoomCallback=i}};t.register("ZoomAnimation",EM);let SM=class{stepSingleStep(){_.times(6,()=>this.stepOnce(1/60)),this.circuit.layoutChargesInDirtyCircuitElements()}stepOnce(e){this.isValueDepictionEnabledProperty.value&&this.circuit.step(e),this.stopwatch.step(e),this.stepEmitter.emit(e)}step(e){if(!(e>=fD.MAX_DT)){if(this.zoomAnimation){this.zoomAnimation.step(e)&&(this.zoomAnimation=null)}(this.isPlayingProperty.value||this.circuit.dirty)&&this.stepOnce(this.isPlayingProperty.value?1/60:fD.PAUSED_DT),this.circuit.layoutChargesInDirtyCircuitElements()}}reset(){this.isValueDepictionEnabledProperty.reset(),this.showLabelsProperty.reset(),this.showValuesProperty.reset(),this.modeProperty.reset(),this.circuit.reset(),this.voltmeters.forEach(e=>e.reset()),this.ammeters.forEach(e=>e.reset()),this.viewTypeProperty.reset(),this.zoomLevelProperty.reset(),this.animatedZoomScaleProperty.reset(),this.stopwatch.reset(),this.isPlayingProperty.reset(),this.addRealBulbsProperty.reset(),this.zoomAnimation=null}constructor(e,t,i,n){const r=(0,o.Ay)()({revealing:!0,blackBoxStudy:!1,showNoncontactAmmeters:!0},n);this.zoomAnimation=null,this.viewTypeProperty=new lh(bk.LIFELIKE,{tandem:i.createTandem("viewTypeProperty"),phetioFeatured:!0}),this.addRealBulbsProperty=new c(s.addRealBulbs,{tandem:t?i.createTandem("addRealBulbsProperty"):P.A.OPT_OUT,phetioFeatured:!0,hasListenerOrderDependencies:!0}),this.isShowNoncontactAmmeters=r.showNoncontactAmmeters;const a=i.createTandem("circuit");this.circuit=new yM(this.viewTypeProperty,this.addRealBulbsProperty,a,{blackBoxStudy:r.blackBoxStudy,includeLabElements:t,includeACElements:e});const l=i.createTandem("meters");this.voltmeters=[new PM(l.createTandem("voltmeter1"),1),new PM(l.createTandem("voltmeter2"),2)],this.ammeters=[new JD(this.isShowNoncontactAmmeters?l.createTandem("ammeter1"):P.A.OPT_OUT,1),new JD(this.isShowNoncontactAmmeters?l.createTandem("ammeter2"):P.A.OPT_OUT,2)],[...this.voltmeters,...this.ammeters].forEach(e=>{e.isActiveProperty.link(e=>{e&&(this.circuit.selectionProperty.value=null)})});const h=r.blackBoxStudy?i.createTandem("blackBoxStudy"):P.A.OPT_OUT;this.isValueDepictionEnabledProperty=new c(!s.showDepictValuesToggleButton,{tandem:h.createTandem("isValueDepictionEnabledProperty"),phetioDocumentation:"whether the light bulb brightness and ammeter/voltmeter readouts, charges, flame, etc. can be seen"}),this.showLabelsProperty=new c(!0,{tandem:i.createTandem("showLabelsProperty"),phetioFeatured:!0}),this.showValuesProperty=new c(!1,{tandem:i.createTandem("showValuesProperty"),phetioFeatured:!0}),this.zoomLevelProperty=new H(fD.ZOOM_SCALES.indexOf(1),{numberType:"Integer",range:new D(0,fD.ZOOM_SCALES.length-1),tandem:i.createTandem("zoomLevelProperty"),phetioDocumentation:"This Property is controlled by the zoom buttons. It is an integer index that tells the sim how much to scale the view. Smaller values are more zoomed out. See zoomScaleProperty for the actual scale value.",phetioFeatured:!0}),this.zoomScaleProperty=new de([this.zoomLevelProperty],e=>fD.ZOOM_SCALES[e],{validValues:fD.ZOOM_SCALES,tandem:i.createTandem("zoomScaleProperty"),phetioValueType:M.A,phetioDocumentation:"Scale that is applied to the view. This Property is derived from zoomLevelProperty, which is controlled by the zoom buttons."}),this.animatedZoomScaleProperty=new H(this.zoomScaleProperty.get()),this.zoomScaleProperty.lazyLink(e=>{f.value?this.animatedZoomScaleProperty.value=e:this.zoomAnimation=new EM(this.animatedZoomScaleProperty.get(),e,e=>{const t=this.animatedZoomScaleProperty.value+e,i=Math.min(...fD.ZOOM_SCALES),n=Math.max(...fD.ZOOM_SCALES),s=GD.clamp(t,i,n);this.animatedZoomScaleProperty.value=s})}),this.isPlayingProperty=new c(!0,{tandem:e?i.createTandem("isPlayingProperty"):P.A.OPT_OUT,phetioFeatured:!0}),this.modeProperty=new lh(mM.EXPLORE,{tandem:h.createTandem("modeProperty"),phetioDocumentation:"For Circuit Construction Kit: Black Box Study"});if(s.showDepictValuesToggleButton){const e=()=>{this.isValueDepictionEnabledProperty.value=!1};this.circuit.vertexGroup.elementCreatedEmitter.addListener(e),this.circuit.vertexGroup.elementDisposedEmitter.addListener(e),this.circuit.componentEditedEmitter.addListener(e),this.circuit.circuitElements.lengthProperty.link(e)}const d=new v.A({tandem:a.createTandem("circuitChangedEmitter"),phetioDocumentation:"Emits when any circuit model parameter or topology has changed",phetioReadOnly:!0,phetioFeatured:!0}),u=()=>d.emit();this.circuit.vertexGroup.elementCreatedEmitter.addListener(u),this.circuit.vertexGroup.elementDisposedEmitter.addListener(u),this.circuit.componentEditedEmitter.addListener(u),this.isValueDepictionEnabledProperty.link(()=>this.circuit.chargeAnimator.timeScaleRunningAverage.clear()),this.viewTypeProperty.link(()=>{this.circuit.circuitElements.forEach(e=>{e instanceof wk&&e.updatePathLength()}),this.circuit.relayoutAllCharges()}),this.revealingProperty=new c(r.revealing,{tandem:h.createTandem("revealingProperty"),phetioDocumentation:"For Circuit Construction Kit: Black Box Study"}),this.blackBoxBounds=null,this.stopwatch=new zD({tandem:e?i.createTandem("stopwatch"):P.A.OPT_OUT}),this.stepEmitter=new v.A({parameters:[{valueType:"number"}]})}};t.register("CircuitConstructionKitModel",SM);let TM=class extends SM{constructor(e,t){super(!1,!0,e,t)}};mD.register("LabModel",TM);const CM=TM;let IM=class extends CM{constructor(e){super(e,{showNoncontactAmmeters:!0})}};mD.register("CodapModel",IM);const xM=IM;let DM=class extends Ui{constructor(e,t){super();const i=e/3;this.rect(0,0,i,t),this.rect(2*i,0,i,t)}};va.register("PauseIconShape",DM);let kM=class extends vx{constructor(e,t){const i=(0,o.Ay)()({radius:_P.PLAY_CONTROL_BUTTON_RADIUS,includeGlobalHotkey:!0,endPlayingLabel:jc.a11y.playControlButton.pauseStringProperty},t),n=i.radius,s=.6*i.radius;super(e,new ga(new DM(s,n),{fill:"black"}),i)}};va.register("PlayPauseButton",kM);let MM=class extends Dr{dispose(){this.lighterPaintProperty.dispose(),this.lightPaintProperty.dispose(),this.darkPaintProperty.dispose(),this.darkerPaintProperty.dispose(),super.dispose()}constructor(e,t){super();const i=(0,o.Ay)()({baseColor:new jr(80,130,230),lightFactor:.5,lighterFactor:.1,darkFactor:.5,darkerFactor:.1,cornerRadius:10,lightSource:"leftTop",lightOffset:.525,darkOffset:.375},t),n=i.lightSource.includes("left"),s=i.lightSource.includes("Top"),r=i.cornerRadius;this.lighterPaintProperty=new Mb(i.baseColor,{luminanceFactor:i.lightFactor+i.lighterFactor}),this.lightPaintProperty=new Mb(i.baseColor,{luminanceFactor:i.lightFactor}),this.darkPaintProperty=new Mb(i.baseColor,{luminanceFactor:-i.darkFactor}),this.darkerPaintProperty=new Mb(i.baseColor,{luminanceFactor:-i.darkFactor-i.darkerFactor});const a=s?this.lighterPaintProperty:this.darkerPaintProperty,l=n?this.lightPaintProperty:this.darkPaintProperty,h=n?this.darkPaintProperty:this.lightPaintProperty,c=s?this.darkerPaintProperty:this.lighterPaintProperty,d=i.lightOffset*r,u=i.darkOffset*r,p=s?d:u,m=n?d:u,g=n?u:d,A=s?u:d,y=Va.roundedBounds(e,r,r,{pickable:!1}),f=Va.roundedBounds(e,r,r,{pickable:!1});y.fill=new sb(y.left,0,y.right,0).addColorStop(0,l).addColorStop(m/f.width,i.baseColor).addColorStop(1-g/f.width,i.baseColor).addColorStop(1,h),f.fill=new sb(0,f.top,0,f.bottom).addColorStop(0,a).addColorStop(p/f.height,new de([a],e=>e.withAlpha(0))).addColorStop(1-A/f.height,new de([c],e=>e.withAlpha(0))).addColorStop(1,c);const b=(new Ui).moveTo(0,0).arc(0,0,r,-Math.PI/2,0,!1).close(),P={leftTop:-Math.PI/2,rightTop:0,rightBottom:Math.PI/2,leftBottom:Math.PI}[i.lightSource],V=e.eroded(r),w=new ga(b,{x:n?V.minX:V.maxX,y:s?V.minY:V.maxY,rotation:P,fill:new ob(0,0,0,0,0,r).addColorStop(0,i.baseColor).addColorStop(1-d/r,i.baseColor).addColorStop(1,this.lighterPaintProperty),pickable:!1}),v=new ga(b,{x:n?V.maxX:V.minX,y:s?V.maxY:V.minY,rotation:P+Math.PI,fill:new ob(0,0,0,0,0,r).addColorStop(0,i.baseColor).addColorStop(1-u/r,i.baseColor).addColorStop(1,this.darkerPaintProperty),pickable:!1}),E=Va.roundedBounds(e,r,r,{stroke:new de([h],e=>e.withAlpha(.4))});this.addChild(y),this.addChild(f),this.addChild(w),this.addChild(v),this.addChild(E),this.mutate(i)}};va.register("ShadedRectangle",MM);let BM=class extends Ui{constructor(e){super();const t=.3*e/2,i=.6*e,n=e,s=.5*e/2,r=.75*e/2;this.moveTo(s,-t),this.lineTo(i,-t),this.arc(i,n/2,n/2+t,-Math.PI/2,Math.PI/2,!1),this.lineTo(0,n+t),this.lineTo(0,n-t),this.lineTo(i,n-t),this.arc(i,n/2,n/2-t,Math.PI/2,-Math.PI/2,!0),this.lineTo(s,t),this.lineTo(s,r),this.lineTo(-s,0),this.lineTo(s,-r),this.close()}};va.register("UTurnArrowShape",BM);let OM=class e extends(Ah(Dr)){dispose(){this.disposeStopwatchNode(),super.dispose()}static getDecimalPlaces(e,t){const i=Math.pow(10,t);e=(0,tt.q)(e*i)/i;let n=""+(0,tt.q)(e%1*i);for(;n.length{const n=i.showAsMinutesAndSeconds?LM(t):Math.floor(t),s=e.getDecimalPlaces(t,i.numberOfDecimalPlaces),r="string"==typeof i.units?i.units:i.units.value,o=i.smallNumberFont+"px";return Qe.A.fillIn(i.valueUnitsPattern,{value:`${n}${s}`,units:`${r}`})}}constructor(t,i){const n=(0,o.Ay)()({cursor:"pointer",numberDisplayRange:zD.ZERO_TO_ALMOST_SIXTY,iconHeight:10,iconFill:"black",iconLineWidth:1,backgroundBaseColor:"rgb( 80, 130, 230 )",buttonBaseColor:"#DFE0E1",resetButtonSoundPlayer:Wm.get("pushButton"),xSpacing:6,ySpacing:6,xMargin:8,yMargin:8,numberDisplayOptions:{numberFormatter:e.RICH_TEXT_MINUTES_AND_SECONDS,numberFormatterDependencies:[jc.stopwatchValueUnitsPatternStringProperty],useRichText:!0,textOptions:{font:e.DEFAULT_FONT},align:"right",cornerRadius:4,xMargin:4,yMargin:2,maxWidth:150,pickable:!1},dragBoundsProperty:null,dragListenerOptions:{start:_.noop},keyboardDragListenerOptions:{},interactiveHighlightEnabled:!1,otherControls:[],includePlayPauseResetButtons:!0,visibleProperty:t.isVisibleProperty,tandem:P.A.REQUIRED,phetioFeatured:!0},i),s=new tS(t.timeProperty,n.numberDisplayRange,n.numberDisplayOptions);let r=null,a=null;if(n.includePlayPauseResetButtons){const e=new ga(new BM(n.iconHeight),{fill:n.iconFill}),i=e.height,s=.8*i,l=new ga(new wx(s,i),{fill:n.iconFill}),h=new ga(new DM(.75*s,i),{fill:n.iconFill}),c=new uP(t.isRunningProperty,h,l,(0,o.sF)({baseColor:n.buttonBaseColor,touchAreaXDilation:5,touchAreaXShift:5,touchAreaYDilation:8,tandem:n.tandem.createTandem("playPauseButton"),phetioVisiblePropertyInstrumented:!1,phetioEnabledPropertyInstrumented:!1},n.playPauseButtonOptions)),d=new Zb((0,o.sF)({listener:()=>{t.isRunningProperty.set(!1),t.timeProperty.set(0)},touchAreaXDilation:5,touchAreaXShift:-5,touchAreaYDilation:8,content:e,baseColor:n.buttonBaseColor,soundPlayer:n.resetButtonSoundPlayer,tandem:n.tandem.createTandem("resetButton"),phetioVisiblePropertyInstrumented:!1,phetioEnabledPropertyInstrumented:!1},n.resetButtonOptions));r=new Nf({spacing:n.xSpacing,children:[d,c]});const u=e=>{d.enabled=e>0,c.enabled=e{t.timeProperty.unlink(u),d.dispose(),c.dispose()}}const l=new Ff({spacing:n.ySpacing,children:[s,...r?[r]:[],...n.otherControls]}),h=new Dr;l.boundsProperty.link(()=>{const e=new Me(-n.xMargin,-n.yMargin,l.width+n.xMargin,l.height+n.yMargin);h.children=[new MM(e,{baseColor:n.backgroundBaseColor,tagName:"div",focusable:!0})]}),n.children=[h,l],super(n),phet.chipper.queryParameters.dev&&this.addChild(new xh(3,{fill:"red"}));const c=e=>{e?this.moveToFront():this.interruptSubtreeInput()};t.isVisibleProperty.link(c);const d=e=>this.setTranslation(e);t.positionProperty.link(d),this.dragListener=null,this.keyboardDragListener=null;let u=null;if(n.dragBoundsProperty){this.interactiveHighlightEnabled=!0,u=new de([this.boundsProperty,n.dragBoundsProperty],(e,t)=>{const i=this.localToParentPoint(De.A.ZERO);return new Me(t.minX-(e.minX-i.x),t.minY-(e.minY-i.y),t.maxX-(e.maxX-i.x),t.maxY-(e.maxY-i.y))},{valueComparisonStrategy:"equalsFunction"}),n.dragBoundsProperty.link(()=>this.interruptSubtreeInput()),u.link(e=>{e.containsPoint(t.positionProperty.value)||(t.positionProperty.value=e.closestPointTo(t.positionProperty.value))});const e=(0,o.sF)({targetNode:this,positionProperty:t.positionProperty,dragBoundsProperty:u,tandem:n.tandem.createTandem("dragListener")},n.dragListenerOptions),i=e.start;e.start=(e,t)=>{this.moveToFront(),i(e,t)},this.dragListener=new Zm(e),h.addInputListener(this.dragListener);const s=(0,o.sF)({positionProperty:t.positionProperty,dragBoundsProperty:u,tandem:n.tandem.createTandem("keyboardDragListener")},n.keyboardDragListenerOptions);this.keyboardDragListener=new _m(s),this.addInputListener(this.keyboardDragListener),this.groupFocusHighlight=!0,this.addInputListener({down:()=>this.moveToFront()}),h.addInputListener({focus:()=>this.moveToFront()})}this.addLinkedElement(t,{tandemName:"stopwatch"}),this.disposeStopwatchNode=()=>{t.isVisibleProperty.unlink(c),t.positionProperty.unlink(d),s.dispose(),this.dragListener&&(h.removeInputListener(this.dragListener),this.dragListener.dispose()),this.keyboardDragListener&&(this.removeInputListener(this.keyboardDragListener),this.keyboardDragListener.dispose()),u&&u.dispose(),a&&a()},this.numberDisplay=s}};function LM(e){const t=e=(0,tt.q)(100*e)/100,i=Math.floor(t/60),n=Math.floor(t)%60;return`${i<10?"0"+i:""+i}:${n<10?"0"+n:""+n}`}OM.NUMBER_FONT_FAMILY='"Trebuchet MS", "Lucida Grande", monospace',OM.DEFAULT_FONT=new Wc({size:20,family:OM.NUMBER_FONT_FAMILY}),OM.PLAIN_TEXT_MINUTES_AND_SECONDS=e=>LM(e)+OM.getDecimalPlaces(e,2),OM.RICH_TEXT_MINUTES_AND_SECONDS=OM.createRichTextNumberFormatter({showAsMinutesAndSeconds:!0,numberOfDecimalPlaces:2}),va.register("StopwatchNode",OM);let RM=class extends $P{constructor(e){const t=(0,o.Ay)()({radius:20,direction:"forward",iconFill:"black",fireOnHold:!0,soundPlayer:Wm.get("stepForward"),innerContent:jc.a11y.stepButton.stepForwardStringProperty,appendDescription:!0},e);t.xContentOffset="forward"===t.direction?.075*t.radius:-.15*t.radius,t.xMargin=t.yMargin=.525*t.radius;const i=.15*t.radius,n=.9*t.radius,s=.65*t.radius,r=n,a=new Va(0,0,i,n,{fill:t.iconFill}),l=new ga((new Ui).moveTo(0,r/2).lineTo(s,0).lineTo(0,-r/2).close(),{fill:t.iconFill});t.content=new Nf({children:[a,l],spacing:i,sizable:!1,rotation:"forward"===t.direction?0:Math.PI}),super(t)}};va.register("StepButton",RM);let NM=class extends RM{constructor(e){super((0,o.Ay)()({direction:"backward",soundPlayer:Wm.get("stepBackward")},e))}};va.register("StepBackwardButton",NM);let qM=class extends RM{constructor(e){super((0,o.Ay)()({direction:"forward"},e))}};va.register("StepForwardButton",qM);let FM=class extends Nf{getPlayPauseButtonCenter(){return this.playPauseButton.center}dispose(){this.disposePlayPauseStepButtonGroup(),super.dispose()}constructor(e,t){const i=(0,o.Ay)()({includeStepForwardButton:!0,includeStepBackwardButton:!1,playPauseStepXSpacing:10,playPauseButtonOptions:{radius:_P.DEFAULT_BUTTON_RADIUS,touchAreaDilation:5},stepBackwardButtonOptions:{radius:15,touchAreaDilation:5},stepForwardButtonOptions:{radius:15,touchAreaDilation:5},resize:!1,tandem:P.A.REQUIRED,tandemNameSuffix:"ButtonGroup",tagName:"div",appendDescription:!0,playingHelpText:null,pausedHelpText:null,phetioEnabledPropertyInstrumented:!0},t);if(!i.stepForwardButtonOptions.enabledProperty||!i.stepBackwardButtonOptions.enabledProperty){const t=de.not(e);i.stepForwardButtonOptions.enabledProperty||(i.stepForwardButtonOptions.enabledProperty=t),i.stepBackwardButtonOptions.enabledProperty||(i.stepBackwardButtonOptions.enabledProperty=t)}const n=[],s=new kM(e,(0,o.sF)({tandem:i.tandem.createTandem("playPauseButton"),phetioDocumentation:"Button to control the animation in the simulation. This will also stop the model from stepping."},i.playPauseButtonOptions));n.push(s);let r=null;i.includeStepForwardButton&&(r=new qM((0,o.sF)({tandem:i.tandem.createTandem("stepForwardButton"),phetioDocumentation:"Progress the simulation a single model step forwards."},i.stepForwardButtonOptions)),n.push(r));let a=null;i.includeStepBackwardButton&&(a=new NM((0,o.sF)({phetioDocumentation:"Progress the simulation a single model step backwards.",tandem:i.tandem.createTandem("stepBackwardButton")},i.stepBackwardButtonOptions)),n.unshift(a)),i.spacing=i.playPauseStepXSpacing,i.children=n,super(i),this.playPauseButton=s;const l=i.includeStepForwardButton||i.includeStepBackwardButton,h=i.playingHelpText||(l?jc.a11y.playPauseStepButtonGroup.playingHelpTextStringProperty:null),c=i.pausedHelpText||(l?jc.a11y.playPauseStepButtonGroup.pausedHelpTextStringProperty:null),d=e=>{this.accessibleHelpText=e?h:c};e.link(d),this.disposePlayPauseStepButtonGroup=()=>{e.unlink(d),s.dispose(),r&&r.dispose(),a&&a.dispose()}}};va.register("PlayPauseStepButtonGroup",FM);let HM=class extends Se.A{};HM.FAST=new HM,HM.NORMAL=new HM,HM.SLOW=new HM,HM.enumeration=new Ee.A(HM),va.register("TimeSpeed",HM);const YM=new Map;YM.set(HM.FAST,{stringProperty:jc.speed.fastStringProperty,tandemName:"fastRadioButton"}),YM.set(HM.NORMAL,{stringProperty:jc.speed.normalStringProperty,tandemName:"normalRadioButton"}),YM.set(HM.SLOW,{stringProperty:jc.speed.slowStringProperty,tandemName:"slowRadioButton"});let GM=class extends Jx{constructor(e,t,i){const n=(0,o.Ay)()({labelOptions:{font:new Wc(14),maxWidth:130},spacing:9,tandem:P.A.REQUIRED,tandemNameSuffix:"RadioButtonGroup",labelTagName:"h4",accessibleName:jc.a11y.timeControlNode.simSpeedsStringProperty,accessibleHelpText:jc.a11y.timeControlNode.simSpeedDescriptionStringProperty},i);n.radioButtonOptions&&void 0!==n.radioButtonOptions.radius||(n.radioButtonOptions||(n.radioButtonOptions={}),n.radioButtonOptions.radius=new Rc("test",n.labelOptions).height/2),super(e,t.map(e=>{const t=YM.get(e).stringProperty;return{value:e,createNode:()=>new Rc(t,n.labelOptions),tandemName:YM.get(e).tandemName,options:{accessibleName:t}}}),n)}};va.register("TimeSpeedRadioButtonGroup",GM);const UM=[HM.NORMAL,HM.SLOW];let zM=class extends Dr{addPushButton(e,t){this.pushButtonGroup.insertChild(t,e),this.pushButtonGroup.updateLayout()}constructor(e,t){const i=(0,o.Ay)()({timeSpeedProperty:null,timeSpeeds:UM,speedRadioButtonGroupPlacement:"right",flowBoxSpacing:40,flowBoxAlign:"center",disabledOpacity:Vf.DISABLED_OPACITY,tandem:P.A.REQUIRED,tandemNameSuffix:"TimeControlNode",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,excludeInvisibleChildrenFromBounds:!0,tagName:"div",labelTagName:"h3",labelContent:jc.a11y.timeControlNode.labelStringProperty},t);super(),this.pushButtonGroup=new FM(e,(0,o.sF)({tandem:i.tandem.createTandem("playPauseStepButtonGroup")},i.playPauseStepButtonOptions)),this.speedRadioButtonGroup=null,null!==i.timeSpeedProperty&&(this.speedRadioButtonGroup=new GM(i.timeSpeedProperty,i.timeSpeeds,(0,o.sF)({tandem:i.tandem.createTandem("speedRadioButtonGroup")},i.speedRadioButtonGroupOptions)),this.addDisposable(this.speedRadioButtonGroup));const n=[this.pushButtonGroup];this.speedRadioButtonGroup&&("left"===i.speedRadioButtonGroupPlacement||"top"===i.speedRadioButtonGroupPlacement?n.unshift(this.speedRadioButtonGroup):n.push(this.speedRadioButtonGroup));const s=new Ef({children:n,spacing:i.flowBoxSpacing,orientation:"left"===i.speedRadioButtonGroupPlacement||"right"===i.speedRadioButtonGroupPlacement?"horizontal":"vertical",align:i.flowBoxAlign});i.children=[s],oP.create(this,[s],e=>{const t=this.globalToLocalBounds(this.pushButtonGroup.playPauseButton.globalBounds),i=t.centerX,n=t.centerY;e.translation=e.translation.plusXY(-pE(i,1e-6),-pE(n,1e-6))}),this.addDisposable(this.pushButtonGroup),this.mutate(i)}};va.register("TimeControlNode",zM);let WM=class extends hS{constructor(e,t,i,n){const s=n;super(e,(0,o.sF)({fill:ED.panelFillProperty,stroke:ED.panelStrokeProperty,cornerRadius:fD.CORNER_RADIUS,titleXMargin:10,buttonXMargin:8,buttonYMargin:8,titleYMargin:4,titleXSpacing:14,contentYSpacing:0,lineWidth:fD.PANEL_LINE_WIDTH,minWidth:fD.RIGHT_SIDE_PANEL_MIN_WIDTH,expandedProperty:new c(!1,{tandem:i.createTandem("expandedProperty"),phetioFeatured:!0}),expandCollapseButtonOptions:{touchAreaYDilation:8,touchAreaXDilation:8},titleNode:new Rc(t,{fontSize:fD.FONT_SIZE,maxWidth:175,fill:ED.textFillProperty,tandem:i.createTandem("titleText")}),tandem:i},s))}};t.register("CCKCAccordionBox",WM);let QM=class extends sP{constructor(e,t,i){super(e,t,i=(0,o.sF)({boxWidth:16},i))}};t.register("CCKCCheckbox",QM);const KM=eD.resistanceOhmsSymbolStringProperty;let jM=class extends Ff{constructor(e,t,i,n,s){const r=(e,t)=>new Rc(e,{fontSize:12,fill:ED.textFillProperty,tandem:t,maxWidth:45}),a=fD.BATTERY_RESISTANCE_RANGE,l=(a.max+a.min)/2,h=new MS(e,a,{trackSize:fD.SLIDER_TRACK_SIZE,thumbSize:fD.THUMB_SIZE,majorTickLength:fD.MAJOR_TICK_LENGTH,minorTickLength:fD.MINOR_TICK_LENGTH,constrainValue:e=>a.constrainValue(GD.roundSymmetric(e)),phetioVisiblePropertyInstrumented:!1,tandem:s.createTandem("slider")});h.addMajorTick(a.min,r(eD.tinyStringProperty,s.createTandem("tinyLabelText"))),h.addMajorTick(l),h.addMajorTick(a.max,r(new TV(KM,{resistance:GD.toFixed(a.max,0)},{tandem:s.createTandem("maxLabelText").createTandem(Rc.STRING_PROPERTY_TANDEM_NAME)}),s.createTandem("maxLabelText")));for(let o=a.min+1;o1e-6&&h.addMinorTick(o);super({children:[new Rc(i,(0,o.sF)({fill:ED.textFillProperty,tandem:s.createTandem("titleText")},n)),h],tandem:s,visiblePropertyOptions:{phetioFeatured:!0}})}};t.register("SourceResistanceControl",jM);const ZM=eD.lotsStringProperty,_M=eD.tinyStringProperty,XM=eD.wireResistivityStringProperty,JM={fontSize:12,maxWidth:45,fill:ED.textFillProperty};let $M=class extends Ff{constructor(e,t,i,n){const s=new Rc(XM,(0,o.sF)({tandem:n.createTandem("titleText"),fill:ED.textFillProperty},i)),r=new MS(e,fD.WIRE_RESISTIVITY_RANGE,{trackSize:fD.SLIDER_TRACK_SIZE,thumbSize:fD.THUMB_SIZE,majorTickLength:fD.MAJOR_TICK_LENGTH,phetioVisiblePropertyInstrumented:!1,tandem:n.createTandem("slider")});r.addMajorTick(0,new Rc(_M,JM)),r.addMajorTick(fD.WIRE_RESISTIVITY_RANGE.max,new Rc(ZM,JM)),super({children:[s,r],tandem:n,visiblePropertyOptions:{phetioFeatured:!0}})}};t.register("WireResistivityControl",$M);let eB=class extends WM{constructor(e,t,i,n,s){const r=(0,o.Ay)()({showRealBulbsCheckbox:!0},s),a={fontSize:fD.FONT_SIZE,maxWidth:120,fill:ED.textFillProperty},l=[new $M(e.wireResistivityProperty,t,a,n.createTandem("wireResistivityControl")),new jM(e.sourceResistanceProperty,t,i,a,n.createTandem("sourceResistanceControl"))];if(r.showRealBulbsCheckbox){const t=n.createTandem("addRealBulbsCheckbox");l.push(new QM(e.addRealBulbsProperty,new Rc(eD.addRealBulbsStringProperty,(0,o.sF)({tandem:t.createTandem("labelText")},a)),{tandem:t}))}super(t.createBox(new Ff({align:"left",spacing:15,children:l})),eD.advancedStringProperty,n,{titleAlignX:"left",titleXSpacing:10}),this.mutate(r)}};t.register("AdvancedAccordionBox",eB);const tB={radius:50,innerRadius:35,handleWidth:50,handleHeight:30,handleCornerRadius:10,lightAngle:1.35*Math.PI,color:"#008541",sensorTypeFunction:nB()};let iB=class extends Dr{dispose(){this.brighter5Property.dispose(),this.brighter4Property.dispose(),this.brighter3Property.dispose(),this.brighter2Property.dispose(),this.darker2Property.dispose(),this.darker3Property.dispose(),super.dispose()}constructor(e){const t=(0,o.hz)()({},tB,e);super();const i=t.radius,n=i+t.handleHeight,s=t.handleWidth,r=Math.min(t.innerRadius,t.radius),a=t.handleCornerRadius,l=new ai(new De.A(0,0),i,i,0,.8*Math.PI,Math.PI*(1-.8),!1).start;function h(){return(new Ui).moveTo(0,n).arc(-s/2+a,n-a,a,Math.PI/2,Math.PI,!1).lineTo(-s/2,i+10).quadraticCurveTo(-s/2,i,l.x,l.y).ellipticalArc(0,0,i,i,0,.8*Math.PI,Math.PI*(1-.8),!1).quadraticCurveTo(s/2,i,+s/2,i+10).arc(s/2-a,n-a,a,0,Math.PI/2,!1).close()}const c=h().moveTo(r,0).arc(0,0,r,2*Math.PI,0,!0).close(),d=t.lightAngle,u=c.bounds.center,p=De.A.createPolar(1,d),m=c.intersection(new Ct(u,p)),g=m[m.length-1],A=(g?g.point:De.A.ZERO).plus(p.timesScalar(1)),y=De.A.createPolar(1,d+Math.PI),f=c.intersection(new Ct(u,y)),b=f[f.length-1],P=(b?b.point:De.A.ZERO).plus(y.timesScalar(1));this.brighter5Property=new Mb(t.color,{luminanceFactor:.5}),this.brighter4Property=new Mb(t.color,{luminanceFactor:.4}),this.brighter3Property=new Mb(t.color,{luminanceFactor:.3}),this.brighter2Property=new Mb(t.color,{luminanceFactor:.2}),this.darker2Property=new Mb(t.color,{luminanceFactor:-.2}),this.darker3Property=new Mb(t.color,{luminanceFactor:-.3});const V=new ga(c,{stroke:new sb(A.x,A.y,P.x,P.y).addColorStop(0,this.brighter2Property).addColorStop(1,this.darker2Property),fill:new sb(A.x,A.y,P.x,P.y).addColorStop(0,this.brighter5Property).addColorStop(.03,this.brighter4Property).addColorStop(.07,this.brighter4Property).addColorStop(.11,this.brighter2Property).addColorStop(.3,t.color).addColorStop(.8,this.darker2Property).addColorStop(1,this.darker3Property),lineWidth:2}),w=new ga(c,{fill:t.color,scale:new De.A(.9,.93+.01*t.handleHeight/tB.handleHeight),centerX:V.centerX,stroke:new de([this.brighter3Property],e=>e.withAlpha(.5)),lineWidth:1.2,y:2}),v=[];t.sensorTypeFunction&&v.push(t.sensorTypeFunction(i)),v.push(V,w),t.children=v.concat(t.children||[]);const E=h();t.mouseArea=t.mouseArea||E,t.touchArea=t.touchArea||E,this.mutate(t)}};function nB(e){const t=(0,o.Ay)()({centerColor:"white",middleColor:"#E6F5FF",edgeColor:"#C2E7FF"},e);return e=>new xh(e,{fill:new ob(.15*-e,.15*-e,0,.15*-e,.2*-e,.6*e).addColorStop(0,t.centerColor).addColorStop(.4,t.middleColor).addColorStop(1,t.edgeColor)})}iB.DEFAULT_PROBE_NODE_OPTIONS=tB,iB.glass=nB,iB.crosshairs=function(e){const t=(0,o.Ay)()({stroke:"black",lineWidth:3,intersectionRadius:8},e);return e=>{const i={stroke:t.stroke,lineWidth:t.lineWidth};return new Dr({children:[new ac(-e,0,-t.intersectionRadius,0,i),new ac(+e,0,+t.intersectionRadius,0,i),new ac(0,-e,0,-t.intersectionRadius,i),new ac(0,+e,0,+t.intersectionRadius,i)]})}},va.register("ProbeNode",iB);let sB=class extends ga{dispose(){this.multilink.dispose(),super.dispose()}constructor(e,t,i,n,s){super(null,s=(0,o.Ay)()({stroke:"black"},s)),this.multilink=Ve.multilink([e,t,i,n],(e,t,i,n)=>{this.shape=(new Ui).moveToPoint(e).cubicCurveToPoint(e.plus(t),i.plus(n),i)})}};va.register("WireNode",sB);const rB=new Image,oB=Cl.A.createLock(rB);rB.onload=oB,rB.src="data:image/png;base64,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";const aB=rB;let lB=class extends Ff{dispose(){this.disposeProbeTextNode(),this.readoutText.dispose(),this.titleText.dispose(),super.dispose()}constructor(e,t,i,n,s){const r=(0,o.Ay)()({spacing:s&&s.seriesAmmeter?.5:3,seriesAmmeter:!1,pickable:!1},s),a=new Rc(e,{fontSize:r.seriesAmmeter?46:40,maxWidth:120,fill:ED.textFillProperty,tandem:n.createTandem("probeReadoutText"),stringPropertyOptions:{phetioReadOnly:!0}}),l=new Va(0,0,140,52,{cornerRadius:10,lineWidth:2,stroke:jr.BLACK,fill:jr.WHITE}),h=e=>{a.string===$E.NO_VALUE?a.centerX=l.centerX:a.right=l.right-10,a.centerY=l.centerY};a.boundsProperty.link(h);const c=e=>a.setVisible(e);t.link(c);const d=new Rc(i,{fontSize:r.seriesAmmeter?33:42,maxWidth:140,fill:ED.textFillProperty,tandem:r.seriesAmmeter?n.createTandem("probeTitleText"):P.A.OPT_OUT});r.children=[d,new Dr({children:[l,a]})],r.seriesAmmeter&&(r.scale=.37),super(r),this.readoutText=a,this.titleText=d,this.disposeProbeTextNode=()=>{a.boundsProperty.unlink(h),l.dispose(),t.unlink(c)}}};t.register("ProbeTextNode",lB);const hB=eD.currentStringProperty;let cB=class extends Dr{startDrag(e){this.dragHandler&&this.dragHandler.press(e)}constructor(e,t,i){const n=(0,o.Ay)()({isIcon:!1,visibleBoundsProperty:null,showResultsProperty:new c(!0),blackBoxStudy:!1,showPhetioIndex:!1,phetioVisiblePropertyInstrumented:!1,tandem:P.A.REQUIRED},i),s=n.tandem,r=n.isIcon?P.A.OPT_OUT:s,a=new ph(new De.A(0,0)),l=new ph(new De.A(0,0)),h=new sB(a,new ph(new De.A(0,-30)),l,new ph(new De.A(0,15)),{stroke:jr.BLACK,lineWidth:3,pickable:!1}),d=new ch([e.currentProperty,nD,eD.currentUnitsStringProperty],e=>pk.createCurrentReadout(e,n.blackBoxStudy)),u=new ch([hB],t=>n.showPhetioIndex?t+" "+e.phetioIndex:t),p=new lB(d,n.showResultsProperty,u,r,{centerX:aB.width/2,centerY:aB.height/2+7}),m=new Jh(aB,{scale:.5,cursor:"pointer",children:[p]}),g=new iB({cursor:"pointer",sensorTypeFunction:iB.crosshairs(),scale:.5,handleWidth:50,color:"#2c2c2b",innerRadius:43,children:[new Va(0,52,36,19,{cornerRadius:6,centerX:0,fill:"#e79547"})]});n.children=[m,h,g],super(n),this.probeNode=g,this.ammeter=e;const A=()=>{if(e.isDraggingProbesWithBodyProperty.get()){const t=e=>n.visibleBoundsProperty?n.visibleBoundsProperty.value.eroded(fD.DRAG_BOUNDS_EROSION).closestPointTo(e):e;e.probePositionProperty.set(t(e.bodyPositionProperty.value.plusXY(40,-80)))}};if(e.bodyPositionProperty.link(e=>{m.centerTop=e,a.value=m.centerTop.plusXY(0,8),A()}),e.probePositionProperty.link(e=>{this.probeNode.centerTop=e,l.value=this.probeNode.centerBottom}),n.isIcon)this.dragHandler=null;else{e.isActiveProperty.linkAttribute(this,"visible"),e.isActiveProperty.link(A);const i=new de([n.visibleBoundsProperty],e=>e.eroded(fD.DRAG_BOUNDS_EROSION)),s=new _c({positionProperty:e.probePositionProperty,useParentOffset:!0,tandem:r.createTandem("probeDragHandler"),start:()=>this.moveToFront(),dragBoundsProperty:i});this.dragHandler=new _c({useParentOffset:!0,positionProperty:e.bodyPositionProperty,tandem:r.createTandem("dragListener"),start:()=>this.moveToFront(),end:function(){e.droppedEmitter.emit(m.globalBounds),e.isDraggingProbesWithBodyProperty.set(!1)},targetNode:this,dragBoundsProperty:i}),m.addInputListener(this.dragHandler),i.link(t=>{e.bodyPositionProperty.value=t.closestPointTo(e.bodyPositionProperty.value),e.probePositionProperty.value=t.closestPointTo(e.probePositionProperty.value)}),this.probeNode.addInputListener(s);const o=()=>{if(e.isActiveProperty.get()){const i=t.getCurrent(this.probeNode);e.setConnectionAndCurrent(i)}};t.circuit.circuitChangedEmitter.addListener(o),e.probePositionProperty.link(o)}n.isIcon&&(this.touchArea=this.bounds.copy(),this.mouseArea=this.bounds.copy(),this.cursor="pointer"),this.addLinkedElement(e,{tandemName:"ammeter"})}};t.register("AmmeterNode",cB);let dB=class extends Dr{constructor(e){const t=(0,o.Ay)()({glassRadius:15,glassFill:"white",glassStroke:"black",icon:null},e),i=.25*t.glassRadius,n=new xh(t.glassRadius,{fill:t.glassFill,stroke:t.glassStroke,lineWidth:i}),s=t.glassRadius+i/2,r=new ac(s*Math.cos(Math.PI/4),s*Math.sin(Math.PI/4),t.glassRadius*Math.cos(Math.PI/4)+.65*t.glassRadius,t.glassRadius*Math.sin(Math.PI/4)+.65*t.glassRadius,{stroke:t.glassStroke,lineWidth:.4*t.glassRadius,lineCap:"round"});t.children=[n,r],t.icon&&(t.icon.center=n.center,t.children.push(t.icon)),super(t)}};va.register("MagnifyingGlassNode",dB);const uB=new Ne(20,5);let pB=class extends Va{constructor(e){const t=(0,o.Ay)()({size:uB,fill:"black"},e);super(0,0,t.size.width,t.size.height,t)}};va.register("MinusNode",pB);const mB=pB;let gB=class extends Ef{dispose(){this.disposeZoomButtonGroup(),super.dispose()}constructor(e,t,i,n){const s=e.range,r=(0,o.Ay)()({applyZoomIn:e=>e+1,applyZoomOut:e=>e-1,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,buttonOptions:{fireOnHold:!0,fireOnHoldDelay:600,fireOnHoldInterval:250,phetioVisiblePropertyInstrumented:!1,phetioEnabledPropertyInstrumented:!1},spacing:0,orientation:"horizontal",align:"center",tandem:P.A.REQUIRED,tandemNameSuffix:"ZoomButtonGroup",phetioFeatured:!0},n),a=r.spacing/2,l=Math.max(0,"horizontal"===r.orientation?r.mouseAreaXDilation-a:0),h=Math.max(0,"horizontal"===r.orientation?r.touchAreaXDilation-a:0),c=Math.max(0,"vertical"===r.orientation?r.mouseAreaYDilation-a:0),d=Math.max(0,"vertical"===r.orientation?r.touchAreaYDilation-a:0),u=new Zb((0,o.sF)({content:t,listener:()=>{e.value=r.applyZoomIn(e.value)},touchAreaXDilation:r.touchAreaXDilation,touchAreaYDilation:r.touchAreaYDilation,mouseAreaXDilation:r.mouseAreaXDilation,mouseAreaYDilation:r.mouseAreaYDilation,touchAreaXShift:h,touchAreaYShift:-d,mouseAreaXShift:l,mouseAreaYShift:-c,accessibleName:jc.a11y.zoomInStringProperty,tandem:r.tandem.createTandem("zoomInButton")},r.buttonOptions)),p=new Zb((0,o.sF)({content:i,listener:()=>{e.value=r.applyZoomOut(e.value)},touchAreaXDilation:r.touchAreaXDilation,touchAreaYDilation:r.touchAreaYDilation,mouseAreaXDilation:r.mouseAreaXDilation,mouseAreaYDilation:r.mouseAreaYDilation,touchAreaXShift:-h,touchAreaYShift:d,mouseAreaXShift:-l,mouseAreaYShift:c,accessibleName:jc.a11y.zoomOutStringProperty,tandem:r.tandem.createTandem("zoomOutButton")},r.buttonOptions));r.children="horizontal"===r.orientation?[p,u]:[u,p];const m=e=>{p.enabled=s.contains(r.applyZoomOut(e)),u.enabled=s.contains(r.applyZoomIn(e))};e.link(m),super(r),this.zoomOutButton=p,this.zoomInButton=u,this.addLinkedElement(e,{tandemName:"zoomProperty"}),this.disposeZoomButtonGroup=()=>{u.dispose(),p.dispose(),e.unlink(m)}}};va.register("ZoomButtonGroup",gB);let AB=class extends gB{constructor(e,t){const i=(0,o.Ay)()({magnifyingGlassNodeOptions:{glassRadius:15},buttonOptions:{baseColor:jP.BUTTON_YELLOW}},t),n=i.magnifyingGlassNodeOptions.glassRadius,s={size:new Ne(1.3*n,n/3)};super(e,new dB((0,o.sF)({icon:new lV(s)},i.magnifyingGlassNodeOptions)),new dB((0,o.sF)({icon:new mB(s)},i.magnifyingGlassNodeOptions)),i)}};va.register("MagnifyingGlassZoomButtonGroup",AB);let yB=class extends AB{constructor(e,t){super(e,t=(0,o.sF)({spacing:20,buttonOptions:{buttonAppearanceStrategy:Kb.ThreeDAppearanceStrategy,baseColor:jP.BUTTON_YELLOW,phetioReadOnly:!0},magnifyingGlassNodeOptions:{scale:.7},touchAreaXDilation:9,touchAreaYDilation:10},t))}};t.register("CCKCZoomButtonGroup",yB);const fB=eD.animationSpeedLimitReachedStringProperty;let bB=class extends Rc{constructor(e,t,i){super("",{fontSize:16,maxWidth:530}),Ve.multilink([e,t,i,fB],(e,t,i)=>{const n=100*e,s=n<99.5,r=e<.01?"< 1":GD.toFixed(n,0);this.setString(Qe.A.fillIn(fB,{percent:r})),this.visible=s&&t&&i})}};t.register("ChargeSpeedThrottlingReadoutNode",bB);let PB=class extends $P{constructor(e){super((0,o.sF)({baseColor:jP.BUTTON_YELLOW,xMargin:10,yMargin:10},e))}};t.register("CCKCRoundPushButton",PB);let VB=class extends PB{constructor(e,t){const i=new ga("M59.42,9.597v7.807c0,0.719-0.32,1.331-0.957,1.84c-0.641,0.508-1.411,0.762-2.312,0.762v3.254 c0,0.894-0.398,1.659-1.199,2.296s-1.762,0.956-2.887,0.956H4.666c-1.125,0-2.086-0.319-2.887-0.956S0.58,24.152,0.58,23.259V3.741 c0-0.894,0.398-1.659,1.199-2.297C2.58,0.809,3.541,0.489,4.666,0.489h47.398c1.125,0,2.086,0.319,2.887,0.955 c0.801,0.638,1.199,1.403,1.199,2.297v3.253c0.901,0,1.672,0.255,2.312,0.764C59.1,8.265,59.42,8.878,59.42,9.597z M52.88,17.403 h3.271V9.597H52.88V3.741c0-0.189-0.074-0.345-0.227-0.467c-0.153-0.122-0.351-0.184-0.589-0.184H4.666 c-0.238,0-0.433,0.062-0.589,0.184C3.925,3.396,3.85,3.552,3.85,3.741v19.518c0,0.189,0.075,0.345,0.228,0.467 c0.156,0.121,0.351,0.184,0.589,0.184h47.398c0.238,0,0.436-0.062,0.589-0.184c0.152-0.122,0.227-0.277,0.227-0.467V17.403z M43.614,2.819v21.486H3.866V2.819H43.614z",{scale:.45,fill:jr.BLACK}),n="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z".split("M"),s="M"+n[1],r="M"+n[2];super((0,o.Ay)()({touchAreaDilation:5,content:new Ff({spacing:3,children:[new ga(s,{fill:jr.BLACK,scale:.035}),i,new ga(r,{fill:jr.BLACK,scale:.035})]}),listener:()=>{const t=e.selectionProperty.value;t instanceof lM&&(e.flip(t),e.componentEditedEmitter.emit())},isDisposable:!1},t))}};t.register("BatteryReverseButton",VB);const wB=new Ui("M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z").makeImmutable();let vB=class extends PB{constructor(e,t){super({touchAreaDilation:5,content:new ga(wB,{fill:"black",scale:.8*fD.FONT_AWESOME_ICON_SCALE}),listener:()=>{const t=e.selectionProperty.value;t instanceof _D&&(t.startVertexProperty.value.isDragged||t.endVertexProperty.value.isDragged||e.disposeCircuitElement(t))},isDisposable:!1,tandem:t,phetioVisiblePropertyInstrumented:!1})}};t.register("CCKCTrashButton",vB);let EB=class e extends Nf{constructor(t,i,n,s,r,a,l){var h;n.lazyLink(()=>r.componentEditedEmitter.emit());const c=(0,o.Ay)()({delta:.01,titleNodeOptions:{maxWidth:e.NUMBER_CONTROL_ELEMENT_MAX_WIDTH,font:fD.DEFAULT_FONT,fill:ED.textFillProperty},numberDisplayOptions:{maxWidth:94,valuePattern:i,decimalPlaces:a,textOptions:{font:fD.DEFAULT_FONT,fill:ED.textFillProperty}},layoutFunction:aS.createLayoutFunction1({arrowButtonsXSpacing:9}),sliderOptions:{thumbTouchAreaYDilation:5,thumbSize:new Ne(10,20),trackSize:new Ne(120,4)},tandem:P.A.OPT_OUT,isDisposable:!1,getAdditionalVisibilityProperties:e=>[]},l);super({children:[new aS(t,n,s,c)]}),h=this;const d=function(){for(var e=arguments.length,t=new Array(e),i=0;i{if(t instanceof hk&&u&&Ve.unmultilink(u),e instanceof _D){const t=c.getAdditionalVisibilityProperties(e);u=Ve.multilinkAny([e.isEditableProperty,...t],d)}})}};EB.NUMBER_CONTROL_ELEMENT_MAX_WIDTH=115,t.register("CircuitElementNumberControl",EB);let SB=class extends Dr{constructor(e){const t=(0,o.Ay)()({radius:20,lineWidth:5,stroke:"red",fill:null},e),i=new xh(t.radius,{lineWidth:t.lineWidth,stroke:t.stroke,fill:t.fill}),n=new ac(0,0,2*t.radius,0,{lineWidth:t.lineWidth,stroke:t.stroke,rotation:Math.PI/4,center:i.center});t.children=[i,n],super(t)}};va.register("BannedNode",SB);const TB=Tt(.032,0,0,0,-.032,0,0,0,1);let CB=class extends PB{constructor(e,t){const i=new ga(new Ui("M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z").transformed(TB),{scale:.45,fill:jr.BLACK,center:De.A.ZERO});super((0,o.Ay)()({touchAreaDilation:5,content:new Dr({children:[i,new SB({lineWidth:3,radius:17})]}),listener:()=>{const t=e.selectionProperty.value;t instanceof mk&&t.clear()},isDisposable:!1},t));const n=e=>{this.visible=e};e.selectionProperty.link((e,t)=>{t instanceof mk&&t.isClearableProperty.unlink(n),e instanceof mk&&e.isClearableProperty.link(n)})}};t.register("ClearDynamicsButton",CB);let IB=class extends PB{constructor(e,t){const i=(new Ui).moveTo(0,0).zigZagToPoint(new De.A(35,0),4.7,4,!1),n=new Dr({children:[new ga(i,{stroke:"black",lineWidth:1.2,centerX:0,centerY:0}),new xh(2.2,{fill:"black",centerX:0,centerY:0})],scale:.9});super((0,o.Ay)()({enabledPropertyOptions:{tandem:P.A.OPT_OUT},touchAreaDilation:5,content:n,listener:()=>{const t=e.selectionProperty.value;t instanceof Ak&&(t.resetFuse(),e.componentEditedEmitter.emit())},isDisposable:!1},t));const s=e=>this.setEnabled(e);e.selectionProperty.link((e,t)=>{t instanceof Ak&&t.isTrippedProperty.unlink(s),e instanceof Ak&&e.isTrippedProperty.link(s)})}};t.register("FuseRepairButton",IB);const xB=["pdomTimerDelay","pdomTimerInterval","accessibleRoleDescription"],DB=(e,t)=>{const i=Go("AccessibleNumberSpinner",xB,class extends(LE(e,t)){set pdomTimerDelay(e){this._pdomTimerDelay=e,this._callbackTimer&&(this._callbackTimer.delay=e)}get pdomTimerDelay(){return this._pdomTimerDelay}set pdomTimerInterval(e){this._pdomTimerInterval=e,this._callbackTimer&&(this._callbackTimer.interval=e)}get pdomTimerInterval(){return this._pdomTimerInterval}set accessibleRoleDescription(e){this._accessibleRoleDescription=e,this.setPDOMAttribute("aria-roledescription",e)}get accessibleRoleDescription(){return this._accessibleRoleDescription}_accessibleNumberSpinnerHandleKeyDown(e){this.handleKeyDown(e),this._emitKeyState(e.domEvent,!0)}_emitKeyState(e,t){(0,L.A)(e,{valueType:Event}),Gn.A.isAnyKeyEvent(e,[Gn.A.KEY_UP_ARROW,Gn.A.KEY_RIGHT_ARROW])?this.pdomIncrementDownEmitter.emit(t):Gn.A.isAnyKeyEvent(e,[Gn.A.KEY_DOWN_ARROW,Gn.A.KEY_LEFT_ARROW])&&this.pdomDecrementDownEmitter.emit(t)}dispose(){this._disposeAccessibleNumberSpinner(),super.dispose()}constructor(){for(var e=arguments.length,i=new Array(e),n=0;n{if(this.enabledProperty.get()&&Gn.A.isRangeKey(e.domEvent)){const t=e.domEvent;t.preventDefault(),t.metaKey||this._callbackTimer.isRunning()||(this._accessibleNumberSpinnerHandleKeyDown(e),a=this._accessibleNumberSpinnerHandleKeyDown.bind(this,e),l=t,this._callbackTimer.addCallback(a),this._callbackTimer.start())}},keyup:e=>{const t=Gn.A.getEventCode(e.domEvent);Gn.A.isRangeKey(e.domEvent)&&(l&&t===Gn.A.getEventCode(l)&&(this._emitKeyState(e.domEvent,!1),this._callbackTimer.stop(!1),this._callbackTimer.removeCallback(a),a=null,l=null),this.handleKeyUp(e))},blur:e=>{a&&(this._emitKeyState(l,!1),this._callbackTimer.stop(!1),this._callbackTimer.removeCallback(a)),this.handleBlur(e)},input:this.handleInput.bind(this),change:this.handleChange.bind(this)};this.addInputListener(h),this._disposeAccessibleNumberSpinner=()=>{this._callbackTimer.dispose(),this.pdomIncrementDownEmitter.dispose(),this.pdomDecrementDownEmitter.dispose(),this.removeInputListener(h)}}});return i.prototype._mutatorKeys=xB.concat(i.prototype._mutatorKeys),i};Vb.register("AccessibleNumberSpinner",DB);const kB=DB;let MB=class extends(kB(Dr,0)){dispose(){this.disposeNumberSpinner(),super.dispose()}constructor(e,t,i){const n=(0,o.Ay)()({arrowsSoundPlayer:Wm.get("pushButton"),arrowsPosition:"bothRight",arrowsScale:null,arrowButtonFill:"white",arrowButtonStroke:"black",arrowButtonLineWidth:1,deltaValue:1,xSpacing:5,ySpacing:3,numberDisplayOptions:{cornerRadius:5,backgroundStroke:"black"},touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,valueProperty:e,enabledRangeProperty:t,disabledOpacity:Vf.DISABLED_OPACITY,interactiveHighlight:"invisible",tandem:P.A.REQUIRED,tandemNameSuffix:"Spinner",phetioFeatured:!0,phetioEnabledPropertyInstrumented:!0},i),s=n.incrementFunction||(e=>e+n.deltaValue),r=n.decrementFunction||(e=>e-n.deltaValue),a=new tS(e,t.value,(0,o.sF)({tandem:n.tandem.createTandem("numberDisplay")},n.numberDisplayOptions)),l={baseColor:n.arrowButtonFill,stroke:n.arrowButtonStroke,lineWidth:n.arrowButtonLineWidth,focusable:!1,soundPlayer:qw,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}},h=new mE("topBottom"===n.arrowsPosition||"bothRight"===n.arrowsPosition?"up":"right",()=>{e.set(s(e.get())),n.arrowsSoundPlayer.play()},(0,o.sF)({tandem:n.tandem.createTandem("incrementButton")},l)),c=new mE("topBottom"===n.arrowsPosition||"bothRight"===n.arrowsPosition?"down":"left",()=>{e.set(r(e.get())),n.arrowsSoundPlayer.play()},(0,o.sF)({tandem:n.tandem.createTandem("decrementButton")},l));let d;d||(d="leftRight"===n.arrowsPosition?a.height/h.height:"topBottom"===n.arrowsPosition?a.width/h.width:"bothRight"===n.arrowsPosition?(a.height/2-n.ySpacing/2)/h.height:(a.width/2-n.xSpacing/2)/h.width),n.arrowsScale&&(d*=n.arrowsScale),h.setScaleMagnitude(d),c.setScaleMagnitude(d);a.boundsProperty.link(()=>{"leftRight"===n.arrowsPosition?(h.left=a.right+n.xSpacing,c.right=a.left-n.xSpacing,h.centerY=c.centerY=a.centerY):"topBottom"===n.arrowsPosition?(h.centerX=c.centerX=a.centerX,h.bottom=a.top-n.ySpacing,c.top=a.bottom+n.ySpacing):"bothRight"===n.arrowsPosition?(h.left=c.left=a.right+n.xSpacing,h.bottom=a.centerY-n.ySpacing/2,c.top=a.centerY+n.ySpacing/2):(h.left=a.centerX+n.xSpacing/2,c.right=a.centerX-n.xSpacing/2,h.top=c.top=a.bottom+n.ySpacing)}),(n.touchAreaXDilation||n.touchAreaYDilation)&&(h.touchArea=h.localBounds.dilatedXY(n.touchAreaXDilation,n.touchAreaYDilation),c.touchArea=c.localBounds.dilatedXY(n.touchAreaXDilation,n.touchAreaYDilation),"bothRight"===n.arrowsPosition?(h.touchArea=h.touchArea.shiftedY(-n.touchAreaYDilation),c.touchArea=c.touchArea.shiftedY(n.touchAreaYDilation)):"bothBottom"===n.arrowsPosition&&(h.touchArea=h.touchArea.shiftedX(n.touchAreaXDilation),c.touchArea=c.touchArea.shiftedX(-n.touchAreaXDilation))),(n.mouseAreaXDilation||n.mouseAreaYDilation)&&(h.mouseArea=h.localBounds.dilatedXY(n.mouseAreaXDilation,n.mouseAreaYDilation),c.mouseArea=c.localBounds.dilatedXY(n.mouseAreaXDilation,n.mouseAreaYDilation),"bothRight"===n.arrowsPosition?(h.mouseArea=h.mouseArea.shiftedY(-n.mouseAreaYDilation),c.mouseArea=c.mouseArea.shiftedY(n.mouseAreaYDilation)):"bothBottom"===n.arrowsPosition&&(h.mouseArea=h.mouseArea.shiftedX(n.mouseAreaXDilation),c.mouseArea=c.mouseArea.shiftedX(-n.mouseAreaXDilation))),n.children=[a,h,c],n.keyboardStep=0,n.shiftKeyboardStep=0,n.pageKeyboardStep=0,n.onInput=(t,i)=>{if(t.isFromPDOM()){const s=t.domEvent,r=e.value;(Gn.A.isKeyEvent(s,Gn.A.KEY_HOME)&&i!==r||Gn.A.isKeyEvent(s,Gn.A.KEY_END)&&i!==r)&&n.arrowsSoundPlayer.play()}};const u=_.pick(n,Dr.REQUIRES_BOUNDS_OPTION_KEYS);super(_.omit(n,Dr.REQUIRES_BOUNDS_OPTION_KEYS));const p=()=>{h.enabled=s(e.value)<=t.value.max,c.enabled=r(e.value)>=t.value.min},m=e=>{p()};e.link(m);const g=t=>{e.value=t.constrainValue(e.value),p()};t.link(g);const A=e=>e&&h.pdomClick(),y=e=>e&&c.pdomClick();this.pdomIncrementDownEmitter.addListener(A),this.pdomDecrementDownEmitter.addListener(y),this.disposeNumberSpinner=()=>{a.dispose(),h.dispose(),c.dispose(),this.pdomIncrementDownEmitter.removeListener(A),this.pdomDecrementDownEmitter.removeListener(y),e.unlink(m),t.unlink(g)},this.mutate(u),this.numberDisplay=a,this.addLinkedElement(e,{tandemName:"property"})}};Vb.register("NumberSpinner",MB);let BB=class extends Ff{constructor(e,t,i){i=(0,o.sF)({spacing:7},i);const n=new h.A(new D(-180,180)),s={enabledProperty:new c(!0),deltaValue:15,numberDisplayOptions:{align:"center",decimalPlaces:0,xMargin:10,yMargin:3,minBackgroundWidth:60,textOptions:{font:fD.DEFAULT_FONT},valuePattern:"{{value}}"+$E.DEGREES},arrowsPosition:"leftRight",arrowsScale:.9,tandem:i.tandem.createTandem("numberSpinner")},r=new Rc(eD.phaseShiftStringProperty,{font:fD.DEFAULT_FONT,maxWidth:EB.NUMBER_CONTROL_ELEMENT_MAX_WIDTH,fill:ED.textFillProperty}),a=new MB(e,n,s);i.children=[r,a],super(i);const l=(e,t)=>{this.visible=e&&t};let d=null;t.selectionProperty.link((e,t)=>{t instanceof hk&&d&&Ve.unmultilink(d),e instanceof hk&&(d=Ve.multilink([e.isPhaseEditableProperty,e.isEditableProperty],l))})}};t.register("PhaseShiftControl",BB);const OB=eD.theSwitchIsClosedStringProperty,LB=eD.theSwitchIsOpenStringProperty;let RB=class extends Dr{constructor(e,t){const i=(e,t)=>new Rc(e,{fontSize:24,maxWidth:300,fill:ED.textFillProperty,tandem:t,visiblePropertyOptions:{phetioReadOnly:!0}}),n=i(OB,t.createTandem("closedText")),s=i(LB,t.createTandem("openText")),r=e=>{n.visible=e,s.visible=!e};e.selectionProperty.link((e,t)=>{t instanceof Dk&&t.isClosedProperty.unlink(r),e instanceof Dk&&e.isClosedProperty.link(r)}),super({children:[new Dr({children:[n,s]})],tandem:t,visiblePropertyOptions:{phetioFeatured:!0}})}};t.register("SwitchReadoutNode",RB);const NB=eD.capacitanceStringProperty,qB=eD.capacitanceUnitsStringProperty,FB=eD.currentRatingStringProperty,HB=eD.currentUnitsStringProperty,YB=eD.frequencyHzValuePatternStringProperty,GB=eD.frequencyStringProperty,UB=eD.inductanceStringProperty,zB=eD.inductanceUnitsStringProperty,WB=eD.resistanceOhmsValuePatternStringProperty,QB=eD.resistanceStringProperty,KB=eD.tapCircuitElementToEditStringProperty,jB=eD.voltageStringProperty,ZB=eD.voltageVoltsValuePatternStringProperty,_B=function(e,t,i,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>!0;const r=new h.A(e,{});r.link(e=>{i.selectionProperty.value&&i.selectionProperty.value instanceof t&&(n(i.selectionProperty.value).value=e)});const o=e=>r.set(e);return i.selectionProperty.link((e,i)=>{i instanceof t&&s(i)&&n(i).unlink(o),e instanceof t&&s(e)&&n(e).link(o)}),r};let XB=class extends Dr{constructor(e,t,i,n,r,a){super();const l=(0,o.Ay)()({showPhaseShiftControl:!1},a),h=new vB(e,r.createTandem("trashButton")),c=new Dr({excludeInvisibleChildrenFromBounds:!0,children:[h]}),d=new IB(e,{tandem:r.createTandem("fuseRepairButton"),maxHeight:h.height}),u=new Dr({excludeInvisibleChildrenFromBounds:!0,children:[d]}),p=e=>u.setVisible(e);e.selectionProperty.link((e,t)=>{t instanceof Ak&&t.isRepairableProperty.unlink(p),e instanceof Ak&&e.isRepairableProperty.link(p)});const m=new CB(e,{tandem:e.includeACElements?r.createTandem("clearButton"):P.A.OPT_OUT,maxHeight:h.height}),g=new VB(e,{tandem:r.createTandem("batteryReverseButton"),maxHeight:h.height}),A=new Dr({excludeInvisibleChildrenFromBounds:!0,children:[g]}),y=e=>A.setVisible(e);e.selectionProperty.link((e,t)=>{t instanceof lM&&t.isReversibleProperty.unlink(y),e instanceof lM&&e.isReversibleProperty.link(y)});const b=new RB(e,r.createTandem("switchReadoutNode")),V=e=>c.setVisible(e);e.selectionProperty.link((e,t)=>{e instanceof _D&&e.isDisposableProperty.link(V),t instanceof _D&&t.isDisposableProperty.unlink(V)});const w=new EB(FB,new TV(HB,{current:QE.VALUE_NAMED_PLACEHOLDER}),_B(Ak.DEFAULT_CURRENT_RATING,Ak,e,e=>e.currentRatingProperty),Ak.RANGE,e,1,{tandem:r.createTandem("fuseCurrentRatingControl"),delta:.1,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,.5)}}),v=new EB(NB,new TV(qB,{capacitance:QE.VALUE_NAMED_PLACEHOLDER}),_B(gk.CAPACITANCE_DEFAULT,gk,e,e=>e.capacitanceProperty),gk.CAPACITANCE_RANGE,e,gk.NUMBER_OF_DECIMAL_PLACES,{tandem:e.includeACElements?r.createTandem("capacitanceNumberControl"):P.A.OPT_OUT,delta:s.capacitanceStep,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,s.capacitanceStep)}}),E=new EB(UB,new TV(zB,{inductance:QE.VALUE_NAMED_PLACEHOLDER}),_B(fk.INDUCTANCE_DEFAULT,fk,e,e=>e.inductanceProperty),fk.INDUCTANCE_RANGE,e,fk.INDUCTANCE_NUMBER_OF_DECIMAL_PLACES,{tandem:e.includeACElements?r.createTandem("inductanceNumberControl"):P.A.OPT_OUT,delta:s.inductanceStep,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,.1)}}),S=new TV(WB,{resistance:QE.VALUE_NAMED_PLACEHOLDER}),T=(t,i)=>new EB(QB,S,_B(Ek.RESISTOR.defaultResistance,i,e,e=>e.resistanceProperty,e=>e instanceof wk&&!e.isExtreme||e instanceof Sk&&e.resistorType!==Ek.EXTREME_RESISTOR),Ek.RESISTOR.range,e,Sk.RESISTANCE_DECIMAL_PLACES,{tandem:r.createTandem(t),delta:.1,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,1)},numberDisplayOptions:{decimalPlaces:Sk.RESISTANCE_DECIMAL_PLACES}}),C=(t,i)=>new EB(QB,S,_B(Ek.EXTREME_RESISTOR.defaultResistance,i,e,e=>e.resistanceProperty,e=>e instanceof wk&&e.isExtreme||e instanceof Sk&&e.resistorType===Ek.EXTREME_RESISTOR),Ek.EXTREME_RESISTOR.range,e,Sk.HIGH_RESISTANCE_DECIMAL_PLACES,{tandem:e.includeLabElements?r.createTandem(t):P.A.OPT_OUT,delta:10,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,100)},numberDisplayOptions:{decimalPlaces:Sk.HIGH_RESISTANCE_DECIMAL_PLACES}}),I=T("resistorResistanceNumberControl",Sk),x=T("lightBulbResistanceNumberControl",wk),D=C("extremeResistorResistanceNumberControl",Sk),k=C("extremeLightBulbResistanceNumberControl",wk),M=new TV(ZB,{voltage:QE.VALUE_NAMED_PLACEHOLDER}),B=new EB(jB,M,_B(lM.VOLTAGE_DEFAULT,lM,e,e=>e.voltageProperty,e=>"normal"===e.batteryType),lM.VOLTAGE_RANGE,e,lM.VOLTAGE_DECIMAL_PLACES,{tandem:r.createTandem("batteryVoltageNumberControl"),delta:.1,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,1)},numberDisplayOptions:{decimalPlaces:lM.VOLTAGE_DECIMAL_PLACES}}),O=new EB(jB,M,_B(lM.HIGH_VOLTAGE_DEFAULT,lM,e,e=>e.voltageProperty,e=>"high-voltage"===e.batteryType),lM.HIGH_VOLTAGE_RANGE,e,lM.HIGH_VOLTAGE_DECIMAL_PLACES,{tandem:e.includeLabElements?r.createTandem("extremeBatteryVoltageNumberControl"):P.A.OPT_OUT,delta:10,sliderOptions:{constrainValue:e=>GD.roundToInterval(e,100)},numberDisplayOptions:{decimalPlaces:lM.HIGH_VOLTAGE_DECIMAL_PLACES}}),L=new BB(_B(0,hk,e,e=>e.phaseProperty),e,{tandem:e.includeACElements?r.createTandem("phaseShiftControl"):P.A.OPT_OUT}),R=new EB(jB,M,_B(9,hk,e,e=>e.maximumVoltageProperty),hk.MAX_VOLTAGE_RANGE,e,2,{tandem:e.includeACElements?r.createTandem("acVoltageControl"):P.A.OPT_OUT,getAdditionalVisibilityProperties:e=>e instanceof hk?[e.isVoltageEditableProperty]:[]}),N=new EB(GB,new TV(YB,{frequency:QE.VALUE_NAMED_PLACEHOLDER}),_B(hk.DEFAULT_FREQUENCY,hk,e,e=>e.frequencyProperty),hk.FREQUENCY_RANGE,e,2,{tandem:e.includeACElements?r.createTandem("frequencyControl"):P.A.OPT_OUT,delta:.01,getAdditionalVisibilityProperties:e=>e instanceof hk?[e.isFrequencyEditableProperty]:[]}),q=new Rc(KB,{fontSize:24,maxWidth:300,fill:ED.textFillProperty,tandem:r.createTandem("tapInstructionText"),phetioVisiblePropertyInstrumented:!0,visiblePropertyOptions:{phetioReadOnly:!0}}),F=()=>{if(!f.value){const t=e.circuitElements.filter(e=>e instanceof ok&&e.interactiveProperty.get());q.visible=t.length>0}};e.vertexDroppedEmitter.addListener(F),e.vertexGroup.elementDisposedEmitter.addListener(F),i.link(F);const H=()=>{var e;this.bounds.isValid()&&this.mutate((e=t.get(),{centerX:n.value,bottom:e.bottom-fD.HORIZONTAL_MARGIN}))};let Y=null;const G=[];e.selectionProperty.link(e=>{if(Y&&(this.hasChild(Y)&&this.removeChild(Y),Y!==q&&Y!==c&&(Y.dispose(),G.forEach(e=>e()),G.length=0)),Y=null,e)if(e instanceof Sk&&e.isResistanceEditable()){const t=e.resistorType===Ek.EXTREME_RESISTOR;Y=new JB([t?D:I,c])}else if(e instanceof wk&&!e.isReal)Y=new JB([e.isExtreme?k:x,c]);else if(e instanceof Sk||e instanceof wk&&e.isReal)Y=c;else if(e instanceof lM){const t=new Dr({children:[A],excludeInvisibleChildrenFromBounds:!0});Y=new JB([t,"high-voltage"===e.batteryType?O:B,c]),G.push(()=>t.dispose())}else if(e instanceof Ak)Y=new JB([u,w,c]);else if(e instanceof Dk)Y=new Nf({children:[b,c],spacing:25,align:"bottom"});else if(e instanceof Tk||e instanceof kk)Y=c;else if(e instanceof hk){const e=[R,N];l.showPhaseShiftControl&&e.push(L),e.push(c),Y=new JB(e)}else e instanceof gk?Y=new JB([m,v,c]):e instanceof fk&&(Y=new JB([m,E,c]));else Y=q;null!==Y&&(this.addChild(Y),Y===q||Y instanceof RB?(this.mouseArea=null,this.touchArea=null):(this.mouseArea=this.localBounds.dilatedXY(20,fD.VERTICAL_MARGIN),this.touchArea=this.localBounds.dilatedXY(20,fD.VERTICAL_MARGIN))),H()}),t.link(H),this.localBoundsProperty.link(H)}},JB=class extends gP{dispose(){this.hbox.dispose(),super.dispose()}constructor(e){const t=new Nf({spacing:25,align:"bottom",children:e});super(t,{fill:ED.editPanelFillProperty,stroke:null,xMargin:10,yMargin:10,cornerRadius:10,align:"center"}),this.hbox=t}};t.register("CircuitElementEditContainerNode",XB);let $B=class e{static DEFAULT_BLEND(e,t,i){if(0===i)return e;if(1===i)return t;if("number"==typeof e&&"number"==typeof t)return e+(t-e)*i;if("object"==typeof e&&"object"==typeof t&&"function"==typeof e.blend)return e.blend(t,i);throw new Error(`Blending not supported for: ${JSON.stringify(e)}, ${JSON.stringify(t)}, pass in a blend option`)}static DEFAULT_DISTANCE(e,t){if("number"==typeof e&&"number"==typeof t)return Math.abs(e-t);if("object"==typeof e&&"object"==typeof t&&"function"==typeof e.distance)return e.distance(t);throw new Error(`Distance (required for speed) by default not supported for: ${JSON.stringify(e)}, ${JSON.stringify(t)}, pass in a distance option`)}static DEFAULT_ADD(e,t){if("number"==typeof e&&"number"==typeof t)return e+t;if("object"==typeof e&&"object"==typeof t&&"function"==typeof e.plus)return e.plus(t);throw new Error(`Addition (required for delta) by default not supported for: ${JSON.stringify(e)}, ${JSON.stringify(t)}, pass in an add option`)}static OBJECT_SET(e,t){return function(i){e[t]=i}}static OBJECT_GET(e,t){return function(){return e[t]}}static PROPERTY_SET(e){return function(t){e.value=t}}static PROPERTY_GET(e){return function(){return e.value}}computeStartEnd(){this.startingValue=null!==this.from?this.from:this.getValue(),this.endingValue=null!==this.to?this.to:this.add(this.startingValue,this.delta)}update(e){this.setValue(this.blend(this.startingValue,this.endingValue,this.easing.value(e)))}hasPreferredDuration(){return null!==this.speed}getPreferredDuration(){return null===this.speed?null:this.speed*this.distance(this.startingValue,this.delta)}constructor(t){this.startingValue=null,this.endingValue=null;const i=(0,o.Ay)()({setValue:null,getValue:null,property:null,object:null,attribute:null,to:null,delta:null,speed:null,from:null,easing:vM.CUBIC_IN_OUT,blend:e.DEFAULT_BLEND,distance:e.DEFAULT_DISTANCE,add:e.DEFAULT_ADD},t);i.object&&(i.setValue=e.OBJECT_SET(i.object,i.attribute),i.getValue=e.OBJECT_GET(i.object,i.attribute)),i.property&&(i.setValue=e.PROPERTY_SET(i.property),i.getValue=e.PROPERTY_GET(i.property)),this.getValue=i.getValue,this.setValue=i.setValue,this.easing=i.easing,this.from=i.from,this.to=i.to,this.delta=i.delta,this.speed=i.speed,this.blend=i.blend,this.distance=i.distance,this.add=i.add}};VM.register("AnimationTarget",$B);const eO=$B;let tO=class extends Ze.A{start(e){return this.runningProperty.value||(this.remainingDelay=this.delay,this.runningProperty.value=!0,this.startEmitter.emit(),this.step(void 0!==e?e:0)),this}stop(){return this.runningProperty.value?(this.runningProperty.value=!1,this.stopEmitter.emit(),this.endedEmitter.emit(),this):this}step(e){if(!this.runningProperty.value)return this;if(!this.animatingProperty.value){if(this.remainingDelay-=e,e=-this.remainingDelay,this.remainingDelay>0)return this;this.length=this.duration;for(let e=0;e0?(0,et.q)((this.length-this.remainingAnimation)/this.length,0,1):1;for(let i=0;ie.start(t)),e}dispose(){this.runningProperty.dispose(),this.animatingProperty.dispose(),this.startEmitter.dispose(),this.beginEmitter.dispose(),this.finishEmitter.dispose(),this.stopEmitter.dispose(),this.endedEmitter.dispose(),this.updateEmitter.dispose(),super.dispose()}constructor(e){const t=(0,o.Ay)()({targets:null,duration:null,delay:0,stepEmitter:we.A},e);super(t),this.length=0,this.remainingDelay=0,this.remainingAnimation=0,this.runningProperty=new c(!1),this.animatingProperty=new c(!1),this.startEmitter=new v.A,this.beginEmitter=new v.A,this.finishEmitter=new v.A({parameters:[{valueType:"number"}]}),this.stopEmitter=new v.A,this.endedEmitter=new v.A({hasListenerOrderDependencies:!0}),this.updateEmitter=new v.A,this.targets=(null===t.targets?[t]:t.targets).map(e=>new eO(e)),this.duration=t.duration,this.delay=t.delay;const i=t.stepEmitter;if(i){const e=this.step.bind(this);this.runningProperty.link(t=>{t&&!i.hasListener(e)?i.addListener(e):!t&&i.hasListener(e)&&i.removeListener(e)}),this.disposeEmitter.addListener(()=>{i.hasListener(e)&&i.removeListener(e)})}}};VM.register("Animation",tO);const iO=tO,nO={up:0,down:Math.PI,left:-Math.PI/2,right:Math.PI/2};let sO=class extends Zb{dispose(){this.customStrokeProperty&&this.customStrokeProperty.dispose(),super.dispose()}constructor(e){const t=(0,o.Ay)()({arrowDirection:"up",arrowSize:new Ne(20,7),arrowPathOptions:{stroke:"black",lineWidth:3,lineCap:"round"},baseColor:"rgba( 200, 200, 200, 0.5 )",buttonAppearanceStrategy:Qb.FlatAppearanceStrategy,cornerRadius:4},e);let i=null;void 0===t.stroke&&(i=new Mb(t.baseColor,{luminanceFactor:-.8}),t.stroke=i);let n=(new Ui).moveTo(0,0).lineTo(t.arrowSize.width/2,-t.arrowSize.height).lineTo(t.arrowSize.width,0);n=n.transformed(Et.rotation2(nO[t.arrowDirection])),t.content=new ga(n,t.arrowPathOptions);const s=t.arrowDirection,r=t.cornerRadius;if(t.leftTopCornerRadius="up"===s||"left"===s?r:0,t.rightTopCornerRadius="up"===s||"right"===s?r:0,t.leftBottomCornerRadius="down"===s||"left"===s?r:0,t.rightBottomCornerRadius="down"===s||"right"===s?r:0,"up"===s||"down"===s){const e=t.mouseAreaYDilation/2||0,i=t.touchAreaYDilation/2||0;t.mouseAreaYDilation=e,t.touchAreaYDilation=i,t.mouseAreaYShift="up"===s?-e:e,t.touchAreaYShift="up"===s?-i:i}else{const e=t.mouseAreaXDilation/2||0,i=t.touchAreaXDilation/2||0;t.mouseAreaXDilation=e,t.touchAreaXDilation=i,t.mouseAreaXShift="left"===s?-e:e,t.touchAreaXShift="left"===s?-i:i}super(t),this.customStrokeProperty=i}};Vb.register("CarouselButton",sO);const rO=new Ne(20,7);let oO=class extends Dr{dispose(){this.disposeCarousel(),super.dispose()}reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=this.animationEnabled;this.animationEnabled=e,this.pageNumberProperty.value=Math.min(this.defaultPageNumber,this.numberOfPagesProperty.value-1),this.animationEnabled=t}scrollToItemVisibleIndex(e){this.pageNumberProperty.set(this.itemVisibleIndexToPageNumber(e))}scrollToItem(e){this.scrollToAlignBox(this.getAlignBoxForItem(e))}scrollToAlignBox(e){const t=this.visibleAlignBoxesProperty.value.indexOf(e);t>=0&&this.scrollToItemVisibleIndex(t)}setItemVisible(e,t){this.getAlignBoxForItem(e).visible=t}getAlignBoxForItem(e){const t=this.alignBoxes[this.items.indexOf(e)];return t}getNodeForItem(e){const t=this.carouselItemNodes[this.items.indexOf(e)];return t}itemVisibleIndexToPageNumber(e){return Math.floor(e/this.itemsPerPage)}getVisibleAlignBoxes(){return _.sortBy(this.alignBoxes.filter(e=>e.visible),e=>this.scrollingNode.children.indexOf(e))}constructor(e,t){let i=!1;const n=(0,o.Ay)()({orientation:"horizontal",fill:"white",stroke:"black",lineWidth:1,cornerRadius:4,defaultPageNumber:0,itemsPerPage:4,spacing:12,margin:6,alignBoxOptions:{phetioType:ES,phetioState:!0,visiblePropertyOptions:{phetioFeatured:!0}},buttonOptions:{xMargin:5,yMargin:5,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,baseColor:"rgba( 200, 200, 200, 0.5 )",disabledColor:Ub.LIGHT_GRAY,lineWidth:1,arrowPathOptions:{stroke:"black",lineWidth:3},arrowSize:rO,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1},soundPlayer:Wm.get("pushButton")},separatorsVisible:!1,separatorOptions:{stroke:"rgb( 180, 180, 180 )",lineWidth:.5,pickable:!1},animationEnabled:!0,animationOptions:{duration:.4,stepEmitter:we.A,easing:vM.CUBIC_IN_OUT},tandem:P.A.OPTIONAL,visiblePropertyOptions:{phetioFeatured:!0}},t);super(),this.isAnimatingProperty=new c(!1),this.animationEnabled=n.animationEnabled,this.items=e,this.itemsPerPage=n.itemsPerPage,this.defaultPageNumber=n.defaultPageNumber;const s=Ie.fromLayoutOrientation(n.orientation),r=new fV,a=n.tandem.createTandem("items");this.carouselItemNodes=Eb(e,a),this.alignBoxes=e.map((e,t)=>r.createBox(this.carouselItemNodes[t],(0,o.sF)({tandem:e.tandemName?a.createTandem(e.tandemName):P.A.OPTIONAL},n.alignBoxOptions,e.alignBoxOptions))),this.scrollingNode=new aO(this,{children:this.alignBoxes,orientation:n.orientation,spacing:n.spacing,[s.opposite.coordinate+"Margin"]:n.margin}),this.visibleAlignBoxesProperty=de.deriveAny(this.alignBoxes.map(e=>e.visibleProperty),()=>this.getVisibleAlignBoxes()),this.scrollingNode.childrenReorderedEmitter.addListener(()=>this.visibleAlignBoxesProperty.recomputeDerivation());const l=(0,o.sF)({cornerRadius:n.cornerRadius},n.buttonOptions),h=n.separatorsVisible?new Dr({pickable:!1}):null,d=new Dr({children:n.separatorsVisible?[h,this.scrollingNode]:[this.scrollingNode]}),u=e=>Math.max(Math.ceil(e.length/n.itemsPerPage),1);this.numberOfPagesProperty=new de([this.visibleAlignBoxesProperty],e=>u(e),{isValidValue:e=>e>0});const p=u(this.alignBoxes);this.pageNumberProperty=new H(n.defaultPageNumber,{tandem:n.tandem.createTandem("pageNumberProperty"),numberType:"Integer",isValidValue:e=>e=0,range:new D(0,p-1),phetioFeatured:!0});const m=new de([this.numberOfPagesProperty],e=>e>1),g=new sO((0,o.sF)({arrowDirection:s===Ie.HORIZONTAL?"right":"down",tandem:n.tandem.createTandem("nextButton"),listener:()=>this.pageNumberProperty.set(this.pageNumberProperty.get()+1),enabledProperty:new de([this.pageNumberProperty,this.numberOfPagesProperty],(e,t)=>ethis.pageNumberProperty.set(this.pageNumberProperty.get()-1),enabledProperty:new de([this.pageNumberProperty],e=>e>0),visibleProperty:m},l)),y=new Dr({children:[d]}),b=new Va({cornerRadius:n.cornerRadius,fill:n.fill}),V=new Va({cornerRadius:n.cornerRadius,stroke:n.stroke,pickable:!1});this.carouselConstraint=new lO(this,b,V,y,A,g,d,this.alignBoxes,s,this.scrollingNode,this.itemsPerPage,n.margin,r,h,n.separatorOptions);let w=null;const v=new Me(0,0,0,0);Ve.multilink([this.pageNumberProperty,d.localBoundsProperty],(e,t)=>{if(e>=this.numberOfPagesProperty.value)return;w&&w.stop();const r=this.visibleAlignBoxesProperty.value[e*n.itemsPerPage],a=r?-r[s.minSide]+n.margin:0,l=null===v||!v.equals(t);v.set(t),this.animationEnabled&&!(null==f?void 0:f.value)&&i&&!l?(w=new iO((0,o.sF)({},n.animationOptions,{to:a,getValue:()=>d[s.coordinate],setValue:e=>{d[s.coordinate]=e}})),w.endedEmitter.addListener(()=>this.isAnimatingProperty.set(!1)),w.start(),this.isAnimatingProperty.value=!0):d[s.coordinate]=a}),this.visibleAlignBoxesProperty.link(()=>{this.pageNumberProperty.value=Math.min(this.pageNumberProperty.value,this.numberOfPagesProperty.value-1)}),n.children=[b,y,g,A,V],this.disposeCarousel=()=>{this.visibleAlignBoxesProperty.dispose(),this.pageNumberProperty.dispose(),this.alignBoxes.forEach(e=>{e.dispose()}),this.scrollingNode.dispose(),this.carouselConstraint.dispose(),this.carouselItemNodes.forEach(e=>e.dispose())},this.mutate(n),i=!0}},aO=class extends Ef{onIndexedNodeIOChildMoved(e){this.carousel.scrollToAlignBox(e)}constructor(e,t){super(t),this.carousel=e}},lO=class extends Vy{updateSeparators(){const e=this.carousel.getVisibleAlignBoxes(),t=e.length>=2?_.range(1,e.length):[];this.separatorLayer.children=t.map(t=>{const i=(e[t-1][this.orientation.maxSide]+e[t][this.orientation.minSide])/2;return new Lf((0,o.sF)({[this.orientation.coordinate+"1"]:i,[this.orientation.coordinate+"2"]:i,[this.orientation.opposite.coordinate+"2"]:this.scrollingNode[this.orientation.opposite.size]},this.separatorOptions))})}computeClipArea(){const e=this.orientation,t=this.carousel.getVisibleAlignBoxes();if(0===t.length)return new Ne(0,0);{const i=t[this.itemsPerPage-1]||t[t.length-1],n=new Ne(i[e.maxSide]-t[0][e.minSide]+2*this.margin,this.scrollingNodeContainer.boundsProperty.value[e.opposite.size]);return this.orientation===Ie.HORIZONTAL?n:n.swapped()}}getBackgroundDimension(){let e,t;if(this.orientation===Ie.HORIZONTAL){const i=this.nextButton.visible?this.nextButton.width:0,n=this.previousButton.visible?this.previousButton.width:0;e=this.windowNode.width+i+n,t=this.windowNode.height}else{const i=this.nextButton.visible?this.nextButton.height:0,n=this.previousButton.visible?this.previousButton.height:0;e=this.windowNode.width,t=this.windowNode.height+i+n}return new Ne(e,t)}layout(){super.layout();const e=this.orientation,t=this.alignGroup.getMaxSizeProperty(e.opposite).value+2*this.margin;this.nextButton[e.opposite.preferredSize]=t,this.previousButton[e.opposite.preferredSize]=t,this.nextButton[e.opposite.centerCoordinate]=this.backgroundNode[e.opposite.centerCoordinate],this.previousButton[e.opposite.centerCoordinate]=this.backgroundNode[e.opposite.centerCoordinate],this.windowNode[e.opposite.centerCoordinate]=this.backgroundNode[e.opposite.centerCoordinate],this.previousButton[e.minSide]=this.backgroundNode[e.minSide],this.nextButton[e.maxSide]=this.backgroundNode[e.maxSide],this.windowNode[e.centerCoordinate]=this.backgroundNode[e.centerCoordinate];const i=this.computeClipArea().toBounds();this.windowNode.clipArea=Ui.bounds(i),this.windowNode.localBounds=i;const n=this.getBackgroundDimension();this.carousel.backgroundWidth=n.width,this.carousel.backgroundHeight=n.height;const s=n.toBounds();this.backgroundNode.rectBounds=s,this.foregroundNode.rectBounds=s,this.separatorLayer&&this.updateSeparators()}constructor(e,t,i,n,s,r,o,a,l,h,c,d,u,p,m){super(e),this.carousel=e,this.backgroundNode=t,this.foregroundNode=i,this.windowNode=n,this.previousButton=s,this.nextButton=r,this.scrollingNodeContainer=o,this.alignBoxes=a,this.orientation=l,this.scrollingNode=h,this.itemsPerPage=c,this.margin=d,this.alignGroup=u,this.separatorLayer=p,this.separatorOptions=m,[this.backgroundNode,this.foregroundNode,this.windowNode,this.previousButton,this.nextButton,this.scrollingNodeContainer,...this.alignBoxes].forEach(e=>this.addNode(e,!1)),this.separatorLayer&&this.scrollingNode.constraint.finishedLayoutEmitter.addListener(()=>{this.updateSeparators()}),this.updateLayout()}};Vb.register("Carousel",oO);let hO=class extends Dr{dispose(){this.disposePageControl(),super.dispose()}constructor(e,t,i){const n=(0,o.Ay)()({interactive:!1,orientation:"horizontal",dotRadius:3,lineWidth:1,dotSpacing:10,dotTouchAreaDilation:4,dotMouseAreaDilation:4,currentPageFill:"black",currentPageStroke:null,pageFill:"rgb( 200, 200, 200 )",pageStroke:null,tandem:P.A.REQUIRED,tandemNameSuffix:"PageControl",visiblePropertyOptions:{phetioFeatured:!0}},i),s=new Or({press:t=>{t.currentTarget instanceof cO&&(e.value=t.currentTarget.pageNumber)},tandem:n.tandem.createTandem("pressListener")}),r={lineWidth:n.lineWidth,mouseArea:0===n.dotMouseAreaDilation?null:Ui.circle(0,0,n.dotRadius+n.dotMouseAreaDilation),touchArea:0===n.dotTouchAreaDilation?null:Ui.circle(0,0,n.dotRadius+n.dotTouchAreaDilation),boundsMethod:"unstroked",cursor:n.interactive?"pointer":null,inputListeners:n.interactive?[s]:[]},a=new Ef({orientation:n.orientation,spacing:n.dotSpacing});let l=[];a.boundsProperty.link(()=>{a.center=De.A.ZERO});const h=e=>{l.forEach(t=>{t.fill=e===t.pageNumber?n.currentPageFill:n.pageFill,t.stroke=e===t.pageNumber?n.currentPageStroke:n.pageStroke})};e.link(h);const c=t=>{l=_.range(0,t).map(e=>new cO(e,n.dotRadius,r)),a.children=l,h(e.value)};t.link(c),n.children=[a],super(n),this.disposePageControl=()=>{s.dispose(),t.unlink(c),e.unlink(h)}}},cO=class extends xh{constructor(e,t,i){super(t,i),this.pageNumber=e}};Vb.register("PageControl",hO);let dO=class extends Nf{reset(){this.carousel.reset()}constructor(e,t,i,n){n=(0,o.Ay)()({carouselOptions:{itemsPerPage:5,orientation:"vertical",buttonOptions:{touchAreaXDilation:8},spacing:24,margin:12,separatorsVisible:!0,fill:ED.panelFillProperty,stroke:ED.panelStrokeProperty,tandem:i.createTandem("carousel")}},n);const s=new oO(t,n.carouselOptions);s.mutate({scale:n.carouselScale}),super({spacing:5,children:[new hO(s.pageNumberProperty,s.numberOfPagesProperty,{orientation:"vertical",pageFill:jr.WHITE,pageStroke:jr.BLACK,currentPageStroke:jr.TRANSPARENT,interactive:!0,tandem:i.createTandem("pageControl")}),s],tandem:i,visiblePropertyOptions:{phetioFeatured:!0}}),this.carousel=s}};t.register("CircuitElementToolbox",dO);let uO=class{down(e){phet.chipper.isFuzzEnabled()&&qe.A.nextDouble()<.99||this.observePointer(e.pointer)}observePointer(e){null!==this.pointer||e.isAttached()||null!==this.displayedProperty&&!this.displayedProperty.value||(this.pointer=e,this.pointer.addInputListener(this.pointerListener,!0))}dismissPointer(e){null!==this.pointer&&(this.pointer.removeInputListener(this.pointerListener),this.pointer=null)}dispose(){this.dismissPointer(this.pointer),this.displayedProperty&&this.displayedProperty.dispose()}constructor(e,t){this.displayedProperty=null;const i=(0,o.Ay)()({displayedNode:null},t);this.pointer=null,this.pointerListener={up:t=>{e(t),this.dismissPointer(this.pointer)},interrupt:()=>{this.dismissPointer(this.pointer)},cancel:()=>{this.dismissPointer(this.pointer)}},i.displayedNode&&(this.displayedProperty=new Dm(i.displayedNode))}};eh.A.register("DisplayClickToDismissListener",uO);const pO=uO,mO=new Ui("M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z").makeImmutable();let gO=class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.currentProperty.value;this.circuitElement=e,this.current=t}};t.register("AmmeterConnection",gO);let AO=class extends Sk{step(e,t,i){super.step(e,t,i);const n=this.voltageDifferenceProperty.value;Math.abs(n)>100?this.triggerCount++:this.triggerCount=0,this.triggerCount>=2&&(i.cutVertex(this.startVertexProperty.value),this.isBarkingProperty.value=!0,this.lastBarkTime=e,this.triggerCount=0);this.isBarkingProperty.value&&e-this.lastBarkTime>.5&&(this.isBarkingProperty.value=!1,this.lastBarkTime=0)}constructor(e,t,i,n){super(e,t,Ek.DOG,i,n),this.isBarkingProperty=new c(!1),this.lastBarkTime=0,this.triggerCount=0}};t.register("Dog",AO);const yO=new Image,fO=Cl.A.createLock(yO);yO.onload=fO,yO.src="data:image/png;base64,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";const bO=yO;let PO=class extends Dr{markAsDirty(){this.dirty=!0}updateOpacityOnInteractiveChange(){const e=e=>{this.opacity=e?1:.5};this.circuitElement.interactiveProperty.link(e),this.disposeEmitter.addListener(()=>this.circuitElement.interactiveProperty.unlink(e))}containsSensorPoint(e){const t=this.globalToParentPoint(e);return this.step(),this.useHitTestForSensors?!!this.hitTest(t,!0,!1):this.containsPoint(t)}step(){this.dirty&&(this.updateRender(),this.dirty=!1)}endDrag(e,t,i,n,s,r,o){const a=this.circuitElement;a.interactiveProperty.get()&&(i.canNodeDropInToolbox(this)?this.circuit.disposeCircuitElement(a):(t.forEach(e=>{i.model.circuit.vertexGroup.includes(e)&&n.endDrag(e,o)}),this.selectCircuitElementNodeWhenNear(n,s,r)))}selectCircuitElementNodeWhenNear(e,t,i){if(!this.circuitElement.isDisposed&&i&&i.distance(t)this.dragListener.press(e,this);e.startDragEmitter.addListener(n),this.dirty=!0,this.disposeEmitter.addListener(()=>e.startDragEmitter.removeListener(n))}};t.register("CircuitElementNode",PO);let VO=class extends _c{press(e,t,i){const n=this.vertexGetters.map(e=>e());if(_.every(n,e=>this.circuitNode.canDragVertex(e))){if(super.press(e,t,i))return n.forEach(e=>this.circuitNode.setVerticesDragging(e)),!0}return!1}constructor(e,t,i){super(i),this.circuitNode=e,this.vertexGetters=t}};t.register("CircuitNodeDragListener",VO);let wO=class extends Va{recomputeBounds(e){this.setRectBounds(e.getHighlightBounds())}constructor(e){super(0,0,0,0,8,8,{stroke:ED.highlightStrokeProperty,lineWidth:fD.HIGHLIGHT_LINE_WIDTH,pickable:!1}),this.recomputeBounds(e)}};t.register("FixedCircuitElementHighlightNode",wO);const vO=new Et,EO=new Et,SO=new H(1);let TO=class extends PO{setViewType(e){this.contentNode.children=[e===bk.LIFELIKE?this.lifelikeNode:this.schematicNode],this.circuitElement.isSizeChangedOnViewChange&&this.highlightNode&&this.highlightNode.recomputeBounds(this)}updateRender(){const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get();if(e.equals(t))return;const i=De.A.getAngleBetweenVectors(e,t),n=De.A.getDistanceBetweenVectors(e,t);vO.setToTranslationRotationPoint(e,i),this.contentNode.setMatrix(vO),this.highlightNode&&this.circuitNode.circuit.selectionProperty.get()===this.circuitElement&&this.highlightNode.setMatrix(vO);const s=n/bO.width*.8,r=n*((1-.8)/2)/s,o=-bO.height;vO.multiplyMatrix(EO.setToScale(s)).multiplyMatrix(EO.setToTranslation(r,o)),this.fireNode&&this.fireNode.setMatrix(vO)}moveFixedCircuitElementNodeToFront(){this.circuitElement.interactiveProperty.get()&&(this.moveToFront(),this.circuitElement.moveToFrontEmitter.emit(),this.circuitElement.startVertexProperty.get().relayerEmitter.emit(),this.circuitElement.endVertexProperty.get().relayerEmitter.emit())}setSelectedCircuitElement(e){if(this.highlightNode){const t=e===this.circuitElement;pk.setInSceneGraph(t,this.circuitNode.highlightLayer,this.highlightNode),this.markAsDirty()}}dispose(){this.dragListener&&this.dragListener.interrupt(),this.dragListener&&this.dragListener.dispose(),this.circuitElement.vertexMovedEmitter.removeListener(this.markDirtyListener),this.updateHighlightVisibility&&this.circuitNode.circuit.selectionProperty.unlink(this.updateHighlightVisibility),this.circuitElement.connectedEmitter.removeListener(this.moveToFrontListener),this.circuitElement.vertexSelectedEmitter.removeListener(this.moveToFrontListener),this.fixedCircuitElementNodePickable&&this.circuitElement.interactiveProperty.unlink(this.pickableListener),this.circuitNode&&this.highlightNode&&pk.setInSceneGraph(!1,this.circuitNode.highlightLayer,this.highlightNode),this.viewTypeProperty.unlink(this.viewPropertyListener),!this.isIcon&&this.updateFireMultilink&&Ve.unmultilink(this.updateFireMultilink),this.contentNode.dispose(),super.dispose()}updateFireVisible(e,t,i){this.fireNode.visible=((e,t)=>Math.abs(e)>=15&&t)(e,i)&&t>=1e-8}getHighlightBounds(){return this.contentNode.localBounds.dilated(10)}constructor(e,t,i,n,s,r,a,l){const h=t&&t.circuit,c=new Dr,d=(0,o.Ay)()({cursor:"pointer",children:[c],tandem:a,pickable:!0,isIcon:!1,showHighlight:!0},l);super(i,h,d),this.lifelikeNode=s,this.schematicNode=r,this.isIcon=d.isIcon,this.circuitNode=t,this.contentNode=c,this.fireNode=null,this.viewTypeProperty=n,this.viewPropertyListener=this.setViewType.bind(this),n.link(this.viewPropertyListener),!d.isIcon&&d.showHighlight?(this.highlightNode=new wO(this),this.viewPropertyListener(n.value)):this.highlightNode=null,this.markDirtyListener=this.markAsDirty.bind(this),i.vertexMovedEmitter.addListener(this.markDirtyListener),this.moveToFrontListener=this.moveFixedCircuitElementNodeToFront.bind(this),i.connectedEmitter.addListener(this.moveToFrontListener),i.vertexSelectedEmitter.addListener(this.moveToFrontListener),this.pickableListener=this.setPickable.bind(this),d.pickable&&i.interactiveProperty.link(this.pickableListener),this.fixedCircuitElementNodePickable=d.pickable||null;let u=null,p=null,m=!1;!d.isIcon&&t?(this.dragListener=new VO(t,[()=>i.endVertexProperty.get()],{start:e=>{this.moveToFront(),e.pointer&&e.pointer.point&&(u=e.pointer.point.copy(),p=e.pointer.point.copy(),i.interactiveProperty.get()&&t.startDragVertex(e.pointer.point,i.endVertexProperty.get(),i),m=!1)},drag:e=>{e.pointer.point&&(p=e.pointer.point.copy(),i.interactiveProperty.get()&&t.dragVertex(e.pointer.point,i.endVertexProperty.get(),!1),m=!0)},end:()=>this.endDrag(this.contentNode,[i.endVertexProperty.get()],e,t,u,p,m),tandem:a.createTandem("dragListener")}),this.contentNode.addInputListener(this.dragListener),d.showHighlight?(this.updateHighlightVisibility=this.setSelectedCircuitElement.bind(this),t.circuit.selectionProperty.link(this.updateHighlightVisibility)):this.updateHighlightVisibility=null,i.isFlammable?(this.fireNode=new Jh(bO,{pickable:!1,imageOpacity:.95}),this.fireNode.mutate({scale:this.contentNode.width/this.fireNode.width}),this.addChild(this.fireNode),this.updateFireMultilink=e?Ve.multilink([i.currentProperty,i instanceof Sk?i.resistanceProperty:SO,e.model.isValueDepictionEnabledProperty],this.updateFireVisible.bind(this)):null):(this.fireNode=null,this.updateFireMultilink=null)):(this.dragListener=null,this.updateFireMultilink=null,this.updateHighlightVisibility=null)}};TO.webglSpriteNodes=[new Jh(bO)],t.register("FixedCircuitElementNode",TO);const CO=new Ui,IO=e=>9*Math.sin(e);for(let i=0;i<2*Math.PI;i+=Math.PI/2/100){const e=5.5*i;0===i?CO.moveTo(e,IO(i)):CO.lineTo(e,IO(i))}const xO=new ga(CO,{stroke:"black",lineWidth:4,centerX:0}),DO=e=>new Dr({x:fD.AC_VOLTAGE_LENGTH/2,children:[new xh(27,{stroke:"black",fill:e?null:"white",lineWidth:e?4:2,centerX:0}),xO,...e?[]:[new lV({size:new Ne(10,2.5),centerX:0,centerY:-17.28}),new mB({size:new Ne(10,2.5),centerX:0,centerY:17.28})]]}),kO=ab(DO(!0),{wrap:!1,resolution:2}),MO=ab(DO(!1),{wrap:!1,resolution:2});kO.mouseArea=Ui.circle(fD.AC_VOLTAGE_LENGTH-6,fD.AC_VOLTAGE_LENGTH-6,54),kO.touchArea=kO.mouseArea;let BO=class extends TO{constructor(e,t,i,n,s,r){const a=(0,o.Ay)()({useHitTestForSensors:!0},r);MO.centerY=0,super(e,t,i,n,MO,kO,s,a),this.acSource=i}};BO.webglSpriteNodes=[kO,MO],t.register("ACVoltageNode",BO);const OO=new Image,LO=Cl.A.createLock(OO);OO.onload=LO,OO.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJIAAAAuCAYAAADDc0CAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABFRJREFUeNrsnM1uI0UUhU93V7fdbv8MkyiICJhECMgSsUJiwZZXQGKBkEbZsWM7u3kPxAKJNS/AI7BnAauImbGx3el2/1YVtzr2dOwsZ6aGiu6xrmP1qlz3q1P3droMsFivQd727+8UX/F02NUv35/gmy/GKErl3NiF7z2Nf/jriVToBu9zOlmvQwwSi0Fi/Y+2uq5Q8jyeCcvSWpuJ78O56np/zP7l5eV3FxcXn3Fq32a/42rsO9JZkiQzdiZ2pFdxJGHgMeH7PoNkUUopeDTn9Ha4uB2prg9ACoLgBiIGyX6f4wXbuAeOFIYhhBAIGCSramAWL0HUhYPz7u/qJH0DUhzHiKIIxpkYJKtV0hYkKlN95ShItxxpOp1iOIwJJMEg2c5FENJbSEC5B5J3CNLR0RHG46Tb3hgkyyWSIJBEROEWSL6n8fOfH3z7+PHnX+odSKenp5g9eABTKzFIFmXMKBgAXTjmSARS2g4eETCPdsSI8/NzHJMrmTqJQbLI0cCDHw3pQwxI90AKwkHHDPZAOj5GNGCQbCoikIKQQBIj2uKkY52/xngywQzjHqQ0TSGl7ApuBsme4iogR0qIKEqGko6NXuPk5D20VBK9BOnFi+eo6xqjmEGyqaQOEAwNSBPKi3QMI4WPPvkU74anPUjz+QJN0yAejRgkixq1AmJIEA2m8OCYI2mF9z88g5qc9SCtViva2hTGyZhBsqhKVhDxDBg+pKKjdatGIk969nyObK57kLLsuru5NJlOOLsWVWuBMHmHrOkIXuAYSOQ3z/5ZYlFkPUhFUXT/Z5tMppxdi2oRQSQPnQTJ3NROr9eYr5oeJNOxeZ6/d0+A9eY1iBT8MDI3lKhrC9waPFlS3SxgTOglSKbQrqoSxWbD2bWozaaELFMqlpYUrWMg0ZCLnEAqe5BM61+WFV1kkOyCVEFVBFKdULgHUrFJkWV1D1JVVZ0jlbfoYr15FUUNWVOx2qwpHGv/fSDPU6TpLZDKskRlomKQbKqsaqg6J4gy50AyTwfn1ylWq3IfpJJcqaZgWWz/ywaqoXJCEkita47k4TpdY7nc7Lf/FdVITd1wdm2CRPOtWlrRbeEkSOl6iX8XOfQeSLStme6NZRGkxjgS7QItrepWOQfS9XqFxSLtQdpQ228K7rZlkGyqbVtoSSB14RZIHr2yzNRIqx6kPN+BJDm7NkGiAltLWryqNofcHGv/PWitukOedxxJypazaxMkmm+t3ATJ7MS//vjxU/H1b0+k0mrrSHnXsSnJjmRTZr61osXbhYPHkQ4PSOZ5Bkk2q1z8Mi6DpPTNk5G67Z7vcU76AKQsy82ZTwT8LJJlkEyNIW+ejrwPIJkbkpEQ8M0ZK5Y9kMyvkXSh7gdI3TVsf2aFZS8PpuPZQXRPQPqbLq3pi804vXZB2i5hAO4vYv/q6uon4Qd/cGrfCk1ux52tjbc1dqRXdSROKYtBYjFILBaLdUf/CTAAdD5FTJbHDboAAAAASUVORK5CYII=";const RO=OO,NO=new Image,qO=Cl.A.createLock(NO);NO.onload=qO,NO.src="data:image/png;base64,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";const FO=NO;let HO=(new Ui).moveTo(0,0).lineTo(77.5,0).moveTo(77.5,25).lineTo(77.5,-25).moveTo(110.5,0).lineTo(188,0).moveTo(110.5,52).lineTo(110.5,-52);const YO=HO.bounds.width,GO=fD.BATTERY_LENGTH/YO;HO=HO.transformed(Et.scale(GO,GO));const UO=ab(new ga(HO,{stroke:jr.BLACK,lineWidth:fD.SCHEMATIC_LINE_WIDTH}),{wrap:!1});UO.centerY=0,UO.mouseArea=UO.bounds.shiftedY(UO.height/2),UO.touchArea=UO.bounds.shiftedY(UO.height/2);let zO=class extends TO{constructor(e,t,i,n,s,r){r=(0,o.sF)({useHitTestForSensors:!0},r);const a=new Jh("normal"===i.batteryType?RO:FO);a.mutate({scale:i.distanceBetweenVertices/a.width}),a.centerY=0,super(e,t,i,n,a,UO,s,r),this.battery=i}};zO.webglSpriteNodes=[new Jh(RO),new Jh(FO)],t.register("BatteryNode",zO);let WO=class e{getWidth(){return this.maxX-this.minX}get width(){return this.getWidth()}getHeight(){return this.maxY-this.minY}get height(){return this.getHeight()}getDepth(){return this.maxZ-this.minZ}get depth(){return this.getDepth()}getX(){return this.minX}get x(){return this.getX()}getY(){return this.minY}get y(){return this.getY()}getZ(){return this.minZ}get z(){return this.getZ()}getMinX(){return this.minX}getMinY(){return this.minY}getMinZ(){return this.minZ}getMaxX(){return this.maxX}getMaxY(){return this.maxY}getMaxZ(){return this.maxZ}getLeft(){return this.minX}get left(){return this.minX}getTop(){return this.minY}get top(){return this.minY}getBack(){return this.minZ}get back(){return this.minZ}getRight(){return this.maxX}get right(){return this.maxX}getBottom(){return this.maxY}get bottom(){return this.maxY}getFront(){return this.maxZ}get front(){return this.maxZ}getCenterX(){return(this.maxX+this.minX)/2}get centerX(){return this.getCenterX()}getCenterY(){return(this.maxY+this.minY)/2}get centerY(){return this.getCenterY()}getCenterZ(){return(this.maxZ+this.minZ)/2}get centerZ(){return this.getCenterZ()}getCenter(){return new nt(this.getCenterX(),this.getCenterY(),this.getCenterZ())}get center(){return this.getCenter()}get volume(){return this.width*this.height*this.depth}isEmpty(){return this.getWidth()<0||this.getHeight()<0||this.getDepth()<0}isFinite(){return isFinite(this.minX)&&isFinite(this.minY)&&isFinite(this.minZ)&&isFinite(this.maxX)&&isFinite(this.maxY)&&isFinite(this.maxZ)}hasNonzeroVolume(){return this.getWidth()>0&&this.getHeight()>0&&this.getDepth()>0}isValid(){return!this.isEmpty()&&this.isFinite()}containsCoordinates(e,t,i){return this.minX<=e&&e<=this.maxX&&this.minY<=t&&t<=this.maxY&&this.minZ<=i&&i<=this.maxZ}containsPoint(e){return this.containsCoordinates(e.x,e.y,e.z)}containsBounds(e){return this.minX<=e.minX&&this.maxX>=e.maxX&&this.minY<=e.minY&&this.maxY>=e.maxY&&this.minZ<=e.minZ&&this.maxZ>=e.maxZ}intersectsBounds(e){return!this.intersection(e).isEmpty()}toString(){return`[x:(${this.minX},${this.maxX}),y:(${this.minY},${this.maxY}),z:(${this.minZ},${this.maxZ})]`}equals(e){return this.minX===e.minX&&this.minY===e.minY&&this.minZ===e.minZ&&this.maxX===e.maxX&&this.maxY===e.maxY&&this.maxZ===e.maxZ}equalsEpsilon(e,t){t=void 0!==t?t:0;const i=this.isFinite(),n=e.isFinite();return i&&n?Math.abs(this.minX-e.minX)({minX:e.minX,minY:e.minY,minZ:e.minZ,maxX:e.maxX,maxY:e.maxY,maxZ:e.maxZ}),fromStateObject:e=>new WO(e.minX,e.minY,e.minZ,e.maxX,e.maxY,e.maxZ)}),C.A.register("Bounds3",WO),ws.mixInto(WO,{initialize:WO.prototype.setMinMax});const QO=WO;let KO=class extends D{getDefaultValue(){return this._defaultValue}get defaultValue(){return this.getDefaultValue()}setMin(e){super.setMin(e)}setMax(e){super.setMax(e)}setMinMax(e,t){return super.setMinMax(e,t)}toString(){return`[RangeWithValue (min:${this.min} max:${this.max} defaultValue:${this._defaultValue})]`}equals(e){return this.constructor===e.constructor&&this._defaultValue===e.defaultValue&&super.equals(e)}constructor(e,t,i){super(e,t),this._defaultValue=i}};C.A.register("RangeWithValue",KO);const jO=KO;var ZO=i(6930);const _O={PLATE_WIDTH_RANGE:new jO(.01,.02,Math.sqrt(2e-4)),PLATE_HEIGHT:5e-4,POLARITY:ZO.A.byKeys(["POSITIVE","NEGATIVE"]),PLATE_SEPARATION_RANGE:new jO(.002,.01,.006)};va.register("CapacitorConstants",_O);const XO=_O,JO=new Ne(6,7),$O=ZO.A.byKeys(["UP","DOWN"]),eL=(e,t,i,n)=>{n.moveTo(e.x,e.y-t/2-3),n.lineTo(e.x,e.y+t/2-3);const s=JO.width,r=JO.height,o=i===$O.UP?e.x-1/4:e.x+1/4;i===$O.UP?(n.moveTo(o,e.y-r/2),n.lineTo(o+s/2,e.y+r/2),n.lineTo(o-s/2,e.y+r/2)):i===$O.DOWN&&(n.moveTo(o,e.y+r/2),n.lineTo(o-s/2,e.y-r/2),n.lineTo(o+s/2,e.y-r/2))};let tL=class extends Ug{paintCanvas(e){const t=this.capacitor.getEffectiveEField(),i=this.getLineSpacing(t);if(i>0){e.beginPath();const n=this.capacitor.plateSizeProperty.value.width,s=n,r=this.capacitor.plateSeparationProperty.value,o=this.modelViewTransform.modelToViewDeltaXYZ(0,r,0).y,a=t>=0?$O.DOWN:$O.UP;let l=i/2;for(;l<=n/2;){let t=i/2;for(;t<=s/2;){const n=0,s=this.modelViewTransform.modelToViewXYZ(l,n,t),r=this.modelViewTransform.modelToViewXYZ(-l,n,t),h=this.modelViewTransform.modelToViewXYZ(l,n,-t),c=this.modelViewTransform.modelToViewXYZ(-l,n,-t);eL(s,o,a,e),eL(r,o,a,e),eL(h,o,a,e),eL(c,o,a,e),t+=i}l+=i}e.strokeStyle="black",e.fillStyle="black",e.lineWidth=1,e.fill(),e.stroke()}}getLineSpacing(e){return 0===e?0:.0258/Math.sqrt(Math.abs(e))}constructor(e,t,i,n){super({canvasBounds:n}),this.capacitor=e,this.modelViewTransform=t,this.maxEffectiveEField=i,Ve.multilink([e.plateSizeProperty,e.plateSeparationProperty,e.plateVoltageProperty],()=>{this.isVisible()&&this.invalidatePaint()}),this.visibleProperty.link(e=>e&&this.invalidatePaint())}};va.register("EFieldNode",tL);const iL=tL,nL=new De.A(0,0),sL=new nt(0,0,0);let rL=class{modelToViewPosition(e){return nL.setPolar(e.z*Math.sin(this.pitch),this.yaw),nL.addXY(e.x,e.y),this.modelToViewTransform2D.transformPosition2(nL)}modelToViewXYZ(e,t,i){return this.modelToViewPosition(sL.setXYZ(e,t,i))}modelToViewDelta(e){const t=this.modelToViewPosition(sL.setXYZ(0,0,0));return this.modelToViewPosition(e).minus(t)}modelToViewDeltaXYZ(e,t,i){return this.modelToViewDelta(new nt(e,t,i))}modelToViewShape(e){return this.modelToViewTransform2D.transformShape(e)}modelToViewBounds(e){return this.modelToViewTransform2D.transformBounds2(e)}viewToModelPosition(e){return nt.from(this.modelToViewTransform2D.inversePosition2(e))}viewToModelXY(e,t){return this.viewToModelPosition(nL.setXY(e,t))}viewToModelDelta(e){const t=this.viewToModelPosition(nL.setXY(0,0));return this.viewToModelPosition(e).minus(t)}viewToModelDeltaXY(e,t){return this.viewToModelDelta(new De.A(e,t))}viewToModelShape(e){return this.modelToViewTransform2D.inverseShape(e)}viewToModelBounds(e){return this.modelToViewTransform2D.inverseBounds2(e)}constructor(e){e=(0,p.A)({scale:12e3,pitch:30*Math.PI/180,yaw:-45*Math.PI/180},e),this.modelToViewTransform2D=new Ba(Et.scaling(e.scale)),this.pitch=e.pitch,this.yaw=e.yaw}};va.register("YawPitchModelViewTransform3",rL);const oL=rL;let aL=class{createTopFace(e,t,i,n,s,r){const o=this.modelViewTransform.modelToViewXYZ(e-n/2,t,i+r/2),a=this.modelViewTransform.modelToViewXYZ(e+n/2,t,i+r/2),l=this.modelViewTransform.modelToViewXYZ(e+n/2,t,i-r/2),h=this.modelViewTransform.modelToViewXYZ(e-n/2,t,i-r/2);return this.createFace(o,a,l,h)}createTopFaceBounds3(e){return this.createTopFace(e.minX,e.minY,e.minZ,e.width,e.height,e.depth)}createFrontFace(e,t,i,n,s,r){const o=this.modelViewTransform.modelToViewXYZ(e-n/2,t,i-r/2),a=this.modelViewTransform.modelToViewXYZ(e+n/2,t,i-r/2),l=this.modelViewTransform.modelToViewXYZ(e+n/2,t+s,i-r/2),h=this.modelViewTransform.modelToViewXYZ(e-n/2,t+s,i-r/2);return this.createFace(o,a,l,h)}createFrontFaceBounds3(e){return this.createFrontFace(e.minX,e.minY,e.minZ,e.width,e.height,e.depth)}createRightSideFace(e,t,i,n,s,r){const o=this.modelViewTransform.modelToViewXYZ(e+n/2,t,i-r/2),a=this.modelViewTransform.modelToViewXYZ(e+n/2,t,i+r/2),l=this.modelViewTransform.modelToViewXYZ(e+n/2,t+s,i+r/2),h=this.modelViewTransform.modelToViewXYZ(e+n/2,t+s,i-r/2);return this.createFace(o,a,l,h)}createRightSideFaceBounds3(e){return this.createRightSideFace(e.minX,e.minY,e.minZ,e.width,e.height,e.depth)}createBoxShape(e,t,i,n,s,r){const o=this.createTopFace(e,t,i,n,s,r),a=this.createFrontFace(e,t,i,n,s,r),l=this.createRightSideFace(e,t,i,n,s,r);return Ui.union([o,a,l])}createFace(e,t,i,n){return(new Ui).moveToPoint(e).lineToPoint(t).lineToPoint(i).lineToPoint(n).close()}constructor(e){this.modelViewTransform=e}};va.register("BoxShapeCreator",aL);const lL=aL,hL={lineWidth:1,stroke:"black"};let cL=class extends Dr{updateShapes(){this.topNode.shape=this.shapeCreator.createTopFaceBounds3(this.size),this.frontNode.shape=this.shapeCreator.createFrontFaceBounds3(this.size),this.rightSideNode.shape=this.shapeCreator.createRightSideFaceBounds3(this.size)}setBoxSize(e){e.equals(this.size)||(this.size=e,this.updateShapes())}constructor(e,t,i,n){super(),this.shapeCreator=new lL(e),this.topNode=new ga(null,(0,p.A)({fill:t},hL)),this.frontNode=new ga(null,(0,p.A)({fill:t.darkerColor()},hL)),this.rightSideNode=new ga(null,(0,p.A)({fill:t.darkerColor().darkerColor()},hL)),this.size=i,this.updateShapes(),this.addChild(this.topNode),this.addChild(this.frontNode),this.addChild(this.rightSideNode),n=(0,p.A)({pickable:!0},n),this.mutate(n)}};va.register("BoxNode",cL);const dL=cL,uL=jP.RED_COLORBLIND.toCSS(),pL=new D(1,625),mL=new Ne(7,2);let gL=class extends Ug{getGridSize(e,t,i){let n=0,s=0;if(e>0){const r=Math.sqrt(e/t/i);n=(0,tt.q)(t*r);const o=(0,tt.q)(i*r),a=(0,tt.q)(e/n);if(o!==a){s=Math.abs(e-o*n)=0&&this.polarity===XO.POLARITY.POSITIVE||this.getPlateCharge()<0&&this.polarity===XO.POLARITY.NEGATIVE}paintCanvas(e){const t=this.getPlateCharge(),i=this.getNumberOfCharges(t,this.maxPlateCharge);if(i>0){const t=this.modelViewTransform.viewToModelDeltaXY(mL.width,0).x,n=this.getContactWidth(),s=this.capacitor.plateSizeProperty.value.depth-2*t,r=this.getGridSize(i,n,s),o=r.height,a=r.width,l=n/a,h=s/o,c=l/2,d=h/2;for(let u=0;u0&&nthis.isVisible()&&this.invalidatePaint()),this.visibleProperty.link(e=>e&&this.invalidatePaint())}};const AL=(e,t)=>{const i=mL.width,n=mL.height;t.fillStyle=uL,t.fillRect(e.x-i/2,e.y-n/2,i,n),t.fillRect(e.x-n/2,e.y-i/2,n,i)},yL=(e,t,i)=>{const n=mL.width,s=mL.height;t.fillStyle="blue",i===Ie.VERTICAL?t.fillRect(e.x-n/2,e.y,n,s):t.fillRect(e.x-s/2,e.y-2.5,s,n)};va.register("PlateChargeNode",gL);const fL=gL,bL=new jr(245,245,245);let PL=class extends dL{setChargeVisible(e){this.plateChargeNode.visible=e}getMaxBoxNodeBounds(){return new dL(this.modelViewTransform,bL,new QO(0,0,0,XO.PLATE_WIDTH_RANGE.max,XO.PLATE_HEIGHT,XO.PLATE_WIDTH_RANGE.max)).bounds}constructor(e,t,i,n,s){let r=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];super(t,bL,e.plateSizeProperty.value),this.modelViewTransform=t;const o=this.getMaxBoxNodeBounds();this.plateChargeNode=new fL(e,t,{polarity:i,maxPlateCharge:n,canvasBounds:o,orientation:s}),r&&this.addChild(this.plateChargeNode)}};va.register("PlateNode",PL);const VL=PL;let wL=class extends Dr{dispose(){this.disposeCapacitorNode(),super.dispose()}frontSideContainsSensorPoint(e){const t=this.topPlateNode.globalToParentPoint(e);return this.topPlateNode.containsPoint(t)}backSideContainsSensorPoint(e){const t=this.bottomPlateNode.globalToParentPoint(e);return this.bottomPlateNode.containsPoint(t)}getTopPlateClipShapeToGlobal(){const e=this.topPlateNode.topNode;return Ui.rect(e.center.x-100,e.center.y-300,200,300).transformed(e.getLocalToGlobalMatrix())}getBottomPlateClipShapeToGlobal(){const e=this.bottomPlateNode.frontNode;return Ui.rect(e.bounds.center.x-100,e.bounds.bottom,200,300).transformed(e.getLocalToGlobalMatrix())}updateGeometry(){this.topPlateNode.setBoxSize(this.capacitor.plateSizeProperty.value),this.bottomPlateNode.setBoxSize(this.capacitor.plateSizeProperty.value);const e=-this.capacitor.plateSeparationProperty.value/2-this.capacitor.plateSizeProperty.value.height;this.topPlateNode.center=this.modelViewTransform.modelToViewDeltaXYZ(0,e,0);const t=this.capacitor.plateSeparationProperty.value/2;this.bottomPlateNode.center=this.modelViewTransform.modelToViewDeltaXYZ(0,t,0)}getPlatesBounds(){return new Me(this.topPlateNode.left,this.topPlateNode.top,this.bottomPlateNode.right,this.bottomPlateNode.bottom)}constructor(e,t,i,n,s){s=(0,p.A)({orientation:Ie.VERTICAL,includeChargeNode:!0},s),super(),(0,L.A)(s.orientation,{validValues:Ie.enumeration.values}),this.capacitor=e.capacitor,this.modelViewTransform=t,this.topPlateNode=new VL(this.capacitor,t,XO.POLARITY.POSITIVE,e.maxPlateCharge,s.orientation,s.includeChargeNode),this.bottomPlateNode=new VL(this.capacitor,t,XO.POLARITY.NEGATIVE,e.maxPlateCharge,s.orientation,s.includeChargeNode);const r=new iL(this.capacitor,t,e.maxEffectiveEField,this.getPlatesBounds());this.addChild(this.bottomPlateNode),this.addChild(r),this.addChild(this.topPlateNode);const o=Ve.multilink([this.capacitor.plateSizeProperty,this.capacitor.plateSeparationProperty],()=>this.updateGeometry()),a=e=>{this.topPlateNode.setChargeVisible(e),this.bottomPlateNode.setChargeVisible(e)};i.link(a);const l=e=>r.setVisible(e);n.link(l),this.mutate(s),this.disposeCapacitorNode=()=>{o.dispose(),i.unlink(a),n.unlink(l)}}};va.register("CapacitorNode",wL);const vL=wL,EL=new Image,SL=Cl.A.createLock(EL);EL.onload=SL,EL.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHwAAAAUCAYAAABPuVmJAAACFklEQVRoQ+2ZP2gTYRjGn+fOzeHSycXJwaHLFRy6iE1w6KLGCEVKUVBw8A9eFcShShJFUAo2ttAuUkVFB6Ek6KCDNQEXBSEuxUkQ3By8bCLmHlEIWJPedbPf3XfLO9wN976/73u+5/1ewj6ZqgAzla1NFonAH47v9btgEVAB4AihHEhAgo3/vw6KFMJBG9JrF2wce/nmQ9y6jgXeOHogoMuaJJCEjVu7DpEUOkT50OPn8xtB3xB468xUnWTRbmQDhQyo71t8VBoEfSDwtesXAjmsQcAf0bfRuDqQmh6embvzL/Q+4N+ezfvqum3rb0yvgEK6UX7o4Pl1Z3of8K+NpYqoMkEIgo3m1iFSVN1RPFv5e+n2Af/44FbTAcasihun4oNO39bu45fzscDfLcyEEjzrylPQlUQKR4MbQ7HAX1w7F5KOZ1uwrd2CbY4POuNXF3KxwJ9cPNEkNZYKQct4eyGpNXn7frykL508UgFZtr1YClyMUD29vBJv2m6WCr4ctwXQM70xyfb/q9NV5F9ZWf0cK+m/X17aPxoQqFlZN/fWSdD07Ku3yRcvvdVwas9wHUDRzknMmxNFQuPu+7XDm75a7X04sWtnAKAKB17G/Y8ZlgboQCg//fSlb2f3mCaORwu57b67zS0RzEsYIeGlwM6kZkQAoQOiDagZ/fxxbzX8vu7MTrxLz7bRSX/2iTs8/SXIVoa/ADGQqWBIOVyOAAAAAElFTkSuQmCC";const TL=EL;let CL=(new Ui).moveTo(0,0).lineTo(79,0).moveTo(79,52).lineTo(79,-52),IL=(new Ui).moveTo(109,0).lineTo(188,0).moveTo(109,52).lineTo(109,-52);const xL=fD.CAPACITOR_LENGTH/188;CL=CL.transformed(Et.scale(xL,xL)),IL=IL.transformed(Et.scale(xL,xL));let DL=class extends TO{dispose(){this.disposeCapacitorCircuitElementNode(),super.dispose()}containsSensorPoint(e){return this.step(),this.frontSideContainsSensorPoint(e)||this.backSideContainsSensorPoint(e)}frontSideContainsSensorPoint(e){return this.viewTypeProperty.value===bk.LIFELIKE?this.capacitorCircuitElementLifelikeNode.frontSideContainsSensorPoint(e)||this.leftWireStub.containsPoint(this.leftWireStub.globalToParentPoint(e)):this.leftSchematicHitAreaPath.containsPoint(this.leftSchematicHitAreaPath.globalToParentPoint(e))}backSideContainsSensorPoint(e){return this.viewTypeProperty.value===bk.LIFELIKE?this.capacitorCircuitElementLifelikeNode.backSideContainsSensorPoint(e)||this.rightWireStub.containsPoint(this.rightWireStub.globalToParentPoint(e)):this.rightSchematicHitAreaPath.containsPoint(this.rightSchematicHitAreaPath.globalToParentPoint(e))}getHighlightBounds(){return this.viewTypeProperty.value===bk.LIFELIKE?this.contentNode.localBounds.erodedX(22).erodedY(15):this.contentNode.localBounds.dilatedX(10).dilatedY(10)}constructor(e,t,i,n,s,r){r=(0,o.sF)({isIcon:!1},r);const a={pickable:!0},l=new QO(0,0,0,.01414213562373095,XO.PLATE_HEIGHT,.01414213562373095),d=new H(.004),u={maxPlateCharge:26562e-16,capacitor:{plateSizeProperty:new h.A(l),plateSeparationProperty:d,plateVoltageProperty:new H(1.5),plateChargeProperty:new H(0),getEffectiveEField:()=>0}},p=new oL,m=new c(!0),g=new c(!0),A=new vL(u,p,m,g,{tandem:P.A.OPT_OUT,orientation:Ie.HORIZONTAL,includeChargeNode:!r.isIcon,scale:.45,rotation:-Math.PI/2,centerX:i.distanceBetweenVertices/2,centerY:0}),y=Ve.multilink([i.capacitanceProperty,i.voltageDifferenceProperty],(e,t)=>{let i=2e-13*e*t;Math.abs(i)<1e-18&&(i=0),u.capacitor.plateChargeProperty.set(-i)}),f=new Jh(TL,(0,o.sF)({centerX:A.centerX,centerY:A.centerY},a)),b=new Jh(TL,(0,o.sF)({centerX:A.centerX,centerY:A.centerY},a)),V={stroke:jr.BLACK,lineWidth:fD.SCHEMATIC_LINE_WIDTH,strokePickable:!0,pickable:!0},w={stroke:null,lineWidth:15,strokePickable:!0,pickable:!0},v=new ga(CL,V),E=new ga(IL,V),S=new Dr({children:[v,E]});S.mouseArea=S.localBounds.dilated(2),S.touchArea=S.localBounds.dilated(2),A.mouseArea=A.localBounds.erodedX(45).dilatedY(12),A.touchArea=A.localBounds.erodedX(45).dilatedY(12),super(e,t,i,n,new Dr({children:[A,f,b]}),S,s,r),this.capacitor=i,this.capacitorCircuitElementLifelikeNode=A,this.capacitorCircuitElementSchematicNode=S,this.leftWireStub=f,this.rightWireStub=b,this.leftSchematicPath=v,this.rightSchematicPath=E,this.leftSchematicHitAreaPath=new ga(CL,w),this.rightSchematicHitAreaPath=new ga(IL,w),S.addChild(this.leftSchematicHitAreaPath),S.addChild(this.rightSchematicHitAreaPath),i.capacitanceProperty.link(e=>{d.value=4e-4/e;const t=this.capacitorCircuitElementLifelikeNode.getTopPlateClipShapeToGlobal();f.clipArea=t.transformed(f.getGlobalToLocalMatrix());const i=this.capacitorCircuitElementLifelikeNode.getBottomPlateClipShapeToGlobal();b.clipArea=i.transformed(b.getGlobalToLocalMatrix())}),this.disposeCapacitorCircuitElementNode=()=>{y.dispose(),A.dispose()}}};DL.webglSpriteNodes=[new Jh(TL)],t.register("CapacitorCircuitElementNode",DL);const kL=new Image,ML=Cl.A.createLock(kL);kL.onload=ML,kL.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAAE7CAYAAABgyTVqAAAACXBIWXMAABcRAAAXEQHKJvM/AAAHF0lEQVR4nO3dT24UVx4H8PfaBqQJBidMmExGGcEBkJL1oNg+wXCDwAlGnCDhBMAJ0kdwNqwG0UgekBECR/KKDV6wYIGQI4H/2zV6nmdPd9sY2xi7X9XnI5Wqqv9Adbm+9et6XVUvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA8YolrO9//On89VaMl1ohhFaMoRVDaIW+cXp8+/mu6d3es/n4Xu/v//f3eO2O9+xn+bpe+8Hl613OLVWoetZN1TfV/2zV9bq1jSqsVVVYr6rt6f/Nb+zxXNX7XJ7vnv7YcxtV1f73wh9zn3s7+VTDg76A2U8hhPGBWBIOoxNCGPgwtAZgGWAgCANkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIAmTBAJgyQCQNkwgCZMEAmDJAJA2TCAJkwQCYMkAkDZMIA2XAJK+I/C388DCGMdz8WY9wxncb902lotVo75rce25reHmIrDLWGQqsVw9DQ0OZjadw/DA8Pb4/7p9Nw6tSpHePdhtOnT2+Pt4YzZ870TA+dOtXzeQ9qY2MjLC4uhqWFhc1x/7C0tLQ9LC8vb4/TsLKysj1Ow+rqas+wtrbWM6yvr2/+f1tDVVVpmD+eLeXTlFIZ7oQQilih7DAZQpgpYbWUEoYUhLsDsBwc3M1S1llJxwyqQ3naVVXNlbLUJYVBdSjPrZKWuLTWpF9CCMXsaRquvbGxUdTfqsSm1aL2Ng01X9KxwpYSw9BWHQbe3bW1teKO70r90U11GFzzMcY7JS54qWFol9J23TQxxrvLy8tFtvqVfDpGcd9JG2A+N4EXqdgwVFXVCSF0BmBRyGKMtxYXF4v9Laj0E/UcOwyOuXfv3hVbFULpYVAdBkeqCqV/hjqcwu3Y4eTNzc/Pt0v/EMWHoaqqmdy6xAmpQ1UINbq4x7HDyem8efOmFjujWoQhnwOjOpyAulSFULPLPlWH49d5/fp1bRowahOGXB0E4hjVqSqEGt4QwAVAx6fz6tWrWjVr1yoM6+vrLgA6JjHGG3X7THW8VYzq8Pm1X758WbvT6GsXhnQefTpzcgAWpbbqdqywpa43EbvjAqDPI8bYfvHiRS3XbS3DsLq6Ol/XvdcJq/V6re3tJVdWVlweesTS18/Z2dnartNa32tVdThSxV7OuV+1DsPy8rLqcERSVXj+/HmtW+lqfxfuOraHn4DaV4XQhDAsLS25AOgTpaowPT1d+99umtI/g2OHw5ubmpr6pdSFP4hGhGFxcVF1OKQmNUI0qece1eHg5u7fv9+Y60QaE4aFhYWOC4AOptVqNWoH0rQ+3VSHfYoxzty7d69RO49GheH9+/cuD92nVqvVuLuOHL7XvEKNjIxcunLlysvuDg537fQwdWjY1/lhf4eHH+v8cCh1drg1v9X5YZpPHR12dYbY3QHibp0hptfHvk4d//8XjDv/iH2PpY4Gtzoq7Om4MHVa2NV54UrqvHBlJbx9+7Zz+/btiaZtG40LQ/LgwYNfY4zXNzeuvOFs9xTaNb/Xc7v1LLrjvUc0H7r+v4POhz2Wd4/5ibNffNG41rem9gN90wVAH9RuYhBCU8MwMTGRgjAhEL3yDdkae4fCplaGMD4+PiMQPVI1mBg5e7ax66OxYUjGxsZSIH7Q8UlonxsZmTg3MtLoHUOjw5CM/fjjXK4QjWtyraoqbfw3zp871/gze0NTW5M+ZGpq6nqI8XYMYbQBrUmpGt74cnS06VVxW+MrQ7erV6+2YwiXQwiTg7NURy5Vg1tfjo7+IAi9VIYPePTo0XiI8dcYwqXaVIYU8hhvXvjqK1f/7UIYPuLx48fpx7mfY4yXCg5DJ52K/ecLF5zGvgdh2Kfp6el0PPFzd6UY+DCk5tIYb138+msh2AdhOKAnT55cizH+FGO8NohhyNcrT6ZK8JeLF30dOgBhOKSnT5+mCnEthPCv9BVqAMIwGUP4LcQ4+ddvvvFD4iEIwxF49uzZ9zHGdMD9zxjC+DGFYT5/DfotBeFv334rAJ9IGI7YzO+/j8YQvg8xplCMpekY4+gRhGEmxjgXQ3gYYuz8/bvvNIseMWE4BrOzsykMm6HI4Ugb+PmYHtu58T/smu/EEOYvX75sw//cQgj/BYC5DyWBHyCpAAAAAElFTkSuQmCC";const BL=kL,OL=[new TD(194,315,"data:image/png;base64,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"),new TD(97,158,"data:image/png;base64,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"),new TD(49,79,"data:image/png;base64,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"),new TD(25,40,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAoCAYAAAALz1FrAAAAAklEQVR4AewaftIAAAPDSURBVL3Bf4iedQEA8M/3+7zPc7vjfZ/3zndr5YQF28LbK6GwVEisJCL/PKEgVyCEU+7CFlhEHS/6Yn8YwZHsrpWTCKLaMJKI/dESz4k1UEHxDpG20XbLPMv0Lt3s8u7phZOcd+97d/vRfT7Bym7HDovmUaCEeYtKeBMPYUEHQXtfxLU4iQNWdis+idcxYo2+jb0u3G34PrZbxTC+4OJtxQg+poNvYLdLdyV+4DyJRTdjB0Zdun8hxQCedp7voeTyegA1LRF1vIN3XV6PYY+WiAEccvk9i0xLRIKX/X8saClhXgeT9w99C7uEoldb4RzG643REe3NYUeCT+NJS0w2B/9QBHeGED6EHDXUUEMNNcJHKW4b+swnrht74plfWe5qfLiE/1hiojn0ZYpbgrCv3hi9xwommkOPBMUdk82hr9Ubo/t8UIEsIrVE4CMIOGoV1zRGv1oU4Z+42XLdOBFRWO4xvFYoHpxsDl5rFSF4B6nlavhTRLBEvTH6Z8J3ArWCRyeagze4OAXmIs7iJkvUG6OP4JuBjUH45URz8FMuXNAScQCf1Ua9MfYwvk6RB+Hnk83Bz1u7m3BOS8SbSHRQb4z9rODuQpESHp5oDu6yNp/Dj7VEi57CvTq4pjH2aBDuKcjxoNVFBMxqiRb9Hn2o6aDeGD0UeJzwcau7F+PeE73vEPZaQaF4iyK1sitRxePeE73vBfwdX3FphvAL54k+6CH043oXZw+mMOk80XL34UvY7gLMnP13js3Yb4mgjeHh4acr5fJ1fX1971Z7e1WrVdXeXtVyOc0r5Sy/ovZ2CMH8/LzXpqf97cxUz19fecVbb589sOeuu+62REkbMcYNMcZuSyWJmGZaKiEE/5OUxKSkpUsb0TqI1kG0DqJ1EK2Dkjamp6fnZ2dmzMzMKL/xhjzP5dWqK/r6bNq0ycaNG8UkMTc359SpU6bOnDH96qvmWrRR0saRI0d+OzU1tStJkpDnuVqtZsuWLbZt22bnzp36+/ulaWp2dtb4+Lhjx445fvz4THd394+0EbVx8uTJB3p7e19yAXp6en53+vTp57URdZDn+U+SJFmwBqVS6fWtW7fep4OogxMnTvywXC4/bw0qlcqvjx49elwHJSsYGBjYd8ONN451b9iwoaurS09Pj0qlIs9zaZbZctVVNm/e/JeDBw9+9/DhwzopWcH+/ft/evvu3TEtlfZmWdafZVmSZZksy6RZdi5N0z/meT48MjLyDysI1ujZ5567NUvTW9I0rWZdXWcWFhZ+s2P79hetwX8BmSv+qJg8NW0AAAAASUVORK5CYII="),new TD(13,20,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAHRSURBVJ3BQWhSYQDA8f/3KcHGHKgv3cEx58haztMQ3qE6dNghioICYyvaKZuHQYcOBUl7R/G8nbpHdOvmQQMXEh19czMwPfTIy4aMIGLufT3yUW+jaOz3E/yRBuaBAWADgiE/0AY2OeYqcJ9/uwPcxGMaWOb/bgNXcC0DkpN5gEMCh4DNyQxw+AEbl7mWfyNgGqEEvwgcn1KF9bsMfQPmcSziMI389S0j/4FjzLX8uy0j/4iha8AlCQgcAuoKzpjGylO8BBaIKENBoC4BiSNVWN8VqIcCkTWN/Av+TgCHEugDl3GkChsfFeoecMs0VnIcJQAfDgm8Bc7hmitsmMBrEAsctQRs4pAM7QBZflMDUBLX/vcfI8Ah0MYhcOVyuecXZ2czU/G4PRUOhrSx0bPjM+dbn+u1mWaz+XXp8ZMFXH5c0Wh0QghxA4caG2dkchIhxAVbm0BpexIPySlITsGPq91uWzvb20prtUQ8HieTyRAIBKhWq3Q6nT08fLgajUbti2UtWpYVllISi8VQSlEulw8qlcqzfr9v4pJ4JBKJl9ls1tZ1HU3TCIZC6Lpe63a7r/Dw4dHr9d4Xi8WDZDI5GolEdsOaVp5Lp1dLpdI+Hj8BtxuMfeusE5cAAAAASUVORK5CYII=")],LL=[new TD(195,315,"data:image/png;base64,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"),new TD(98,158,"data:image/png;base64,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"),new TD(49,79,"data:image/png;base64,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"),new TD(25,40,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAoCAYAAAALz1FrAAAAAklEQVR4AewaftIAAAPcSURBVL3BX2wcdB0A8M/3d9frupVKZ9wwMyZD1If2AYyjYcuZNnEiiMYE4pMY5rYY22kUH4w+NKU8QCRoJFJjjLFqlvlgMGwx9GFpVwPysJD4QCd/AkxFszGKhXWM9Xr342aXbLR3Z4tLP5/Q2m24BVXUsICEgiUFnMPPcU4TobHd6McZPIKa5j6D3TiHB63SAfzQ2n0WD6HP/3Av9nv/SngIZU3sxZD/X8LDuNYyH8EDrp4bcZ9LkiX78DtXz19xAX3qEhISTri6fobb1RXxDTyjiZEv9k8Ih7BPdlC4lXySKBIflvOfR44ce8RKb6GmLmELHtfAyJcGbiZ3yb4lK2Gf7IOyHnxCzpuFz2muiuuKWNTEx7duvqMQacP5hcont3Vf84+/z7659YYtm984+fpcYVt3V+1fc28tlgqF1zV3ArcXMIBpy8yMDh3aVCp9k3xNsZA2dG/qKJy7UNm4rburbe78hY1buzZ1VKq17t5tH9o+OLBjYGzq+LiVTuHzBfThKVeYGR26kfzjas3RqedeefX02fn08pn/zMzOn/fCqdm/zc6//e+XXnvj1dNn5/+5WK0tXveBzpsGB27eODZ1/Kj3ege3JrRbJvNRlDrai0/ieuIxWW8wgS2YxwI2v3Bq9gnilZD7rHQTTidky/QOP3qYeCk4cNene749cnjq+yKuHzly7Lsidoi4S8SXiVtGjhy7l/w20WalMp4tImkofy/zSxG/mhkd2tsz/OiEupHDU4suq2mtC0cTXsQ9lukZHnscg0ERv352dPBOa1dQl3AI2zXQOzz2B/J+VINfzIwO3W31ul2SLKnhYxroGR47nOWvEWfJP5kZHfyC1dmPo+qSJb/HVzXROzw2Sb6HqGbutzqdeEpdsuR5Sz6liZ7hsenMYyF6ZkYHi1rbi5ddklz2U3xFC8Gb5FLOOrV2A8Zdklw2hxM4oIksuyhC1twPMO0KyXv9Ft24QwNBtqRDY3eiiglXSFa6H2X0WYOFxWoJO/Ajy4QGJicn/1itVne3tbVV1EWEiyLXiqlS6cztG+ZEuCgipMrCxsVarVjY0PGbXbt2fd0yRQ1ERGexWNxkuVRQay+IiGtdIZfaFfxXhwaSdZCsg2QdJOsgWQdJYxXvT1UDSWMHUbE270TEQQ0kDQwMDBzEX6xBznly586dT2ggaSIiHsYFq5Bzns85P6CJpIn+/v4jOGZ1Jsrl8pOaSFp7EHNayDm/lnMe1UJBC+Pj4yf37NnzXM55e0RsjYiCuohQt5BzfjoivlMul5/WQlil6enpXRFxW865OyLORMSfyuXycavwLmgAPhMV3lN4AAAAAElFTkSuQmCC"),new TD(13,20,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAHHSURBVJ3BwUuTYRzA8e/ved9tZSNW4rykMNoO5aCLp3S4BdsOwQgST1INgqij0XUML126GQ6W1/6CHTs4wyCKKGsdhDrsMoZEupcinNvz9MJe9FWLws9HOBAHpgAN9BhQgAU0gTWOmAaK/N0N4CY+Z4G7/FsByOK5BUT5P7dx2YAGtnCVC5kLGP0UJACmC2KA1XKtvsRADwjbgMaTu3zxSWvHmbaU0kHb6hlgJHw6Uq7VlxjYAPIWMAE0GosPrgQtdW9ts9lsOz++t7addmvH2Rofjow+zF+NLK++XQdsIK4AC1eytLwhSnZnJydeikgakRxIfjh86pVAlIEp4I0CFPtMETHXZycvPS7X6rpcq2sOCwFfFNAGsriSpUoDzJzAtcbi/QWOU7gU8AIYw5MsVb4aWMFIjsPmgM+4FAMfgHn2ma6IUXh29/o2EALe4RI81Wp1IRaLzQQCgb7d/RUOONux7ujYp+DOt3Gn0/mZnb8zg8fGk0gkokABVz80hI6eQSC+d26EofPRTXwUJ6A4AcWBJqD5sw4+Ck8mk6kAHzmur7V+ho/CR0QqQA8fY8zrVCq1go/CJ51OV4FHwDrw3hjzHChyxG8gZox0VeVroQAAAABJRU5ErkJggg==")],RL=3*Math.PI/4,NL=3*Math.PI/2;let qL=class extends ga{setBrightness(e){const t=0===e?0:this.minRays+(0,tt.q)(e*(this.maxRays-this.minRays)),i=this.minRayLength+e*(this.maxRayLength-this.minRayLength);let n=RL;const s=NL/(t-1),r=Ue(.3*this.maxRayLength,.6*this.maxRayLength,this.shortRayLineWidth,this.longRayLineWidth,i);this.lineWidth=(0,et.q)(r,this.shortRayLineWidth,this.longRayLineWidth);const o=new Ui;for(let a,l,h,c,d,u,p=0;p0),0===t&&o.circle(0,0,this.bulbRadius),this.setShape(o)}constructor(e,t){const i=(0,o.Ay)()({minRays:8,maxRays:60,minRayLength:0,maxRayLength:200,longRayLineWidth:1.5,mediumRayLineWidth:1,shortRayLineWidth:.5,stroke:"yellow"},t);super(null),this.bulbRadius=e,this.minRays=i.minRays,this.maxRays=i.maxRays,this.minRayLength=i.minRayLength,this.maxRayLength=i.maxRayLength,this.mediumRayLineWidth=i.mediumRayLineWidth,this.longRayLineWidth=i.longRayLineWidth,this.shortRayLineWidth=i.shortRayLineWidth,this.setBrightness(0),this.mutate(i)}};va.register("LightRaysNode",qL);const FL=new Image,HL=Cl.A.createLock(FL);FL.onload=HL,FL.src="data:image/png;base64,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";const YL=FL,GL=new Image,UL=Cl.A.createLock(GL);GL.onload=UL,GL.src="data:image/png;base64,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";const zL=GL,WL=new Image,QL=Cl.A.createLock(WL);WL.onload=QL,WL.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAAE7CAYAAACPC15UAAAACXBIWXMAABcSAAAXEgFnn9JSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAD85JREFUeNrs3QtwVHe9wPHfPvKAhITQkEAgJST0AaUPRntrIEC02opja58WpjMXeokzUm2t43VGbrW1Vu3DWpl6naptuYiOWq3T0qmg00oB0wFCIVDaRA2BpEB5piaBZF9nd+//f/Lobs4J2Ww2kN39foYze3azOSTZ/zf/PbubPY5wOCxAunPyIwAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEgBAAQgAIASAEfgQAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEABACQAgAIQCEwI8AIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEABCAAgBIASAEIBEcyfDF/n7B+ZscegVh0P9M9fM08jLBlvvv+4gn2euOp3mZdHXc+qrfHRZ7+f1XK7Wnfq8Q5xO/TGnOPsuMz/uNC93Onuua5469XVc4nQ5zfNOp0tczt7zLrdad4rLrU71usslbn2qzrvdGebS80XHLxQMis/nFb/fZy4Bc/FLIBCQgOEXI2BI0AhIMKhO1XVDoZC5hMPh2JcB1w+pJejIPHDbD7fXEEICFPkbF4/qf9AXR/SFff8s6z1h9KyHeyMJ9UXo6IlBXx7uDSHcG0JYhRBWAz+sAtCL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";const KL=WL;let jL=class extends Dr{dispose(){this.disposeCustomLightBulbNode()}step(e,t){this.update()}update(){if(this.visible&&!this.baseOnly){const e=this.brightnessProperty.value;this.backNode.visible=e>0,this.backNode.visible&&(this.backNode.imageOpacity=GD.clamp(GD.linear(0,.5,0,1,e),0,1)),this.raysNode&&this.raysNode.setBrightness(e)}}constructor(e,t){const i=(0,o.Ay)()({baseOnly:!1,isExtreme:!0,scale:fD.BULB_SCALE,isReal:!1},t),n=i.baseOnly,s=i.isExtreme?KL:i.isReal?BL:zL,r=i.isReal?LL:OL,a=new Jh(i.baseOnly?s:YL,{scale:.125,centerX:0,bottom:0,pickable:!1}),l=new Jh(i.baseOnly?s:r,{scale:.125,centerBottom:a.centerBottom,pickable:!1});let h=null;if(i.baseOnly)i.children=[a];else{const e=l.width/2;h=new qL(e,{scale:i.scale,x:a.centerX,y:(l.top+e)*i.scale}),i.children=[a,l]}super(i),this.baseOnly=n,this.backNode=a,this.raysNode=h,this.brightnessProperty=e,i.baseOnly?this.brightnessObserver=null:(this.brightnessObserver=this.update.bind(this),this.brightnessProperty.link(this.brightnessObserver)),this.disposeCustomLightBulbNode=()=>{i.baseOnly||this.brightnessProperty.unlink(this.brightnessObserver)};const c=this.localBounds.width,d=this.localBounds.height;this.mouseArea=(new Ui).moveTo(this.localBounds.minX,this.localBounds.minY).lineToRelative(c,0).lineToRelative(0,.6*d).lineToRelative(.25*-c,0).lineToRelative(0,d*(.4-.1)).lineToRelative(.5*-c,0).lineToRelative(0,-d*(.4-.1)).lineToRelative(.25*-c,0).lineTo(this.localBounds.minX,this.localBounds.minY),this.touchArea=this.mouseArea,this.visibleProperty.link(e=>e&&this.update())}};jL.webglSpriteNodes=[new Jh(YL),new Jh(OL),new Jh(zL),new Jh(KL)],t.register("CustomLightBulbNode",jL);const ZL=new Et;let _L=class extends TO{updateRender(){const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get().minus(e).angle+Math.PI/4;this.contentNode.setMatrix(ZL.setToTranslationRotationPoint(e,t))}updateOpacityOnInteractiveChange(){}constructor(e,t,i,n,s,r){const a=new jL(new H(0),{baseOnly:!0,isExtreme:i.isExtreme,isReal:i.isReal});r=(0,o.sF)({pickable:!1,showHighlight:!1},r),super(e,t,i,n,a,new Va(0,0,10,10),s,r)}};t.register("LightBulbSocketNode",_L);const XL=new Et;let JL=class extends TO{updateRender(){const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get(),i=De.A.getAngleBetweenVectors(e,t)+Math.PI/4;XL.setToTranslationRotationPoint(e,i),this.contentNode.setMatrix(XL),this.rayNodeContainer.setMatrix(XL),this.highlightNode&&this.highlightNode.setMatrix(XL),this.socketNode&&this.socketNode.updateRender()}dispose(){this.disposeCircuitConstructionKitLightBulbNode(),super.dispose()}updateOpacityOnInteractiveChange(){}constructor(e,t,i,n,s,r,a){const l=(0,o.sF)({isIcon:!1,useHitTestForSensors:!0},a),h=new H(0),c=Ve.multilink([i.currentProperty,n,i.resistanceProperty],(e,t,i)=>{let n=((e,t)=>1*Math.log(1+t*e)/Math.log(1+2e3*e))(.35,Math.abs(e*e*i));n<1e-6&&(n=0),h.value=GD.clamp(n,0,1)});let d=new jL(h,{isReal:i.isReal});l.isIcon&&(d=new Jh(i.isExtreme?CD:i.isReal?LL:OL,{scale:.37}),i.isReal&&d.addChild(new Jh(BL)));const u=wk.createSamplePoints(i.startPositionProperty.get()),p=u[0],m=u[1].minus(p),g=m.x,A=m.x/2,y=e=>e.moveTo(0,-73).arc(g/2,-73,A,Math.PI,-Math.PI,!0).moveTo(0,-73).arc(A,-73,5,Math.PI,0,!1).lineTo(g,-73),f=2*A,b=Math.cos(Math.PI/4),V=Math.sin(Math.PI/4),w=e=>e.moveTo(0,-73).arc(g/2,-73,A,Math.PI,-Math.PI,!0).moveTo(A+.5,-73).lineToRelative(A*b,-A*V).lineToRelative(-f*b,f*V).moveTo(A,-73).lineToRelative(-A*b,-A*V).lineToRelative(f*b,f*V),v=e=>e.moveTo(0,0).lineTo(0,-73).moveTo(g,-73).lineTo(g,m.y),E=v(y(new Ui)),S=v(w(new Ui)),T=y(new Ui).transformed(Et.scaling(1.75)),C=w(new Ui).transformed(Et.scaling(1.75)),I=new ga(T,{stroke:jr.BLACK,lineWidth:l.isIcon?4:fD.SCHEMATIC_LINE_WIDTH});l.isIcon&&(I.center=d.center.plusXY(0,22));const x=e=>{l.isIcon?I.shape=e===sD.IEEE?T:C:I.shape=e===sD.IEEE?E:S};oD.link(x),l.isIcon||(I.mouseArea=I.bounds.dilated(2),I.touchArea=I.mouseArea),super(e,t,i,s,d,I,r,l),this.rayNodeContainer=new Dr({children:d instanceof jL?[d.raysNode]:[]});let D=null;t?(this.socketNode=new _L(e,t,i,s,P.A.OPT_OUT,l),D=e=>{this.rayNodeContainer.visible=e===bk.LIFELIKE},s.link(D),t&&!i.phetioIsArchetype&&t.lightBulbSocketLayer.addChild(this.socketNode),t&&t.addChildToBackground(this.rayNodeContainer)):this.socketNode=null,this.disposeCircuitConstructionKitLightBulbNode=()=>{c.dispose(),this.socketNode&&(this.socketNode&&t&&t.lightBulbSocketLayer.removeChild(this.socketNode),t&&t.removeChildFromBackground(this.rayNodeContainer),s.unlink(D),this.socketNode.dispose(),oD.unlink(x))}}};t.register("CCKCLightBulbNode",JL);let $L=class extends Dr{constructor(e){const t=(0,o.Ay)()({sphereOpacity:1,minusSignOpacity:1,radius:10},e);t.children=[new xh(t.radius,{opacity:t.sphereOpacity,fill:new ob(2,-3,2,2,-3,7).addColorStop(0,"#4fcfff").addColorStop(.5,"#2cbef5").addColorStop(1,"#00a9e8")}),new Va(0,0,11,2,{opacity:t.minusSignOpacity,fill:"white",centerX:0,centerY:0})],super(t)}};va.register("ElectronChargeNode",$L);let eR=class e extends Ui{static getArrowShapePoints(e,t,i,n,s,r){const a=(0,o.Ay)()({tailWidth:5,headWidth:10,headHeight:10,fractionalHeadHeight:.5,doubleHead:!1,isHeadDynamic:!1,scaleTailToo:!1},r);if(s||(s=[]),i===e&&n===t)s.length=0;else{const r=new De.A(i-e,n-t),o=r.magnitude;let l=a.headWidth,h=a.headHeight,c=a.tailWidth;if(a.isHeadDynamic){const e=a.fractionalHeadHeight*o;a.headHeight>e&&(h=e,a.scaleTailToo&&(l=a.headWidth*h/a.headHeight,c=a.tailWidth*h/a.headHeight))}else h=Math.min(a.headHeight,a.doubleHead?.35*o:.99*o);let d=0;const u=r.normalized(),p=u.rotated(Math.PI/2),m=function(i,n){const r=u.x*i+p.x*n+e,o=u.y*i+p.y*n+t;s[d]?(s[d].x=r,s[d].y=o):s.push(new De.A(r,o)),d++};a.doubleHead?(m(0,0),m(h,l/2),m(h,c/2)):m(0,c/2),m(o-h,c/2),m(o-h,l/2),m(o,0),m(o-h,-l/2),m(o-h,-c/2),a.doubleHead?(m(h,-c/2),m(h,-l/2)):m(0,-c/2),dthis.lineTo(e.x,e.y)),this.close()}}};va.register("ArrowShape",eR);let tR=class extends ga{get tailX(){return this._tailX}get tailY(){return this._tailY}get tipX(){return this._tipX}get tipY(){return this._tipY}setTailAndTip(e,t,i,n){this._tailX=e,this._tailY=t,this._tipX=i,this._tipY=n;const s=this.updateShapePoints();!this.shape||s?this.updateShape():this.shape.invalidatePoints()}updateShape(){const e=new Ui;if(this.shapePoints.length>1){e.moveToPoint(this.shapePoints[0]);for(let t=1;t{rR.children=[ab(new iR(P.A.OPT_OUT),{wrap:!1})]});let oR=class extends Dr{dispose(){this.charge.changedEmitter.removeListener(this.updateTransformListener),this.charge.visibleProperty.unlink(this.updateVisibleListener),this.outsideOfBlackBoxProperty.unlink(this.updateVisibleListener),super.dispose()}updateTransform(){const e=this.charge,t=e.circuitElement.currentProperty.get();if(e.charge>0){this.translation=e.matrix.getTranslation(),this.rotation=e.matrix.getRotation()+(t>0?Math.PI:0);const i=GD.linear(.015,1e-6,1,0,Math.abs(e.circuitElement.currentProperty.get())),n=GD.clamp(i,0,1);this.setOpacity(n)}else this.translation=e.matrix.getTranslation();if(this.updateVisible(),this.outsideOfBlackBoxProperty.set(!e.circuitElement.insideTrueBlackBoxProperty.get()),this.charge.circuitElement instanceof gk){const e=this.circuitNode.getCircuitElementNode(this.charge.circuitElement);if(e instanceof DL){let t=null;if(this.circuitNode.model.viewTypeProperty.value===bk.LIFELIKE)t=this.charge.distance0?rR:nR]}),e.disposeEmitter.addListener(()=>this.dispose()),this.circuitNode=t,this.charge=e,this.outsideOfBlackBoxProperty=new c(!1),this.updateVisibleListener=this.updateVisible.bind(this),this.updateTransformListener=()=>this.updateTransform(),e.changedEmitter.addListener(this.updateTransformListener),e.visibleProperty.link(this.updateVisibleListener),this.outsideOfBlackBoxProperty.link(this.updateVisibleListener),this.updateTransformListener()}};oR.webglSpriteNodes=[nR,rR],t.register("ChargeNode",oR);let aR=class extends Dr{step(){this.rebuild()}rebuild(){this.removeAllChildren(),this.circuitNode.circuit.circuitElements.forEach(e=>{const t=e.startVertexProperty.value.positionProperty.value,i=e.endVertexProperty.value.positionProperty.value;let n=null,s=0;e.currentProperty.value>0&&(s=1),e.currentProperty.value<0&&(s=-1),n=1===s?new tR(t.x,t.y,i.x,i.y,{fill:"red",stroke:"black",lineWidth:1}):-1===s?new tR(i.x,i.y,t.x,t.y,{fill:"red",stroke:"black",lineWidth:1}):new tR(t.x,t.y,i.x,i.y,{fill:"white",stroke:"black",lineWidth:1}),this.addChild(n);const r=i.minus(t).perpendicular.normalized().timesScalar(10),o=new tR(t.x+r.x,t.y+r.y,i.x+r.x,i.y+r.y,{fill:"green"});this.addChild(o);const a=new Rc(e.currentProperty.value.toFixed(4)),l=new gP(a,{center:n.center,fill:e.currentSenseProperty.value===WD.FORWARD?"green":e.currentSenseProperty.value===WD.BACKWARD?"rgba(137, 196, 244, 1)":"white"});this.addChild(l)})}constructor(e){super(),this.circuitNode=e,this.rebuild()}};t.register("CircuitDebugLayer",aR);const lR="data:audio/mpeg;base64,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",hR=Il(Bl,lR),cR=Cl.A.createLock(lR),dR=new kl;let uR=!1;const pR=()=>{uR||(cR(),uR=!0)},mR=Bl.decodeAudioData(hR.buffer,e=>{null===dR.audioBufferProperty.value&&(dR.audioBufferProperty.set(e),pR())},e=>{console.warn("decode of audio data failed, using stubbed sound, error: "+e),dR.audioBufferProperty.set(Bl.createBuffer(1,1,Bl.sampleRate)),pR()});mR&&mR.then(e=>{null===dR.audioBufferProperty.value&&(dR.audioBufferProperty.set(e),pR())}).catch(e=>{console.warn("promise rejection caught for audio decode, error = "+e),pR()});const gR=dR,AR=new Ui("M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z").makeImmutable(),yR=new Ui("M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z").makeImmutable();let fR=class extends Dr{constructor(e){super(),this.addChild(new ga(AR,{fill:"white",stroke:"black",lineWidth:22.5,scale:new De.A(-1,1)}));const t=new De.A(.9,.9),i=2*Math.PI/20,n=new ga(yR,{fill:"black",scale:t.timesScalar(.8),rotation:-i}),s=new ga(yR,{fill:"black",scale:t}),r=new ga(yR,{fill:"black",scale:t.timesScalar(.8),rotation:i});this.addChild(new Nf({scale:.5,children:[n,s,r],align:"bottom",spacing:60,center:this.center.plusXY(0,-3)})),this.mutate(e)}};t.register("BarkNode",fR);const bR=new Image,PR=Cl.A.createLock(bR);bR.onload=PR,bR.src="data:image/png;base64,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";const VR=bR,wR=new Image,vR=Cl.A.createLock(wR);wR.onload=vR,wR.src="data:image/png;base64,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";const ER=wR,SR=new Image,TR=Cl.A.createLock(SR);SR.onload=TR,SR.src="data:image/png;base64,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";const CR=SR,IR=new Image,xR=Cl.A.createLock(IR);IR.onload=xR,IR.src="data:image/png;base64,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";const DR=IR,kR=new Image,MR=Cl.A.createLock(kR);kR.onload=MR,kR.src="data:image/png;base64,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";const BR=kR,OR=new Image,LR=Cl.A.createLock(OR);OR.onload=LR,OR.src="data:image/png;base64,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";const RR=OR,NR=new Image,qR=Cl.A.createLock(NR);NR.onload=qR,NR.src="data:image/png;base64,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";const FR=NR,HR=new Image,YR=Cl.A.createLock(HR);HR.onload=YR,HR.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAsCAYAAACHUEHxAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCNEM5Mzg1QjI5RjIxMUU3QTk5MUI1MkE1N0U2RTQzRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCNEM5Mzg1QzI5RjIxMUU3QTk5MUI1MkE1N0U2RTQzRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI0QzkzODU5MjlGMjExRTdBOTkxQjUyQTU3RTZFNDNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI0QzkzODVBMjlGMjExRTdBOTkxQjUyQTU3RTZFNDNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CLMnGAAACCJJREFUeNrsnXts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";const GR=HR,UR=new Image,zR=Cl.A.createLock(UR);UR.onload=zR,UR.src="data:image/png;base64,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";const WR=UR,QR=[{name:"none",significantFigure:null,multiplier:null,tolerance:20,color:null},{name:"pink",significantFigure:null,multiplier:-3,tolerance:null,color:new jr(255,105,180)},{name:"silver",significantFigure:null,multiplier:-2,tolerance:10,color:new jr(192,192,192)},{name:"gold",significantFigure:null,multiplier:-1,tolerance:5,color:new jr("#e6b600")},{name:"black",significantFigure:0,multiplier:0,tolerance:null,color:new jr(0,0,0)},{name:"brown",significantFigure:1,multiplier:1,tolerance:null,color:new jr(150,75,0)},{name:"red",significantFigure:2,multiplier:2,tolerance:null,color:new jr(255,0,0)},{name:"orange",significantFigure:3,multiplier:3,tolerance:null,color:new jr(255,165,0)},{name:"yellow",significantFigure:4,multiplier:4,tolerance:null,color:new jr(255,255,0)},{name:"green",significantFigure:5,multiplier:5,tolerance:null,color:new jr(154,205,50)},{name:"blue",significantFigure:6,multiplier:6,tolerance:null,color:new jr(100,149,237)},{name:"violet",significantFigure:7,multiplier:7,tolerance:null,color:new jr(148,0,211)},{name:"gray",significantFigure:8,multiplier:8,tolerance:null,color:new jr(160,160,160)},{name:"white",significantFigure:9,multiplier:9,tolerance:null,color:new jr(255,255,255)}],KR=(e,t)=>_.find(QR,i=>i[e]===t),jR={getEntries:function(e){if(0===e)return[KR("name","black")];let t=GD.roundSymmetric(Math.log(e)/Math.log(10)),i=e/Math.pow(10,t);i<1&&(i*=10,t--);const n=Math.floor(i),s=10*(i-n);let r=GD.roundSymmetric(s);10===r&&(r=9);const o=(n+r/10)*Math.pow(10,t),a=Math.abs((e-o)/e*100),l=_.filter(QR,e=>null!==e.tolerance),h=_.sortBy(l,"tolerance");let c=null;for(let d=0;da));d++);return[KR("significantFigure",n),KR("significantFigure",r),KR("multiplier",t-1),KR("tolerance",c.tolerance)]},getColorNames:function(e){return _.map(this.getEntries(e),"name")},getColorArray:function(e){return _.map(this.getEntries(e),"color")}};t.register("ResistorColors",jR);const ZR=jR,_R=new Map;_R.set(Ek.COIN,VR),_R.set(Ek.PAPER_CLIP,RR),_R.set(Ek.PENCIL,FR),_R.set(Ek.ERASER,DR),_R.set(Ek.HAND,BR),_R.set(Ek.EXTREME_RESISTOR,WR),_R.set(Ek.RESISTOR,GR),_R.set(Ek.DOG,ER),_R.set(Ek.DOLLAR_BILL,CR);let XR=class extends TO{dispose(){this.disposeResistorNode(),super.dispose()}constructor(e,t,i,n,s,r){r=(0,o.sF)({isIcon:!1,useHitTestForSensors:!0},r);const a=new Jh(_R.get(i.resistorType));let l=null,h=null;if(i.resistorType===Ek.RESISTOR){const e=_.range(4).map(e=>new Va(33+19*e+(3===e?12:0),2.25,10,39.75)),t=new Va(0,0,10,39.75,{centerX:75,y:2.25});l=i=>{const n=ZR.getColorArray(i);if(1===n.length)t.fill=n[0],e.forEach(e=>{e.fill=null});else{t.fill=null;for(let t=0;t{h.visible=e}),a.addChild(h)}const c=r.isIcon?fD.RESISTOR_LENGTH:i.distanceBetweenVertices;a.mutate({scale:c/a.width});let d=(new Ui).moveTo(0,.54*a.height).lineToRelative(45.36,0).lineToRelative(5.94,-54*.54/2).lineToRelative(11.88,54*.54).lineToRelative(11.88,-54*.54).lineToRelative(11.88,54*.54).lineToRelative(11.88,-54*.54).lineToRelative(11.88,54*.54).lineToRelative(5.94,-54*.54/2).lineToRelative(45.36,0),u=a.width/d.bounds.width;d=d.transformed(Et.scale(u,u));const p=d.bounds.minX,m=d.bounds.minY;d=d.transformed(Et.translation(-p,-m));let g=(new Ui).moveTo(0,15).lineToRelative(45.36,0).lineToRelative(0,-15).lineToRelative(70,0).lineToRelative(0,15).lineToRelative(45.36,0).lineToRelative(-45.36,0).lineToRelative(0,15).lineToRelative(-70,0).lineToRelative(0,-15);u=a.width/g.bounds.width,g=g.transformed(Et.scale(u,u));const A=new de([oD],e=>e===sD.IEEE?d:g),y=new ga(A,{stroke:jr.BLACK,lineWidth:fD.SCHEMATIC_LINE_WIDTH});y.mouseArea=y.localBounds,y.touchArea=y.localBounds,y.centerY=0,a.centerY=0,a.translate(0,i.resistorType.verticalOffset),super(e,t,i,n,a,y,s,r),this.resistor=i,this.lifelikeResistorImageNode=a,this.disposeResistorNode=()=>{l&&i.resistanceProperty.unlink(l),a.dispose(),A.dispose(),h&&h.dispose()}}};XR.webglSpriteNodes=[new Jh(GR),new Jh(RR),new Jh(VR),new Jh(FR),new Jh(DR),new Jh(BR),new Jh(WR),new Jh(ER),new Jh(CR)],t.register("ResistorNode",XR);let JR=class extends XR{dispose(){super.dispose(),this.dog.isBarkingProperty.unlink(this.isBarkingListener),this.contentNode.boundsProperty.unlink(this.boundsListener)}constructor(e,t,i,n,s,r){super(e,t,i,n,s,r);const o=new Rm(gR);Jl.addSoundGenerator(o),this.barkNode=new fR({maxWidth:60}),this.addChild(this.barkNode);const a=()=>{if(i.isBarkingProperty.value){const e=this.circuitElement.startVertexProperty.value.positionProperty.value,t=this.circuitElement.endVertexProperty.value.positionProperty.value,i=t.minus(e).getAngle(),n=t.minus(e).normalized(),s=n.getPerpendicular(),r=e.plus(s.timesScalar(100)).plus(n.timesScalar(12));this.barkNode.setRotation(i),this.barkNode.setTranslation(r)}};this.boundsListener=()=>a(),this.contentNode.boundsProperty.link(this.boundsListener),this.dog=i,this.isBarkingListener=e=>{a(),this.barkNode.visible=e,e&&o.play()},i.isBarkingProperty.link(this.isBarkingListener)}};t.register("DogNode",JR);const $R=new Image,eN=Cl.A.createLock($R);$R.onload=eN,$R.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANkAAABDCAYAAAARQ6BTAAAACXBIWXMAABcSAAAXEgFnn9JSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABMVJREFUeNrsm99PU2cYx982bcFgskJIOkw7zqwXrnhRlk2TzY7qkg2SxXGz6c22qn+A9C8gu3dBE7Pb+R8A00ycMJvsp7uC/Yi7sLOEBtyF40fiQgs97D1Q6pEdcclWeN7y+SRvTlPAnPI8Xz7P+7YqBQB1xbfdF+OdVlhfMnr16GXplRT4GnL56cIJStl46P5L68ttobeX06ug16juv5HtvjGwTbgGnguHL8Tj8XD80CEVjUVFvtKhi5/QjQ1MNBZT751+X9x9lUqldHFmRuXv5TPVsGWfFraAR8AcWw0fT6Ws11LHqTLsKn6fTwVDIXH35dzT4URifaV63rAmxseH9dNXq2FbeGrInIA179t3+4OPPgxHIhEqDLu/n/H7VSgYFH2P7e3t6vSZM+rHO3cyX47ddCTV7Rmy6og4fPb8ufDzHR1UF2SETKjJvHg9lVIrKytJNfHVkLZZ1stkg++cOmW90NlJZUHOuOj3qZAhIXN4q7dXTRemB9TGgUiuFjJtMautrW3gxEkO6UCayeSPi1vp7etTn165Mqg2TiBrJutPv3nSGC3D3jKZaX15OPGSikajaf3Q0jYrbIbs3UQiYZSWYQ+ZzMC+TL7crYrFYr9+eGkzZMkXDx6koiAwZNpkho2LDomuLnX982th97gYxmIgc1w002SBwPofhh53yBgVQazJTOzNYPDxwX3tEYceINNkPiN7MxDwCFnIwLkX9oLJ/Eb2pnfIMBlIDJnfzHEx4PrDwLgIssdFbbLGGRcJGYgcFw01mVfIguzJQKLJ/H4jezMYCGIywGQ7bjLnxQDIS5mZvekc2NRsTBUB6jzy8isAIGQAhAwACBkAIQMgZABAyAAkUnsz2rZtfhsgjzUze9N9z7WQVSoVCgryMra2ZmRv2hVCBoSsrlTsyj9Dtrq6SkVBZMhM7E1MBgZtyRrIZBVMBjJVZmRv2hWvcRGTgcyMGdmbFc/TRUwGQvdkmAygziEz0mQcfIBRJuPgA4BxkXERzA2ZWuPgA6DOKsNkAHXOGCYDYE/2L03G6SKIDVmjHOHzAWGQGjIjPyBsYzLAZHU2GSEDc2Jm5n/atBkXgXERkwFshExhMgBMhsnA8JA1zBE+b0aD2JA1yhE+H6sCseNiwxzhYzKQGTNDTWZjMsBkO2CyBXfICvpJi5KCvJCZeSg3Pz/vXKbcIZss3L9vxWIxqgriTGbiuPjHgwfruXKHbPTXn3/p7zhwgKoC4+L/wO/38s6omKuFLD9duNrc3Dz416NHVlNTE5UFTPYf+O3uXbW4uDiic/XEnkwtLy9/PHFr/LO3+3qpLIjalJm0JyuVSurbr79xwpXdfK4WMsdm+tIzNTmZ6TpyhOKCjIwpcz5WVS6X1RfXrjtBy25a7ImQVcn+8N33yaWlpeTRY8eoMMgYFw0wWblUVmM3bqg/Hz48WxWW8gxZNX3deg3Nzc4NvHL0VRWJRKg07Oa0KN5kzh7sp8mpBW0yJ2AjW78e8Poh/Y3ZuFKjt8ZuXmjZv78/Gouq1tZW1dLSQtVhhw1RUnOzs+Luy3kfbEGv4kzRCddl/dQl94joxvesfyzeaYX1Ja1XUmgdClv1DI2B7j1LXzKCbzGney9HpQB2mb8FGACL11kywtsrYAAAAABJRU5ErkJggg==";const tN=$R;let iN=class extends Dr{constructor(e){super();const t=new Ui;["29.2,11.5 34.3,1.9 34.7,12.8 50.7,1.8 38.7,16.9 49.6,17.6 39.8,22.5","11.1,22.5 1.5,17.3 12.4,16.9 1.3,1 16.5,13 17.2,2.1 22.1,11.8","22.8,40.5 17.7,50.1 17.3,39.2 1.3,50.2 13.3,35.1 2.4,34.4 12.2,29.5","40.9,29.5 50.5,34.7 39.6,35.1 50.7,51 35.5,39 34.8,49.9 29.9,40.2"].forEach(e=>{const i=e.split(" ").map(e=>{const t=e.split(",");return new De.A(Number(t[0]),Number(t[1]))});t.moveToPoint(i[0]);for(let n=1;n{const t=this.center,i=GD.linear(0,1,.75,2,e),n=GD.clamp(GD.linear(.8,1,1,0,e),0,1);this.setScaleMagnitude(i),this.setOpacity(n),this.center=t},from:0,to:1,duration:.3,easing:vM.QUADRATIC_IN_OUT});n.endedEmitter.addListener(()=>this.dispose()),n.start()}};t.register("FuseTripAnimation",iN);let nN=class extends TO{dispose(){this.disposeFuseNode(),super.dispose()}constructor(e,t,i,n,s,r){const a=(0,o.Ay)()({isIcon:!1,useHitTestForSensors:!0},r),l=new Jh(tN,{scale:.691}),h=(l.width-30)/5/2,c=new De.A(15,0),d=new De.A(l.width-15,0),u=(new Ui).moveToPoint(c).zigZagToPoint(d,4,GD.roundSymmetric(h),!1),p=(new Ui).moveToPoint(c).zigZagToPoint(new De.A(l.width/2-8,13),4,GD.roundSymmetric(h/2)-1,!1);p.moveToPoint(d),p.zigZagToPoint(new De.A(l.width/2+8,-13),4,GD.roundSymmetric(h/2)-1,!1);const m=new ga(u,{stroke:"#302b2b",lineWidth:4,center:l.center}),g=e=>m.setLineWidth(GD.linear(i.currentRatingProperty.range.min,i.currentRatingProperty.range.max,1,4,e));i.currentRatingProperty.link(g);const A=new Va(15,3,l.width-30,l.height-6,{fill:"#c3dbfd",opacity:.5,stroke:"black",lineWidth:.5}),y=new Dr({children:[m,A,l]}),b=i.chargePathLength-40;let P=(new Ui).moveTo(0,0).lineToRelative(i.chargePathLength,0).moveTo(0,0).rect(20,-15,b,30);const V=a.isIcon?fD.RESISTOR_LENGTH:i.distanceBetweenVertices;y.mutate({scale:V/y.width});const w=y.width/P.bounds.width;P=P.transformed(Et.scale(w,w));const v=new ga(P,{stroke:jr.BLACK,lineWidth:fD.SCHEMATIC_LINE_WIDTH}),E=b/7,S=(new Ui).moveTo(0,P.bounds.centerY).lineToRelative(20,0).lineToRelative(0,-15).lineToRelative(b,0).lineToRelative(0,15).lineToRelative(20,0).lineToRelative(-20,0).lineToRelative(0,15).lineToRelative(-b,0).lineToRelative(0,-30).lineToRelative(E,0).lineToRelative(0,30).lineToRelative(b-2*E,0).lineToRelative(0,-30),T=e=>{v.shape=e===sD.IEEE||e===sD.BRITISH?P:S};oD.link(T),v.centerY=0,y.centerY=0,v.mouseArea=v.bounds.copy(),v.touchArea=v.bounds.copy(),super(e,t,i,n,y,v,s,a),this.fuse=i;const C=e=>{e&&!f.value&&t.addChild(new iN({center:this.center})),A.fill=e?"#4e4e4e":"#c3dbfd",m.shape=e?p:u};a.isIcon||this.fuse.isTrippedProperty.link(C),this.disposeFuseNode=()=>{y.dispose(),i.currentRatingProperty.unlink(g),a.isIcon||this.fuse.isTrippedProperty.unlink(C),oD.unlink(T)}}};nN.webglSpriteNodes=[new Jh(tN)],t.register("FuseNode",nN);const sN=fD.INDUCTOR_LENGTH,rN=(sN-40)/4/2,oN=(new Ui).moveTo(0,0).lineTo(20,0).arc(20+1*rN,0,rN,Math.PI,0,!1).arc(20+3*rN,0,rN,Math.PI,0,!1).arc(20+5*rN,0,rN,Math.PI,0,!1).arc(20+7*rN,0,rN,Math.PI,0,!1).lineTo(sN,0),aN=fD.INDUCTOR_LENGTH,lN=new pi({lineWidth:4,lineCap:"round",lineJoin:"round"}),hN=new pi({lineWidth:2.5,lineCap:"round",lineJoin:"round"});let cN=class extends TO{constructor(e,t,i,n,s,r){r=(0,o.sF)({isIcon:!1,useHitTestForSensors:!0},r);const a=(new Ui).ellipticalArc(aN-7,30,5,30,0,-Math.PI/2,Math.PI/2,!1).ellipticalArc(7,30,5,30,0,Math.PI/2,-Math.PI/2,!0).close(),l=new ga(a,{fill:"white",stroke:"black"}),h=Ui.ellipse(7,30,5,30,2*Math.PI),c=new ga(h,{fill:"#c4c4c4",stroke:"black"}),d=new Dr;i.inductanceProperty.link(e=>{const t=GD.roundSymmetric(GD.linear(5,10,12,20,e)),i=[];for(let n=0;nnew ga(a.getStrokedShape(e),{fill:t});i.push(l(lN,"black")),i.push(l(hN,"#dc9180"))}d.children=i});const u=new Dr({children:[c,l,d],centerY:0}),p=aN/oN.bounds.width,m=oN.transformed(Et.scale(p,p)),g=new ga(m,{stroke:jr.BLACK,lineWidth:fD.SCHEMATIC_LINE_WIDTH});g.mouseArea=g.bounds.dilated(2),g.touchArea=g.bounds.dilated(2),super(e,t,i,n,u,g,s,r),this.inductor=i}};cN.webglSpriteNodes=[],t.register("InductorNode",cN);const dN=eD.currentStringProperty,uN=fD.SERIES_AMMETER_LENGTH,pN=e=>ab(new Va(0,0,uN,40,e),{wrap:!1}),mN=pN({cornerRadius:4,fill:"#f39033"}),gN=pN({cornerRadius:4,stroke:"#231f20",lineWidth:2.4});let AN=class extends TO{dispose(){this.disposeSeriesAmmeterNode(),super.dispose()}updateRender(){super.updateRender(),this.frontPanelContainer.setMatrix(this.contentNode.getMatrix()),this.frontPanelContainer.center=this.center}constructor(e,t,i,n,s,r){const o=new lc($E.NO_VALUE,{tandem:n.createTandem("probeReadoutText").createTandem(Rc.STRING_PROPERTY_TANDEM_NAME),phetioReadOnly:!0}),a=new lB(o,s,dN,n,{seriesAmmeter:!0}),l=()=>{let t=$E.NO_VALUE;if(e){const n=e.model.circuit,s=n.getNeighboringVertices(i.startVertexProperty.get()).length>1,r=n.getNeighboringVertices(i.endVertexProperty.get()).length>1;if(s&&r){const e=i.currentSenseProperty.value===WD.BACKWARD?-1:1;t=pk.createCurrentReadout(i.currentProperty.get()*e,!1)}}o.value=t};i.currentProperty.link(l),i.startVertexProperty.lazyLink(l),i.endVertexProperty.lazyLink(l),i.currentSenseProperty.lazyLink(l),nD.lazyLink(l),eD.currentUnitsStringProperty.lazyLink(l),t&&t.circuit.circuitChangedEmitter.addListener(l);const h=new Dr({children:[mN,new Va(0,0,uN,20,{fill:"#bcbdbf",centerY:20}),gN]});h.mouseArea=h.bounds.copy(),h.touchArea=h.bounds.copy(),h.centerY=0,super(e,t,i,new lh(bk.LIFELIKE),h,new Dr({children:[h]}),n,r),this.frontPanelContainer=new gP(a,{fill:"#f39033",stroke:null,xMargin:10,yMargin:1,pickable:!1}),r&&r.isIcon?h.addChild(this.frontPanelContainer.mutate({centerX:h.width/2,centerY:h.height/2-2})):t&&!i.phetioIsArchetype&&i.tandem.supplied&&t.seriesAmmeterNodeReadoutPanelLayer.addChild(this.frontPanelContainer),this.isIcon=!(!r||!r.isIcon),this.disposeSeriesAmmeterNode=()=>{i.currentSenseProperty.unlink(l),eD.currentUnitsStringProperty.unlink(l),i.currentProperty.unlink(l),i.startVertexProperty.unlink(l),i.endVertexProperty.unlink(l),nD.unlink(l),this.isIcon||t&&t.seriesAmmeterNodeReadoutPanelLayer.removeChild(this.frontPanelContainer),h.dispose(),this.frontPanelContainer.dispose(),a.dispose(),t&&t.circuit.circuitChangedEmitter.removeListener(l),o.dispose()}}};t.register("SeriesAmmeterNode",AN);const yN=ab(new xh(11.2,{fill:"#ae9f9e"}),{wrap:!1});let fN=class extends Dr{dispose(){this.disposeSolderNode(),super.dispose()}constructor(e,t){const i=e.circuit;super({children:[yN],preventFit:!0,pickable:!1}),this.vertex=t,this.startOffset=null;const n=()=>{this.isDisposed||(this.visible=i.countCircuitElements(t)>1)};i.vertexGroup.elementCreatedEmitter.addListener(n),i.vertexGroup.elementDisposedEmitter.addListener(n),i.circuitElements.addItemAddedListener(n),i.circuitElements.addItemRemovedListener(n);const s=this.setTranslation.bind(this);t.positionProperty.link(s),this.disposeSolderNode=()=>{t.positionProperty.unlink(s),i.vertexGroup.elementCreatedEmitter.removeListener(n),i.vertexGroup.elementDisposedEmitter.removeListener(n),i.circuitElements.removeItemAddedListener(n),i.circuitElements.removeItemRemovedListener(n)},n()}};fN.webglSpriteNodes=[yN],fN.SOLDER_RADIUS=11.2,t.register("SolderNode",fN);const bN=fD.SWITCH_START,PN=fD.SWITCH_END,VN=fD.SWITCH_LENGTH,wN=new sb(0,-4,0,4).addColorStop(0,"#d48270").addColorStop(.3,"#e39b8c").addColorStop(1,"#b56351"),vN=function(e,t,i,n,s){const r=i/2,o=new Va(0,-i/2,VN*bN,i,{cornerRadius:r,fill:t,stroke:jr.BLACK,pickable:!0}),a=(new Ui).moveTo(0,i/2).lineTo(VN*bN-n,i/2).arc(VN*bN-n/2,0,n/2,Math.PI,0,!1).arc(VN*bN+n/2,0,n/2,Math.PI,0,!0).lineTo(VN*bN+n,-i/2).lineTo(0,-i/2).lineTo(0,i/2),l=new ga(a,{x:VN*bN,fill:t,stroke:jr.BLACK,lineWidth:e===bk.SCHEMATIC?0:1,pickable:!0});l.rotation=s?0:-Math.PI/4;const h=(new Ui).moveTo(VN*PN-n,i/2).lineTo(VN*PN-n,0).arc(VN*PN-n/2,0,n/2,Math.PI,0,!1).arc(VN*PN+n/2,0,n/2,Math.PI,0,!0).lineTo(VN*PN+n,-i/2).lineTo(VN-r,-i/2).arc(VN-r,0,r,-Math.PI/2,Math.PI/2).lineTo(VN*PN-n,i/2),c=new ga(h,{fill:t,stroke:jr.BLACK,pickable:!0}),d=new xh(.6*i,{fill:"#a7a8ab",stroke:jr.BLACK,lineWidth:4,x:VN*bN}),u=new Dr({children:[o,l,c,d]});return e===bk.SCHEMATIC&&u.addChild(new xh(.6*i,{fill:jr.BLACK,stroke:jr.BLACK,lineWidth:4,x:VN*PN})),u.leftSegmentNode=o,u.rotatingSegmentNode=l,u.rightSegmentNode=c,u},EN=vN(bk.LIFELIKE,wN,16,6,!1),SN=ab(EN,{wrap:!1}),TN=vN(bk.LIFELIKE,wN,16,6,!0),CN=ab(TN,{wrap:!1}),IN=ab(vN(bk.SCHEMATIC,jr.BLACK,fD.SCHEMATIC_LINE_WIDTH,0,!1),{wrap:!1}),xN=ab(vN(bk.SCHEMATIC,jr.BLACK,fD.SCHEMATIC_LINE_WIDTH,0,!0),{wrap:!1});let DN=class extends TO{startSideContainsSensorPoint(e){const t=this.contentNode.parentToLocalPoint(e),i=EN.leftSegmentNode.containsPoint(t),n=(this.circuitSwitch.isClosedProperty.value?TN:EN).rotatingSegmentNode.containsPoint(t);return i||n}endSideContainsSensorPoint(e){const t=this.contentNode.parentToLocalPoint(e);return EN.rightSegmentNode.containsPoint(t)}containsSensorPoint(e){const t=this.globalToParentPoint(e);return this.step(),this.startSideContainsSensorPoint(t)||this.endSideContainsSensorPoint(t)}dispose(){this.disposeSwitchNode(),super.dispose()}constructor(e,t,i,n,s,r){const o=new Dr,a=new Dr,l=e=>{o.children=[e?CN:SN],a.children=[e?xN:IN]};i.isClosedProperty.link(l),super(e,t,i,n,o,a,s,r),this.circuitSwitch=i;let h=null;const c=new Lr({tandem:s.createTandem("fireListener"),attach:!1,press:e=>{h=t.globalToLocalPoint(e.pointer.point)},fire:e=>{if(e){t.globalToLocalPoint(e.pointer.point).distance(h){i.isClosedProperty.unlink(l),e&&this.contentNode.removeInputListener(c),o.dispose(),a.dispose(),c.interrupt(),c.dispose()}}};t.register("SwitchNode",DN);const kN=eD.capacitanceFaradsSymbolStringProperty,MN=eD.fuseValueStringProperty,BN=eD.inductanceHenriesSymbolStringProperty,ON=eD.resistanceOhmsSymbolStringProperty,LN=eD.voltageUnitsStringProperty,RN=new Wc({size:22}),NN=(e,t)=>new Rc("",(0,o.sF)({tandem:e,font:RN,fill:ED.textFillProperty},t)),qN=(e,t)=>new mf("",(0,o.sF)({tandem:e,font:RN},t)),FN='∞';let HN=class extends gP{dispose(){super.dispose(),this.disposeValueNode()}constructor(e,t,i,n,r){const o=new Ff({maxWidth:130});let a,l=null;if(t instanceof lk){const i=NN(r.createTandem("voltageText")),n=Ve.multilink([t.voltageProperty,LN],(e,n)=>{i.string=Qe.A.fillIn(n,{voltage:GD.toFixed(e,t.numberOfDecimalPlaces)}),l&&l()});a=new Ff({align:"right",children:[i]});const h=NN(r.createTandem("resistanceText")),c=Ve.multilink([e,ON],(e,t)=>{h.string=Qe.A.fillIn(t,{resistance:GD.toFixed(e,1)});const n=e>s.batteryMinimumResistance?[i,h]:[i];a.getChildrenCount()!==n.length&&(a.children=n),l&&l()});o.disposeEmitter.addListener(()=>{n.dispose(),c.dispose()})}else if(t instanceof Sk||t instanceof wk){a=NN(r.createTandem("resistanceText"));const e=Ve.multilink([t.resistanceProperty,ON],(e,i)=>{a.string=Qe.A.fillIn(i,{resistance:GD.toFixed(e,t.numberOfDecimalPlaces)}),l&&l()});o.disposeEmitter.addListener(()=>e.dispose())}else if(t instanceof gk){a=NN(r.createTandem("capacitorText"));const e=Ve.multilink([t.capacitanceProperty,kN],(e,i)=>{a.string=Qe.A.fillIn(i,{resistance:GD.toFixed(e,t.numberOfDecimalPlaces)}),l&&l()});o.disposeEmitter.addListener(()=>e.dispose())}else if(t instanceof fk){a=NN(r.createTandem("inductorText"));const e=Ve.multilink([t.inductanceProperty,BN],(e,i)=>{a.string=Qe.A.fillIn(i,{resistance:GD.toFixed(e,t.numberOfDecimalPlaces)}),l&&l()});o.disposeEmitter.addListener(()=>e.dispose())}else if(t instanceof Dk){a=qN(r.createTandem("switchText"));const e=Ve.multilink([t.resistanceProperty,ON],(e,t)=>{a.string=Qe.A.fillIn(t,{resistance:e>1e5?FN:"0"}),l&&l()});o.disposeEmitter.addListener(()=>e.dispose())}else{if(!(t instanceof Ak))throw new Error("ValueNode cannot be shown for "+t.constructor.name);{a=qN(r.createTandem("fuseText"),{align:"right",fill:ED.textFillProperty});const e=Ve.multilink([t.resistanceProperty,t.currentRatingProperty,MN],(e,i,n)=>{const s=e===fD.MAX_RESISTANCE?FN:GD.toFixed(1e3*e,t.numberOfDecimalPlaces);a.string=Qe.A.fillIn(n,{resistance:s,currentRating:GD.toFixed(i,t.numberOfDecimalPlaces)}),l&&l()});o.disposeEmitter.addListener(()=>e.dispose())}}if(s.showCurrents){const e=new Rc("",{fill:ED.textFillProperty});Ve.multilink([t.currentProperty,t.currentSenseProperty],(t,i)=>{e.string=i.toString()+", "+t.toFixed(4)}),a=new Ff({children:[a,e]})}const h=new Rc("",{font:RN,fill:ED.textFillProperty});o.children=[h,a],super(o,{stroke:null,fill:new jr(255,255,255,.6),tandem:r,cornerRadius:3,xMargin:3,yMargin:1,visiblePropertyOptions:{phetioReadOnly:!0},pickable:!1});const c=Et.identity();l=()=>{a.visible=i.value&&t.isValueDisplayableProperty.value;const e=t.labelStringProperty.value;h.string=e,h.visible=e.length>0;const n=t instanceof wk?.56:.5;t.updateMatrixForPoint(t.chargePathLength*n,c);const s=De.A.createPolar(24,c.rotation+3*Math.PI/2);s.y>0&&(s.y=-s.y),this.centerBottom=c.translation.plus(s.timesScalar(.8))},t.vertexMovedEmitter.addListener(l),t.isValueDisplayableProperty.link(l),l(),i.link(l),n.link(l),t.labelStringProperty.link(l),this.disposeValueNode=()=>{o.dispose(),t.vertexMovedEmitter.removeListener(l),i.unlink(l),n.unlink(l),t.labelStringProperty.unlink(l)}}};t.register("ValueNode",HN);const YN={lineWidth:1.3,lineDash:[6,4]},GN=ab(new xh(16,(0,o.sF)({stroke:jr.RED},YN)),{wrap:!1}),UN=ab(new xh(16,(0,o.sF)({stroke:jr.BLACK},YN)),{wrap:!1});let zN=class extends Dr{dispose(){const e=this.vertex,t=this.circuit,i=this.vertexCutButtonContainer,n=this.circuitNode;e.positionProperty.unlink(this.updateVertexNodePositionListener),e.selectionProperty.unlink(this.updateVertexNodePositionListener),e.selectionProperty.unlink(this.updateSelectedListener),e.interactiveProperty.unlink(this.updatePickableListener),e.relayerEmitter.removeListener(this.updateMoveToFront),pk.setInSceneGraph(!1,n.buttonLayer,i),pk.setInSceneGraph(!1,n.highlightLayer,this.highlightNode),t.vertexGroup.elementCreatedEmitter.removeListener(this.updateStrokeListener),t.vertexGroup.elementDisposedEmitter.removeListener(this.updateStrokeListener),t.vertexGroup.elementCreatedEmitter.removeListener(this.updateSelectedListener),t.vertexGroup.elementDisposedEmitter.removeListener(this.updateSelectedListener),t.circuitElements.removeItemAddedListener(this.updateStrokeListener),t.circuitElements.removeItemRemovedListener(this.updateStrokeListener),e.attachableProperty.unlink(this.updateStrokeListener),t.circuitChangedEmitter.removeListener(this.updateStrokeListener),this.dragListener.dispose(),this.removeInputListener(this.dragListener),e.isDraggableProperty.unlink(this.interruptionListener),this.vertexCutButtonContainer.dispose(),super.dispose()}updateSelected(){if(!this.isDisposed){const e=this.vertex.isSelected(),t=this.circuit.getNeighborCircuitElements(this.vertex);if(e){for(let e=0;e1||n;this.vertexCutButtonContainer.filters=s?[]:[Fb.FULL],this.vertexCutButtonContainer.opacity=s?1:Vf.DISABLED_OPACITY,this.vertexCutButtonContainer.inputEnabled=s}}updateStroke(){if(!this.isDisposed){const e=this.circuit.countCircuitElements(this.vertex)>1?UN:GN;this.getChildAt(0)!==e&&(this.children=this.vertexLabelNode?[e,this.vertexLabelNode]:[e]),this.visible=this.vertex.attachableProperty.get()}}updateVertexCutButtonPosition(){const e=this.vertex.positionProperty.get(),t=this.circuit.getNeighborCircuitElements(this.vertex),i=new De.A(0,0);for(let r=0;r0&&i.add(e.normalized())}i.magnitude<1e-6&&i.setXY(0,-1);const n=e.plus(i.normalized().timesScalar(70)),s=this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty.get().eroded(this.vertexCutButtonContainer.width/2);this.vertexCutButtonContainer.center=s.closestPointTo(n)}updateVertexNodePosition(){const e=this.vertex.positionProperty.get();this.translation=e,this.vertex.isSelected()&&(this.highlightNode.translation=e),this.updateReadoutTextPosition&&this.updateReadoutTextPosition(),this.vertex.isSelected()&&this.updateVertexCutButtonPosition()}setDraggable(e){e||this.dragListener.interrupt()}constructor(e,t,i){super({tandem:i,cursor:"pointer",tagName:"div",focusable:!0,focusHighlight:"invisible",phetioDynamicElement:!0,phetioVisiblePropertyInstrumented:!1});const n=e.circuit;this.circuit=n,this.vertexCutButtonContainer=new Dr({children:[e.vertexCutButton]}),this.circuitNode=e,this.addLinkedElement(t,{tandemName:"vertex"});const r=new Rc("",{fontSize:22,fill:ED.textFillProperty,pickable:!1}),o=new Rc("",{fontSize:14,fill:ED.textFillProperty,pickable:!1}),a=[r];s.vertexDisplay&&a.push(o),this.vertexLabelNode=new Ff({children:a,maxWidth:50}),this.updateReadoutTextPosition=()=>{this.vertexLabelNode.centerX=0,this.vertexLabelNode.bottom=-30},s.vertexDisplay&&t.voltageProperty.link(e=>{const i=GD.toFixed(e,3)+"V";o.setString(`${t.index} @ ${i}`),this.updateReadoutTextPosition&&this.updateReadoutTextPosition()}),t.labelStringProperty.link(e=>{r.string=e,this.updateReadoutTextPosition()}),this.vertex=t,this.startOffset=null,this.highlightNode=new xh(30,{stroke:ED.highlightStrokeProperty,lineWidth:fD.HIGHLIGHT_LINE_WIDTH,pickable:!1}),this.updateStrokeListener=this.updateStroke.bind(this),n.vertexGroup.elementCreatedEmitter.addListener(this.updateStrokeListener),n.vertexGroup.elementDisposedEmitter.addListener(this.updateStrokeListener),n.circuitChangedEmitter.addListener(this.updateStrokeListener),n.circuitElements.addItemAddedListener(this.updateStrokeListener),n.circuitElements.addItemRemovedListener(this.updateStrokeListener),t.attachableProperty.link(this.updateStrokeListener),this.updateSelectedListener=this.updateSelected.bind(this),t.selectionProperty.link(this.updateSelectedListener),t.isCuttableProperty.link(this.updateSelectedListener),this.updateMoveToFront=this.moveToFront.bind(this),t.relayerEmitter.addListener(this.updateMoveToFront),this.updatePickableListener=this.setPickable.bind(this),t.interactiveProperty.link(this.updatePickableListener);let l=null,h=null,c=!1;this.dragListener=new VO(e,[()=>t],{tandem:i.createTandem("dragListener"),start:i=>{l=i.pointer.point,h=i.pointer.point.copy(),e.startDragVertex(i.pointer.point,t,t),c=!1},drag:i=>{h=i.pointer.point.copy(),c=!0,e.dragVertex(i.pointer.point,t,!0)},end:()=>{e.endDrag(t,c),!t.isDisposed&&t.interactiveProperty.get()&&h.distance(l){const i=new sb(0,-8,0,8);return e.forEach(e=>{i.addColorStop(t(e.point),e.color)}),i},_N=[{point:0,color:new jr("#993f35")},{point:.2,color:new jr("#cd7767")},{point:.3,color:new jr("#f6bda0")},{point:1,color:new jr("#3c0c08")}],XN=ZN(_N,_.identity),JN=ZN(_N.reverse(),e=>1-e),$N=ab(new ac(0,0,100,0,{lineWidth:16,stroke:XN}),{wrap:!1}),eq=ab(new ac(0,0,100,0,{lineWidth:16,stroke:JN}),{wrap:!1}),tq=ab(new xh(8,{fill:XN}),{wrap:!1}),iq=ab(new xh(8,{fill:JN}),{wrap:!1}),nq=new pi({lineWidth:26,lineCap:"round",lineJoin:"round"}),sq=new pi({lineWidth:23});let rq=class extends PO{updateRender(){if(this.viewTypeProperty.value===bk.LIFELIKE){const e=this.wire.startPositionProperty.get(),t=this.wire.endPositionProperty.get(),i=new De.A(.916,.4),n=t.minus(e),s=i.dot(n),r=s<0?eq:$N,o=s<0?iq:tq;this.lineNode.getChildAt(0)!==r&&this.lineNode.setChildren([r]),this.endCapParent.getChildAt(0)!==o&&this.endCapParent.setChildren([o]),this.startCapParent.getChildAt(0)!==o&&this.startCapParent.setChildren([o]),this.startCapParent.visible=!0,this.endCapParent.visible=!0}else this.lineNode.getChildAt(0)!==jN&&this.lineNode.setChildren([jN,KN]),this.startCapParent.visible=!1,this.endCapParent.visible=!1;const e=this.circuitElement.startPositionProperty.get(),t=this.circuitElement.endPositionProperty.get(),i=t.minus(e),n=Math.max(i.magnitude,1e-8),s=i.angle;if(this.endCapParent.setMatrix(QN.setToTranslationRotationPoint(t,s)),this.startCapParent.setMatrix(QN.setToTranslationRotationPoint(e,s)),QN.multiplyMatrix(Et.scaling(n/100,1)),this.lineNodeParent.setMatrix(QN),this.circuitNode){const e=this.circuitNode.circuit.selectionProperty.get()===this.wire;this.highlightNode.visible=e,e&&(this.highlightNode.shape=(e=>{const t=e.startPositionProperty.get(),i=e.endPositionProperty.get();return Ui.lineSegment(t.x,t.y,i.x,i.y).getStrokedShape(nq)})(this.wire))}this.touchArea=(e=>{const t=e.startPositionProperty.get(),i=e.endPositionProperty.get(),n=i.distance(t);let s=null,r=null;return n>0?(s=t.blend(i,0/n),r=i.blend(t,0/n)):(s=t.average(i),r=s),Ui.lineSegment(s,r).getStrokedShape(sq)})(this.wire),this.mouseArea=this.touchArea}dispose(){this.disposeWireNode(),super.dispose()}constructor(e,t,i,n,s){const r=new Dr({children:[tq]}),o=new Dr({children:[tq]}),a=new ga(null,{stroke:ED.highlightStrokeProperty,lineWidth:fD.HIGHLIGHT_LINE_WIDTH,pickable:!1,visible:!1}),l=new Dr,h=new Dr({children:[l],cursor:"pointer"}),c=new Dr({children:[a]});t&&t.highlightLayer.addChild(c);const d=t&&t.circuit;super(i,d,{children:[r,o,h],tandem:s}),this.viewTypeProperty=n,this.circuitNode=t,this.wire=i,this.startCapParent=r,this.endCapParent=o,this.lineNodeParent=h,this.lineNode=l,this.highlightNode=a;const u=()=>{this.isDisposed||(this.markAsDirty(),t||this.updateRender())};n.link(u);const p=e=>{this.pickable=e};i.interactiveProperty.link(p);const m=(e,t)=>{t&&t.positionProperty.unlink(u),e.positionProperty.link(u)};i.startVertexProperty.link(m),i.endVertexProperty.link(m);let g=null,A=null,y=!1;e?(this.dragListener=new VO(t,[()=>i.startVertexProperty.get(),()=>i.endVertexProperty.get()],{tandem:s.createTandem("dragListener"),start:e=>{i.interactiveProperty.get()&&(t.startDragVertex(e.pointer.point,i.startVertexProperty.get(),this.circuitElement),t.startDragVertex(e.pointer.point,i.endVertexProperty.get(),this.circuitElement),y=!1,g=e.pointer.point.copy(),A=e.pointer.point.copy())},drag:e=>{i.interactiveProperty.get()&&(A=e.pointer.point.copy(),t.dragVertex(e.pointer.point,i.startVertexProperty.get(),!1),t.dragVertex(e.pointer.point,i.endVertexProperty.get(),!1),y=!0)},end:()=>{this.endDrag(this,[i.startVertexProperty.get(),i.endVertexProperty.get()],e,t,g,A,y)}}),this.addInputListener(this.dragListener),t.circuit.selectionProperty.link(u)):this.dragListener=null;const f=()=>{i.interactiveProperty.get()&&this.moveToBack()};i.connectedEmitter.addListener(f),this.disposeWireNode=()=>{this.dragListener.interrupt(),this.dragListener.dispose(),i.startVertexProperty.unlink(m),i.endVertexProperty.unlink(m),t&&t.circuit.selectionProperty.unlink(u),i.interactiveProperty.unlink(p),i.startPositionProperty.unlink(u),i.endPositionProperty.unlink(u),i.connectedEmitter.removeListener(f),t&&t.highlightLayer.removeChild(c),n.unlink(u),this.lineNode.dispose(),this.highlightNode.dispose(),this.lineNodeParent.dispose(),c.dispose(),this.startCapParent.dispose(),this.endCapParent.dispose()},!t&&this.updateRender()}};rq.webglSpriteNodes=[KN,$N,eq,tq],t.register("WireNode",rq);let oq=class extends Dr{getCircuitElementNode(e){return this.circuitElementNodeMap[e.id]}getSolderNode(e){return this.solderNodes[e.index]}getVertexNode(e){return this.vertexNodes[e.index]}getAllDropTargets(e){const t=[];for(let i=0;ie.src.unsnappedPositionProperty.get().distance(e.dst.positionProperty.get()))[0]}return null}step(){this.circuit.circuitElements.forEach(e=>this.getCircuitElementNode(e).step()),this.circuitDebugLayer&&this.circuitDebugLayer.step()}canDragVertex(e){const t=this.circuit.findAllFixedVertices(e);for(let i=0;i!e.blackBoxInterfaceProperty.get());const a=r.filter(e=>e.getOppositeVertex(t).blackBoxInterfaceProperty.get());if(1===a.length){const e=a[0];if(e instanceof ok){const i=e.getOppositeVertex(t),n=s.minus(i.positionProperty.get()).angle,r=e.distanceBetweenVertices||e.lengthProperty.get(),a=o.indexOf(i);o.splice(a,1);const l=De.A.createPolar(r,n).plus(i.positionProperty.get()),h=t.positionProperty.get(),c=l.minus(h),d=De.A.createPolar(r,n+Math.PI),u=[];this.translateVertexGroup(t,o,c,()=>t.unsnappedPositionProperty.set(i.unsnappedPositionProperty.get().minus(d)),u)}}}dragVertex(e,t,i){const n=this.getVertexNode(t);if(n.startOffset){const s=n.globalToParentPoint(e).subtract(n.startOffset),r=this.circuit.getNeighborCircuitElements(t),o=this.circuit.findAllFixedVertices(t);let a=!1;for(let l=0;lt.unsnappedPositionProperty.set(e.unsnappedPositionProperty.get().minus(a)),o)}else{const e=s.minus(t.unsnappedPositionProperty.get());this.translateVertexGroup(t,o,e,null,o)}}}translateVertexGroup(e,t,i,n,s){const r=this.visibleBoundsProperty.get(),o=this.parentToLocalBounds(r);for(let h=0;hthis.getCircuitElementNode(e));for(let s=n.length-1;s>=0;s--){const e=n[s];if(!e)continue;let t=!0;if(e.circuitElement.insideTrueBlackBoxProperty.get()&&(t=this.model.revealingProperty.get()),t&&e.containsSensorPoint(i))return e}return null}getVoltageConnection(e){const t=this.localToGlobalPoint(e),i=_.values(this.solderNodes),n=_.find(i,t=>{const i=t.vertex.positionProperty.get();return e.distance(i)<=fN.SOLDER_RADIUS});if(n)return new bM(n.vertex,null);const s=this.hitCircuitElementNode(e,e=>e.isMetallic,t);if(s){const t=s.circuitElement.startPositionProperty.get(),i=s.circuitElement.endPositionProperty.get().minus(t),n=e.minus(t);let r=0===i.magnitude?0:n.dot(i)/i.magnitudeSquared;r=GD.clamp(r,0,1);const o=GD.linear(0,1,s.circuitElement.startVertexProperty.get().voltageProperty.get(),s.circuitElement.endVertexProperty.get().voltageProperty.get(),r);return new bM(s.circuitElement.startVertexProperty.get(),s.circuitElement,o)}{const i=this.hitCircuitElementNode(e,e=>e instanceof Dk,t);if(i&&i instanceof DN){if(i.startSideContainsSensorPoint(e))return new bM(i.circuitSwitch.startVertexProperty.get(),i.circuitElement);if(i.endSideContainsSensorPoint(e))return new bM(i.circuitSwitch.endVertexProperty.get(),i.circuitElement)}const n=this.hitCircuitElementNode(e,e=>e instanceof gk,t);if(n&&n instanceof DL){if(n.frontSideContainsSensorPoint(t))return new bM(n.circuitElement.startVertexProperty.get(),n.circuitElement);if(n.backSideContainsSensorPoint(t))return new bM(n.circuitElement.endVertexProperty.get(),n.circuitElement)}return null}}getCurrentInLayer(e,t){const i=e.parentToGlobalPoint(e.translation);for(let n=0;n{this.chargeLayer.visible=e&&t}),this.sensorLayer=new Dr,this.beforeCircuitElementsLayer=new Dr,this.afterCircuitElementsLayer=new Dr;const n=[this.lightRaysLayer,this.beforeCircuitElementsLayer,this.wireLayer,this.solderLayer,this.fixedCircuitElementLayer,this.vertexLayer,this.chargeLayer,this.lightBulbSocketLayer,this.seriesAmmeterNodeReadoutPanelLayer,this.afterCircuitElementsLayer,this.sensorLayer,this.highlightLayer,this.valueLayer,this.buttonLayer],r=[this.lightRaysLayer,this.beforeCircuitElementsLayer,this.wireLayer,this.fixedCircuitElementLayer,this.solderLayer,this.vertexLayer,this.chargeLayer,this.lightBulbSocketLayer,this.seriesAmmeterNodeReadoutPanelLayer,this.afterCircuitElementsLayer,this.sensorLayer,this.highlightLayer,this.valueLayer,this.buttonLayer];t.model.viewTypeProperty.link(e=>{this.children=e===bk.LIFELIKE?n:r}),this.visibleBoundsInCircuitCoordinateFrameProperty=new h.A(new Me(0,0,1,1)),this.circuit=e,this.circuitElementNodeMap={},this.solderNodes={},this.vertexNodes={};const o=(t,i,n)=>{const s=s=>{if(t(s)){const t=n.createCorrespondingGroupElement(s.tandem.name,s);if(this.circuitElementNodeMap[s.id]=t,i.addChild(t),s instanceof ok&&!(s instanceof Tk)){const t=new HN(e.sourceResistanceProperty,s,this.model.showValuesProperty,this.model.viewTypeProperty,P.A.OPT_OUT);this.valueLayer.addChild(t),s.disposeEmitterCircuitElement.addListener(()=>{this.valueLayer.removeChild(t),t.dispose()})}}};e.circuitElements.addItemAddedListener(s),e.circuitElements.forEach(s),e.circuitElements.addItemRemovedListener(e=>{if(t(e)){const t=this.getCircuitElementNode(e);i.removeChild(t),n.disposeElement(t),delete this.circuitElementNodeMap[e.id]}})};o(e=>e instanceof kk,this.wireLayer,new nk((e,i)=>new rq(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.wireGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("wireNodeGroup"),supportsDynamicState:!1})),o(e=>e instanceof lM&&"normal"===e.batteryType,this.fixedCircuitElementLayer,new nk((e,i)=>new zO(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.batteryGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("batteryNodeGroup"),supportsDynamicState:!1})),o(e=>e instanceof wk&&!e.isExtreme&&!e.isReal,this.fixedCircuitElementLayer,new nk((e,i)=>new JL(t,this,i,this.model.isValueDepictionEnabledProperty,this.model.viewTypeProperty,e),()=>[this.circuit.lightBulbGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("lightBulbNodeGroup"),supportsDynamicState:!1})),this.circuit.seriesAmmeterGroup&&o(e=>e instanceof Tk,this.fixedCircuitElementLayer,new nk((e,i)=>new AN(t,this,i,e,this.model.isValueDepictionEnabledProperty),()=>[this.circuit.seriesAmmeterGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("seriesAmmeterNodeGroup"),supportsDynamicState:!1})),this.circuit.extremeBatteryGroup&&o(e=>e instanceof lM&&"high-voltage"===e.batteryType,this.fixedCircuitElementLayer,new nk((e,i)=>new zO(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.batteryGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("extremeBatteryNodeGroup"),supportsDynamicState:!1})),this.circuit.extremeResistorGroup&&o(e=>e instanceof Sk&&e.resistorType===Ek.EXTREME_RESISTOR,this.fixedCircuitElementLayer,new nk((e,i)=>new XR(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.extremeResistorGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("extremeResistorNodeGroup"),supportsDynamicState:!1})),this.circuit.extremeLightBulbGroup&&o(e=>e instanceof wk&&e.isExtreme&&!e.isReal,this.fixedCircuitElementLayer,new nk((e,i)=>new JL(t,this,i,this.model.isValueDepictionEnabledProperty,this.model.viewTypeProperty,e),()=>[this.circuit.extremeLightBulbGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("extremeLightBulbNodeGroup"),supportsDynamicState:!1})),this.circuit.realLightBulbGroup&&o(e=>e instanceof wk&&e.isReal,this.fixedCircuitElementLayer,new nk((e,i)=>new JL(t,this,i,this.model.isValueDepictionEnabledProperty,this.model.viewTypeProperty,e),()=>[this.circuit.realLightBulbGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("realLightBulbNodeGroup"),supportsDynamicState:!1})),this.circuit.capacitorGroup&&o(e=>e instanceof gk,this.fixedCircuitElementLayer,new nk((e,i)=>new DL(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.capacitorGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("capacitorNodeGroup"),supportsDynamicState:!1})),this.circuit.acVoltageGroup&&o(e=>e instanceof hk,this.fixedCircuitElementLayer,new nk((e,i)=>new BO(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.acVoltageGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("acVoltageNodeGroup"),supportsDynamicState:!1})),this.circuit.inductorGroup&&o(e=>e instanceof fk,this.fixedCircuitElementLayer,new nk((e,i)=>new cN(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.inductorGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("inductorNodeGroup"),supportsDynamicState:!1})),o(e=>e instanceof Sk&&e.resistorType===Ek.RESISTOR,this.fixedCircuitElementLayer,new nk((e,i)=>new XR(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.resistorGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("resistorNodeGroup"),supportsDynamicState:!1})),o(e=>e instanceof Sk&&e.resistorType!==Ek.RESISTOR&&e.resistorType!==Ek.EXTREME_RESISTOR,this.fixedCircuitElementLayer,new nk((e,i)=>i instanceof AO?new JR(t,this,i,this.model.viewTypeProperty,e):new XR(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.householdObjectGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("householdObjectNodeGroup"),supportsDynamicState:!1})),o(e=>e instanceof Dk,this.fixedCircuitElementLayer,new nk((e,i)=>new DN(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.switchGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("switchNodeGroup"),supportsDynamicState:!1})),o(e=>e instanceof Ak,this.fixedCircuitElementLayer,new nk((e,i)=>new nN(t,this,i,this.model.viewTypeProperty,e),()=>[this.circuit.fuseGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("fuseNodeGroup"),supportsDynamicState:!1}));const a=new ga(mO,{fill:"black",rotation:-Math.PI/2,maxWidth:36});this.vertexCutButton=new $P({baseColor:"yellow",content:a,xMargin:10,yMargin:10,tandem:t.tandem.createTandem("vertexCutButton"),phetioVisiblePropertyInstrumented:!1,enabledPropertyOptions:{phetioReadOnly:!0,phetioFeatured:!1}}),this.vertexCutButton.addListener(()=>{const t=e.getSelectedVertex();t&&(e.cutVertex(t),d(this.visibleBoundsInCircuitCoordinateFrameProperty.value))});const l=new nk((e,t)=>new zN(this,t,e),()=>[e.vertexGroup.archetype],{groupElementStartingIndex:0,phetioType:nk.PhetioGroupIO(Dr.NodeIO),tandem:i.createTandem("vertexNodeGroup"),supportsDynamicState:!1}),c=e=>{const t=new fN(this,e);this.solderNodes[e.index]=t,this.solderLayer.addChild(t);const i=l.createCorrespondingGroupElement(e.tandem.name,e);this.vertexNodes[e.index]=i,this.vertexLayer.addChild(i)};e.vertexGroup.elementCreatedEmitter.addListener(c),e.vertexGroup.elementDisposedEmitter.addListener(e=>{const t=this.getVertexNode(e);this.vertexLayer.removeChild(t),delete this.vertexNodes[e.index],l.disposeElement(t);const i=this.getSolderNode(e);this.solderLayer.removeChild(i),delete this.solderNodes[e.index],i.dispose()}),e.vertexGroup.forEach(c);const d=t=>{for(let i=0;ithis.chargeLayer.addChild(new oR(e,this))),s.showCurrents?(this.circuitDebugLayer=new aR(this),this.addChild(this.circuitDebugLayer)):this.circuitDebugLayer=null,phet.joist.display.addInputListener(new pO(e=>{0===e.target.getTrails(e=>e instanceof XB||e instanceof PO||e instanceof zN).length&&(this.circuit.selectionProperty.value=null)},{displayedNode:this}))}};t.register("CircuitNode",oq);const aq=new e.A("bamboo");let lq=class{constructor(e){const t=(0,o.Ay)()({visible:!0},e);this.visible=t.visible,this.isDisposed=!1}};aq.register("CanvasPainter",lq);const hq=lq;let cq=class extends hq{setSpacing(e){this.spacing!==e&&(this.spacing=e)}setLineDashOffset(e){this.lineDashOffset=e}paintCanvas(e){e.strokeStyle=this.stroke,e.lineWidth=this.lineWidth,e.beginPath(),e.setLineDash(this.lineDash),e.lineDashOffset=this.lineDashOffset,this.chartTransform.forEachSpacing(this.axisOrientation,this.spacing,this.origin,this.clippingType,(t,i)=>{this.axisOrientation===Ie.VERTICAL?(e.moveTo(0,i),e.lineTo(this.chartTransform.viewWidth,i)):(e.moveTo(i,0),e.lineTo(i,this.chartTransform.viewHeight))}),e.stroke()}constructor(e,t,i,n){const s=(0,o.Ay)()({origin:0,clippingType:"strict",stroke:"black",lineWidth:1,lineDash:[1],lineDashOffset:0},n);super(),this.chartTransform=e,this.axisOrientation=t,this.spacing=i,this.origin=s.origin,this.clippingType=s.clippingType,this.stroke=s.stroke,this.lineDash=s.lineDash,this.lineWidth=s.lineWidth,this.lineDashOffset=s.lineDashOffset}};aq.register("CanvasGridLineSet",cq);const dq=cq;let uq=class extends hq{setStroke(e){this.strokeCSS=e instanceof jr?e.toCSS():e}set stroke(e){this.setStroke(e)}dispose(){this.isDisposed=!0}setDataSet(e){this.dataSet=e}paintCanvas(e){if(e.beginPath(),this.strokeCSS){e.strokeStyle=this.strokeCSS,e.lineWidth=this.lineWidth,e.setLineDash(this.lineDash);let t=!0;const i=this.dataSet.length;for(let n=0;n{t.visible&&(e.save(),t.paintCanvas(e),e.restore())})}dispose(){this.disposeChartCanvasLinePlot(),super.dispose()}constructor(e,t,i){super((0,o.Ay)()({canvasBounds:new Me(0,0,e.viewWidth,e.viewHeight)},i)),this.chartTransform=e,this.painters=t,this.update();const n=()=>this.update();e.changedEmitter.addListener(n),this.disposeChartCanvasLinePlot=()=>e.changedEmitter.removeListener(n)}};aq.register("ChartCanvasNode",pq);const mq=pq;let gq=class extends Va{update(){this.setRect(0,0,this.chartTransform.viewWidth,this.chartTransform.viewHeight)}dispose(){this.disposeChartRectangle(),super.dispose()}constructor(e,t){super(0,0,0,0,t),this.chartTransform=e,this.update();const i=()=>this.update();e.changedEmitter.addListener(i),this.disposeChartRectangle=()=>e.changedEmitter.removeListener(i)}};aq.register("ChartRectangle",gq);const Aq=gq;let yq=class{evaluate(e){const t=this.evaluationFunction(e);return t}inverse(e){const t=this.inverseFunction(e);return t}constructor(e,t,i){i=(0,p.A)({domain:new D(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY),range:new D(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY)},i),this.evaluationFunction=e,this.inverseFunction=t,this.domain=i.domain,this.range=i.range}};C.A.register("Transform1",yq);const fq=yq;let bq=class{dispose(){this.changedEmitter.dispose()}forEachSpacing(e,t,i,n,s){const r=this.getSpacingBorders(e,t,i,n),o=r.min,a=r.max;for(let l=o;l<=a+1e-6;l++){const n=l*t+i;s(n,this.modelToView(e,n))}}modelToView(e,t){const i=e===Ie.HORIZONTAL?this.modelXRange:this.modelYRange,n=e===Ie.HORIZONTAL?this.viewWidth:this.viewHeight,s=e===Ie.HORIZONTAL?this.xTransform:this.yTransform,r=e===Ie.HORIZONTAL?this.modelXRangeInverted:this.modelYRangeInverted,o=s.evaluate(t),a=r?n:0,l=r?0:n,h=e===Ie.HORIZONTAL?Ue(s.evaluate(i.min),s.evaluate(i.max),a,l,o):Ue(s.evaluate(i.max),s.evaluate(i.min),a,l,o);return h}modelToViewX(e){return this.modelToView(Ie.HORIZONTAL,e)}modelToViewY(e){return this.modelToView(Ie.VERTICAL,e)}modelToViewXY(e,t){return new De.A(this.modelToViewX(e),this.modelToViewY(t))}modelToViewPosition(e){return this.modelToViewXY(e.x,e.y)}modelToViewDelta(e,t){return this.modelToView(e,t)-this.modelToView(e,0)}modelToViewDeltaX(e){return this.modelToViewDelta(Ie.HORIZONTAL,e)}modelToViewDeltaY(e){return this.modelToViewDelta(Ie.VERTICAL,e)}modelToViewDeltaXY(e,t){return new De.A(this.modelToViewDeltaX(e),this.modelToViewDeltaY(t))}viewToModel(e,t){const i=e===Ie.HORIZONTAL?this.modelXRange:this.modelYRange,n=e===Ie.HORIZONTAL?this.viewWidth:this.viewHeight,s=e===Ie.HORIZONTAL?this.xTransform:this.yTransform,r=e===Ie.HORIZONTAL?this.modelXRangeInverted:this.modelYRangeInverted,o=r?n:0,a=r?0:n,l=e===Ie.HORIZONTAL?Ue(o,a,s.evaluate(i.min),s.evaluate(i.max),t):Ue(o,a,s.evaluate(i.max),s.evaluate(i.min),t),h=s.inverse(l);return h}viewToModelX(e){return this.viewToModel(Ie.HORIZONTAL,e)}viewToModelY(e){return this.viewToModel(Ie.VERTICAL,e)}viewToModelXY(e,t){return new De.A(this.viewToModelX(e),this.viewToModelY(t))}viewToModelPosition(e){return this.viewToModelXY(e.x,e.y)}viewToModelDeltaX(e){return this.viewToModelX(e)-this.viewToModelX(0)}viewToModelDeltaY(e){return this.viewToModelY(e)-this.viewToModelY(0)}viewToModelDelta(e){return this.viewToModelPosition(e).minus(this.viewToModelPosition(De.A.ZERO))}setViewWidth(e){e!==this.viewWidth&&(this.viewWidth=e,this.changedEmitter.emit())}setViewHeight(e){e!==this.viewHeight&&(this.viewHeight=e,this.changedEmitter.emit())}setModelXRange(e){e.equals(this.modelXRange)||(this.modelXRange=e,this.changedEmitter.emit())}setModelYRange(e){e.equals(this.modelYRange)||(this.modelYRange=e,this.changedEmitter.emit())}getModelRange(e){return e===Ie.HORIZONTAL?this.modelXRange:this.modelYRange}setXTransform(e){this.xTransform!==e&&(this.xTransform=e,this.changedEmitter.emit())}setYTransform(e){this.yTransform!==e&&(this.yTransform=e,this.changedEmitter.emit())}getSpacingBorders(e,t,i,n){const s=this.getModelRange(e),r=Pq(s.min,n,i,t,Math.ceil),o=Pq(s.max,n,i,t,Math.floor);return new D(r,o)}constructor(e){const t=(0,o.Ay)()({viewWidth:100,modelXRange:new D(-1,1),modelXRangeInverted:!1,xTransform:new fq(e=>e,e=>e),viewHeight:100,modelYRange:new D(-1,1),modelYRangeInverted:!1,yTransform:new fq(e=>e,e=>e)},e);this.changedEmitter=new v.A,this.viewWidth=t.viewWidth,this.viewHeight=t.viewHeight,this.modelXRange=t.modelXRange,this.modelXRangeInverted=t.modelXRangeInverted,this.modelYRange=t.modelYRange,this.modelYRangeInverted=t.modelYRangeInverted,this.xTransform=t.xTransform,this.yTransform=t.yTransform}};function Pq(e,t,i,n,s){return"lenient"===t?(0,tt.q)((e-i)/n):s((e-i)/n)}aq.register("ChartTransform",bq);const Vq=bq;let wq=class extends ga{setDataSet(e){this.dataSet=e,this.update()}update(){const e=new Ui,t=this.dataSet.length;for(let i=0;ithis.update();e.changedEmitter.addListener(s),this.disposeScatterPlot=()=>e.changedEmitter.removeListener(s)}};aq.register("ScatterPlot",wq);const vq=wq,Eq={doubleHead:!0,headHeight:4.5,headWidth:5,tailWidth:1.5,stroke:null};let Sq=class extends Ef{setDelta(e){e!==this.delta&&(this.delta=e,this.update())}update(){const e=this.chartTransform.modelToViewDelta(this.axisOrientation,this.delta);if(Math.abs(e-this.viewWidth)>1e-13){this.viewWidth=e;const t=e=>new ac(0,0,0,this.outerLineLength,{stroke:this.color,centerX:e}),i=t(0),n=t(e),s=new tR(i.right,i.centerY,n.left,n.centerY,this.arrowNodeOptions),r=new Dr({children:[i,n,s]});this.labelNode.maxWidth=r.width,this.children=[r,this.labelNode]}}dispose(){this.disposeSpanNode(),super.dispose()}constructor(e,t,i,n,s){const r=(0,o.Ay)()({color:"black",outerLineLength:6,spacing:0},s);super(),this.chartTransform=e,this.axisOrientation=t,this.delta=i,this.labelNode=n,this.color=r.color,this.outerLineLength=r.outerLineLength,this.viewWidth=0,this.arrowNodeOptions=(0,o.sF)({fill:r.color},Eq,r.arrowNodeOptions),this.update(),this.mutate(r);const a=()=>this.update();e.changedEmitter.addListener(a),this.disposeSpanNode=()=>e.changedEmitter.removeListener(a)}};aq.register("SpanNode",Sq);const Tq=Sq;let Cq=class e extends ga{setSpacing(e){e!==this.spacing&&(this.spacing=e,this.update())}getSpacing(){return this.spacing}update(){const e=new Ui;this.chartTransform.forEachSpacing(this.axisOrientation,this.spacing,this.origin,this.clippingType,(t,i)=>{if(!this.skipCoordinates.includes(t)){const t=new Me(0,0,0,0);if(this.axisOrientation===Ie.HORIZONTAL){const n="min"===this.edge?this.chartTransform.viewHeight:"max"===this.edge?0:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);e.moveTo(i,n-this.extent/2),e.lineTo(i,n+this.extent/2),t.setMinMax(i,n-this.extent/2,i,n+this.extent/2)}else{const n="min"===this.edge?0:"max"===this.edge?this.chartTransform.viewWidth:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);e.moveTo(n-this.extent/2,i),e.lineTo(n+this.extent/2,i),t.setMinMax(n-this.extent/2,i,n+this.extent/2,i)}}}),this.shape=e.makeImmutable()}dispose(){this.disposeTickMarkSet(),super.dispose()}getSpacingBorders(){return this.chartTransform.getSpacingBorders(this.axisOrientation,this.spacing,this.origin,this.clippingType)}constructor(t,i,n,s){const r=(0,o.Ay)()({value:0,edge:null,origin:0,skipCoordinates:[],stroke:"black",lineWidth:1,extent:e.DEFAULT_EXTENT,clippingType:"strict"},s);r.edge,super(null,r),this.chartTransform=t,this.axisOrientation=i,this.spacing=n,this.value=r.value,this.edge=r.edge,this.origin=r.origin,this.skipCoordinates=r.skipCoordinates,this.extent=r.extent,this.clippingType=r.clippingType,this.update();const a=()=>this.update();t.changedEmitter.addListener(a),this.disposeTickMarkSet=()=>t.changedEmitter.removeListener(a)}};Cq.DEFAULT_EXTENT=10,aq.register("TickMarkSet",Cq);const Iq=Cq;let xq=class extends ga{setSpacing(e){this.spacing!==e&&(this.spacing=e,this.update())}getSpacing(){return this.spacing}update(){const e=[];this.chartTransform.forEachSpacing(this.axisOrientation,this.spacing,this.origin,this.clippingType,(t,i)=>{if(!this.skipCoordinates.includes(t)){const n=new Me(0,0,0,0);if(this.axisOrientation===Ie.HORIZONTAL){const e="min"===this.edge?this.chartTransform.viewHeight:"max"===this.edge?0:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);n.setMinMax(i,e-this.extent/2,i,e+this.extent/2)}else{const e="min"===this.edge?0:"max"===this.edge?this.chartTransform.viewWidth:this.chartTransform.modelToView(this.axisOrientation.opposite,this.value);n.setMinMax(e-this.extent/2,i,e+this.extent/2,i)}let s=null;this.labelMap.has(t)?s=this.labelMap.get(t):this.createLabel&&(s=this.createLabel(t),this.labelMap.set(t,s)),s&&(this.positionLabel(s,n,this.axisOrientation),e.push(s))}});for(const t of this.labelMap.keys()){const i=this.labelMap.get(t);i&&!e.includes(i)&&(this.labelMap.delete(t),i.dispose())}this.children=e}invalidateTickLabelSet(){this.clearCache(),this.update()}clearCache(){for(const e of this.labelMap.values())e&&e.dispose();this.labelMap.clear()}setCreateLabel(e){this.createLabel=e,this.invalidateTickLabelSet()}dispose(){this.disposeTickLabelSet(),super.dispose()}getSpacingBorders(){return this.chartTransform.getSpacingBorders(this.axisOrientation,this.spacing,this.origin,this.clippingType)}constructor(e,t,i,n){const s=(0,o.Ay)()({value:0,edge:null,origin:0,skipCoordinates:[],extent:Iq.DEFAULT_EXTENT,clippingType:"strict",createLabel:e=>new Rc(se(e,1),{fontSize:12}),positionLabel:(e,t,i)=>(i===Ie.HORIZONTAL?e.centerTop=t.centerBottom.plusXY(0,1):e.rightCenter=t.leftCenter.plusXY(-1,0),e)},n);s.edge,super(null,s),this.chartTransform=e,this.axisOrientation=t,this.spacing=i,this.origin=s.origin,this.skipCoordinates=s.skipCoordinates,this.extent=s.extent,this.value=s.value,this.clippingType=s.clippingType,this.edge=s.edge,this.createLabel=s.createLabel,this.positionLabel=s.positionLabel,this.labelMap=new Map,this.update();const r=()=>this.update();e.changedEmitter.addListener(r),this.disposeTickLabelSet=()=>{e.changedEmitter.removeListener(r),this.clearCache()}}};aq.register("TickLabelSet",xq);const Dq=xq;let kq=class extends iB{constructor(e,t,i){var n,s;const r=(0,o.Ay)()({cursor:"pointer",sensorTypeFunction:iB.crosshairs({stroke:"white"}),scale:.4,drag:_.noop},i);super(r);const a=new ph(new De.A(0,0),{tandem:null==(n=r.tandem)?void 0:n.createTandem("positionProperty")});a.link(e=>this.setTranslation(e)),t.link(e=>this.setCenter(e.closestPointTo(this.center))),this.addInputListener(new _c({positionProperty:a,dragBoundsProperty:t,press:()=>e.moveToFront(),drag:()=>r.drag(),tandem:null==(s=r.tandem)?void 0:s.createTandem("dragListener")}))}};t.register("CCKCProbeNode",kq);const Mq=eD.oneSecondStringProperty,Bq=eD.timeStringProperty;let Oq=class extends Dr{addProbeNode(e,t,i,n,s,r){const o=new kq(this,this.visibleBoundsProperty,{color:e,tandem:r});this.addChild(new sB(s,new ph(new De.A(-25,0)),new de([o.boundsProperty],e=>e.centerBottom),new ph(new De.A(0,25)),{lineWidth:3,stroke:t})),this.addChild(o);const a=()=>{o.mutate({right:this.backgroundNode.left-i,top:this.backgroundNode.top+n}),o.translation=this.visibleBoundsProperty.value.closestPointTo(o.translation)};return this.visibleProperty.link(a),this.alignProbesEmitter.addListener(a),o}reset(){this.series.clear(),this.meter.reset(),this.zoomLevelProperty.reset()}getBackgroundNodeGlobalBounds(){return this.localToGlobalBounds(this.backgroundNode.bounds)}startDrag(e){this.backgroundDragListener&&this.backgroundDragListener.press(e)}initializeBodyDragListener(e){this.meter.isActiveProperty.value=!1,this.meter.isDraggingProbesWithBodyProperty.value=!0;const t=new h.A(null),i=new _c({allowTouchSnag:!1,positionProperty:this.meter.bodyPositionProperty,useParentOffset:!0,dragBoundsProperty:t,targetNode:this,tandem:this.tandem.createTandem("dragListener"),start:()=>{this.moveToFront(),this.meter.isDraggingProbesWithBodyProperty.value&&this.alignProbesEmitter.emit()},drag:()=>{this.meter.isDraggingProbesWithBodyProperty.value&&this.alignProbesEmitter.emit()},end:()=>{e.sensorToolbox.globalBounds.containsPoint(this.getBackgroundNodeGlobalBounds().center)&&(this.alignProbesEmitter.emit(),this.reset()),this.droppedEmitter.emit(),this.meter.isDraggingProbesWithBodyProperty.value=!1}}),n=()=>{const i=e.visibleBoundsProperty.value.eroded(fD.DRAG_BOUNDS_EROSION),n=e.localToGlobalBounds(i);t.value=this.globalToParentBounds(n),this.meter.bodyPositionProperty.value=t.value.closestPointTo(this.meter.bodyPositionProperty.value)};e.visibleBoundsProperty.link(n),this.circuitNode.transformEmitter.addListener(n),this.backgroundDragListener=i,this.backgroundNode.addInputListener(i)}constructor(e,t,i,n,s,r){const a=(0,o.Ay)()({defaultZoomLevel:new D(-2,2),preventFit:!0},r),l=new Dr({cursor:"pointer"});super();const h=a.tandem;this.meter=new XD(h.createTandem("meter"),0),this.series=n,this.circuitNode=e,this.timeProperty=t,this.visibleBoundsProperty=i,this.backgroundNode=l,this.backgroundDragListener=null,this.addChild(this.backgroundNode),this.mutate(a),this.alignProbesEmitter=new v.A;const c=new de([l.boundsProperty],e=>e.leftBottom);this.droppedEmitter=new v.A,this.aboveBottomLeft1Property=new de([c],e=>e.isFinite()?e.plusXY(0,-20):De.A.ZERO),this.aboveBottomLeft2Property=new de([c],e=>e.isFinite()?e.plusXY(0,-10):De.A.ZERO);const d=new Vq({viewWidth:150,viewHeight:100,modelXRange:new D(0,4.25),modelYRange:new D(-2,2)}),u=new Aq(d,{fill:"white",cornerXRadius:6,cornerYRadius:6}),p=new Rc(Bq,{fontSize:14,fill:"white",centerTop:u.centerBottom.plusXY(0,5),maxWidth:120}),m=new Rc(Mq,{fontSize:11,fill:"white"}),g=[new D(-1200,1200),new D(-1e3,1e3),new D(-800,800),new D(-600,600),new D(-400,400),new D(-200,200),new D(-150,150),new D(-100,100),new D(-50,50),new D(-20,20),new D(-10,10),new D(-2,2),new D(-.4,.4)],A=g.findIndex(e=>e.equals(a.defaultZoomLevel));this.zoomLevelProperty=new H(A,{range:new D(0,g.length-1),tandem:h.createTandem("zoomLevelProperty")});const y={stroke:"lightGray",lineDash:[5,5],lineWidth:.8,lineDashOffset:2.5},f=new dq(d,Ie.HORIZONTAL,1,y),b=new dq(d,Ie.VERTICAL,1,y),P=new Dq(d,Ie.VERTICAL,1,{edge:"min",extent:1.5,createLabel:e=>new Rc(GD.toFixed(e,this.zoomLevelProperty.value===g.length-1?1:0),{fontSize:10,fill:"white"})}),V=new AB(this.zoomLevelProperty,{orientation:"vertical",left:u.right+2,top:u.top,touchAreaXDilation:6,touchAreaYDilation:6,magnifyingGlassNodeOptions:{glassRadius:10,maxWidth:15},buttonOptions:{baseColor:"white",buttonAppearanceStrategy:Qb.FlatAppearanceStrategy,cornerRadius:0,xMargin:3,yMargin:3},tandem:h.createTandem("zoomButtonGroup")});this.zoomLevelProperty.link(e=>{d.setModelYRange(g[e]),b.setSpacing(g[e].max/2),P.setSpacing(g[e].max/2)});const w=[new De.A(0,0)],E=new vq(d,w,{fill:"#717274",stroke:"#717274",radius:4});this.updatePen=()=>{w[0].x=t.value;const e=n.length;if(e>0){const t=n[e-1];w[0].y=null===t?0:t.y}else w[0].y=0;E.update()},t.link(e=>{d.setModelXRange(new D(e-4,e+.25)),b.setLineDashOffset(e*d.modelToViewDelta(Ie.HORIZONTAL,1)),this.updatePen()});const S=new mq(d,[f,b,new uq(d,n,{stroke:"#717274",lineWidth:1.5})]),T=new Rc(eD.dataOutOfRangeStringProperty,{fill:"red",centerX:S.centerX,centerY:S.centerY,fontSize:13,maxWidth:d.viewWidth-20}),C=()=>{let e=!0;n.forEach(t=>{t&&d.modelXRange.contains(t.x)&&d.modelYRange.contains(t.y)&&(e=!1)}),(n.length>0&&null===n[n.length-1]||0===n.length)&&(e=!1),T.setVisible(e)};C(),n.addItemAddedListener(()=>{S.update(),this.updatePen(),C()}),n.addItemRemovedListener(()=>{S.update(),this.updatePen(),C()});const I=new Dr({clipArea:u.getShape(),children:[S,T,E]}),x=new Rc(s,{rotation:-Math.PI/2,fontSize:14,fill:"white",rightCenter:P.leftCenter.plusXY(-10,0),maxWidth:120}),k=new Tq(d,Ie.HORIZONTAL,1,m,{color:"white",left:u.left,top:u.bottom+3}),M=new Dr({children:[u,I,V,x,p,P,k]});p.leftthis.setVisible(e)),this.meter.bodyPositionProperty.link(e=>l.setCenter(e))}};t.register("CCKCChartNode",Oq);const Lq=eD.currentWithUnitsStringProperty;let Rq=class extends Oq{step(e,t){if(this.meter.isActiveProperty.value){const t=this.circuitNode.getCurrent(this.probeNode1),i=null===t?null:t.current;for(this.series.push(null===i?null:new De.A(e,i||0));null===this.series[0]||this.series.length>0&&this.series[0].xnew Rc(e,{tandem:t.createTandem("labelText"),fontSize:fD.FONT_SIZE,maxWidth:120,fill:ED.textFillProperty}),c=a.createTandem("currentTypeRadioButtonGroup"),d=new Nf({children:[l.createBox(h(Fq,c.createTandem("electronsRadioButton")),zq),new $L({scale:.75})],spacing:11}),u=new Nf({children:[l.createBox(h(qq,c.createTandem("conventionalRadioButton")),zq),new iR(P.A.OPT_OUT)],spacing:11}),p=new Jx(i,[{value:pM.ELECTRONS,createNode:()=>d,tandemName:"electronsRadioButton"},{value:pM.CONVENTIONAL,createNode:()=>u,tandemName:"conventionalRadioButton"}],{tandem:c,spacing:6}),m=new Yb(p,{tandem:P.A.OPT_OUT,leftMargin:30,visibleProperty:p.visibleProperty});t.linkAttribute(p,"enabled");const g=a.createTandem("labelsCheckbox"),A=new QM(s,h(Hq,g),{tandem:g}),y=a.createTandem("valuesCheckbox"),f=new QM(n,h(Uq,y),{tandem:y});let b=null;if(o){const e=a.createTandem("stopwatchCheckbox");b=new QM(r.isVisibleProperty,h(Gq,e),{tandem:e})}const V=a.createTandem("showCurrentCheckbox"),w=[new Ff({align:"left",spacing:8,children:[new QM(t,h(Yq,V),{tandem:V}),m]}),A,f,...o?[b]:[]],v=new Ff({children:w,spacing:10,align:"left"}),E=e.createBox(v,{xAlign:"left"}),S=new Dr({excludeInvisibleChildrenFromBounds:!0});v.boundsProperty.link(e=>S.setChildren(e.isValid()?[E]:[])),super(S,a,{yMargin:10,visiblePropertyOptions:{phetioFeatured:!0}}),A.touchArea=A.localBounds.dilatedXY(5,5).withMaxX(this.bounds.width-30),A.mouseArea=A.touchArea,f.touchArea=f.localBounds.dilatedXY(5,5).withMaxX(this.bounds.width-30),f.mouseArea=f.touchArea,o&&b&&(b.touchArea=b.localBounds.dilatedXY(5,5).withMaxX(this.bounds.width-30),b.mouseArea=b.touchArea),this.stopwatchCheckbox=b}};t.register("DisplayOptionsPanel",Wq);const Qq=fD.TOOLBOX_ICON_WIDTH;let Kq=class extends Ff{constructor(e,t,i,n,s,r,a,l,h,d){let u=null;e.value.length>0&&d&&d.tandem&&(u=new Rc(e,{fontSize:12,maxWidth:Qq,fill:ED.textFillProperty,tandem:d.tandem.createTandem("labelText"),visiblePropertyOptions:{phetioReadOnly:!0}}),delete d.tandem,t.linkAttribute(u,"visible"));const p=(0,o.Ay)()({spacing:2,cursor:"pointer",children:u?[r,u]:[r],touchAreaExpansionLeft:0,touchAreaExpansionTop:0,touchAreaExpansionRight:0,touchAreaExpansionBottom:0,excludeInvisibleChildrenFromBounds:!1,additionalProperty:new c(!0),ghostOpacity:.4},d);super(p),this.addInputListener(_c.createForwardingListener(e=>{const t=e.pointer.point,i=s(t);i.y=i.y-(e.pointer.isTouchLike()?28:0);const r=h(i);n.circuitElements.add(r),r.startDragEmitter.emit(e)},{allowTouchSnag:!0}));let m=null,g=null;Ve.multilink([n.circuitElements.lengthProperty,p.additionalProperty],(e,t)=>{const i=l();if(m!==i||g!==t){const e=i{this.touchArea=this.localBounds.withOffsets(p.touchAreaExpansionLeft,p.touchAreaExpansionTop,p.touchAreaExpansionRight,p.touchAreaExpansionBottom),this.mouseArea=this.touchArea};i.link(A),this.localBoundsProperty.link(A)}};t.register("CircuitElementToolNode",Kq);const jq=eD.voltageWithUnitsStringProperty,Zq=fD.CHART_SERIES_COLOR;let _q=class extends Oq{sampleValue(e){const t=this.circuitNode.globalToLocalPoint(this.localToGlobalPoint(this.probeNode1.translation)),i=this.circuitNode.globalToLocalPoint(this.localToGlobalPoint(this.probeNode2.translation)),n=this.circuitNode.getVoltageConnection(t),s=this.circuitNode.getVoltageConnection(i),r=this.circuitNode.circuit.getVoltageBetweenConnections(n,s,!1);return null===r?null:new De.A(e,r)}step(e,t){if(this.meter.isActiveProperty.value)for(this.series.push(this.sampleValue(e)),s.showVoltmeterSamplePoints&&this.circuitNode.addChild(new Va(-1,-1,2,2,{fill:jr.BLACK,translation:this.circuitNode.globalToLocalPoint(this.localToGlobalPoint(this.probeNode1.translation))}));null===this.series[0]||this.series.length>0&&this.series[0].xnull===e?$E.NO_VALUE:pk.createVoltageReadout(e)),u=new ch([eF],e=>a.showPhetioIndex?e+" "+t.phetioIndex:e),p=new lB(d,a.showResultsProperty,u,a.tandem,{centerX:$q[0].width/2,centerY:$q[0].height/2}),m=new Jh($q,{scale:.5,cursor:"pointer",children:[p]}),g=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return new ph(new De.A(e,t))},A=g(),y=g(),f=new sB(A,g(-30,15),y,g(-30,60),{stroke:jr.BLACK,lineWidth:3,pickable:!1}),b=g(),V=g(),w=new sB(b,g(30,15),V,g(30,60),{stroke:jr.RED,lineWidth:3,pickable:!1});Ve.multilink([t.bodyPositionProperty,t.isActiveProperty],(e,i)=>{if(m.center=e,A.value=m.centerBottom.plusXY(-8,-18),b.value=m.centerBottom.plusXY(8,-18),t.isDraggingProbesWithBodyProperty.get()){const i=-30-m.height/2,n=78,s=e=>a.visibleBoundsProperty?a.visibleBoundsProperty.value.eroded(fD.DRAG_BOUNDS_EROSION).closestPointTo(e):e;t.redProbePositionProperty.set(s(e.plusXY(+n,i))),t.blackProbePositionProperty.set(s(e.plusXY(-n,i)))}});const v=(e,t,i)=>n=>{e.translation=n,t.value=e.centerBottom.plusXY(32*i,-4)};if(t.redProbePositionProperty.link(v(h,V,1)),t.blackProbePositionProperty.link(v(l,y,-1)),super(a),super.addChild(m),super.addChild(f),super.addChild(l),super.addChild(w),super.addChild(h),this.circuitNode=n,this.voltmeter=t,this.redProbeNode=h,this.blackProbeNode=l,a.isIcon)this.dragHandler=null;else{t.isActiveProperty.linkAttribute(this,"visible");const r=(e,t)=>new _c({positionProperty:e,start:()=>this.moveToFront(),tandem:t.createTandem("probeDragListener"),dragBoundsProperty:new de([a.visibleBoundsProperty],e=>e.eroded(fD.DRAG_BOUNDS_EROSION))}),o=r(t.redProbePositionProperty,a.tandem.createTandem("redProbeDragListener")),c=r(t.blackProbePositionProperty,a.tandem.createTandem("blackProbeDragListener"));this.redProbeNode.addInputListener(o),this.blackProbeNode.addInputListener(c);const d=new de([a.visibleBoundsProperty],e=>e.eroded(fD.DRAG_BOUNDS_EROSION));this.dragHandler=new _c({positionProperty:t.bodyPositionProperty,tandem:a.tandem.createTandem("dragListener"),useParentOffset:!0,dragBoundsProperty:d,start:e=>{this.moveToFront()},end:()=>{t.droppedEmitter.emit(m.globalBounds),t.isDraggingProbesWithBodyProperty.set(!1)},targetNode:this}),d.link(e=>{t.redProbePositionProperty.set(e.closestPointTo(t.redProbePositionProperty.value)),t.blackProbePositionProperty.set(e.closestPointTo(t.blackProbePositionProperty.value)),t.bodyPositionProperty.set(e.closestPointTo(t.bodyPositionProperty.value))}),m.addInputListener(this.dragHandler);const u=(t,i,r)=>{const o=De.A.createPolar(20,r*e.PROBE_ANGLE+Math.PI/2),a=i.plus(o);for(let e=0;e<10;e++){const t=i.blend(a,e/10),r=n.getVoltageConnection(t);if(s.showVoltmeterSamplePoints&&this.circuitNode.addChild(new Va(-1,-1,2,2,{fill:jr.BLACK,translation:t})),r)return r}return null},p=()=>{if(t.isActiveProperty.get()){const e=u(l,t.blackProbePositionProperty.get(),1),i=u(h,t.redProbePositionProperty.get(),-1),n=this.circuitNode.circuit.getVoltageBetweenConnections(i,e,!1);t.blackProbeConnectionProperty.set(e),t.redProbeConnectionProperty.set(i),t.voltageProperty.value=n}};i.circuit.circuitChangedEmitter.addListener(p),t.redProbePositionProperty.link(p),t.blackProbePositionProperty.link(p)}a.isIcon&&(this.touchArea=this.bounds.copy(),this.mouseArea=this.bounds.copy(),this.cursor="pointer"),this.addLinkedElement(t,{tandemName:"voltmeter"})}};iF.PROBE_ANGLE=tF,t.register("VoltmeterNode",iF);const nF=eD.ammetersStringProperty,sF=eD.ammeterStringProperty,rF=eD.currentChartStringProperty,oF=eD.voltageChartStringProperty,aF=eD.voltmeterStringProperty;let lF=class extends Nq{constructor(e,t,i,n,s,r,a,l){const d=t.circuit,u=(0,o.Ay)()({showResultsProperty:t.model.isValueDepictionEnabledProperty,showSeriesAmmeters:!0,showNoncontactAmmeters:!0,showCharts:!1},l),p=e=>_c.createForwardingListener(i=>{const n=_.find(e,e=>!e.visible);if(n){const e=n instanceof iF?n.voltmeter:n instanceof cB?n.ammeter:n.meter,s=t.globalToLocalPoint(i.pointer.point);e.isDraggingProbesWithBodyProperty.value=!0,e.isActiveProperty.value=!0,e.bodyPositionProperty.value=s,n.startDrag(i)}},{allowTouchSnag:!0}),m=new PM(P.A.OPT_OUT,0),g=new iF(m,null,null,{tandem:P.A.OPT_OUT,isIcon:!0}),A=de.and(i.map(e=>e.voltmeter.isActiveProperty));A.link(e=>g.setVisible(!e)),g.mutate({scale:53*1.4/Math.max(g.width,g.height)}),g.addInputListener(p(i));const y=new JD(P.A.OPT_OUT,0),f=new cB(y,null,{isIcon:!0,tandem:u.showNoncontactAmmeters?a.createTandem("noncontactAmmeterToolNode"):P.A.OPT_OUT,phetioVisiblePropertyInstrumented:!0,visiblePropertyOptions:{phetioFeatured:!0}}),b=de.and(n.map(e=>e.ammeter.isActiveProperty));b.link(e=>{f.setOpacity(e?0:1),f.setInputEnabled(!e)}),f.mutate({scale:53/Math.max(f.width,f.height)}),f.addInputListener(p(n));const V=new Tk(new KD(De.A.ZERO,d.selectionProperty),new KD(new De.A(fD.SERIES_AMMETER_LENGTH,0),d.selectionProperty),P.A.OPT_OUT),w=new AN(null,null,V,P.A.OPT_OUT,u.showResultsProperty,{isIcon:!0});w.mutate({scale:53/w.width});const v=new Kq(new h.A(""),new c(!1),new lh(bk.SCHEMATIC),d,e=>t.globalToLocalPoint(e),w,6,()=>d.circuitElements.count(e=>e instanceof Tk),e=>{const t=fD.SERIES_AMMETER_LENGTH/2,i=d.vertexGroup.createNextElement(e.plusXY(-t,0)),n=d.vertexGroup.createNextElement(e.plusXY(t,0));return d.seriesAmmeterGroup.createNextElement(i,n)},{touchAreaExpansionLeft:3,touchAreaExpansionTop:15,touchAreaExpansionRight:3,touchAreaExpansionBottom:0,tandem:d.includeLabElements?a.createTandem("seriesAmmeterToolNode"):P.A.OPT_OUT,ghostOpacity:0,visiblePropertyOptions:{phetioFeatured:!0}}),E=new de([d.circuitElements.lengthProperty],()=>6===d.circuitElements.count(e=>e instanceof Tk)),S=new Rc(aF,{maxWidth:60,fill:ED.textFillProperty,tandem:a.createTandem("voltmeterText"),visiblePropertyOptions:{phetioReadOnly:!0}}),T=new Rc(u.showSeriesAmmeters&&u.showNoncontactAmmeters?nF:sF,{maxWidth:60,fill:ED.textFillProperty,tandem:a.createTandem("ammeterText"),visiblePropertyOptions:{phetioReadOnly:!0}});Ve.multilink([t.model.showLabelsProperty,b,E,f.visibleProperty,w.visibleProperty,v.visibleProperty],(e,t,i,n,s,r)=>{T.visible=e&&(r&&u.showSeriesAmmeters||n&&u.showNoncontactAmmeters)});const C=new Ff({tandem:a.createTandem("voltmeterToolNode"),spacing:3,children:[g,S],excludeInvisibleChildrenFromBounds:!1,visiblePropertyOptions:{phetioFeatured:!0}});Ve.multilink([t.model.showLabelsProperty,A,C.visibleProperty],(e,t,i)=>{S.visible=e&&i});const I=new Nf({topMargin:10,children:[v]}),x=[];u.showNoncontactAmmeters&&x.push(f),u.showSeriesAmmeters&&x.push(I);const D=new Ff({tandem:P.A.OPT_OUT,spacing:3,children:[new Nf({spacing:8,align:"bottom",children:x,excludeInvisibleChildrenFromBounds:!0}),T],excludeInvisibleChildrenFromBounds:!1}),k=[e.createBox(new Nf({spacing:u.showNoncontactAmmeters&&u.showSeriesAmmeters?20:40,align:"bottom",children:[C,D]}))];if(u.showCharts){const e=new h.A(Me.EVERYTHING),i=(e,i,n,s)=>{const r=Va.bounds(i.bounds,{fill:"blue",opacity:0}),o=new Dr({children:[i,r],cursor:"pointer"}),a=new Ff({spacing:3,children:[o,n],tandem:s}),l=de.and(e.map(e=>e.meter.isActiveProperty));return l.link(e=>{i.setVisible(!e),a.inputEnabledProperty.value=!e}),r.addInputListener(p(e)),Ve.multilink([t.model.showLabelsProperty,l],(e,t)=>{n.visible=e&&!t}),a},n=new _q(t,new H(0),e),o=C.width/n.width;n.scale(o);const l=i(s,n,new Rc(oF,{maxWidth:60,fill:ED.textFillProperty,visiblePropertyOptions:{phetioReadOnly:!0}}),a.createTandem("voltageChartToolIcon")),c=i(r,new Rq(t,new H(0),e,{scale:o,tandem:P.A.OPT_OUT}),new Rc(rF,{maxWidth:60,fill:ED.textFillProperty,visiblePropertyOptions:{phetioReadOnly:!0}}),a.createTandem("currentChartToolIcon"));l.centerX=C.centerX,c.centerX=D.centerX;const d=new Dr({children:[l,c]});k.push(new Rf),k.push(d)}super(new Ff({spacing:5,children:k}),a,{yMargin:8,visiblePropertyOptions:{phetioFeatured:!0}})}};t.register("SensorToolbox",lF);let hF=class extends Se.A{};hF.SELECTED=new hF,hF.DESELECTED=new hF,hF.OVER=new hF,hF.PRESSED=new hF,hF.enumeration=new Ee.A(hF),Vb.register("RadioButtonInteractionState",hF);let cF=class extends Pe{constructor(e,t,i){super([e.focusedProperty,e.overProperty,e.looksOverProperty,e.looksPressedProperty,t],(e,t,n,s,r)=>{const o=r===i;return!n||s||o?(t||e)&&s?hF.PRESSED:o?hF.SELECTED:hF.DESELECTED:hF.OVER},{valueType:hF})}};Vb.register("RadioButtonInteractionStateProperty",cF);let dF=class e extends Kb{dispose(){this.disposeRectangularRadioButton(),super.dispose()}fire(){this.buttonModel.enabledProperty.get()&&(this.firedEmitter.emit(),this.buttonModel.produceSoundEmitter.emit())}constructor(t,i,n){const s=(0,o.Ay)()({soundPlayer:null,baseColor:Ub.LIGHT_BLUE,buttonAppearanceStrategy:e.FlatAppearanceStrategy,buttonAppearanceStrategyOptions:{overButtonOpacity:.8,overStroke:null,selectedStroke:jr.BLACK,selectedLineWidth:1.5,selectedButtonOpacity:1,deselectedStroke:new jr(50,50,50),deselectedLineWidth:1,deselectedButtonOpacity:.6},contentAppearanceStrategy:e.ContentAppearanceStrategy,contentAppearanceStrategyOptions:{overContentOpacity:.8,selectedContentOpacity:1,deselectedContentOpacity:.6},listenerOptions:{tandem:P.A.OPT_OUT},tagName:"input",inputType:"radio",labelTagName:"label",containerTagName:"li",appendDescription:!0,appendLabel:!0,tandem:P.A.REQUIRED,tandemNameSuffix:"RadioButton"},n),r=new Db({enabledPropertyOptions:s.enabledPropertyOptions,tandem:s.tandem,phetioEnabledPropertyInstrumented:!1}),a=new cF(r,t,i);super(r,a,s),this.interactionStateProperty=a,t.value===i&&this.setPDOMAttribute("checked","checked");const l=e=>{this.pdomChecked=e===i};t.link(l),this.property=t,this.value=i,this.firedEmitter=new v.A({tandem:s.tandem.createTandem("firedEmitter"),phetioDocumentation:"Emits when the radio button is pressed",phetioReadOnly:!0,phetioEventType:je.A.USER}),this.firedEmitter.addListener(()=>t.set(i)),r.downProperty.link(e=>{e||!r.overProperty.get()&&!r.focusedProperty.get()||r.interrupted||(this.fire(),this.voicingSpeakFullResponse({hintResponse:null}))});const h=s.soundPlayer||Wm.get("pushButton"),c=()=>{h.play()};r.produceSoundEmitter.addListener(c),this.disposeRectangularRadioButton=()=>{t.unlink(l),this.firedEmitter.dispose(),r.produceSoundEmitter.removeListener(c),r.dispose(),this.interactionStateProperty.dispose()}}};dF.FlatAppearanceStrategy=class{dispose(){this.disposeFlatAppearanceStrategy()}constructor(e,t,i,n){const s=(0,o.Ay)()({stroke:i,lineWidth:1,deselectedButtonOpacity:1,deselectedLineWidth:1,deselectedStroke:"gray",deselectedFill:null,overButtonOpacity:.8,overFill:null,overLineWidth:0,overStroke:null,selectedButtonOpacity:1,selectedLineWidth:1,selectedStroke:"black"},n),r=new Mb(i,{luminanceFactor:-.4}),a=new Mb(s.overFill||i,{luminanceFactor:n&&n.overFill?0:.4}),l=new Mb(s.overStroke||s.deselectedStroke,{luminanceFactor:n&&n.overStroke?0:-.4});function h(t){switch(t){case hF.SELECTED:e.fill=i,e.stroke=s.selectedStroke,e.lineWidth=s.selectedLineWidth,e.opacity=s.selectedButtonOpacity;break;case hF.DESELECTED:e.fill=s.deselectedFill||i,e.stroke=s.deselectedStroke,e.lineWidth=s.deselectedLineWidth,e.opacity=s.deselectedButtonOpacity;break;case hF.OVER:e.fill=a,e.stroke=l,e.lineWidth=Math.max(s.overLineWidth,s.deselectedLineWidth),e.opacity=s.overButtonOpacity;break;case hF.PRESSED:e.fill=r,e.stroke=s.deselectedStroke,e.lineWidth=s.deselectedLineWidth,e.opacity=s.selectedButtonOpacity;break;default:throw new Error("unsupported interactionState: "+t)}}this.maxLineWidth=Math.max(s.selectedLineWidth,s.deselectedLineWidth,s.overLineWidth),e.cachedPaints=[i,a,r,l,s.selectedStroke,s.deselectedStroke],t.link(h),this.disposeFlatAppearanceStrategy=()=>{t.hasListener(h)&&t.unlink(h),l.dispose(),a.dispose(),r.dispose()}}},dF.ContentAppearanceStrategy=class{dispose(){this.disposeContentAppearanceStrategy()}constructor(e,t,i){const n=(0,o.Ay)()({deselectedContentOpacity:1,overContentOpacity:1,selectedContentOpacity:1},i);function s(t){if(null!==e)switch(t){case hF.DESELECTED:e.opacity=n.deselectedContentOpacity;break;case hF.OVER:e.opacity=n.overContentOpacity;break;case hF.SELECTED:e.opacity=n.selectedContentOpacity;break;case hF.PRESSED:e.opacity=n.deselectedContentOpacity;break;default:throw new Error("unsupported state: "+t)}}t.link(s),this.disposeContentAppearanceStrategy=()=>{t.hasListener(s)&&t.unlink(s)}}},Vb.register("RectangularRadioButton",dF);let uF=0;let pF=class extends Ef{getButtonForValue(e){const t=this.radioButtonMap.get(e);return t}dispose(){this.radioButtonMap.clear(),this.disposeRadioButtonGroup(),super.dispose()}constructor(e,t,i){const n=(0,o.Ay)()({soundPlayers:null,labelAlign:"bottom",labelSpacing:0,touchAreaXDilation:0,touchAreaYDilation:0,mouseAreaXDilation:0,mouseAreaYDilation:0,radioButtonOptions:{baseColor:Ub.LIGHT_BLUE,cornerRadius:4,xMargin:5,yMargin:5,xAlign:"center",yAlign:"center",buttonAppearanceStrategyOptions:{selectedStroke:"black",selectedLineWidth:1.5,selectedButtonOpacity:1,deselectedStroke:new jr(50,50,50),deselectedLineWidth:1,deselectedButtonOpacity:.6,overButtonOpacity:.8},contentAppearanceStrategy:dF.ContentAppearanceStrategy,contentAppearanceStrategyOptions:{overContentOpacity:.8,selectedContentOpacity:1,deselectedContentOpacity:.6}},spacing:10,stretch:!0,orientation:"vertical",disabledOpacity:Vf.DISABLED_OPACITY,tandem:P.A.REQUIRED,tandemNameSuffix:"ButtonGroup",visiblePropertyOptions:{phetioFeatured:!0},phetioEnabledPropertyInstrumented:!0,phetioFeatured:!0,tagName:"ul",labelTagName:"h3",ariaRole:"radiogroup",accessibleHelpTextBehavior:Js.HELP_TEXT_BEFORE_CONTENT,groupFocusHighlight:!0},i);uF++;const s=new Map,r=Eb(t,n.tandem),a=_.maxBy(r,e=>e.width).width,l=_.maxBy(r,e=>e.height).height,h=[],c=[],d=[],u=n.radioButtonOptions.xMargin,p=n.radioButtonOptions.yMargin;for(let g=0;ge.pointer.reserveForKeyboardDrag()};this.addInputListener(m),this.addLinkedElement(e,{tandemName:"property"}),this.disposeRadioButtonGroup=()=>{this.removeInputListener(m),c.forEach(e=>{e.focusHighlight.dispose(),e.radioButton.dispose(),e.radioButton!==e.layoutNode&&e.layoutNode.dispose()}),d.forEach(e=>e.dispose&&e.dispose()),r.forEach(e=>e.dispose())}}};Vb.register("RectangularRadioButtonGroup",pF);const mF=fD.BATTERY_LENGTH;let gF=class extends pF{constructor(e,t,i){const n=(0,o.Ay)()({spacing:20,orientation:"horizontal",touchAreaXDilation:9,touchAreaYDilation:10,radioButtonOptions:{baseColor:ED.panelFillProperty,cornerRadius:fD.CORNER_RADIUS,xMargin:8,yMargin:11,buttonAppearanceStrategyOptions:{deselectedButtonOpacity:.4,overButtonOpacity:.7,selectedStroke:ED.panelStrokeProperty,deselectedStroke:ED.panelStrokeProperty},phetioVisiblePropertyInstrumented:!1},tandem:t},i),s=new KD(new De.A(mF/2,0),new h.A(null)),r=new KD(new De.A(-mF/2,0),new h.A(null)),a=new lM(r,s,new H(0),"normal",P.A.OPT_OUT,{initialOrientation:"left",numberOfDecimalPlaces:lM.VOLTAGE_DECIMAL_PLACES}),l=(e,t)=>new zO(null,null,a,new h.A(e),t,{isIcon:!0,scale:.4});super(e,[{value:bk.LIFELIKE,createNode:e=>l(bk.LIFELIKE,P.A.OPT_OUT),tandemName:"lifelikeRadioButton"},{value:bk.SCHEMATIC,createNode:e=>l(bk.SCHEMATIC,P.A.OPT_OUT),tandemName:"schematicRadioButton"}],n)}};t.register("ViewRadioButtonGroup",gF);const AF=eD.batteryResistanceStringProperty,yF=eD.sourceResistanceStringProperty,fF=fD.VERTICAL_MARGIN,bF=fD.HORIZONTAL_MARGIN,PF=new fV({matchVertical:!1});let VF=class e extends bw{stepOnce(e){e>=fD.MAX_DT||this.chartNodes.forEach(t=>t.step(this.model.circuit.timeProperty.value,e))}step(e){this.circuitNode.step(),this.model.isPlayingProperty.value||this.chartNodes.forEach(e=>e.sampleLatestValue())}reset(){this.stopwatchNodePositionDirty=!0,this.circuitElementToolbox.reset(),this.advancedAccordionBox&&this.advancedAccordionBox.expandedProperty.reset(),this.chartNodes.forEach(e=>e.reset())}canNodeDropInToolbox(e){const t=e.circuitElement,i=this.model.circuit.isSingle(t),n=e instanceof TO?e.contentNode:e,s=this.globalToLocalBounds(n.globalBounds),r=pk.getDropItemHitBoxForBounds(s),o=t instanceof Tk?this.sensorToolbox:this.circuitElementToolbox.carousel,a=o.localToGlobalBounds(o.localBounds),l=this.globalToLocalBounds(a).intersectsBounds(r),h=!!o.getTrails().find(e=>e.isVisible());return i&&l&&h&&t.isDisposableProperty.value}constructor(t,i,n,r){const a=(0,o.Ay)()({showResetAllButton:!0,showSeriesAmmeters:!1,showTimeControls:!1,showAdvancedControls:!0,showCharts:!1,blackBoxStudy:!1,showStopwatchCheckbox:!1,showPhaseShiftControl:!1,hasACandDCVoltageSources:!1,showMeterPhetioIndex:!1},r);super({tandem:n}),this.model=t,this.circuitNodeBackLayer=new Dr,this.circuitNode=new oq(t.circuit,this,n.createTandem("circuitNode"));const l=n.createTandem("meterNodes"),h=t.voltmeters.map(e=>{const i=new iF(e,t,this.circuitNode,{tandem:l.createTandem("voltmeterNode"+e.phetioIndex),phetioFeatured:!0,showResultsProperty:t.isValueDepictionEnabledProperty,visibleBoundsProperty:this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,showPhetioIndex:a.showMeterPhetioIndex});return e.droppedEmitter.addListener(t=>{const i=pk.getDropItemHitBoxForBounds(t);!!this.sensorToolbox.getTrails().find(e=>e.isVisible())&&i.intersectsBounds(this.sensorToolbox.globalBounds)&&(e.isActiveProperty.value=!1)}),i}),c=t.ammeters.map(e=>{const i=new cB(e,this.circuitNode,{tandem:t.isShowNoncontactAmmeters?l.createTandem("ammeterNode"+e.phetioIndex):P.A.OPT_OUT,phetioFeatured:!0,showResultsProperty:t.isValueDepictionEnabledProperty,visibleBoundsProperty:this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,blackBoxStudy:a.blackBoxStudy,showPhetioIndex:a.showMeterPhetioIndex});return e.droppedEmitter.addListener(t=>{const i=pk.getDropItemHitBoxForBounds(t);!!this.sensorToolbox.getTrails().find(e=>e.isVisible())&&i.intersectsBounds(this.sensorToolbox.globalBounds)&&(e.isActiveProperty.value=!1)}),i});if(this.chartNodes=[],a.showCharts){const e=e=>{const i=new _q(this.circuitNode,t.circuit.timeProperty,this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,{tandem:l.createTandem(e)});return i.initializeBodyDragListener(this),i},i=e=>{const i=new Rq(this.circuitNode,t.circuit.timeProperty,this.circuitNode.visibleBoundsInCircuitCoordinateFrameProperty,{tandem:l.createTandem(e)});return i.initializeBodyDragListener(this),i};this.voltageChartNode1=e("voltageChartNode1"),this.voltageChartNode2=e("voltageChartNode2"),this.currentChartNode1=i("currentChartNode1"),this.currentChartNode2=i("currentChartNode2"),this.chartNodes.push(this.voltageChartNode1,this.voltageChartNode2,this.currentChartNode1,this.currentChartNode2)}else this.voltageChartNode1=null,this.voltageChartNode2=null,this.currentChartNode1=null,this.currentChartNode2=null;this.circuitElementToolbox=new dO(t.viewTypeProperty,i,n.createTandem("circuitElementToolbox"),a.circuitElementToolboxOptions),this.sensorToolbox=new lF(PF,this.circuitNode,h,c,[this.voltageChartNode1,this.voltageChartNode2],[this.currentChartNode1,this.currentChartNode2],n.createTandem("sensorToolbox"),{showSeriesAmmeters:a.showSeriesAmmeters,showNoncontactAmmeters:t.isShowNoncontactAmmeters,showCharts:a.showCharts,visiblePropertyOptions:{phetioFeatured:!0}}),this.viewRadioButtonGroup=new gF(t.viewTypeProperty,n.createTandem("viewRadioButtonGroup")),this.viewRadioButtonGroup.mutate({scale:this.circuitElementToolbox.carousel.backgroundWidth/this.viewRadioButtonGroup.width*a.circuitElementToolboxOptions.carouselScale}),this.displayOptionsPanel=new Wq(PF,t.circuit.showCurrentProperty,t.circuit.currentTypeProperty,t.showValuesProperty,t.showLabelsProperty,t.stopwatch,a.showStopwatchCheckbox,n.createTandem("displayOptionsPanel")),this.advancedAccordionBox=a.showAdvancedControls?new eB(t.circuit,PF,a.hasACandDCVoltageSources?yF:AF,n.createTandem("advancedAccordionBox"),{showRealBulbsCheckbox:!a.hasACandDCVoltageSources}):null,this.addChild(this.circuitNodeBackLayer);let d=null;a.showResetAllButton&&(d=new nV({tandem:n.createTandem("resetAllButton"),listener:()=>{t.reset(),this.reset()}}),this.addChild(d));const u=new Ff({align:"right",spacing:5,children:[this.circuitElementToolbox,this.viewRadioButtonGroup]});this.addChild(u);const p=new Ff({spacing:fF,children:a.showAdvancedControls?[this.displayOptionsPanel,this.sensorToolbox,this.advancedAccordionBox]:[this.displayOptionsPanel,this.sensorToolbox]}),m=new Yb(p,{xAlign:"right",yAlign:"top",xMargin:bF,yMargin:fF});this.visibleBoundsProperty.linkAttribute(m,"alignBounds"),this.addChild(m),this.addChild(this.circuitNode);const g=new bB(t.circuit.chargeAnimator.timeScaleProperty,t.circuit.showCurrentProperty,t.isValueDepictionEnabledProperty);this.addChild(g);const A=new H(0),y=new XB(t.circuit,this.visibleBoundsProperty,t.modeProperty,A,n.createTandem("circuitElementEditContainerNode"),{showPhaseShiftControl:a.showPhaseShiftControl});this.addChild(y),h.forEach(e=>this.circuitNode.sensorLayer.addChild(e)),c.forEach(e=>this.circuitNode.sensorLayer.addChild(e)),this.chartNodes.forEach(e=>this.circuitNode.sensorLayer.addChild(e));const f=new yB(t.zoomLevelProperty,{tandem:n.createTandem("zoomButtonGroup"),visiblePropertyOptions:{phetioFeatured:!0}});if(f.mutate({scale:this.circuitElementToolbox.carousel.backgroundWidth/f.width*a.circuitElementToolboxOptions.carouselScale}),s.showDepictValuesToggleButton){const e=new kM(t.isValueDepictionEnabledProperty,{tandem:n.createTandem("playPauseButton"),baseColor:"#33ff44"});this.addChild(e),this.visibleBoundsProperty.link(t=>{e.mutate({left:t.left+fF,bottom:t.bottom-fF-f.height-fF})})}let b=null;if(a.showTimeControls&&(b=new zM(t.isPlayingProperty,{tandem:n.createTandem("timeControlNode"),playPauseStepButtonOptions:{stepForwardButtonOptions:{listener:()=>t.stepSingleStep()}}}),this.addChild(b)),this.addChild(f),Ve.multilink([this.visibleBoundsProperty,u.localBoundsProperty],e=>{u.left=e.left+bF,u.top=e.top+fF,a.showResetAllButton&&d&&d.mutate({right:e.right-bF,bottom:e.bottom-fF}),b&&(b.bottom=e.bottom-fF,p.bounds.isFinite()?b.left=p.left:d&&d.bounds.isFinite()&&(b.right=d.left)),Number.isFinite(u.right)?f.right=u.right:f.left=e.left+bF,f.bottom=e.bottom-fF;const t=this.circuitElementToolbox.bounds.isEmpty()?e.left:this.circuitElementToolbox.right,i=p.bounds.isEmpty()?e.right:p.left;A.value=(t+i)/2,g.mutate({centerX:A.value,bottom:e.bottom-100})}),this.circuitNode.setTranslation(this.layoutBounds.centerX,this.layoutBounds.centerY),this.circuitNodeBackLayer.setTranslation(this.layoutBounds.centerX,this.layoutBounds.centerY),Ve.multilink([t.animatedZoomScaleProperty,this.visibleBoundsProperty],(e,t)=>{this.circuitNode.setScaleMagnitude(e),this.circuitNodeBackLayer.setScaleMagnitude(e),this.circuitNode.updateTransform(t)}),this.model.circuit.vertexDroppedEmitter.addListener(e=>{const t=this.model.circuit.getNeighborCircuitElements(e);if(1===t.length){const e=t[0],i=this.circuitNode.getCircuitElementNode(e);this.canNodeDropInToolbox(i)&&this.model.circuit.disposeCircuitElement(e)}}),ek.addListener(()=>{this.step(1/60)}),this.stopwatchNodePositionDirty=!0,a.showStopwatchCheckbox){const e=new OM(t.stopwatch,{dragBoundsProperty:this.visibleBoundsProperty,right:p.left-bF,numberDisplayOptions:{numberFormatter:OM.createRichTextNumberFormatter({numberOfDecimalPlaces:1})},tandem:n.createTandem("stopwatchNode")});this.addChild(e),t.stopwatch.isVisibleProperty.link(i=>{i&&this.stopwatchNodePositionDirty&&(t.stopwatch.positionProperty.value=new De.A(p.left-e.width-10,this.globalToLocalBounds(this.displayOptionsPanel.stopwatchCheckbox.globalBounds).centerY-.2*e.height),this.stopwatchNodePositionDirty=!1)})}t.stepEmitter.addListener(e=>this.stepOnce(e)),td.createGlobal(this,{keyStringProperties:e.DELETE_HOTKEY_DATA.keyStringProperties,fire:e=>{null==e||e.preventDefault();const t=this.circuitNode.circuit.selectionProperty.value;if(this.circuitNode.vertexCutButton.inputEnabled&&t instanceof KD)t.isCuttableProperty.value&&this.circuitNode.circuit.cutVertex(this.circuitNode.circuit.getSelectedVertex());else if(t instanceof _D){const e=t;e.startVertexProperty.value.isDragged||e.endVertexProperty.value.isDragged||e.isDisposableProperty.value&&this.circuitNode.circuit.disposeCircuitElement(e)}}})}};VF.DELETE_HOTKEY_DATA=new Ia({keyStringProperties:[new h.A("delete"),new h.A("backspace")],repoName:t.name,binderName:"Delete circuit element",global:!0}),t.register("CCKCScreenView",VF);const wF=eD.acSourceStringProperty,vF=eD.capacitorStringProperty,EF=eD.inductorStringProperty,SF=eD.batteryStringProperty,TF=eD.coinStringProperty,CF=eD.dogStringProperty,IF=eD.dollarBillStringProperty,xF=eD.eraserStringProperty,DF=eD.fuseStringProperty,kF=eD.handStringProperty,MF=eD.lightBulbStringProperty,BF=eD.paperClipStringProperty,OF=eD.pencilStringProperty,LF=eD.resistorStringProperty,RF=eD.switchStringProperty,NF=eD.wireStringProperty,qF=fD.BATTERY_LENGTH,FF=fD.AC_VOLTAGE_LENGTH,HF=fD.FUSE_LENGTH,YF=fD.WIRE_LENGTH,GF=fD.SWITCH_LENGTH,UF=new fV,zF=new lh(bk.LIFELIKE),WF=new lh(bk.SCHEMATIC);let QF=class{createCircuitElementToolNode(e,t,i,n,s,r){const a=(0,o.Ay)()({additionalProperty:new c(!0),lifelikeIconHeight:fD.TOOLBOX_ICON_HEIGHT,schematicIconHeight:fD.TOOLBOX_ICON_HEIGHT},r),l=(e,t)=>{const i=new Dr({children:[e]});return i.mutate({scale:t/i.height}),i},h=new aP(this.viewTypeProperty,[{value:bk.LIFELIKE,createNode:()=>l(i(P.A.OPT_OUT,zF),a.lifelikeIconHeight)},{value:bk.SCHEMATIC,createNode:()=>l(i(P.A.OPT_OUT,WF),a.schematicIconHeight)}]);return new Kq(e,this.showLabelsProperty,this.viewTypeProperty,this.circuit,this.globalToCircuitNodePoint,UF.createBox(h,{yAlign:"bottom"}),t,this.createCounter(n),s,{tandem:a.tandem,additionalProperty:a.additionalProperty})}createCounter(e){return()=>this.circuit.circuitElements.filter(t=>e(t)&&!t.insideTrueBlackBoxProperty.get()).length}createWireToolNode(e){return this.createCircuitElementToolNode(NF,fD.NUMBER_OF_WIRES,(e,t)=>t.value===bk.LIFELIKE?new Jh(TL,{tandem:e}):new ac(0,0,120,0,{stroke:jr.BLACK,lineWidth:4.5,tandem:e}),e=>e instanceof kk,e=>this.circuit.wireGroup.createNextElement(...this.circuit.createVertexPairArray(e,YF)),{tandem:e,lifelikeIconHeight:9,schematicIconHeight:2})}createRightBatteryToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;const i=new lM(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(fD.BATTERY_LENGTH,0),this.circuit.selectionProperty),new H(0),"normal",P.A.OPT_OUT);return this.createCircuitElementToolNode(SF,t,(e,t)=>new zO(null,null,i,t,e.createTandem("batteryIcon"),{isIcon:!0}),e=>e instanceof lM&&"right"===e.initialOrientation&&"normal"===e.batteryType,e=>this.circuit.batteryGroup.createNextElement(...this.circuit.createVertexPairArray(e,qF)),{tandem:e,lifelikeIconHeight:15})}createACVoltageToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;const i=new hk(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(FF,0),this.circuit.selectionProperty),new H(0),P.A.OPT_OUT);return this.createCircuitElementToolNode(wF,t,(e,t)=>new BO(null,null,i,t,e.createTandem("acSourceIcon"),{isIcon:!0,scale:.68}),e=>e instanceof hk,e=>this.circuit.acVoltageGroup.createNextElement(...this.circuit.createVertexPairArray(e,FF)),{tandem:e,lifelikeIconHeight:27,schematicIconHeight:27})}createLightBulbToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.circuit.lightBulbGroup,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:MF,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;const r=wk.createVertexPair(De.A.ZERO,this.circuit,!0),o=wk.createAtPosition(r.startVertex,r.endVertex,this.circuit,fD.DEFAULT_RESISTANCE,this.viewTypeProperty,P.A.OPT_OUT,{isExtreme:!1,isReal:n});return this.createCircuitElementToolNode(i,10,(e,t)=>new JL(null,null,o,new c(!0),t,P.A.OPT_OUT,{isIcon:!0,scale:.85}),e=>e instanceof wk&&!e.isExtreme,e=>{const i=wk.createVertexPair(e,this.circuit);return t.createNextElement(i.startVertex,i.endVertex)},{tandem:e,additionalProperty:s||new c(!0),schematicIconHeight:27})}createResistorToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.circuit.resistorGroup,i=arguments.length>2?arguments[2]:void 0;const n=(0,o.Ay)()({count:10,resistorType:Ek.RESISTOR,lifelikeIconHeight:15,schematicIconHeight:14,labelStringProperty:LF,tandemName:"resistorToolNode"},i),s=n.labelStringProperty,r=n.resistorType,a=new Sk(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(r.length,0),this.circuit.selectionProperty),r,P.A.OPT_OUT);return this.createCircuitElementToolNode(s,n.count,(e,t)=>new XR(null,null,a,t,e.createTandem("resistorIcon"),{isIcon:!0}),e=>e instanceof Sk&&e.resistorType===r,e=>{const i=this.circuit.createVertexPairArray(e,r.length);return t.createNextElement(i[0],i[1],r)},{tandem:e,lifelikeIconHeight:n.lifelikeIconHeight,schematicIconHeight:n.schematicIconHeight})}createFuseToolNode(e){const t=new Ak(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(fD.RESISTOR_LENGTH,0),this.circuit.selectionProperty),P.A.OPT_OUT,null);return this.createCircuitElementToolNode(DF,10,(e,i)=>new nN(null,null,t,i,e.createTandem("fuseIcon"),{isIcon:!0}),e=>e instanceof Ak,e=>this.circuit.fuseGroup.createNextElement(...this.circuit.createVertexPairArray(e,HF)),{tandem:e,lifelikeIconHeight:15,schematicIconHeight:14})}createCapacitorToolNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;const i=new gk(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(fD.CAPACITOR_LENGTH,0),this.circuit.selectionProperty),P.A.OPT_OUT);return this.createCircuitElementToolNode(vF,t,(e,t)=>new DL(null,null,i,t,e.createTandem("capacitorIcon"),{isIcon:!0}),e=>e instanceof gk,e=>this.circuit.capacitorGroup.createNextElement(...this.circuit.createVertexPairArray(e,fD.CAPACITOR_LENGTH)),{tandem:e})}createInductorToolNode(e){const t=new fk(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(fD.INDUCTOR_LENGTH,0),this.circuit.selectionProperty),P.A.OPT_OUT),i=s.moreInductors?10:1;return this.createCircuitElementToolNode(EF,i,(e,i)=>new cN(null,null,t,i,e.createTandem("inductorIcon"),{isIcon:!0,scale:.75}),e=>e instanceof fk,e=>this.circuit.inductorGroup.createNextElement(...this.circuit.createVertexPairArray(e,fD.INDUCTOR_LENGTH)),{tandem:e,lifelikeIconHeight:22,schematicIconHeight:6})}createSwitchToolNode(e){return this.createCircuitElementToolNode(RF,5,(e,t)=>new DN(null,null,new Dk(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(GF,0),this.circuit.selectionProperty),P.A.OPT_OUT,null),t,e.createTandem("switchIcon"),{isIcon:!0}),e=>e instanceof Dk,e=>this.circuit.switchGroup.createNextElement(...this.circuit.createVertexPairArray(e,GF)),{tandem:e,lifelikeIconHeight:22,schematicIconHeight:16})}createPaperClipToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.PAPER_CLIP,tandemName:"paperClipToolNode",labelStringProperty:BF})}createCoinToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.COIN,tandemName:"coinToolNode",labelStringProperty:TF,lifelikeIconHeight:30})}createDollarBillToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.DOLLAR_BILL,tandemName:"dollarBillToolNode",labelStringProperty:IF,lifelikeIconHeight:22})}createEraserToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.ERASER,tandemName:"eraserToolNode",labelStringProperty:xF,lifelikeIconHeight:17})}createPencilToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.PENCIL,tandemName:"pencilToolNode",labelStringProperty:OF,lifelikeIconHeight:12})}createHandToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.HAND,tandemName:"handToolNode",labelStringProperty:kF,lifelikeIconHeight:30})}createDogToolNode(e){return this.createResistorToolNode(e,this.circuit.householdObjectGroup,{count:1,resistorType:Ek.DOG,tandemName:"dogToolNode",labelStringProperty:CF,lifelikeIconHeight:30})}createExtremeResistorToolNode(e){return this.createResistorToolNode(e,this.circuit.extremeResistorGroup,{count:4,resistorType:Ek.EXTREME_RESISTOR,tandemName:"extremeResistorToolNode",labelStringProperty:LF})}createExtremeBatteryToolNode(e){return this.createCircuitElementToolNode(SF,4,(e,t)=>new zO(null,null,new lM(new KD(De.A.ZERO,this.circuit.selectionProperty),new KD(new De.A(fD.BATTERY_LENGTH,0),this.circuit.selectionProperty),new H(0),"high-voltage",P.A.OPT_OUT,{voltage:1e3,numberOfDecimalPlaces:lM.HIGH_VOLTAGE_DECIMAL_PLACES}),t,e.createTandem("extremeBatteryToolNode"),{isIcon:!0}),e=>e instanceof lM&&"right"===e.initialOrientation&&"high-voltage"===e.batteryType,e=>this.circuit.extremeBatteryGroup.createNextElement(...this.circuit.createVertexPairArray(e,GF)),{tandem:e,lifelikeIconHeight:15})}createExtremeBulbToolNode(e){const t=wk.createVertexPair(De.A.ZERO,this.circuit,!0);return this.createCircuitElementToolNode(MF,4,(e,i)=>new JL(null,null,wk.createAtPosition(t.startVertex,t.endVertex,this.circuit,1e3,this.viewTypeProperty,P.A.OPT_OUT,{isExtreme:!0}),new c(!0),i,e.createTandem("extremeLightBulbToolNode"),{isIcon:!0}),e=>e instanceof wk&&e.isExtreme,e=>{const t=wk.createVertexPair(e,this.circuit,!1);return this.circuit.extremeLightBulbGroup.createNextElement(t.startVertex,t.endVertex)},{tandem:e})}constructor(e,t,i,n,s){this.circuit=e,this.showLabelsProperty=t,this.viewTypeProperty=i,this.globalToCircuitNodePoint=n,this.parentTandem=s,this.wireToolNode=null}};t.register("CircuitElementToolFactory",QF);let KF=class extends VF{constructor(e,t,i){const n=new QF(e.circuit,e.showLabelsProperty,e.viewTypeProperty,e=>this.circuitNode.globalToLocalPoint(e),t.createTandem("circuitElementToolbox").createTandem("carousel").createTandem("circuitElementTools")),s={createNode:t=>n.createLightBulbToolNode(t,e.circuit.realLightBulbGroup,eD.realBulbStringProperty,!0,e.addRealBulbsProperty),tandemName:"realBulbToolNode",alignBoxOptions:{visibleProperty:e.addRealBulbsProperty}},r=[{createNode:e=>n.createWireToolNode(e),tandemName:"wireToolNode1"},{createNode:e=>n.createRightBatteryToolNode(e),tandemName:"batteryToolNode"},{createNode:t=>n.createLightBulbToolNode(t,e.circuit.lightBulbGroup),tandemName:"lightBulbToolNode"},{createNode:e=>n.createResistorToolNode(e),tandemName:"resistorToolNode"},{createNode:e=>n.createSwitchToolNode(e),tandemName:"switchToolNode"},{createNode:e=>n.createWireToolNode(e),tandemName:"wireToolNode2"},{createNode:e=>n.createFuseToolNode(e),tandemName:"fuseToolNode"},{createNode:e=>n.createExtremeBatteryToolNode(e),tandemName:"extremeBatteryToolNode"},{createNode:e=>n.createExtremeBulbToolNode(e),tandemName:"extremeBulbToolNode"},{createNode:e=>n.createExtremeResistorToolNode(e),tandemName:"extremeResistorToolNode"},{createNode:e=>n.createWireToolNode(e),tandemName:"wireToolNode3"},{createNode:e=>n.createDollarBillToolNode(e),tandemName:"dollarBillToolNode"},{createNode:e=>n.createPaperClipToolNode(e),tandemName:"paperClipToolNode"},{createNode:e=>n.createCoinToolNode(e),tandemName:"coinToolNode"},{createNode:e=>n.createEraserToolNode(e),tandemName:"eraserToolNode"},{createNode:e=>n.createWireToolNode(e),tandemName:"wireToolNode4"},{createNode:e=>n.createPencilToolNode(e),tandemName:"pencilToolNode"},s];super(e,r,t,(0,p.A)({showSeriesAmmeters:!0},i)),e.addRealBulbsProperty.link(e=>{this.circuitElementToolbox.carousel.setItemVisible(s,e),e&&this.circuitElementToolbox.carousel.scrollToItem(s)})}};mD.register("LabScreenView",KF);const jF=KF;let ZF=class extends jF{constructor(e,t,i){super(e,t,(0,o.sF)({showMeterPhetioIndex:!0},i));const n=new Zb({content:new Rc("Collect Data",{font:new Wc(24),fill:"rgb( 10, 10, 10 )"}),baseColor:"rgb(247, 147, 29)",centerX:this.layoutBounds.centerX,xMargin:10,yMargin:8,tandem:t.createTandem("collectDataButton")});this.addChild(n),de.or([...e.voltmeters.map(e=>e.isActiveProperty),...e.ammeters.map(e=>e.isActiveProperty)]).link(e=>n.setVisible(e)),new de([e.voltmeters[0].voltageProperty,e.voltmeters[1].voltageProperty,e.ammeters[0].currentProperty,e.ammeters[1].currentProperty],(e,t,i,n)=>"number"==typeof e||"number"==typeof t||"number"==typeof i||"number"==typeof n).link(e=>{n.setEnabled(e)}),this.visibleBoundsProperty.link(e=>{n.mutate({centerX:.72*e.width,bottom:e.bottom-fD.HORIZONTAL_MARGIN})})}};mD.register("CodapScreenView",ZF);const _F=ZF,XF=AD.screen.codapStringProperty;let JF=class extends FV{constructor(e){const t=Va.dimension(FV.MINIMUM_HOME_SCREEN_ICON_SIZE,{fill:ED.screenBackgroundColorProperty});t.addChild(new Jh(CD,{scale:.95,center:t.center}));const i=Va.dimension(FV.MINIMUM_NAVBAR_ICON_SIZE,{fill:ED.screenBackgroundColorProperty});i.addChild(new Jh(CD,{scale:.26,center:i.center})),super(()=>new xM(e.createTandem("model")),t=>new _F(t,e.createTandem("view"),{circuitElementToolboxOptions:{carouselScale:fD.DC_CAROUSEL_SCALE}}),{name:XF,backgroundColorProperty:ED.screenBackgroundColorProperty,homeScreenIcon:new xV(t,{maxIconWidthProportion:1,maxIconHeightProportion:1}),navigationBarIcon:new xV(i,{maxIconWidthProportion:1,maxIconHeightProportion:1}),tandem:e,maxDT:fD.MAX_DT})}};mD.register("CodapScreen",JF);const $F=JF,eH=[new TD(50,80,"data:image/png;base64,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"),new TD(25,40,"data:image/png;base64,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"),new TD(13,20,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAAAklEQVR4AewaftIAAAKSSURBVJ3B20tTcQAH8O/vtyPT5i3EM1jO1qiF5+zS0IT0SUSTMLyElk892AWDmW2V4EusxBDF0h5M8g8ItHwIGtSDJhZNRbwwZT5UOimSXmqus3b7dYITHEQk+nwIVJxOZ0skEinTaDQJjuMQiUSg1WqTzc3NQ16vdxO72e32fpvN5g0EAmlQqaysPCWK4mOj0XgVakVFRX2iKF7APgRBeFhcXNwIGXU4HNWUUhYIBJ5iHz6fzy1JUhX+EARhcGhoiMc/MJvNAy6XS+QIIan29vZtyNbue+pT8fh5AhyAjIGBcNyC0PXAC5nFYpkeHx9voDqdLgVFKh67yeXkvtGZLSM6s2VEd+T4E5ZIlK32eNyQ1dXVfczIyMjkJEki+CvFfiZ/fM8+fP3uSyjWetxWEHIMstHR0VKNRvOZxmIx2tnZaYYs13GyNZVI1K92d3RhD+FwWHS73WPUYDCMTUxMXIPsUMPFkP50Y0MqHj+z2n2jA7ukp6dzbW1tX+jk5ORbxpiupaXlKGT5ZZVfc6zOVhCchYogCK5oNPoBMgoZz/PDS0tLt6AwNl0KUi4tBQUDIYwx+/r6+gBkBAqTyXS5tra2ury8fMNkMkEf/laVX1bxOjTvL3z3ymfte/biSjAYnIGMQrGwsPC8sLDwHKXUQwjxZNhK7IQQD9EbmrJPlGYGg8EZKCgUyWQSYAx7YYxBjeI/cFAkk8n40vJyJLS1lbmxuQnnzg4MBgPm5+awsrKyAxUNFP39/b8kSSpZXFwskiQJep5HulaLqakp+P3+R6FQaBoKDio1NTV3otFoRUFBwUGe55GZlQWr1bo6ODh4DyoaqMzOzm4PDw9/EkUx12g0hvPy8t7bHY7bvb29W1D5DcQs9LX/2TJ1AAAAAElFTkSuQmCC"),new TD(7,10,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAKCAYAAAB4zEQNAAAAAklEQVR4AewaftIAAAEPSURBVE3BPUvDQBgA4PfeXBKwn0PpZAkZinAHMQj+AK2gUyl2EQTBsZ1EMgl1cvQP+AscRBzESSexQdzFcsYhEqQ4FKyIXFIu3tDB5yGgeZ7Xl1LmAJDbtm1NJpPHJEmegDHW55x78A/n/BA0ioj5xe7mTGWtAUBOgdL7nfO7d8bYBpqmqVQq941i6bXgLt0Qlbdd1/2QUtYxyzJa9VZPZtOv9Z/4zQQ0fqMo8oMguMY0Tcdbx6etCvePCGIbNKWU1ev1vlEIcdnpdLrPpcXb2t5Bd7y8tq2UugKNglYqFmuEEN9YKIBVqU6FEDFoFLSH4TB+GY0AESEMw0+Yo6A1Go1Bs9lcKZfLdcdxzmDuD2ErYJvGgWOkAAAAAElFTkSuQmCC"),new TD(4,5,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAFCAYAAABirU3bAAAAAklEQVR4AewaftIAAABeSURBVAFVAKr/ASsrK1D7+/v8BQUFCdXV1asEczgpGDgjHgDl7/L4avr6OgPg/AIcUiogEebx9hUuTlWsBFVWVy8AUFBsE+npvVNERPoEysvL0x4fHwHl5eXYAAAAADPfJJ08L3otAAAAAElFTkSuQmCC")];let tH=class extends SM{constructor(e){super(!1,!1,e,{showNoncontactAmmeters:!0})}};mD.register("IntroModel",tH);const iH=tH;let nH=class extends VF{constructor(e,t){const i=new QF(e.circuit,e.showLabelsProperty,e.viewTypeProperty,e=>this.circuitNode.globalToLocalPoint(e),t.createTandem("circuitElementToolbox").createTandem("carousel").createTandem("circuitElementTools"));super(e,[{createNode:e=>i.createWireToolNode(e),tandemName:"wireToolNode1"},{createNode:e=>i.createRightBatteryToolNode(e),tandemName:"batteryToolNode"},{createNode:e=>i.createLightBulbToolNode(e),tandemName:"lightBulbToolNode"},{createNode:e=>i.createResistorToolNode(e),tandemName:"resistorToolNode"},{createNode:e=>i.createSwitchToolNode(e),tandemName:"switchToolNode"},{createNode:e=>i.createWireToolNode(e),tandemName:"wireToolNode2"},{createNode:e=>i.createFuseToolNode(e),tandemName:"fuseToolNode"},{createNode:e=>i.createDollarBillToolNode(e),tandemName:"dollarBillToolNode"},{createNode:e=>i.createPaperClipToolNode(e),tandemName:"paperClipToolNode"},{createNode:e=>i.createCoinToolNode(e),tandemName:"coinToolNode"},{createNode:e=>i.createWireToolNode(e),tandemName:"wireToolNode3"},{createNode:e=>i.createEraserToolNode(e),tandemName:"eraserToolNode"},{createNode:e=>i.createPencilToolNode(e),tandemName:"pencilToolNode"}],t,{showAdvancedControls:!1,circuitElementToolboxOptions:{carouselScale:fD.DC_CAROUSEL_SCALE}})}};mD.register("IntroScreenView",nH);const sH=nH,rH=AD.screen.introStringProperty;let oH=class extends FV{constructor(e){const t=Va.dimension(FV.MINIMUM_HOME_SCREEN_ICON_SIZE,{fill:ED.screenBackgroundColorProperty});t.addChild(new Jh(OL,{scale:.95,center:t.center}));const i=Va.dimension(FV.MINIMUM_NAVBAR_ICON_SIZE,{fill:ED.screenBackgroundColorProperty});i.addChild(new Jh(eH,{scale:1.05,center:i.center})),super(()=>new iH(e.createTandem("model")),t=>new sH(t,e.createTandem("view")),{name:rH,backgroundColorProperty:ED.screenBackgroundColorProperty,homeScreenIcon:new xV(t,{maxIconWidthProportion:1,maxIconHeightProportion:1}),navigationBarIcon:new xV(i,{maxIconWidthProportion:1,maxIconHeightProportion:1}),tandem:e,maxDT:fD.MAX_DT})}};mD.register("IntroScreen",oH);const aH=oH,lH=new Image,hH=Cl.A.createLock(lH);lH.onload=hH,lH.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAF1CAYAAADYyfG/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAydpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LmRlZTNhNzcwMywgMjAyMi8wOC8xOC0xNjo1MDozMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRkU3ODRBNEM5MTFFRDhENkFCQzIwODFBMDY4ODAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRkU3ODNBNEM5MTFFRDhENkFCQzIwODFBMDY4ODAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ0QTlENDc5NjkwQTExRTlBQjc2OTAwRTBGQkM2REFEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ0QTlENDdBNjkwQTExRTlBQjc2OTAwRTBGQkM2REFEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bgytBgABTBpJREFUeNrs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";const cH=lH,dH=AD.screen.labStringProperty;let uH=class extends FV{constructor(e,t){super(()=>new CM(e.createTandem("model"),t),t=>new jF(t,e.createTandem("view"),{circuitElementToolboxOptions:{carouselScale:fD.DC_CAROUSEL_SCALE}}),{name:dH,backgroundColorProperty:ED.screenBackgroundColorProperty,homeScreenIcon:new xV(new Jh(cH),{fill:ED.screenBackgroundColorProperty,maxIconWidthProportion:1,maxIconHeightProportion:1}),tandem:e,maxDT:fD.MAX_DT})}};mD.register("LabScreen",uH);const pH=uH,mH=P.A.ROOT,gH=AD["circuit-construction-kit-dc"].titleStringProperty;pD.launch(()=>{const e=s.codap?[new $F(mH.createTandem("codapScreen"))]:[new aH(mH.createTandem("introScreen")),new pH(mH.createTandem("labScreen"),{showNoncontactAmmeters:!0})];new Xx(gH,e,{preferencesModel:new LI({simulationOptions:{customPreferences:[{createContent:e=>new aD(e)}]}}),credits:{leadDesign:"Amy Rouinfar",softwareDevelopment:"Sam Reid, Denzell Barnett, Matthew Blackman",team:"Michael Dubson, Ariel Paul, Kathy Perkins, Wendy Adams, Carl Wieman",qualityAssurance:"Jaspe Arias, Steele Dalton, Amanda Davis, Alex Dornan, Jaron Droder, Bryce Griebenow, Clifford Hardin, Ethan Johnson, Megan Lai, Brooklyn Lash, Emily Miller, Matthew Moore, Ashton Morris, Liam Mulhall, Devon Quispe, Ben Roberts, Jacob Romero, Nancy Salpepi, Marla Schulz, Ethan Ward, Kathryn Woessner",graphicArts:"Bryce Gruneich, Mariah Hermsmeyer, Cheryl McCutchan"},phetioDesigned:!0}).start(),Jl.setOutputLevelForCategory("user-interface",0)})})()})()};