{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/prop-types/index.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/three/build/three.module.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../packages/react-router-dom/index.tsx","../../../../packages/react-router/lib/context.ts","../../../../packages/react-router/lib/router.ts","../../../../packages/react-router/lib/hooks.tsx","../../../../packages/react-router/lib/components.tsx","../node_modules/react-bootstrap/esm/Col.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/axios/index.js","../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../node_modules/chart.js/dist/chart.mjs","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/axios/lib/utils.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/react-dom/index.js","../node_modules/react-bootstrap/esm/Container.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../../src/utils/interleave.js","../../src/utils/isPlainObject.js","../../src/utils/empties.js","../../src/utils/isFunction.js","../../src/utils/getComponentName.js","../../src/utils/isStyledComponent.js","../../src/constants.js","../../src/utils/error.js","../../src/sheet/GroupedTag.js","../../src/sheet/GroupIDAllocator.js","../../src/sheet/Rehydration.js","../../src/utils/nonce.js","../../src/sheet/dom.js","../../src/sheet/Tag.js","../../src/sheet/Sheet.js","../../src/utils/generateAlphabeticName.js","../../src/utils/hash.js","../../src/utils/isStaticRules.js","../../src/models/ComponentStyle.js","../../src/utils/stylis.js","../../src/utils/stylisPluginInsertRule.js","../../src/models/StyleSheetManager.js","../../src/models/Keyframes.js","../../src/utils/hyphenateStyleName.js","../../src/utils/flatten.js","../../src/utils/isStatelessFunction.js","../../src/utils/addUnitIfNeeded.js","../../src/constructors/css.js","../../src/utils/checkDynamicCreation.js","../../src/utils/determineTheme.js","../../src/utils/escape.js","../../src/utils/generateComponentId.js","../../src/utils/isTag.js","../../src/utils/mixinDeep.js","../../src/models/ThemeProvider.js","../../src/models/StyledComponent.js","../../src/utils/generateDisplayName.js","../../src/utils/joinStrings.js","../../src/utils/domElements.js","../../src/constructors/styled.js","../../src/constructors/constructWithOptions.js","../../src/models/GlobalStyle.js","../../src/models/ServerStyleSheet.js","../../src/base.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/@restart/hooks/esm/useUpdateEffect.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/react-bootstrap/esm/CarouselCaption.js","../node_modules/react-bootstrap/esm/CarouselItem.js","../node_modules/react-bootstrap/esm/Carousel.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/use-asset/dist/index.js","../node_modules/react-use-measure/dist/web.js","../node_modules/@react-three/fiber/dist/react-three-fiber.esm.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/scheduler/index.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/Spinner.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/dom-helpers/esm/contains.js","../../src/index.tsx","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/@restart/hooks/esm/useMediaQuery.js","../node_modules/@restart/hooks/esm/useBreakpoint.js","../node_modules/react-bootstrap/esm/OffcanvasBody.js","../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../node_modules/react-bootstrap/esm/Offcanvas.js","../node_modules/html-react-parser/index.js","../node_modules/warning/warning.js","../node_modules/invariant/browser.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/fast-deep-equal/index.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/object-assign/index.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/react-bootstrap/esm/types.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/html-react-parser/index.mjs","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/@restart/ui/esm/Nav.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/Nav.js","../node_modules/axios/lib/defaults/index.js","../node_modules/webpack/buildin/global.js","../node_modules/debounce/index.js","../node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/lodash.memoize/index.js","../../src/utils.ts","../../src/chart.tsx","../../src/typedCharts.tsx","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/process/browser.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/html-react-parser/lib/attributes-to-props.js","../node_modules/html-react-parser/lib/utilities.js","../node_modules/domelementtype/lib/esm/index.js","../node_modules/domhandler/lib/esm/node.js","../node_modules/domhandler/lib/esm/index.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/react-reconciler/index.js","../node_modules/zustand/index.js","../node_modules/shallowequal/index.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/html-dom-parser/lib/client/domparser.js","../node_modules/html-dom-parser/lib/client/utilities.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/ProgressBar.js","../node_modules/react-bootstrap/esm/Table.js","../node_modules/merge-class-names/dist/esm/index.js","../node_modules/get-user-locale/dist/esm/index.js","../node_modules/@wojtekmaj/date-utils/dist/esm/index.js","../node_modules/react-calendar/dist/esm/shared/const.js","../node_modules/react-calendar/dist/esm/shared/dateFormatter.js","../node_modules/react-calendar/dist/esm/shared/dates.js","../node_modules/react-calendar/dist/esm/shared/propTypes.js","../node_modules/react-calendar/dist/esm/Calendar/Navigation.js","../node_modules/react-calendar/dist/esm/Flex.js","../node_modules/react-calendar/dist/esm/shared/utils.js","../node_modules/react-calendar/dist/esm/TileGroup.js","../node_modules/react-calendar/dist/esm/Tile.js","../node_modules/react-calendar/dist/esm/CenturyView/Decade.js","../node_modules/react-calendar/dist/esm/CenturyView/Decades.js","../node_modules/react-calendar/dist/esm/CenturyView.js","../node_modules/react-calendar/dist/esm/DecadeView/Year.js","../node_modules/react-calendar/dist/esm/DecadeView/Years.js","../node_modules/react-calendar/dist/esm/DecadeView.js","../node_modules/react-calendar/dist/esm/YearView/Month.js","../node_modules/react-calendar/dist/esm/YearView/Months.js","../node_modules/react-calendar/dist/esm/YearView.js","../node_modules/react-calendar/dist/esm/MonthView/Day.js","../node_modules/react-calendar/dist/esm/MonthView/Days.js","../node_modules/react-calendar/dist/esm/MonthView/Weekdays.js","../node_modules/react-calendar/dist/esm/MonthView/WeekNumber.js","../node_modules/react-calendar/dist/esm/MonthView/WeekNumbers.js","../node_modules/react-calendar/dist/esm/MonthView.js","../node_modules/react-calendar/dist/esm/Calendar.js","../node_modules/react-calendar/dist/esm/index.js","../node_modules/maath/dist/objectSpread2-284232a6.esm.js","../node_modules/maath/dist/triangle-bd3be9fd.esm.js","../node_modules/maath/random/dist/maath-random.esm.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/buffer/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/react-reconciler/cjs/react-reconciler.production.min.js","../node_modules/webpack/buildin/module.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/html-react-parser/lib/dom-to-react.js","../node_modules/react-property/lib/index.js","../node_modules/react-property/lib/possibleStandardNamesOptimized.js","../node_modules/style-to-js/cjs/index.js","../node_modules/style-to-object/index.js","../node_modules/inline-style-parser/index.js","../node_modules/style-to-js/cjs/utilities.js","../node_modules/html-dom-parser/lib/client/html-to-dom.mjs","../node_modules/html-dom-parser/lib/client/constants.js","../node_modules/@react-three/drei/core/PointMaterial.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/react-bootstrap/esm/DropdownButton.js","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","../node_modules/@react-three/drei/core/Points.js","../node_modules/@react-three/drei/helpers/Position.js"],"names":["module","exports","require","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","getOwnPropertyDescriptors","defineProperties","defineProperty","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","prototype","_inherits","subClass","superClass","create","constructor","value","_createSuper","Derived","hasNativeReflectConstruct","result","Super","NewTarget","this","Reflect","construct","_slicedToArray","arr","arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","err","unsupportedIterableToArray","nonIterableRest","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","bind","__proto__","_superPropBase","property","hasOwnProperty","get","receiver","base","desc","_objectWithoutProperties","excluded","sourceSymbolKeys","indexOf","propertyIsEnumerable","hasOwn","classNames","classes","arg","argType","Array","isArray","inner","toString","join","default","_defineProperty","obj","DEFAULT_BREAKPOINTS","ThemeContext","React","prefixes","breakpoints","minBreakpoint","Consumer","Provider","useBootstrapPrefix","prefix","defaultPrefix","useContext","useBootstrapBreakpoints","useBootstrapMinBreakpoint","useIsRTL","dir","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","ROTATE","DOLLY","PAN","TOUCH","DOLLY_PAN","DOLLY_ROTATE","CullFaceNone","CullFaceBack","CullFaceFront","CullFaceFrontBack","BasicShadowMap","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","SmoothShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipMapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipMapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","ZeroStencilOp","KeepStencilOp","ReplaceStencilOp","IncrementStencilOp","DecrementStencilOp","IncrementWrapStencilOp","DecrementWrapStencilOp","InvertStencilOp","NeverStencilFunc","LessStencilFunc","EqualStencilFunc","LessEqualStencilFunc","GreaterStencilFunc","NotEqualStencilFunc","GreaterEqualStencilFunc","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","StreamDrawUsage","StaticReadUsage","DynamicReadUsage","StreamReadUsage","StaticCopyUsage","DynamicCopyUsage","StreamCopyUsage","GLSL1","GLSL3","_SRGBAFormat","EventDispatcher","type","listener","undefined","_listeners","listeners","listenerArray","index","splice","event","array","slice","l","_lut","_seed","DEG2RAD","Math","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","n","m","lerp","x","y","t","isPowerOfTwo","ceilPowerOfTwo","pow","ceil","log","LN2","floorPowerOfTwo","floor","MathUtils","freeze","mapLinear","a1","a2","b1","b2","inverseLerp","damp","lambda","dt","exp","pingpong","abs","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","seededRandom","s","degToRad","degrees","radToDeg","radians","setQuaternionFromProperEuler","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","set","console","warn","Vector2","scalar","Error","v","w","addVectors","subVectors","multiplyScalar","e","elements","minVal","maxVal","divideScalar","round","sqrt","angle","atan2","distanceToSquared","dx","dy","normalize","alpha","v1","v2","offset","attribute","getX","getY","center","isVector2","Matrix3","error","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","invert","transpose","r","tx","ty","sx","sy","rotation","cx","cy","theta","matrix","fromArray","arrayNeedsUint32","isMatrix3","TYPED_ARRAYS","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","getTypedArray","buffer","createElementNS","name","document","_colorKeywords","_hslA","_hslB","hue2rgb","p","SRGBToLinear","LinearToSRGB","_canvas","Color","setRGB","isColor","copy","setHex","setStyle","hex","style","handleAlpha","string","parseFloat","exec","color","components","parseInt","setHSL","size","charAt","setColorName","toLowerCase","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","delta","getHSL","color1","color2","getZ","normalized","NAMES","ImageUtils","image","test","src","HTMLCanvasElement","canvas","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","HTMLImageElement","ImageBitmap","imageData","getImageData","data","Source","uuid","version","meta","isRootObject","images","output","url","isDataTexture","serializeImage","getDataURL","isSource","textureId","Texture","DEFAULT_IMAGE","mapping","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","mipmaps","internalFormat","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","userData","onUpdate","isRenderTargetTexture","needsPMREMUpdate","setUvTransform","JSON","parse","stringify","textures","metadata","generator","toJSON","wrap","dispatchEvent","uv","applyMatrix3","needsUpdate","isTexture","Vector4","z","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getW","isVector4","WebGLRenderTarget","options","depth","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","samples","dispose","clone","assign","isWebGLRenderTarget","DataArrayTexture","wrapR","isDataArrayTexture","WebGLArrayRenderTarget","isWebGLArrayRenderTarget","Data3DTexture","isData3DTexture","WebGL3DRenderTarget","isWebGL3DRenderTarget","WebGLMultipleRenderTargets","count","il","isWebGLMultipleRenderTargets","Quaternion","_x","_y","_z","_w","_onChangeCallback","quaternion","euler","update","isEuler","_order","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","dot","Number","EPSILON","step","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","u1","sqrt1u1","sqrtu1","u2","u3","callback","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","sqrSin","len","tDir","isQuaternion","Vector3","multiplyVectors","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","u","isVector3","Box3","Infinity","minX","minY","minZ","maxX","maxY","maxZ","points","makeEmpty","expandByPoint","halfSize","_vector$b","add","precise","expandByObject","box","isEmpty","point","vector","addScalar","updateWorldMatrix","geometry","attributes","position","fromBufferAttribute","boundingBox","computeBoundingBox","_box$3","union","children","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","isBox3","_testAxis","v0","extents","j","p0","p1","p2","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","at","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","scale","x2","y2","z2","wx","wy","wz","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","RotationOrders","Layers","mask","channel","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","parent","DefaultUp","_onChange","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","remove","id","getObjectByProperty","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","nodes","serialize","library","element","toArray","isInstancedMesh","instanceMatrix","instanceColor","isScene","background","environment","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","values","recursive","child","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","i0","i1","i2","getNormal","setFromCoplanarPoints","getBarycoord","uv1","uv2","uv3","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","addScaledVector","d5","d6","vb","va","denom","targetLengthSq","dot00","dot01","dot02","dot11","dot12","invDenom","p3","materialId","Material","fog","blending","side","vertexColors","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","currentValue","flatShading","roughness","metalness","sheen","sheenColor","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularColor","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","map","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularColorMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","srcPlanes","dstPlanes","isMaterial","fromType","MeshBasicMaterial","setValues","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","usage","updateRange","index1","index2","colors","vectors","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float16BufferAttribute","isFloat16BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","_id$1","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","morphAttributes","morphTargetsRelative","groups","boundingSphere","drawRange","start","materialIndex","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","translate","setAttribute","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","isNaN","jl","indices","positions","normals","uvs","nVertices","hasAttribute","tangents","getAttribute","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","group","handleTriangle","tmp2","n2","handleVertex","isFinite","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","normalizeNormals","isBufferGeometry","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","String","morphTargets","raycaster","intersects","intersection","intersectsBox","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","isGeometry","morphInfluences","influence","boneTransform","intersectTriangle","checkIntersection","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","UniformsUtils","merge","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","isShaderMaterial","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","tan","fullWidth","fullHeight","enabled","offsetX","offsetY","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","render","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","shader","tEquirect","mesh","currentMinFilter","stencil","clear","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","end","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","requestAnimationFrame","stop","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","deleteBuffer","delete","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_vert","background_frag","cube_vert","cube_frag","depth_vert","depth_frag","distanceRGBA_vert","distanceRGBA_frag","equirect_vert","equirect_frag","linedashed_vert","linedashed_frag","meshbasic_vert","meshbasic_frag","meshlambert_vert","meshlambert_frag","meshmatcap_vert","meshmatcap_frag","meshnormal_vert","meshnormal_frag","meshphong_vert","meshphong_frag","meshphysical_vert","meshphysical_frag","meshtoon_vert","meshtoon_frag","points_vert","points_frag","shadow_vert","shadow_frag","sprite_vert","sprite_frag","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","toneMapping","unshift","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","reset","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","attributesNum","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","location","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","info","mode","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","has","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","removeEventListener","cubemap","fromEquirectangularTexture","addEventListener","physical","sheenColorMap","sheenRoughnessMap","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","scaleW","scaleH","makeOrthographic","isOrthographicCamera","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_lodMax","_cubeSize","_lodPlanes","_sizeLods","_sigmas","_blurMaterial","_cubemapMaterial","_equirectMaterial","_compileMaterial","sigma","_setSize","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapMaterial","_getEquirectMaterial","_dispose","cubeSize","log2","outputTarget","_setViewport","_textureToCubeUV","params","_createRenderTarget","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","fill","_createPlanes","weights","poleAxis","_getBlurShader","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","backgroundMaterial","backgroundBox","useSolidColor","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","sum","weight","outputSize","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","cubemapUV","isEquirectMap","isCubeMap","fromEquirectangular","fromCubemap","isCubeTextureComplete","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","numericalSort","absNumericalSort","denormalize","morph","WebGLMorphtargets","influencesList","morphTextures","workInfluences","objectInfluences","morphTargetsCount","entry","hasMorphPosition","hasMorphNormals","hasMorphColors","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","disposeTexture","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","influences","sort","MAX_SAFE_INTEGER","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","hasEventListener","emptyTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","unit","setTexture2D","setValueT3D1","setTexture3D","setValueT6","setTextureCube","setValueT2DArray1","setTexture2DArray","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","match","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getShaderErrors","status","getShaderParameter","errors","getShaderInfoLog","trim","split","addLineNumbers","getShaderSource","getTexelEncodingFunction","functionName","getEncodingComponents","getToneMappingFunction","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","prefixVertex","prefixFragment","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","envMapCubeUVSize","imageHeight","envMapCubeUVHeight","maxMip","texelHeight","texelWidth","generateCubeUVSize","customExtensions","extensionDerivatives","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","generateExtensions","customDefines","chunks","generateDefines","createProgram","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","useVertexTexture","morphTextureStride","doubleSided","flipSided","shadowMapEnabled","decodeVideoTexture","physicallyCorrectLights","opaque","outputEncoding","depthPacking","cachedUniforms","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","deleteShader","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","_id","WebGLShaderCache","shaderCache","Map","materialCache","vertexShaderStage","_getShaderStage","fragmentShaderStage","materialShaders","_getShaderCacheForMaterial","shaderStage","Set","code","stage","WebGLShaderStage","WebGLPrograms","cubeuvmaps","_programLayers","_customShaders","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","getParameters","shadows","isMeshStandardMaterial","bones","nVertexUniforms","nVertexMatrices","getMaxBones","customVertexShaderID","customFragmentShaderID","getVertexShaderID","getFragmentShaderID","useAlphaTest","useClearcoat","isXRRenderTarget","isVideoTexture","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","morphAttributeCount","getProgramCacheKeyParameters","disableAll","enable","getProgramCacheKeyBooleans","acquireProgram","pl","preexistingProgram","releaseProgram","pop","releaseShaderCache","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","transmissive","getNextRenderItem","renderItem","finish","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","renderCallDepth","list","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","ShadowUniformsCache","hash","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowMaterialVertical","VSM_SAMPLES","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","k","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","disable","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","bindFramebuffer","framebuffer","drawBuffersWEBGL","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","texStorage2D","texStorage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","WebGLTextures","_gl","utils","multisampledRTTExt","_videoTextures","_sources","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","getMipLevels","isFramebufferTexture","isCompressedTexture","filterFallback","textureProperties","__webglInit","webglTextures","__cacheKey","deleteTexture","deallocateTexture","onRenderTargetDispose","renderTargetProperties","__webglTexture","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","deallocateRenderTarget","textureUnits","slot","updateVideoTexture","__version","complete","uploadTexture","wrappingToGL","filterToGL","setTextureParameters","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","initTexture","forceUpload","textureCacheKey","getTextureCacheKey","__currentVersion","pixelStorei","mipmap","textureNeedsPowerOfTwo","verifyColorSpace","convert","glInternalFormat","useTexStorage","allocateMemory","levels","isDepthTexture","setupFrameBufferTexture","attachment","textureTarget","__hasExternalTextures","useMultisampledRTT","framebufferTexture2DMultisampleEXT","getRenderTargetSamples","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","renderbufferStorageMultisampleEXT","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","__autoAllocateDepthBuffer","webglDepthTexture","setupDepthTexture","createRenderbuffer","__useRenderToTexture","sRGBToLinear","textureUnit","resetTextureUnits","isCompressed","cubeImage","mipmapImage","uploadCubeTexture","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","createFramebuffer","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","invalidationArray","depthStyle","ignoreDepthValues","__ignoreDepthValues","invalidateFramebuffer","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","SRGB_ALPHA_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR","COMPRESSED_RGBA_ASTC_10x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","cameras","isArrayCamera","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","getPose","targetRaySpace","transform","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","handedness","gripSpace","DepthTexture","WebXRManager","framebufferScaleFactor","referenceSpaceType","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","getContextAttributes","initialRenderTarget","newRenderTarget","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","onSessionEnd","disconnect","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","getBaseLayer","getBinding","getFrame","setSession","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","framebufferWidth","framebufferHeight","depthFormat","depthType","glDepthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","setFoveation","requestReferenceSpace","cameraLPos","cameraRPos","updateCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","getCamera","getFoveation","fixedFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","setRenderTargetFramebuffer","cameraVRNeedsUpdate","glSubImage","getViewSubImage","setRenderTargetTextures","depthStencilTexture","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshUniformsStandard","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","createCanvasElement","display","WebGLRenderer","_alpha","_context","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","renderListStack","renderStateStack","domElement","sortObjects","toneMappingExposure","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","shift","message","initGLContext","preventDefault","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReferences","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","bits","onXRSessionStart","onXRSessionEnd","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","getProgram","projectObject","isLOD","intersectsSprite","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","currentToneMapping","onAfterRender","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","onBuild","needsLights","materialNeedsLights","progUniforms","uniformsList","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","markUniformsLightsNeedsUpdate","window","setFromProjectionMatrix","camera2","useRenderToTexture","useRenderbuffer","defaultFramebuffer","__useDefaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","framebufferBound","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexSubImage2D","copyTextureToTexture","srcTexture","dstTexture","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","CustomEvent","detail","isWebGLRenderer","WebGL1Renderer","FogExp2","Fog","Scene","InterleavedBuffer","arrayBuffers","_uuid","ib","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","setFromMatrixScale","transformVertex","intersect","vertexPosition","mvPosition","_v1$2","_v2$1","LOD","_currentLevel","addLevel","getObjectForDistance","raycast","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","boneInverses","Bone","isBone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","boneMatrices","inverse","bone","json","boneInverse","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","getMatrixAt","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","threshold","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","_start","_end","LineSegments","LineLoop","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","requestVideoFrameCallback","updateVideo","readyState","HAVE_CURRENT_DATA","FramebufferTexture","CompressedTexture","CanvasTexture","isCanvasTexture","CircleGeometry","segments","thetaStart","thetaLength","vertex","segment","CylinderGeometry","radiusTop","radiusBottom","radialSegments","openEnded","indexArray","generateTorso","slope","indexRow","sinTheta","cosTheta","generateCap","centerIndexStart","centerIndexEnd","ConeGeometry","PolyhedronGeometry","vertexBuffer","uvBuffer","subdivide","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","applyRadius","generateUVs","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","computeVertexNormals","details","DodecahedronGeometry","_v0","_v1$1","_normal","_triangle","EdgesGeometry","thresholdAngle","precisionPoints","thresholdDot","indexAttr","getIndex","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","lengths","getLengths","cacheArcLengths","current","last","targetArcLength","arcLengths","comparison","lengthBefore","t2","pt1","pt2","getTangent","closed","binormals","vec","mat","getTangentAt","MAX_VALUE","tz","makeRotationAxis","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","isEllipseCurve","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","isArcCurve","px","py","pz","CatmullRomCurve3","curveType","intPoint","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","isCatmullRomCurve3","CubicBezierCurve","v3","isCubicBezierCurve","CubicBezierCurve3","isCubicBezierCurve3","LineCurve","isLineCurve","LineCurve3","isLineCurve3","QuadraticBezierCurve","isQuadraticBezierCurve","QuadraticBezierCurve3","isQuadraticBezierCurve3","SplineCurve","isSplineCurve","Curves","CurvePath","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","diff","segmentLength","lens","cacheLengths","sums","pts","getPoints","fromJSON","Path","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","concat","absarc","absellipse","firstPoint","lastPoint","Shape","holes","holesPts","getPointsHoles","hole","Earcut","holeIndices","invSize","dim","hasHoles","outerLen","outerNode","linkedList","prev","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","Node","an","bp","ShapeUtils","contour","faces","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","isClockWise","reverse","hl","ahole","triangulateShape","scalePt2","pt","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","bs","vert","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","toJSON$1","geometryShapes","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","IcosahedronGeometry","LatheGeometry","phiStart","phiLength","initNormals","inverseSegments","curNormal","prevNormal","OctahedronGeometry","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","radiusStep","thetaSegmentLevel","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","SphereGeometry","thetaEnd","grid","verticesRow","uOffset","TetrahedronGeometry","TorusGeometry","tube","tubularSegments","arc","TorusKnotGeometry","P1","P2","B","T","N","calculatePositionOnCurve","cu","su","quOverP","cs","TubeGeometry","frames","P","generateBufferData","generateSegment","generateIndices","WireframeGeometry","edges","ol","isUniqueEdge","hash1","hash2","Geometries","BoxBufferGeometry","CircleBufferGeometry","ConeBufferGeometry","CylinderBufferGeometry","DodecahedronBufferGeometry","ExtrudeBufferGeometry","IcosahedronBufferGeometry","LatheBufferGeometry","OctahedronBufferGeometry","PlaneBufferGeometry","PolyhedronBufferGeometry","RingBufferGeometry","ShapeBufferGeometry","SphereBufferGeometry","TetrahedronBufferGeometry","TorusBufferGeometry","TorusKnotBufferGeometry","TubeBufferGeometry","RawShaderMaterial","_sheen","_clearcoat","_transmission","materialLib","AnimationUtils","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","find","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","getInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","trackType","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","validate","optimize","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","typeName","getTrackTypeForValueTypeName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","global","DefaultLoadingManager","Loader","manager","crossOrigin","withCredentials","resourcePath","requestHeader","Promise","resolve","reject","load","loading","FileLoader","setTimeout","req","Request","headers","Headers","credentials","mimeType","responseType","fetch","then","response","ReadableStream","body","getReader","callbacks","reader","contentLength","total","lengthComputable","loaded","stream","readData","read","close","byteLength","ProgressEvent","enqueue","Response","statusText","arrayBuffer","blob","text","DOMParser","parseFromString","label","decoder","TextDecoder","decode","catch","finally","AnimationLoader","setPath","setRequestHeader","setWithCredentials","CompressedTextureLoader","setResponseType","loadTexture","texDatas","mipmapCount","isCubemap","ImageLoader","onImageLoad","removeEventListeners","onImageError","CubeTextureLoader","urls","setCrossOrigin","DataTextureLoader","texData","TextureLoader","Light","HemisphereLight","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","isSpotLightShadow","SpotLight","power","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","DirectionalLightShadow","isDirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","MaterialLoader","getTexture","shading","LoaderUtils","fromCharCode","decodeURIComponent","escape","lastIndexOf","InstancedBufferGeometry","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","getArrayBuffer","typedArray","bufferAttribute","drawcalls","offsets","ObjectLoader","extractUrlBase","loadAsync","parseAsync","parseAnimations","parseShapes","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseSkeletons","bindSkeletons","hasImages","parseImagesAsync","bufferGeometryLoader","setTextures","deserializeImage","loadImage","imageArray","deserializedImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","isInteger","objectAnimations","setResourcePath","ImageBitmapLoader","createImageBitmap","fetchOptions","res","colorSpaceConversion","imageBitmap","isImageBitmapLoader","AudioContext","webkitAudioContext","AudioLoader","bufferCopy","decodeAudioData","audioBuffer","HemisphereLightProbe","sky","ground","isHemisphereLightProbe","AmbientLightProbe","isAmbientLightProbe","_eyeRight","_eyeLeft","_projectionMatrix","StereoCamera","eyeSep","_cache","xmin","xmax","eyeSepHalf","eyeSepOnProjection","ymax","Clock","autoStart","oldTime","elapsedTime","running","now","getElapsedTime","getDelta","newTime","performance","Date","_position$1","_quaternion$1","_scale$1","_orientation$1","AudioListener","gain","createGain","connect","destination","timeDelta","_clock","setTargetAtTime","currentTime","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setPosition","setOrientation","Audio","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","play","delay","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","getFilters","setFilters","_position","_quaternion","_scale","_orientation","PositionalAudio","panner","createPanner","panningModel","refDistance","rolloffFactor","distanceModel","maxDistance","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","getValue","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","RegExp","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","rootNode","node","findNode","nodeName","_getValue_unbound","_setValue_unbound","targetObject","resolvedProperty","propertyIndex","dest","targetArray","sourceArray","objectName","_getValue_unavailable","_setValue_unavailable","objectIndex","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","root","isAnimationObjectGroup","matches","results","lastDot","substring","getBoneByName","subTreeNode","searchNodeSubtree","childNode","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","inUse","bindingsPerObject","indicesByUUID","paths","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","action","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","Raycaster","coords","unproject","intersectObject","ascSort","Spherical","other","EPS","setFromCartesianCoords","Cylindrical","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","_vector$3","SpotLightHelper","cone","coneLength","coneWidth","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","PointLightHelper","sphereSize","_vector$1","_color1","_color2","HemisphereLightHelper","rotateY","GridHelper","PolarGridHelper","radials","circles","_v1","_v2","_v3","DirectionalLightHelper","lightPlane","targetLine","_vector","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_lineGeometry","_coneGeometry","_box","BoxHelper","setFromObject","Box3Helper","PlaneHelper","positions2","_axis","ArrowHelper","headLength","headWidth","setDirection","setLength","AxesHelper","xAxisColor","yAxisColor","zAxisColor","ShapePath","subPaths","currentPath","quadraticCurveTo","bezierCurveTo","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","_floatView","_int32View","DataUtils","val","LineStrip","LinePieces","NoColors","FaceColors","VertexColors","MeshFaceMaterial","MultiMaterial","isMultiMaterial","PointCloud","Particle","ParticleSystem","PointCloudMaterial","ParticleBasicMaterial","ParticleSystemMaterial","Vertex","DynamicBufferAttribute","Int8Attribute","Uint8Attribute","Uint8ClampedAttribute","Int16Attribute","Uint16Attribute","Int32Attribute","Uint32Attribute","Float32Attribute","Float64Attribute","AxisHelper","BoundingBoxHelper","EdgesHelper","WireframeHelper","XHRLoader","BinaryTextureLoader","WebGLRenderTargetCube","CanvasRenderer","JSONLoader","fromPoints","setColors","Handlers","empty","isIntersectionBox","isIntersectionSphere","toVector3","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","getPosition","setRotationFromQuaternion","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateX","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","removeAttribute","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","gammaFactor","renderReverseSided","renderSingleSided","setBuffer","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","SceneUtils","createMultiMaterialObject","detach","attach","LensFlare","ParametricGeometry","TextGeometry","FontLoader","Font","ImmediateRenderObject","WebGLMultisampleRenderTarget","DataTexture2DArray","DataTexture3D","revision","__THREE__","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","_e2","_toConsumableArray","arrayLikeToArray","iterableToArray","BrowserRouter","basename","historyRef","createBrowserHistory","history","listen","React.createElement","Router","navigationType","navigator","Link","ref","onClick","reloadDocument","rest","href","useHref","internalOnClick","replaceProp","navigate","useNavigate","useLocation","useResolvedPath","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","createPath","useLinkClickHandler","createElement","defaultPrevented","NavLink","ariaCurrentProp","caseSensitive","className","classNameProp","styleProp","locationPathname","pathname","toPathname","isActive","startsWith","ariaCurrent","Boolean","NavigationContext","LocationContext","RouteContext","outlet","invariant","cond","matchRoutes","routes","locationArg","stripBasename","parsePath","branches","flattenRoutes","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","route","relativePath","joinPaths","computeScore","paramRe","isSplat","initialScore","some","reduce","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","_","paramName","endsWith","compilePath","matcher","captureGroups","memo","splatValue","safelyDecodeURIComponent","resolveTo","toArg","routePathnames","routePathnameIndex","toSegments","fromPathname","search","resolvePathname","normalizeSearch","normalizeHash","resolvePath","nextChar","useInRouterContext","joinedPathname","getToPathname","endsWithSlash","createHref","routePathnamesJson","activeRef","go","OutletContext","useParams","routeMatch","_renderMatches","parentMatches","reduceRight","Navigate","_ref2","Outlet","useOutlet","Route","_props","_ref3","basenameProp","locationProp","NavigationType","Pop","static","staticProp","navigationContext","trailingPathname","Routes","_ref4","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","Col","as","bsPrefix","spans","brkPoint","span","propValue","infix","useCol","colProps","Component","_jsx","displayName","useEventCallback","fn","useCommittedRef","useCallback","rHyphen","pascalCase","str","chr","createWithBsPrefix","defaultProps","BsComponent","Tag","resolvedPrefix","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","_extends","noop","uid","isNullOrUndef","isObject","isNumberFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","args","thisArg","each","loopable","_elementsEqual","a0","ilen","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","_splitKey","_getKeyResolver","_capitalize","defined","isFunction","setsEqual","item","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","isNumber","_setMinAndMaxByKey","toRadians","toDegrees","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","items","requestAnimFrame","throttled","updateFn","updateArgs","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","animationsDisabled","pointCount","_sorted","iScale","_parsed","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","ymin","changed","atEdge","elasticIn","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","A","C","D","E","h1","h2","eq","hexString","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hueParse","hwb2rgb","hsv2rgb","names","Z","Y","X","W","V","U","S","R","Q","O","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","ok","nk","unpacked","tkeys","unpack","RGB_RE","modHSL","ratio","proto","fromObject","input","functionParse","rgbParse","ret","hexParse","_rgb","_valid","hslString","w2","rgb1","rgb2","interpolate","deg","rotate","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","descriptors","getScope$1","defaults","_descriptors","backgroundColor","borderColor","datasets","devicePixelRatio","chart","platform","getDevicePixelRatio","events","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","_scriptable","_indexable","_fallback","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","clearCanvas","resetTransform","clearRect","drawPoint","drawPointLegend","yOffset","cornerRadius","pointStyle","rad","beginPath","ellipse","closePath","SQRT1_2","rect","borderWidth","stroke","_isPointInArea","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","_bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","strokeWidth","strokeColor","setRenderOpts","strokeStyle","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","objProps","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","inputs","cacheable","createContext","parentContext","_createResolver","scopes","rootScopes","getTarget","_resolve","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","includes","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_subProxy","_stack","override","isScriptable","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","readKey","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","skip","getValueAxis","splineCurve","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getPositionedStyle","styles","suffix","pos","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","touches","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","locale","formatter","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalizeSegment","_boundSegment","bounds","prevValue","startBound","endBound","getSegment","subStart","shouldStart","shouldStop","_boundSegments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","styleChanged","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","date","numSteps","initial","currentStep","_refresh","remaining","draw","_active","_total","tick","_notify","charts","progress","_getAnims","acc","cur","_duration","cancel","animator","interpolators","number","Animation","cfg","_fn","_easing","easing","_loop","_prop","_from","_to","_promises","elapsed","remain","promises","rej","resolved","animationOptions","numbers","active","resize","show","hide","Animations","config","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","xAxisKey","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","disabled","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","_dataChanges","_sync","newCount","computeMinSampleSize","curr","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","_getSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","updateElement","grouped","skipNull","_getStacks","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","chunk","computeFlexCategoryTraits","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","_value_","beginAtZero","BubbleController","tooltip","title","DoughnutController","getter","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","cutout","chartWeight","_getRingWeight","_getRotationExtents","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","Element","useFinalPosition","getProps","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","padding","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","fullSize","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","backdrop","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","gz","getSortedVisibleDatasetMetas","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","_typedRegistries","_each","_get","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","ScatterController","getElement","abstract","DateAdapter","chartOptions","timestamp","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","handler","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","layout","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","setBoxDims","placeBoxes","userPadding","autoPadding","_layers","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","isConnected","PluginService","_init","hook","_createDescriptors","plugin","cancelable","_oldCache","_notifyStateChanges","localIds","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","chartOptionScopes","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","outerStartX","outerStartY","outerEndX","outerEndY","lineJoin","fullCircles","drawFullCircleBorders","unregister","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfRadius","radiusOffset","drawArc","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","rtlHelper","hitbox","_draw","cursor","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","adjustHitBoxes","afterEvent","handleEvent","ci","Title","_padding","textSize","fontOpts","_drawArgs","plugin_title","titleBlock","createTitle","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","_willRender","labelCount","findOrAddLabel","addedLabels","addIfString","CategoryScale","_startValue","_valueRange","_addedLabels","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","handleTickRangeOptions","isMajor","tickVal","LogarithmicScale","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","millisecond","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","_tickFormatFunction","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","_assertThisInitialized","ReferenceError","SelectableContext","makeEventKey","eventKey","kindOf","kindOfTest","isUndefined","isArrayBuffer","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","TypedArray","isBuffer","isFormData","FormData","isArrayBufferView","isString","isStream","pipe","isStandardBrowserEnv","product","assignValue","extend","stripBOM","content","charCodeAt","inherits","superConstructor","toFlatObject","sourceObj","destObj","searchString","FormContext","_excluded","useDropdownItem","onSelectCtx","activeKey","NavContext","handleClick","isPropagationStopped","dataAttr","DropdownItem","_ref","Button","sourceKeys","_objectWithoutPropertiesLoose","dropdownItemProps","useRefWithUpdate","forceUpdate","useForceUpdate","useRef","attachRef","Dropdown","defaultShow","rawShow","onSelect","rawOnToggle","onToggle","itemSelector","focusFirstItemOnShow","placement","useWindow","useUncontrolledProp","menuRef","setMenu","menuElement","toggleRef","setToggle","toggleElement","lastShow","usePrevious","lastSourceEvent","focusInDropdown","toggle","nextShow","originalEvent","handleSelect","useMemo","ownerDocument","activeElement","focusToggle","maybeFocusFirst","focusType","isRoleMenu","qsa","useEffect","getNextFocusedChild","useEventListener","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","tagName","_menuRef$current2","once","stopPropagation","DropdownContext","Menu","DropdownMenu","Toggle","DropdownToggle","Item","Anchor","DropdownHeader","role","DropdownDivider","DropdownItemText","pProps","useUncontrolled","drop","navbar","isInputGroup","InputGroupContext","isRTL","handleToggle","currentTarget","alignEnd","getDropdownMenuPlacement","contextValue","BaseDropdown","ItemText","Divider","Header","Row","decoratedBsPrefix","sizePrefix","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_inheritsLoose","getDerivedStateFromProps","prevState","_proto","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","ReactDOM","findDOMNode","scrollTop","forceReflow","performEnter","performExit","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","nextState","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","TransitionGroupContext","cloneElement","Children","only","contextType","propTypes","CardImg","variant","CardHeader","cardHeaderBsPrefix","CardHeaderContext","DivStyledAsH5","divWithClassName","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardFooter","CardImgOverlay","Card","bg","Img","Subtitle","Body","Text","Footer","ImgOverlay","psuedoElement","doc","defaultView","ownerWindow","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","css","transforms","isTransform","removeProperty","cssText","toFnRef","useMergedRefs","refA","refB","mergeRefs","dataProp","Function","selector","querySelectorAll","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","Container","fluid","eventName","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","defaultKey","substr","_toPropertyKey","hint","prim","toPrimitive","_toPrimitive","wasPropRef","_useState","useState","stateValue","isProp","wasProp","_len","_key","fieldName","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","componentWillMount","componentWillReceiveProps","nextProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","__suppressDeprecationWarning","_taggedTemplateLiteral","strings","interpolations","typeOf","EMPTY_ARRAY","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","process","REACT_APP_SC_ATTR","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","throwStyledComponentsError","DefaultGroupedTag","tag","groupSizes","indexOfGroup","insertRules","rules","oldBuffer","oldSize","throwStyledError","ruleIndex","insertRule","clearGroup","deleteRule","getGroup","getRule","groupIDRegister","reverseRegister","nextFreeGroup","getGroupForId","getIdForGroup","setGroupForId","SELECTOR","MARKER_RE","rehydrateNamesFromContent","sheet","registerName","rehydrateSheetFromTag","textContent","part","marker","getTag","getNonce","__webpack_nonce__","makeStyleTag","childNodes","nodeType","findLastStyleTag","nextSibling","__VERSION__","nonce","insertBefore","CSSOMTag","appendChild","createTextNode","styleSheets","ownerNode","getSheet","rule","_error","cssRules","TextTag","refNode","removeChild","VirtualTag","SHOULD_REHYDRATE","defaultOptions","isServer","useCSSOMInjection","StyleSheet","globalStyles","gs","server","rehydrateSheet","registerId","reconstructWithOptions","withNames","allocateGSInstance","hasNameForId","groupNames","clearNames","clearRules","clearTag","outputSheet","AD_REPLACER_R","getAlphabeticChar","generateAlphabeticName","phash","isStaticRules","SEED","ComponentStyle","componentId","staticRulesId","isStatic","NODE_ENV","baseHash","generateAndInjectStyles","executionContext","styleSheet","stylis","cssStatic","generateName","cssStaticFormatted","dynamicHash","partRule","partChunk","partString","cssFormatted","COMMENT_REGEX","COMPLEX_SELECTOR_PREFIX","createStylisInstance","_componentId","_selector","_selectorRegexp","_consecutiveSelfRefRegExp","Stylis","parsingRules","parseRulesPlugin","toSheet","block","selectors","parents","column","ns","delimiter","insertRulePlugin","selfReferenceReplacer","stringifyRules","flatCSS","cssStr","use","parsedRules","StyleSheetContext","StylisContext","masterSheet","masterStylis","useStyleSheet","useStylis","StyleSheetManager","stylisPlugins","setPlugins","contextStyleSheet","disableCSSOMInjection","disableVendorPrefixes","shallowequal","Keyframes","inject","stylisInstance","resolvedName","getName","uppercaseCheck","uppercasePattern","prefixAndLowerCase","char","isFalsish","ruleSet","isReactComponent","objToCssArray","prevKey","isCss","unitless","addTag","interleave","originalConsoleError","providedTheme","theme","escapeRegex","dashesAtEnds","isTag","mixin","mixinDeep","identifiers","createStyledComponent","isTargetStyledComp","isCompositeComponent","attrs","parentComponentId","generateComponentId","generateId","generateDisplayName","finalAttrs","shouldForwardProp","filterFn","elementToBeCreated","WrappedStyledComponent","componentStyle","forwardRef","forwardedComponent","forwardedRef","componentAttrs","foldedComponentIds","resolvedAttrs","attrDef","resolvedAttrDef","useResolvedAttrs","determineTheme","generatedClassName","warnTooManyClasses","useInjectedStyle","refToForward","$as","isTargetTag","computedProps","propsForElement","validAttr","withComponent","previousComponentId","optionsToCopy","newComponentId","_foldedDefaultProps","hoist","styled","constructWithOptions","componentConstructor","isValidElementType","templateFunction","withConfig","StyledComponent","GlobalStyle","createStyles","removeStyles","renderStyles","ServerStyleSheet","_emitSheetCSS","SC_ATTR_VERSION","getStyleTags","sealed","getStyleElement","dangerouslySetInnerHTML","__html","seal","collectStyles","interleaveWithNodeStream","useMounted","mounted","isMounted","_unsupportedIterableToArray","minLen","useButtonProps","rel","tabIndex","isTrivialHref","onKeyDown","asProp","buttonProps","parseDuration","mult","transitionEndListener","transitionEnd","TransitionWrapper","childRef","mergedRef","componentOrElement","param","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","handleExited","handleAddEndListener","innerProps","func","hasChildOfType","useUpdateEffect","deps","isFirst","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","useTimeout","useWillUnmount","CarouselItem","finalClassName","slide","fade","controls","indicators","indicatorLabels","defaultActiveIndex","keyboard","pause","touch","prevIcon","prevLabel","nextIcon","nextLabel","Carousel","uncontrolledProps","activeIndex","onSlide","onSlid","onMouseOver","onMouseOut","onTouchStart","onTouchMove","onTouchEnd","nextDirectionRef","setPaused","isSliding","setIsSliding","renderedActiveIndex","setRenderedActiveIndex","activeChildInterval","numChildren","activeChildIntervalRef","nextActiveIndex","elementRef","useImperativeHandle","nextWhenVisible","elementStyle","visibility","isVisible","slideDirection","orderClassName","directionalClassName","triggerBrowserReflow","handleKeyDown","handleMouseOver","handleMouseOut","touchStartXRef","touchDeltaXRef","touchUnpauseTimeout","handleTouchStart","handleTouchMove","handleTouchEnd","touchDeltaX","shouldPlay","intervalHandleRef","_activeChildIntervalR","nextFunc","setInterval","clearInterval","indicatorOnClicks","_jsxs","_Fragment","Caption","CarouselCaption","globalCache","handleAsset","lifespan","preload","deepEqual","promise","useAsset","peek","_globalCache$find","useMeasure","_temp","scroll","offsetSize","polyfill","scrollContainers","resizeObserver","lastBounds","scrollDebounce","resizeDebounce","HTMLElement","offsetHeight","offsetWidth","areBoundsEqual","createDebounce","forceRefresh","resizeChange","scrollChange","removeListeners","addListeners","scrollContainer","capture","onScroll","findScrollContainers","overflow","overflowX","overflowY","parentElement","is","fun","und","equ","makeId","eventObject","releaseInternalPointerCapture","capturedMap","captures","pointerId","captureData","releasePointerCapture","createEvents","store","temp","THREE","filterPointerEvents","_r3f","__r3f","cancelPointer","hits","internal","getState","hovered","hoveredObj","hit","eventCount","intersections","onPointerOut","onPointerLeave","pointerMissed","_r3f3","onPointerMissed","handlePointer","_customOffsets$offset","_customOffsets$offset2","_customOffsets$width","_customOffsets$height","mouse","customOffsets","setFromCamera","prepareRay","isPointerMove","isClickEvent","patchIntersects","seen","eventsObjects","intersectObjects","_r3f2","initialClick","calculateDistance","initialHits","unprojectedPoint","localState","stopped","hasPointerCapture","_internal$capturedMap","_internal$capturedMap2","setPointerCapture","extractEventProps","raycastEvent","spaceX","spaceY","capturesForPointer","higher","sourceEvent","nativeEvent","handleIntersects","onPointerOver","onPointerEnter","onPointerMove","isStore","def","getContainer","_container$__r3f$root","_container$__r3f","DEFAULT","EMPTY","catalogue","checkShallow","prepare","primitive","memoizedProps","calculateDpr","createStore","applyProps","advance","flat","orthographic","frameloop","clock","raycastOptions","cameraOptions","rootState","initialDpr","defaultTarget","tempTarget","getWorldPosition","performanceTimeout","setPerformanceCurrent","runGlobalEffects","regress","setDpr","setFrameloop","connected","priority","lastProps","subscribers","subscribe","oldDpr","manual","globalEffects","globalAfterEffects","globalTailEffects","run","render$1","createPointerEvents","onContextMenu","onDoubleClick","onWheel","onPointerDown","onPointerUp","onPointerCancel","onLostPointerCapture","_events$handlers","_events$handlers2","useIsomorphicLayoutEffect","Block","ErrorBoundary","getDerivedStateFromError","Canvas","containerRef","canvasRef","setBlock","setError","_store","_canvas$parentElement","_canvas$parentElement2","_canvas$parentElement3","_canvas$parentElement4","onCreated","roots","fiber","unmountComponentAtNode","glRenderer","createRendererInstance","reconciler","createContainer","updateContainer","useStore","useFrame","renderPriority","buildGraph","loadingFn","Proto","useLoader","createLoop","diffProps","_instance$__r3f","accumulative","previousKeys","_instance$__r3f2","memoized","_instance$__r3f3","_root$getState","_instance$__r3f4","prevHandlers","_rootState$gl","isEvent","currentInstance","targetProp","defaultClassCall","isLinear","setScalar","convertSRGBToLinear","invalidateInstance","updateInstance","_instance$__r3f5","_instance$__r3f5$root","createInstance","hostContext","internalInstanceHandle","return","stateNode","containerInfo","parentInstance","addedAsChild","attachArray","attachObject","attachFns","attachFn","beforeChild","restSiblings","sibling","removeRecursive","_parentInstance$__r3f","_child$__r3f2","detachFn","_child$__r3f","removeInteractivity","_child$__r3f3","isPrimitive","shouldDispose","unstable_runWithPriority","unstable_IdlePriority","Reconciler","unstable_now","appendInitialChild","warnsIfNotActing","supportsMutation","isPrimaryRenderer","scheduleTimeout","cancelTimeout","noTimeout","appendChildToContainer","removeChildFromContainer","insertInContainerBefore","prepareUpdate","oldProps","newProps","argsNew","restNew","argsOld","restOld","commitUpdate","reconstruct","_instance$__r3f6","newInstance","alternate","switchInstance","hideInstance","unhideInstance","hideTextInstance","getPublicInstance","getRootHostContext","rootContainer","getChildHostContext","parentHostContext","createTextInstance","finalizeInitialChildren","_instance$__r3f7","commitMount","_instance$__r3f8","shouldDeprioritizeSubtree","prepareForCommit","preparePortalMount","resetAfterCommit","shouldSetTextContent","clearContainer","createRenderer","customRenderer","_state$gl","_state$gl$renderLists","_state$gl2","act","injectIntoDevTools","bundleType","rendererPackageName","AxiosError","request","description","fileName","lineNumber","columnNumber","customProps","axiosError","useCallbackRef","eventTarget","_setPrototypeOf","isReactNative","isDOM","useLayoutEffect","optionsSupported","onceSupported","canUseDOM","wrappedHandler","__once","onceHandler","ModalContext","onHide","Spinner","bsSpinnerPrefix","onUnmount","valueRef","useUpdatedRef","compareDocumentPosition","refs","FormCheckInput","isValid","isInvalid","controlId","matchersByWindow","getMatcher","query","targetWindow","matchers","mql","matchMedia","refCount","media","useMediaQuery","setMatches","handleChange","useBreakpoint","breakpointValues","and","getMaxQuery","breakpoint","getNext","breakpointOrMap","breakpointMap","_breakpointMap","getMinQuery","createBreakpointHook","xs","sm","md","lg","xl","xxl","transitionStyles","OffcanvasToggling","OffcanvasHeader","AbstractModalHeader","closeLabel","closeButton","DialogTransition","BackdropTransition","Fade","Offcanvas","ariaLabelledby","onEscapeKeyDown","onShow","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","backdropClassName","propsManager","renderStaticNode","modalManager","NavbarContext","showOffcanvas","setShowOffcanvas","hideResponsiveOffcanvas","handleHide","modalContext","renderBackdrop","backdropProps","renderDialog","dialogProps","BaseModal","BootstrapModalManager","handleContainerOverflow","getSharedManager","backdropTransition","OffcanvasBody","OffcanvasTitle","domToReact","attributesToProps","htmlToDOM","domParserOptions","lowerCaseAttributeNames","HTMLReactParser","html","htmlparser2","warning","condition","argIndex","framesToPop","_arrayLikeToArray","arr2","dropDirection","rootCloseEvent","showProps","renderOnMount","popperConfig","isNavbar","contextAlign","alignClasses","useDropdownMenu","usePopper","menuProps","hasShown","popper","useWrappedRefWithWarning","useIsomorphicEffect","fadeStyles","transitionClasses","isAppearing","replaceClassName","origClass","classToRemove","sharedManager","Selector","adjust","actual","containerState","classList","baseVal","hasClass","scrollBarWidth","paddingProp","marginProp","adjustAndStore","ModalManager","OPEN_DATA_ATTRIBUTE","modals","innerWidth","documentElement","getBodyScrollbarWidth","_modal","modal","modalIdx","setModalAttributes","getScrollbarWidth","setContainerStyle","removeContainerStyle","removeModalAttributes","$704cf1d3b684cc5c$var$defaultContext","$704cf1d3b684cc5c$var$SSRContext","$89yE2$react","$704cf1d3b684cc5c$var$canUseDOM","_el$getAttribute","useDropdownToggle","$89yE2$useContext","$89yE2$useMemo","useSSRSafeId","equal","flags","valueOf","NavbarBrand","createChainedFunction","funcs","MARGINS","getDefaultDimensionValue","elem","collapseStyles","getDimensionValue","Collapse","computedDimension","NavbarCollapse","expanded","NavbarToggle","NavbarOffcanvas","NavbarText","Navbar","initialBsPrefix","expand","fixed","sticky","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","Brand","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","CanceledError","ERR_CANCELED","__CANCEL__","alignDirection","PropTypes","oneOf","alignPropType","oneOfType","_isNativeReflectConstruct","sham","_possibleConstructorReturn","_typeof","_arrayWithHoles","_nonIterableRest","_iterableToArray","componentName","useReducer","childBsPrefix","dropdownContext","toggleProps","FormGroup","tar","dequal","foo","getTime","getInt8","useSafeState","getBasePlacement","getWindow","isElement","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","visualViewport","addVisualOffsets","offsetTop","getLayoutRect","getRootNode","isSameNode","getNodeName","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","variationPlacements","placements","modifierPhases","phase","_state$modifiersData$","arrowElement","arrow","popperOffsets","modifiersData","basePlacement","toPaddingObject","arrowRect","minProp","maxProp","endDiff","reference","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","effect","_options$element","querySelector","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","strategy","_options$scroll","_options$resize","scrollParents","scrollParent","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","orderModifiers","existing","mergeByName","_ref3$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","computeStyles","eventListeners","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","EMPTY_MODIFIERS","referenceElement","popperElement","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","popperState","updateModifier","nextModifiers","isLeftClickEvent","getRefTarget","InitialTriggerEvents","click","mouseup","useClickOutside","onClickOutside","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","handleInitialMouse","handleMouse","currentEvent","removeInitialTriggerListener","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","toModifierArray","mergeOptionsWithPopperConfig","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","toModifierMap","attachArrowRef","hasShownRef","placementOverride","enableEventListeners","shouldUsePopper","handleClose","arrowProps","resolveContainerRef","useModalManager","provided","getManager","dialog","isTopModal","setDialogRef","setBackdropRef","Modal","onBackdropClick","providedManager","onResolved","resolvedRef","setRef","earlyRef","nextRef","useWaitForDOMRef","prevShow","exited","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","_lastFocusRef$current","handleBackdropClick","keyCode","backdropElement","createPortal","Manager","emulateTransitionEnd","called","bubbles","createEvent","initEvent","triggerEvent","removeEmulate","CloseButton","closeVariant","bool","Feedback","FormCheckLabel","htmlFor","FormCheck","bsSwitchPrefix","inline","feedbackTooltip","feedback","feedbackType","innerFormContext","hasLabel","Input","Label","FormControl","htmlSize","plaintext","readOnly","FormLabel","visuallyHidden","columnClass","FormRange","FormSelect","FormText","muted","Switch","any","validated","Form","Control","Floating","FormFloating","Check","Range","Select","FloatingLabel","TabContext","useNavItem","parentOnSelect","navContext","tabContext","contextControllerId","getControllerId","contextControlledId","getControlledId","NavItem","EVENT_KEY_ATTR","Nav","needsRefocusRef","listNode","getNextActiveTab","currentListNode","activeChild","nextActiveChild","navItemProps","navbarBsPrefix","justify","navbarScroll","cardHeaderContext","BaseNav","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","transitional","XMLHttpRequest","getDefaultAdapter","transformRequest","isObjectPayload","contentType","_FormData","env","rawValue","encoder","stringifySafely","transformResponse","silentJSONParsing","forcedJSONParsing","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","immediate","later","debounced","callNow","flush","reactIs","REACT_STATICS","childContextTypes","contextTypes","getDefaultProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","HASH_UNDEFINED","funcTag","genTag","reIsHostCtor","freeGlobal","freeSelf","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","getNative","nativeCreate","Hash","ListCache","MapCache","assocIndexOf","baseIsNative","isHostObject","toSource","getMapData","__data__","isKeyable","memoize","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","cloneData","nextData","ChartComponent","redraw","fallbackContent","updateMode","chartRef","renderChart","ChartJS","destroyChart","nextOptions","createTypedChart","registerables","Bar","reactPropsRegex","isPropValid","encode","encodeURIComponent","paramsSerializer","serializedParams","toISOString","hashmarkIndex","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","nextTick","browser","argv","versions","on","off","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","clarifyTimeoutError","formData","convertValue","Blob","Buffer","build","parentKey","fullKey","append","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","parseProtocol","onCanceled","requestData","requestHeaders","cancelToken","unsubscribe","signal","auth","username","password","unescape","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","open","onreadystatechange","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","onDownloadProgress","onUploadProgress","abort","aborted","protocol","ERR_BAD_REQUEST","send","isAbsoluteURL","combineURLs","requestedURL","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","reactProperty","utilities","getPropName","attributeName","possibleStandardNames","attributeNameLowerCased","attributeValue","propName","propertyInfo","inputIsValueOnly","submit","isCustomAttribute","getPropertyInfo","BOOLEAN","OVERLOADED_BOOLEAN","PRESERVE_CUSTOM_ATTRIBUTES","setStyleProp","styleToJS","styleToJSOptions","reactCompat","elementsWithNoTextChildren","invertObject","isOverridePresent","isCustomComponent","canTextBeChildOfNode","ElementType","Root","Directive","Comment","Script","Style","CDATA","Doctype","cloneNode","DataNode","ProcessingInstruction","NodeWithChildren","_a","Document","attribs","_b","namespace","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","instruction","sourceCodeLocation","childs","defaultOpts","withStartIndices","withEndIndices","xmlMode","DomHandler","elementCB","dom","tagStack","lastNode","handleCallback","addNode","previousSibling","_construct","Parent","Class","react","createState","partial","_previousState","api","equalityFn","currentSlice","listenerToAdd","nextSlice","_previousSlice","subscribeWithSelector","newStateSlice","stateRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","sliceToReturn","useDebugValue","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","stylis_min","ca","da","ea","ha","ia","ja","ka","aa","ba","la","ma","na","oa","unitlessKeys","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","orphans","tabSize","widows","zIndex","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","HTML","HEAD","BODY","FIRST_TAG_REGEX","HEAD_TAG_REGEX","BODY_TAG_REGEX","parseFromDocument","domParser","implementation","createHTMLDocument","innerHTML","parseFromTemplate","template","firstTagName","domhandler","CASE_SENSITIVE_TAG_NAMES","caseSensitiveTagNamesMap","formatAttributes","formatTagName","caseSensitiveTagName","getCaseSensitiveTagName","formatDOM","directive","nodeValue","getPercentage","percentage","renderProgressBar","striped","ProgressBar","isChild","wrapperProps","Table","bordered","borderless","responsiveClass","mergeClassNames","getUserLocales","_ref$useFallbackLocal","useFallbackLocale","_ref$fallbackLocale","fallbackLocale","languageList","languages","language","userLanguage","browserLanguage","systemLanguage","splitEl","normalizeLocales","getUserLocale","makeGetEdgeOfNeighbor","getPeriod","getEdgeOfPeriod","defaultOffset","previousPeriod","makeGetEnd","getBeginOfNextPeriod","makeGetRange","functions","getYear","getFullYear","getMonth","getDate","getCenturyStart","centuryStartYear","centuryStartDate","setFullYear","setHours","getPreviousCenturyStart","getNextCenturyStart","getCenturyEnd","getPreviousCenturyEnd","getCenturyRange","getDecadeStart","decadeStartYear","decadeStartDate","getPreviousDecadeStart","getNextDecadeStart","getDecadeEnd","getPreviousDecadeEnd","getDecadeRange","getYearStart","yearStartDate","getPreviousYearStart","getNextYearStart","getYearEnd","getPreviousYearEnd","getYearRange","makeGetEdgeOfNeighborMonth","getMonthStart","monthStartDate","getPreviousMonthStart","getNextMonthStart","getMonthEnd","getPreviousMonthEnd","getMonthRange","makeGetEdgeOfNeighborDay","getDayStart","dayStartDate","_CALENDAR_TYPE_LOCALE","getDayEnd","getDayRange","getDaysInMonth","CALENDAR_TYPES","ARABIC","HEBREW","ISO_8601","US","CALENDAR_TYPE_LOCALES","WEEKDAYS","_arrayWithoutHoles","_nonIterableSpread","formatterCache","getSafeFormatter","localeWithDefault","formatterCacheLocale","DateTimeFormat","getFormatter","safeDate","toSafeHour","formatDay","formatLongDate","formatMonth","formatMonthYear","formatShortWeekday","formatWeekday","formatYear","SUNDAY","FRIDAY","SATURDAY","getDayOfWeek","calendarType","getDay","getBeginOfWeek","monthIndex","getMonthIndex","getBegin","rangeType","getBeginNext","getEnd","getValueRange","date1","date2","rawNextValue","toYearLabel","defaultFormatYear","dates","getDecadeLabel","isWeekend","calendarTypes","allViews","isCalendarType","isClassName","arrayOf","isMinDate","minDate","maxDate","isMaxDate","isRef","isValue","instanceOf","isViews","allowedViews","isRequired","tileGroupProps","activeStartDate","tileClassName","tileContent","valueType","tileProps","objectOf","tileDisabled","Navigation","drillUp","_ref$formatMonthYear","defaultFormatMonthYear","_ref$formatYear","_ref$navigationAriaLa","navigationAriaLabel","navigationAriaLive","navigationLabel","_ref$next2AriaLabel","next2AriaLabel","_ref$next2Label","next2Label","_ref$nextAriaLabel","nextAriaLabel","_ref$nextLabel","_ref$prev2AriaLabel","prev2AriaLabel","_ref$prev2Label","prev2Label","_ref$prevAriaLabel","prevAriaLabel","_ref$prevLabel","setActiveStartDate","showDoubleView","drillUpAvailable","shouldShowPrevNext2Buttons","previousActiveStartDate","getBeginPrevious","previousActiveStartDate2","getBeginPrevious2","nextActiveStartDate","nextActiveStartDate2","getBeginNext2","prevButtonDisabled","previousActiveEndDate","getEndPrevious","prev2ButtonDisabled","getEndPrevious2","nextButtonDisabled","next2ButtonDisabled","renderLabel","getCenturyLabel","labelClassName","Fragment","renderButton","_objectSpread","toPercent","Flex","otherProps","flexDirection","flexWrap","flexBasis","marginLeft","isValueWithinRange","isRangeWithinRange","greaterRange","smallerRange","doRangesOverlap","range1","range2","getRangeClassNames","valueRange","dateRange","baseClassName","isRangeStart","isRangeEnd","getTileClasses","dateType","valueRangeClassNames","valueArray","hoverRange","hoverRangeClassNames","TileGroup","_ref$count","dateTransform","_ref$step","Tile","tile","tiles","datesAreDifferent","_Component","_super","tileClassNameProps","activeStartDateProps","tileContentProps","formatAbbr","maxDateTransform","minDateTransform","_this$state","onFocus","Decade","Decades","CenturyView","Year","Years","DecadeView","Month","_ref$formatMonth","defaultFormatMonth","Months","YearView","Day","_ref$formatDay","defaultFormatDay","_ref$formatLongDate","defaultFormatLongDate","currentMonthIndex","Days","showFixedNumberOfWeeks","showNeighboringMonth","hasFixedNumberOfWeeks","dayOfWeek","daysInMonth","activeEndDate","Weekdays","_props$formatShortWee","defaultFormatShortWeekday","onMouseLeave","beginOfMonth","weekdays","weekdayDate","abbr","WeekNumber","onClickWeekNumber","weekNumber","WeekNumbers","numberOfWeeks","days","weekNumbers","beginOfFirstWeek","calendarTypeForWeekNumber","beginOfWeek","getWeekNumber","weekIndex","MonthView","_props$calendarType","getCalendarTypeFromLocale","showWeekNumbers","alignItems","defaultMinDate","defaultMaxDate","allValueTypes","getLimitedViews","minDetail","maxDetail","getView","isViewAllowed","getValueType","valueDate","toDate","getDetailValue","valuePiece","getDetailValueFrom","getDetailValueTo","getDetailValueArray","getActiveStartDate","getIsSingleValue","Calendar","defaultActiveStartDate","_assertThisInitialize","previousView","allowPartialRange","onActiveStartDateChange","onChange","onViewChange","selectRange","prevArgs","shouldUpdate","setStateAndCallCallbacks","drillDownAvailable","onClickTile","_assertThisInitialize2","onDrillDown","nextView","_assertThisInitialize3","onDrillUp","nextValue","_assertThisInitialize4","previousValue","getProcessedValue","persist","_this$props2","onClickDay","onClickDecade","onClickMonth","onClickYear","activeStartDateState","valueFrom","getInitialActiveStartDate","_this$props3","valueProps","valueState","_this$props4","viewProps","viewState","_this$props5","_this$props6","returnValue","processFunction","currentActiveStartDate","_this$props7","commonProps","drillDown","_formatYear","_this$props8","_this$props9","showNavigation","_this$props10","_this$props11","inputRef","renderNavigation","onBlur","renderContent","isActiveStartDate","isLooseValue","Grad","grad3","perm","gradP","seed","lcgRandom","normalizeSeed","defaultGen","defaultSphere","inSphere","rng","_defaultSphere$sphere2","mag","StrictMode","Profiler","Suspense","for","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isPureReactComponent","__self","__source","$$typeof","_owner","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","createRef","isValidElement","lazy","_payload","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","pa","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","bb","eb","db","selected","defaultSelected","gb","hb","jb","kb","lb","mb","nb","ob","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","gridArea","lineClamp","rb","sb","tb","ub","menuitem","br","embed","hr","img","keygen","link","wbr","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","$b","memoizedState","dehydrated","cc","dc","ec","fc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","tc","wc","lanePriority","hydrate","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","pageX","pageY","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Meta","Shift","Pd","Qd","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","ee","fe","ge","he","ie","le","email","tel","ne","oe","pe","qe","re","se","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Ye","Ze","Yb","$e","Nb","ef","ff","parentWindow","gf","hf","je","ke","jf","kf","lf","mf","nf","of","pf","qf","rf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","Zf","$f","ag","cg","dg","eg","fg","gg","hg","ig","jg","kg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","UNSAFE_componentWillReceiveProps","Og","UNSAFE_componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","revealOrder","jh","kh","mh","nh","oh","pendingProps","ph","qh","rh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ii","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","ak","bk","dk","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","flushSync","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","jsx","jsxs","Axios","mergeConfig","axios","defaultConfig","instanceConfig","CancelToken","isCancel","VERSION","Cancel","spread","isAxiosError","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","normalizedName","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","that","RangeError","encodingOrOffset","allocUnsafe","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","write","fromString","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","b64","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","expires","domain","secure","cookie","toGMTString","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","hostname","port","requestURL","deprecatedWarnings","formatMessage","opt","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","executor","resolvePromise","token","onfulfilled","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","symbol","exact","checkPropTypes","allPropTypes","_len2","_key2","_createChainableTypeChecker2","_createChainableTypeChecker","__esModule","checkType","componentNameSafe","propFullNameSafe","chainedCheckType","$$$hostConfig","supportsPersistence","supportsHydration","getInstanceFromNode","makeOpaqueHydratingObject","makeClientId","beforeActiveInstanceBlur","afterActiveInstanceBlur","supportsTestSelectors","findFiberRoot","getBoundingRect","getTextContent","isHiddenSubtree","matchAccessibilityRole","setFocusIfFocusable","setupIntersectionObserver","commitTextUpdate","resetTextContent","unhideTextInstance","cloneInstance","createContainerChildSet","appendChildToContainerChildSet","finalizeContainerChildren","replaceContainerChildren","cloneHiddenInstance","cloneHiddenTextInstance","canHydrateInstance","canHydrateTextInstance","isSuspenseInstancePending","isSuspenseInstanceFallback","getNextHydratableSibling","getFirstHydratableChild","hydrateInstance","hydrateTextInstance","getNextHydratableInstanceAfterSuspenseInstance","commitHydratedContainer","commitHydratedSuspenseInstance","Cd","Ed","Gd","Kd","Sd","Ud","Wd","_workInProgressVersionSecondary","Ge","unstable_flushAllWithoutAsserting","setImmediate","IsThisRendererActing","attemptContinuousHydration","attemptHydrationAtCurrentPriority","attemptSynchronousHydration","attemptUserBlockingHydration","batchedEventUpdates","batchedUpdates","createComponentSelector","createHasPsuedoClassSelector","createRoleSelector","createTestNameSelector","createTextSelector","deferredUpdates","discreteUpdates","findAllNodes","findBoundingRects","findHostInstance","findHostInstanceWithNoPortals","findHostInstanceWithWarning","flushControlled","flushDiscreteUpdates","flushPassiveEffects","focusWithin","getCurrentUpdateLanePriority","getFindAllNodesFailureDescription","getPublicRootInstance","observeVisibleRects","registerMutableSourceForHydration","runWithPriority","shouldSuspend","unbatchedUpdates","webpackPolyfill","deprecate","ContextConsumer","ContextProvider","Lazy","Portal","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","getModuleId","AsyncMode","ConcurrentMode","skipAttributesToProps","isWhitespace","replaceElement","hasReplace","_iterableToArrayLimit","PropertyInfoRecord","CAMELIZE","capitalize","_require","CAMELCASE","SAME","possibleStandardNamesOptimized","accumulator","standardName","BOOLEANISH_STRING","NUMERIC","POSITIVE_NUMERIC","RESERVED","STRING","accept","acceptCharset","accessKey","allowFullScreen","alt","autoCapitalize","autoComplete","autoCorrect","autoPlay","autoSave","cellPadding","cellSpacing","challenge","charSet","cite","class","classID","colSpan","contextMenu","controlsList","dateTime","defer","disablePictureInPicture","disableRemotePlayback","download","draggable","encType","enterKeyHint","formMethod","formAction","formEncType","formNoValidate","formTarget","frameBorder","hrefLang","httpEquiv","icon","inputMode","integrity","itemID","itemProp","itemRef","itemScope","itemType","keyParams","keyType","kind","lang","manifest","marginWidth","marginHeight","maxLength","mediaGroup","minLength","noModule","noValidate","optimum","playsInline","poster","profile","radioGroup","referrerPolicy","required","reversed","rowSpan","sandbox","scrolling","seamless","sizes","spellCheck","srcDoc","srcLang","srcSet","summary","useMap","wmode","about","accentHeight","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","baseFrequency","baselineShift","baseProfile","bbox","begin","calcMode","capHeight","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","datatype","decelerate","descent","diffuseConstant","divisor","dominantBaseline","dur","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","fillRule","filterRes","filterUnits","floodColor","focusable","fontFamily","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","inlist","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","numOctaves","operator","orient","orientation","overlinePosition","overlineThickness","paintOrder","panose1","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","resource","restart","rx","ry","security","shapeRendering","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","strokeLinecap","strokeLinejoin","suppressContentEditableWarning","suppressHydrationWarning","surfaceScale","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","typeof","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","unselectable","vAlphabetic","vectorEffect","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewBox","viewTarget","vMathematical","vocab","wordSpacing","writingMode","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","yChannelSelector","zoomAndPan","__importDefault","mod","style_to_object_1","utilities_1","camelCase","declaration","declarations","hasIterator","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","updatePosition","Position","whitespace","errorsList","msg","filename","silent","comments","comment","decl","decls","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","character","trimHyphen","skipCamelCase","DIRECTIVE_REGEX","HTMLDOMParser","domparser","PointMaterialImpl","PointMaterial","InputGroupText","InputGroup","hasValidation","Radio","Checkbox","menuRole","renderMenuOnMount","menuVariant","DropdownButton","scrollbarSize","recalc","scrollDiv","ModalDialog","contentClassName","centered","fullscreen","scrollable","dialogClass","fullScreenClass","ModalHeader","DivStyledAsH4","dialogAs","dialogClassName","Dialog","ariaDescribedby","ariaLabel","modalStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","getScrollbarSize","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","baseModalStyle","onMouseUp","onMouseDown","ModalBody","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","positionRef","parentMatrix","PointsInstances","parentRef","setRefs","_refs$i$current","_refs$event$index","_r3f$handlers","PointsBuffer","pointsRef","attr"],"mappings":"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GpUT,KCIM2B,GAAS,SAACvM,mBCCQwM,EACtBC,EACAzM,EACAxmN,qBAAkB2lN,IAEbuN,6BAAmB1M,UACfO,EAAiB,EAAG56L,OAAOq6L,QAK9B2M,EAAmB,kBAAaF,EAAqBzM,EAAKxmN,EAASiiN,oCAGzEkR,EAAiBC,WAAa,YAAAj3D,OAC5B62D,EAAqBC,EAAsBzM,OAAUxmN,KAAYm8J,KAGnEg3D,EAAiBxC,MAAQ,YAAAA,OACvBqC,EAAqBC,EAAsBzM,OACtCxmN,GACH2wN,MAAOryO,MAAMxD,UAAU8xG,OAAO5sF,EAAQ2wN,MAAOA,GAAO13O,OAAO0nJ,aAGxDwyF,CDzBuBH,CAAhBxM,CAAqC6M,GAAiB7M,IDJvD,CACb,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,UACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAGA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,WACA,SCnIU3sO,SAAQ,YAClBk5O,GAAOriJ,GAAcqiJ,GAAOriJ,OELT4iJ,sBAOP1M,EAAgB2E,QACrB3E,MAAQA,OACR2E,YAAcA,OACdE,SAAWL,EAAcxE,GA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I,GAAI,IAAK,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,KAElpCqtR,EAAO,IAAI9mS,MAAM,KACjB+mS,EAAQ,IAAI/mS,MAAM,KAGlBgnS,EAAO,SAAct5R,GACnBA,EAAQ,GAAKA,EAAQ,IAEvBA,GAAS,QAGXA,EAAQE,KAAK2B,MAAM7B,IAEP,MACVA,GAASA,GAAS,GAGpB,IAAK,IAAIvS,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5B,IAAIuX,EAGFA,EADM,EAAJvX,EACEse,EAAEte,GAAa,IAARuS,EAEP+L,EAAEte,GAAKuS,GAAS,EAAI,IAG1Bo5R,EAAK3rS,GAAK2rS,EAAK3rS,EAAI,KAAOuX,EAC1Bq0R,EAAM5rS,GAAK4rS,EAAM5rS,EAAI,KAAO0rS,EAAMn0R,EAAI,GACvC,CACF,EACDs0R,EAAK,GAQWp5R,KAAKyF,KAAK,GACZzF,KAAKyF,KAAK,GAiRdzF,KAAKC,GAqBf,SAASo5R,EAAUD,GACjB,IAAI1gP,EApBN,SAAuB0gP,GACrB,GAAoB,kBAATA,EACTA,EAAOp5R,KAAKyC,IAAI22R,QACX,GAAoB,kBAATA,EAAmB,CACnC,IAAI1sR,EAAS0sR,EACbA,EAAO,EAEP,IAAK,IAAI7rS,EAAI,EAAGA,EAAImf,EAAOjf,OAAQF,IACjC6rS,GAAQA,GAAQ7rS,EAAI,IAAMmf,EAAO88M,WAAWj8N,GAAK,KAAO,UAE3D,CAMD,OAJa,IAAT6rS,IACFA,EAAO,KAGFA,CACR,CAGaE,CAAcF,GAC1B,OAAO,WACL,IAAI9pS,EAAiB,MAARopD,EAAgB,WAE7B,OADAA,EAAQppD,EACDA,EAAS,UACjB,CACF,CAED,IAgBIiqS,EAAa,IAhBD,SAASj8I,EAAUx9I,GACjC,IAAI6kF,EAAQl1F,KAEZzB,EAAgByB,KAAM6tJ,GAEtB5qJ,EAAgBjD,KAAM,OAAQ,GAE9BiD,EAAgBjD,KAAM,QAAQ,SAAU2pS,GACtCz0M,EAAMy0M,KAAOA,EACbz0M,EAAMz1F,MAAQmqS,EAAUD,EACzB,IAED1mS,EAAgBjD,KAAM,QAAS4pS,EAAU5pS,KAAK2pS,OAE9C3pS,KAAK4xD,KAAKvhD,EACX,CACgB,CAAcE,KAAKK,UAKhCm5R,EAAgB,CAClBr9Q,OAAQ,EACR5V,OAAQ,CAAC,EAAG,EAAG,IAyBjB,SAASkzR,EAASpuR,EAAQqT,GAOxB,IANA,IAAIg7Q,EAAMlsS,UAAUC,OAAS,QAAsB0R,IAAjB3R,UAAU,GAAmBA,UAAU,GAAK+rS,EAE1EI,EAAyBtsS,EAAeA,EAAe,CAAC,EAAGmsS,GAAgB96Q,GAC3EvC,EAASw9Q,EAAuBx9Q,OAChC5V,EAASozR,EAAuBpzR,OAE3BhZ,EAAI,EAAGA,EAAI8d,EAAO5d,OAAQF,GAAK,EAAG,CACzC,IAAIkvB,EAAIzc,KAAKsB,IAAIo4R,EAAIxqS,QAAS,EAAI,GAC9B+R,EAAkB,EAAdy4R,EAAIxqS,QAAc,EACtBgS,EAAkB,EAAdw4R,EAAIxqS,QAAc,EACtBsjB,EAAkB,EAAdknR,EAAIxqS,QAAc,EACtB0qS,EAAM55R,KAAKyF,KAAKxE,EAAIA,EAAIC,EAAIA,EAAIsR,EAAIA,GACxCvR,EAAIwb,EAAIxb,EAAI24R,EACZ14R,EAAIub,EAAIvb,EAAI04R,EACZpnR,EAAIiK,EAAIjK,EAAIonR,EACZvuR,EAAO9d,GAAK0T,EAAIkb,EAAS5V,EAAO,GAChC8E,EAAO9d,EAAI,GAAK2T,EAAIib,EAAS5V,EAAO,GACpC8E,EAAO9d,EAAI,GAAKilB,EAAI2J,EAAS5V,EAAO,EACrC,CAED,OAAO8E,CACR,C,+BCpcY,IAAIzL,EAAErT,EAAQ,IAAiBuU,EAAE,MAAM+K,EAAE,MAAMvf,EAAQ8hS,SAAS,MAAM9hS,EAAQutS,WAAW,MAAMvtS,EAAQwtS,SAAS,MAAM,IAAIr2R,EAAE,MAAMoG,EAAE,MAAM1I,EAAE,MAAM7U,EAAQytS,SAAS,MAAM,IAAIt9Q,EAAE,MAAM3X,EAAE,MACpM,GAAG,oBAAoB9U,QAAQA,OAAOgqS,IAAI,CAAC,IAAIj1R,EAAE/U,OAAOgqS,IAAIl5R,EAAEiE,EAAE,iBAAiB8G,EAAE9G,EAAE,gBAAgBzY,EAAQ8hS,SAASrpR,EAAE,kBAAkBzY,EAAQutS,WAAW90R,EAAE,qBAAqBzY,EAAQwtS,SAAS/0R,EAAE,kBAAkBtB,EAAEsB,EAAE,kBAAkB8E,EAAE9E,EAAE,iBAAiB5D,EAAE4D,EAAE,qBAAqBzY,EAAQytS,SAASh1R,EAAE,kBAAkB0X,EAAE1X,EAAE,cAAcD,EAAEC,EAAE,aAAc,KAAI9D,EAAE,oBAAoBjR,QAAQA,OAAOC,SACtR,SAASuiB,EAAE9O,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAEpW,UAAUC,OAAOmW,IAAID,GAAG,WAAW4tQ,mBAAmB/jR,UAAUoW,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,gHAAiH,CACrb,IAAIinJ,EAAE,CAACy9E,UAAU,WAAW,OAAM,CAAG,EAAC4xD,mBAAmB,WAAY,EAACC,oBAAoB,WAAY,EAACC,gBAAgB,WAAY,GAAEpsL,EAAE,CAAC,EAAE,SAAS88C,EAAEnnJ,EAAEC,EAAEC,GAAGnU,KAAKpB,MAAMqV,EAAEjU,KAAKif,QAAQ/K,EAAElU,KAAKwzP,KAAKl1I,EAAEt+G,KAAK2qS,QAAQx2R,GAAGgnJ,CAAE,CACtN,SAASE,IAAK,CAAwB,SAASC,EAAErnJ,EAAEC,EAAEC,GAAGnU,KAAKpB,MAAMqV,EAAEjU,KAAKif,QAAQ/K,EAAElU,KAAKwzP,KAAKl1I,EAAEt+G,KAAK2qS,QAAQx2R,GAAGgnJ,CAAE,CADoGC,EAAEj8J,UAAU00O,iBAAiB,CAAC,EAAEz4E,EAAEj8J,UAAU6yD,SAAS,SAAS/9C,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMmB,MAAM2N,EAAE,KAAK/iB,KAAK2qS,QAAQD,gBAAgB1qS,KAAKiU,EAAEC,EAAE,WAAY,EAACknJ,EAAEj8J,UAAUm8N,YAAY,SAASrnN,GAAGjU,KAAK2qS,QAAQH,mBAAmBxqS,KAAKiU,EAAE,cAAe,EACleonJ,EAAEl8J,UAAUi8J,EAAEj8J,UAAsF,IAAIyiJ,EAAE0Z,EAAEn8J,UAAU,IAAIk8J,EAAEzZ,EAAEpiJ,YAAY87J,EAAEnrJ,EAAEyxI,EAAEwZ,EAAEj8J,WAAWyiJ,EAAEgpJ,sBAAqB,EAAG,IAAIttI,EAAE,CAAC9yD,QAAQ,MAAM+yD,EAAEpgK,OAAOgC,UAAUyC,eAAe47J,EAAE,CAACr/J,KAAI,EAAG2kJ,KAAI,EAAG+nJ,QAAO,EAAGC,UAAS,GAChS,SAASrtI,EAAExpJ,EAAEC,EAAEC,GAAG,IAAIuB,EAAE4D,EAAE,CAAC,EAAE+9D,EAAE,KAAK59D,EAAE,KAAK,GAAG,MAAMvF,EAAE,IAAIwB,UAAK,IAASxB,EAAE4uI,MAAMrpI,EAAEvF,EAAE4uI,UAAK,IAAS5uI,EAAE/V,MAAMk5E,EAAE,GAAGnjE,EAAE/V,KAAK+V,EAAEqpJ,EAAEz8J,KAAKoT,EAAEwB,KAAK8nJ,EAAE57J,eAAe8T,KAAK4D,EAAE5D,GAAGxB,EAAEwB,IAAI,IAAI8D,EAAEzb,UAAUC,OAAO,EAAE,GAAG,IAAIwb,EAAEF,EAAE0V,SAAS7a,OAAO,GAAG,EAAEqF,EAAE,CAAC,IAAI,IAAID,EAAE5W,MAAM6W,GAAGlI,EAAE,EAAEA,EAAEkI,EAAElI,IAAIiI,EAAEjI,GAAGvT,UAAUuT,EAAE,GAAGgI,EAAE0V,SAASzV,CAAE,IAAGtF,GAAGA,EAAE04I,aAAa,IAAIj3I,KAAK8D,EAAEvF,EAAE04I,kBAAe,IAASrzI,EAAE5D,KAAK4D,EAAE5D,GAAG8D,EAAE9D,IAAI,MAAM,CAACq1R,SAAS15R,EAAE7B,KAAKyE,EAAE9V,IAAIk5E,EAAEyrE,IAAIrpI,EAAE7a,MAAM0a,EAAE0xR,OAAO1tI,EAAE9yD,QAAS,CACjV,SAAS4yD,EAAEnpJ,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE82R,WAAW15R,CAAE,CAAmG,IAAI8rJ,EAAE,OAAO,SAAS3+C,EAAEvqG,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAE9V,IAA7K,SAAgB8V,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAE8wD,QAAQ,SAAQ,SAAS9wD,GAAG,OAAOC,EAAED,EAAG,GAAE,CAA8EqgH,CAAO,GAAGrgH,EAAE9V,KAAK+V,EAAEpR,SAAS,GAAI,CAChX,SAASo6J,EAAEjpJ,EAAEC,EAAEC,EAAEuB,EAAE4D,GAAG,IAAI+9D,SAASpjE,EAAK,cAAcojE,GAAG,YAAYA,IAAEpjE,EAAE,MAAK,IAAIwF,GAAE,EAAG,GAAG,OAAOxF,EAAEwF,GAAE,OAAQ,OAAO49D,GAAG,IAAK,SAAS,IAAK,SAAS59D,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOxF,EAAE82R,UAAU,KAAK15R,EAAE,KAAK+K,EAAE3C,GAAE,GAAI,GAAGA,EAAE,OAAWH,EAAEA,EAANG,EAAExF,GAASA,EAAE,KAAKyB,EAAE,IAAI8oG,EAAE/kG,EAAE,GAAG/D,EAAE/S,MAAMC,QAAQ0W,IAAInF,EAAE,GAAG,MAAMF,IAAIE,EAAEF,EAAE8wD,QAAQo4F,EAAE,OAAO,KAAKD,EAAE5jJ,EAAEpF,EAAEC,EAAE,IAAG,SAASF,GAAG,OAAOA,CAAE,KAAG,MAAMqF,IAAI8jJ,EAAE9jJ,KAAKA,EAD/W,SAAWrF,EAAEC,GAAG,MAAM,CAAC62R,SAAS15R,EAAE7B,KAAKyE,EAAEzE,KAAKrR,IAAI+V,EAAE4uI,IAAI7uI,EAAE6uI,IAAIlkJ,MAAMqV,EAAErV,MAAMosS,OAAO/2R,EAAE+2R,OAAQ,CACoR3tI,CAAE/jJ,EAAEnF,IAAImF,EAAEnb,KAAKsb,GAAGA,EAAEtb,MAAMmb,EAAEnb,IAAI,IAAI,GAAGmb,EAAEnb,KAAK4mE,QAAQo4F,EAAE,OAAO,KAAKlpJ,IAAIC,EAAExW,KAAK4b,IAAI,EAAyB,GAAvBG,EAAE,EAAE/D,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO/S,MAAMC,QAAQqR,GAAG,IAAI,IAAIuF,EACzf,EAAEA,EAAEvF,EAAEjW,OAAOwb,IAAI,CAAQ,IAAID,EAAE7D,EAAE8oG,EAAfnnC,EAAEpjE,EAAEuF,GAAeA,GAAGC,GAAGyjJ,EAAE7lF,EAAEnjE,EAAEC,EAAEoF,EAAED,EAAG,MAAK,GAAGC,EANhE,SAAWtF,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAEzC,GAAGyC,EAAEzC,IAAIyC,EAAE,eAA0CA,EAAE,IAAK,CAMvDxC,CAAEwC,GAAG,oBAAoBsF,EAAE,IAAItF,EAAEsF,EAAEzY,KAAKmT,GAAGuF,EAAE,IAAI69D,EAAEpjE,EAAElT,QAAQC,MAA6ByY,GAAGyjJ,EAA1B7lF,EAAEA,EAAE53E,MAA0ByU,EAAEC,EAAtBoF,EAAE7D,EAAE8oG,EAAEnnC,EAAE79D,KAAkBF,QAAQ,GAAG,WAAW+9D,EAAE,MAAMnjE,EAAE,GAAGD,EAAEmB,MAAM2N,EAAE,GAAG,oBAAoB7O,EAAE,qBAAqB/W,OAAOD,KAAK+W,GAAGlR,KAAK,MAAM,IAAImR,IAAI,OAAOuF,CAAE,UAASulG,EAAE/qG,EAAEC,EAAEC,GAAG,GAAG,MAAMF,EAAE,OAAOA,EAAE,IAAIyB,EAAE,GAAG4D,EAAE,EAAmD,OAAjD4jJ,EAAEjpJ,EAAEyB,EAAE,GAAG,IAAG,SAASzB,GAAG,OAAOC,EAAEpT,KAAKqT,EAAEF,EAAEqF,IAAK,IAAS5D,CAAE,CAC5Z,SAASunJ,EAAEhpJ,GAAG,IAAI,IAAIA,EAAEg3R,QAAQ,CAAC,IAAI/2R,EAAED,EAAEi3R,QAAQh3R,EAAEA,IAAID,EAAEg3R,QAAQ,EAAEh3R,EAAEi3R,QAAQh3R,EAAEA,EAAE46G,MAAK,SAAS56G,GAAG,IAAID,EAAEg3R,UAAU/2R,EAAEA,EAAElR,QAAQiR,EAAEg3R,QAAQ,EAAEh3R,EAAEi3R,QAAQh3R,EAAG,IAAC,SAASA,GAAG,IAAID,EAAEg3R,UAAUh3R,EAAEg3R,QAAQ,EAAEh3R,EAAEi3R,QAAQh3R,EAAG,GAAE,IAAG,IAAID,EAAEg3R,QAAQ,OAAOh3R,EAAEi3R,QAAQ,MAAMj3R,EAAEi3R,OAAS,KAAIluI,EAAE,CAACxyD,QAAQ,MAAM,SAASuyD,IAAI,IAAI9oJ,EAAE+oJ,EAAExyD,QAAQ,GAAG,OAAOv2F,EAAE,MAAMmB,MAAM2N,EAAE,MAAM,OAAO9O,CAAE,KAAIsqG,EAAE,CAAC4sL,uBAAuBnuI,EAAEouI,wBAAwB,CAAC/hH,WAAW,GAAGgiH,kBAAkB/tI,EAAEguI,qBAAqB,CAAC9gM,SAAQ,GAAIvlF,OAAO9U,GACjetT,EAAQqnO,SAAS,CAAC9+L,IAAI45E,EAAE9gH,QAAQ,SAAS+V,EAAEC,EAAEC,GAAG6qG,EAAE/qG,GAAE,WAAWC,EAAEvW,MAAMqC,KAAKjC,UAAW,GAACoW,EAAG,EAAC0R,MAAM,SAAS5R,GAAG,IAAIC,EAAE,EAAuB,OAArB8qG,EAAE/qG,GAAE,WAAWC,GAAI,IAASA,CAAE,EAACspB,QAAQ,SAASvpB,GAAG,OAAO+qG,EAAE/qG,GAAE,SAASA,GAAG,OAAOA,CAAE,KAAG,EAAG,EAACkwN,KAAK,SAASlwN,GAAG,IAAImpJ,EAAEnpJ,GAAG,MAAMmB,MAAM2N,EAAE,MAAM,OAAO9O,CAAE,GAAEpX,EAAQkvJ,UAAUqP,EAAEv+J,EAAQ0uS,cAAcjwI,EAAEz+J,EAAQ2uS,mDAAmDjtL,EAChX1hH,EAAQonO,aAAa,SAAShwN,EAAEC,EAAEC,GAAG,GAAG,OAAOF,QAAG,IAASA,EAAE,MAAMmB,MAAM2N,EAAE,IAAI9O,IAAI,IAAIyB,EAAEvF,EAAE,CAAC,EAAE8D,EAAErV,OAAO0a,EAAErF,EAAE9V,IAAIk5E,EAAEpjE,EAAE6uI,IAAIrpI,EAAExF,EAAE+2R,OAAO,GAAG,MAAM92R,EAAE,CAAoE,QAAnE,IAASA,EAAE4uI,MAAMzrE,EAAEnjE,EAAE4uI,IAAIrpI,EAAE6jJ,EAAE9yD,cAAS,IAASt2F,EAAE/V,MAAMmb,EAAE,GAAGpF,EAAE/V,KAAQ8V,EAAEzE,MAAMyE,EAAEzE,KAAKm9I,aAAa,IAAInzI,EAAEvF,EAAEzE,KAAKm9I,aAAa,IAAIpzI,KAAKrF,EAAEqpJ,EAAEz8J,KAAKoT,EAAEqF,KAAKikJ,EAAE57J,eAAe2X,KAAK7D,EAAE6D,QAAG,IAASrF,EAAEqF,SAAI,IAASC,EAAEA,EAAED,GAAGrF,EAAEqF,GAAI,KAAIA,EAAExb,UAAUC,OAAO,EAAE,GAAG,IAAIub,EAAE7D,EAAEsZ,SAAS7a,OAAO,GAAG,EAAEoF,EAAE,CAACC,EAAE7W,MAAM4W,GAAG,IAAI,IAAIjI,EAAE,EAAEA,EAAEiI,EAAEjI,IAAIkI,EAAElI,GAAGvT,UAAUuT,EAAE,GAAGoE,EAAEsZ,SAASxV,CAAE,OAAM,CAACuxR,SAAS15R,EAAE7B,KAAKyE,EAAEzE,KACxfrR,IAAImb,EAAEwpI,IAAIzrE,EAAEz4E,MAAM8W,EAAEs1R,OAAOvxR,EAAG,EAAC5c,EAAQg0K,cAAc,SAAS58J,EAAEC,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAAC82R,SAAS3wR,EAAEqxR,sBAAsBv3R,EAAEw3R,cAAcz3R,EAAE03R,eAAe13R,EAAE23R,aAAa,EAAEloS,SAAS,KAAKD,SAAS,OAAQC,SAAS,CAACqnS,SAAS/2R,EAAEggF,SAAS//E,GAAUA,EAAExQ,SAASwQ,CAAE,EAACpX,EAAQqnJ,cAAcuZ,EAAE5gK,EAAQgvS,cAAc,SAAS53R,GAAG,IAAIC,EAAEupJ,EAAEj8J,KAAK,KAAKyS,GAAY,OAATC,EAAE1E,KAAKyE,EAASC,CAAE,EAACrX,EAAQivS,UAAU,WAAW,MAAM,CAACthM,QAAQ,KAAM,EAAC3tG,EAAQ84O,WAAW,SAAS1hO,GAAG,MAAM,CAAC82R,SAASr5R,EAAEmlC,OAAO5iC,EAAG,EAACpX,EAAQkvS,eAAe3uI,EAC3evgK,EAAQmvS,KAAK,SAAS/3R,GAAG,MAAM,CAAC82R,SAAS11R,EAAE42R,SAAS,CAAChB,SAAS,EAAEC,QAAQj3R,GAAG64L,MAAM7vC,EAAG,EAACpgK,EAAQmrJ,KAAK,SAAS/zI,EAAEC,GAAG,MAAM,CAAC62R,SAAS/9Q,EAAExd,KAAKyE,EAAEwnK,aAAQ,IAASvnK,EAAE,KAAKA,EAAG,EAACrX,EAAQwvJ,YAAY,SAASp4I,EAAEC,GAAG,OAAO6oJ,IAAI1Q,YAAYp4I,EAAEC,EAAG,EAACrX,EAAQiH,WAAW,SAASmQ,EAAEC,GAAG,OAAO6oJ,IAAIj5J,WAAWmQ,EAAEC,EAAG,EAACrX,EAAQswR,cAAc,WAAY,EAACtwR,EAAQ8gO,UAAU,SAAS1pN,EAAEC,GAAG,OAAO6oJ,IAAI4gE,UAAU1pN,EAAEC,EAAG,EAACrX,EAAQ0gP,oBAAoB,SAAStpO,EAAEC,EAAEC,GAAG,OAAO4oJ,IAAIwgF,oBAAoBtpO,EAAEC,EAAEC,EAAG,EACjdtX,EAAQ41P,gBAAgB,SAASx+O,EAAEC,GAAG,OAAO6oJ,IAAI01F,gBAAgBx+O,EAAEC,EAAG,EAACrX,EAAQsgO,QAAQ,SAASlpN,EAAEC,GAAG,OAAO6oJ,IAAIogE,QAAQlpN,EAAEC,EAAG,EAACrX,EAAQ6iQ,WAAW,SAASzrP,EAAEC,EAAEC,GAAG,OAAO4oJ,IAAI2iG,WAAWzrP,EAAEC,EAAEC,EAAG,EAACtX,EAAQ2+N,OAAO,SAASvnN,GAAG,OAAO8oJ,IAAIy+D,OAAOvnN,EAAG,EAACpX,EAAQ0rO,SAAS,SAASt0N,GAAG,OAAO8oJ,IAAIwrE,SAASt0N,EAAG,EAACpX,EAAQijB,QAAQ,Q,+BCXxS,IAAIsuQ,EAAGtxR,EAAQ,GAASwU,EAAExU,EAAQ,IAAiBsd,EAAEtd,EAAQ,IAAa,SAAS2U,EAAEwC,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAEpW,UAAUC,OAAOmW,IAAID,GAAG,WAAW4tQ,mBAAmB/jR,UAAUoW,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,gHAAiH,KAAIk6Q,EAAG,MAAMh5Q,MAAM3D,EAAE,MAAM,IAAI48Q,EAAG,IAAI5hN,IAAIohN,EAAG,CAAC,EAAE,SAASC,EAAG75Q,EAAEC,GAAG65Q,EAAG95Q,EAAEC,GAAG65Q,EAAG95Q,EAAE,UAAUC,EAAG,CAC9e,SAAS65Q,EAAG95Q,EAAEC,GAAW,IAAR25Q,EAAG55Q,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAElW,OAAOiW,IAAIo6Q,EAAGtgQ,IAAI7Z,EAAED,GAAI,CAC7D,IAAIygK,IAAK,qBAAqBz4E,QAAQ,qBAAqBA,OAAOlgF,UAAU,qBAAqBkgF,OAAOlgF,SAASmoI,eAAe8pI,EAAG,8VAA8VC,EAAG9wR,OAAOgC,UAAUyC,eACrfssR,EAAG,CAAC,EAAEC,EAAG,CAAC,EAC8M,SAAS7vK,EAAErqG,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,EAAEC,GAAGxZ,KAAKksS,gBAAgB,IAAIh4R,GAAG,IAAIA,GAAG,IAAIA,EAAElU,KAAK8nR,cAAcxuQ,EAAEtZ,KAAKmsS,mBAAmBz2R,EAAE1V,KAAKosS,gBAAgBj4R,EAAEnU,KAAKqrH,aAAap3G,EAAEjU,KAAKwP,KAAK0E,EAAElU,KAAKqsS,YAAY9yR,EAAEvZ,KAAKssS,kBAAkB9yR,CAAE,KAAI6hJ,EAAE,CAAC,EACpb,uIAAuIh3F,MAAM,KAAKnmE,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe/V,SAAQ,SAAS+V,GAAG,IAAIC,EAAED,EAAE,GAAGonJ,EAAEnnJ,GAAG,IAAIoqG,EAAEpqG,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,EAAI,IAAE,CAAC,kBAAkB,YAAY,aAAa,SAAS/V,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE0J,cAAc,MAAK,GAAG,EAAI,IAC3e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBzf,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,8OAA8OowD,MAAM,KAAKnmE,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE0J,cAAc,MAAK,GAAG,EAAI,IACzb,CAAC,UAAU,WAAW,QAAQ,YAAYzf,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,UAAU,YAAY/V,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,OAAO,OAAO,OAAO,QAAQ/V,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,UAAU,SAAS/V,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE0J,cAAc,MAAK,GAAG,EAAI,IAAE,IAAI8wQ,EAAG,gBAAgB,SAAS8d,EAAGt4R,GAAG,OAAOA,EAAE,GAAGjD,aAAc,CAIzZ,SAAS2X,EAAG1U,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE2lJ,EAAEz5J,eAAesS,GAAGmnJ,EAAEnnJ,GAAG,MAAW,OAAOwB,EAAE,IAAIA,EAAElG,MAAK8J,IAAO,EAAEpF,EAAElW,SAAS,MAAMkW,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYD,EAAEC,EAAEC,EAAEmF,GAAG,GAAG,OAAOpF,GAAG,qBAAqBA,GADwE,SAAYD,EAAEC,EAAEC,EAAEmF,GAAG,GAAG,OAAOnF,GAAG,IAAIA,EAAE3E,KAAK,OAAM,EAAG,cAAc0E,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGoF,IAAc,OAAOnF,GAASA,EAAE+3R,gBAAmD,WAAnCj4R,EAAEA,EAAE0J,cAAczN,MAAM,EAAE,KAAsB,UAAU+D,GAAE,QAAQ,OAAM,EAAI,CACnUs6Q,CAAGt6Q,EAAEC,EAAEC,EAAEmF,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOnF,EAAE,OAAOA,EAAE3E,MAAM,KAAK,EAAE,OAAO0E,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO23B,MAAM33B,GAAG,KAAK,EAAE,OAAO23B,MAAM33B,IAAI,EAAEA,EAAE,OAAM,CAAG,CAOxDs6Q,CAAGt6Q,EAAEC,EAAEuB,EAAE4D,KAAKnF,EAAE,MAAMmF,GAAG,OAAO5D,EARpL,SAAYzB,GAAG,QAAGg6Q,EAAGntR,KAAKqtR,EAAGl6Q,KAAeg6Q,EAAGntR,KAAKotR,EAAGj6Q,KAAe+5Q,EAAGrvQ,KAAK1K,GAAUk6Q,EAAGl6Q,IAAG,GAAGi6Q,EAAGj6Q,IAAG,GAAS,GAAG,CAQmEq6Q,CAAGp6Q,KAAK,OAAOC,EAAEF,EAAEgqI,gBAAgB/pI,GAAGD,EAAEu3B,aAAat3B,EAAE,GAAGC,IAAIuB,EAAE02R,gBAAgBn4R,EAAEyB,EAAE21G,cAAc,OAAOl3G,EAAE,IAAIuB,EAAElG,MAAQ,GAAG2E,GAAGD,EAAEwB,EAAEoyQ,cAAcxuQ,EAAE5D,EAAEy2R,mBAAmB,OAAOh4R,EAAEF,EAAEgqI,gBAAgB/pI,IAAaC,EAAE,KAAXuB,EAAEA,EAAElG,OAAc,IAAIkG,IAAG,IAAKvB,EAAE,GAAG,GAAGA,EAAEmF,EAAErF,EAAEu4R,eAAelzR,EAAEpF,EAAEC,GAAGF,EAAEu3B,aAAat3B,EAAEC,KAAM,CAHle,0jCAA0jCkwD,MAAM,KAAKnmE,SAAQ,SAAS+V,GAAG,IAAIC,EAAED,EAAE8wD,QAAQ0pN,EACzmC8d,GAAIlxI,EAAEnnJ,GAAG,IAAIoqG,EAAEpqG,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,EAAI,IAAE,2EAA2EowD,MAAM,KAAKnmE,SAAQ,SAAS+V,GAAG,IAAIC,EAAED,EAAE8wD,QAAQ0pN,EAAG8d,GAAIlxI,EAAEnnJ,GAAG,IAAIoqG,EAAEpqG,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,EAAI,IAAE,CAAC,WAAW,WAAW,aAAa/V,SAAQ,SAAS+V,GAAG,IAAIC,EAAED,EAAE8wD,QAAQ0pN,EAAG8d,GAAIlxI,EAAEnnJ,GAAG,IAAIoqG,EAAEpqG,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,EAAI,IAAE,CAAC,WAAW,eAAe/V,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE0J,cAAc,MAAK,GAAG,EAAI,IACnd09I,EAAEoxI,UAAU,IAAInuL,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcpgH,SAAQ,SAAS+V,GAAGonJ,EAAEpnJ,GAAG,IAAIqqG,EAAErqG,EAAE,GAAE,EAAGA,EAAE0J,cAAc,MAAK,GAAG,EAAI,IAE7L,IAAI+uR,EAAGte,EAAGod,mDAAmDmB,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAChN,GAAG,oBAAoBptS,QAAQA,OAAOgqS,IAAI,CAAC,IAAIjvI,EAAE/6J,OAAOgqS,IAAIoC,EAAGrxI,EAAE,iBAAiBsxI,EAAGtxI,EAAE,gBAAgBuxI,EAAGvxI,EAAE,kBAAkBwxI,EAAGxxI,EAAE,qBAAqByxI,EAAGzxI,EAAE,kBAAkB0xI,EAAG1xI,EAAE,kBAAkB2xI,EAAG3xI,EAAE,iBAAiB4xI,EAAG5xI,EAAE,qBAAqB6xI,EAAG7xI,EAAE,kBAAkB8xI,EAAG9xI,EAAE,uBAAuB+xI,EAAG/xI,EAAE,cAAcgyI,EAAGhyI,EAAE,cAAciyI,EAAGjyI,EAAE,eAAeA,EAAE,eAAekyI,EAAGlyI,EAAE,mBAAmBmyI,EAAGnyI,EAAE,0BAA0BoyI,EAAGpyI,EAAE,mBAAmBqyI,EAAGryI,EAAE,sBAAuB,CAC/d,IAAmLsyI,EAA/KC,EAAG,oBAAoBttS,QAAQA,OAAOC,SAAS,SAASstS,EAAG75R,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE45R,GAAI55R,EAAE45R,IAAK55R,EAAE,eAA0CA,EAAE,IAAK,CAAO,SAAS85R,EAAG95R,GAAG,QAAG,IAAS25R,EAAG,IAAI,MAAMx4R,OAA4E,CAAnE,MAAMjB,GAAG,IAAID,EAAEC,EAAE4tK,MAAM39G,OAAOrB,MAAM,gBAAgB6qO,EAAG15R,GAAGA,EAAE,IAAI,EAAG,OAAM,KAAK05R,EAAG35R,CAAE,KAAI+5R,GAAG,EACjU,SAASC,EAAGh6R,EAAEC,GAAG,IAAID,GAAG+5R,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI75R,EAAEiB,MAAM84R,kBAAkB94R,MAAM84R,uBAAkB,EAAO,IAAI,GAAGh6R,EAAE,GAAGA,EAAE,WAAW,MAAMkB,OAAS,EAACjY,OAAOmB,eAAe4V,EAAE/U,UAAU,QAAQ,CAAC4V,IAAI,WAAW,MAAMK,OAAS,IAAG,kBAAkBnV,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUgU,EAAE,GAAqB,CAAjB,MAAMmjE,GAAG,IAAI/9D,EAAE+9D,CAAE,CAAAp3E,QAAQC,UAAU+T,EAAE,GAAGC,EAAG,KAAI,CAAC,IAAIA,EAAEpT,MAAoB,CAAb,MAAMu2E,GAAG/9D,EAAE+9D,CAAE,CAAApjE,EAAEnT,KAAKoT,EAAE/U,UAAW,KAAI,CAAC,IAAI,MAAMiW,OAAsB,CAAb,MAAMiiE,GAAG/9D,EAAE+9D,CAAE,CAAApjE,GAAI,CAC3J,CAD4J,MAAMojE,GAAG,GAAGA,GAAG/9D,GAAG,kBAAkB+9D,EAAE0qG,MAAM,CAAC,IAAI,IAAIrsK,EAAE2hE,EAAE0qG,MAAM19G,MAAM,MACnf9qD,EAAED,EAAEyoK,MAAM19G,MAAM,MAAM7qD,EAAE9D,EAAE1X,OAAO,EAAEyb,EAAEF,EAAEvb,OAAO,EAAE,GAAGwb,GAAG,GAAGC,GAAG/D,EAAE8D,KAAKD,EAAEE,IAAIA,IAAI,KAAK,GAAGD,GAAG,GAAGC,EAAED,IAAIC,IAAI,GAAG/D,EAAE8D,KAAKD,EAAEE,GAAG,CAAC,GAAG,IAAID,GAAG,IAAIC,EAAG,GAAG,GAAGD,IAAQ,IAAJC,GAAS/D,EAAE8D,KAAKD,EAAEE,GAAG,MAAM,KAAK/D,EAAE8D,GAAGurD,QAAQ,WAAW,cAAc,GAAGvrD,GAAG,GAAGC,GAAG,KAAM,CAAC,CAAC,CADnI,QAC2Iu0R,GAAG,EAAG54R,MAAM84R,kBAAkB/5R,CAAE,QAAOF,EAAEA,EAAEA,EAAEg4I,aAAah4I,EAAE6H,KAAK,IAAIiyR,EAAG95R,GAAG,EAAG,CAChU,SAASk6R,EAAGl6R,GAAG,OAAOA,EAAE42N,KAAK,KAAK,EAAE,OAAOkjE,EAAG95R,EAAEzE,MAAM,KAAK,GAAG,OAAOu+R,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO95R,EAAEg6R,EAAGh6R,EAAEzE,MAAK,GAAM,KAAK,GAAG,OAAOyE,EAAEg6R,EAAGh6R,EAAEzE,KAAKqnC,QAAO,GAAM,KAAK,GAAG,OAAO5iC,EAAEg6R,EAAGh6R,EAAEzE,KAAK4+R,SAAQ,GAAM,KAAK,EAAE,OAAOn6R,EAAEg6R,EAAGh6R,EAAEzE,MAAK,GAAM,QAAQ,MAAM,GAAI,CAClU,SAAS6+R,EAAGp6R,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEg4I,aAAah4I,EAAE6H,MAAM,KAAK,GAAG,kBAAkB7H,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK44R,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBn5R,EAAE,OAAOA,EAAE82R,UAAU,KAAKkC,EAAG,OAAOh5R,EAAEg4I,aAAa,WAAW,YAAY,KAAK+gJ,EAAG,OAAO/4R,EAAE+/E,SAASi4D,aAAa,WAAW,YAAY,KAAKihJ,EAAG,IAAIh5R,EAAED,EAAE4iC,OACnd,OAD0d3iC,EAAEA,EAAE+3I,aAAa/3I,EAAE4H,MAAM,GAC5e7H,EAAEg4I,cAAc,KAAK/3I,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAKm5R,EAAG,OAAOgB,EAAGp6R,EAAEzE,MAAM,KAAK+9R,EAAG,OAAOc,EAAGp6R,EAAEm6R,SAAS,KAAKd,EAAGp5R,EAAED,EAAEg4R,SAASh4R,EAAEA,EAAE64L,MAAM,IAAI,OAAOuhG,EAAGp6R,EAAEC,GAAc,CAAV,MAAMC,GAAI,EAAC,OAAO,IAAK,UAASm6R,EAAGr6R,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,GAAI,UAASs6R,EAAGt6R,GAAG,IAAIC,EAAED,EAAEzE,KAAK,OAAOyE,EAAEA,EAAEouH,WAAW,UAAUpuH,EAAE0J,gBAAgB,aAAazJ,GAAG,UAAUA,EAAG,CAE7Z,SAASs6R,EAAGv6R,GAAGA,EAAEw6R,gBAAgBx6R,EAAEw6R,cADvD,SAAYx6R,GAAG,IAAIC,EAAEq6R,EAAGt6R,GAAG,UAAU,QAAQE,EAAEhX,OAAOK,yBAAyByW,EAAEzU,YAAYL,UAAU+U,GAAGoF,EAAE,GAAGrF,EAAEC,GAAG,IAAID,EAAErS,eAAesS,IAAI,qBAAqBC,GAAG,oBAAoBA,EAAEtS,KAAK,oBAAoBsS,EAAEY,IAAI,CAAC,IAAIW,EAAEvB,EAAEtS,IAAI0X,EAAEpF,EAAEY,IAAiL,OAA7K5X,OAAOmB,eAAe2V,EAAEC,EAAE,CAACpV,cAAa,EAAG+C,IAAI,WAAW,OAAO6T,EAAE5U,KAAKd,KAAM,EAAC+U,IAAI,SAASd,GAAGqF,EAAE,GAAGrF,EAAEsF,EAAEzY,KAAKd,KAAKiU,EAAG,IAAG9W,OAAOmB,eAAe2V,EAAEC,EAAE,CAACzW,WAAW0W,EAAE1W,aAAmB,CAAC8iI,SAAS,WAAW,OAAOjnH,CAAE,EAAC4iD,SAAS,SAASjoD,GAAGqF,EAAE,GAAGrF,CAAE,EAACy6R,aAAa,WAAWz6R,EAAEw6R,cACxf,YAAYx6R,EAAEC,EAAG,EAAE,CAAC,CAAiDy6R,CAAG16R,GAAI,UAAS26R,EAAG36R,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEw6R,cAAc,IAAIv6R,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEqsH,WAAejnH,EAAE,GAAqD,OAAlDrF,IAAIqF,EAAEi1R,EAAGt6R,GAAGA,EAAE46R,QAAQ,OAAO,QAAQ56R,EAAExU,QAAOwU,EAAEqF,KAAanF,IAAGD,EAAEgoD,SAASjoD,IAAG,EAAO,UAAS66R,EAAG76R,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB8H,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO9H,EAAEopN,eAAeppN,EAAEg7G,IAA4B,CAAvB,MAAM/6G,GAAG,OAAOD,EAAEg7G,IAAK,CAAC,CACra,SAAS8/K,EAAG96R,EAAEC,GAAG,IAAIC,EAAED,EAAE26R,QAAQ,OAAOv9R,EAAE,CAAC,EAAE4C,EAAE,CAAC86R,oBAAe,EAAOh9I,kBAAa,EAAOvyJ,WAAM,EAAOovS,QAAQ,MAAM16R,EAAEA,EAAEF,EAAEg7R,cAAcC,gBAAiB,UAASC,GAAGl7R,EAAEC,GAAG,IAAIC,EAAE,MAAMD,EAAE89I,aAAa,GAAG99I,EAAE89I,aAAa14I,EAAE,MAAMpF,EAAE26R,QAAQ36R,EAAE26R,QAAQ36R,EAAE86R,eAAe76R,EAAEm6R,EAAG,MAAMp6R,EAAEzU,MAAMyU,EAAEzU,MAAM0U,GAAGF,EAAEg7R,cAAc,CAACC,eAAe51R,EAAE81R,aAAaj7R,EAAEk7R,WAAW,aAAan7R,EAAE1E,MAAM,UAAU0E,EAAE1E,KAAK,MAAM0E,EAAE26R,QAAQ,MAAM36R,EAAEzU,MAAO,UAAS6vS,GAAGr7R,EAAEC,GAAe,OAAZA,EAAEA,EAAE26R,UAAiBlmR,EAAG1U,EAAE,UAAUC,GAAE,EAAI,CAC/d,SAAS85B,GAAG/5B,EAAEC,GAAGo7R,GAAGr7R,EAAEC,GAAG,IAAIC,EAAEm6R,EAAGp6R,EAAEzU,OAAO6Z,EAAEpF,EAAE1E,KAAK,GAAG,MAAM2E,EAAK,WAAWmF,GAAM,IAAInF,GAAG,KAAKF,EAAExU,OAAOwU,EAAExU,OAAO0U,KAAEF,EAAExU,MAAM,GAAG0U,GAAOF,EAAExU,QAAQ,GAAG0U,IAAIF,EAAExU,MAAM,GAAG0U,QAAQ,GAAG,WAAWmF,GAAG,UAAUA,EAA8B,YAA3BrF,EAAEgqI,gBAAgB,SAAgB/pI,EAAEtS,eAAe,SAAS2tS,GAAGt7R,EAAEC,EAAE1E,KAAK2E,GAAGD,EAAEtS,eAAe,iBAAiB2tS,GAAGt7R,EAAEC,EAAE1E,KAAK8+R,EAAGp6R,EAAE89I,eAAe,MAAM99I,EAAE26R,SAAS,MAAM36R,EAAE86R,iBAAiB/6R,EAAE+6R,iBAAiB96R,EAAE86R,eAAgB,CACna,SAASjhQ,GAAG95B,EAAEC,EAAEC,GAAG,GAAGD,EAAEtS,eAAe,UAAUsS,EAAEtS,eAAe,gBAAgB,CAAC,IAAI0X,EAAEpF,EAAE1E,KAAK,KAAK,WAAW8J,GAAG,UAAUA,QAAG,IAASpF,EAAEzU,OAAO,OAAOyU,EAAEzU,OAAO,OAAOyU,EAAE,GAAGD,EAAEg7R,cAAcG,aAAaj7R,GAAGD,IAAID,EAAExU,QAAQwU,EAAExU,MAAMyU,GAAGD,EAAE+9I,aAAa99I,CAAE,CAAS,MAATC,EAAEF,EAAE6H,QAAc7H,EAAE6H,KAAK,IAAI7H,EAAE+6R,iBAAiB/6R,EAAEg7R,cAAcC,eAAe,KAAK/6R,IAAIF,EAAE6H,KAAK3H,EAAG,CAC1V,SAASo7R,GAAGt7R,EAAEC,EAAEC,GAAM,WAAWD,GAAG46R,EAAG76R,EAAEmpN,iBAAiBnpN,IAAE,MAAME,EAAEF,EAAE+9I,aAAa,GAAG/9I,EAAEg7R,cAAcG,aAAan7R,EAAE+9I,eAAe,GAAG79I,IAAIF,EAAE+9I,aAAa,GAAG79I,GAAG,CAAqF,SAASq7R,GAAGv7R,EAAEC,GAA6D,OAA1DD,EAAE3C,EAAE,CAAC0d,cAAS,GAAQ9a,IAAMA,EAAlI,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApDk6Q,EAAGlqD,SAAShmO,QAAQ+V,GAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,EAAG,IAASC,CAAE,CAA+Cu7R,CAAGv7R,EAAE8a,aAAU/a,EAAE+a,SAAS9a,GAASD,CAAE,CACzU,SAAS0gK,GAAG1gK,EAAEC,EAAEC,EAAEmF,GAAe,GAAZrF,EAAEA,EAAEoQ,QAAWnQ,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIwB,EAAE,EAAEA,EAAEvB,EAAEnW,OAAO0X,IAAIxB,EAAE,IAAIC,EAAEuB,KAAI,EAAG,IAAIvB,EAAE,EAAEA,EAAEF,EAAEjW,OAAOmW,IAAIuB,EAAExB,EAAEtS,eAAe,IAAIqS,EAAEE,GAAG1U,OAAOwU,EAAEE,GAAGu7R,WAAWh6R,IAAIzB,EAAEE,GAAGu7R,SAASh6R,GAAGA,GAAG4D,IAAIrF,EAAEE,GAAGw7R,iBAAgB,EAAI,KAAI,CAAmB,IAAlBx7R,EAAE,GAAGm6R,EAAGn6R,GAAGD,EAAE,KAASwB,EAAE,EAAEA,EAAEzB,EAAEjW,OAAO0X,IAAI,CAAC,GAAGzB,EAAEyB,GAAGjW,QAAQ0U,EAAiD,OAA9CF,EAAEyB,GAAGg6R,UAAS,OAAGp2R,IAAIrF,EAAEyB,GAAGi6R,iBAAgB,IAAW,OAAOz7R,GAAGD,EAAEyB,GAAG0yK,WAAWl0K,EAAED,EAAEyB,GAAI,QAAOxB,IAAIA,EAAEw7R,UAAS,EAAI,CAAC,CACzY,SAASE,GAAG37R,EAAEC,GAAG,GAAG,MAAMA,EAAEmkO,wBAAwB,MAAMjjO,MAAM3D,EAAE,KAAK,OAAOH,EAAE,CAAC,EAAE4C,EAAE,CAACzU,WAAM,EAAOuyJ,kBAAa,EAAOhjI,SAAS,GAAG/a,EAAEg7R,cAAcG,cAAe,UAASS,GAAG57R,EAAEC,GAAG,IAAIC,EAAED,EAAEzU,MAAM,GAAG,MAAM0U,EAAE,CAA+B,GAA9BA,EAAED,EAAE8a,SAAS9a,EAAEA,EAAE89I,aAAgB,MAAM79I,EAAE,CAAC,GAAG,MAAMD,EAAE,MAAMkB,MAAM3D,EAAE,KAAK,GAAG9O,MAAMC,QAAQuR,GAAG,CAAC,KAAK,GAAGA,EAAEnW,QAAQ,MAAMoX,MAAM3D,EAAE,KAAK0C,EAAEA,EAAE,EAAG,CAAAD,EAAEC,CAAE,OAAMD,IAAIA,EAAE,IAAIC,EAAED,CAAE,CAAAD,EAAEg7R,cAAc,CAACG,aAAad,EAAGn6R,GAAI,CACnZ,SAAS4qF,GAAG9qF,EAAEC,GAAG,IAAIC,EAAEm6R,EAAGp6R,EAAEzU,OAAO6Z,EAAEg1R,EAAGp6R,EAAE89I,cAAc,MAAM79I,KAAIA,EAAE,GAAGA,KAAMF,EAAExU,QAAQwU,EAAExU,MAAM0U,GAAG,MAAMD,EAAE89I,cAAc/9I,EAAE+9I,eAAe79I,IAAIF,EAAE+9I,aAAa79I,IAAI,MAAMmF,IAAIrF,EAAE+9I,aAAa,GAAG14I,EAAG,UAASw2R,GAAG77R,GAAG,IAAIC,EAAED,EAAEs4N,YAAYr4N,IAAID,EAAEg7R,cAAcG,cAAc,KAAKl7R,GAAG,OAAOA,IAAID,EAAExU,MAAMyU,EAAG,KAAI67R,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAG/7R,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAAgC,UAASg8R,GAAGh8R,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAE+7R,GAAG97R,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,CAAE,CAC7U,IAAIi8R,GAAej8R,GAAZk8R,IAAYl8R,GAAsJ,SAASA,EAAEC,GAAG,GAAGD,EAAEm8R,eAAeL,IAAQ,cAAc97R,EAAEA,EAAE49Q,UAAU39Q,MAAM,CAA2F,KAA1Fg8R,GAAGA,IAAIn0R,SAASmoI,cAAc,QAAU2tI,UAAU,QAAQ39Q,EAAEsoP,UAAU15P,WAAW,SAAaoR,EAAEg8R,GAAGG,WAAWp8R,EAAEo8R,YAAYp8R,EAAE+5N,YAAY/5N,EAAEo8R,YAAY,KAAKn8R,EAAEm8R,YAAYp8R,EAAEq5N,YAAYp5N,EAAEm8R,WAAY,CAAC,EAAla,qBAAqBC,OAAOA,MAAMC,wBAAwB,SAASr8R,EAAEC,EAAEmF,EAAE5D,GAAG46R,MAAMC,yBAAwB,WAAW,OAAOt8R,GAAEC,EAAEC,EAAO,GAAE,EAACF,IACtK,SAASu8R,GAAGv8R,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEF,EAAEo8R,WAAW,GAAGl8R,GAAGA,IAAIF,EAAEw8R,WAAW,IAAIt8R,EAAE44N,SAAwB,YAAd54N,EAAEu+Q,UAAUx+Q,EAAU,CAAAD,EAAEs4N,YAAYr4N,CAAE,CACvH,IAAIkU,GAAG,CAACumQ,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGihB,UAAS,EAAGhhB,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGK,YAAW,EAAGqgB,WAAU,EAAGhnI,YAAW,EAAG7nI,SAAQ,EAAG1tB,OAAM,EAAGm8Q,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGj8O,MAAK,EAAGm8O,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAG7iH,aAAY,GAAIuiI,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG58R,EAAEC,EAAEC,GAAG,OAAO,MAAMD,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGC,GAAG,kBAAkBD,GAAG,IAAIA,GAAGkU,GAAGxmB,eAAeqS,IAAImU,GAAGnU,IAAI,GAAGC,GAAGkwD,OAAOlwD,EAAE,IAAK,CACna,SAAS48R,GAAG78R,EAAEC,GAAa,IAAI,IAAIC,KAAlBF,EAAEA,EAAE8I,MAAmB7I,EAAE,GAAGA,EAAEtS,eAAeuS,GAAG,CAAC,IAAImF,EAAE,IAAInF,EAAE/R,QAAQ,MAAMsT,EAAEm7R,GAAG18R,EAAED,EAAEC,GAAGmF,GAAG,UAAUnF,IAAIA,EAAE,YAAYmF,EAAErF,EAAEmnK,YAAYjnK,EAAEuB,GAAGzB,EAAEE,GAAGuB,CAAE,CAAC,CADZvY,OAAOD,KAAKkrB,IAAIlqB,SAAQ,SAAS+V,GAAG28R,GAAG1yS,SAAQ,SAASgW,GAAGA,EAAEA,EAAED,EAAEwJ,OAAO,GAAGzM,cAAciD,EAAEowH,UAAU,GAAGj8G,GAAGlU,GAAGkU,GAAGnU,EAAG,GAAE,IAC1G,IAAI88R,GAAGz/R,EAAE,CAAC0/R,UAAS,GAAI,CAACn+L,MAAK,EAAG9wG,MAAK,EAAGkvS,IAAG,EAAGv5O,KAAI,EAAGw5O,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAG3pI,OAAM,EAAG4pI,QAAO,EAAGC,MAAK,EAAGvxR,MAAK,EAAG+5N,OAAM,EAAG77O,QAAO,EAAG0kH,OAAM,EAAG4uL,KAAI,IAClT,SAAS1wQ,GAAG5sB,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG68R,GAAG98R,KAAK,MAAMC,EAAE8a,UAAU,MAAM9a,EAAEmkO,yBAAyB,MAAMjjO,MAAM3D,EAAE,IAAIwC,IAAI,GAAG,MAAMC,EAAEmkO,wBAAwB,CAAC,GAAG,MAAMnkO,EAAE8a,SAAS,MAAM5Z,MAAM3D,EAAE,KAAK,GAAK,kBAAkByC,EAAEmkO,2BAAyB,WAAWnkO,EAAEmkO,yBAAyB,MAAMjjO,MAAM3D,EAAE,IAAM,IAAG,MAAMyC,EAAE6I,OAAO,kBAAkB7I,EAAE6I,MAAM,MAAM3H,MAAM3D,EAAE,IAAM,CAAC,CACnW,SAAS+/R,GAAGv9R,EAAEC,GAAG,IAAI,IAAID,EAAE7R,QAAQ,KAAK,MAAM,kBAAkB8R,EAAEwtO,GAAG,OAAOztO,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAI,UAASw9R,GAAGx9R,GAA6F,OAA1FA,EAAEA,EAAEpW,QAAQoW,EAAEy9R,YAAYz1M,QAAS01M,0BAA0B19R,EAAEA,EAAE09R,yBAAgC,IAAI19R,EAAE84N,SAAS94N,EAAEwiK,WAAWxiK,CAAE,KAAI29R,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxb,SAASC,GAAG99R,GAAG,GAAGA,EAAE+9R,GAAG/9R,GAAG,CAAC,GAAG,oBAAoB29R,GAAG,MAAMx8R,MAAM3D,EAAE,MAAM,IAAIyC,EAAED,EAAEg5O,UAAU/4O,IAAIA,EAAE+9R,GAAG/9R,GAAG09R,GAAG39R,EAAEg5O,UAAUh5O,EAAEzE,KAAK0E,GAAI,CAAC,UAASg+R,GAAGj+R,GAAG49R,GAAGC,GAAGA,GAAGp0S,KAAKuW,GAAG69R,GAAG,CAAC79R,GAAG49R,GAAG59R,CAAE,UAASk+R,KAAK,GAAGN,GAAG,CAAC,IAAI59R,EAAE49R,GAAG39R,EAAE49R,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG99R,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAElW,OAAOiW,IAAI89R,GAAG79R,EAAED,GAAI,CAAC,UAASm+R,GAAGn+R,EAAEC,GAAG,OAAOD,EAAEC,EAAG,UAASm+R,GAAGp+R,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,OAAOzB,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAG,UAAS48R,KAAM,KAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAQ,OAAOb,IAAI,OAAOC,KAAGQ,KAAKH,KAAK,CAEna,SAASQ,GAAG1+R,EAAEC,GAAG,IAAIC,EAAEF,EAAEg5O,UAAU,GAAG,OAAO94O,EAAE,OAAO,KAAK,IAAImF,EAAE24R,GAAG99R,GAAG,GAAG,OAAOmF,EAAE,OAAO,KAAKnF,EAAEmF,EAAEpF,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBoF,GAAGA,EAAE8uK,YAAqB9uK,IAAI,YAAbrF,EAAEA,EAAEzE,OAAuB,UAAUyE,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGqF,EAAE,MAAMrF,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGE,GAAG,oBACleA,EAAE,MAAMiB,MAAM3D,EAAE,IAAIyC,SAASC,IAAI,OAAOA,CAAE,KAAIy+R,IAAG,EAAG,GAAGl+H,EAAG,IAAI,IAAIm+H,GAAG,CAAC,EAAE11S,OAAOmB,eAAeu0S,GAAG,UAAU,CAAChxS,IAAI,WAAW+wS,IAAG,CAAG,IAAG32M,OAAOrpC,iBAAiB,OAAOigP,GAAGA,IAAI52M,OAAOxpC,oBAAoB,OAAOogP,GAAGA,GAAmB,CAAf,MAAM5+R,IAAG2+R,IAAG,CAAG,UAASE,GAAG7+R,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,EAAEC,EAAEC,EAAE49D,GAAG,IAAIlnE,EAAExN,MAAMxD,UAAU+Q,MAAMpP,KAAK/C,UAAU,GAAG,IAAImW,EAAEvW,MAAMwW,EAAEhE,EAA4B,CAAzB,MAAMkB,GAAGrR,KAAKssH,QAAQj7G,EAAG,CAAC,KAAI0hS,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAAC7mL,QAAQ,SAASr4G,GAAG8+R,IAAG,EAAGC,GAAG/+R,CAAE,GAAE,SAASm/R,GAAGn/R,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,EAAEC,EAAEC,EAAE49D,GAAG07N,IAAG,EAAGC,GAAG,KAAKF,GAAGn1S,MAAMw1S,GAAGp1S,UAAW,CAClW,SAASs1S,GAAGp/R,GAAG,IAAIC,EAAED,EAAEE,EAAEF,EAAE,GAAGA,EAAE67O,UAAU,KAAK57O,EAAE84O,QAAQ94O,EAAEA,EAAE84O,WAAW,CAAC/4O,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAASsoP,SAAcpoP,EAAED,EAAE84O,QAAQ/4O,EAAEC,EAAE84O,aAAa/4O,EAAG,QAAO,IAAIC,EAAE22N,IAAI12N,EAAE,IAAK,UAASm/R,GAAGr/R,GAAG,GAAG,KAAKA,EAAE42N,IAAI,CAAC,IAAI32N,EAAED,EAAEs/R,cAAsE,GAAxD,OAAOr/R,IAAkB,QAAdD,EAAEA,EAAE67O,aAAqB57O,EAAED,EAAEs/R,gBAAmB,OAAOr/R,EAAE,OAAOA,EAAEs/R,UAAW,QAAO,IAAK,UAASz9Q,GAAG9hB,GAAG,GAAGo/R,GAAGp/R,KAAKA,EAAE,MAAMmB,MAAM3D,EAAE,KAAO,CAE3S,SAASgiS,GAAGx/R,GAAW,GAARA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAE67O,UAAU,IAAI57O,EAAE,CAAS,GAAG,QAAXA,EAAEm/R,GAAGp/R,IAAe,MAAMmB,MAAM3D,EAAE,MAAM,OAAOyC,IAAID,EAAE,KAAKA,CAAE,KAAI,IAAIE,EAAEF,EAAEqF,EAAEpF,IAAI,CAAC,IAAIwB,EAAEvB,EAAE64O,OAAO,GAAG,OAAOt3O,EAAE,MAAM,IAAI6D,EAAE7D,EAAEo6O,UAAU,GAAG,OAAOv2O,EAAE,CAAY,GAAG,QAAdD,EAAE5D,EAAEs3O,QAAmB,CAAC74O,EAAEmF,EAAE,QAAS,MAAM,IAAG5D,EAAEqpB,QAAQxlB,EAAEwlB,MAAM,CAAC,IAAIxlB,EAAE7D,EAAEqpB,MAAMxlB,GAAG,CAAC,GAAGA,IAAIpF,EAAE,OAAO4hB,GAAGrgB,GAAGzB,EAAE,GAAGsF,IAAID,EAAE,OAAOyc,GAAGrgB,GAAGxB,EAAEqF,EAAEA,EAAEo0O,OAAQ,OAAMv4O,MAAM3D,EAAE,KAAO,IAAG0C,EAAE64O,SAAS1zO,EAAE0zO,OAAO74O,EAAEuB,EAAE4D,EAAEC,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGC,EAAE/D,EAAEqpB,MAAMtlB,GAAG,CAAC,GAAGA,IAAItF,EAAE,CAACqF,GAAE,EAAGrF,EAAEuB,EAAE4D,EAAEC,EAAE,KAAM,IAAGE,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAE5D,EAAEvB,EAAEoF,EAAE,KAAM,CAAAE,EAAEA,EAAEk0O,OAAQ,KAAIn0O,EAAE,CAAC,IAAIC,EAAEF,EAAEwlB,MAAMtlB,GAAG,CAAC,GAAGA,IAC5ftF,EAAE,CAACqF,GAAE,EAAGrF,EAAEoF,EAAED,EAAE5D,EAAE,KAAM,IAAG+D,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAEC,EAAEpF,EAAEuB,EAAE,KAAM,CAAA+D,EAAEA,EAAEk0O,OAAQ,KAAIn0O,EAAE,MAAMpE,MAAM3D,EAAE,KAAO,CAAC,IAAG0C,EAAE27O,YAAYx2O,EAAE,MAAMlE,MAAM3D,EAAE,KAAO,IAAG,IAAI0C,EAAE02N,IAAI,MAAMz1N,MAAM3D,EAAE,MAAM,OAAO0C,EAAE84O,UAAUziJ,UAAUr2F,EAAEF,EAAEC,CAAE,CAAiB+hB,CAAGhiB,IAAOA,EAAE,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAE22N,KAAK,IAAI32N,EAAE22N,IAAI,OAAO32N,EAAE,GAAGA,EAAE6qB,MAAM7qB,EAAE6qB,MAAMiuN,OAAO94O,EAAEA,EAAEA,EAAE6qB,UAAU,CAAC,GAAG7qB,IAAID,EAAE,MAAM,MAAMC,EAAEy5O,SAAS,CAAC,IAAIz5O,EAAE84O,QAAQ94O,EAAE84O,SAAS/4O,EAAE,OAAO,KAAKC,EAAEA,EAAE84O,MAAO,CAAA94O,EAAEy5O,QAAQX,OAAO94O,EAAE84O,OAAO94O,EAAEA,EAAEy5O,OAAQ,CAAC,QAAO,IAAK,CACjd,SAAS+lD,GAAGz/R,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAE67O,UAAU,OAAO57O,GAAG,CAAC,GAAGA,IAAID,GAAGC,IAAIC,EAAE,OAAM,EAAGD,EAAEA,EAAE84O,MAAO,QAAM,CAAG,KAAI2mD,GAAGC,GAAGroI,GAAGsoI,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIloO,IAAImoO,GAAG,IAAInoO,IAAIooO,GAAG,GAAGC,GAAG,6PAA6PjwO,MAAM,KACrb,SAASkwO,GAAGtgS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,MAAM,CAAC8+R,UAAUvgS,EAAEwgS,aAAavgS,EAAEwgS,iBAAmB,GAAFvgS,EAAKyxO,YAAYlwO,EAAEi/R,iBAAiB,CAACr7R,GAAI,UAASs7R,GAAG3gS,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAW+/R,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGh5P,OAAOjnC,EAAEiuO,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBiyD,GAAGj5P,OAAOjnC,EAAEiuO,WAAY,CACva,SAAS0yD,GAAG5gS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,OAAG,OAAOtF,GAAGA,EAAE2xO,cAAcrsO,GAAStF,EAAEsgS,GAAGrgS,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,OAAOrF,IAAY,QAARA,EAAE89R,GAAG99R,KAAa0/R,GAAG1/R,IAAID,IAAEA,EAAEygS,kBAAkBp7R,EAAEpF,EAAED,EAAE0gS,iBAAiB,OAAOj/R,IAAI,IAAIxB,EAAE9R,QAAQsT,IAAIxB,EAAExW,KAAKgY,GAAUzB,EAAE,CAEhN,SAASwsB,GAAGxsB,GAAG,IAAIC,EAAE4gS,GAAG7gS,EAAEpW,QAAQ,GAAG,OAAOqW,EAAE,CAAC,IAAIC,EAAEk/R,GAAGn/R,GAAG,GAAG,OAAOC,EAAE,GAAW,MAARD,EAAEC,EAAE02N,MAAY,GAAW,QAAR32N,EAAEo/R,GAAGn/R,IAAmH,OAAtGF,EAAEugS,UAAUtgS,OAAE2/R,GAAG5/R,EAAE8gS,cAAa,WAAW36R,EAAEi0O,yBAAyBp6O,EAAEk0O,UAAS,WAAW58E,GAAGp3J,EAAG,GAAE,SAAe,GAAG,IAAID,GAAGC,EAAE84O,UAAU+nD,QAA8D,YAArD/gS,EAAEugS,UAAU,IAAIrgS,EAAE02N,IAAI12N,EAAE84O,UAAUC,cAAc,KAAa,CAAAj5O,EAAEugS,UAAU,IAAK,CAC/U,SAASS,GAAGhhS,GAAG,GAAG,OAAOA,EAAEugS,UAAU,OAAM,EAAG,IAAI,IAAItgS,EAAED,EAAE0gS,iBAAiB,EAAEzgS,EAAElW,QAAQ,CAAC,IAAImW,EAAE+gS,GAAGjhS,EAAEwgS,aAAaxgS,EAAEygS,iBAAiBxgS,EAAE,GAAGD,EAAE2xO,aAAa,GAAG,OAAOzxO,EAAE,OAAe,QAARD,EAAE89R,GAAG79R,KAAay/R,GAAG1/R,GAAGD,EAAEugS,UAAUrgS,GAAE,EAAGD,EAAEojF,OAAQ,QAAM,CAAG,UAAS69M,GAAGlhS,EAAEC,EAAEC,GAAG8gS,GAAGhhS,IAAIE,EAAEgnC,OAAOjnC,EAAG,CAC5Q,SAASkhS,KAAK,IAAItB,IAAG,EAAG,EAAEC,GAAG/1S,QAAQ,CAAC,IAAIiW,EAAE8/R,GAAG,GAAG,GAAG,OAAO9/R,EAAEugS,UAAU,CAAmB,QAAlBvgS,EAAE+9R,GAAG/9R,EAAEugS,aAAqBb,GAAG1/R,GAAG,KAAM,KAAI,IAAIC,EAAED,EAAE0gS,iBAAiB,EAAEzgS,EAAElW,QAAQ,CAAC,IAAImW,EAAE+gS,GAAGjhS,EAAEwgS,aAAaxgS,EAAEygS,iBAAiBxgS,EAAE,GAAGD,EAAE2xO,aAAa,GAAG,OAAOzxO,EAAE,CAACF,EAAEugS,UAAUrgS,EAAE,KAAM,CAAAD,EAAEojF,OAAQ,QAAOrjF,EAAEugS,WAAWT,GAAGz8M,OAAQ,QAAO08M,IAAIiB,GAAGjB,MAAMA,GAAG,MAAM,OAAOC,IAAIgB,GAAGhB,MAAMA,GAAG,MAAM,OAAOC,IAAIe,GAAGf,MAAMA,GAAG,MAAMC,GAAGj2S,QAAQi3S,IAAIf,GAAGl2S,QAAQi3S,GAAI,CACzZ,SAASE,GAAGphS,EAAEC,GAAGD,EAAEugS,YAAYtgS,IAAID,EAAEugS,UAAU,KAAKV,KAAKA,IAAG,EAAG15R,EAAEk7R,0BAA0Bl7R,EAAEm7R,wBAAwBH,KAAM,CAC3H,SAASI,GAAGvhS,GAAG,SAASC,EAAEA,GAAG,OAAOmhS,GAAGnhS,EAAED,EAAG,IAAG,EAAE8/R,GAAG/1S,OAAO,CAACq3S,GAAGtB,GAAG,GAAG9/R,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAE4/R,GAAG/1S,OAAOmW,IAAI,CAAC,IAAImF,EAAEy6R,GAAG5/R,GAAGmF,EAAEk7R,YAAYvgS,IAAIqF,EAAEk7R,UAAU,KAAM,CAAC,CAAwF,IAAxF,OAAOR,IAAIqB,GAAGrB,GAAG//R,GAAG,OAAOggS,IAAIoB,GAAGpB,GAAGhgS,GAAG,OAAOigS,IAAImB,GAAGnB,GAAGjgS,GAAGkgS,GAAGj2S,QAAQgW,GAAGkgS,GAAGl2S,QAAQgW,GAAOC,EAAE,EAAEA,EAAEkgS,GAAGr2S,OAAOmW,KAAImF,EAAE+6R,GAAGlgS,IAAKqgS,YAAYvgS,IAAIqF,EAAEk7R,UAAU,MAAM,KAAK,EAAEH,GAAGr2S,QAAiB,QAARmW,EAAEkgS,GAAG,IAAYG,WAAY/zQ,GAAGtsB,GAAG,OAAOA,EAAEqgS,WAAWH,GAAG/8M,OAAQ,CACvY,SAASm+M,GAAGxhS,EAAEC,GAAG,IAAIC,EAAE,CAAC,EAAiF,OAA/EA,EAAEF,EAAE0J,eAAezJ,EAAEyJ,cAAcxJ,EAAE,SAASF,GAAG,SAASC,EAAEC,EAAE,MAAMF,GAAG,MAAMC,EAASC,CAAE,KAAIuhS,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGhiS,GAAG,GAAG8hS,GAAG9hS,GAAG,OAAO8hS,GAAG9hS,GAAG,IAAIyhS,GAAGzhS,GAAG,OAAOA,EAAE,IAAYE,EAARD,EAAEwhS,GAAGzhS,GAAK,IAAIE,KAAKD,EAAE,GAAGA,EAAEtS,eAAeuS,IAAIA,KAAK6hS,GAAG,OAAOD,GAAG9hS,GAAGC,EAAEC,GAAG,OAAOF,CAAE,CAAhYygK,IAAKshI,GAAGj6R,SAASmoI,cAAc,OAAOnnI,MAAM,mBAAmBk/E,gBAAgBy5M,GAAGC,aAAaj3Q,iBAAiBg3Q,GAAGE,mBAAmBl3Q,iBAAiBg3Q,GAAGG,eAAen3Q,WAAW,oBAAoBu9D,eAAey5M,GAAGI,cAAczsH,YACxO,IAAI6sH,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAIrqO,IAAIsqO,GAAG,IAAItqO,IAAIuqO,GAAG,CAAC,QAAQ,QAAQN,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAC/e,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASI,GAAGxiS,EAAEC,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEjW,OAAOmW,GAAG,EAAE,CAAC,IAAImF,EAAErF,EAAEE,GAAGuB,EAAEzB,EAAEE,EAAE,GAAGuB,EAAE,MAAMA,EAAE,GAAG1E,cAAc0E,EAAExF,MAAM,IAAIqmS,GAAGxhS,IAAIuE,EAAEpF,GAAGoiS,GAAGvhS,IAAIuE,EAAE5D,GAAGo4Q,EAAGp4Q,EAAE,CAAC4D,GAAI,CAAC,EAAsBo9R,EAAft8R,EAAEo0O,gBAAkB,IAAI5sG,GAAE,EAC/X,SAAS+0J,GAAG1iS,GAAG,GAAG,KAAK,EAAEA,GAAG,OAAO2tI,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE3tI,GAAG,OAAO2tI,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE3tI,GAAG,OAAO2tI,GAAE,GAAG,EAAE,IAAI1tI,EAAE,GAAGD,EAAE,OAAG,IAAIC,GAAS0tI,GAAE,GAAG1tI,GAAK,KAAO,GAAFD,IAAa2tI,GAAE,GAAG,IAAc,KAAX1tI,EAAE,IAAID,IAAkB2tI,GAAE,GAAG1tI,GAAK,KAAO,IAAFD,IAAc2tI,GAAE,EAAE,KAAgB,KAAZ1tI,EAAE,KAAKD,IAAkB2tI,GAAE,EAAE1tI,GAAK,KAAO,KAAFD,IAAe2tI,GAAE,EAAE,MAAoB,KAAf1tI,EAAE,QAAQD,IAAkB2tI,GAAE,EAAE1tI,GAAkB,KAAhBA,EAAE,SAASD,IAAkB2tI,GAAE,EAAE1tI,GAAO,SAAFD,GAAkB2tI,GAAE,EAAE,UAAY,KAAO,UAAF3tI,IAAoB2tI,GAAE,EAAE,WAA2B,KAAjB1tI,EAAE,UAAUD,IAAkB2tI,GAAE,EAAE1tI,GAAK,KAAK,WAAWD,IAAU2tI,GAAE,EAAE,aACjfA,GAAE,EAAS3tI,EAAE,CACb,SAAS2iS,GAAG3iS,EAAEC,GAAG,IAAIC,EAAEF,EAAE4iS,aAAa,GAAG,IAAI1iS,EAAE,OAAOytI,GAAE,EAAE,IAAItoI,EAAE,EAAE5D,EAAE,EAAE6D,EAAEtF,EAAE6iS,aAAat9R,EAAEvF,EAAE8iS,eAAet9R,EAAExF,EAAE+iS,YAAY,GAAG,IAAIz9R,EAAED,EAAEC,EAAE7D,EAAEksI,GAAE,QAAQ,GAAiB,KAAdroI,EAAI,UAAFpF,GAAkB,CAAC,IAAIkjE,EAAE99D,GAAGC,EAAE,IAAI69D,GAAG/9D,EAAEq9R,GAAGt/N,GAAG3hE,EAAEksI,IAAS,KAALnoI,GAAGF,KAAUD,EAAEq9R,GAAGl9R,GAAG/D,EAAEksI,GAAI,MAAY,KAAProI,EAAEpF,GAAGqF,IAASF,EAAEq9R,GAAGp9R,GAAG7D,EAAEksI,IAAG,IAAInoI,IAAIH,EAAEq9R,GAAGl9R,GAAG/D,EAAEksI,IAAG,GAAG,IAAItoI,EAAE,OAAO,EAAqC,GAAxBA,EAAEnF,IAAI,GAAjBmF,EAAE,GAAG29R,GAAG39R,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAIpF,GAAGA,IAAIoF,GAAG,KAAKpF,EAAEsF,GAAG,CAAO,GAANm9R,GAAGziS,GAAMwB,GAAGksI,GAAE,OAAO1tI,EAAE0tI,GAAElsI,CAAE,CAAmB,GAAG,KAAtBxB,EAAED,EAAEijS,gBAAwB,IAAIjjS,EAAEA,EAAEkjS,cAAcjjS,GAAGoF,EAAE,EAAEpF,GAAcwB,EAAE,IAAbvB,EAAE,GAAG8iS,GAAG/iS,IAAUoF,GAAGrF,EAAEE,GAAGD,IAAIwB,EAAE,OAAO4D,CAAE,CAC5e,SAAS89R,GAAGnjS,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE4iS,cAAsC5iS,EAAI,WAAFA,EAAa,WAAW,CAAE,UAASojS,GAAGpjS,EAAEC,GAAG,OAAOD,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAEqjS,GAAG,IAAIpjS,IAASmjS,GAAG,GAAGnjS,GAAGD,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAEqjS,GAAG,KAAKpjS,IAASmjS,GAAG,EAAEnjS,GAAGD,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAEqjS,GAAG,MAAMpjS,MAA4B,KAAjBD,EAAEqjS,GAAG,SAASpjS,MAAWD,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBC,EAAEojS,GAAG,WAAWpjS,MAAWA,EAAE,WAAWA,EAAE,MAAMkB,MAAM3D,EAAE,IAAIwC,GAAK,UAASqjS,GAAGrjS,GAAG,OAAOA,GAAGA,CAAE,UAASsjS,GAAGtjS,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAE,GAAGA,EAAEA,IAAID,EAAExW,KAAKuW,GAAG,OAAOC,CAAE,CACvd,SAASsjS,GAAGvjS,EAAEC,EAAEC,GAAGF,EAAE4iS,cAAc3iS,EAAE,IAAIoF,EAAEpF,EAAE,EAAED,EAAE8iS,gBAAgBz9R,EAAErF,EAAE+iS,aAAa19R,GAAErF,EAAEA,EAAEwjS,YAAWvjS,EAAE,GAAG+iS,GAAG/iS,IAAQC,CAAE,KAAI8iS,GAAG1mS,KAAKmnS,MAAMnnS,KAAKmnS,MAAiC,SAAYzjS,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAIiiB,GAAGjiB,GAAG0jS,GAAG,GAAG,CAAE,EAAzEzhR,GAAG3lB,KAAKwB,IAAI4lS,GAAGpnS,KAAKyB,IAAqD,IAAI4lS,GAAGx9R,EAAEy9R,8BAA8BC,GAAG19R,EAAEi0O,yBAAyB0pD,IAAG,EAAG,SAASC,GAAG/jS,EAAEC,EAAEC,EAAEmF,GAAGk5R,IAAIF,KAAK,IAAI58R,EAAEuiS,GAAG1+R,EAAEi5R,GAAGA,IAAG,EAAG,IAAIH,GAAG38R,EAAEzB,EAAEC,EAAEC,EAAEmF,EAAwB,CAAvC,SAA2Bk5R,GAAGj5R,IAAIm5R,IAAK,CAAC,UAASn2Q,GAAGtoB,EAAEC,EAAEC,EAAEmF,GAAGw+R,GAAGF,GAAGK,GAAGz2S,KAAK,KAAKyS,EAAEC,EAAEC,EAAEmF,GAAI,CACrb,SAAS2+R,GAAGhkS,EAAEC,EAAEC,EAAEmF,GAAU,IAAI5D,EAAX,GAAGqiS,GAAU,IAAIriS,EAAE,KAAO,EAAFxB,KAAO,EAAE6/R,GAAG/1S,SAAS,EAAEs2S,GAAGlyS,QAAQ6R,GAAGA,EAAEsgS,GAAG,KAAKtgS,EAAEC,EAAEC,EAAEmF,GAAGy6R,GAAGr2S,KAAKuW,OAAO,CAAC,IAAIsF,EAAE27R,GAAGjhS,EAAEC,EAAEC,EAAEmF,GAAG,GAAG,OAAOC,EAAE7D,GAAGk/R,GAAG3gS,EAAEqF,OAAO,CAAC,GAAG5D,EAAE,CAAC,IAAI,EAAE4+R,GAAGlyS,QAAQ6R,GAA+B,OAA3BA,EAAEsgS,GAAGh7R,EAAEtF,EAAEC,EAAEC,EAAEmF,QAAGy6R,GAAGr2S,KAAKuW,GAAU,GAfhO,SAAYA,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,OAAOxB,GAAG,IAAK,UAAU,OAAO8/R,GAAGa,GAAGb,GAAG//R,EAAEC,EAAEC,EAAEmF,EAAE5D,IAAG,EAAG,IAAK,YAAY,OAAOu+R,GAAGY,GAAGZ,GAAGhgS,EAAEC,EAAEC,EAAEmF,EAAE5D,IAAG,EAAG,IAAK,YAAY,OAAOw+R,GAAGW,GAAGX,GAAGjgS,EAAEC,EAAEC,EAAEmF,EAAE5D,IAAG,EAAG,IAAK,cAAc,IAAI6D,EAAE7D,EAAEysO,UAAkD,OAAxCgyD,GAAGp/R,IAAIwE,EAAEs7R,GAAGV,GAAGtyS,IAAI0X,IAAI,KAAKtF,EAAEC,EAAEC,EAAEmF,EAAE5D,KAAU,EAAG,IAAK,oBAAoB,OAAO6D,EAAE7D,EAAEysO,UAAUiyD,GAAGr/R,IAAIwE,EAAEs7R,GAAGT,GAAGvyS,IAAI0X,IAAI,KAAKtF,EAAEC,EAAEC,EAAEmF,EAAE5D,KAAI,EAAG,OAAM,CAAG,CAejIwiS,CAAG3+R,EAAEtF,EAAEC,EAAEC,EAAEmF,GAAG,OAAOs7R,GAAG3gS,EAAEqF,EAAG,CAAA6+R,GAAGlkS,EAAEC,EAAEoF,EAAE,KAAKnF,EAAG,CAAC,CAAE,CACpR,SAAS+gS,GAAGjhS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE+7R,GAAGn4R,GAAW,GAAG,QAAX5D,EAAEo/R,GAAGp/R,IAAe,CAAC,IAAI6D,EAAE85R,GAAG39R,GAAG,GAAG,OAAO6D,EAAE7D,EAAE,SAAS,CAAC,IAAI8D,EAAED,EAAEsxN,IAAI,GAAG,KAAKrxN,EAAE,CAAS,GAAG,QAAX9D,EAAE49R,GAAG/5R,IAAe,OAAO7D,EAAEA,EAAE,IAAK,MAAK,GAAG,IAAI8D,EAAE,CAAC,GAAGD,EAAE0zO,UAAU+nD,QAAQ,OAAO,IAAIz7R,EAAEsxN,IAAItxN,EAAE0zO,UAAUC,cAAc,KAAKx3O,EAAE,IAAK,MAAK6D,IAAI7D,IAAIA,EAAE,KAAM,CAAC,CAAc,OAAdyiS,GAAGlkS,EAAEC,EAAEoF,EAAE5D,EAAEvB,GAAU,IAAK,KAAIikS,GAAG,KAAKC,GAAG,KAAK/iD,GAAG,KACzT,SAASgjD,KAAK,GAAGhjD,GAAG,OAAOA,GAAG,IAAIrhP,EAAkBqF,EAAhBpF,EAAEmkS,GAAGlkS,EAAED,EAAElW,OAAS0X,EAAE,UAAU0iS,GAAGA,GAAG34S,MAAM24S,GAAG7rE,YAAYhzN,EAAE7D,EAAE1X,OAAO,IAAIiW,EAAE,EAAEA,EAAEE,GAAGD,EAAED,KAAKyB,EAAEzB,GAAGA,KAAK,IAAIuF,EAAErF,EAAEF,EAAE,IAAIqF,EAAE,EAAEA,GAAGE,GAAGtF,EAAEC,EAAEmF,KAAK5D,EAAE6D,EAAED,GAAGA,KAAK,OAAOg8O,GAAG5/O,EAAExF,MAAM+D,EAAE,EAAEqF,EAAE,EAAEA,OAAE,EAAQ,UAASi/R,GAAGtkS,GAAG,IAAIC,EAAED,EAAEqiQ,QAA+E,MAAvE,aAAariQ,EAAgB,KAAbA,EAAEA,EAAEukS,WAAgB,KAAKtkS,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAE,UAASwkS,KAAK,OAAM,CAAG,UAASC,KAAK,OAAM,CAAG,CACpY,SAASC,GAAG1kS,GAAG,SAASC,EAAEA,EAAEoF,EAAE5D,EAAE6D,EAAEC,GAA6G,IAAI,IAAIrF,KAAlHnU,KAAK44S,WAAW1kS,EAAElU,KAAK64S,YAAYnjS,EAAE1V,KAAKwP,KAAK8J,EAAEtZ,KAAK4lP,YAAYrsO,EAAEvZ,KAAKnC,OAAO2b,EAAExZ,KAAKy/N,cAAc,KAAkBxrN,EAAEA,EAAErS,eAAeuS,KAAKD,EAAED,EAAEE,GAAGnU,KAAKmU,GAAGD,EAAEA,EAAEqF,GAAGA,EAAEpF,IAAgI,OAA5HnU,KAAK84S,oBAAoB,MAAMv/R,EAAE4qI,iBAAiB5qI,EAAE4qI,kBAAiB,IAAK5qI,EAAE8uR,aAAaoQ,GAAGC,GAAG14S,KAAK66N,qBAAqB69E,GAAU14S,IAAK,CAC/E,OAD+EsR,EAAE4C,EAAE/U,UAAU,CAACs4F,eAAe,WAAWz3F,KAAKmkJ,kBAAiB,EAAG,IAAIlwI,EAAEjU,KAAK4lP,YAAY3xO,IAAIA,EAAEwjF,eAAexjF,EAAEwjF,iBAAiB,mBAAmBxjF,EAAEo0R,cAC7ep0R,EAAEo0R,aAAY,GAAIroS,KAAK84S,mBAAmBL,GAAI,EAACp6E,gBAAgB,WAAW,IAAIpqN,EAAEjU,KAAK4lP,YAAY3xO,IAAIA,EAAEoqN,gBAAgBpqN,EAAEoqN,kBAAkB,mBAAmBpqN,EAAE8kS,eAAe9kS,EAAE8kS,cAAa,GAAI/4S,KAAK66N,qBAAqB49E,GAAI,EAACrR,QAAQ,WAAY,EAAC4R,aAAaP,KAAYvkS,CAAE,CAClR,IAAoL+kS,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEziC,QAAQ,EAAE1pE,WAAW,EAAEosG,UAAU,SAASrlS,GAAG,OAAOA,EAAEqlS,WAAW7/K,KAAKL,KAAM,EAAC+qB,iBAAiB,EAAEo1J,UAAU,GAAGC,GAAGb,GAAGS,IAAIK,GAAGnoS,EAAE,CAAC,EAAE8nS,GAAG,CAACzkQ,KAAK,EAAE2pD,OAAO,IAAIo7M,GAAGf,GAAGc,IAAaE,GAAGroS,EAAE,CAAC,EAAEmoS,GAAG,CAACG,QAAQ,EAAEC,QAAQ,EAAE/hI,QAAQ,EAAEC,QAAQ,EAAE+hI,MAAM,EAAEC,MAAM,EAAEl2J,QAAQ,EAAEC,SAAS,EAAEF,OAAO,EAAED,QAAQ,EAAEq2J,iBAAiBC,GAAGv2J,OAAO,EAAEw2J,QAAQ,EAAEC,cAAc,SAASlmS,GAAG,YAAO,IAASA,EAAEkmS,cAAclmS,EAAEmmS,cAAcnmS,EAAEy9R,WAAWz9R,EAAEomS,UAAUpmS,EAAEmmS,YAAYnmS,EAAEkmS,aAAc,EAACG,UAAU,SAASrmS,GAAG,MAAG,cAC3eA,EAASA,EAAEqmS,WAAUrmS,IAAIklS,KAAKA,IAAI,cAAcllS,EAAEzE,MAAMypS,GAAGhlS,EAAE2lS,QAAQT,GAAGS,QAAQV,GAAGjlS,EAAE4lS,QAAQV,GAAGU,SAASX,GAAGD,GAAG,EAAEE,GAAGllS,GAAUglS,GAAG,EAACsB,UAAU,SAAStmS,GAAG,MAAM,cAAcA,EAAEA,EAAEsmS,UAAUrB,EAAG,IAAGsB,GAAG7B,GAAGgB,IAAiCc,GAAG9B,GAA7BrnS,EAAE,CAAC,EAAEqoS,GAAG,CAACe,aAAa,KAA4CC,GAAGhC,GAA9BrnS,EAAE,CAAC,EAAEmoS,GAAG,CAACU,cAAc,KAA0ES,GAAGjC,GAA5DrnS,EAAE,CAAC,EAAE8nS,GAAG,CAACyB,cAAc,EAAE3hL,YAAY,EAAE4hL,cAAc,KAAcC,GAAGzpS,EAAE,CAAC,EAAE8nS,GAAG,CAAC4B,cAAc,SAAS/mS,GAAG,MAAM,kBAAkBA,EAAEA,EAAE+mS,cAAc/+M,OAAO++M,aAAc,IAAGC,GAAGtC,GAAGoC,IAAyBG,GAAGvC,GAArBrnS,EAAE,CAAC,EAAE8nS,GAAG,CAACz5R,KAAK,KAAcw7R,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKp9E,KAAK,cAAcq9E,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASjjC,QAAQ,UAAUkjC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGnoS,GAAG,IAAIC,EAAElU,KAAK4lP,YAAY,OAAO1xO,EAAE8lS,iBAAiB9lS,EAAE8lS,iBAAiB/lS,MAAIA,EAAE+nS,GAAG/nS,OAAMC,EAAED,EAAM,UAASgmS,KAAK,OAAOmC,EAAG,CACjS,IAAIC,GAAG/qS,EAAE,CAAC,EAAEmoS,GAAG,CAACt7S,IAAI,SAAS8V,GAAG,GAAGA,EAAE9V,IAAI,CAAC,IAAI+V,EAAEinS,GAAGlnS,EAAE9V,MAAM8V,EAAE9V,IAAI,GAAG,iBAAiB+V,EAAE,OAAOA,CAAE,OAAM,aAAaD,EAAEzE,KAAc,MAARyE,EAAEskS,GAAGtkS,IAAU,QAAQu8B,OAAO4jF,aAAangH,GAAI,YAAYA,EAAEzE,MAAM,UAAUyE,EAAEzE,KAAKusS,GAAG9nS,EAAEqiQ,UAAU,eAAe,EAAG,EAAC5pM,KAAK,EAAE5e,SAAS,EAAE+1F,QAAQ,EAAEC,SAAS,EAAEF,OAAO,EAAED,QAAQ,EAAEriI,OAAO,EAAE64J,OAAO,EAAE6/H,iBAAiBC,GAAGzB,SAAS,SAASvkS,GAAG,MAAM,aAAaA,EAAEzE,KAAK+oS,GAAGtkS,GAAG,CAAE,EAACqiQ,QAAQ,SAASriQ,GAAG,MAAM,YAAYA,EAAEzE,MAAM,UAAUyE,EAAEzE,KAAKyE,EAAEqiQ,QAAQ,CAAE,EAACgmC,MAAM,SAASroS,GAAG,MAAM,aAC7eA,EAAEzE,KAAK+oS,GAAGtkS,GAAG,YAAYA,EAAEzE,MAAM,UAAUyE,EAAEzE,KAAKyE,EAAEqiQ,QAAQ,CAAE,IAAGimC,GAAG5D,GAAG0D,IAAiIG,GAAG7D,GAA7HrnS,EAAE,CAAC,EAAEqoS,GAAG,CAACx3D,UAAU,EAAEpjO,MAAM,EAAEC,OAAO,EAAEy9R,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAGrE,GAArHrnS,EAAE,CAAC,EAAEmoS,GAAG,CAAC/hI,QAAQ,EAAEulI,cAAc,EAAEC,eAAe,EAAEt5J,OAAO,EAAED,QAAQ,EAAEE,QAAQ,EAAEC,SAAS,EAAEk2J,iBAAiBC,MAA0EkD,GAAGxE,GAA3DrnS,EAAE,CAAC,EAAE8nS,GAAG,CAAC/tL,aAAa,EAAE6N,YAAY,EAAE4hL,cAAc,KAAc31I,GAAG7zJ,EAAE,CAAC,EAAEqoS,GAAG,CAACr0G,OAAO,SAASrxL,GAAG,MAAM,WAAWA,EAAEA,EAAEqxL,OAAO,gBAAgBrxL,GAAGA,EAAEmpS,YAAY,CAAE,EACpf73G,OAAO,SAAStxL,GAAG,MAAM,WAAWA,EAAEA,EAAEsxL,OAAO,gBAAgBtxL,GAAGA,EAAEopS,YAAY,eAAeppS,GAAGA,EAAEqpS,WAAW,CAAE,EAACC,OAAO,EAAEC,UAAU,IAAIC,GAAG9E,GAAGxzI,IAAIu4I,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIxlS,GAAGw8J,GAAI,qBAAqBz4E,OAAO9jF,GAAG,KAAKu8J,GAAI,iBAAiB34J,WAAW5D,GAAG4D,SAAS4hS,cAAc,IAAIhoR,GAAG++I,GAAI,cAAcz4E,SAAS9jF,GAAG0d,GAAG6+I,KAAMx8J,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIylS,GAAGptQ,OAAO4jF,aAAa,IAAIypL,IAAG,EAC1W,SAASC,GAAG7pS,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAIypS,GAAGt7S,QAAQ8R,EAAEoiQ,SAAS,IAAK,UAAU,OAAO,MAAMpiQ,EAAEoiQ,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAI,UAASynC,GAAG9pS,GAAc,MAAM,kBAAjBA,EAAEA,EAAEqqF,SAAkC,SAASrqF,EAAEA,EAAE0L,KAAK,IAAK,KAAIq+R,IAAG,EAE9Q,IAAIC,GAAG,CAAC7gS,OAAM,EAAGygK,MAAK,EAAG+4C,UAAS,EAAG,kBAAiB,EAAGsnF,OAAM,EAAGjqF,OAAM,EAAGh1C,QAAO,EAAGkmG,UAAS,EAAG3xQ,OAAM,EAAGi1I,QAAO,EAAG01J,KAAI,EAAG/tL,MAAK,EAAG/1E,MAAK,EAAGl6B,KAAI,EAAG6zM,MAAK,GAAI,SAASp8M,GAAG3D,GAAG,IAAIC,EAAED,GAAGA,EAAEouH,UAAUpuH,EAAEouH,SAAS1kH,cAAc,MAAM,UAAUzJ,IAAI+pS,GAAGhqS,EAAEzE,MAAM,aAAa0E,CAAQ,UAASkqS,GAAGnqS,EAAEC,EAAEC,EAAEmF,GAAG44R,GAAG54R,GAAsB,GAAnBpF,EAAEmqS,GAAGnqS,EAAE,aAAgBlW,SAASmW,EAAE,IAAIqlS,GAAG,WAAW,SAAS,KAAKrlS,EAAEmF,GAAGrF,EAAEvW,KAAK,CAACsS,MAAMmE,EAAEvE,UAAUsE,IAAK,KAAIoqS,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGvqS,GAAGwqS,GAAGxqS,EAAE,EAAG,UAAS0D,GAAG1D,GAAe,GAAG26R,EAAT8P,GAAGzqS,IAAY,OAAOA,CAAE,CACre,SAAS0qS,GAAG1qS,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,CAAE,KAAI0qS,IAAG,EAAG,GAAGlqI,EAAG,CAAC,IAAImqI,GAAG,GAAGnqI,EAAG,CAAC,IAAIoqI,GAAG,YAAY/iS,SAAS,IAAI+iS,GAAG,CAAC,IAAIC,GAAGhjS,SAASmoI,cAAc,OAAO66J,GAAGvzQ,aAAa,UAAU,WAAWszQ,GAAG,oBAAoBC,GAAGC,OAAQ,CAAAH,GAAGC,EAAG,MAAKD,IAAG,EAAGD,GAAGC,MAAM9iS,SAAS4hS,cAAc,EAAE5hS,SAAS4hS,aAAc,UAASsB,KAAKX,KAAKA,GAAGY,YAAY,mBAAmBC,IAAIZ,GAAGD,GAAG,KAAM,UAASa,GAAGlrS,GAAG,GAAG,UAAUA,EAAEo3G,cAAc1zG,GAAG4mS,IAAI,CAAC,IAAIrqS,EAAE,GAAyB,GAAtBkqS,GAAGlqS,EAAEqqS,GAAGtqS,EAAEw9R,GAAGx9R,IAAIA,EAAEuqS,GAAMhM,GAAGv+R,EAAEC,OAAO,CAACs+R,IAAG,EAAG,IAAIJ,GAAGn+R,EAAEC,EAAsB,CAA/B,QAAoBs+R,IAAG,EAAGE,IAAK,CAAC,CAAC,CAAC,CACnf,SAAS0M,GAAGnrS,EAAEC,EAAEC,GAAG,YAAYF,GAAGgrS,KAAUV,GAAGpqS,GAARmqS,GAAGpqS,GAAUmrS,YAAY,mBAAmBF,KAAK,aAAalrS,GAAGgrS,IAAK,UAASK,GAAGrrS,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO0D,GAAG4mS,GAAI,UAASgB,GAAGtrS,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAO0D,GAAGzD,EAAG,UAASsrS,GAAGvrS,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAO0D,GAAGzD,EAAG,CAAgE,IAAIurS,GAAG,oBAAoBtiT,OAAOukP,GAAGvkP,OAAOukP,GAA5G,SAAYztO,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAE,EAAkDwrS,GAAGviT,OAAOgC,UAAUyC,eAC7a,SAAS+9S,GAAG1rS,EAAEC,GAAG,GAAGurS,GAAGxrS,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIC,EAAEhX,OAAOD,KAAK+W,GAAGqF,EAAEnc,OAAOD,KAAKgX,GAAG,GAAGC,EAAEnW,SAASsb,EAAEtb,OAAO,OAAM,EAAG,IAAIsb,EAAE,EAAEA,EAAEnF,EAAEnW,OAAOsb,IAAI,IAAIomS,GAAG5+S,KAAKoT,EAAEC,EAAEmF,MAAMmmS,GAAGxrS,EAAEE,EAAEmF,IAAIpF,EAAEC,EAAEmF,KAAK,OAAM,EAAG,OAAM,CAAG,UAASsmS,GAAG3rS,GAAG,KAAKA,GAAGA,EAAEo8R,YAAYp8R,EAAEA,EAAEo8R,WAAW,OAAOp8R,CAAE,CACpU,SAAS4rS,GAAG5rS,EAAEC,GAAG,IAAwBoF,EAApBnF,EAAEyrS,GAAG3rS,GAAO,IAAJA,EAAE,EAAYE,GAAG,CAAC,GAAG,IAAIA,EAAE44N,SAAS,CAA0B,GAAzBzzN,EAAErF,EAAEE,EAAEo4N,YAAYvuO,OAAUiW,GAAGC,GAAGoF,GAAGpF,EAAE,MAAM,CAACiuH,KAAKhuH,EAAEuC,OAAOxC,EAAED,GAAGA,EAAEqF,CAAE,CAAArF,EAAE,CAAC,KAAKE,GAAG,CAAC,GAAGA,EAAE84N,YAAY,CAAC94N,EAAEA,EAAE84N,YAAY,MAAMh5N,CAAE,CAAAE,EAAEA,EAAEsiK,UAAW,CAAAtiK,OAAE,CAAO,CAAAA,EAAEyrS,GAAGzrS,EAAG,CAAC,UAAS2rS,GAAG7rS,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE84N,YAAY74N,GAAG,IAAIA,EAAE64N,SAAS+yE,GAAG7rS,EAAEC,EAAEuiK,YAAY,aAAaxiK,EAAEA,EAAEy2L,SAASx2L,KAAGD,EAAEs/O,4BAAwD,GAA7Bt/O,EAAEs/O,wBAAwBr/O,KAAa,CAC/Z,SAAS6rS,KAAK,IAAI,IAAI9rS,EAAEgoF,OAAO/nF,EAAE46R,IAAK56R,aAAaD,EAAE+rS,mBAAmB,CAAC,IAAI,IAAI7rS,EAAE,kBAAkBD,EAAE+rS,cAAcnyP,SAASo1F,IAAmB,CAAd,MAAM5pI,GAAGnF,GAAE,CAAG,KAAGA,EAAyB,MAAMD,EAAE46R,GAA/B76R,EAAEC,EAAE+rS,eAAgClkS,SAAU,QAAO7H,CAAE,UAASgsS,GAAGjsS,GAAG,IAAIC,EAAED,GAAGA,EAAEouH,UAAUpuH,EAAEouH,SAAS1kH,cAAc,OAAOzJ,IAAI,UAAUA,IAAI,SAASD,EAAEzE,MAAM,WAAWyE,EAAEzE,MAAM,QAAQyE,EAAEzE,MAAM,QAAQyE,EAAEzE,MAAM,aAAayE,EAAEzE,OAAO,aAAa0E,GAAG,SAASD,EAAEksS,gBAAiB,CACza,IAAIC,GAAG1rI,GAAI,iBAAiB34J,UAAU,IAAIA,SAAS4hS,aAAap3I,GAAG,KAAK85I,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGvsS,EAAEC,EAAEC,GAAG,IAAImF,EAAEnF,EAAE8nF,SAAS9nF,EAAEA,EAAE4H,SAAS,IAAI5H,EAAE44N,SAAS54N,EAAEA,EAAEipN,cAAcmjF,IAAI,MAAMh6I,IAAIA,KAAKuoI,EAAGx1R,KAAU,mBAALA,EAAEitJ,KAAyB25I,GAAG5mS,GAAGA,EAAE,CAACsxB,MAAMtxB,EAAEmnS,eAAezoQ,IAAI1+B,EAAEonS,cAAuFpnS,EAAE,CAACqnS,YAA3ErnS,GAAGA,EAAE8jN,eAAe9jN,EAAE8jN,cAAc2I,aAAa9pI,QAAQ2kN,gBAA+BD,WAAWE,aAAavnS,EAAEunS,aAAaC,UAAUxnS,EAAEwnS,UAAUC,YAAYznS,EAAEynS,aAAcT,IAAIX,GAAGW,GAAGhnS,KAAKgnS,GAAGhnS,EAAsB,GAApBA,EAAE+kS,GAAGgC,GAAG,aAAgBriT,SAASkW,EAAE,IAAIslS,GAAG,WAAW,SAAS,KAAKtlS,EAAEC,GAAGF,EAAEvW,KAAK,CAACsS,MAAMkE,EAAEtE,UAAU0J,IAAIpF,EAAErW,OAAO0oK,KAAM,CACvfkwI,GAAG,mjBAAmjBpyO,MAAM,KAC5jB,GAAGoyO,GAAG,oRAAoRpyO,MAAM,KAAK,GAAGoyO,GAAGD,GAAG,GAAG,IAAI,IAAIwK,GAAG,qFAAqF38O,MAAM,KAAK48O,GAAG,EAAEA,GAAGD,GAAGhjT,OAAOijT,KAAK1K,GAAGxhS,IAAIisS,GAAGC,IAAI,GAAGlzB,EAAG,eAAe,CAAC,WAAW,cACleA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoEzpN,MAAM,MAAMypN,EAAG,WAAW,uFAAuFzpN,MAAM,MAAMypN,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DzpN,MAAM,MAC5fypN,EAAG,qBAAqB,6DAA6DzpN,MAAM,MAAMypN,EAAG,sBAAsB,8DAA8DzpN,MAAM,MAAM,IAAI+5F,GAAG,sNAAsN/5F,MAAM,KAAK68O,GAAG,IAAIz0O,IAAI,0CAA0CpI,MAAM,KAAK4sC,OAAOmtD,KACnf,SAAS+iJ,GAAGltS,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAEzE,MAAM,gBAAgByE,EAAEwrN,cAActrN,EA/CjE,SAAYF,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,EAAEC,EAAEC,EAAE49D,GAA4B,GAAzB+7N,GAAGz1S,MAAMqC,KAAKjC,WAAcg1S,GAAG,CAAC,IAAGA,GAAgC,MAAM39R,MAAM3D,EAAE,MAA1C,IAAItB,EAAE6iS,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAG/iS,EAAG,CAAC,CA+CrEixS,CAAG9nS,EAAEpF,OAAE,EAAOD,GAAGA,EAAEwrN,cAAc,IAAK,CACzG,SAASg/E,GAAGxqS,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEjW,OAAOmW,IAAI,CAAC,IAAImF,EAAErF,EAAEE,GAAGuB,EAAE4D,EAAEtJ,MAAMsJ,EAAEA,EAAE1J,UAAUqE,EAAE,CAAC,IAAIsF,OAAE,EAAO,GAAGrF,EAAE,IAAI,IAAIsF,EAAEF,EAAEtb,OAAO,EAAE,GAAGwb,EAAEA,IAAI,CAAC,IAAIC,EAAEH,EAAEE,GAAG69D,EAAE59D,EAAEjb,SAAS2R,EAAEsJ,EAAEgmN,cAA2B,GAAbhmN,EAAEA,EAAEhK,SAAY4nE,IAAI99D,GAAG7D,EAAEmlN,uBAAuB,MAAM5mN,EAAEktS,GAAGzrS,EAAE+D,EAAEtJ,GAAGoJ,EAAE89D,CAAE,MAAK,IAAI79D,EAAE,EAAEA,EAAEF,EAAEtb,OAAOwb,IAAI,CAAoD,GAA5C69D,GAAP59D,EAAEH,EAAEE,IAAOhb,SAAS2R,EAAEsJ,EAAEgmN,cAAchmN,EAAEA,EAAEhK,SAAY4nE,IAAI99D,GAAG7D,EAAEmlN,uBAAuB,MAAM5mN,EAAEktS,GAAGzrS,EAAE+D,EAAEtJ,GAAGoJ,EAAE89D,CAAE,CAAC,CAAC,IAAG47N,GAAG,MAAMh/R,EAAEi/R,GAAGD,IAAG,EAAGC,GAAG,KAAKj/R,CAAG,CAC7a,SAASqpJ,GAAErpJ,EAAEC,GAAG,IAAIC,EAAEktS,GAAGntS,GAAGoF,EAAErF,EAAE,WAAWE,EAAEw7C,IAAIr2C,KAAKmc,GAAGvhB,EAAED,EAAE,GAAE,GAAIE,EAAE4Z,IAAIzU,GAAI,KAAIoc,GAAG,kBAAkBnlB,KAAKK,SAAS9N,SAAS,IAAIoN,MAAM,GAAG,SAAS0lB,GAAG3hB,GAAGA,EAAEyhB,MAAMzhB,EAAEyhB,KAAI,EAAG24P,EAAGnwR,SAAQ,SAASgW,GAAGgtS,GAAGvxP,IAAIz7C,IAAI4hB,GAAG5hB,GAAE,EAAGD,EAAE,MAAM6hB,GAAG5hB,GAAE,EAAGD,EAAE,KAAM,IAAG,CAC/O,SAAS6hB,GAAG7hB,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE,EAAE3X,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,EAAEwb,EAAEpF,EAA6D,GAA3D,oBAAoBF,GAAG,IAAIE,EAAE44N,WAAWxzN,EAAEpF,EAAEipN,eAAkB,OAAO9jN,IAAIpF,GAAGgtS,GAAGvxP,IAAI17C,GAAG,CAAC,GAAG,WAAWA,EAAE,OAAOyB,GAAG,EAAE6D,EAAED,CAAE,KAAIE,EAAE6nS,GAAG9nS,GAAGE,EAAExF,EAAE,MAAMC,EAAE,UAAU,UAAUsF,EAAEm2C,IAAIl2C,KAAKvF,IAAIwB,GAAG,GAAG+f,GAAGlc,EAAEtF,EAAEyB,EAAExB,GAAGsF,EAAEuU,IAAItU,GAAI,CACtS,SAASgc,GAAGxhB,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE6gS,GAAG10S,IAAIqS,GAAG,YAAO,IAASwB,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAEsiS,GAAG,MAAM,KAAK,EAAEtiS,EAAE6mB,GAAG,MAAM,QAAQ7mB,EAAEuiS,GAAG9jS,EAAEuB,EAAElU,KAAK,KAAK0S,EAAEC,EAAEF,GAAGyB,OAAE,GAAQk9R,IAAI,eAAe1+R,GAAG,cAAcA,GAAG,UAAUA,IAAIwB,GAAE,GAAI4D,OAAE,IAAS5D,EAAEzB,EAAE2+C,iBAAiB1+C,EAAEC,EAAE,CAACgtO,SAAQ,EAAG5nE,QAAQ7jK,IAAIzB,EAAE2+C,iBAAiB1+C,EAAEC,GAAE,QAAI,IAASuB,EAAEzB,EAAE2+C,iBAAiB1+C,EAAEC,EAAE,CAAColK,QAAQ7jK,IAAIzB,EAAE2+C,iBAAiB1+C,EAAEC,GAAE,EAAI,CACxW,SAASgkS,GAAGlkS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAED,EAAE,GAAG,KAAO,EAAFpF,IAAM,KAAO,EAAFA,IAAM,OAAOoF,EAAErF,EAAE,OAAO,CAAC,GAAG,OAAOqF,EAAE,OAAO,IAAIE,EAAEF,EAAEuxN,IAAI,GAAG,IAAIrxN,GAAG,IAAIA,EAAE,CAAC,IAAIC,EAAEH,EAAE2zO,UAAUC,cAAc,GAAGzzO,IAAI/D,GAAG,IAAI+D,EAAEszN,UAAUtzN,EAAEg9J,aAAa/gK,EAAE,MAAM,GAAG,IAAI8D,EAAE,IAAIA,EAAEF,EAAE0zO,OAAO,OAAOxzO,GAAG,CAAC,IAAI69D,EAAE79D,EAAEqxN,IAAI,IAAG,IAAIxzJ,GAAG,IAAIA,MAAKA,EAAE79D,EAAEyzO,UAAUC,iBAAkBx3O,GAAG,IAAI2hE,EAAE01J,UAAU11J,EAAEo/F,aAAa/gK,GAAE,OAAO8D,EAAEA,EAAEwzO,MAAO,MAAK,OAAOvzO,GAAG,CAAS,GAAG,QAAXD,EAAEs7R,GAAGr7R,IAAe,OAAe,GAAG,KAAX49D,EAAE79D,EAAEqxN,MAAc,IAAIxzJ,EAAE,CAAC/9D,EAAEC,EAAEC,EAAE,SAASvF,CAAE,CAAAwF,EAAEA,EAAEg9J,UAAW,CAAC,CAAAn9J,EAAEA,EAAE0zO,MAAO,EAvDpd,SAAY/4O,EAAEC,EAAEC,GAAG,GAAGs+R,GAAG,OAAOx+R,EAAEC,EAAEC,GAAGs+R,IAAG,EAAG,IAAWF,GAAGt+R,EAAEC,EAAEC,EAAsB,CAAxC,QAA6Bs+R,IAAG,EAAGC,IAAK,CAAC,CAuD8X4O,EAAG,WAAW,IAAIhoS,EAAEC,EAAE7D,EAAE+7R,GAAGt9R,GAAGqF,EAAE,GACpfvF,EAAE,CAAC,IAAIwF,EAAE68R,GAAGz0S,IAAIoS,GAAG,QAAG,IAASwF,EAAE,CAAC,IAAI49D,EAAEmiO,GAAGhoS,EAAEyC,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAIskS,GAAGpkS,GAAG,MAAMF,EAAE,IAAK,UAAU,IAAK,QAAQojE,EAAEklO,GAAG,MAAM,IAAK,UAAU/qS,EAAE,QAAQ6lE,EAAEsjO,GAAG,MAAM,IAAK,WAAWnpS,EAAE,OAAO6lE,EAAEsjO,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYtjO,EAAEsjO,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIxmS,EAAEuvI,OAAO,MAAMzvI,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAcojE,EAAEmjO,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOnjO,EAC1iBojO,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAapjO,EAAE2lO,GAAG,MAAM,KAAK9G,GAAG,KAAKC,GAAG,KAAKC,GAAG/+N,EAAEujO,GAAG,MAAM,KAAKvE,GAAGh/N,EAAE8lO,GAAG,MAAM,IAAK,SAAS9lO,EAAEqiO,GAAG,MAAM,IAAK,QAAQriO,EAAEomO,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQpmO,EAAE4jO,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY5jO,EAAEmlO,GAAG,IAAIlnS,EAAE,KAAO,EAAFpB,GAAK6O,GAAGzN,GAAG,WAAWrB,EAAE+Y,EAAE1X,EAAE,OAAOmE,EAAEA,EAAE,UAAU,KAAKA,EAAEnE,EAAE,GAAG,IAAI,IAAQtB,EAAJtC,EAAE4H,EAAI,OAC/e5H,GAAG,CAAK,IAAI2D,GAARrB,EAAEtC,GAAUu7O,UAAsF,GAA5E,IAAIj5O,EAAE62N,KAAK,OAAOx1N,IAAIrB,EAAEqB,EAAE,OAAO2X,IAAc,OAAV3X,EAAEs9R,GAAGjhS,EAAEsb,KAAY1X,EAAE5X,KAAK6jT,GAAG7vS,EAAE2D,EAAErB,MAAS+O,EAAE,MAAMrR,EAAEA,EAAEs7O,MAAO,GAAE13O,EAAEtX,SAASyb,EAAE,IAAI49D,EAAE59D,EAAEjI,EAAE,KAAK2C,EAAEuB,GAAG8D,EAAE9b,KAAK,CAACsS,MAAMyJ,EAAE7J,UAAU0F,IAAK,CAAC,IAAG,KAAO,EAAFpB,GAAK,CAA4E,GAAnCmjE,EAAE,aAAapjE,GAAG,eAAeA,KAAtEwF,EAAE,cAAcxF,GAAG,gBAAgBA,IAA2C,KAAO,GAAFC,MAAQ1C,EAAE2C,EAAEgmS,eAAehmS,EAAEimS,eAAetF,GAAGtjS,KAAIA,EAAEgwS,OAAgBnqO,GAAG59D,KAAGA,EAAE/D,EAAEumF,SAASvmF,EAAEA,GAAG+D,EAAE/D,EAAE0nN,eAAe3jN,EAAEssN,aAAatsN,EAAEgoS,aAAaxlN,OAAU5kB,GAAqCA,EAAE/9D,EAAiB,QAAf9H,GAAnCA,EAAE2C,EAAEgmS,eAAehmS,EAAEkmS,WAAkBvF,GAAGtjS,GAAG,QACleA,KAARuR,EAAEswR,GAAG7hS,KAAU,IAAIA,EAAEq5N,KAAK,IAAIr5N,EAAEq5N,OAAKr5N,EAAE,QAAU6lE,EAAE,KAAK7lE,EAAE8H,GAAK+9D,IAAI7lE,GAAE,CAAgU,GAA/T8D,EAAEklS,GAAGnlS,EAAE,eAAe2X,EAAE,eAAetb,EAAE,QAAW,eAAeuC,GAAG,gBAAgBA,IAAEqB,EAAEknS,GAAGnnS,EAAE,iBAAiB2X,EAAE,iBAAiBtb,EAAE,WAAUqR,EAAE,MAAMs0D,EAAE59D,EAAEilS,GAAGrnO,GAAGrjE,EAAE,MAAMxC,EAAEiI,EAAEilS,GAAGltS,IAAGiI,EAAE,IAAInE,EAAED,EAAE3D,EAAE,QAAQ2lE,EAAEljE,EAAEuB,IAAK7X,OAAOklB,EAAEtJ,EAAE0gS,cAAcnmS,EAAEqB,EAAE,KAAKy/R,GAAGp/R,KAAK4D,KAAIhE,EAAE,IAAIA,EAAE0X,EAAEtb,EAAE,QAAQF,EAAE2C,EAAEuB,IAAK7X,OAAOmW,EAAEsB,EAAE6kS,cAAcp3R,EAAE1N,EAAEC,GAAGyN,EAAE1N,EAAKgiE,GAAG7lE,EAAE0C,EAAE,CAAa,IAAR8Y,EAAExb,EAAEE,EAAE,EAAMsC,EAAhBsB,EAAE+hE,EAAkBrjE,EAAEA,EAAE0tS,GAAG1tS,GAAGtC,IAAQ,IAAJsC,EAAE,EAAMqB,EAAE2X,EAAE3X,EAAEA,EAAEqsS,GAAGrsS,GAAGrB,IAAI,KAAK,EAAEtC,EAAEsC,GAAGsB,EAAEosS,GAAGpsS,GAAG5D,IAAI,KAAK,EAAEsC,EAAEtC,GAAGsb,EACpf00R,GAAG10R,GAAGhZ,IAAI,KAAKtC,KAAK,CAAC,GAAG4D,IAAI0X,GAAG,OAAOA,GAAG1X,IAAI0X,EAAE8iO,UAAU,MAAM57O,EAAEoB,EAAEosS,GAAGpsS,GAAG0X,EAAE00R,GAAG10R,EAAG,CAAA1X,EAAE,IAAK,MAAKA,EAAE,KAAK,OAAO+hE,GAAGsqO,GAAGnoS,EAAEC,EAAE49D,EAAE/hE,GAAE,GAAI,OAAO9D,GAAG,OAAOuR,GAAG4+R,GAAGnoS,EAAEuJ,EAAEvR,EAAE8D,GAAE,EAAI,CAA6D,GAAG,YAA1C+hE,GAAjB59D,EAAEH,EAAEolS,GAAGplS,GAAG2iF,QAAWomC,UAAU5oH,EAAE4oH,SAAS1kH,gBAA+B,UAAU05D,GAAG,SAAS59D,EAAEjK,KAAK,IAAIiuJ,EAAEkhJ,QAAQ,GAAG/mS,GAAG6B,GAAG,GAAGmlS,GAAGnhJ,EAAE+hJ,OAAO,CAAC/hJ,EAAE6hJ,GAAG,IAAIjiJ,EAAE+hJ,EAAG,MAAK/nO,EAAE59D,EAAE4oH,WAAW,UAAUhrD,EAAE15D,gBAAgB,aAAalE,EAAEjK,MAAM,UAAUiK,EAAEjK,QAAQiuJ,EAAE8hJ,IAClV,OADyV9hJ,IAAIA,EAAEA,EAAExpJ,EAAEqF,IAAK8kS,GAAG5kS,EAAEikJ,EAAEtpJ,EAAEuB,IAAW2nJ,GAAGA,EAAEppJ,EAAEwF,EAAEH,GAAG,aAAarF,IAAIopJ,EAAE5jJ,EAAEw1R,gBACte5xI,EAAEgyI,YAAY,WAAW51R,EAAEjK,MAAM+/R,GAAG91R,EAAE,SAASA,EAAEha,QAAO49J,EAAE/jJ,EAAEolS,GAAGplS,GAAG2iF,OAAchoF,GAAG,IAAK,WAAa2D,GAAGylJ,IAAI,SAASA,EAAE8iJ,mBAAgB55I,GAAGlJ,EAAEgjJ,GAAG/mS,EAAEgnS,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAG95I,GAAG,KAAK,MAAM,IAAK,YAAYg6I,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGhnS,EAAErF,EAAEuB,GAAG,MAAM,IAAK,kBAAkB,GAAG0qS,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQI,GAAGhnS,EAAErF,EAAEuB,GAAG,IAAIunJ,EAAE,GAAG/kJ,GAAGhE,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAImpJ,EAAE,qBAAqB,MAAMlpJ,EAAE,IAAK,iBAAiBkpJ,EAAE,mBAAmB,MAAMlpJ,EACrf,IAAK,oBAAoBkpJ,EAAE,sBAAsB,MAAMlpJ,EAAEkpJ,OAAE,CAAO,MAAK4gJ,GAAGF,GAAG7pS,EAAEE,KAAKipJ,EAAE,oBAAoB,YAAYnpJ,GAAG,MAAME,EAAEmiQ,UAAUl5G,EAAE,sBAAsBA,IAAIvnI,IAAI,OAAO1hB,EAAEgmK,SAAS6jI,IAAI,uBAAuB5gJ,EAAE,qBAAqBA,GAAG4gJ,KAAK/gJ,EAAEq7I,OAAYD,GAAG,UAARD,GAAG1iS,GAAkB0iS,GAAG34S,MAAM24S,GAAG7rE,YAAYyxE,IAAG,IAAe,GAAV3gJ,EAAEghJ,GAAG/kS,EAAE8jJ,IAAOp/J,SAASo/J,EAAE,IAAI89I,GAAG99I,EAAEnpJ,EAAE,KAAKE,EAAEuB,GAAG8D,EAAE9b,KAAK,CAACsS,MAAMotJ,EAAExtJ,UAAUytJ,IAAIJ,EAAEG,EAAEz9I,KAAKs9I,EAAW,QAARA,EAAE8gJ,GAAG5pS,MAAcipJ,EAAEz9I,KAAKs9I,MAASA,EAAEtnI,GA1BjK,SAAY1hB,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO8pS,GAAG7pS,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEooS,MAAa,MAAKuB,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO3pS,EAAEC,EAAEyL,QAASi+R,IAAIC,GAAG,KAAK5pS,EAAE,QAAQ,OAAO,KAAM,CA0B9B2tS,CAAG3tS,EAAEE,GAzB1b,SAAYF,EAAEC,GAAG,GAAG8pS,GAAG,MAAM,mBAAmB/pS,IAAIiE,IAAI4lS,GAAG7pS,EAAEC,IAAID,EAAEqkS,KAAKhjD,GAAG+iD,GAAGD,GAAG,KAAK4F,IAAG,EAAG/pS,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAE2vI,SAAS3vI,EAAE0vI,QAAQ1vI,EAAEyvI,UAAUzvI,EAAE2vI,SAAS3vI,EAAE0vI,OAAO,CAAC,GAAG1vI,EAAEw/N,MAAM,EAAEx/N,EAAEw/N,KAAK11O,OAAO,OAAOkW,EAAEw/N,KAAK,GAAGx/N,EAAEooS,MAAM,OAAO9rQ,OAAO4jF,aAAalgH,EAAEooS,MAAO,QAAO,KAAK,IAAK,iBAAiB,OAAOzmR,IAAI,OAAO3hB,EAAEimK,OAAO,KAAKjmK,EAAEyL,KAA0B,CAyBqDkiS,CAAG5tS,EAAEE,MAA2B,GAAxBmF,EAAE+kS,GAAG/kS,EAAE,kBAAqBtb,SAAS0X,EAAE,IAAIwlS,GAAG,gBACnf,cAAc,KAAK/mS,EAAEuB,GAAG8D,EAAE9b,KAAK,CAACsS,MAAM0F,EAAE9F,UAAU0J,IAAI5D,EAAEiK,KAAKs9I,GAAG,CAAAwhJ,GAAGjlS,EAAEtF,EAAG,GAAE,UAASqtS,GAAGttS,EAAEC,EAAEC,GAAG,MAAM,CAAC3V,SAASyV,EAAExE,SAASyE,EAAEurN,cAActrN,EAAG,UAASkqS,GAAGpqS,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAE,UAAUoF,EAAE,GAAG,OAAOrF,GAAG,CAAC,IAAIyB,EAAEzB,EAAEsF,EAAE7D,EAAEu3O,UAAU,IAAIv3O,EAAEm1N,KAAK,OAAOtxN,IAAI7D,EAAE6D,EAAY,OAAVA,EAAEo5R,GAAG1+R,EAAEE,KAAYmF,EAAEsxC,QAAQ22P,GAAGttS,EAAEsF,EAAE7D,IAAc,OAAV6D,EAAEo5R,GAAG1+R,EAAEC,KAAYoF,EAAE5b,KAAK6jT,GAAGttS,EAAEsF,EAAE7D,KAAKzB,EAAEA,EAAE+4O,MAAO,QAAO1zO,CAAE,UAASooS,GAAGztS,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE+4O,aAAa/4O,GAAG,IAAIA,EAAE42N,KAAK,OAAO52N,GAAI,IAAK,CAC7a,SAAS0tS,GAAG1tS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI,IAAI6D,EAAErF,EAAE0kS,WAAWp/R,EAAE,GAAG,OAAOrF,GAAGA,IAAImF,GAAG,CAAC,IAAIG,EAAEtF,EAAEkjE,EAAE59D,EAAEq2O,UAAU3/O,EAAEsJ,EAAEwzO,UAAU,GAAG,OAAO51K,GAAGA,IAAI/9D,EAAE,MAAM,IAAIG,EAAEoxN,KAAK,OAAO16N,IAAIsJ,EAAEtJ,EAAEuF,EAAa,OAAV2hE,EAAEs7N,GAAGx+R,EAAEoF,KAAYC,EAAEoxC,QAAQ22P,GAAGptS,EAAEkjE,EAAE59D,IAAK/D,GAAc,OAAV2hE,EAAEs7N,GAAGx+R,EAAEoF,KAAYC,EAAE9b,KAAK6jT,GAAGptS,EAAEkjE,EAAE59D,KAAMtF,EAAEA,EAAE64O,MAAO,KAAIxzO,EAAExb,QAAQiW,EAAEvW,KAAK,CAACsS,MAAMkE,EAAEtE,UAAU4J,GAAI,UAASsoS,KAAM,KAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGhuS,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAEqiP,UAAU,OAAM,CAAG,CAC9b,SAAS2rD,GAAGjuS,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,kBAAkBC,EAAE8a,UAAU,kBAAkB9a,EAAE8a,UAAU,kBAAkB9a,EAAEmkO,yBAAyB,OAAOnkO,EAAEmkO,yBAAyB,MAAMnkO,EAAEmkO,wBAAwBC,MAAO,KAAI6pE,GAAG,oBAAoB9zL,WAAWA,gBAAW,EAAO+zL,GAAG,oBAAoB9vG,aAAaA,kBAAa,EAAO,SAAS+vG,GAAGpuS,GAAG,IAAIA,EAAE84N,SAAS94N,EAAEs4N,YAAY,GAAG,IAAIt4N,EAAE84N,WAAoB,OAAT94N,EAAEA,EAAEg7G,QAAeh7G,EAAEs4N,YAAY,IAAK,CAC7c,SAAS+1E,GAAGruS,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEg5N,YAAY,CAAC,IAAI/4N,EAAED,EAAE84N,SAAS,GAAG,IAAI74N,GAAG,IAAIA,EAAE,KAAM,QAAOD,CAAE,UAASylG,GAAGzlG,GAAGA,EAAEA,EAAEy3Q,gBAAgB,IAAI,IAAIx3Q,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE84N,SAAS,CAAC,IAAI54N,EAAEF,EAAE0L,KAAK,GAAG,MAAMxL,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAID,EAAE,OAAOD,EAAEC,GAAI,KAAI,OAAOC,GAAGD,GAAI,CAAAD,EAAEA,EAAEy3Q,eAAgB,QAAO,IAAK,KAAI62B,GAAG,EAA0D,IAAIC,GAAGjyS,KAAKK,SAAS9N,SAAS,IAAIoN,MAAM,GAAGuyS,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGhB,GAAG,oBAAoBgB,GAAGG,GAAG,iBAAiBH,GAC9d,SAAS1N,GAAG7gS,GAAG,IAAIC,EAAED,EAAEwuS,IAAI,GAAGvuS,EAAE,OAAOA,EAAE,IAAI,IAAIC,EAAEF,EAAEwiK,WAAWtiK,GAAG,CAAC,GAAGD,EAAEC,EAAEqtS,KAAKrtS,EAAEsuS,IAAI,CAAe,GAAdtuS,EAAED,EAAE47O,UAAa,OAAO57O,EAAE6qB,OAAO,OAAO5qB,GAAG,OAAOA,EAAE4qB,MAAM,IAAI9qB,EAAEylG,GAAGzlG,GAAG,OAAOA,GAAG,CAAC,GAAGE,EAAEF,EAAEwuS,IAAI,OAAOtuS,EAAEF,EAAEylG,GAAGzlG,EAAG,QAAOC,CAAE,CAAIC,GAAJF,EAAEE,GAAMsiK,UAAW,QAAO,IAAK,UAASu7H,GAAG/9R,GAAkB,QAAfA,EAAEA,EAAEwuS,KAAKxuS,EAAEutS,MAAc,IAAIvtS,EAAE42N,KAAK,IAAI52N,EAAE42N,KAAK,KAAK52N,EAAE42N,KAAK,IAAI52N,EAAE42N,IAAI,KAAK52N,CAAE,UAASyqS,GAAGzqS,GAAG,GAAG,IAAIA,EAAE42N,KAAK,IAAI52N,EAAE42N,IAAI,OAAO52N,EAAEg5O,UAAU,MAAM73O,MAAM3D,EAAE,IAAM,UAASwgS,GAAGh+R,GAAG,OAAOA,EAAEyuS,KAAK,IAAK,CACvb,SAASrB,GAAGptS,GAAG,IAAIC,EAAED,EAAE0uS,IAAkC,YAA9B,IAASzuS,IAAIA,EAAED,EAAE0uS,IAAI,IAAIl2O,KAAYv4D,CAAE,KAAI0uS,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG7uS,GAAG,MAAM,CAACu2F,QAAQv2F,EAAG,UAASspJ,GAAEtpJ,GAAG,EAAE4uS,KAAK5uS,EAAEu2F,QAAQo4M,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAM,UAASrlJ,GAAEvpJ,EAAEC,GAAG2uS,KAAKD,GAAGC,IAAI5uS,EAAEu2F,QAAQv2F,EAAEu2F,QAAQt2F,CAAE,KAAI6uS,GAAG,CAAC,EAAE5lJ,GAAE2lJ,GAAGC,IAAIvkM,GAAEskM,IAAG,GAAIE,GAAGD,GAC5P,SAASE,GAAGhvS,EAAEC,GAAG,IAAIC,EAAEF,EAAEzE,KAAKytQ,aAAa,IAAI9oQ,EAAE,OAAO4uS,GAAG,IAAIzpS,EAAErF,EAAEg5O,UAAU,GAAG3zO,GAAGA,EAAE4pS,8CAA8ChvS,EAAE,OAAOoF,EAAE6pS,0CAA0C,IAAS5pS,EAAL7D,EAAE,CAAC,EAAI,IAAI6D,KAAKpF,EAAEuB,EAAE6D,GAAGrF,EAAEqF,GAAoH,OAAjHD,KAAIrF,EAAEA,EAAEg5O,WAAYi2D,4CAA4ChvS,EAAED,EAAEkvS,0CAA0CztS,GAAUA,CAAE,UAAS0tS,GAAGnvS,GAAyB,OAAO,QAA7BA,EAAEA,EAAE+oQ,yBAAmC,IAAS/oQ,CAAE,UAASovS,KAAK9lJ,GAAE/+C,IAAG++C,GAAEJ,GAAG,UAASmmJ,GAAGrvS,EAAEC,EAAEC,GAAG,GAAGgpJ,GAAE3yD,UAAUu4M,GAAG,MAAM3tS,MAAM3D,EAAE,MAAM+rJ,GAAEL,GAAEjpJ,GAAGspJ,GAAEh/C,GAAErqG,EAAG,CAClf,SAASovS,GAAGtvS,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAEg5O,UAAgC,GAAtBh5O,EAAEC,EAAE8oQ,kBAAqB,oBAAoB1jQ,EAAEkqS,gBAAgB,OAAOrvS,EAAwB,IAAI,IAAIuB,KAA9B4D,EAAEA,EAAEkqS,kBAAiC,KAAK9tS,KAAKzB,GAAG,MAAMmB,MAAM3D,EAAE,IAAI48R,EAAGn6R,IAAI,UAAUwB,IAAI,OAAOpE,EAAE,CAAC,EAAE6C,EAAEmF,EAAG,UAASmqS,GAAGxvS,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEg5O,YAAYh5O,EAAEyvS,2CAA2CX,GAAGC,GAAG7lJ,GAAE3yD,QAAQgzD,GAAEL,GAAElpJ,GAAGupJ,GAAEh/C,GAAEA,GAAEhU,UAAe,CAAG,UAASm5M,GAAG1vS,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAEg5O,UAAU,IAAI3zO,EAAE,MAAMlE,MAAM3D,EAAE,MAAM0C,GAAGF,EAAEsvS,GAAGtvS,EAAEC,EAAE8uS,IAAI1pS,EAAEoqS,0CAA0CzvS,EAAEspJ,GAAE/+C,IAAG++C,GAAEJ,IAAGK,GAAEL,GAAElpJ,IAAIspJ,GAAE/+C,IAAGg/C,GAAEh/C,GAAErqG,EAAG,CAChf,IAAIyvS,GAAG,KAAKC,GAAG,KAAKC,GAAG1pS,EAAEi0O,yBAAyB01D,GAAG3pS,EAAEk7R,0BAA0B0O,GAAG5pS,EAAE6pS,wBAAwBC,GAAG9pS,EAAE+pS,qBAAqBC,GAAGhqS,EAAEiqS,sBAAsBC,GAAGlqS,EAAEo0O,aAAa+1D,GAAGnqS,EAAEoqS,iCAAiCC,GAAGrqS,EAAEsqS,2BAA2BC,GAAGvqS,EAAEy9R,8BAA8B+M,GAAGxqS,EAAEm7R,wBAAwBsP,GAAGzqS,EAAE0qS,qBAAqBC,GAAG3qS,EAAEk0O,sBAAsB02D,GAAG,CAAC,EAAEC,QAAG,IAASb,GAAGA,GAAG,WAAY,EAACc,GAAG,KAAK5/E,GAAG,KAAK6/E,IAAG,EAAGC,GAAGd,KAAKpnJ,GAAE,IAAIkoJ,GAAGd,GAAG,WAAW,OAAOA,KAAKc,EAAG,EACzd,SAASC,KAAK,OAAOd,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAM3vS,MAAM3D,EAAE,MAAQ,UAAS6zS,GAAGrxS,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOwwS,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAM3vS,MAAM3D,EAAE,MAAQ,UAAS8zS,GAAGtxS,EAAEC,GAAW,OAARD,EAAEqxS,GAAGrxS,GAAU6vS,GAAG7vS,EAAEC,EAAG,UAASsxS,GAAGvxS,EAAEC,EAAEC,GAAW,OAARF,EAAEqxS,GAAGrxS,GAAU8vS,GAAG9vS,EAAEC,EAAEC,EAAG,UAASsxS,KAAK,GAAG,OAAOngF,GAAG,CAAC,IAAIrxN,EAAEqxN,GAAGA,GAAG,KAAK0+E,GAAG/vS,EAAG,CAAAyxS,IAAK,CAChb,SAASA,KAAK,IAAIP,IAAI,OAAOD,GAAG,CAACC,IAAG,EAAG,IAAIlxS,EAAE,EAAE,IAAI,IAAIC,EAAEgxS,GAAGK,GAAG,IAAG,WAAW,KAAKtxS,EAAEC,EAAElW,OAAOiW,IAAI,CAAC,IAAIE,EAAED,EAAED,GAAG,GAAGE,EAAEA,GAAE,SAAU,OAAOA,EAAG,CAAC,IAAE+wS,GAAG,IAA6E,CAAxE,MAAM/wS,GAAG,MAAM,OAAO+wS,KAAKA,GAAGA,GAAGh1S,MAAM+D,EAAE,IAAI8vS,GAAGU,GAAGgB,IAAItxS,CAAG,CAA9J,QAAsKgxS,IAAG,CAAG,CAAC,CAAC,KAAIQ,GAAGjZ,EAAGtB,wBAAwB,SAAS71C,GAAGthP,EAAEC,GAAG,GAAGD,GAAGA,EAAE04I,aAAa,CAA4B,IAAI,IAAIx4I,KAAnCD,EAAE5C,EAAE,CAAC,EAAE4C,GAAGD,EAAEA,EAAE04I,kBAA4B,IAASz4I,EAAEC,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,CAAE,QAAOA,CAAE,KAAI0xS,GAAG9C,GAAG,MAAM+C,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAK,CACjc,SAASI,GAAGhyS,GAAG,IAAIC,EAAE0xS,GAAGp7M,QAAQ+yD,GAAEqoJ,IAAI3xS,EAAEzE,KAAKwkF,SAAS03M,cAAcx3R,CAAE,UAASgyS,GAAGjyS,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIE,EAAEF,EAAE67O,UAAU,IAAI77O,EAAEkyS,WAAWjyS,KAAKA,EAAtB,CAAwB,GAAG,OAAOC,IAAIA,EAAEgyS,WAAWjyS,KAAKA,EAAE,MAAWC,EAAEgyS,YAAYjyS,CAAnF,MAA0FD,EAAEkyS,YAAYjyS,EAAE,OAAOC,IAAIA,EAAEgyS,YAAYjyS,GAAGD,EAAEA,EAAE+4O,MAAO,CAAC,UAASo5D,GAAGnyS,EAAEC,GAAG2xS,GAAG5xS,EAAE8xS,GAAGD,GAAG,KAAsB,QAAjB7xS,EAAEA,EAAEoyS,eAAuB,OAAOpyS,EAAEqyS,eAAe,KAAKryS,EAAEsyS,MAAMryS,KAAKsyS,IAAG,GAAIvyS,EAAEqyS,aAAa,KAAM,CAC7Y,SAASG,GAAGxyS,EAAEC,GAAG,GAAG6xS,KAAK9xS,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAE6xS,GAAG9xS,EAAEC,EAAE,YAAWA,EAAE,CAAC+K,QAAQhL,EAAEyyS,aAAaxyS,EAAEnT,KAAK,MAAS,OAAO+kT,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMzwS,MAAM3D,EAAE,MAAMq0S,GAAG5xS,EAAE2xS,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAapyS,EAAEyyS,WAAW,KAAM,MAAKb,GAAGA,GAAG/kT,KAAKmT,EAAE,OAAOD,EAAEy3R,aAAc,KAAIkb,IAAG,EAAG,SAASC,GAAG5yS,GAAGA,EAAE6yS,YAAY,CAACC,UAAU9yS,EAAEs/R,cAAcyT,gBAAgB,KAAKC,eAAe,KAAKrjI,OAAO,CAACv4C,QAAQ,MAAMwtB,QAAQ,KAAM,CAChb,SAASquJ,GAAGjzS,EAAEC,GAAGD,EAAEA,EAAE6yS,YAAY5yS,EAAE4yS,cAAc7yS,IAAIC,EAAE4yS,YAAY,CAACC,UAAU9yS,EAAE8yS,UAAUC,gBAAgB/yS,EAAE+yS,gBAAgBC,eAAehzS,EAAEgzS,eAAerjI,OAAO3vK,EAAE2vK,OAAO/qB,QAAQ5kJ,EAAE4kJ,SAAU,UAASsuJ,GAAGlzS,EAAEC,GAAG,MAAM,CAACkzS,UAAUnzS,EAAEozS,KAAKnzS,EAAE22N,IAAI,EAAEy8E,QAAQ,KAAKr+R,SAAS,KAAKloB,KAAK,KAAM,UAASwmT,GAAGtzS,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAE6yS,aAAwB,CAAY,IAAI3yS,GAAfF,EAAEA,EAAE2vK,QAAev4C,QAAQ,OAAOl3H,EAAED,EAAEnT,KAAKmT,GAAGA,EAAEnT,KAAKoT,EAAEpT,KAAKoT,EAAEpT,KAAKmT,GAAGD,EAAEo3H,QAAQn3H,CAAE,CAAC,CACxZ,SAASszS,GAAGvzS,EAAEC,GAAG,IAAIC,EAAEF,EAAE6yS,YAAYxtS,EAAErF,EAAE67O,UAAU,GAAG,OAAOx2O,GAAoBnF,KAAhBmF,EAAEA,EAAEwtS,aAAmB,CAAC,IAAIpxS,EAAE,KAAK6D,EAAE,KAAyB,GAAG,QAAvBpF,EAAEA,EAAE6yS,iBAA4B,CAAC,EAAE,CAAC,IAAIxtS,EAAE,CAAC4tS,UAAUjzS,EAAEizS,UAAUC,KAAKlzS,EAAEkzS,KAAKx8E,IAAI12N,EAAE02N,IAAIy8E,QAAQnzS,EAAEmzS,QAAQr+R,SAAS9U,EAAE8U,SAASloB,KAAK,MAAM,OAAOwY,EAAE7D,EAAE6D,EAAEC,EAAED,EAAEA,EAAExY,KAAKyY,EAAErF,EAAEA,EAAEpT,IAAK,OAAM,OAAOoT,GAAG,OAAOoF,EAAE7D,EAAE6D,EAAErF,EAAEqF,EAAEA,EAAExY,KAAKmT,CAAE,MAAKwB,EAAE6D,EAAErF,EAAiH,OAA/GC,EAAE,CAAC4yS,UAAUztS,EAAEytS,UAAUC,gBAAgBtxS,EAAEuxS,eAAe1tS,EAAEqqK,OAAOtqK,EAAEsqK,OAAO/qB,QAAQv/I,EAAEu/I,cAAS5kJ,EAAE6yS,YAAY3yS,EAAS,CAAmB,QAAnBF,EAAEE,EAAE8yS,gBAAwB9yS,EAAE6yS,gBAAgB9yS,EAAED,EAAElT,KACnfmT,EAAEC,EAAE8yS,eAAe/yS,CAAE,CACrB,SAASuzS,GAAGxzS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE6yS,YAAYF,IAAG,EAAG,IAAIrtS,EAAE7D,EAAEsxS,gBAAgBxtS,EAAE9D,EAAEuxS,eAAextS,EAAE/D,EAAEkuK,OAAOv4C,QAAQ,GAAG,OAAO5xH,EAAE,CAAC/D,EAAEkuK,OAAOv4C,QAAQ,KAAK,IAAIh0D,EAAE59D,EAAEtJ,EAAEknE,EAAEt2E,KAAKs2E,EAAEt2E,KAAK,KAAK,OAAOyY,EAAED,EAAEpJ,EAAEqJ,EAAEzY,KAAKoP,EAAEqJ,EAAE69D,EAAE,IAAIhmE,EAAE4C,EAAE67O,UAAU,GAAG,OAAOz+O,EAAE,CAAiB,IAAI8pJ,GAApB9pJ,EAAEA,EAAEy1S,aAAoBG,eAAe9rJ,IAAI3hJ,IAAI,OAAO2hJ,EAAE9pJ,EAAE21S,gBAAgB72S,EAAEgrJ,EAAEp6J,KAAKoP,EAAEkB,EAAE41S,eAAe5vO,EAAG,CAAC,IAAG,OAAO99D,EAAE,CAA8B,IAA7B4hJ,EAAEzlJ,EAAEqxS,UAAUvtS,EAAE,EAAEnI,EAAElB,EAAEknE,EAAE,OAAO,CAAC59D,EAAEF,EAAE8tS,KAAK,IAAIjrS,EAAE7C,EAAE6tS,UAAU,IAAI9tS,EAAEG,KAAKA,EAAE,CAAC,OAAOpI,IAAIA,EAAEA,EAAEtQ,KAAK,CAACqmT,UAAUhrS,EAAEirS,KAAK,EAAEx8E,IAAItxN,EAAEsxN,IAAIy8E,QAAQ/tS,EAAE+tS,QAAQr+R,SAAS1P,EAAE0P,SACrfloB,KAAK,OAAOkT,EAAE,CAAC,IAAImnJ,EAAEnnJ,EAAEzC,EAAE+H,EAAU,OAARE,EAAEvF,EAAEkI,EAAEjI,EAAS3C,EAAEq5N,KAAK,KAAK,EAAc,GAAG,oBAAfzvE,EAAE5pJ,EAAE81S,SAAiC,CAACnsJ,EAAEC,EAAEt6J,KAAKsb,EAAE++I,EAAE1hJ,GAAG,MAAMxF,CAAE,CAAAknJ,EAAEC,EAAE,MAAMnnJ,EAAE,KAAK,EAAEmnJ,EAAEmhG,OAAe,KAATnhG,EAAEmhG,MAAY,GAAG,KAAK,EAAsD,GAAG,QAA3C9iP,EAAE,oBAAd2hJ,EAAE5pJ,EAAE81S,SAAgClsJ,EAAEt6J,KAAKsb,EAAE++I,EAAE1hJ,GAAG2hJ,SAAe,IAAS3hJ,EAAE,MAAMxF,EAAEknJ,EAAE7pJ,EAAE,CAAC,EAAE6pJ,EAAE1hJ,GAAG,MAAMxF,EAAE,KAAK,EAAE2yS,IAAG,EAAI,QAAOrtS,EAAE0P,WAAWhV,EAAEsoP,OAAO,GAAe,QAAZ9iP,EAAE/D,EAAEmjJ,SAAiBnjJ,EAAEmjJ,QAAQ,CAACt/I,GAAGE,EAAE/b,KAAK6b,GAAI,MAAK6C,EAAE,CAACgrS,UAAUhrS,EAAEirS,KAAK5tS,EAAEoxN,IAAItxN,EAAEsxN,IAAIy8E,QAAQ/tS,EAAE+tS,QAAQr+R,SAAS1P,EAAE0P,SAASloB,KAAK,MAAM,OAAOsQ,GAAGlB,EAAEkB,EAAE+K,EAAEi7D,EAAE8jF,GAAG9pJ,EAAEA,EAAEtQ,KAAKqb,EAAE5C,GAAGC,EAAW,GAAG,QAAZF,EAAEA,EAAExY,MAC1e,IAAsB,QAAnB0Y,EAAE/D,EAAEkuK,OAAOv4C,SAAiB,MAAW9xH,EAAEE,EAAE1Y,KAAK0Y,EAAE1Y,KAAK,KAAK2U,EAAEuxS,eAAextS,EAAE/D,EAAEkuK,OAAOv4C,QAAQ,IAAzD,CAA8D,CAAS,OAAOh6H,IAAIgmE,EAAE8jF,GAAGzlJ,EAAEqxS,UAAU1vO,EAAE3hE,EAAEsxS,gBAAgB72S,EAAEuF,EAAEuxS,eAAe51S,EAAEq2S,IAAIluS,EAAEvF,EAAEsyS,MAAM/sS,EAAEvF,EAAEs/R,cAAcp4I,CAAE,CAAC,UAASwsJ,GAAG1zS,EAAEC,EAAEC,GAA8B,GAA3BF,EAAEC,EAAE2kJ,QAAQ3kJ,EAAE2kJ,QAAQ,KAAQ,OAAO5kJ,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEjW,OAAOkW,IAAI,CAAC,IAAIoF,EAAErF,EAAEC,GAAGwB,EAAE4D,EAAE2P,SAAS,GAAG,OAAOvT,EAAE,CAAqB,GAApB4D,EAAE2P,SAAS,KAAK3P,EAAEnF,EAAK,oBAAoBuB,EAAE,MAAMN,MAAM3D,EAAE,IAAIiE,IAAIA,EAAE5U,KAAKwY,EAAG,CAAC,CAAC,KAAIsuS,IAAI,IAAIx5B,EAAGriI,WAAWynG,KAC3b,SAASq0D,GAAG5zS,EAAEC,EAAEC,EAAEmF,GAA8BnF,EAAE,QAAXA,EAAEA,EAAEmF,EAAtBpF,EAAED,EAAEs/R,sBAAmC,IAASp/R,EAAED,EAAE5C,EAAE,CAAC,EAAE4C,EAAEC,GAAGF,EAAEs/R,cAAcp/R,EAAE,IAAIF,EAAEsyS,QAAQtyS,EAAE6yS,YAAYC,UAAU5yS,EAAG,CAC9I,IAAI2zS,GAAG,CAAClvE,UAAU,SAAS3kO,GAAG,SAAOA,EAAEA,EAAE8zS,kBAAiB1U,GAAGp/R,KAAKA,CAAK,EAACy2R,gBAAgB,SAASz2R,EAAEC,EAAEC,GAAGF,EAAEA,EAAE8zS,gBAAgB,IAAIzuS,EAAE0uS,KAAKtyS,EAAEuyS,GAAGh0S,GAAGsF,EAAE4tS,GAAG7tS,EAAE5D,GAAG6D,EAAE+tS,QAAQpzS,OAAE,IAASC,GAAG,OAAOA,IAAIoF,EAAE0P,SAAS9U,GAAGozS,GAAGtzS,EAAEsF,GAAG2uS,GAAGj0S,EAAEyB,EAAE4D,EAAG,EAACmxR,oBAAoB,SAASx2R,EAAEC,EAAEC,GAAGF,EAAEA,EAAE8zS,gBAAgB,IAAIzuS,EAAE0uS,KAAKtyS,EAAEuyS,GAAGh0S,GAAGsF,EAAE4tS,GAAG7tS,EAAE5D,GAAG6D,EAAEsxN,IAAI,EAAEtxN,EAAE+tS,QAAQpzS,OAAE,IAASC,GAAG,OAAOA,IAAIoF,EAAE0P,SAAS9U,GAAGozS,GAAGtzS,EAAEsF,GAAG2uS,GAAGj0S,EAAEyB,EAAE4D,EAAG,EAACkxR,mBAAmB,SAASv2R,EAAEC,GAAGD,EAAEA,EAAE8zS,gBAAgB,IAAI5zS,EAAE6zS,KAAK1uS,EAAE2uS,GAAGh0S,GAAGyB,EAAEyxS,GAAGhzS,EAAEmF,GAAG5D,EAAEm1N,IAAI,OAAE,IAAS32N,GAAG,OAAOA,IAAIwB,EAAEuT,SACjf/U,GAAGqzS,GAAGtzS,EAAEyB,GAAGwyS,GAAGj0S,EAAEqF,EAAEnF,EAAG,GAAE,SAASg0S,GAAGl0S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,EAAEC,GAAiB,MAAM,oBAApBvF,EAAEA,EAAEg5O,WAAsCm7D,sBAAsBn0S,EAAEm0S,sBAAsB9uS,EAAEC,EAAEC,IAAGtF,EAAE/U,YAAW+U,EAAE/U,UAAUyrS,wBAAsB+U,GAAGxrS,EAAEmF,KAAKqmS,GAAGjqS,EAAE6D,GAAM,CACrN,SAAS8uS,GAAGp0S,EAAEC,EAAEC,GAAG,IAAImF,GAAE,EAAG5D,EAAEqtS,GAAOxpS,EAAErF,EAAEkwN,YAA2W,MAA/V,kBAAkB7qN,GAAG,OAAOA,EAAEA,EAAEktS,GAAGltS,IAAI7D,EAAE0tS,GAAGlvS,GAAG8uS,GAAG7lJ,GAAE3yD,QAAyBjxF,GAAGD,EAAE,QAAtBA,EAAEpF,EAAE+oQ,oBAA4B,IAAS3jQ,GAAG2pS,GAAGhvS,EAAEyB,GAAGqtS,IAAI7uS,EAAE,IAAIA,EAAEC,EAAEoF,GAAGtF,EAAEs/R,cAAc,OAAOr/R,EAAE+0C,YAAO,IAAS/0C,EAAE+0C,MAAM/0C,EAAE+0C,MAAM,KAAK/0C,EAAEy2R,QAAQmd,GAAG7zS,EAAEg5O,UAAU/4O,EAAEA,EAAE6zS,gBAAgB9zS,EAAEqF,KAAIrF,EAAEA,EAAEg5O,WAAYi2D,4CAA4CxtS,EAAEzB,EAAEkvS,0CAA0C5pS,GAAUrF,CAAE,CAC7Z,SAASo0S,GAAGr0S,EAAEC,EAAEC,EAAEmF,GAAGrF,EAAEC,EAAE+0C,MAAM,oBAAoB/0C,EAAEk1N,2BAA2Bl1N,EAAEk1N,0BAA0Bj1N,EAAEmF,GAAG,oBAAoBpF,EAAEq0S,kCAAkCr0S,EAAEq0S,iCAAiCp0S,EAAEmF,GAAGpF,EAAE+0C,QAAQh1C,GAAG6zS,GAAGrd,oBAAoBv2R,EAAEA,EAAE+0C,MAAM,KAAM,CACrQ,SAASu/P,GAAGv0S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAEg5O,UAAUv3O,EAAE9W,MAAMuV,EAAEuB,EAAEuzC,MAAMh1C,EAAEs/R,cAAc79R,EAAE89O,KAAKo0D,GAAGf,GAAG5yS,GAAG,IAAIsF,EAAErF,EAAEkwN,YAAY,kBAAkB7qN,GAAG,OAAOA,EAAE7D,EAAEuJ,QAAQwnS,GAAGltS,IAAIA,EAAE6pS,GAAGlvS,GAAG8uS,GAAG7lJ,GAAE3yD,QAAQ90F,EAAEuJ,QAAQgkS,GAAGhvS,EAAEsF,IAAIkuS,GAAGxzS,EAAEE,EAAEuB,EAAE4D,GAAG5D,EAAEuzC,MAAMh1C,EAAEs/R,cAA2C,oBAA7Bh6R,EAAErF,EAAEmtN,4BAAiDwmF,GAAG5zS,EAAEC,EAAEqF,EAAEpF,GAAGuB,EAAEuzC,MAAMh1C,EAAEs/R,eAAe,oBAAoBr/R,EAAEmtN,0BAA0B,oBAAoB3rN,EAAE+zN,yBAAyB,oBAAoB/zN,EAAE+yS,2BAA2B,oBAAoB/yS,EAAEyzN,qBACvej1N,EAAEwB,EAAEuzC,MAAM,oBAAoBvzC,EAAEyzN,oBAAoBzzN,EAAEyzN,qBAAqB,oBAAoBzzN,EAAE+yS,2BAA2B/yS,EAAE+yS,4BAA4Bv0S,IAAIwB,EAAEuzC,OAAO6+P,GAAGrd,oBAAoB/0R,EAAEA,EAAEuzC,MAAM,MAAMw+P,GAAGxzS,EAAEE,EAAEuB,EAAE4D,GAAG5D,EAAEuzC,MAAMh1C,EAAEs/R,eAAe,oBAAoB79R,EAAE8rN,oBAAoBvtN,EAAEsoP,OAAO,EAAG,KAAImsD,GAAG/lT,MAAMC,QACvT,SAAS+lT,GAAG10S,EAAEC,EAAEC,GAAW,GAAG,QAAXF,EAAEE,EAAE2uI,MAAiB,oBAAoB7uI,GAAG,kBAAkBA,EAAE,CAAC,GAAGE,EAAE62R,OAAO,CAAY,GAAX72R,EAAEA,EAAE62R,OAAY,CAAC,GAAG,IAAI72R,EAAE02N,IAAI,MAAMz1N,MAAM3D,EAAE,MAAM,IAAI6H,EAAEnF,EAAE84O,SAAU,KAAI3zO,EAAE,MAAMlE,MAAM3D,EAAE,IAAIwC,IAAI,IAAIyB,EAAE,GAAGzB,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE4uI,KAAK,oBAAoB5uI,EAAE4uI,KAAK5uI,EAAE4uI,IAAI8lK,aAAalzS,EAASxB,EAAE4uI,KAAI5uI,EAAE,SAASD,GAAG,IAAIC,EAAEoF,EAAEk6O,KAAKt/O,IAAI0zS,KAAK1zS,EAAEoF,EAAEk6O,KAAK,CAAC,GAAG,OAAOv/O,SAASC,EAAEwB,GAAGxB,EAAEwB,GAAGzB,CAAE,EAACC,EAAE00S,WAAWlzS,EAASxB,EAAE,IAAG,kBAAkBD,EAAE,MAAMmB,MAAM3D,EAAE,MAAM,IAAI0C,EAAE62R,OAAO,MAAM51R,MAAM3D,EAAE,IAAIwC,GAAK,QAAOA,CAAE,CACle,SAAS40S,GAAG50S,EAAEC,GAAG,GAAG,aAAaD,EAAEzE,KAAK,MAAM4F,MAAM3D,EAAE,GAAG,oBAAoBtU,OAAOgC,UAAU2D,SAAShC,KAAKoT,GAAG,qBAAqB/W,OAAOD,KAAKgX,GAAGnR,KAAK,MAAM,IAAImR,GAAK,CACvK,SAAS40S,GAAG70S,GAAG,SAASC,EAAEA,EAAEC,GAAG,GAAGF,EAAE,CAAC,IAAIqF,EAAEpF,EAAE60S,WAAW,OAAOzvS,GAAGA,EAAE0vS,WAAW70S,EAAED,EAAE60S,WAAW50S,GAAGD,EAAE+0S,YAAY/0S,EAAE60S,WAAW50S,EAAEA,EAAE60S,WAAW,KAAK70S,EAAEooP,MAAM,CAAE,CAAC,UAASpoP,EAAEA,EAAEmF,GAAG,IAAIrF,EAAE,OAAO,KAAK,KAAK,OAAOqF,GAAGpF,EAAEC,EAAEmF,GAAGA,EAAEA,EAAEq0O,QAAQ,OAAO,IAAK,UAASr0O,EAAErF,EAAEC,GAAG,IAAID,EAAE,IAAIg4D,IAAI,OAAO/3D,GAAG,OAAOA,EAAE/V,IAAI8V,EAAEc,IAAIb,EAAE/V,IAAI+V,GAAGD,EAAEc,IAAIb,EAAEpE,MAAMoE,GAAGA,EAAEA,EAAEy5O,QAAQ,OAAO15O,CAAE,UAASyB,EAAEzB,EAAEC,GAAsC,OAAnCD,EAAEi1S,GAAGj1S,EAAEC,IAAKpE,MAAM,EAAEmE,EAAE05O,QAAQ,KAAY15O,CAAE,UAASsF,EAAErF,EAAEC,EAAEmF,GAAa,OAAVpF,EAAEpE,MAAMwJ,EAAMrF,EAA4B,QAAjBqF,EAAEpF,EAAE47O,YAA6Bx2O,EAAEA,EAAExJ,OAAQqE,GAAGD,EAAEqoP,MAAM,EACpfpoP,GAAGmF,GAAEpF,EAAEqoP,MAAM,EAASpoP,GADoaA,CACla,UAASqF,EAAEtF,GAAsC,OAAnCD,GAAG,OAAOC,EAAE47O,YAAY57O,EAAEqoP,MAAM,GAAUroP,CAAE,UAASuF,EAAExF,EAAEC,EAAEC,EAAEmF,GAAG,OAAG,OAAOpF,GAAG,IAAIA,EAAE22N,MAAW32N,EAAEi1S,GAAGh1S,EAAEF,EAAE66C,KAAKx1C,IAAK0zO,OAAO/4O,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAK64O,OAAO/4O,EAASC,EAAE,UAASmjE,EAAEpjE,EAAEC,EAAEC,EAAEmF,GAAG,OAAG,OAAOpF,GAAGA,EAAE+0K,cAAc90K,EAAE3E,OAAY8J,EAAE5D,EAAExB,EAAEC,EAAEvV,QAASkkJ,IAAI6lK,GAAG10S,EAAEC,EAAEC,GAAGmF,EAAE0zO,OAAO/4O,EAAEqF,KAAEA,EAAE8vS,GAAGj1S,EAAE3E,KAAK2E,EAAEhW,IAAIgW,EAAEvV,MAAM,KAAKqV,EAAE66C,KAAKx1C,IAAKwpI,IAAI6lK,GAAG10S,EAAEC,EAAEC,GAAGmF,EAAE0zO,OAAO/4O,EAASqF,EAAE,UAASnJ,EAAE8D,EAAEC,EAAEC,EAAEmF,GAAG,OAAG,OAAOpF,GAAG,IAAIA,EAAE22N,KAAK32N,EAAE+4O,UAAUC,gBAAgB/4O,EAAE+4O,eAAeh5O,EAAE+4O,UAAU0kC,iBAAiBx9Q,EAAEw9Q,iBAAsBz9Q,EACrgBm1S,GAAGl1S,EAAEF,EAAE66C,KAAKx1C,IAAK0zO,OAAO/4O,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,EAAE6a,UAAU,KAAMg+N,OAAO/4O,EAASC,EAAE,UAAS7C,EAAE4C,EAAEC,EAAEC,EAAEmF,EAAEC,GAAG,OAAG,OAAOrF,GAAG,IAAIA,EAAE22N,MAAW32N,EAAEo1S,GAAGn1S,EAAEF,EAAE66C,KAAKx1C,EAAEC,IAAKyzO,OAAO/4O,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAK64O,OAAO/4O,EAASC,EAAE,UAASinJ,EAAElnJ,EAAEC,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,kBAAkBA,EAAE,OAAOA,EAAEi1S,GAAG,GAAGj1S,EAAED,EAAE66C,KAAK36C,IAAK64O,OAAO/4O,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE62R,UAAU,KAAK4B,EAAG,OAAOx4R,EAAEi1S,GAAGl1S,EAAE1E,KAAK0E,EAAE/V,IAAI+V,EAAEtV,MAAM,KAAKqV,EAAE66C,KAAK36C,IAAK2uI,IAAI6lK,GAAG10S,EAAE,KAAKC,GAAGC,EAAE64O,OAAO/4O,EAAEE,EAAE,KAAKy4R,EAAG,OAAO14R,EAAEm1S,GAAGn1S,EAAED,EAAE66C,KAAK36C,IAAK64O,OAAO/4O,EAAEC,EAAE,GAAGw0S,GAAGx0S,IAAI45R,EAAG55R,GAAG,OAAOA,EAAEo1S,GAAGp1S,EACnfD,EAAE66C,KAAK36C,EAAE,OAAQ64O,OAAO/4O,EAAEC,EAAE20S,GAAG50S,EAAEC,EAAG,QAAO,IAAK,UAASkI,EAAEnI,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE,OAAOxB,EAAEA,EAAE/V,IAAI,KAAK,GAAG,kBAAkBgW,GAAG,kBAAkBA,EAAE,OAAO,OAAOuB,EAAE,KAAK+D,EAAExF,EAAEC,EAAE,GAAGC,EAAEmF,GAAG,GAAG,kBAAkBnF,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE42R,UAAU,KAAK4B,EAAG,OAAOx4R,EAAEhW,MAAMuX,EAAEvB,EAAE3E,OAAOq9R,EAAGx7R,EAAE4C,EAAEC,EAAEC,EAAEvV,MAAMowB,SAAS1V,EAAE5D,GAAG2hE,EAAEpjE,EAAEC,EAAEC,EAAEmF,GAAG,KAAK,KAAKszR,EAAG,OAAOz4R,EAAEhW,MAAMuX,EAAEvF,EAAE8D,EAAEC,EAAEC,EAAEmF,GAAG,KAAK,GAAGovS,GAAGv0S,IAAI25R,EAAG35R,GAAG,OAAO,OAAOuB,EAAE,KAAKrE,EAAE4C,EAAEC,EAAEC,EAAEmF,EAAE,MAAMuvS,GAAG50S,EAAEE,EAAG,QAAO,IAAK,UAASinJ,EAAEnnJ,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,GAAG,kBAAkB4D,GAAG,kBAAkBA,EAAE,OACleG,EAAEvF,EADueD,EAAEA,EAAEpS,IAAIsS,IACtf,KAAW,GAAGmF,EAAE5D,GAAG,GAAG,kBAAkB4D,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEyxR,UAAU,KAAK4B,EAAG,OAAO14R,EAAEA,EAAEpS,IAAI,OAAOyX,EAAEnb,IAAIgW,EAAEmF,EAAEnb,MAAM,KAAKmb,EAAE9J,OAAOq9R,EAAGx7R,EAAE6C,EAAED,EAAEqF,EAAE1a,MAAMowB,SAAStZ,EAAE4D,EAAEnb,KAAKk5E,EAAEnjE,EAAED,EAAEqF,EAAE5D,GAAG,KAAKk3R,EAAG,OAA2Cz8R,EAAE+D,EAAtCD,EAAEA,EAAEpS,IAAI,OAAOyX,EAAEnb,IAAIgW,EAAEmF,EAAEnb,MAAM,KAAWmb,EAAE5D,GAAG,GAAGgzS,GAAGpvS,IAAIw0R,EAAGx0R,GAAG,OAAwBjI,EAAE6C,EAAnBD,EAAEA,EAAEpS,IAAIsS,IAAI,KAAWmF,EAAE5D,EAAE,MAAMmzS,GAAG30S,EAAEoF,EAAG,QAAO,IAAK,UAAS9H,EAAEkE,EAAE8D,EAAEC,EAAE49D,GAAG,IAAI,IAAIlnE,EAAE,KAAKuB,EAAE,KAAKsb,EAAExT,EAAEuJ,EAAEvJ,EAAE,EAAExF,EAAE,KAAK,OAAOgZ,GAAGjK,EAAEtJ,EAAEzb,OAAO+kB,IAAI,CAACiK,EAAEld,MAAMiT,GAAG/O,EAAEgZ,EAAEA,EAAE,MAAMhZ,EAAEgZ,EAAE2gO,QAAQ,IAAIt8O,EAAE+K,EAAE1G,EAAEsX,EAAEvT,EAAEsJ,GAAGs0D,GAAG,GAAG,OAAOhmE,EAAE,CAAC,OAAO2b,IAAIA,EAAEhZ,GAAG,KAAM,CAAAC,GAAG+Y,GAAG,OACjf3b,EAAEy+O,WAAW57O,EAAEwB,EAAEsX,GAAGxT,EAAED,EAAElI,EAAEmI,EAAEuJ,GAAG,OAAOrR,EAAEvB,EAAEkB,EAAEK,EAAEi8O,QAAQt8O,EAAEK,EAAEL,EAAE2b,EAAEhZ,CAAE,IAAG+O,IAAItJ,EAAEzb,OAAO,OAAOmW,EAAEuB,EAAEsX,GAAG7c,EAAE,GAAG,OAAO6c,EAAE,CAAC,KAAKjK,EAAEtJ,EAAEzb,OAAO+kB,IAAkB,QAAdiK,EAAEmuI,EAAEzlJ,EAAE+D,EAAEsJ,GAAGs0D,MAAc79D,EAAED,EAAEyT,EAAExT,EAAEuJ,GAAG,OAAOrR,EAAEvB,EAAE6c,EAAEtb,EAAEi8O,QAAQ3gO,EAAEtb,EAAEsb,GAAG,OAAO7c,CAAE,KAAI6c,EAAE1T,EAAE5D,EAAEsX,GAAGjK,EAAEtJ,EAAEzb,OAAO+kB,IAAsB,QAAlB/O,EAAEonJ,EAAEpuI,EAAEtX,EAAEqN,EAAEtJ,EAAEsJ,GAAGs0D,MAAcpjE,GAAG,OAAOD,EAAE87O,WAAW9iO,EAAEmuB,OAAO,OAAOnnC,EAAE7V,IAAI4kB,EAAE/O,EAAE7V,KAAKqb,EAAED,EAAEvF,EAAEwF,EAAEuJ,GAAG,OAAOrR,EAAEvB,EAAE6D,EAAEtC,EAAEi8O,QAAQ35O,EAAEtC,EAAEsC,GAA4C,OAAzCC,GAAG+Y,EAAE9uB,SAAQ,SAAS+V,GAAG,OAAOC,EAAEwB,EAAEzB,EAAG,IAAS9D,CAAE,UAASmF,EAAEI,EAAE8D,EAAEC,EAAE49D,GAAG,IAAIlnE,EAAE29R,EAAGr0R,GAAG,GAAG,oBAAoBtJ,EAAE,MAAMiF,MAAM3D,EAAE,MAAkB,GAAG,OAAfgI,EAAEtJ,EAAErP,KAAK2Y,IAC1e,MAAMrE,MAAM3D,EAAE,MAAM,IAAI,IAAIC,EAAEvB,EAAE,KAAK6c,EAAExT,EAAEuJ,EAAEvJ,EAAE,EAAExF,EAAE,KAAK3C,EAAEoI,EAAE1Y,OAAO,OAAOisB,IAAI3b,EAAErQ,KAAK+hB,IAAI1R,EAAEoI,EAAE1Y,OAAO,CAACisB,EAAEld,MAAMiT,GAAG/O,EAAEgZ,EAAEA,EAAE,MAAMhZ,EAAEgZ,EAAE2gO,QAAQ,IAAIr4O,EAAE8G,EAAE1G,EAAEsX,EAAE3b,EAAE5R,MAAM43E,GAAG,GAAG,OAAO/hE,EAAE,CAAC,OAAO0X,IAAIA,EAAEhZ,GAAG,KAAM,CAAAC,GAAG+Y,GAAG,OAAO1X,EAAEw6O,WAAW57O,EAAEwB,EAAEsX,GAAGxT,EAAED,EAAEjE,EAAEkE,EAAEuJ,GAAG,OAAOrR,EAAEvB,EAAEmF,EAAE5D,EAAEi8O,QAAQr4O,EAAE5D,EAAE4D,EAAE0X,EAAEhZ,CAAE,IAAG3C,EAAErQ,KAAK,OAAOmT,EAAEuB,EAAEsX,GAAG7c,EAAE,GAAG,OAAO6c,EAAE,CAAC,MAAM3b,EAAErQ,KAAK+hB,IAAI1R,EAAEoI,EAAE1Y,OAAwB,QAAjBsQ,EAAE8pJ,EAAEzlJ,EAAErE,EAAE5R,MAAM43E,MAAc79D,EAAED,EAAElI,EAAEmI,EAAEuJ,GAAG,OAAOrR,EAAEvB,EAAEkB,EAAEK,EAAEi8O,QAAQt8O,EAAEK,EAAEL,GAAG,OAAOlB,CAAE,KAAI6c,EAAE1T,EAAE5D,EAAEsX,IAAI3b,EAAErQ,KAAK+hB,IAAI1R,EAAEoI,EAAE1Y,OAA4B,QAArBsQ,EAAE+pJ,EAAEpuI,EAAEtX,EAAEqN,EAAE1R,EAAE5R,MAAM43E,MAAcpjE,GAAG,OAAO5C,EAAEy+O,WAChf9iO,EAAEmuB,OAAO,OAAO9pC,EAAElT,IAAI4kB,EAAE1R,EAAElT,KAAKqb,EAAED,EAAElI,EAAEmI,EAAEuJ,GAAG,OAAOrR,EAAEvB,EAAEkB,EAAEK,EAAEi8O,QAAQt8O,EAAEK,EAAEL,GAA4C,OAAzC4C,GAAG+Y,EAAE9uB,SAAQ,SAAS+V,GAAG,OAAOC,EAAEwB,EAAEzB,EAAG,IAAS9D,CAAE,QAAO,SAAS8D,EAAEqF,EAAEC,EAAEE,GAAG,IAAI49D,EAAE,kBAAkB99D,GAAG,OAAOA,GAAGA,EAAE/J,OAAOq9R,GAAI,OAAOtzR,EAAEpb,IAAIk5E,IAAI99D,EAAEA,EAAE3a,MAAMowB,UAAU,IAAI7e,EAAE,kBAAkBoJ,GAAG,OAAOA,EAAE,GAAGpJ,EAAE,OAAOoJ,EAAEwxR,UAAU,KAAK4B,EAAG14R,EAAE,CAAS,IAAR9D,EAAEoJ,EAAEpb,IAAQk5E,EAAE/9D,EAAE,OAAO+9D,GAAG,CAAC,GAAGA,EAAEl5E,MAAMgS,EAAE,CAAC,GAAmB,IAAZknE,EAAEwzJ,KAAY,GAAGtxN,EAAE/J,OAAOq9R,EAAG,CAAC14R,EAAEF,EAAEojE,EAAEs2K,UAASr0O,EAAE5D,EAAE2hE,EAAE99D,EAAE3a,MAAMowB,WAAYg+N,OAAO/4O,EAAEA,EAAEqF,EAAE,MAAMrF,CAAE,OAAc,GAAGojE,EAAE4xG,cAAc1vK,EAAE/J,KAAK,CAAC2E,EAAEF,EAAEojE,EAAEs2K,UAC5er0O,EAAE5D,EAAE2hE,EAAE99D,EAAE3a,QAASkkJ,IAAI6lK,GAAG10S,EAAEojE,EAAE99D,GAAGD,EAAE0zO,OAAO/4O,EAAEA,EAAEqF,EAAE,MAAMrF,CAAE,CAACE,EAAEF,EAAEojE,GAAG,KAAM,CAAKnjE,EAAED,EAAEojE,GAAGA,EAAEA,EAAEs2K,OAAQ,CAAAp0O,EAAE/J,OAAOq9R,IAAIvzR,EAAEgwS,GAAG/vS,EAAE3a,MAAMowB,SAAS/a,EAAE66C,KAAKr1C,EAAEF,EAAEpb,MAAO6uP,OAAO/4O,EAAEA,EAAEqF,KAAIG,EAAE2vS,GAAG7vS,EAAE/J,KAAK+J,EAAEpb,IAAIob,EAAE3a,MAAM,KAAKqV,EAAE66C,KAAKr1C,IAAKqpI,IAAI6lK,GAAG10S,EAAEqF,EAAEC,GAAGE,EAAEuzO,OAAO/4O,EAAEA,EAAEwF,EAAG,QAAOD,EAAEvF,GAAG,KAAK24R,EAAG34R,EAAE,CAAC,IAAIojE,EAAE99D,EAAEpb,IAAI,OAAOmb,GAAG,CAAC,GAAGA,EAAEnb,MAAMk5E,EAAX,CAAa,GAAG,IAAI/9D,EAAEuxN,KAAKvxN,EAAE2zO,UAAUC,gBAAgB3zO,EAAE2zO,eAAe5zO,EAAE2zO,UAAU0kC,iBAAiBp4Q,EAAEo4Q,eAAe,CAACx9Q,EAAEF,EAAEqF,EAAEq0O,UAASr0O,EAAE5D,EAAE4D,EAAEC,EAAEyV,UAAU,KAAMg+N,OAAO/4O,EAAEA,EAAEqF,EAAE,MAAMrF,CAAE,CAAKE,EAAEF,EAAEqF,GAAG,KAA/L,CAA0MpF,EAAED,EAAEqF,GAAGA,EAAEA,EAAEq0O,OAAQ,EAAAr0O,EACpf+vS,GAAG9vS,EAAEtF,EAAE66C,KAAKr1C,IAAKuzO,OAAO/4O,EAAEA,EAAEqF,CAAE,QAAOE,EAAEvF,GAAG,GAAG,kBAAkBsF,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOD,GAAG,IAAIA,EAAEuxN,KAAK12N,EAAEF,EAAEqF,EAAEq0O,UAASr0O,EAAE5D,EAAE4D,EAAEC,IAAKyzO,OAAO/4O,EAAEA,EAAEqF,IAAInF,EAAEF,EAAEqF,IAAGA,EAAE6vS,GAAG5vS,EAAEtF,EAAE66C,KAAKr1C,IAAKuzO,OAAO/4O,EAAEA,EAAEqF,GAAGE,EAAEvF,GAAG,GAAGy0S,GAAGnvS,GAAG,OAAO/H,EAAEyC,EAAEqF,EAAEC,EAAEE,GAAG,GAAGq0R,EAAGv0R,GAAG,OAAOjE,EAAErB,EAAEqF,EAAEC,EAAEE,GAAc,GAAXtJ,GAAG04S,GAAG50S,EAAEsF,GAAM,qBAAqBA,IAAI89D,EAAE,OAAOpjE,EAAE42N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAMz1N,MAAM3D,EAAE,IAAI48R,EAAGp6R,EAAEzE,OAAO,cAAe,OAAO2E,EAAEF,EAAEqF,EAAG,CAAC,KAAIiwS,GAAGT,IAAG,GAAIU,GAAGV,IAAG,GAAIW,GAAG,CAAC,EAAEC,GAAG5G,GAAG2G,IAAIE,GAAG7G,GAAG2G,IAAIG,GAAG9G,GAAG2G,IACtd,SAASI,GAAG51S,GAAG,GAAGA,IAAIw1S,GAAG,MAAMr0S,MAAM3D,EAAE,MAAM,OAAOwC,CAAE,UAAS61S,GAAG71S,EAAEC,GAAyC,OAAtCspJ,GAAEosJ,GAAG11S,GAAGspJ,GAAEmsJ,GAAG11S,GAAGupJ,GAAEksJ,GAAGD,IAAIx1S,EAAEC,EAAE64N,UAAmB,KAAK,EAAE,KAAK,GAAG74N,GAAGA,EAAEA,EAAEinP,iBAAiBjnP,EAAEk8R,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkE/7R,EAAE+7R,GAArC/7R,GAAvBD,EAAE,IAAIA,EAAEC,EAAEuiK,WAAWviK,GAAMk8R,cAAc,KAAKn8R,EAAEA,EAAEiqN,SAAkB3gE,GAAEmsJ,IAAIlsJ,GAAEksJ,GAAGx1S,EAAG,UAAS61S,KAAKxsJ,GAAEmsJ,IAAInsJ,GAAEosJ,IAAIpsJ,GAAEqsJ,GAAI,UAASI,GAAG/1S,GAAG41S,GAAGD,GAAGp/M,SAAS,IAAIt2F,EAAE21S,GAAGH,GAAGl/M,SAAar2F,EAAE87R,GAAG/7R,EAAED,EAAEzE,MAAM0E,IAAIC,IAAIqpJ,GAAEmsJ,GAAG11S,GAAGupJ,GAAEksJ,GAAGv1S,GAAI,UAAS81S,GAAGh2S,GAAG01S,GAAGn/M,UAAUv2F,IAAIspJ,GAAEmsJ,IAAInsJ,GAAEosJ,IAAK,KAAI3qM,GAAE8jM,GAAG,GAC9c,SAASoH,GAAGj2S,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAE22N,IAAI,CAAC,IAAI12N,EAAED,EAAEq/R,cAAc,GAAG,OAAOp/R,IAAmB,QAAfA,EAAEA,EAAEq/R,aAAqB,OAAOr/R,EAAEwL,MAAM,OAAOxL,EAAEwL,MAAM,OAAOzL,CAAE,MAAK,GAAG,KAAKA,EAAE22N,UAAK,IAAS32N,EAAE0yO,cAAcujE,aAAa,GAAG,KAAa,GAARj2S,EAAEqoP,OAAU,OAAOroP,OAAO,GAAG,OAAOA,EAAE6qB,MAAM,CAAC7qB,EAAE6qB,MAAMiuN,OAAO94O,EAAEA,EAAEA,EAAE6qB,MAAM,QAAS,IAAG7qB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEy5O,SAAS,CAAC,GAAG,OAAOz5O,EAAE84O,QAAQ94O,EAAE84O,SAAS/4O,EAAE,OAAO,KAAKC,EAAEA,EAAE84O,MAAO,CAAA94O,EAAEy5O,QAAQX,OAAO94O,EAAE84O,OAAO94O,EAAEA,EAAEy5O,OAAQ,QAAO,IAAK,KAAIy8D,GAAG,KAAKC,GAAG,KAAKvlG,IAAG,EACpd,SAASwlG,GAAGr2S,EAAEC,GAAG,IAAIC,EAAEo2S,GAAG,EAAE,KAAK,KAAK,GAAGp2S,EAAE80K,YAAY,UAAU90K,EAAE3E,KAAK,UAAU2E,EAAE84O,UAAU/4O,EAAEC,EAAE64O,OAAO/4O,EAAEE,EAAEooP,MAAM,EAAE,OAAOtoP,EAAE80S,YAAY90S,EAAE80S,WAAWC,WAAW70S,EAAEF,EAAE80S,WAAW50S,GAAGF,EAAEg1S,YAAYh1S,EAAE80S,WAAW50S,CAAE,UAASq2S,GAAGv2S,EAAEC,GAAG,OAAOD,EAAE42N,KAAK,KAAK,EAAE,IAAI12N,EAAEF,EAAEzE,KAAyE,OAAO,QAA3E0E,EAAE,IAAIA,EAAE64N,UAAU54N,EAAEwJ,gBAAgBzJ,EAAEmuH,SAAS1kH,cAAc,KAAKzJ,KAAmBD,EAAEg5O,UAAU/4O,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAEw2S,cAAc,IAAIv2S,EAAE64N,SAAS,KAAK74N,KAAYD,EAAEg5O,UAAU/4O,GAAE,GAAwB,QAAQ,OAAM,EAAI,CAC3e,SAASw2S,GAAGz2S,GAAG,GAAG6wM,GAAG,CAAC,IAAI5wM,EAAEm2S,GAAG,GAAGn2S,EAAE,CAAC,IAAIC,EAAED,EAAE,IAAIs2S,GAAGv2S,EAAEC,GAAG,CAAqB,KAApBA,EAAEouS,GAAGnuS,EAAE84N,gBAAqBu9E,GAAGv2S,EAAEC,GAAuC,OAAnCD,EAAEsoP,OAAe,KAATtoP,EAAEsoP,MAAY,EAAEz3C,IAAG,OAAGslG,GAAGn2S,GAASq2S,GAAGF,GAAGj2S,EAAG,CAAAi2S,GAAGn2S,EAAEo2S,GAAG/H,GAAGpuS,EAAEm8R,WAAY,MAAKp8R,EAAEsoP,OAAe,KAATtoP,EAAEsoP,MAAY,EAAEz3C,IAAG,EAAGslG,GAAGn2S,CAAE,CAAC,UAAS02S,GAAG12S,GAAG,IAAIA,EAAEA,EAAE+4O,OAAO,OAAO/4O,GAAG,IAAIA,EAAE42N,KAAK,IAAI52N,EAAE42N,KAAK,KAAK52N,EAAE42N,KAAK52N,EAAEA,EAAE+4O,OAAOo9D,GAAGn2S,CAAE,CAC9S,SAAS22S,GAAG32S,GAAG,GAAGA,IAAIm2S,GAAG,OAAM,EAAG,IAAItlG,GAAG,OAAO6lG,GAAG12S,GAAG6wM,IAAG,GAAG,EAAG,IAAI5wM,EAAED,EAAEzE,KAAK,GAAG,IAAIyE,EAAE42N,KAAK,SAAS32N,GAAG,SAASA,IAAIguS,GAAGhuS,EAAED,EAAE2yO,eAAe,IAAI1yO,EAAEm2S,GAAGn2S,GAAGo2S,GAAGr2S,EAAEC,GAAGA,EAAEouS,GAAGpuS,EAAE+4N,aAAmB,GAAN09E,GAAG12S,GAAM,KAAKA,EAAE42N,IAAI,CAAgD,KAA7B52N,EAAE,QAApBA,EAAEA,EAAEs/R,eAAyBt/R,EAAEu/R,WAAW,MAAW,MAAMp+R,MAAM3D,EAAE,MAAMwC,EAAE,CAAiB,IAAhBA,EAAEA,EAAEg5N,YAAgB/4N,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE84N,SAAS,CAAC,IAAI54N,EAAEF,EAAE0L,KAAK,GAAG,OAAOxL,EAAE,CAAC,GAAG,IAAID,EAAE,CAACm2S,GAAG/H,GAAGruS,EAAEg5N,aAAa,MAAMh5N,CAAE,CAAAC,GAAI,KAAI,MAAMC,GAAG,OAAOA,GAAG,OAAOA,GAAGD,GAAI,CAAAD,EAAEA,EAAEg5N,WAAY,CAAAo9E,GAAG,IAAK,CAAC,MAAKA,GAAGD,GAAG9H,GAAGruS,EAAEg5O,UAAUhgB,aAAa,KAAK,OAAM,CAAG,CACzf,SAAS75J,KAAKi3O,GAAGD,GAAG,KAAKtlG,IAAG,CAAG,KAAI+lG,GAAG,GAAG,SAASC,KAAK,IAAI,IAAI72S,EAAE,EAAEA,EAAE42S,GAAG7sT,OAAOiW,IAAI42S,GAAG52S,GAAG82S,8BAA8B,KAAKF,GAAG7sT,OAAO,CAAE,KAAIgtT,GAAGte,EAAGvB,uBAAuB8f,GAAGve,EAAGtB,wBAAwB8f,GAAG,EAAEluJ,GAAE,KAAKD,GAAE,KAAKx+C,GAAE,KAAK4sM,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAK,MAAMj2S,MAAM3D,EAAE,KAAO,UAAS65S,GAAGr3S,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAElW,QAAQmW,EAAEF,EAAEjW,OAAOmW,IAAI,IAAIsrS,GAAGxrS,EAAEE,GAAGD,EAAEC,IAAI,OAAM,EAAG,OAAM,CAAG,CACjY,SAASo3S,GAAGt3S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAyH,GAAtH2xS,GAAG3xS,EAAEyjJ,GAAE9oJ,EAAEA,EAAEq/R,cAAc,KAAKr/R,EAAE4yS,YAAY,KAAK5yS,EAAEqyS,MAAM,EAAEyE,GAAGxgN,QAAQ,OAAOv2F,GAAG,OAAOA,EAAEs/R,cAAciY,GAAGC,GAAGx3S,EAAEE,EAAEmF,EAAE5D,GAAM01S,GAAG,CAAC7xS,EAAE,EAAE,EAAE,CAAO,GAAN6xS,IAAG,IAAQ,GAAG7xS,GAAG,MAAMnE,MAAM3D,EAAE,MAAM8H,GAAG,EAAEglG,GAAEw+C,GAAE,KAAK7oJ,EAAE4yS,YAAY,KAAKkE,GAAGxgN,QAAQkhN,GAAGz3S,EAAEE,EAAEmF,EAAE5D,EAAG,OAAM01S,GAAI,CAA8D,GAA9DJ,GAAGxgN,QAAQmhN,GAAGz3S,EAAE,OAAO6oJ,IAAG,OAAOA,GAAEh8J,KAAKmqT,GAAG,EAAE3sM,GAAEw+C,GAAEC,GAAE,KAAKmuJ,IAAG,EAAMj3S,EAAE,MAAMkB,MAAM3D,EAAE,MAAM,OAAOwC,CAAE,UAAS23S,KAAK,IAAI33S,EAAE,CAACs/R,cAAc,KAAKwT,UAAU,KAAK8E,UAAU,KAAKv3M,MAAM,KAAKvzG,KAAK,MAA8C,OAAxC,OAAOw9G,GAAEy+C,GAAEu2I,cAAch1L,GAAEtqG,EAAEsqG,GAAEA,GAAEx9G,KAAKkT,EAASsqG,EAAE,CACjf,SAASutM,KAAK,GAAG,OAAO/uJ,GAAE,CAAC,IAAI9oJ,EAAE+oJ,GAAE8yF,UAAU77O,EAAE,OAAOA,EAAEA,EAAEs/R,cAAc,IAAK,MAAKt/R,EAAE8oJ,GAAEh8J,KAAK,IAAImT,EAAE,OAAOqqG,GAAEy+C,GAAEu2I,cAAch1L,GAAEx9G,KAAK,GAAG,OAAOmT,EAAEqqG,GAAErqG,EAAE6oJ,GAAE9oJ,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMmB,MAAM3D,EAAE,MAAUwC,EAAE,CAACs/R,eAAPx2I,GAAE9oJ,GAAqBs/R,cAAcwT,UAAUhqJ,GAAEgqJ,UAAU8E,UAAU9uJ,GAAE8uJ,UAAUv3M,MAAMyoD,GAAEzoD,MAAMvzG,KAAK,MAAM,OAAOw9G,GAAEy+C,GAAEu2I,cAAch1L,GAAEtqG,EAAEsqG,GAAEA,GAAEx9G,KAAKkT,CAAE,QAAOsqG,EAAE,UAASwtM,GAAG93S,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,CAAE,CACzY,SAAS83S,GAAG/3S,GAAG,IAAIC,EAAE43S,KAAK33S,EAAED,EAAEogG,MAAM,GAAG,OAAOngG,EAAE,MAAMiB,MAAM3D,EAAE,MAAM0C,EAAE83S,oBAAoBh4S,EAAE,IAAIqF,EAAEyjJ,GAAErnJ,EAAE4D,EAAEuyS,UAAUtyS,EAAEpF,EAAEk3H,QAAQ,GAAG,OAAO9xH,EAAE,CAAC,GAAG,OAAO7D,EAAE,CAAC,IAAI8D,EAAE9D,EAAE3U,KAAK2U,EAAE3U,KAAKwY,EAAExY,KAAKwY,EAAExY,KAAKyY,CAAE,CAAAF,EAAEuyS,UAAUn2S,EAAE6D,EAAEpF,EAAEk3H,QAAQ,IAAK,IAAG,OAAO31H,EAAE,CAACA,EAAEA,EAAE3U,KAAKuY,EAAEA,EAAEytS,UAAU,IAAIttS,EAAED,EAAED,EAAE,KAAK89D,EAAE3hE,EAAE,EAAE,CAAC,IAAIvF,EAAEknE,EAAEgwO,KAAK,IAAI6D,GAAG/6S,KAAKA,EAAE,OAAOsJ,IAAIA,EAAEA,EAAE1Y,KAAK,CAACsmT,KAAK,EAAEt9K,OAAO1yD,EAAE0yD,OAAOmiL,aAAa70O,EAAE60O,aAAaC,WAAW90O,EAAE80O,WAAWprT,KAAK,OAAOuY,EAAE+9D,EAAE60O,eAAej4S,EAAEojE,EAAE80O,WAAWl4S,EAAEqF,EAAE+9D,EAAE0yD,YAAY,CAAC,IAAI14H,EAAE,CAACg2S,KAAKl3S,EAAE45H,OAAO1yD,EAAE0yD,OAAOmiL,aAAa70O,EAAE60O,aAC9fC,WAAW90O,EAAE80O,WAAWprT,KAAK,MAAM,OAAO0Y,GAAGD,EAAEC,EAAEpI,EAAEkI,EAAED,GAAGG,EAAEA,EAAE1Y,KAAKsQ,EAAE2rJ,GAAEupJ,OAAOp2S,EAAEu3S,IAAIv3S,CAAE,CAAAknE,EAAEA,EAAEt2E,IAAK,OAAM,OAAOs2E,GAAGA,IAAI3hE,GAAG,OAAO+D,EAAEF,EAAED,EAAEG,EAAE1Y,KAAKyY,EAAEimS,GAAGnmS,EAAEpF,EAAEq/R,iBAAiBiT,IAAG,GAAItyS,EAAEq/R,cAAcj6R,EAAEpF,EAAE6yS,UAAUxtS,EAAErF,EAAE23S,UAAUpyS,EAAEtF,EAAEi4S,kBAAkB9yS,CAAE,OAAM,CAACpF,EAAEq/R,cAAcp/R,EAAEk4S,SAAU,CAChR,SAASC,GAAGr4S,GAAG,IAAIC,EAAE43S,KAAK33S,EAAED,EAAEogG,MAAM,GAAG,OAAOngG,EAAE,MAAMiB,MAAM3D,EAAE,MAAM0C,EAAE83S,oBAAoBh4S,EAAE,IAAIqF,EAAEnF,EAAEk4S,SAAS32S,EAAEvB,EAAEk3H,QAAQ9xH,EAAErF,EAAEq/R,cAAc,GAAG,OAAO79R,EAAE,CAACvB,EAAEk3H,QAAQ,KAAK,IAAI7xH,EAAE9D,EAAEA,EAAE3U,KAAK,GAAGwY,EAAEtF,EAAEsF,EAAEC,EAAEuwH,QAAQvwH,EAAEA,EAAEzY,WAAWyY,IAAI9D,GAAG+pS,GAAGlmS,EAAErF,EAAEq/R,iBAAiBiT,IAAG,GAAItyS,EAAEq/R,cAAch6R,EAAE,OAAOrF,EAAE23S,YAAY33S,EAAE6yS,UAAUxtS,GAAGpF,EAAEi4S,kBAAkB7yS,CAAE,OAAM,CAACA,EAAED,EAAG,CACtV,SAASizS,GAAGt4S,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEs4S,YAAYlzS,EAAEA,EAAEpF,EAAEu4S,SAAS,IAAI/2S,EAAExB,EAAE62S,8BAAyI,GAAxG,OAAOr1S,EAAEzB,EAAEyB,IAAI4D,GAAUrF,EAAEA,EAAEy4S,kBAAiBz4S,GAAGi3S,GAAGj3S,KAAKA,KAAEC,EAAE62S,8BAA8BzxS,EAAEuxS,GAAGntT,KAAKwW,KAAMD,EAAE,OAAOE,EAAED,EAAEu4S,SAAoB,MAAX5B,GAAGntT,KAAKwW,GAASkB,MAAM3D,EAAE,KAAO,CAChQ,SAASk7S,GAAG14S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEonJ,GAAE,GAAG,OAAOpnJ,EAAE,MAAMN,MAAM3D,EAAE,MAAM,IAAI8H,EAAErF,EAAEs4S,YAAYhzS,EAAED,EAAErF,EAAEu4S,SAAShzS,EAAEuxS,GAAGxgN,QAAQnzB,EAAE59D,EAAE8uN,UAAS,WAAW,OAAOgkF,GAAG72S,EAAExB,EAAEC,EAAG,IAAEhE,EAAEknE,EAAE,GAAGhmE,EAAEgmE,EAAE,GAAGA,EAAEknC,GAAE,IAAI48C,EAAElnJ,EAAEs/R,cAAcn3R,EAAE++I,EAAEq4F,KAAKp4F,EAAEh/I,EAAEwwS,YAAYp7S,EAAE2pJ,EAAEl9J,OAAOk9J,EAAEA,EAAEmtF,UAAU,IAAIhzO,EAAE0nJ,GACuO,OADrO/oJ,EAAEs/R,cAAc,CAAC//C,KAAKp3O,EAAEne,OAAOiW,EAAEo0O,UAAUhvO,GAAGG,EAAEkkN,WAAU,WAAWvhN,EAAEwwS,YAAYz4S,EAAEiI,EAAEywS,YAAY18S,EAAE,IAAI8D,EAAEsF,EAAErF,EAAEu4S,SAAS,IAAIhN,GAAGjmS,EAAEvF,GAAG,CAACA,EAAEE,EAAED,EAAEu4S,SAAShN,GAAGpuS,EAAE4C,KAAK9D,EAAE8D,GAAGA,EAAEg0S,GAAG3yS,GAAGI,EAAEg3S,kBAAkBz4S,EAAEyB,EAAEmhS,cAAc5iS,EAAEyB,EAAEg3S,iBAAiBh3S,EAAEwhS,gBAAgBjjS,EAAE,IAAI,IAAIqF,EAC5f5D,EAAEyhS,cAAc19R,EAAExF,EAAE,EAAEwF,GAAG,CAAC,IAAI49D,EAAE,GAAG4/N,GAAGx9R,GAAGpE,EAAE,GAAGgiE,EAAE/9D,EAAE+9D,IAAIpjE,EAAEwF,IAAIpE,CAAE,CAAC,CAAC,GAAC,CAAClB,EAAED,EAAEoF,IAAIG,EAAEkkN,WAAU,WAAW,OAAOrkN,EAAEpF,EAAEu4S,SAAQ,WAAW,IAAIx4S,EAAEmI,EAAEwwS,YAAYz4S,EAAEiI,EAAEywS,YAAY,IAAI14S,EAAEF,EAAEC,EAAEu4S,UAAU,IAAInzS,EAAE2uS,GAAG3yS,GAAGI,EAAEg3S,kBAAkBpzS,EAAE5D,EAAEmhS,YAA8C,CAAjC,MAAM7iS,GAAGG,GAAE,WAAW,MAAMH,CAAG,GAAE,CAAC,GAAE,GAAC,CAACE,EAAEoF,IAAImmS,GAAGrkJ,EAAEjnJ,IAAIsrS,GAAGjuS,EAAE0C,IAAIurS,GAAGtkJ,EAAE7hJ,MAAKrF,EAAE,CAACo3H,QAAQ,KAAKghL,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkB/6S,IAAKg7S,SAASl8S,EAAE28S,GAAGtrT,KAAK,KAAKw7J,GAAE/oJ,GAAGojE,EAAEi9B,MAAMrgG,EAAEojE,EAAEw0O,UAAU,KAAKx6S,EAAEk7S,GAAG72S,EAAExB,EAAEC,GAAGkjE,EAAEk8N,cAAcl8N,EAAE0vO,UAAU11S,GAAUA,CAAE,CACxe,SAAS07S,GAAG94S,EAAEC,EAAEC,GAAc,OAAOw4S,GAAZb,KAAiB73S,EAAEC,EAAEC,EAAG,UAAS64S,GAAG/4S,GAAG,IAAIC,EAAE03S,KAAmL,MAA9K,oBAAoB33S,IAAIA,EAAEA,KAAKC,EAAEq/R,cAAcr/R,EAAE6yS,UAAU9yS,EAAoFA,GAAlFA,EAAEC,EAAEogG,MAAM,CAAC+2B,QAAQ,KAAKghL,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkBn4S,IAAOo4S,SAASS,GAAGtrT,KAAK,KAAKw7J,GAAE/oJ,GAAS,CAACC,EAAEq/R,cAAct/R,EAAG,CACnR,SAASg5S,GAAGh5S,EAAEC,EAAEC,EAAEmF,GAAkO,OAA/NrF,EAAE,CAAC42N,IAAI52N,EAAE1U,OAAO2U,EAAEy3D,QAAQx3D,EAAEumO,KAAKphO,EAAEvY,KAAK,MAAsB,QAAhBmT,EAAE8oJ,GAAE8pJ,cAAsB5yS,EAAE,CAAC60S,WAAW,MAAM/rJ,GAAE8pJ,YAAY5yS,EAAEA,EAAE60S,WAAW90S,EAAElT,KAAKkT,GAAmB,QAAfE,EAAED,EAAE60S,YAAoB70S,EAAE60S,WAAW90S,EAAElT,KAAKkT,GAAGqF,EAAEnF,EAAEpT,KAAKoT,EAAEpT,KAAKkT,EAAEA,EAAElT,KAAKuY,EAAEpF,EAAE60S,WAAW90S,GAAWA,CAAE,UAASi5S,GAAGj5S,GAA4B,OAAdA,EAAE,CAACu2F,QAAQv2F,GAAhB23S,KAA4BrY,cAAct/R,CAAE,UAASk5S,KAAK,OAAOrB,KAAKvY,aAAc,UAAS6Z,GAAGn5S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEk2S,KAAK5uJ,GAAEu/F,OAAOtoP,EAAEyB,EAAE69R,cAAc0Z,GAAG,EAAE/4S,EAAEC,OAAE,OAAO,IAASmF,EAAE,KAAKA,EAAG,CACpc,SAAS+zS,GAAGp5S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEo2S,KAAKxyS,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIC,OAAE,EAAO,GAAG,OAAOwjJ,GAAE,CAAC,IAAIvjJ,EAAEujJ,GAAEw2I,cAA0B,GAAZh6R,EAAEC,EAAEmyD,QAAW,OAAOryD,GAAGgyS,GAAGhyS,EAAEE,EAAEkhO,MAAmB,YAAZuyE,GAAG/4S,EAAEC,EAAEoF,EAAED,EAAW,CAAA0jJ,GAAEu/F,OAAOtoP,EAAEyB,EAAE69R,cAAc0Z,GAAG,EAAE/4S,EAAEC,EAAEoF,EAAED,EAAG,UAASg0S,GAAGr5S,EAAEC,GAAG,OAAOk5S,GAAG,IAAI,EAAEn5S,EAAEC,EAAG,UAASq5S,GAAGt5S,EAAEC,GAAG,OAAOm5S,GAAG,IAAI,EAAEp5S,EAAEC,EAAG,UAASs5S,GAAGv5S,EAAEC,GAAG,OAAOm5S,GAAG,EAAE,EAAEp5S,EAAEC,EAAG,UAASu5S,GAAGx5S,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAM,GAAI,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEs2F,QAAQv2F,EAAE,WAAWC,EAAEs2F,QAAQ,IAAK,QAA3E,CAA4E,CACpd,SAASkjN,GAAGz5S,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE88F,OAAO,CAACh9F,IAAI,KAAYo5S,GAAG,EAAE,EAAEI,GAAGjsT,KAAK,KAAK0S,EAAED,GAAGE,EAAG,UAASw5S,KAAM,UAASC,GAAG35S,EAAEC,GAAG,IAAIC,EAAE23S,KAAK53S,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIoF,EAAEnF,EAAEo/R,cAAc,OAAG,OAAOj6R,GAAG,OAAOpF,GAAGo3S,GAAGp3S,EAAEoF,EAAE,IAAWA,EAAE,IAAGnF,EAAEo/R,cAAc,CAACt/R,EAAEC,GAAUD,EAAE,UAASwxM,GAAGxxM,EAAEC,GAAG,IAAIC,EAAE23S,KAAK53S,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIoF,EAAEnF,EAAEo/R,cAAc,OAAG,OAAOj6R,GAAG,OAAOpF,GAAGo3S,GAAGp3S,EAAEoF,EAAE,IAAWA,EAAE,IAAGrF,EAAEA,IAAIE,EAAEo/R,cAAc,CAACt/R,EAAEC,GAAUD,EAAE,CAC3Z,SAAS45S,GAAG55S,EAAEC,GAAG,IAAIC,EAAEkxS,KAAKE,GAAG,GAAGpxS,EAAE,GAAGA,GAAE,WAAWF,GAAE,EAAI,IAAEsxS,GAAG,GAAGpxS,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAE82S,GAAG5hI,WAAW4hI,GAAG5hI,WAAW,EAAE,IAAIp1K,GAAE,GAAIC,GAA4B,CAAtC,QAAsB+2S,GAAG5hI,WAAWl1K,CAAE,CAAC,GAAE,CACjK,SAAS24S,GAAG74S,EAAEC,EAAEC,GAAG,IAAImF,EAAE0uS,KAAKtyS,EAAEuyS,GAAGh0S,GAAGsF,EAAE,CAAC8tS,KAAK3xS,EAAEq0H,OAAO51H,EAAE+3S,aAAa,KAAKC,WAAW,KAAKprT,KAAK,MAAMyY,EAAEtF,EAAEm3H,QAA6E,GAArE,OAAO7xH,EAAED,EAAExY,KAAKwY,GAAGA,EAAExY,KAAKyY,EAAEzY,KAAKyY,EAAEzY,KAAKwY,GAAGrF,EAAEm3H,QAAQ9xH,EAAEC,EAAEvF,EAAE67O,UAAa77O,IAAI+oJ,IAAG,OAAOxjJ,GAAGA,IAAIwjJ,GAAEouJ,GAAGD,IAAG,MAAO,CAAC,GAAG,IAAIl3S,EAAEsyS,QAAQ,OAAO/sS,GAAG,IAAIA,EAAE+sS,QAAiC,QAAxB/sS,EAAEtF,EAAE+3S,qBAA8B,IAAI,IAAIxyS,EAAEvF,EAAEk4S,kBAAkB/0O,EAAE79D,EAAEC,EAAEtF,GAAmC,GAAhCoF,EAAE2yS,aAAa1yS,EAAED,EAAE4yS,WAAW90O,EAAKooO,GAAGpoO,EAAE59D,GAAG,MAA0B,CAAnB,MAAMtJ,GAAI,CAAS+3S,GAAGj0S,EAAEyB,EAAE4D,EAAG,CAAC,CACla,IAAIqyS,GAAG,CAACmC,YAAYrH,GAAGp6J,YAAYg/J,GAAGvnT,WAAWunT,GAAG1tF,UAAU0tF,GAAG9tE,oBAAoB8tE,GAAG54D,gBAAgB44D,GAAGluF,QAAQkuF,GAAG3rD,WAAW2rD,GAAG7vF,OAAO6vF,GAAG9iF,SAAS8iF,GAAGl+B,cAAck+B,GAAG0C,iBAAiB1C,GAAG2C,cAAc3C,GAAG4C,iBAAiB5C,GAAG6C,oBAAoB7C,GAAG8C,0BAAyB,GAAI3C,GAAG,CAACsC,YAAYrH,GAAGp6J,YAAY,SAASp4I,EAAEC,GAA4C,OAAzC03S,KAAKrY,cAAc,CAACt/R,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAE,EAACnQ,WAAW2iT,GAAG9oF,UAAU2vF,GAAG/vE,oBAAoB,SAAStpO,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE88F,OAAO,CAACh9F,IAAI,KAAYm5S,GAAG,EAAE,EAAEK,GAAGjsT,KAAK,KACvf0S,EAAED,GAAGE,EAAG,EAACs+O,gBAAgB,SAASx+O,EAAEC,GAAG,OAAOk5S,GAAG,EAAE,EAAEn5S,EAAEC,EAAG,EAACipN,QAAQ,SAASlpN,EAAEC,GAAG,IAAIC,EAAEy3S,KAAqD,OAAhD13S,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIE,EAAEo/R,cAAc,CAACt/R,EAAEC,GAAUD,CAAE,EAACyrP,WAAW,SAASzrP,EAAEC,EAAEC,GAAG,IAAImF,EAAEsyS,KAAuK,OAAlK13S,OAAE,IAASC,EAAEA,EAAED,GAAGA,EAAEoF,EAAEi6R,cAAcj6R,EAAEytS,UAAU7yS,EAAmFD,GAAjFA,EAAEqF,EAAEg7F,MAAM,CAAC+2B,QAAQ,KAAKghL,SAAS,KAAKJ,oBAAoBh4S,EAAEm4S,kBAAkBl4S,IAAOm4S,SAASS,GAAGtrT,KAAK,KAAKw7J,GAAE/oJ,GAAS,CAACqF,EAAEi6R,cAAct/R,EAAG,EAACunN,OAAO0xF,GAAG3kF,SAASykF,GAAG7/B,cAAcwgC,GAAGI,iBAAiB,SAAS95S,GAAG,IAAIC,EAAE84S,GAAG/4S,GAAGE,EAAED,EAAE,GAAGoF,EAAEpF,EAAE,GAC5Z,OAD+Zo5S,IAAG,WAAW,IAAIp5S,EAAE+2S,GAAG5hI,WAC9e4hI,GAAG5hI,WAAW,EAAE,IAAI/vK,EAAErF,EAA2B,CAAjC,QAAiBg3S,GAAG5hI,WAAWn1K,CAAE,CAAC,GAAC,CAACD,IAAWE,CAAE,EAAC65S,cAAc,WAAW,IAAI/5S,EAAE+4S,IAAG,GAAI94S,EAAED,EAAE,GAA8B,OAANi5S,GAArBj5S,EAAE45S,GAAGrsT,KAAK,KAAKyS,EAAE,KAAgB,CAACA,EAAEC,EAAG,EAAC+5S,iBAAiB,SAASh6S,EAAEC,EAAEC,GAAG,IAAImF,EAAEsyS,KAAkF,OAA7EtyS,EAAEi6R,cAAc,CAAC//C,KAAK,CAACo5D,YAAY14S,EAAE24S,YAAY,MAAM5uT,OAAOgW,EAAEq0O,UAAUn0O,GAAUw4S,GAAGrzS,EAAErF,EAAEC,EAAEC,EAAG,EAAC+5S,oBAAoB,WAAW,GAAGppG,GAAG,CAAC,IAAI7wM,GAAE,EAAGC,EAzDlD,SAAYD,GAAG,MAAM,CAAC82R,SAASyC,EAAG1qS,SAASmR,EAAEuoP,QAAQvoP,EAAG,CAyDJm6S,EAAG,WAAiD,MAAtCn6S,IAAIA,GAAE,EAAGE,EAAE,MAAMouS,MAAMz/S,SAAS,MAAYsS,MAAM3D,EAAE,KAAO,IAAE0C,EAAE64S,GAAG94S,GAAG,GAC1Z,OAD6Z,KAAY,EAAP8oJ,GAAEluG,QAAUkuG,GAAEu/F,OAAO,IAAI0wD,GAAG,GAAE,WAAW94S,EAAE,MAAMouS,MAAMz/S,SAAS,IAAK,QACrf,EAAO,OAAcoR,CAAE,CAAiC,OAAN84S,GAA3B94S,EAAE,MAAMquS,MAAMz/S,SAAS,KAAiBoR,CAAE,EAACi6S,0BAAyB,GAAI1C,GAAG,CAACqC,YAAYrH,GAAGp6J,YAAYuhK,GAAG9pT,WAAW2iT,GAAG9oF,UAAU4vF,GAAGhwE,oBAAoBmwE,GAAGj7D,gBAAgB+6D,GAAGrwF,QAAQ1X,GAAGi6C,WAAWssD,GAAGxwF,OAAO2xF,GAAG5kF,SAAS,WAAW,OAAOyjF,GAAGD,GAAI,EAAC5+B,cAAcwgC,GAAGI,iBAAiB,SAAS95S,GAAG,IAAIC,EAAE83S,GAAGD,IAAI53S,EAAED,EAAE,GAAGoF,EAAEpF,EAAE,GAA6F,OAA1Fq5S,IAAG,WAAW,IAAIr5S,EAAE+2S,GAAG5hI,WAAW4hI,GAAG5hI,WAAW,EAAE,IAAI/vK,EAAErF,EAA2B,CAAjC,QAAiBg3S,GAAG5hI,WAAWn1K,CAAE,CAAC,GAAC,CAACD,IAAWE,CAAE,EAAC65S,cAAc,WAAW,IAAI/5S,EAAE+3S,GAAGD,IAAI,GAAG,MAAM,CAACoB,KAAK3iN,QAC9ev2F,EAAG,EAACg6S,iBAAiBlB,GAAGmB,oBAAoB,WAAW,OAAOlC,GAAGD,IAAI,EAAG,EAACoC,0BAAyB,GAAIzC,GAAG,CAACoC,YAAYrH,GAAGp6J,YAAYuhK,GAAG9pT,WAAW2iT,GAAG9oF,UAAU4vF,GAAGhwE,oBAAoBmwE,GAAGj7D,gBAAgB+6D,GAAGrwF,QAAQ1X,GAAGi6C,WAAW4sD,GAAG9wF,OAAO2xF,GAAG5kF,SAAS,WAAW,OAAO+jF,GAAGP,GAAI,EAAC5+B,cAAcwgC,GAAGI,iBAAiB,SAAS95S,GAAG,IAAIC,EAAEo4S,GAAGP,IAAI53S,EAAED,EAAE,GAAGoF,EAAEpF,EAAE,GAA6F,OAA1Fq5S,IAAG,WAAW,IAAIr5S,EAAE+2S,GAAG5hI,WAAW4hI,GAAG5hI,WAAW,EAAE,IAAI/vK,EAAErF,EAA2B,CAAjC,QAAiBg3S,GAAG5hI,WAAWn1K,CAAE,CAAC,GAAC,CAACD,IAAWE,CAAE,EAAC65S,cAAc,WAAW,IAAI/5S,EAAEq4S,GAAGP,IAAI,GAAG,MAAM,CAACoB,KAAK3iN,QACrfv2F,EAAG,EAACg6S,iBAAiBlB,GAAGmB,oBAAoB,WAAW,OAAO5B,GAAGP,IAAI,EAAG,EAACoC,0BAAyB,GAAIE,GAAG3hB,EAAGrB,kBAAkBmb,IAAG,EAAG,SAAS8H,GAAGr6S,EAAEC,EAAEC,EAAEmF,GAAGpF,EAAE6qB,MAAM,OAAO9qB,EAAEu1S,GAAGt1S,EAAE,KAAKC,EAAEmF,GAAGiwS,GAAGr1S,EAAED,EAAE8qB,MAAM5qB,EAAEmF,EAAG,UAASi1S,GAAGt6S,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAGvB,EAAEA,EAAE0iC,OAAO,IAAIt9B,EAAErF,EAAE4uI,IAA8B,OAA1BsjK,GAAGlyS,EAAEwB,GAAG4D,EAAEiyS,GAAGt3S,EAAEC,EAAEC,EAAEmF,EAAEC,EAAE7D,GAAM,OAAOzB,GAAIuyS,IAA0EtyS,EAAEqoP,OAAO,EAAE+xD,GAAGr6S,EAAEC,EAAEoF,EAAE5D,GAAUxB,EAAE6qB,QAAhG7qB,EAAE4yS,YAAY7yS,EAAE6yS,YAAY5yS,EAAEqoP,QAAQ,IAAItoP,EAAEsyS,QAAQ7wS,EAAE6gJ,GAAGtiJ,EAAEC,EAAEwB,GAAyC,CACjZ,SAAS84S,GAAGv6S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,GAAG,OAAOtF,EAAE,CAAC,IAAIuF,EAAErF,EAAE3E,KAAK,MAAG,oBAAoBgK,GAAIi1S,GAAGj1S,SAAI,IAASA,EAAEmzI,cAAc,OAAOx4I,EAAEsnK,cAAS,IAAStnK,EAAEw4I,eAAsD14I,EAAEm1S,GAAGj1S,EAAE3E,KAAK,KAAK8J,EAAEpF,EAAEA,EAAE46C,KAAKv1C,IAAKupI,IAAI5uI,EAAE4uI,IAAI7uI,EAAE+4O,OAAO94O,EAASA,EAAE6qB,MAAM9qB,IAAvGC,EAAE22N,IAAI,GAAG32N,EAAE1E,KAAKgK,EAAEk1S,GAAGz6S,EAAEC,EAAEsF,EAAEF,EAAE5D,EAAE6D,GAA0E,CAAU,OAAVC,EAAEvF,EAAE8qB,MAAS,KAAKrpB,EAAE6D,KAAK7D,EAAE8D,EAAEotO,eAA0BzyO,EAAE,QAAdA,EAAEA,EAAEsnK,SAAmBtnK,EAAEwrS,IAAKjqS,EAAE4D,IAAIrF,EAAE6uI,MAAM5uI,EAAE4uI,KAAYyT,GAAGtiJ,EAAEC,EAAEqF,IAAGrF,EAAEqoP,OAAO,GAAEtoP,EAAEi1S,GAAG1vS,EAAEF,IAAKwpI,IAAI5uI,EAAE4uI,IAAI7uI,EAAE+4O,OAAO94O,EAASA,EAAE6qB,MAAM9qB,EAAE,CACpb,SAASy6S,GAAGz6S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,GAAG,OAAOtF,GAAG0rS,GAAG1rS,EAAE2yO,cAActtO,IAAIrF,EAAE6uI,MAAM5uI,EAAE4uI,IAAI,IAAG0jK,IAAG,EAAG,KAAKjtS,EAAE7D,GAAqC,OAAOxB,EAAEqyS,MAAMtyS,EAAEsyS,MAAMhwJ,GAAGtiJ,EAAEC,EAAEqF,GAAhE,KAAa,MAARtF,EAAEsoP,SAAeiqD,IAAG,EAAS,CAAiC,OAAOmI,GAAG16S,EAAEC,EAAEC,EAAEmF,EAAEC,EAAG,CACtL,SAASq1S,GAAG36S,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEu2S,aAAa/0S,EAAE4D,EAAE0V,SAASzV,EAAE,OAAOtF,EAAEA,EAAEs/R,cAAc,KAAK,GAAG,WAAWj6R,EAAEw1C,MAAM,kCAAkCx1C,EAAEw1C,KAAK,GAAG,KAAY,EAAP56C,EAAE46C,MAAQ56C,EAAEq/R,cAAc,CAACsb,UAAU,GAAGC,GAAG56S,EAAEC,OAAQ,IAAG,KAAO,WAAFA,GAA8E,OAAOF,EAAE,OAAOsF,EAAEA,EAAEs1S,UAAU16S,EAAEA,EAAED,EAAEqyS,MAAMryS,EAAEiyS,WAAW,WAAWjyS,EAAEq/R,cAAc,CAACsb,UAAU56S,GAAG66S,GAAG56S,EAAED,GAAG,KAAxKC,EAAEq/R,cAAc,CAACsb,UAAU,GAAGC,GAAG56S,EAAE,OAAOqF,EAAEA,EAAEs1S,UAAU16S,EAAQ,MAAkH,OAAOoF,GAAGD,EAAEC,EAAEs1S,UAAU16S,EAAED,EAAEq/R,cAAc,MAAMj6R,EAAEnF,EAAE26S,GAAG56S,EAAEoF,GAAe,OAAZg1S,GAAGr6S,EAAEC,EAAEwB,EAAEvB,GAAUD,EAAE6qB,KAAM,CAChf,SAASgwR,GAAG96S,EAAEC,GAAG,IAAIC,EAAED,EAAE4uI,KAAO,OAAO7uI,GAAG,OAAOE,GAAG,OAAOF,GAAGA,EAAE6uI,MAAM3uI,KAAED,EAAEqoP,OAAO,IAAI,UAASoyD,GAAG16S,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAE6pS,GAAGjvS,GAAG6uS,GAAG7lJ,GAAE3yD,QAA4C,OAApCjxF,EAAE0pS,GAAG/uS,EAAEqF,GAAG6sS,GAAGlyS,EAAEwB,GAAGvB,EAAEo3S,GAAGt3S,EAAEC,EAAEC,EAAEmF,EAAEC,EAAE7D,GAAM,OAAOzB,GAAIuyS,IAA0EtyS,EAAEqoP,OAAO,EAAE+xD,GAAGr6S,EAAEC,EAAEC,EAAEuB,GAAUxB,EAAE6qB,QAAhG7qB,EAAE4yS,YAAY7yS,EAAE6yS,YAAY5yS,EAAEqoP,QAAQ,IAAItoP,EAAEsyS,QAAQ7wS,EAAE6gJ,GAAGtiJ,EAAEC,EAAEwB,GAAyC,CACvS,SAASs5S,GAAG/6S,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,GAAG0tS,GAAGjvS,GAAG,CAAC,IAAIoF,GAAE,EAAGkqS,GAAGvvS,EAAG,MAAKqF,GAAE,EAAW,GAAR6sS,GAAGlyS,EAAEwB,GAAM,OAAOxB,EAAE+4O,UAAU,OAAOh5O,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAG8rD,GAAGn0S,EAAEC,EAAEmF,GAAGkvS,GAAGt0S,EAAEC,EAAEmF,EAAE5D,GAAG4D,GAAE,OAAQ,GAAG,OAAOrF,EAAE,CAAC,IAAIuF,EAAEtF,EAAE+4O,UAAUxzO,EAAEvF,EAAE0yO,cAAcptO,EAAE5a,MAAM6a,EAAE,IAAI49D,EAAE79D,EAAEyF,QAAQ9O,EAAEgE,EAAEiwN,YAAY,kBAAkBj0N,GAAG,OAAOA,EAAEA,EAAEs2S,GAAGt2S,GAAyBA,EAAE8yS,GAAG/uS,EAA1B/D,EAAEizS,GAAGjvS,GAAG6uS,GAAG7lJ,GAAE3yD,SAAmB,IAAIn5F,EAAE8C,EAAEktN,yBAAyBlmE,EAAE,oBAAoB9pJ,GAAG,oBAAoBmI,EAAEiwN,wBAAwBtuE,GAAG,oBAAoB3hJ,EAAE+uS,kCACpd,oBAAoB/uS,EAAE4vN,4BAA4B3vN,IAAIH,GAAG+9D,IAAIlnE,IAAIm4S,GAAGp0S,EAAEsF,EAAEF,EAAEnJ,GAAGy2S,IAAG,EAAG,IAAIxqS,EAAElI,EAAEq/R,cAAc/5R,EAAEyvC,MAAM7sC,EAAEqrS,GAAGvzS,EAAEoF,EAAEE,EAAE9D,GAAG2hE,EAAEnjE,EAAEq/R,cAAc95R,IAAIH,GAAG8C,IAAIi7D,GAAGmnC,GAAEhU,SAASo8M,IAAI,oBAAoBv1S,IAAIw2S,GAAG3zS,EAAEC,EAAE9C,EAAEiI,GAAG+9D,EAAEnjE,EAAEq/R,gBAAgB95R,EAAEmtS,IAAIuB,GAAGj0S,EAAEC,EAAEsF,EAAEH,EAAE8C,EAAEi7D,EAAElnE,KAAKgrJ,GAAG,oBAAoB3hJ,EAAEivS,2BAA2B,oBAAoBjvS,EAAE2vN,qBAAqB,oBAAoB3vN,EAAE2vN,oBAAoB3vN,EAAE2vN,qBAAqB,oBAAoB3vN,EAAEivS,2BAA2BjvS,EAAEivS,6BAA6B,oBACzejvS,EAAEgoN,oBAAoBttN,EAAEqoP,OAAO,KAAK,oBAAoB/iP,EAAEgoN,oBAAoBttN,EAAEqoP,OAAO,GAAGroP,EAAE0yO,cAActtO,EAAEpF,EAAEq/R,cAAcl8N,GAAG79D,EAAE5a,MAAM0a,EAAEE,EAAEyvC,MAAMouB,EAAE79D,EAAEyF,QAAQ9O,EAAEmJ,EAAEG,IAAI,oBAAoBD,EAAEgoN,oBAAoBttN,EAAEqoP,OAAO,GAAGjjP,GAAE,EAAI,KAAI,CAACE,EAAEtF,EAAE+4O,UAAUi6D,GAAGjzS,EAAEC,GAAGuF,EAAEvF,EAAE0yO,cAAcz2O,EAAE+D,EAAE1E,OAAO0E,EAAE+0K,YAAYxvK,EAAE87O,GAAGrhP,EAAE1E,KAAKiK,GAAGD,EAAE5a,MAAMuR,EAAEgrJ,EAAEjnJ,EAAEu2S,aAAaruS,EAAE5C,EAAEyF,QAAwB,kBAAhBo4D,EAAEljE,EAAEiwN,cAAiC,OAAO/sJ,EAAEA,EAAEovO,GAAGpvO,GAAyBA,EAAE4rO,GAAG/uS,EAA1BmjE,EAAE+rO,GAAGjvS,GAAG6uS,GAAG7lJ,GAAE3yD,SAAmB,IAAI4wD,EAAEjnJ,EAAEktN,0BAA0BhwN,EAAE,oBAAoB+pJ,GACnf,oBAAoB5hJ,EAAEiwN,0BAA0B,oBAAoBjwN,EAAE+uS,kCAAkC,oBAAoB/uS,EAAE4vN,4BAA4B3vN,IAAI0hJ,GAAG/+I,IAAIi7D,IAAIixO,GAAGp0S,EAAEsF,EAAEF,EAAE+9D,GAAGuvO,IAAG,EAAGxqS,EAAElI,EAAEq/R,cAAc/5R,EAAEyvC,MAAM7sC,EAAEqrS,GAAGvzS,EAAEoF,EAAEE,EAAE9D,GAAG,IAAIlE,EAAE0C,EAAEq/R,cAAc95R,IAAI0hJ,GAAG/+I,IAAI5K,GAAGgtG,GAAEhU,SAASo8M,IAAI,oBAAoBxrJ,IAAIysJ,GAAG3zS,EAAEC,EAAEinJ,EAAE9hJ,GAAG9H,EAAE0C,EAAEq/R,gBAAgBpjS,EAAEy2S,IAAIuB,GAAGj0S,EAAEC,EAAEhE,EAAEmJ,EAAE8C,EAAE5K,EAAE6lE,KAAKhmE,GAAG,oBAAoBmI,EAAEy1S,4BAA4B,oBAAoBz1S,EAAE8vN,sBAAsB,oBAAoB9vN,EAAE8vN,qBAAqB9vN,EAAE8vN,oBAAoBhwN,EAC1gB9H,EAAE6lE,GAAG,oBAAoB79D,EAAEy1S,4BAA4Bz1S,EAAEy1S,2BAA2B31S,EAAE9H,EAAE6lE,IAAI,oBAAoB79D,EAAEkoN,qBAAqBxtN,EAAEqoP,OAAO,GAAG,oBAAoB/iP,EAAEiwN,0BAA0Bv1N,EAAEqoP,OAAO,OAAO,oBAAoB/iP,EAAEkoN,oBAAoBjoN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,GAAG,oBAAoB/iP,EAAEiwN,yBAAyBhwN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,KAAKroP,EAAE0yO,cAActtO,EAAEpF,EAAEq/R,cAAc/hS,GAAGgI,EAAE5a,MAAM0a,EAAEE,EAAEyvC,MAAMz3C,EAAEgI,EAAEyF,QAAQo4D,EAAE/9D,EAAEnJ,IAAI,oBAAoBqJ,EAAEkoN,oBAC7fjoN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,GAAG,oBAAoB/iP,EAAEiwN,yBAAyBhwN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,KAAKjjP,GAAE,EAAI,QAAO41S,GAAGj7S,EAAEC,EAAEC,EAAEmF,EAAEC,EAAE7D,EAAG,CAC5L,SAASw5S,GAAGj7S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAGw1S,GAAG96S,EAAEC,GAAG,IAAIsF,EAAE,KAAa,GAARtF,EAAEqoP,OAAU,IAAIjjP,IAAIE,EAAE,OAAO9D,GAAGiuS,GAAGzvS,EAAEC,GAAE,GAAIoiJ,GAAGtiJ,EAAEC,EAAEqF,GAAGD,EAAEpF,EAAE+4O,UAAUohE,GAAG7jN,QAAQt2F,EAAE,IAAIuF,EAAED,GAAG,oBAAoBrF,EAAEw1O,yBAAyB,KAAKrwO,EAAEu9B,SAAwI,OAA/H3iC,EAAEqoP,OAAO,EAAE,OAAOtoP,GAAGuF,GAAGtF,EAAE6qB,MAAMwqR,GAAGr1S,EAAED,EAAE8qB,MAAM,KAAKxlB,GAAGrF,EAAE6qB,MAAMwqR,GAAGr1S,EAAE,KAAKuF,EAAEF,IAAI+0S,GAAGr6S,EAAEC,EAAEuF,EAAEF,GAAGrF,EAAEq/R,cAAcj6R,EAAE2vC,MAAMvzC,GAAGiuS,GAAGzvS,EAAEC,GAAE,GAAWD,EAAE6qB,KAAM,UAASowR,GAAGl7S,GAAG,IAAIC,EAAED,EAAEg5O,UAAU/4O,EAAEk7S,eAAe9L,GAAGrvS,EAAEC,EAAEk7S,eAAel7S,EAAEk7S,iBAAiBl7S,EAAE+K,SAAS/K,EAAE+K,SAASqkS,GAAGrvS,EAAEC,EAAE+K,SAAQ,GAAI6qS,GAAG71S,EAAEC,EAAEg5O,cAAe,CAC5e,IAS0VmiE,GAAMC,GAAGC,GAT/VC,GAAG,CAAChc,WAAW,KAAKic,UAAU,GAClC,SAASC,GAAGz7S,EAAEC,EAAEC,GAAG,IAAsCqF,EAAlCF,EAAEpF,EAAEu2S,aAAa/0S,EAAEspG,GAAExU,QAAQjxF,GAAE,EAA6M,OAAvMC,EAAE,KAAa,GAARtF,EAAEqoP,UAAa/iP,GAAE,OAAOvF,GAAG,OAAOA,EAAEs/R,gBAAiB,KAAO,EAAF79R,IAAM8D,GAAGD,GAAE,EAAGrF,EAAEqoP,QAAQ,IAAI,OAAOtoP,GAAG,OAAOA,EAAEs/R,oBAAe,IAASj6R,EAAEm3J,WAAU,IAAKn3J,EAAEq2S,6BAA6Bj6S,GAAG,GAAG8nJ,GAAEx+C,GAAI,EAAFtpG,GAAQ,OAAOzB,QAAG,IAASqF,EAAEm3J,UAAUi6I,GAAGx2S,GAAGD,EAAEqF,EAAE0V,SAAStZ,EAAE4D,EAAEm3J,SAAYl3J,GAAStF,EAAE27S,GAAG17S,EAAED,EAAEyB,EAAEvB,GAAGD,EAAE6qB,MAAMw0Q,cAAc,CAACsb,UAAU16S,GAAGD,EAAEq/R,cAAcic,GAAGv7S,GAAK,kBAAkBqF,EAAEu2S,2BAAiC57S,EAAE27S,GAAG17S,EAAED,EAAEyB,EAAEvB,GAAGD,EAAE6qB,MAAMw0Q,cAAc,CAACsb,UAAU16S,GAC/fD,EAAEq/R,cAAcic,GAAGt7S,EAAEqyS,MAAM,SAAStyS,KAAEE,EAAE27S,GAAG,CAAChhQ,KAAK,UAAU9/B,SAAS/a,GAAGC,EAAE46C,KAAK36C,EAAE,OAAQ64O,OAAO94O,EAASA,EAAE6qB,MAAM5qB,KAAYF,EAAEs/R,cAAkBh6R,GAASD,EAAEy2S,GAAG97S,EAAEC,EAAEoF,EAAE0V,SAAS1V,EAAEm3J,SAASt8J,GAAGoF,EAAErF,EAAE6qB,MAAMrpB,EAAEzB,EAAE8qB,MAAMw0Q,cAAch6R,EAAEg6R,cAAc,OAAO79R,EAAE,CAACm5S,UAAU16S,GAAG,CAAC06S,UAAUn5S,EAAEm5S,UAAU16S,GAAGoF,EAAE4sS,WAAWlyS,EAAEkyS,YAAYhyS,EAAED,EAAEq/R,cAAcic,GAAGl2S,IAAEnF,EAAE67S,GAAG/7S,EAAEC,EAAEoF,EAAE0V,SAAS7a,GAAGD,EAAEq/R,cAAc,KAAYp/R,GAClQ,UAASy7S,GAAG37S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE66C,KAAKv1C,EAAEtF,EAAE8qB,MAAuK,OAAjK7qB,EAAE,CAAC46C,KAAK,SAAS9/B,SAAS9a,GAAG,KAAO,EAAFwB,IAAM,OAAO6D,GAAGA,EAAE4sS,WAAW,EAAE5sS,EAAEkxS,aAAav2S,GAAGqF,EAAEu2S,GAAG57S,EAAEwB,EAAE,EAAE,MAAMvB,EAAEm1S,GAAGn1S,EAAEuB,EAAE4D,EAAE,MAAMC,EAAEyzO,OAAO/4O,EAAEE,EAAE64O,OAAO/4O,EAAEsF,EAAEo0O,QAAQx5O,EAAEF,EAAE8qB,MAAMxlB,EAASpF,CAAE,CACvV,SAAS67S,GAAG/7S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE8qB,MAAiL,OAA3K9qB,EAAEyB,EAAEi4O,QAAQx5O,EAAE+0S,GAAGxzS,EAAE,CAACo5C,KAAK,UAAU9/B,SAAS7a,IAAI,KAAY,EAAPD,EAAE46C,QAAU36C,EAAEoyS,MAAMjtS,GAAGnF,EAAE64O,OAAO94O,EAAEC,EAAEw5O,QAAQ,KAAK,OAAO15O,IAAIA,EAAE+0S,WAAW,KAAK/0S,EAAEsoP,MAAM,EAAEroP,EAAE+0S,YAAY/0S,EAAE60S,WAAW90S,GAAUC,EAAE6qB,MAAM5qB,CAAE,CAC/N,SAAS47S,GAAG97S,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAErF,EAAE46C,KAAKt1C,EAAEvF,EAAE8qB,MAAM9qB,EAAEuF,EAAEm0O,QAAQ,IAAIl0O,EAAE,CAACq1C,KAAK,SAAS9/B,SAAS7a,GAAoS,OAAjS,KAAO,EAAFoF,IAAMrF,EAAE6qB,QAAQvlB,IAAGrF,EAAED,EAAE6qB,OAAQonR,WAAW,EAAEhyS,EAAEs2S,aAAahxS,EAAiB,QAAfD,EAAErF,EAAE40S,aAAqB70S,EAAE+0S,YAAY90S,EAAE80S,YAAY/0S,EAAE60S,WAAWvvS,EAAEA,EAAEwvS,WAAW,MAAM90S,EAAE+0S,YAAY/0S,EAAE60S,WAAW,MAAM50S,EAAE+0S,GAAG1vS,EAAEC,GAAG,OAAOxF,EAAEqF,EAAE4vS,GAAGj1S,EAAEqF,IAAIA,EAAEgwS,GAAGhwS,EAAEC,EAAE7D,EAAE,OAAQ6mP,OAAO,EAAGjjP,EAAE0zO,OAAO94O,EAAEC,EAAE64O,OAAO94O,EAAEC,EAAEw5O,QAAQr0O,EAAEpF,EAAE6qB,MAAM5qB,EAASmF,CAAE,UAAS22S,GAAGh8S,EAAEC,GAAGD,EAAEsyS,OAAOryS,EAAE,IAAIC,EAAEF,EAAE67O,UAAU,OAAO37O,IAAIA,EAAEoyS,OAAOryS,GAAGgyS,GAAGjyS,EAAE+4O,OAAO94O,EAAG,CACzd,SAASg8S,GAAGj8S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,IAAIC,EAAEvF,EAAEs/R,cAAc,OAAO/5R,EAAEvF,EAAEs/R,cAAc,CAAC4c,YAAYj8S,EAAEk8S,UAAU,KAAKC,mBAAmB,EAAE5lN,KAAKnxF,EAAE65F,KAAKh/F,EAAEm8S,SAAS56S,EAAEqzS,WAAWxvS,IAAIC,EAAE22S,YAAYj8S,EAAEsF,EAAE42S,UAAU,KAAK52S,EAAE62S,mBAAmB,EAAE72S,EAAEixF,KAAKnxF,EAAEE,EAAE25F,KAAKh/F,EAAEqF,EAAE82S,SAAS56S,EAAE8D,EAAEuvS,WAAWxvS,EAAG,CAC1Q,SAASg3S,GAAGt8S,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEu2S,aAAa/0S,EAAE4D,EAAE6wS,YAAY5wS,EAAED,EAAE65F,KAAsC,GAAjCm7M,GAAGr6S,EAAEC,EAAEoF,EAAE0V,SAAS7a,GAAkB,KAAO,GAAtBmF,EAAE0lG,GAAExU,UAAqBlxF,EAAI,EAAFA,EAAI,EAAEpF,EAAEqoP,OAAO,OAAO,CAAC,GAAG,OAAOtoP,GAAG,KAAa,GAARA,EAAEsoP,OAAUtoP,EAAE,IAAIA,EAAEC,EAAE6qB,MAAM,OAAO9qB,GAAG,CAAC,GAAG,KAAKA,EAAE42N,IAAI,OAAO52N,EAAEs/R,eAAe0c,GAAGh8S,EAAEE,QAAQ,GAAG,KAAKF,EAAE42N,IAAIolF,GAAGh8S,EAAEE,QAAQ,GAAG,OAAOF,EAAE8qB,MAAM,CAAC9qB,EAAE8qB,MAAMiuN,OAAO/4O,EAAEA,EAAEA,EAAE8qB,MAAM,QAAS,IAAG9qB,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAE05O,SAAS,CAAC,GAAG,OAAO15O,EAAE+4O,QAAQ/4O,EAAE+4O,SAAS94O,EAAE,MAAMD,EAAEA,EAAEA,EAAE+4O,MAAO,CAAA/4O,EAAE05O,QAAQX,OAAO/4O,EAAE+4O,OAAO/4O,EAAEA,EAAE05O,OAAQ,CAAAr0O,GAAG,CAAE,CAAO,GAAPkkJ,GAAEx+C,GAAE1lG,GAAM,KAAY,EAAPpF,EAAE46C,MAAQ56C,EAAEq/R,cACze,UAAU,OAAO79R,GAAG,IAAK,WAAqB,IAAVvB,EAAED,EAAE6qB,MAAUrpB,EAAE,KAAK,OAAOvB,GAAiB,QAAdF,EAAEE,EAAE27O,YAAoB,OAAOo6D,GAAGj2S,KAAKyB,EAAEvB,GAAGA,EAAEA,EAAEw5O,QAAY,QAAJx5O,EAAEuB,IAAYA,EAAExB,EAAE6qB,MAAM7qB,EAAE6qB,MAAM,OAAOrpB,EAAEvB,EAAEw5O,QAAQx5O,EAAEw5O,QAAQ,MAAMuiE,GAAGh8S,GAAE,EAAGwB,EAAEvB,EAAEoF,EAAErF,EAAE60S,YAAY,MAAM,IAAK,YAA6B,IAAjB50S,EAAE,KAAKuB,EAAExB,EAAE6qB,MAAU7qB,EAAE6qB,MAAM,KAAK,OAAOrpB,GAAG,CAAe,GAAG,QAAjBzB,EAAEyB,EAAEo6O,YAAuB,OAAOo6D,GAAGj2S,GAAG,CAACC,EAAE6qB,MAAMrpB,EAAE,KAAM,CAAAzB,EAAEyB,EAAEi4O,QAAQj4O,EAAEi4O,QAAQx5O,EAAEA,EAAEuB,EAAEA,EAAEzB,CAAE,CAAAi8S,GAAGh8S,GAAE,EAAGC,EAAE,KAAKoF,EAAErF,EAAE60S,YAAY,MAAM,IAAK,WAAWmH,GAAGh8S,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAE60S,YAAY,MAAM,QAAQ70S,EAAEq/R,cAAc,KAAK,OAAOr/R,EAAE6qB,KAAM,CACrgB,SAASw3H,GAAGtiJ,EAAEC,EAAEC,GAAyD,GAAtD,OAAOF,IAAIC,EAAEmyS,aAAapyS,EAAEoyS,cAAcqB,IAAIxzS,EAAEqyS,MAAS,KAAKpyS,EAAED,EAAEiyS,YAAY,CAAC,GAAG,OAAOlyS,GAAGC,EAAE6qB,QAAQ9qB,EAAE8qB,MAAM,MAAM3pB,MAAM3D,EAAE,MAAM,GAAG,OAAOyC,EAAE6qB,MAAM,CAA4C,IAAjC5qB,EAAE+0S,GAAZj1S,EAAEC,EAAE6qB,MAAa9qB,EAAEw2S,cAAcv2S,EAAE6qB,MAAM5qB,EAAMA,EAAE64O,OAAO94O,EAAE,OAAOD,EAAE05O,SAAS15O,EAAEA,EAAE05O,SAAQx5O,EAAEA,EAAEw5O,QAAQu7D,GAAGj1S,EAAEA,EAAEw2S,eAAgBz9D,OAAO94O,EAAEC,EAAEw5O,QAAQ,IAAK,QAAOz5O,EAAE6qB,KAAM,QAAO,IAAK,CAKjQ,SAASyxR,GAAGv8S,EAAEC,GAAG,IAAI4wM,GAAG,OAAO7wM,EAAEq8S,UAAU,IAAK,SAASp8S,EAAED,EAAEk/F,KAAK,IAAI,IAAIh/F,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAE47O,YAAY37O,EAAED,GAAGA,EAAEA,EAAEy5O,QAAQ,OAAOx5O,EAAEF,EAAEk/F,KAAK,KAAKh/F,EAAEw5O,QAAQ,KAAK,MAAM,IAAK,YAAYx5O,EAAEF,EAAEk/F,KAAK,IAAI,IAAI75F,EAAE,KAAK,OAAOnF,GAAG,OAAOA,EAAE27O,YAAYx2O,EAAEnF,GAAGA,EAAEA,EAAEw5O,QAAQ,OAAOr0O,EAAEpF,GAAG,OAAOD,EAAEk/F,KAAKl/F,EAAEk/F,KAAK,KAAKl/F,EAAEk/F,KAAKw6I,QAAQ,KAAKr0O,EAAEq0O,QAAQ,KAAM,CACna,SAAS8iE,GAAGx8S,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEu2S,aAAa,OAAOv2S,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAQyC,KAAK,GAAG,OAAOu4E,GAAGlvS,EAAE1E,OAAO6zS,KAAK,KAR1C,KAAK,EAAsL,OAApL0G,KAAKxsJ,GAAE/+C,IAAG++C,GAAEJ,IAAG2tJ,MAAKxxS,EAAEpF,EAAE+4O,WAAYmiE,iBAAiB91S,EAAE2F,QAAQ3F,EAAE81S,eAAe91S,EAAE81S,eAAe,MAAS,OAAOn7S,GAAG,OAAOA,EAAE8qB,QAAM6rR,GAAG12S,GAAGA,EAAEqoP,OAAO,EAAEjjP,EAAE07R,UAAU9gS,EAAEqoP,OAAO,MAAkB,KAAK,KAAK,EAAE0tD,GAAG/1S,GAAG,IAAIwB,EAAEm0S,GAAGD,GAAGp/M,SAAkB,GAATr2F,EAAED,EAAE1E,KAAQ,OAAOyE,GAAG,MAAMC,EAAE+4O,UAAUqiE,GAAGr7S,EAAEC,EAAEC,EAAEmF,GAAKrF,EAAE6uI,MAAM5uI,EAAE4uI,MAAM5uI,EAAEqoP,OAAO,SAAS,CAAC,IAAIjjP,EAAE,CAAC,GAAG,OAC7fpF,EAAE+4O,UAAU,MAAM73O,MAAM3D,EAAE,MAAM,OAAO,IAAK,CAAiB,GAAjBwC,EAAE41S,GAAGH,GAAGl/M,SAAYogN,GAAG12S,GAAG,CAACoF,EAAEpF,EAAE+4O,UAAU94O,EAAED,EAAE1E,KAAK,IAAI+J,EAAErF,EAAE0yO,cAA8B,OAAhBttO,EAAEmpS,IAAIvuS,EAAEoF,EAAEopS,IAAInpS,EAASpF,GAAG,IAAK,SAASmpJ,GAAE,SAAShkJ,GAAGgkJ,GAAE,QAAQhkJ,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQgkJ,GAAE,OAAOhkJ,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIrF,EAAE,EAAEA,EAAEmqJ,GAAGpgK,OAAOiW,IAAIqpJ,GAAEc,GAAGnqJ,GAAGqF,GAAG,MAAM,IAAK,SAASgkJ,GAAE,QAAQhkJ,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOgkJ,GAAE,QAAQhkJ,GAAGgkJ,GAAE,OAAOhkJ,GAAG,MAAM,IAAK,UAAUgkJ,GAAE,SAAShkJ,GAAG,MAAM,IAAK,QAAQ61R,GAAG71R,EAAEC,GAAG+jJ,GAAE,UAAUhkJ,GAAG,MAAM,IAAK,SAASA,EAAE21R,cAC5f,CAACyhB,cAAcn3S,EAAEo3S,UAAUrzJ,GAAE,UAAUhkJ,GAAG,MAAM,IAAK,WAAWu2R,GAAGv2R,EAAEC,GAAG+jJ,GAAE,UAAUhkJ,GAAkB,IAAI,IAAIE,KAAvBqnB,GAAG1sB,EAAEoF,GAAGtF,EAAE,KAAkBsF,EAAEA,EAAE3X,eAAe4X,KAAK9D,EAAE6D,EAAEC,GAAG,aAAaA,EAAE,kBAAkB9D,EAAE4D,EAAEizN,cAAc72N,IAAIzB,EAAE,CAAC,WAAWyB,IAAI,kBAAkBA,GAAG4D,EAAEizN,cAAc,GAAG72N,IAAIzB,EAAE,CAAC,WAAW,GAAGyB,IAAIm4Q,EAAGjsR,eAAe4X,IAAI,MAAM9D,GAAG,aAAa8D,GAAG8jJ,GAAE,SAAShkJ,IAAI,OAAOnF,GAAG,IAAK,QAAQq6R,EAAGl1R,GAAGy0B,GAAGz0B,EAAEC,GAAE,GAAI,MAAM,IAAK,WAAWi1R,EAAGl1R,GAAGw2R,GAAGx2R,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBC,EAAEwpI,UAAUzpI,EAAEs3S,QACtf9O,IAAIxoS,EAAErF,EAAEC,EAAE4yS,YAAYxtS,EAAE,OAAOA,IAAIpF,EAAEqoP,OAAO,EAAG,KAAI,CAAiZ,OAAhZ/iP,EAAE,IAAI9D,EAAEq3N,SAASr3N,EAAEA,EAAE0nN,cAAcnpN,IAAI87R,KAAU97R,EAAE+7R,GAAG77R,IAAIF,IAAI87R,GAAQ,WAAW57R,IAAGF,EAAEuF,EAAE0qI,cAAc,QAAS2tI,UAAU,qBAAuB59Q,EAAEA,EAAE+5N,YAAY/5N,EAAEo8R,aAAa,kBAAkB/2R,EAAEooO,GAAGztO,EAAEuF,EAAE0qI,cAAc/vI,EAAE,CAACutO,GAAGpoO,EAAEooO,MAAMztO,EAAEuF,EAAE0qI,cAAc/vI,GAAG,WAAWA,IAAIqF,EAAEvF,EAAEqF,EAAEq3S,SAASn3S,EAAEm3S,UAAS,EAAGr3S,EAAEkE,OAAOhE,EAAEgE,KAAKlE,EAAEkE,QAAQvJ,EAAEuF,EAAEqC,gBAAgB5H,EAAEE,GAAGF,EAAEwuS,IAAIvuS,EAAED,EAAEyuS,IAAIppS,EAAE+1S,GAAGp7S,EAAEC,GAASA,EAAE+4O,UAAUh5O,EAAEuF,EAAEg4R,GAAGr9R,EAAEmF,GAAUnF,GAAG,IAAK,SAASmpJ,GAAE,SAASrpJ,GAAGqpJ,GAAE,QAAQrpJ,GACpfyB,EAAE4D,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQgkJ,GAAE,OAAOrpJ,GAAGyB,EAAE4D,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI5D,EAAE,EAAEA,EAAE0oJ,GAAGpgK,OAAO0X,IAAI4nJ,GAAEc,GAAG1oJ,GAAGzB,GAAGyB,EAAE4D,EAAE,MAAM,IAAK,SAASgkJ,GAAE,QAAQrpJ,GAAGyB,EAAE4D,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOgkJ,GAAE,QAAQrpJ,GAAGqpJ,GAAE,OAAOrpJ,GAAGyB,EAAE4D,EAAE,MAAM,IAAK,UAAUgkJ,GAAE,SAASrpJ,GAAGyB,EAAE4D,EAAE,MAAM,IAAK,QAAQ61R,GAAGl7R,EAAEqF,GAAG5D,EAAEq5R,EAAG96R,EAAEqF,GAAGgkJ,GAAE,UAAUrpJ,GAAG,MAAM,IAAK,SAASyB,EAAE85R,GAAGv7R,EAAEqF,GAAG,MAAM,IAAK,SAASrF,EAAEg7R,cAAc,CAACyhB,cAAcp3S,EAAEq3S,UAAUj7S,EAAEpE,EAAE,CAAC,EAAEgI,EAAE,CAAC7Z,WAAM,IAAS69J,GAAE,UAAUrpJ,GAAG,MAAM,IAAK,WAAW47R,GAAG57R,EAAEqF,GAAG5D,EACpfk6R,GAAG37R,EAAEqF,GAAGgkJ,GAAE,UAAUrpJ,GAAG,MAAM,QAAQyB,EAAE4D,EAAEunB,GAAG1sB,EAAEuB,GAAG,IAAI+D,EAAE/D,EAAE,IAAI6D,KAAKE,EAAE,GAAGA,EAAE7X,eAAe2X,GAAG,CAAC,IAAI89D,EAAE59D,EAAEF,GAAG,UAAUA,EAAEu3R,GAAG78R,EAAEojE,GAAG,4BAA4B99D,EAAuB,OAApB89D,EAAEA,EAAEA,EAAEihK,YAAO,IAAgB63D,GAAGl8R,EAAEojE,GAAI,aAAa99D,EAAE,kBAAkB89D,GAAG,aAAaljE,GAAG,KAAKkjE,IAAIm5N,GAAGv8R,EAAEojE,GAAG,kBAAkBA,GAAGm5N,GAAGv8R,EAAE,GAAGojE,GAAG,mCAAmC99D,GAAG,6BAA6BA,GAAG,cAAcA,IAAIs0Q,EAAGjsR,eAAe2X,GAAG,MAAM89D,GAAG,aAAa99D,GAAG+jJ,GAAE,SAASrpJ,GAAG,MAAMojE,GAAG1uD,EAAG1U,EAAEsF,EAAE89D,EAAE79D,GAAI,QAAOrF,GAAG,IAAK,QAAQq6R,EAAGv6R,GAAG85B,GAAG95B,EAAEqF,GAAE,GACnf,MAAM,IAAK,WAAWk1R,EAAGv6R,GAAG67R,GAAG77R,GAAG,MAAM,IAAK,SAAS,MAAMqF,EAAE7Z,OAAOwU,EAAEu3B,aAAa,QAAQ,GAAG8iQ,EAAGh1R,EAAE7Z,QAAQ,MAAM,IAAK,SAASwU,EAAE08S,WAAWr3S,EAAEq3S,SAAmB,OAAVp3S,EAAED,EAAE7Z,OAAck1K,GAAG1gK,IAAIqF,EAAEq3S,SAASp3S,GAAE,GAAI,MAAMD,EAAE04I,cAAc2iB,GAAG1gK,IAAIqF,EAAEq3S,SAASr3S,EAAE04I,cAAa,GAAI,MAAM,QAAQ,oBAAoBt8I,EAAEqtI,UAAU9uI,EAAE28S,QAAQ9O,IAAIG,GAAG9tS,EAAEmF,KAAKpF,EAAEqoP,OAAO,EAAG,QAAOroP,EAAE4uI,MAAM5uI,EAAEqoP,OAAO,IAAK,QAAO,KAAK,KAAK,EAAE,GAAGtoP,GAAG,MAAMC,EAAE+4O,UAAUsiE,GAAGt7S,EAAEC,EAAED,EAAE2yO,cAActtO,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOpF,EAAE+4O,UAAU,MAAM73O,MAAM3D,EAAE,MAC/e0C,EAAE01S,GAAGD,GAAGp/M,SAASq/M,GAAGH,GAAGl/M,SAASogN,GAAG12S,IAAIoF,EAAEpF,EAAE+4O,UAAU94O,EAAED,EAAE0yO,cAActtO,EAAEmpS,IAAIvuS,EAAEoF,EAAEo5Q,YAAYv+Q,IAAID,EAAEqoP,OAAO,MAAKjjP,GAAG,IAAInF,EAAE44N,SAAS54N,EAAEA,EAAEipN,eAAemQ,eAAej0N,IAAKmpS,IAAIvuS,EAAEA,EAAE+4O,UAAU3zO,EAAG,QAAO,KAAK,KAAK,GAA0B,OAAvBikJ,GAAEv+C,IAAG1lG,EAAEpF,EAAEq/R,cAAiB,KAAa,GAARr/R,EAAEqoP,QAAiBroP,EAAEqyS,MAAMpyS,EAAED,IAAEoF,EAAE,OAAOA,EAAEnF,GAAE,EAAG,OAAOF,OAAE,IAASC,EAAE0yO,cAAcn2E,UAAUm6I,GAAG12S,GAAGC,EAAE,OAAOF,EAAEs/R,cAAiBj6R,IAAInF,GAAG,KAAY,EAAPD,EAAE46C,QAAW,OAAO76C,IAAG,IAAKC,EAAE0yO,cAAc+oE,4BAA4B,KAAe,EAAV3wM,GAAExU,SAAW,IAAIqyD,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GACrf,GAAE,OAAOC,IAAG,KAAQ,UAAH4qJ,KAAe,KAAQ,UAAHmJ,KAAeC,GAAGh0J,GAAEF,OAAMtjJ,GAAGnF,KAAED,EAAEqoP,OAAO,GAAS,MAAK,KAAK,EAAE,OAAOwtD,KAAW,OAAO91S,GAAG2hB,GAAG1hB,EAAE+4O,UAAUC,eAAe,KAAK,KAAK,GAAG,OAAO+4D,GAAG/xS,GAAG,KAA0C,KAAK,GAA0B,GAAvBqpJ,GAAEv+C,IAAwB,QAArB1lG,EAAEpF,EAAEq/R,eAA0B,OAAO,KAAsC,GAAjCh6R,EAAE,KAAa,GAARrF,EAAEqoP,OAA2B,QAAjB/iP,EAAEF,EAAE82S,WAAsB,GAAG72S,EAAEi3S,GAAGl3S,GAAE,OAAQ,CAAC,GAAG,IAAIujJ,IAAG,OAAO5oJ,GAAG,KAAa,GAARA,EAAEsoP,OAAU,IAAItoP,EAAEC,EAAE6qB,MAAM,OAAO9qB,GAAG,CAAS,GAAG,QAAXuF,EAAE0wS,GAAGj2S,IAAe,CACjW,IADkWC,EAAEqoP,OAAO,GAAGi0D,GAAGl3S,GAAE,GAAoB,QAAhBC,EAAEC,EAAEstS,eAAuB5yS,EAAE4yS,YAAYvtS,EAAErF,EAAEqoP,OAAO,GACnf,OAAOjjP,EAAEyvS,aAAa70S,EAAE+0S,YAAY,MAAM/0S,EAAE60S,WAAWzvS,EAAEyvS,WAAWzvS,EAAEnF,EAAMA,EAAED,EAAE6qB,MAAM,OAAO5qB,GAAOF,EAAEqF,GAANC,EAAEpF,GAAQooP,OAAO,EAAEhjP,EAAEyvS,WAAW,KAAKzvS,EAAE0vS,YAAY,KAAK1vS,EAAEwvS,WAAW,KAAmB,QAAdvvS,EAAED,EAAEu2O,YAAoBv2O,EAAE4sS,WAAW,EAAE5sS,EAAEgtS,MAAMtyS,EAAEsF,EAAEwlB,MAAM,KAAKxlB,EAAEqtO,cAAc,KAAKrtO,EAAEg6R,cAAc,KAAKh6R,EAAEutS,YAAY,KAAKvtS,EAAE8sS,aAAa,KAAK9sS,EAAE0zO,UAAU,OAAO1zO,EAAE4sS,WAAW3sS,EAAE2sS,WAAW5sS,EAAEgtS,MAAM/sS,EAAE+sS,MAAMhtS,EAAEwlB,MAAMvlB,EAAEulB,MAAMxlB,EAAEqtO,cAAcptO,EAAEotO,cAAcrtO,EAAEg6R,cAAc/5R,EAAE+5R,cAAch6R,EAAEutS,YAAYttS,EAAEstS,YAAYvtS,EAAE/J,KAAKgK,EAAEhK,KAAKyE,EAAEuF,EAAE6sS,aACpf9sS,EAAE8sS,aAAa,OAAOpyS,EAAE,KAAK,CAACsyS,MAAMtyS,EAAEsyS,MAAMD,aAAaryS,EAAEqyS,eAAenyS,EAAEA,EAAEw5O,QAA2B,OAAnBnwF,GAAEx+C,GAAY,EAAVA,GAAExU,QAAU,GAAUt2F,EAAE6qB,KAAM,CAAA9qB,EAAEA,EAAE05O,OAAQ,QAAOr0O,EAAE65F,MAAM+pD,KAAI6zJ,KAAK78S,EAAEqoP,OAAO,GAAGhjP,GAAE,EAAGi3S,GAAGl3S,GAAE,GAAIpF,EAAEqyS,MAAM,SAAU,KAAI,CAAC,IAAIhtS,EAAE,GAAW,QAARtF,EAAEi2S,GAAG1wS,KAAa,GAAGtF,EAAEqoP,OAAO,GAAGhjP,GAAE,EAAmB,QAAhBpF,EAAEF,EAAE6yS,eAAuB5yS,EAAE4yS,YAAY3yS,EAAED,EAAEqoP,OAAO,GAAGi0D,GAAGl3S,GAAE,GAAI,OAAOA,EAAE65F,MAAM,WAAW75F,EAAEg3S,WAAW92S,EAAEs2O,YAAYhrC,GAAG,OAAmC,QAA5B5wM,EAAEA,EAAE60S,WAAWzvS,EAAEyvS,cAAsB70S,EAAE80S,WAAW,MAAM,UAAU,EAAE9rJ,KAAI5jJ,EAAE+2S,mBAAmBU,IAAI,aAAa58S,IAAID,EAAEqoP,OACjf,GAAGhjP,GAAE,EAAGi3S,GAAGl3S,GAAE,GAAIpF,EAAEqyS,MAAM,UAAUjtS,EAAE62S,aAAa32S,EAAEm0O,QAAQz5O,EAAE6qB,MAAM7qB,EAAE6qB,MAAMvlB,IAAa,QAATrF,EAAEmF,EAAEmxF,MAAct2F,EAAEw5O,QAAQn0O,EAAEtF,EAAE6qB,MAAMvlB,EAAEF,EAAEmxF,KAAKjxF,EAAG,QAAO,OAAOF,EAAE65F,MAAMh/F,EAAEmF,EAAE65F,KAAK75F,EAAE82S,UAAUj8S,EAAEmF,EAAE65F,KAAKh/F,EAAEw5O,QAAQr0O,EAAEyvS,WAAW70S,EAAE60S,WAAWzvS,EAAE+2S,mBAAmBnzJ,KAAI/oJ,EAAEw5O,QAAQ,KAAKz5O,EAAE8qG,GAAExU,QAAQgzD,GAAEx+C,GAAEzlG,EAAI,EAAFrF,EAAI,EAAI,EAAFA,GAAKC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO68S,KAAK,OAAO/8S,GAAG,OAAOA,EAAEs/R,iBAAiB,OAAOr/R,EAAEq/R,gBAAgB,kCAAkCj6R,EAAEw1C,OAAO56C,EAAEqoP,OAAO,GAAG,KAAK,MAAMnnP,MAAM3D,EAAE,IAAIyC,EAAE22N,KAAO,CACvd,SAASomF,GAAGh9S,GAAG,OAAOA,EAAE42N,KAAK,KAAK,EAAEu4E,GAAGnvS,EAAEzE,OAAO6zS,KAAK,IAAInvS,EAAED,EAAEsoP,MAAM,OAAS,KAAFroP,GAAQD,EAAEsoP,OAAS,KAAHroP,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAAgC,GAA9B81S,KAAKxsJ,GAAE/+C,IAAG++C,GAAEJ,IAAG2tJ,KAAkB,KAAO,IAApB52S,EAAED,EAAEsoP,QAAoB,MAAMnnP,MAAM3D,EAAE,MAAyB,OAAnBwC,EAAEsoP,OAAS,KAAHroP,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAOg2S,GAAGh2S,GAAG,KAAK,KAAK,GAAG,OAAOspJ,GAAEv+C,IAAe,MAAZ9qG,EAAED,EAAEsoP,QAActoP,EAAEsoP,OAAS,KAAHroP,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAOspJ,GAAEv+C,IAAG,KAAK,KAAK,EAAE,OAAO+qM,KAAK,KAAK,KAAK,GAAG,OAAO9D,GAAGhyS,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO+8S,KAAK,KAAK,QAAQ,OAAO,KAAM,CAC3a,SAASE,GAAGj9S,EAAEC,GAAG,IAAI,IAAIC,EAAE,GAAGmF,EAAEpF,EAAE,GAAGC,GAAGg6R,EAAG70R,GAAGA,EAAEA,EAAE0zO,aAAa1zO,GAAG,IAAI5D,EAAEvB,CAAiE,CAA/D,MAAMoF,GAAG7D,EAAE,6BAA6B6D,EAAEg+E,QAAQ,KAAKh+E,EAAEwoK,KAAM,OAAM,CAACtiL,MAAMwU,EAAEhW,OAAOiW,EAAE6tK,MAAMrsK,EAAG,UAASy7S,GAAGl9S,EAAEC,GAAG,IAAIc,QAAQiC,MAAM/C,EAAEzU,MAAiD,CAA1C,MAAM0U,GAAGk6G,YAAW,WAAW,MAAMl6G,CAAG,GAAE,CAAC,CAlBjQk7S,GAAG,SAASp7S,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAE6qB,MAAM,OAAO5qB,GAAG,CAAC,GAAG,IAAIA,EAAE02N,KAAK,IAAI12N,EAAE02N,IAAI52N,EAAEq5N,YAAYn5N,EAAE84O,gBAAgB,GAAG,IAAI94O,EAAE02N,KAAK,OAAO12N,EAAE4qB,MAAM,CAAC5qB,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,IAAG5qB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS94O,EAAE,OAAOC,EAAEA,EAAE64O,MAAO,CAAA74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,CAAC,EACzS2hE,GAAG,SAASr7S,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE2yO,cAAc,GAAGlxO,IAAI4D,EAAE,CAACrF,EAAEC,EAAE+4O,UAAU48D,GAAGH,GAAGl/M,SAAS,IAAyUhxF,EAArUD,EAAE,KAAK,OAAOpF,GAAG,IAAK,QAAQuB,EAAEq5R,EAAG96R,EAAEyB,GAAG4D,EAAEy1R,EAAG96R,EAAEqF,GAAGC,EAAE,GAAG,MAAM,IAAK,SAAS7D,EAAE85R,GAAGv7R,EAAEyB,GAAG4D,EAAEk2R,GAAGv7R,EAAEqF,GAAGC,EAAE,GAAG,MAAM,IAAK,SAAS7D,EAAEpE,EAAE,CAAC,EAAEoE,EAAE,CAACjW,WAAM,IAAS6Z,EAAEhI,EAAE,CAAC,EAAEgI,EAAE,CAAC7Z,WAAM,IAAS8Z,EAAE,GAAG,MAAM,IAAK,WAAW7D,EAAEk6R,GAAG37R,EAAEyB,GAAG4D,EAAEs2R,GAAG37R,EAAEqF,GAAGC,EAAE,GAAG,MAAM,QAAQ,oBAAoB7D,EAAEqtI,SAAS,oBAAoBzpI,EAAEypI,UAAU9uI,EAAE28S,QAAQ9O,IAAyB,IAAI3xS,KAAzB0wB,GAAG1sB,EAAEmF,GAASnF,EAAE,KAAcuB,EAAE,IAAI4D,EAAE1X,eAAeuO,IAAIuF,EAAE9T,eAAeuO,IAAI,MAAMuF,EAAEvF,GAAG,GAAG,UAC3eA,EAAE,CAAC,IAAIsJ,EAAE/D,EAAEvF,GAAG,IAAIqJ,KAAKC,EAAEA,EAAE7X,eAAe4X,KAAKrF,IAAIA,EAAE,CAAC,GAAGA,EAAEqF,GAAG,GAAI,KAAI,4BAA4BrJ,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAI09Q,EAAGjsR,eAAeuO,GAAGoJ,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI7b,KAAKyS,EAAE,OAAO,IAAIA,KAAKmJ,EAAE,CAAC,IAAI+9D,EAAE/9D,EAAEnJ,GAAyB,GAAtBsJ,EAAE,MAAM/D,EAAEA,EAAEvF,QAAG,EAAUmJ,EAAE1X,eAAeuO,IAAIknE,IAAI59D,IAAI,MAAM49D,GAAG,MAAM59D,GAAG,GAAG,UAAUtJ,EAAE,GAAGsJ,EAAE,CAAC,IAAID,KAAKC,GAAGA,EAAE7X,eAAe4X,IAAI69D,GAAGA,EAAEz1E,eAAe4X,KAAKrF,IAAIA,EAAE,CAAC,GAAGA,EAAEqF,GAAG,IAAI,IAAIA,KAAK69D,EAAEA,EAAEz1E,eAAe4X,IAAIC,EAAED,KAAK69D,EAAE79D,KAAKrF,IAClfA,EAAE,CAAC,GAAGA,EAAEqF,GAAG69D,EAAE79D,GAAI,MAAKrF,IAAIoF,IAAIA,EAAE,IAAIA,EAAE7b,KAAKyS,EAAEgE,IAAIA,EAAEkjE,MAAM,4BAA4BlnE,GAAGknE,EAAEA,EAAEA,EAAEihK,YAAO,EAAO7+N,EAAEA,EAAEA,EAAE6+N,YAAO,EAAO,MAAMjhK,GAAG59D,IAAI49D,IAAI99D,EAAEA,GAAG,IAAI7b,KAAKyS,EAAEknE,IAAI,aAAalnE,EAAE,kBAAkBknE,GAAG,kBAAkBA,IAAI99D,EAAEA,GAAG,IAAI7b,KAAKyS,EAAE,GAAGknE,GAAG,mCAAmClnE,GAAG,6BAA6BA,IAAI09Q,EAAGjsR,eAAeuO,IAAI,MAAMknE,GAAG,aAAalnE,GAAGmtJ,GAAE,SAASrpJ,GAAGsF,GAAGE,IAAI49D,IAAI99D,EAAE,KAAK,kBAAkB89D,GAAG,OAAOA,GAAGA,EAAE0zN,WAAWyC,EAAGn2N,EAAEv0E,YAAYyW,EAAEA,GAAG,IAAI7b,KAAKyS,EAAEknE,GAAI,CAAAljE,IAAIoF,EAAEA,GAAG,IAAI7b,KAAK,QAC/eyW,GAAG,IAAIhE,EAAEoJ,GAAKrF,EAAE4yS,YAAY32S,KAAE+D,EAAEqoP,OAAO,EAAE,CAAC,EAACgzD,GAAG,SAASt7S,EAAEC,EAAEC,EAAEmF,GAAGnF,IAAImF,IAAIpF,EAAEqoP,OAAO,EAAG,EAc6K,IAAI60D,GAAG,oBAAoBn2Q,QAAQA,QAAQgxB,IAAI,SAASolP,GAAGp9S,EAAEC,EAAEC,IAAGA,EAAEgzS,IAAI,EAAEhzS,IAAK02N,IAAI,EAAE12N,EAAEmzS,QAAQ,CAAC/pR,QAAQ,MAAM,IAAIjkB,EAAEpF,EAAEzU,MAAsD,OAAhD0U,EAAE8U,SAAS,WAAWqoS,KAAKA,IAAG,EAAGC,GAAGj4S,GAAG63S,GAAGl9S,EAAEC,EAAG,EAAQC,CAAE,CACtb,SAASq9S,GAAGv9S,EAAEC,EAAEC,IAAGA,EAAEgzS,IAAI,EAAEhzS,IAAK02N,IAAI,EAAE,IAAIvxN,EAAErF,EAAEzE,KAAKm6O,yBAAyB,GAAG,oBAAoBrwO,EAAE,CAAC,IAAI5D,EAAExB,EAAEzU,MAAM0U,EAAEmzS,QAAQ,WAAmB,OAAR6J,GAAGl9S,EAAEC,GAAUoF,EAAE5D,EAAG,CAAC,KAAI6D,EAAEtF,EAAEg5O,UAA8O,OAApO,OAAO1zO,GAAG,oBAAoBA,EAAEk4S,oBAAoBt9S,EAAE8U,SAAS,WAAW,oBAAoB3P,IAAI,OAAOo4S,GAAGA,GAAG,IAAIjlP,IAAI,CAACzsE,OAAO0xT,GAAG3jS,IAAI/tB,MAAMmxT,GAAGl9S,EAAEC,IAAI,IAAIC,EAAED,EAAE6tK,MAAM/hL,KAAKyxT,kBAAkBv9S,EAAEzU,MAAM,CAACkyT,eAAe,OAAOx9S,EAAEA,EAAE,IAAK,GAASA,CAAE,KAAIy9S,GAAG,oBAAoBC,QAAQA,QAAQplP,IACxc,SAASqlP,GAAG79S,GAAG,IAAIC,EAAED,EAAE6uI,IAAI,GAAG,OAAO5uI,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAuB,CAAjB,MAAMC,GAAG49S,GAAG99S,EAAEE,EAAG,MAAKD,EAAEs2F,QAAQ,IAAK,UAASwnN,GAAG/9S,EAAEC,GAAG,OAAOA,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAA8Q,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAjS,KAAK,EAAE,GAAW,IAAR32N,EAAEqoP,OAAW,OAAOtoP,EAAE,CAAC,IAAIE,EAAEF,EAAE2yO,cAActtO,EAAErF,EAAEs/R,cAA4Br/R,GAAdD,EAAEC,EAAE+4O,WAAcxjB,wBAAwBv1N,EAAE+0K,cAAc/0K,EAAE1E,KAAK2E,EAAEohP,GAAGrhP,EAAE1E,KAAK2E,GAAGmF,GAAGrF,EAAEg+S,oCAAoC/9S,CAAE,QAAO,KAAK,EAA6C,YAAnC,IAARA,EAAEqoP,OAAW8lD,GAAGnuS,EAAE+4O,UAAUC,gBAA0D,MAAM93O,MAAM3D,EAAE,KAAO,CACnf,SAASygT,GAAGj+S,EAAEC,EAAEC,GAAG,OAAOA,EAAE02N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhC32N,EAAE,QAAlBA,EAAEC,EAAE2yS,aAAuB5yS,EAAE60S,WAAW,MAAiB,CAAC90S,EAAEC,EAAEA,EAAEnT,KAAK,EAAE,CAAC,GAAG,KAAW,EAANkT,EAAE42N,KAAO,CAAC,IAAIvxN,EAAErF,EAAE1U,OAAO0U,EAAE03D,QAAQryD,GAAI,CAAArF,EAAEA,EAAElT,IAAK,OAAMkT,IAAIC,EAAG,CAA6C,GAAG,QAAhCA,EAAE,QAAlBA,EAAEC,EAAE2yS,aAAuB5yS,EAAE60S,WAAW,MAAiB,CAAC90S,EAAEC,EAAEA,EAAEnT,KAAK,EAAE,CAAC,IAAI2U,EAAEzB,EAAEqF,EAAE5D,EAAE3U,KAAa,KAAO,GAAf2U,EAAEA,EAAEm1N,OAAe,KAAO,EAAFn1N,KAAOy8S,GAAGh+S,EAAEF,GAAGm+S,GAAGj+S,EAAEF,IAAIA,EAAEqF,CAAE,OAAMrF,IAAIC,EAAG,QAAO,KAAK,EACtR,OADwRD,EAAEE,EAAE84O,UAAkB,EAAR94O,EAAEooP,QAAU,OAAOroP,EAAED,EAAEutN,qBAAqBloN,EAAEnF,EAAE80K,cAAc90K,EAAE3E,KAAK0E,EAAE0yO,cAAc2O,GAAGphP,EAAE3E,KAAK0E,EAAE0yO,eAAe3yO,EAAEytN,mBAAmBpoN,EACxgBpF,EAAEq/R,cAAct/R,EAAEg+S,4CAAuD,QAAhB/9S,EAAEC,EAAE2yS,cAAsBa,GAAGxzS,EAAED,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAEC,EAAE2yS,aAAwB,CAAQ,GAAP7yS,EAAE,KAAQ,OAAOE,EAAE4qB,MAAM,OAAO5qB,EAAE4qB,MAAM8rM,KAAK,KAAK,EAA4B,KAAK,EAAE52N,EAAEE,EAAE4qB,MAAMkuN,UAAU06D,GAAGxzS,EAAED,EAAED,EAAG,QAAO,KAAK,EAA2E,OAAzEA,EAAEE,EAAE84O,eAAU,OAAO/4O,GAAW,EAARC,EAAEooP,OAAS0lD,GAAG9tS,EAAE3E,KAAK2E,EAAEyyO,gBAAgB3yO,EAAEygC,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GACnX,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAD6U,KAAK,GACzY,YAD4Y,OAAOvgC,EAAEo/R,gBAAgBp/R,EAAEA,EAAE27O,UAAU,OAAO37O,IAAIA,EAAEA,EAAEo/R,cAAc,OAAOp/R,IAAIA,EAAEA,EAAEq/R,WAAW,OAAOr/R,GAAGqhS,GAAGrhS,OACzb,MAAMiB,MAAM3D,EAAE,KAAO,CACnF,SAASg2F,GAAGxzF,EAAEC,GAAG,IAAI,IAAIC,EAAEF,IAAI,CAAC,GAAG,IAAIE,EAAE02N,IAAI,CAAC,IAAIvxN,EAAEnF,EAAE84O,UAAU,GAAG/4O,EAAY,oBAAVoF,EAAEA,EAAEyD,OAA4Bq+J,YAAY9hK,EAAE8hK,YAAY,UAAU,OAAO,aAAa9hK,EAAEu6E,QAAQ,WAAW,CAACv6E,EAAEnF,EAAE84O,UAAU,IAAIv3O,EAAEvB,EAAEyyO,cAAc7pO,MAAMrH,OAAE,IAASA,GAAG,OAAOA,GAAGA,EAAE9T,eAAe,WAAW8T,EAAEm+E,QAAQ,KAAKv6E,EAAEyD,MAAM82E,QAAQg9M,GAAG,UAAUn7R,EAAG,CAAC,MAAK,GAAG,IAAIvB,EAAE02N,IAAI12N,EAAE84O,UAAUylC,UAAUx+Q,EAAE,GAAGC,EAAEyyO,mBAAmB,IAAI,KAAKzyO,EAAE02N,KAAK,KAAK12N,EAAE02N,KAAK,OAAO12N,EAAEo/R,eAAep/R,IAAIF,IAAI,OAAOE,EAAE4qB,MAAM,CAAC5qB,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,IAAG5qB,IACtfF,EAAE,MAAM,KAAK,OAAOE,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS/4O,EAAE,OAAOE,EAAEA,EAAE64O,MAAO,CAAA74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,CAAC,CAC1H,SAASjmJ,GAAGzzF,EAAEC,GAAG,GAAG2vS,IAAI,oBAAoBA,GAAGwO,qBAAqB,IAAIxO,GAAGwO,qBAAqBzO,GAAG1vS,EAAa,CAAV,MAAMqF,GAAI,QAAOrF,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB52N,EAAEC,EAAE4yS,cAAyC,QAAf7yS,EAAEA,EAAE80S,YAAqB,CAAC,IAAI50S,EAAEF,EAAEA,EAAElT,KAAK,EAAE,CAAC,IAAIuY,EAAEnF,EAAEuB,EAAE4D,EAAEqyD,QAAgB,GAARryD,EAAEA,EAAEuxN,SAAO,IAASn1N,EAAE,GAAG,KAAO,EAAF4D,GAAK64S,GAAGj+S,EAAEC,OAAO,CAACmF,EAAEpF,EAAE,IAAIwB,GAAqB,CAAjB,MAAM6D,GAAGw4S,GAAGz4S,EAAEC,EAAG,CAAC,CAAApF,EAAEA,EAAEpT,IAAK,OAAMoT,IAAIF,EAAG,OAAM,KAAK,EAAsB,GAApB69S,GAAG59S,GAAoB,oBAAjBD,EAAEC,EAAE+4O,WAAmCprB,qBAAqB,IAAI5tN,EAAErV,MAAMsV,EAAE0yO,cAAc3yO,EAAEg1C,MAAM/0C,EAAEq/R,cAAct/R,EAAE4tN,sBACze,CADggB,MAAMtoN,GAAGw4S,GAAG79S,EAC/gBqF,EAAG,OAAM,KAAK,EAAEu4S,GAAG59S,GAAG,MAAM,KAAK,EAAEo+S,GAAGr+S,EAAEC,GAAI,UAASq+S,GAAGt+S,GAAGA,EAAE67O,UAAU,KAAK77O,EAAE8qB,MAAM,KAAK9qB,EAAEoyS,aAAa,KAAKpyS,EAAEg1S,YAAY,KAAKh1S,EAAE80S,WAAW,KAAK90S,EAAE2yO,cAAc,KAAK3yO,EAAEs/R,cAAc,KAAKt/R,EAAEw2S,aAAa,KAAKx2S,EAAE+4O,OAAO,KAAK/4O,EAAE6yS,YAAY,IAAK,UAAS0L,GAAGv+S,GAAG,OAAO,IAAIA,EAAE42N,KAAK,IAAI52N,EAAE42N,KAAK,IAAI52N,EAAE42N,GAAI,CACvS,SAAS4nF,GAAGx+S,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAE+4O,OAAO,OAAO94O,GAAG,CAAC,GAAGs+S,GAAGt+S,GAAG,MAAMD,EAAEC,EAAEA,EAAE84O,MAAO,OAAM53O,MAAM3D,EAAE,KAAO,KAAI0C,EAAED,EAAgB,OAAdA,EAAEC,EAAE84O,UAAiB94O,EAAE02N,KAAK,KAAK,EAAE,IAAIvxN,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEpF,EAAEA,EAAEg5O,cAAc5zO,GAAE,EAAG,MAAM,QAAQ,MAAMlE,MAAM3D,EAAE,MAAe,GAAR0C,EAAEooP,QAAWi0C,GAAGt8R,EAAE,IAAIC,EAAEooP,QAAQ,IAAItoP,EAAEC,EAAE,IAAIC,EAAEF,IAAI,CAAC,KAAK,OAAOE,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQwlE,GAAGr+S,EAAE64O,QAAQ,CAAC74O,EAAE,KAAK,MAAMF,CAAE,CAAAE,EAAEA,EAAE64O,MAAO,CAA0B,IAA1B74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAW74O,EAAEA,EAAEw5O,QAAQ,IAAIx5O,EAAE02N,KAAK,IAAI12N,EAAE02N,KAAK,KAAK12N,EAAE02N,KAAK,CAAC,GAAW,EAAR12N,EAAEooP,MAAQ,SAASroP,EAAE,GAAG,OAC/eC,EAAE4qB,OAAO,IAAI5qB,EAAE02N,IAAI,SAAS32N,EAAOC,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,KAAM,MAAa,EAAR5qB,EAAEooP,OAAS,CAACpoP,EAAEA,EAAE84O,UAAU,MAAMh5O,CAAE,CAAC,CAAAqF,EAAEo5S,GAAGz+S,EAAEE,EAAED,GAAGy+S,GAAG1+S,EAAEE,EAAED,EAAG,CAC5H,SAASw+S,GAAGz+S,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAE42N,IAAIn1N,EAAE,IAAI4D,GAAG,IAAIA,EAAE,GAAG5D,EAAEzB,EAAEyB,EAAEzB,EAAEg5O,UAAUh5O,EAAEg5O,UAAUzuP,SAAS0V,EAAE,IAAIC,EAAE44N,SAAS54N,EAAEsiK,WAAW22D,aAAan5N,EAAEC,GAAGC,EAAEi5N,aAAan5N,EAAEC,IAAI,IAAIC,EAAE44N,UAAU74N,EAAEC,EAAEsiK,YAAa22D,aAAan5N,EAAEE,IAAKD,EAAEC,GAAIm5N,YAAYr5N,GAA4B,QAAxBE,EAAEA,EAAEy+S,2BAA8B,IAASz+S,GAAG,OAAOD,EAAE08S,UAAU18S,EAAE08S,QAAQ9O,UAAU,GAAG,IAAIxoS,GAAc,QAAVrF,EAAEA,EAAE8qB,OAAgB,IAAI2zR,GAAGz+S,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,QAAQ,OAAO15O,GAAGy+S,GAAGz+S,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,OAAQ,CACtZ,SAASglE,GAAG1+S,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAE42N,IAAIn1N,EAAE,IAAI4D,GAAG,IAAIA,EAAE,GAAG5D,EAAEzB,EAAEyB,EAAEzB,EAAEg5O,UAAUh5O,EAAEg5O,UAAUzuP,SAAS0V,EAAEC,EAAEi5N,aAAan5N,EAAEC,GAAGC,EAAEm5N,YAAYr5N,QAAQ,GAAG,IAAIqF,GAAc,QAAVrF,EAAEA,EAAE8qB,OAAgB,IAAI4zR,GAAG1+S,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,QAAQ,OAAO15O,GAAG0+S,GAAG1+S,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,OAAQ,CAC7N,SAAS2kE,GAAGr+S,EAAEC,GAAG,IAAI,IAAawB,EAAE6D,EAAXpF,EAAED,EAAEoF,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEnF,EAAE64O,OAAO/4O,EAAE,OAAO,CAAC,GAAG,OAAOqF,EAAE,MAAMlE,MAAM3D,EAAE,MAAoB,OAAdiE,EAAE4D,EAAE2zO,UAAiB3zO,EAAEuxN,KAAK,KAAK,EAAEtxN,GAAE,EAAG,MAAMtF,EAAE,KAAK,EAAiC,KAAK,EAAEyB,EAAEA,EAAEw3O,cAAc3zO,GAAE,EAAG,MAAMtF,EAAEqF,EAAEA,EAAE0zO,MAAO,CAAA1zO,GAAE,CAAG,IAAG,IAAInF,EAAE02N,KAAK,IAAI12N,EAAE02N,IAAI,CAAC52N,EAAE,IAAI,IAAIuF,EAAEvF,EAAEwF,EAAEtF,EAAEkjE,EAAE59D,IAAI,GAAGiuF,GAAGluF,EAAE69D,GAAG,OAAOA,EAAEt4C,OAAO,IAAIs4C,EAAEwzJ,IAAIxzJ,EAAEt4C,MAAMiuN,OAAO31K,EAAEA,EAAEA,EAAEt4C,UAAU,CAAC,GAAGs4C,IAAI59D,EAAE,MAAMxF,EAAE,KAAK,OAAOojE,EAAEs2K,SAAS,CAAC,GAAG,OAAOt2K,EAAE21K,QAAQ31K,EAAE21K,SAASvzO,EAAE,MAAMxF,EAAEojE,EAAEA,EAAE21K,MAAO,CAAA31K,EAAEs2K,QAAQX,OAAO31K,EAAE21K,OAAO31K,EAAEA,EAAEs2K,OAAQ,CAAAp0O,GAAGC,EAAE9D,EAAE+D,EAAEtF,EAAE84O,UACrf,IAAIzzO,EAAEuzN,SAASvzN,EAAEi9J,WAAWu3D,YAAYv0N,GAAGD,EAAEw0N,YAAYv0N,IAAI/D,EAAEs4N,YAAY75N,EAAE84O,UAAW,MAAK,GAAG,IAAI94O,EAAE02N,KAAK,GAAG,OAAO12N,EAAE4qB,MAAM,CAACrpB,EAAEvB,EAAE84O,UAAUC,cAAc3zO,GAAE,EAAGpF,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,OAAM,GAAG2oE,GAAGzzF,EAAEE,GAAG,OAAOA,EAAE4qB,MAAM,CAAC5qB,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,IAAG5qB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS94O,EAAE,OAAkB,KAAXC,EAAEA,EAAE64O,QAAaniB,MAAMvxN,GAAE,EAAI,CAAAnF,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,CAAC,CAC3Z,SAASklE,GAAG5+S,EAAEC,GAAG,OAAOA,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI12N,EAAED,EAAE4yS,YAAyC,GAAG,QAAhC3yS,EAAE,OAAOA,EAAEA,EAAE40S,WAAW,MAAiB,CAAC,IAAIzvS,EAAEnF,EAAEA,EAAEpT,KAAK,GAAG,KAAW,EAANuY,EAAEuxN,OAAS52N,EAAEqF,EAAEqyD,QAAQryD,EAAEqyD,aAAQ,OAAO,IAAS13D,GAAGA,KAAKqF,EAAEA,EAAEvY,WAAWuY,IAAInF,EAAG,QAAO,KAAK,EAErJ,KAAK,GAAoG,KAAK,GAAG,OAF6C,KAAK,EAAgB,GAAG,OAAjBA,EAAED,EAAE+4O,WAAqB,CAAC3zO,EAAEpF,EAAE0yO,cAAc,IAAIlxO,EAAE,OAAOzB,EAAEA,EAAE2yO,cAActtO,EAAErF,EAAEC,EAAE1E,KAAK,IAAI+J,EAAErF,EAAE4yS,YAA+B,GAAnB5yS,EAAE4yS,YAAY,KAAQ,OAAOvtS,EAAE,CAAgF,IAA/EpF,EAAEuuS,IAAIppS,EAAE,UAAUrF,GAAG,UAAUqF,EAAE9J,MAAM,MAAM8J,EAAEwC,MAAMwzR,GAAGn7R,EAAEmF,GAAGk4R,GAAGv9R,EAAEyB,GAAGxB,EAAEs9R,GAAGv9R,EAAEqF,GAAO5D,EAAE,EAAEA,EAAE6D,EAAEvb,OAAO0X,GAClf,EAAE,CAAC,IAAI8D,EAAED,EAAE7D,GAAG+D,EAAEF,EAAE7D,EAAE,GAAG,UAAU8D,EAAEs3R,GAAG38R,EAAEsF,GAAG,4BAA4BD,EAAE22R,GAAGh8R,EAAEsF,GAAG,aAAaD,EAAEg3R,GAAGr8R,EAAEsF,GAAGkP,EAAGxU,EAAEqF,EAAEC,EAAEvF,EAAG,QAAOD,GAAG,IAAK,QAAQ+5B,GAAG75B,EAAEmF,GAAG,MAAM,IAAK,WAAWylF,GAAG5qF,EAAEmF,GAAG,MAAM,IAAK,SAASrF,EAAEE,EAAE86R,cAAcyhB,YAAYv8S,EAAE86R,cAAcyhB,cAAcp3S,EAAEq3S,SAAmB,OAAVp3S,EAAED,EAAE7Z,OAAck1K,GAAGxgK,IAAImF,EAAEq3S,SAASp3S,GAAE,GAAItF,MAAMqF,EAAEq3S,WAAW,MAAMr3S,EAAE04I,aAAa2iB,GAAGxgK,IAAImF,EAAEq3S,SAASr3S,EAAE04I,cAAa,GAAI2iB,GAAGxgK,IAAImF,EAAEq3S,SAASr3S,EAAEq3S,SAAS,GAAG,IAAG,IAAM,CAAC,QAAO,KAAK,EAAE,GAAG,OAAOz8S,EAAE+4O,UAAU,MAAM73O,MAAM3D,EAAE,MAC/c,YADqdyC,EAAE+4O,UAAUylC,UACjfx+Q,EAAE0yO,eAAqB,KAAK,EAA8D,aAA5DzyO,EAAED,EAAE+4O,WAAY+nD,UAAU7gS,EAAE6gS,SAAQ,EAAGQ,GAAGrhS,EAAE+4O,iBAAsC,KAAK,GAAyD,OAAtD,OAAOh5O,EAAEq/R,gBAAgBuf,GAAG51J,KAAIz1D,GAAGvzF,EAAE6qB,OAAM,SAAKg0R,GAAG7+S,GAAU,KAAK,GAAS,YAAN6+S,GAAG7+S,GAAyB,KAAK,GAAG,KAAK,GAAgC,YAA7BuzF,GAAGvzF,EAAE,OAAOA,EAAEq/R,eAAsB,MAAMn+R,MAAM3D,EAAE,KAAO,UAASshT,GAAG9+S,GAAG,IAAIC,EAAED,EAAE6yS,YAAY,GAAG,OAAO5yS,EAAE,CAACD,EAAE6yS,YAAY,KAAK,IAAI3yS,EAAEF,EAAEg5O,UAAU,OAAO94O,IAAIA,EAAEF,EAAEg5O,UAAU,IAAI2kE,IAAI19S,EAAEhW,SAAQ,SAASgW,GAAG,IAAIoF,EAAE05S,GAAGxxT,KAAK,KAAKyS,EAAEC,GAAGC,EAAEw7C,IAAIz7C,KAAKC,EAAE4Z,IAAI7Z,GAAGA,EAAE46G,KAAKx1G,EAAEA,GAAI,GAAE,CAAC,CAC1e,SAAS25S,GAAGh/S,EAAEC,GAAG,OAAO,OAAOD,IAAsB,QAAlBA,EAAEA,EAAEs/R,gBAAwB,OAAOt/R,EAAEu/R,cAA+B,QAAlBt/R,EAAEA,EAAEq/R,gBAAwB,OAAOr/R,EAAEs/R,WAAe,KAAI0f,GAAG3iT,KAAKuB,KAAKqhT,GAAGzmB,EAAGvB,uBAAuBioB,GAAG1mB,EAAGrB,kBAAkB1uI,GAAE,EAAEG,GAAE,KAAKJ,GAAE,KAAKE,GAAE,EAAEy2J,GAAG,EAAEC,GAAGxQ,GAAG,GAAGjmJ,GAAE,EAAE02J,GAAG,KAAKC,GAAG,EAAE9L,GAAG,EAAEmJ,GAAG,EAAE4C,GAAG,EAAEC,GAAG,KAAKZ,GAAG,EAAE/B,GAAG5jS,IAAS,SAASwmS,KAAK5C,GAAG7zJ,KAAI,GAAI,KA8BsF02J,GA9BlFn3J,GAAE,KAAK60J,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKmC,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAG,EAAG,SAASzM,KAAK,OAAO,KAAO,GAAFrrJ,IAAMO,MAAK,IAAIm3J,GAAGA,GAAGA,GAAGn3J,IAAI,CAC/e,SAAS+qJ,GAAGh0S,GAAY,GAAG,KAAO,GAAnBA,EAAEA,EAAE66C,OAAkB,OAAO,EAAE,GAAG,KAAO,EAAF76C,GAAK,OAAO,KAAKoxS,KAAK,EAAE,EAAkB,GAAhB,IAAIiP,KAAKA,GAAGd,IAAO,IAAI7N,GAAGt8H,WAAW,CAAC,IAAIkrI,KAAKA,GAAG,OAAOb,GAAGA,GAAG7c,aAAa,GAAG5iS,EAAEqgT,GAAG,IAAIpgT,EAAE,SAASqgT,GAAsD,OAA7C,KAANrgT,IAAIA,KAA8B,KAAPA,GAAbD,EAAE,SAASA,IAAOA,KAAUC,EAAE,OAAcA,CAAE,CAA0D,OAA1DD,EAAEoxS,KAAK,KAAO,EAAF1oJ,KAAM,KAAK1oJ,EAAEA,EAAEojS,GAAG,GAAGid,IAAargT,EAAEojS,GAAVpjS,EAtK3Q,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,EAAG,CAsKoJygT,CAAGzgT,GAAUqgT,IAAYrgT,CAAE,CACrT,SAASi0S,GAAGj0S,EAAEC,EAAEC,GAAG,GAAG,GAAGggT,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKh/S,MAAM3D,EAAE,MAAgB,GAAG,QAAbwC,EAAE0gT,GAAG1gT,EAAEC,IAAe,OAAO,KAAKsjS,GAAGvjS,EAAEC,EAAEC,GAAGF,IAAI6oJ,KAAI+zJ,IAAI38S,EAAE,IAAI2oJ,IAAGi0J,GAAG78S,EAAE2oJ,KAAI,IAAItjJ,EAAE+rS,KAAK,IAAInxS,EAAE,KAAO,EAAFyoJ,KAAM,KAAO,GAAFA,IAAMi4J,GAAG3gT,IAAI4gT,GAAG5gT,EAAEE,GAAG,IAAIwoJ,KAAIg3J,KAAKlO,QAAQ,KAAO,EAAF9oJ,KAAM,KAAKrjJ,GAAG,KAAKA,IAAI,OAAO46S,GAAGA,GAAG,IAAIznP,IAAI,CAACx4D,IAAIigT,GAAGnmS,IAAI9Z,IAAI4gT,GAAG5gT,EAAEE,IAAIu/S,GAAGz/S,CAAE,UAAS0gT,GAAG1gT,EAAEC,GAAGD,EAAEsyS,OAAOryS,EAAE,IAAIC,EAAEF,EAAE67O,UAAqC,IAA3B,OAAO37O,IAAIA,EAAEoyS,OAAOryS,GAAGC,EAAEF,EAAMA,EAAEA,EAAE+4O,OAAO,OAAO/4O,GAAGA,EAAEkyS,YAAYjyS,EAAgB,QAAdC,EAAEF,EAAE67O,aAAqB37O,EAAEgyS,YAAYjyS,GAAGC,EAAEF,EAAEA,EAAEA,EAAE+4O,OAAO,OAAO,IAAI74O,EAAE02N,IAAI12N,EAAE84O,UAAU,IAAK,CAC9e,SAAS4nE,GAAG5gT,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAE6gT,aAAax7S,EAAErF,EAAE8iS,eAAerhS,EAAEzB,EAAE+iS,YAAYz9R,EAAEtF,EAAE8gT,gBAAgBv7S,EAAEvF,EAAE4iS,aAAa,EAAEr9R,GAAG,CAAC,IAAIC,EAAE,GAAGw9R,GAAGz9R,GAAG69D,EAAE,GAAG59D,EAAEtJ,EAAEoJ,EAAEE,GAAG,IAAI,IAAItJ,GAAG,GAAG,KAAKknE,EAAE/9D,IAAI,KAAK+9D,EAAE3hE,GAAG,CAACvF,EAAE+D,EAAEyiS,GAAGt/N,GAAG,IAAIhmE,EAAEuwI,GAAEroI,EAAEE,GAAG,IAAIpI,EAAElB,EAAE,IAAI,GAAGkB,EAAElB,EAAE,KAAK,CAAE,OAAMA,GAAG+D,IAAID,EAAE6iS,cAAcz/N,GAAG79D,IAAI69D,CAAE,CAAsB,GAAtB/9D,EAAEs9R,GAAG3iS,EAAEA,IAAI6oJ,GAAEF,GAAE,GAAG1oJ,EAAE0tI,GAAK,IAAItoI,EAAE,OAAOnF,IAAIA,IAAI6wS,IAAIhB,GAAG7vS,GAAGF,EAAE6gT,aAAa,KAAK7gT,EAAE+gT,iBAAiB,OAAO,CAAC,GAAG,OAAO7gT,EAAE,CAAC,GAAGF,EAAE+gT,mBAAmB9gT,EAAE,OAAOC,IAAI6wS,IAAIhB,GAAG7vS,EAAG,MAAKD,GAAGC,EAAEygT,GAAGpzT,KAAK,KAAKyS,GAAG,OAAOixS,IAAIA,GAAG,CAAC/wS,GAAGmxN,GAAGy+E,GAAGU,GAAGiB,KAAKR,GAAGxnT,KAAKyW,GACrfA,EAAE6wS,IAAI,KAAK9wS,EAAEC,EAAEqxS,GAAG,GAAGoP,GAAGpzT,KAAK,KAAKyS,KAAKE,EAzK+F,SAAYF,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAMmB,MAAM3D,EAAE,IAAIwC,IAAM,CAyK9TghT,CAAG/gT,GAAGC,EAAEqxS,GAAGrxS,EAAE+gT,GAAG1zT,KAAK,KAAKyS,KAAKA,EAAE+gT,iBAAiB9gT,EAAED,EAAE6gT,aAAa3gT,CAAE,CAAC,CAC/G,SAAS+gT,GAAGjhT,GAAiB,GAAdogT,IAAI,EAAEE,GAAGD,GAAG,EAAK,KAAO,GAAF33J,IAAM,MAAMvnJ,MAAM3D,EAAE,MAAM,IAAIyC,EAAED,EAAE6gT,aAAa,GAAGK,MAAMlhT,EAAE6gT,eAAe5gT,EAAE,OAAO,KAAK,IAAIC,EAAEyiS,GAAG3iS,EAAEA,IAAI6oJ,GAAEF,GAAE,GAAG,GAAG,IAAIzoJ,EAAE,OAAO,KAAK,IAAImF,EAAEnF,EAAMuB,EAAEinJ,GAAEA,IAAG,GAAG,IAAIpjJ,EAAE67S,KAAkC,IAA1Bt4J,KAAI7oJ,GAAG2oJ,KAAItjJ,IAAEq6S,KAAK0B,GAAGphT,EAAEqF,MAAM,IAAIg8S,KAAK,KAAuB,CAAjB,MAAM77S,GAAG87S,GAAGthT,EAAEwF,EAAG,CAA6D,GAApDusS,KAAKmN,GAAG3oN,QAAQjxF,EAAEojJ,GAAEjnJ,EAAE,OAAOgnJ,GAAEpjJ,EAAE,GAAGwjJ,GAAE,KAAKF,GAAE,EAAEtjJ,EAAEujJ,IAAM,KAAK22J,GAAG3C,IAAIwE,GAAGphT,EAAE,QAAQ,GAAG,IAAIqF,EAAE,CAAyF,GAAxF,IAAIA,IAAIqjJ,IAAG,GAAG1oJ,EAAE+gS,UAAU/gS,EAAE+gS,SAAQ,EAAGqN,GAAGpuS,EAAEi5O,gBAAwB,KAAR/4O,EAAEijS,GAAGnjS,MAAWqF,EAAEk8S,GAAGvhT,EAAEE,KAAQ,IAAImF,EAAE,MAAMpF,EAAEq/S,GAAG8B,GAAGphT,EAAE,GAAG68S,GAAG78S,EAAEE,GAAG0gT,GAAG5gT,EAAEipJ,MAAKhpJ,EAC3c,OAD6cD,EAAEwhT,aACrfxhT,EAAEu2F,QAAQslJ,UAAU77O,EAAEyhT,cAAcvhT,EAASmF,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMlE,MAAM3D,EAAE,MAAM,KAAK,EACI,KAAK,EAAEkkT,GAAG1hT,GAAG,MADH,KAAK,EAAU,GAAR68S,GAAG78S,EAAEE,IAAS,SAAFA,KAAcA,GAAiB,IAAbmF,EAAEw5S,GAAG,IAAI51J,MAAU,CAAC,GAAG,IAAI05I,GAAG3iS,EAAE,GAAG,MAAyB,KAAnByB,EAAEzB,EAAE8iS,gBAAqB5iS,KAAKA,EAAE,CAAC6zS,KAAK/zS,EAAE+iS,aAAa/iS,EAAE8iS,eAAerhS,EAAE,KAAM,CAAAzB,EAAE2hT,cAAczT,GAAGwT,GAAGn0T,KAAK,KAAKyS,GAAGqF,GAAG,KAAM,CAAAq8S,GAAG1hT,GAAG,MAAM,KAAK,EAAU,GAAR68S,GAAG78S,EAAEE,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAfmF,EAAErF,EAAEwjS,WAAe/hS,GAAG,EAAE,EAAEvB,GAAG,CAAC,IAAIqF,EAAE,GAAGy9R,GAAG9iS,GAAGoF,EAAE,GAAGC,GAAEA,EAAEF,EAAEE,IAAK9D,IAAIA,EAAE8D,GAAGrF,IAAIoF,CAAE,CACnZ,GADmZpF,EAAEuB,EAClZ,IAD4ZvB,GAAG,KAAXA,EAAE+oJ,KAAI/oJ,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAClfA,EAAE,KAAK,KAAK++S,GAAG/+S,EAAE,OAAOA,GAAU,CAACF,EAAE2hT,cAAczT,GAAGwT,GAAGn0T,KAAK,KAAKyS,GAAGE,GAAG,KAAM,CAAAwhT,GAAG1hT,GAAG,MAAyB,QAAQ,MAAMmB,MAAM3D,EAAE,MAAQ,CAAU,OAAVojT,GAAG5gT,EAAEipJ,MAAYjpJ,EAAE6gT,eAAe5gT,EAAEghT,GAAG1zT,KAAK,KAAKyS,GAAG,IAAK,UAAS68S,GAAG78S,EAAEC,GAAuD,IAApDA,IAAIu/S,GAAGv/S,IAAI28S,GAAG58S,EAAE8iS,gBAAgB7iS,EAAED,EAAE+iS,cAAc9iS,EAAMD,EAAEA,EAAE8gT,gBAAgB,EAAE7gT,GAAG,CAAC,IAAIC,EAAE,GAAG8iS,GAAG/iS,GAAGoF,EAAE,GAAGnF,EAAEF,EAAEE,IAAI,EAAED,IAAIoF,CAAE,CAAC,CAC7U,SAASs7S,GAAG3gT,GAAG,GAAG,KAAO,GAAF0oJ,IAAM,MAAMvnJ,MAAM3D,EAAE,MAAW,GAAL0jT,KAAQlhT,IAAI6oJ,IAAG,KAAK7oJ,EAAE6iS,aAAal6I,IAAG,CAAC,IAAI1oJ,EAAE0oJ,GAAMzoJ,EAAEqhT,GAAGvhT,EAAEC,GAAG,KAAKs/S,GAAG3C,MAAgB18S,EAAEqhT,GAAGvhT,EAAfC,EAAE0iS,GAAG3iS,EAAEC,IAAc,MAAeC,EAAEqhT,GAAGvhT,EAAfC,EAAE0iS,GAAG3iS,EAAE,IAAgH,GAAnG,IAAIA,EAAE42N,KAAK,IAAI12N,IAAIwoJ,IAAG,GAAG1oJ,EAAE+gS,UAAU/gS,EAAE+gS,SAAQ,EAAGqN,GAAGpuS,EAAEi5O,gBAAwB,KAARh5O,EAAEkjS,GAAGnjS,MAAWE,EAAEqhT,GAAGvhT,EAAEC,KAAQ,IAAIC,EAAE,MAAMA,EAAEo/S,GAAG8B,GAAGphT,EAAE,GAAG68S,GAAG78S,EAAEC,GAAG2gT,GAAG5gT,EAAEipJ,MAAK/oJ,EAAuE,OAArEF,EAAEwhT,aAAaxhT,EAAEu2F,QAAQslJ,UAAU77O,EAAEyhT,cAAcxhT,EAAEyhT,GAAG1hT,GAAG4gT,GAAG5gT,EAAEipJ,MAAY,IAAK,CACxR,SAAS24J,GAAG5hT,EAAEC,GAAG,IAAIC,EAAEwoJ,GAAEA,IAAG,EAAE,IAAI,OAAO1oJ,EAAEC,EAAkC,CAA/C,QAA4B,KAAJyoJ,GAAExoJ,KAAUw/S,KAAKlO,KAAM,CAAC,UAASqQ,GAAG7hT,EAAEC,GAAG,IAAIC,EAAEwoJ,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAO1oJ,EAAEC,EAAkC,CAA/C,QAA4B,KAAJyoJ,GAAExoJ,KAAUw/S,KAAKlO,KAAM,CAAC,UAASqJ,GAAG76S,EAAEC,GAAGspJ,GAAE81J,GAAGD,IAAIA,IAAIn/S,EAAEs/S,IAAIt/S,CAAE,UAAS88S,KAAKqC,GAAGC,GAAG9oN,QAAQ+yD,GAAE+1J,GAAI,CAChW,SAAS+B,GAAGphT,EAAEC,GAAGD,EAAEwhT,aAAa,KAAKxhT,EAAEyhT,cAAc,EAAE,IAAIvhT,EAAEF,EAAE2hT,cAAiD,IAAlC,IAAIzhT,IAAIF,EAAE2hT,eAAe,EAAExT,GAAGjuS,IAAO,OAAOuoJ,GAAE,IAAIvoJ,EAAEuoJ,GAAEswF,OAAO,OAAO74O,GAAG,CAAC,IAAImF,EAAEnF,EAAE,OAAOmF,EAAEuxN,KAAK,KAAK,EAA6B,QAA3BvxN,EAAEA,EAAE9J,KAAKwtQ,yBAA4B,IAAS1jQ,GAAG+pS,KAAK,MAAM,KAAK,EAAE0G,KAAKxsJ,GAAE/+C,IAAG++C,GAAEJ,IAAG2tJ,KAAK,MAAM,KAAK,EAAEb,GAAG3wS,GAAG,MAAM,KAAK,EAAEywS,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGxsJ,GAAEv+C,IAAG,MAAM,KAAK,GAAGinM,GAAG3sS,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG03S,KAAK78S,EAAEA,EAAE64O,MAAO,CAAAlwF,GAAE7oJ,EAAEyoJ,GAAEwsJ,GAAGj1S,EAAEu2F,QAAQ,MAAMoyD,GAAEy2J,GAAGG,GAAGt/S,EAAE2oJ,GAAE,EAAE02J,GAAG,KAAKE,GAAG5C,GAAGnJ,GAAG,CAAE,CACzc,SAAS6N,GAAGthT,EAAEC,GAAG,OAAE,CAAC,IAAIC,EAAEuoJ,GAAE,IAAuB,GAAnBspJ,KAAKgF,GAAGxgN,QAAQmhN,GAAMR,GAAG,CAAC,IAAI,IAAI7xS,EAAE0jJ,GAAEu2I,cAAc,OAAOj6R,GAAG,CAAC,IAAI5D,EAAE4D,EAAEg7F,MAAM,OAAO5+F,IAAIA,EAAE21H,QAAQ,MAAM/xH,EAAEA,EAAEvY,IAAK,CAAAoqT,IAAG,CAAG,CAAsC,GAAtCD,GAAG,EAAE3sM,GAAEw+C,GAAEC,GAAE,KAAKouJ,IAAG,EAAGgI,GAAG5oN,QAAQ,KAAQ,OAAOr2F,GAAG,OAAOA,EAAE64O,OAAO,CAACnwF,GAAE,EAAE02J,GAAGr/S,EAAEwoJ,GAAE,KAAK,KAAM,CAAAzoJ,EAAE,CAAC,IAAIsF,EAAEtF,EAAEuF,EAAErF,EAAE64O,OAAOvzO,EAAEtF,EAAEkjE,EAAEnjE,EAAoD,GAAlDA,EAAE0oJ,GAAEnjJ,EAAE8iP,OAAO,KAAK9iP,EAAEwvS,YAAYxvS,EAAEsvS,WAAW,KAAQ,OAAO1xO,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEy3C,KAAK,CAAC,IAAI3+G,EAAEknE,EAAE,GAAG,KAAY,EAAP59D,EAAEq1C,MAAQ,CAAC,IAAIz9C,EAAEoI,EAAEq2O,UAAUz+O,GAAGoI,EAAEqtS,YAAYz1S,EAAEy1S,YAAYrtS,EAAE85R,cAAcliS,EAAEkiS,cAAc95R,EAAE8sS,MAAMl1S,EAAEk1S,QACpf9sS,EAAEqtS,YAAY,KAAKrtS,EAAE85R,cAAc,KAAM,KAAIp4I,EAAE,KAAe,EAAVn8C,GAAExU,SAAWpuF,EAAE5C,EAAE,EAAE,CAAC,IAAI4hJ,EAAE,GAAGA,EAAE,KAAKh/I,EAAEyuN,IAAI,CAAC,IAAIr5N,EAAE4K,EAAEm3R,cAAc,GAAG,OAAO/hS,EAAE4pJ,EAAE,OAAO5pJ,EAAEgiS,eAAqB,CAAC,IAAIl+R,EAAE8G,EAAEwqO,cAAcxrF,OAAE,IAAS9lJ,EAAEm7J,YAAY,IAAKn7J,EAAEq6S,6BAA8Bx0J,EAAQ,CAAC,IAAGC,EAAE,CAAC,IAAIr4I,EAAE3G,EAAE0qS,YAAY,GAAG,OAAO/jS,EAAE,CAAC,IAAIiK,EAAE,IAAIy/C,IAAIz/C,EAAEe,IAAI5d,GAAGiM,EAAE0qS,YAAY95R,CAAE,MAAKjK,EAAEgL,IAAI5d,GAAG,GAAG,KAAY,EAAPiM,EAAE0yC,MAAQ,CAA2C,GAA1C1yC,EAAEmgP,OAAO,GAAG9iP,EAAE8iP,OAAO,MAAM9iP,EAAE8iP,QAAQ,KAAQ,IAAI9iP,EAAEoxN,IAAI,GAAG,OAAOpxN,EAAEq2O,UAAUr2O,EAAEoxN,IAAI,OAAO,CAAC,IAAIn5N,EAAEy1S,IAAI,EAAE,GAAGz1S,EAAEm5N,IAAI,EAAE08E,GAAG9tS,EAAE/H,EAAG,CAAA+H,EAAE8sS,OAAO,EAAE,MAAMtyS,CAAE,CAAAojE,OAC5f,EAAO59D,EAAEvF,EAAE,IAAIF,EAAEuF,EAAEw8S,UAA+G,GAArG,OAAO/hT,GAAGA,EAAEuF,EAAEw8S,UAAU,IAAI3E,GAAG/5O,EAAE,IAAI5K,IAAIz4D,EAAEe,IAAI5E,EAAEknE,SAAgB,KAAXA,EAAErjE,EAAEnS,IAAIsO,MAAgBknE,EAAE,IAAI5K,IAAIz4D,EAAEe,IAAI5E,EAAEknE,KAASA,EAAE1nB,IAAIl2C,GAAG,CAAC49D,EAAEtpD,IAAItU,GAAG,IAAIpE,EAAE2gT,GAAGx0T,KAAK,KAAK+X,EAAEpJ,EAAEsJ,GAAGtJ,EAAE2+G,KAAKz5G,EAAEA,EAAG,CAAA+G,EAAEmgP,OAAO,KAAKngP,EAAEmqS,MAAMryS,EAAE,MAAMD,CAAE,CAAAmI,EAAEA,EAAE4wO,MAAO,OAAM,OAAO5wO,GAAGi7D,EAAEjiE,OAAOi5R,EAAG50R,EAAEjK,OAAO,qBAAqB,wLAAyL,KAAIqtJ,KAAIA,GAAE,GAAGxlF,EAAE65O,GAAG75O,EAAE59D,GAAG2C,EACpf5C,EAAE,EAAE,CAAC,OAAO4C,EAAEyuN,KAAK,KAAK,EAAEtxN,EAAE89D,EAAEj7D,EAAEmgP,OAAO,KAAKroP,IAAIA,EAAEkI,EAAEmqS,OAAOryS,EAAkBszS,GAAGprS,EAAbi1S,GAAGj1S,EAAE7C,EAAErF,IAAW,MAAMD,EAAE,KAAK,EAAEsF,EAAE89D,EAAE,IAAIgmF,EAAEjhJ,EAAE5M,KAAKytJ,EAAE7gJ,EAAE6wO,UAAU,GAAG,KAAa,GAAR7wO,EAAEmgP,SAAY,oBAAoBl/F,EAAEssF,0BAA0B,OAAO1sF,GAAG,oBAAoBA,EAAEw0J,oBAAoB,OAAOC,KAAKA,GAAG/hQ,IAAIstG,KAAK,CAAC7gJ,EAAEmgP,OAAO,KAAKroP,IAAIA,EAAEkI,EAAEmqS,OAAOryS,EAAkBszS,GAAGprS,EAAbo1S,GAAGp1S,EAAE7C,EAAErF,IAAW,MAAMD,CAAE,EAACmI,EAAEA,EAAE4wO,MAAO,OAAM,OAAO5wO,EAAG,CAAA65S,GAAG9hT,EAA2D,CAAxD,MAAM2sB,GAAI5sB,EAAE4sB,EAAG47H,KAAIvoJ,GAAG,OAAOA,IAAIuoJ,GAAEvoJ,EAAEA,EAAE64O,QAAQ,QAAS,MAAM,CAAS,CAC9b,SAASooE,KAAK,IAAInhT,EAAEk/S,GAAG3oN,QAAsB,OAAd2oN,GAAG3oN,QAAQmhN,GAAU,OAAO13S,EAAE03S,GAAG13S,CAAE,UAASuhT,GAAGvhT,EAAEC,GAAG,IAAIC,EAAEwoJ,GAAEA,IAAG,GAAG,IAAIrjJ,EAAE87S,KAA2B,IAAtBt4J,KAAI7oJ,GAAG2oJ,KAAI1oJ,GAAGmhT,GAAGphT,EAAEC,KAAM,IAAIgiT,KAAK,KAAuB,CAAjB,MAAMxgT,GAAG6/S,GAAGthT,EAAEyB,EAAG,CAA+B,GAAtBswS,KAAKrpJ,GAAExoJ,EAAEg/S,GAAG3oN,QAAQlxF,EAAK,OAAOojJ,GAAE,MAAMtnJ,MAAM3D,EAAE,MAAiB,OAAXqrJ,GAAE,KAAKF,GAAE,EAASC,EAAE,UAASq5J,KAAK,KAAK,OAAOx5J,IAAGy5J,GAAGz5J,GAAG,UAAS44J,KAAK,KAAK,OAAO54J,KAAIwnJ,MAAMiS,GAAGz5J,GAAG,UAASy5J,GAAGliT,GAAG,IAAIC,EAAE0/S,GAAG3/S,EAAE67O,UAAU77O,EAAEo/S,IAAIp/S,EAAE2yO,cAAc3yO,EAAEw2S,aAAa,OAAOv2S,EAAE+hT,GAAGhiT,GAAGyoJ,GAAExoJ,EAAEk/S,GAAG5oN,QAAQ,IAAK,CACjb,SAASyrN,GAAGhiT,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIE,EAAED,EAAE47O,UAAqB,GAAX77O,EAAEC,EAAE84O,OAAU,KAAa,KAAR94O,EAAEqoP,OAAY,CAAc,GAAG,QAAhBpoP,EAAEs8S,GAAGt8S,EAAED,EAAEm/S,KAAqB,YAAJ32J,GAAEvoJ,GAAa,GAAG,MAAPA,EAAED,GAAY22N,KAAK,KAAK12N,EAAE02N,KAAK,OAAO12N,EAAEo/R,eAAe,KAAQ,WAAH8f,KAAgB,KAAY,EAAPl/S,EAAE26C,MAAQ,CAAC,IAAI,IAAIx1C,EAAE,EAAE5D,EAAEvB,EAAE4qB,MAAM,OAAOrpB,GAAG4D,GAAG5D,EAAE6wS,MAAM7wS,EAAEywS,WAAWzwS,EAAEA,EAAEi4O,QAAQx5O,EAAEgyS,WAAW7sS,CAAE,QAAOrF,GAAG,KAAa,KAARA,EAAEsoP,SAAc,OAAOtoP,EAAEg1S,cAAch1S,EAAEg1S,YAAY/0S,EAAE+0S,aAAa,OAAO/0S,EAAE60S,aAAa,OAAO90S,EAAE80S,aAAa90S,EAAE80S,WAAWC,WAAW90S,EAAE+0S,aAAah1S,EAAE80S,WAAW70S,EAAE60S,YAAY,EAAE70S,EAAEqoP,QAAQ,OAC/etoP,EAAE80S,WAAW90S,EAAE80S,WAAWC,WAAW90S,EAAED,EAAEg1S,YAAY/0S,EAAED,EAAE80S,WAAW70S,GAAI,KAAI,CAAS,GAAG,QAAXC,EAAE88S,GAAG/8S,IAAkC,OAAlBC,EAAEooP,OAAO,UAAK7/F,GAAEvoJ,GAAS,OAAOF,IAAIA,EAAEg1S,YAAYh1S,EAAE80S,WAAW,KAAK90S,EAAEsoP,OAAO,KAAM,CAAY,GAAG,QAAfroP,EAAEA,EAAEy5O,SAAyB,YAAJjxF,GAAExoJ,GAASwoJ,GAAExoJ,EAAED,CAAE,OAAM,OAAOC,GAAG,IAAI2oJ,KAAIA,GAAE,EAAG,UAAS84J,GAAG1hT,GAAG,IAAIC,EAAEmxS,KAA8B,OAAzBE,GAAG,GAAG6Q,GAAG50T,KAAK,KAAKyS,EAAEC,IAAW,IAAK,CAC3T,SAASkiT,GAAGniT,EAAEC,GAAG,GAAGihT,WAAW,OAAOrB,IAAI,GAAG,KAAO,GAAFn3J,IAAM,MAAMvnJ,MAAM3D,EAAE,MAAM,IAAI0C,EAAEF,EAAEwhT,aAAa,GAAG,OAAOthT,EAAE,OAAO,KAA2C,GAAtCF,EAAEwhT,aAAa,KAAKxhT,EAAEyhT,cAAc,EAAKvhT,IAAIF,EAAEu2F,QAAQ,MAAMp1F,MAAM3D,EAAE,MAAMwC,EAAE6gT,aAAa,KAAK,IAAIx7S,EAAEnF,EAAEoyS,MAAMpyS,EAAEgyS,WAAWzwS,EAAE4D,EAAEC,EAAEtF,EAAE4iS,cAAcnhS,EAAEzB,EAAE4iS,aAAanhS,EAAEzB,EAAE8iS,eAAe,EAAE9iS,EAAE+iS,YAAY,EAAE/iS,EAAE6iS,cAAcphS,EAAEzB,EAAEy4S,kBAAkBh3S,EAAEzB,EAAEijS,gBAAgBxhS,EAAEA,EAAEzB,EAAEkjS,cAAc,IAAI,IAAI39R,EAAEvF,EAAEwjS,WAAWh+R,EAAExF,EAAE8gT,gBAAgB,EAAEx7S,GAAG,CAAC,IAAI89D,EAAE,GAAG4/N,GAAG19R,GAAGpJ,EAAE,GAAGknE,EAAE3hE,EAAE2hE,GAAG,EAAE79D,EAAE69D,IAAI,EAAE59D,EAAE49D,IAAI,EAAE99D,IAAIpJ,CAAE,CACrV,GADqV,OACjf+jT,IAAI,KAAO,GAAF56S,IAAO46S,GAAGvkQ,IAAI17C,IAAIigT,GAAG/4Q,OAAOlnC,GAAGA,IAAI6oJ,KAAIJ,GAAEI,GAAE,KAAKF,GAAE,GAAG,EAAEzoJ,EAAEooP,MAAM,OAAOpoP,EAAE40S,YAAY50S,EAAE40S,WAAWC,WAAW70S,EAAEmF,EAAEnF,EAAE80S,aAAa3vS,EAAEnF,EAAEmF,EAAEnF,EAAE80S,YAAe,OAAO3vS,EAAE,CAAwC,GAAvC5D,EAAEinJ,GAAEA,IAAG,GAAGy2J,GAAG5oN,QAAQ,KAAKu3M,GAAGhK,GAAamI,GAAV1mS,EAAEumS,MAAc,CAAC,GAAG,mBAAmBvmS,EAAEC,EAAE,CAACmxB,MAAMpxB,EAAEinS,eAAezoQ,IAAIx+B,EAAEknS,mBAAmBzsS,EAAE,GAAGwF,GAAGA,EAAED,EAAE4jN,gBAAgB3jN,EAAEssN,aAAa9pI,QAAQ9rF,EAAEsJ,EAAEmnS,cAAcnnS,EAAEmnS,iBAAiB,IAAIzwS,EAAEupF,WAAW,CAACjgF,EAAEtJ,EAAEwwS,WAAWpnS,EAAEpJ,EAAE0wS,aAAaxpO,EAAElnE,EAAE2wS,UAAU3wS,EAAEA,EAAE4wS,YAAY,IAAItnS,EAAEszN,SAAS11J,EAAE01J,QACtd,CAD+d,MAAMjsM,GAAIrnB,EAAE,KACnf,MAAMxF,CAAE,KAAI5C,EAAE,EAAE8pJ,GAAG,EAAE/+I,GAAG,EAAEg/I,EAAE,EAAE5pJ,EAAE,EAAE8D,EAAEkE,EAAEuJ,EAAE,KAAK7O,EAAE,OAAO,CAAC,IAAI,IAAI8Y,EAAK1X,IAAImE,GAAG,IAAIF,GAAG,IAAIjE,EAAEy3N,WAAW5xE,EAAE9pJ,EAAEkI,GAAGjE,IAAI+hE,GAAG,IAAIlnE,GAAG,IAAImF,EAAEy3N,WAAW3wN,EAAE/K,EAAElB,GAAG,IAAImF,EAAEy3N,WAAW17N,GAAGiE,EAAEo9Q,UAAU10R,QAAW,QAAQgvB,EAAE1X,EAAE+6R,aAAkBttR,EAAEzN,EAAEA,EAAE0X,EAAE,OAAO,CAAC,GAAG1X,IAAIkE,EAAE,MAAMtF,EAA8C,GAA5C6O,IAAItJ,KAAK2hJ,IAAI7hJ,IAAI4hJ,EAAE9pJ,GAAG0R,IAAIs0D,KAAK7lE,IAAIrB,IAAIiM,EAAE/K,GAAM,QAAQ2b,EAAE1X,EAAE23N,aAAa,MAAUlqN,GAAJzN,EAAEyN,GAAM0zJ,UAAW,CAAAnhK,EAAE0X,CAAE,CAAAvT,GAAG,IAAI0hJ,IAAI,IAAI/+I,EAAE,KAAK,CAACwuB,MAAMuwH,EAAEnjH,IAAI57B,EAAG,MAAK3C,EAAE,KAAKA,EAAEA,GAAG,CAACmxB,MAAM,EAAEoN,IAAI,EAAG,MAAKv+B,EAAE,KAAKuoS,GAAG,CAACqU,YAAY78S,EAAE88S,eAAe78S,GAAGs+R,IAAG,EAAGyc,GAAG,KAAKC,IAAG,EAAGh4J,GAAEnjJ,EAAE,GAAG,IAAIi9S,IACvc,CAD4c,MAAMz1R,GAAI,GAAG,OACvgB27H,GAAE,MAAMrnJ,MAAM3D,EAAE,MAAMsgT,GAAGt1J,GAAE37H,GAAI27H,GAAEA,GAAEusJ,UAAW,QAAM,OAAOvsJ,IAAG+3J,GAAG,KAAK/3J,GAAEnjJ,EAAE,GAAG,IAAI,IAAIE,EAAEvF,EAAE,OAAOwoJ,IAAG,CAAC,IAAI/qJ,EAAE+qJ,GAAE8/F,MAA+B,GAAvB,GAAF7qP,GAAM8+R,GAAG/zI,GAAEwwF,UAAU,IAAS,IAAFv7O,EAAM,CAAC,IAAIsC,EAAEyoJ,GAAEqzF,UAAU,GAAG,OAAO97O,EAAE,CAAC,IAAIqB,EAAErB,EAAE8uI,IAAI,OAAOztI,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAEm1F,QAAQ,KAAM,CAAC,QAAS,KAAF94F,GAAQ,KAAK,EAAE+gT,GAAGh2J,IAAGA,GAAE8/F,QAAQ,EAAE,MAAM,KAAK,EAAEk2D,GAAGh2J,IAAGA,GAAE8/F,QAAQ,EAAEs2D,GAAGp2J,GAAEqzF,UAAUrzF,IAAG,MAAM,KAAK,KAAKA,GAAE8/F,QAAQ,KAAK,MAAM,KAAK,KAAK9/F,GAAE8/F,QAAQ,KAAKs2D,GAAGp2J,GAAEqzF,UAAUrzF,IAAG,MAAM,KAAK,EAAEo2J,GAAGp2J,GAAEqzF,UAAUrzF,IAAG,MAAM,KAAK,EAAM61J,GAAG94S,EAAPC,EAAEgjJ,IAAU,IAAIgB,EAAEhkJ,EAAEq2O,UAAUyiE,GAAG94S,GAAG,OACnfgkJ,GAAG80J,GAAG90J,GAAGhB,GAAEA,GAAEusJ,UAAW,CAAmE,CAAlE,MAAMloR,GAAI,GAAG,OAAO27H,GAAE,MAAMrnJ,MAAM3D,EAAE,MAAMsgT,GAAGt1J,GAAE37H,GAAI27H,GAAEA,GAAEusJ,UAAW,QAAM,OAAOvsJ,IAAkD,GAA/CpnJ,EAAE2sS,GAAGhuS,EAAE+rS,KAAKruS,EAAE2D,EAAEghT,YAAY78S,EAAEnE,EAAEihT,eAAkBtiT,IAAItC,GAAGA,GAAGA,EAAE0rN,eAAe0iF,GAAGpuS,EAAE0rN,cAAc+9B,gBAAgBzpP,GAAG,CAAC,OAAO8H,GAAG0mS,GAAGxuS,KAAKsC,EAAEwF,EAAEoxB,WAAc,KAARv1B,EAAEmE,EAAEw+B,OAAiB3iC,EAAErB,GAAG,mBAAmBtC,GAAGA,EAAE+uS,eAAezsS,EAAEtC,EAAEgvS,aAAanwS,KAAKW,IAAImE,EAAE3D,EAAEjS,MAAMzB,UAAUqX,GAAGrB,EAAEtC,EAAE0rN,eAAerhN,WAAW/H,EAAE+xN,aAAa9pI,QAAS2kN,eAAevrS,EAAEA,EAAEurS,eAAennS,EAAE/H,EAAE66N,YAAYvuO,OAAOy/J,EAAEltJ,KAAKW,IAAIsI,EAAEoxB,MAAMnxB,GAAGD,OAAE,IACpfA,EAAEw+B,IAAIylH,EAAEltJ,KAAKW,IAAIsI,EAAEw+B,IAAIv+B,IAAIpE,EAAEukN,QAAQn8D,EAAEjkJ,IAAIC,EAAED,EAAEA,EAAEikJ,EAAEA,EAAEhkJ,GAAGA,EAAEomS,GAAGnuS,EAAE+rJ,GAAGlkJ,EAAEsmS,GAAGnuS,EAAE8H,GAAGC,GAAGF,IAAI,IAAIlE,EAAEqkF,YAAYrkF,EAAEsrS,aAAalnS,EAAE0oH,MAAM9sH,EAAEwrS,eAAepnS,EAAE/C,QAAQrB,EAAEyrS,YAAYvnS,EAAE4oH,MAAM9sH,EAAE0rS,cAAcxnS,EAAE7C,WAAU1C,EAAEA,EAAEwiT,eAAgBC,SAASh9S,EAAE0oH,KAAK1oH,EAAE/C,QAAQrB,EAAEqhT,kBAAkBj5J,EAAEjkJ,GAAGnE,EAAEshT,SAAS3iT,GAAGqB,EAAEukN,OAAOrgN,EAAE4oH,KAAK5oH,EAAE7C,UAAU1C,EAAE4iT,OAAOr9S,EAAE4oH,KAAK5oH,EAAE7C,QAAQrB,EAAEshT,SAAS3iT,OAAQA,EAAE,GAAG,IAAIqB,EAAE3D,EAAE2D,EAAEA,EAAEohK,YAAY,IAAIphK,EAAE03N,UAAU/4N,EAAEtW,KAAK,CAAC6/B,QAAQloB,EAAEqjB,KAAKrjB,EAAE4xP,WAAWruO,IAAIvjB,EAAEgtN,YAAmD,IAAvC,oBAAoB3wN,EAAEgjC,OAAOhjC,EAAEgjC,QAAYhjC,EACrf,EAAEA,EAAEsC,EAAEhW,OAAO0T,KAAI2D,EAAErB,EAAEtC,IAAK6rB,QAAQ0pO,WAAW5xP,EAAEqjB,KAAKrjB,EAAEkoB,QAAQ8kM,UAAUhtN,EAAEujB,GAAI,CAAAm/Q,KAAKgK,GAAGC,GAAGD,GAAG,KAAK9tS,EAAEu2F,QAAQr2F,EAAEsoJ,GAAEnjJ,EAAE,GAAG,IAAI,IAAI5H,EAAEuC,EAAE,OAAOwoJ,IAAG,CAAC,IAAIY,EAAEZ,GAAE8/F,MAAgC,GAAxB,GAAFl/F,GAAM60J,GAAGxgT,EAAE+qJ,GAAEqzF,UAAUrzF,IAAQ,IAAFY,EAAM,CAACrpJ,OAAE,EAAO,IAAIipJ,EAAER,GAAE3Z,IAAI,GAAG,OAAOma,EAAE,CAAC,IAAIG,EAAEX,GAAEwwF,UAAiBxwF,GAAEouE,IAA8B72N,EAAEopJ,EAAE,oBAAoBH,EAAEA,EAAEjpJ,GAAGipJ,EAAEzyD,QAAQx2F,CAAE,CAAC,CAAAyoJ,GAAEA,GAAEusJ,UAAW,CAAmE,CAAlE,MAAMloR,GAAI,GAAG,OAAO27H,GAAE,MAAMrnJ,MAAM3D,EAAE,MAAMsgT,GAAGt1J,GAAE37H,GAAI27H,GAAEA,GAAEusJ,UAAW,QAAM,OAAOvsJ,IAAGA,GAAE,KAAKwoJ,KAAKtoJ,GAAEjnJ,CAAE,MAAKzB,EAAEu2F,QAAQr2F,EAAE,GAAG0/S,GAAGA,IAAG,EAAGC,GAAG7/S,EAAE8/S,GAAG7/S,OAAO,IAAIuoJ,GAAEnjJ,EAAE,OAAOmjJ,IAAGvoJ,EACpfuoJ,GAAEusJ,WAAWvsJ,GAAEusJ,WAAW,KAAa,EAARvsJ,GAAE8/F,SAAUl/F,EAAEZ,IAAIkxF,QAAQ,KAAKtwF,EAAE4vF,UAAU,MAAMxwF,GAAEvoJ,EAAqF,GAAlE,KAAjBoF,EAAErF,EAAE4iS,gBAAqB6a,GAAG,MAAM,IAAIp4S,EAAErF,IAAImgT,GAAGD,MAAMA,GAAG,EAAEC,GAAGngT,GAAGkgT,GAAG,EAAEhgT,EAAEA,EAAE84O,UAAa42D,IAAI,oBAAoBA,GAAGgT,kBAAkB,IAAIhT,GAAGgT,kBAAkBjT,GAAGzvS,OAAE,EAAO,MAAsB,GAAhBA,EAAEq2F,QAAQ+xJ,OAAsB,CAAX,MAAMz7N,GAAK,CAAU,GAAV+zR,GAAG5gT,EAAEipJ,MAAQo0J,GAAG,MAAMA,IAAG,EAAGr9S,EAAEs9S,GAAGA,GAAG,KAAKt9S,EAAE,OAAG,KAAO,EAAF0oJ,KAAiB8oJ,KAAL,IAAsB,CACvX,SAAS8Q,KAAK,KAAK,OAAO95J,IAAG,CAAC,IAAIxoJ,EAAEwoJ,GAAEqzF,UAAU2kE,IAAI,OAAOD,KAAK,KAAa,EAAR/3J,GAAE8/F,OAASm3C,GAAGj3I,GAAE+3J,MAAMC,IAAG,GAAI,KAAKh4J,GAAEouE,KAAKooF,GAAGh/S,EAAEwoJ,KAAIi3I,GAAGj3I,GAAE+3J,MAAMC,IAAG,IAAK,IAAIvgT,EAAEuoJ,GAAE8/F,MAAM,KAAO,IAAFroP,IAAQ89S,GAAG/9S,EAAEwoJ,IAAG,KAAO,IAAFvoJ,IAAQ2/S,KAAKA,IAAG,EAAGrO,GAAG,IAAG,WAAgB,OAAL2P,KAAY,IAAK,KAAG14J,GAAEA,GAAEusJ,UAAW,CAAC,UAASmM,KAAK,GAAG,KAAKpB,GAAG,CAAC,IAAI9/S,EAAE,GAAG8/S,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUxO,GAAGtxS,EAAE6iT,GAAI,QAAM,CAAG,UAAS1E,GAAGn+S,EAAEC,GAAG8/S,GAAGt2T,KAAKwW,EAAED,GAAG4/S,KAAKA,IAAG,EAAGrO,GAAG,IAAG,WAAgB,OAAL2P,KAAY,IAAK,IAAG,UAAShD,GAAGl+S,EAAEC,GAAG+/S,GAAGv2T,KAAKwW,EAAED,GAAG4/S,KAAKA,IAAG,EAAGrO,GAAG,IAAG,WAAgB,OAAL2P,KAAY,IAAK,IAAG,CACje,SAAS2B,KAAK,GAAG,OAAOhD,GAAG,OAAM,EAAG,IAAI7/S,EAAE6/S,GAAW,GAARA,GAAG,KAAQ,KAAO,GAAFn3J,IAAM,MAAMvnJ,MAAM3D,EAAE,MAAM,IAAIyC,EAAEyoJ,GAAEA,IAAG,GAAG,IAAIxoJ,EAAE8/S,GAAGA,GAAG,GAAG,IAAI,IAAI36S,EAAE,EAAEA,EAAEnF,EAAEnW,OAAOsb,GAAG,EAAE,CAAC,IAAI5D,EAAEvB,EAAEmF,GAAGC,EAAEpF,EAAEmF,EAAE,GAAGE,EAAE9D,EAAEi2D,QAAyB,GAAjBj2D,EAAEi2D,aAAQ,EAAU,oBAAoBnyD,EAAE,IAAIA,GAAqD,CAAjD,MAAM69D,GAAG,GAAG,OAAO99D,EAAE,MAAMnE,MAAM3D,EAAE,MAAMsgT,GAAGx4S,EAAE89D,EAAG,CAAC,CAAW,IAAXljE,EAAE6/S,GAAGA,GAAG,GAAO16S,EAAE,EAAEA,EAAEnF,EAAEnW,OAAOsb,GAAG,EAAE,CAAC5D,EAAEvB,EAAEmF,GAAGC,EAAEpF,EAAEmF,EAAE,GAAG,IAAI,IAAIG,EAAE/D,EAAEnW,OAAOmW,EAAEi2D,QAAQlyD,GAAqD,CAAjD,MAAM49D,GAAG,GAAG,OAAO99D,EAAE,MAAMnE,MAAM3D,EAAE,MAAMsgT,GAAGx4S,EAAE89D,EAAG,CAAC,KAAI59D,EAAExF,EAAEu2F,QAAQy+M,YAAY,OAAOxvS,GAAGxF,EAAEwF,EAAEuvS,WAAWvvS,EAAEuvS,WAAW,KAAa,EAARvvS,EAAE8iP,QAAU9iP,EAAEk0O,QACjf,KAAKl0O,EAAEwzO,UAAU,MAAMxzO,EAAExF,EAAW,OAAT0oJ,GAAEzoJ,EAAEuxS,MAAW,CAAG,UAASsR,GAAG9iT,EAAEC,EAAEC,GAAyBozS,GAAGtzS,EAAfC,EAAEm9S,GAAGp9S,EAAfC,EAAEg9S,GAAG/8S,EAAED,GAAY,IAAWA,EAAE8zS,KAAe,QAAV/zS,EAAE0gT,GAAG1gT,EAAE,MAAcujS,GAAGvjS,EAAE,EAAEC,GAAG2gT,GAAG5gT,EAAEC,GAAI,CAC7I,SAAS69S,GAAG99S,EAAEC,GAAG,GAAG,IAAID,EAAE42N,IAAIksF,GAAG9iT,EAAEA,EAAEC,QAAQ,IAAI,IAAIC,EAAEF,EAAE+4O,OAAO,OAAO74O,GAAG,CAAC,GAAG,IAAIA,EAAE02N,IAAI,CAACksF,GAAG5iT,EAAEF,EAAEC,GAAG,KAAM,CAAK,GAAG,IAAIC,EAAE02N,IAAI,CAAC,IAAIvxN,EAAEnF,EAAE84O,UAAU,GAAG,oBAAoB94O,EAAE3E,KAAKm6O,0BAA0B,oBAAoBrwO,EAAEm4S,oBAAoB,OAAOC,KAAKA,GAAG/hQ,IAAIr2C,IAAI,CAAW,IAAI5D,EAAE87S,GAAGr9S,EAAnBF,EAAEi9S,GAAGh9S,EAAED,GAAgB,GAA4B,GAAzBszS,GAAGpzS,EAAEuB,GAAGA,EAAEsyS,KAAkB,QAAb7zS,EAAEwgT,GAAGxgT,EAAE,IAAeqjS,GAAGrjS,EAAE,EAAEuB,GAAGm/S,GAAG1gT,EAAEuB,QAAQ,GAAG,oBAAoB4D,EAAEm4S,oBAAoB,OAAOC,KAAKA,GAAG/hQ,IAAIr2C,IAAI,IAAIA,EAAEm4S,kBAAkBv9S,EAAED,EAAa,CAAV,MAAMsF,GAAI,MAAM,CAAC,CAAApF,EAAEA,EAAE64O,MAAO,CAAC,CAC5d,SAASgpE,GAAG/hT,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAE8hT,UAAU,OAAOz8S,GAAGA,EAAE6hC,OAAOjnC,GAAGA,EAAE8zS,KAAK/zS,EAAE+iS,aAAa/iS,EAAE8iS,eAAe5iS,EAAE2oJ,KAAI7oJ,IAAI2oJ,GAAEzoJ,KAAKA,IAAI,IAAI0oJ,IAAG,IAAIA,KAAM,SAAFD,MAAcA,IAAG,IAAIM,KAAI41J,GAAGuC,GAAGphT,EAAE,GAAGw/S,IAAIt/S,GAAG0gT,GAAG5gT,EAAEC,EAAG,UAAS8+S,GAAG/+S,EAAEC,GAAG,IAAIC,EAAEF,EAAEg5O,UAAU,OAAO94O,GAAGA,EAAEgnC,OAAOjnC,GAAO,KAAJA,EAAE,KAAmB,KAAO,GAAhBA,EAAED,EAAE66C,OAAe56C,EAAE,EAAE,KAAO,EAAFA,GAAKA,EAAE,KAAKmxS,KAAK,EAAE,GAAG,IAAIiP,KAAKA,GAAGd,IAAuB,KAAnBt/S,EAAEojS,GAAG,UAAUgd,OAAYpgT,EAAE,WAAWC,EAAE6zS,KAAe,QAAV/zS,EAAE0gT,GAAG1gT,EAAEC,MAAcsjS,GAAGvjS,EAAEC,EAAEC,GAAG0gT,GAAG5gT,EAAEE,GAAI,CAUrZ,SAAS6iT,GAAG/iT,EAAEC,EAAEC,EAAEmF,GAAGtZ,KAAK6qO,IAAI52N,EAAEjU,KAAK7B,IAAIgW,EAAEnU,KAAK2tP,QAAQ3tP,KAAK++B,MAAM/+B,KAAKgtP,OAAOhtP,KAAKitP,UAAUjtP,KAAKwP,KAAKxP,KAAKipL,YAAY,KAAKjpL,KAAK8P,MAAM,EAAE9P,KAAK8iJ,IAAI,KAAK9iJ,KAAKyqT,aAAav2S,EAAElU,KAAKqmT,aAAarmT,KAAKuzS,cAAcvzS,KAAK8mT,YAAY9mT,KAAK4mP,cAAc,KAAK5mP,KAAK8uD,KAAKx1C,EAAEtZ,KAAKu8P,MAAM,EAAEv8P,KAAK+oT,WAAW/oT,KAAKipT,YAAYjpT,KAAKgpT,WAAW,KAAKhpT,KAAKmmT,WAAWnmT,KAAKumT,MAAM,EAAEvmT,KAAK8vP,UAAU,IAAK,UAASy6D,GAAGt2S,EAAEC,EAAEC,EAAEmF,GAAG,OAAO,IAAI09S,GAAG/iT,EAAEC,EAAEC,EAAEmF,EAAG,UAASm1S,GAAGx6S,GAAiB,UAAdA,EAAEA,EAAE9U,aAAuB8U,EAAE4/N,iBAAkB,CAEve,SAASq1E,GAAGj1S,EAAEC,GAAG,IAAIC,EAAEF,EAAE67O,UACuB,OADb,OAAO37O,IAAGA,EAAEo2S,GAAGt2S,EAAE42N,IAAI32N,EAAED,EAAE9V,IAAI8V,EAAE66C,OAAQm6H,YAAYh1K,EAAEg1K,YAAY90K,EAAE3E,KAAKyE,EAAEzE,KAAK2E,EAAE84O,UAAUh5O,EAAEg5O,UAAU94O,EAAE27O,UAAU77O,EAAEA,EAAE67O,UAAU37O,IAAIA,EAAEs2S,aAAav2S,EAAEC,EAAE3E,KAAKyE,EAAEzE,KAAK2E,EAAEooP,MAAM,EAAEpoP,EAAE60S,WAAW,KAAK70S,EAAE80S,YAAY,KAAK90S,EAAE40S,WAAW,MAAM50S,EAAEgyS,WAAWlyS,EAAEkyS,WAAWhyS,EAAEoyS,MAAMtyS,EAAEsyS,MAAMpyS,EAAE4qB,MAAM9qB,EAAE8qB,MAAM5qB,EAAEyyO,cAAc3yO,EAAE2yO,cAAczyO,EAAEo/R,cAAct/R,EAAEs/R,cAAcp/R,EAAE2yS,YAAY7yS,EAAE6yS,YAAY5yS,EAAED,EAAEoyS,aAAalyS,EAAEkyS,aAAa,OAAOnyS,EAAE,KAAK,CAACqyS,MAAMryS,EAAEqyS,MAAMD,aAAapyS,EAAEoyS,cAC3enyS,EAAEw5O,QAAQ15O,EAAE05O,QAAQx5O,EAAErE,MAAMmE,EAAEnE,MAAMqE,EAAE2uI,IAAI7uI,EAAE6uI,IAAW3uI,CAAE,CACzD,SAASi1S,GAAGn1S,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,IAAIC,EAAE,EAAM,GAAJF,EAAErF,EAAK,oBAAoBA,EAAEw6S,GAAGx6S,KAAKuF,EAAE,QAAQ,GAAG,kBAAkBvF,EAAEuF,EAAE,OAAOvF,EAAE,OAAOA,GAAG,KAAK44R,EAAG,OAAOyc,GAAGn1S,EAAE6a,SAAStZ,EAAE6D,EAAErF,GAAG,KAAKu5R,EAAGj0R,EAAE,EAAE9D,GAAG,GAAG,MAAM,KAAKo3R,EAAGtzR,EAAE,EAAE9D,GAAG,EAAE,MAAM,KAAKq3R,EAAG,OAAO94R,EAAEs2S,GAAG,GAAGp2S,EAAED,EAAI,EAAFwB,IAAOuzK,YAAY8jH,EAAG94R,EAAEzE,KAAKu9R,EAAG94R,EAAEsyS,MAAMhtS,EAAEtF,EAAE,KAAKk5R,EAAG,OAAOl5R,EAAEs2S,GAAG,GAAGp2S,EAAED,EAAEwB,IAAKlG,KAAK29R,EAAGl5R,EAAEg1K,YAAYkkH,EAAGl5R,EAAEsyS,MAAMhtS,EAAEtF,EAAE,KAAKm5R,EAAG,OAAOn5R,EAAEs2S,GAAG,GAAGp2S,EAAED,EAAEwB,IAAKuzK,YAAYmkH,EAAGn5R,EAAEsyS,MAAMhtS,EAAEtF,EAAE,KAAKy5R,EAAG,OAAOoiB,GAAG37S,EAAEuB,EAAE6D,EAAErF,GAAG,KAAKy5R,EAAG,OAAO15R,EAAEs2S,GAAG,GAAGp2S,EAAED,EAAEwB,IAAKuzK,YAAY0kH,EAAG15R,EAAEsyS,MAAMhtS,EAAEtF,EAAE,QAAQ,GAAG,kBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAE82R,UAAU,KAAKiC,EAAGxzR,EAAE,GAAG,MAAMvF,EAAE,KAAKg5R,EAAGzzR,EAAE,EAAE,MAAMvF,EAAE,KAAKi5R,EAAG1zR,EAAE,GAAG,MAAMvF,EAAE,KAAKo5R,EAAG7zR,EAAE,GAAG,MAAMvF,EAAE,KAAKq5R,EAAG9zR,EAAE,GAAGF,EAAE,KAAK,MAAMrF,EAAE,KAAKs5R,EAAG/zR,EAAE,GAAG,MAAMvF,EAAE,MAAMmB,MAAM3D,EAAE,IAAI,MAAMwC,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAEq2S,GAAG/wS,EAAErF,EAAED,EAAEwB,IAAKuzK,YAAYh1K,EAAEC,EAAE1E,KAAK8J,EAAEpF,EAAEqyS,MAAMhtS,EAASrF,CAAE,UAASo1S,GAAGr1S,EAAEC,EAAEC,EAAEmF,GAA2B,OAAxBrF,EAAEs2S,GAAG,EAAEt2S,EAAEqF,EAAEpF,IAAKqyS,MAAMpyS,EAASF,CAAE,UAAS67S,GAAG77S,EAAEC,EAAEC,EAAEmF,GAA6C,OAA1CrF,EAAEs2S,GAAG,GAAGt2S,EAAEqF,EAAEpF,IAAK+0K,YAAYykH,EAAGz5R,EAAEsyS,MAAMpyS,EAASF,CAAE,UAASk1S,GAAGl1S,EAAEC,EAAEC,GAA8B,OAA3BF,EAAEs2S,GAAG,EAAEt2S,EAAE,KAAKC,IAAKqyS,MAAMpyS,EAASF,CAAE,CACpc,SAASo1S,GAAGp1S,EAAEC,EAAEC,GAA8J,OAA3JD,EAAEq2S,GAAG,EAAE,OAAOt2S,EAAE+a,SAAS/a,EAAE+a,SAAS,GAAG/a,EAAE9V,IAAI+V,IAAKqyS,MAAMpyS,EAAED,EAAE+4O,UAAU,CAACC,cAAcj5O,EAAEi5O,cAAc+pE,gBAAgB,KAAKtlC,eAAe19Q,EAAE09Q,gBAAuBz9Q,CAAE,CACvL,SAASgjT,GAAGjjT,EAAEC,EAAEC,GAAGnU,KAAK6qO,IAAI32N,EAAElU,KAAKktP,cAAcj5O,EAAEjU,KAAKy1T,aAAaz1T,KAAK+1T,UAAU/1T,KAAKwqG,QAAQxqG,KAAKi3T,gBAAgB,KAAKj3T,KAAK41T,eAAe,EAAE51T,KAAKovT,eAAepvT,KAAKif,QAAQ,KAAKjf,KAAKg1S,QAAQ7gS,EAAEnU,KAAK80T,aAAa,KAAK90T,KAAKg1T,iBAAiB,EAAEh1T,KAAKy3S,WAAWF,GAAG,GAAGv3S,KAAK+0T,gBAAgBxd,IAAI,GAAGv3S,KAAKk3S,eAAel3S,KAAK01T,cAAc11T,KAAK0sT,iBAAiB1sT,KAAK82S,aAAa92S,KAAKg3S,YAAYh3S,KAAK+2S,eAAe/2S,KAAK62S,aAAa,EAAE72S,KAAKm3S,cAAcI,GAAG,GAAGv3S,KAAKm3T,gCAAgC,IAAK,CAClf,SAASC,GAAGnjT,EAAEC,EAAEC,GAAG,IAAImF,EAAE,EAAEvb,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACgtS,SAAS6B,EAAGzuS,IAAI,MAAMmb,EAAE,KAAK,GAAGA,EAAE0V,SAAS/a,EAAEi5O,cAAch5O,EAAEy9Q,eAAex9Q,EAAG,CAC3K,SAASkjT,GAAGpjT,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAExB,EAAEs2F,QAAQjxF,EAAEyuS,KAAKxuS,EAAEyuS,GAAGvyS,GAAGzB,EAAE,GAAGE,EAAE,CAAqBD,EAAE,CAAC,GAAGm/R,GAA1Bl/R,EAAEA,EAAE4zS,mBAA8B5zS,GAAG,IAAIA,EAAE02N,IAAI,MAAMz1N,MAAM3D,EAAE,MAAM,IAAIgI,EAAEtF,EAAE,EAAE,CAAC,OAAOsF,EAAEoxN,KAAK,KAAK,EAAEpxN,EAAEA,EAAEwzO,UAAUhuO,QAAQ,MAAM/K,EAAE,KAAK,EAAE,GAAGkvS,GAAG3pS,EAAEjK,MAAM,CAACiK,EAAEA,EAAEwzO,UAAUy2D,0CAA0C,MAAMxvS,CAAE,EAACuF,EAAEA,EAAEuzO,MAAO,OAAM,OAAOvzO,GAAG,MAAMrE,MAAM3D,EAAE,KAAO,IAAG,IAAI0C,EAAE02N,IAAI,CAAC,IAAIxzJ,EAAEljE,EAAE3E,KAAK,GAAG4zS,GAAG/rO,GAAG,CAACljE,EAAEovS,GAAGpvS,EAAEkjE,EAAE59D,GAAG,MAAMxF,CAAE,CAAC,CAAAE,EAAEsF,CAAE,MAAKtF,EAAE4uS,GACrW,OADwW,OAAO7uS,EAAE+K,QAAQ/K,EAAE+K,QAAQ9K,EAAED,EAAEk7S,eAAej7S,GAAED,EAAEizS,GAAG5tS,EAAEC,IAAK8tS,QAAQ,CAAC/pR,QAAQtpB,GAAuB,QAApBqF,OAAE,IAASA,EAAE,KAAKA,KAC1epF,EAAE+U,SAAS3P,GAAGiuS,GAAG7xS,EAAExB,GAAGg0S,GAAGxyS,EAAE8D,EAAED,GAAUC,CAAE,UAAS89S,GAAGrjT,GAAe,OAAZA,EAAEA,EAAEu2F,SAAczrE,OAAyB9qB,EAAE8qB,MAAM8rM,IAAoD52N,EAAE8qB,MAAMkuN,WAAhF,IAA2F,UAASjmF,GAAG/yJ,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAEs/R,gBAA2B,OAAOt/R,EAAEu/R,WAAW,CAAC,IAAIr/R,EAAEF,EAAEw7S,UAAUx7S,EAAEw7S,UAAU,IAAIt7S,GAAGA,EAAED,EAAEC,EAAED,CAAE,CAAC,UAAS6yJ,GAAG9yJ,EAAEC,GAAG8yJ,GAAG/yJ,EAAEC,IAAID,EAAEA,EAAE67O,YAAY9oF,GAAG/yJ,EAAEC,EAAG,CAC3V,SAASqjT,GAAGtjT,EAAEC,EAAEC,GAAG,IAAImF,EAAE,MAAMnF,GAAG,MAAMA,EAAEqjT,kBAAkBrjT,EAAEqjT,iBAAiBC,gBAAgB,KAAiK,GAA5JtjT,EAAE,IAAI+iT,GAAGjjT,EAAEC,EAAE,MAAMC,IAAG,IAAKA,EAAE6gS,SAAS9gS,EAAEq2S,GAAG,EAAE,KAAK,KAAK,IAAIr2S,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGC,EAAEq2F,QAAQt2F,EAAEA,EAAE+4O,UAAU94O,EAAE0yS,GAAG3yS,GAAGD,EAAEutS,IAAIrtS,EAAEq2F,QAAQ50E,GAAG,IAAI3hB,EAAE84N,SAAS94N,EAAEwiK,WAAWxiK,GAAMqF,EAAE,IAAIrF,EAAE,EAAEA,EAAEqF,EAAEtb,OAAOiW,IAAI,CAAQ,IAAIyB,GAAXxB,EAAEoF,EAAErF,IAAWu4S,YAAY92S,EAAEA,EAAExB,EAAEu4S,SAAS,MAAMt4S,EAAEgjT,gCAAgChjT,EAAEgjT,gCAAgC,CAACjjT,EAAEwB,GAAGvB,EAAEgjT,gCAAgCz5T,KAAKwW,EAAEwB,EAAG,CAAA1V,KAAK03T,cAAcvjT,CAAE,CACjS,SAASwjT,GAAG1jT,GAAG,SAASA,GAAG,IAAIA,EAAE84N,UAAU,IAAI94N,EAAE84N,UAAU,KAAK94N,EAAE84N,WAAW,IAAI94N,EAAE84N,UAAU,iCAAiC94N,EAAEy+Q,WAAY,CAEnU,SAASklC,GAAG3jT,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAEpF,EAAEy+S,oBAAoB,GAAGr5S,EAAE,CAAC,IAAIC,EAAED,EAAEm+S,cAAc,GAAG,oBAAoBhiT,EAAE,CAAC,IAAI+D,EAAE/D,EAAEA,EAAE,WAAW,IAAIzB,EAAEqjT,GAAG99S,GAAGC,EAAE3Y,KAAKmT,EAAG,CAAC,CAAAojT,GAAGnjT,EAAEsF,EAAEvF,EAAEyB,EAAG,KAAI,CAAmD,GAAlD6D,EAAEpF,EAAEy+S,oBAD1K,SAAY3+S,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAE84N,SAAS94N,EAAEknP,gBAAgBlnP,EAAEo8R,WAAW,OAAa,IAAIn8R,EAAE64N,WAAW74N,EAAEk4B,aAAa,qBAAwBl4B,EAAE,IAAI,IAAIC,EAAEA,EAAEF,EAAEw8R,WAAWx8R,EAAE+5N,YAAY75N,GAAG,OAAO,IAAIojT,GAAGtjT,EAAE,EAAEC,EAAE,CAAC8gS,SAAQ,QAAI,EAAQ,CACnC6iB,CAAG1jT,EAAEmF,GAAGE,EAAED,EAAEm+S,cAAiB,oBAAoBhiT,EAAE,CAAC,IAAI2hE,EAAE3hE,EAAEA,EAAE,WAAW,IAAIzB,EAAEqjT,GAAG99S,GAAG69D,EAAEv2E,KAAKmT,EAAG,CAAC,CAAA6hT,IAAG,WAAWuB,GAAGnjT,EAAEsF,EAAEvF,EAAEyB,EAAG,GAAE,QAAO4hT,GAAG99S,EAAG,CAGrG,SAASs+S,GAAG7jT,EAAEC,GAAG,IAAIC,EAAE,EAAEpW,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI45T,GAAGzjT,GAAG,MAAMkB,MAAM3D,EAAE,MAAM,OAAO2lT,GAAGnjT,EAAEC,EAAE,KAAKC,EAAG,CA1BzWy/S,GAAG,SAAS3/S,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEqyS,MAAM,GAAG,OAAOtyS,EAAE,GAAGA,EAAE2yO,gBAAgB1yO,EAAEu2S,cAAcjsM,GAAEhU,QAAQg8M,IAAG,MAAQ,IAAG,KAAKryS,EAAEmF,GAAoC,CAAO,OAANktS,IAAG,EAAUtyS,EAAE22N,KAAK,KAAK,EAAEskF,GAAGj7S,GAAGk/D,KAAK,MAAM,KAAK,EAAE42O,GAAG91S,GAAG,MAAM,KAAK,EAAEkvS,GAAGlvS,EAAE1E,OAAOi0S,GAAGvvS,GAAG,MAAM,KAAK,EAAE41S,GAAG51S,EAAEA,EAAE+4O,UAAUC,eAAe,MAAM,KAAK,GAAG5zO,EAAEpF,EAAE0yO,cAAcnnP,MAAM,IAAIiW,EAAExB,EAAE1E,KAAKwkF,SAASwpE,GAAEooJ,GAAGlwS,EAAEg2R,eAAeh2R,EAAEg2R,cAAcpyR,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOpF,EAAEq/R,cAAe,OAAG,KAAKp/R,EAAED,EAAE6qB,MAAMonR,YAAmBuJ,GAAGz7S,EAAEC,EAAEC,IAAGqpJ,GAAEx+C,GAAY,EAAVA,GAAExU,SAA8B,QAAnBt2F,EAAEqiJ,GAAGtiJ,EAAEC,EAAEC,IAC/eD,EAAEy5O,QAAQ,MAAKnwF,GAAEx+C,GAAY,EAAVA,GAAExU,SAAW,MAAM,KAAK,GAA0B,GAAvBlxF,EAAE,KAAKnF,EAAED,EAAEiyS,YAAe,KAAa,GAARlyS,EAAEsoP,OAAU,CAAC,GAAGjjP,EAAE,OAAOi3S,GAAGt8S,EAAEC,EAAEC,GAAGD,EAAEqoP,OAAO,EAAG,CAA4F,GAA1E,QAAlB7mP,EAAExB,EAAEq/R,iBAAyB79R,EAAE06S,UAAU,KAAK16S,EAAEy9F,KAAK,KAAKz9F,EAAEqzS,WAAW,MAAMvrJ,GAAEx+C,GAAEA,GAAExU,SAAYlxF,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOpF,EAAEqyS,MAAM,EAAEqI,GAAG36S,EAAEC,EAAEC,GAAG,OAAOoiJ,GAAGtiJ,EAAEC,EAAEC,EAAG,CAD9LqyS,GAAG,KAAa,MAARvyS,EAAEsoP,MACoL,MAAKiqD,IAAG,EAAa,OAAVtyS,EAAEqyS,MAAM,EAASryS,EAAE22N,KAAK,KAAK,EAA+I,GAA7IvxN,EAAEpF,EAAE1E,KAAK,OAAOyE,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAGtoP,EAAEC,EAAEu2S,aAAa/0S,EAAEutS,GAAG/uS,EAAEipJ,GAAE3yD,SAAS47M,GAAGlyS,EAAEC,GAAGuB,EAAE61S,GAAG,KAAKr3S,EAAEoF,EAAErF,EAAEyB,EAAEvB,GAAGD,EAAEqoP,OAAO,EAAK,kBACre7mP,GAAG,OAAOA,GAAG,oBAAoBA,EAAEmhC,aAAQ,IAASnhC,EAAEq1R,SAAS,CAAiD,GAAhD72R,EAAE22N,IAAI,EAAE32N,EAAEq/R,cAAc,KAAKr/R,EAAE4yS,YAAY,KAAQ1D,GAAG9pS,GAAG,CAAC,IAAIC,GAAE,EAAGkqS,GAAGvvS,EAAG,MAAKqF,GAAE,EAAGrF,EAAEq/R,cAAc,OAAO79R,EAAEuzC,YAAO,IAASvzC,EAAEuzC,MAAMvzC,EAAEuzC,MAAM,KAAK49P,GAAG3yS,GAAG,IAAIsF,EAAEF,EAAE+nN,yBAAyB,oBAAoB7nN,GAAGquS,GAAG3zS,EAAEoF,EAAEE,EAAEvF,GAAGyB,EAAEi1R,QAAQmd,GAAG5zS,EAAE+4O,UAAUv3O,EAAEA,EAAEqyS,gBAAgB7zS,EAAEs0S,GAAGt0S,EAAEoF,EAAErF,EAAEE,GAAGD,EAAEg7S,GAAG,KAAKh7S,EAAEoF,GAAE,EAAGC,EAAEpF,EAAG,MAAKD,EAAE22N,IAAI,EAAEyjF,GAAG,KAAKp6S,EAAEwB,EAAEvB,GAAGD,EAAEA,EAAE6qB,MAAM,OAAO7qB,EAAE,KAAK,GAAGwB,EAAExB,EAAE+0K,YAAYh1K,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GACnftoP,EAAEC,EAAEu2S,aAAuB/0S,GAAV6D,EAAE7D,EAAEo3L,OAAUp3L,EAAEu2R,UAAU/3R,EAAE1E,KAAKkG,EAAE6D,EAAErF,EAAE22N,IAOxD,SAAY52N,GAAG,GAAG,oBAAoBA,EAAE,OAAOw6S,GAAGx6S,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAE82R,YAAgBmC,EAAG,OAAO,GAAG,GAAGj5R,IAAIo5R,EAAG,OAAO,EAAG,QAAO,CAAE,CAPpF0qB,CAAGriT,GAAGzB,EAAEshP,GAAG7/O,EAAEzB,GAAUsF,GAAG,KAAK,EAAErF,EAAEy6S,GAAG,KAAKz6S,EAAEwB,EAAEzB,EAAEE,GAAG,MAAMF,EAAE,KAAK,EAAEC,EAAE86S,GAAG,KAAK96S,EAAEwB,EAAEzB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEq6S,GAAG,KAAKr6S,EAAEwB,EAAEzB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEs6S,GAAG,KAAKt6S,EAAEwB,EAAE6/O,GAAG7/O,EAAElG,KAAKyE,GAAGqF,EAAEnF,GAAG,MAAMF,EAAE,MAAMmB,MAAM3D,EAAE,IAAIiE,EAAE,IAAM,QAAOxB,EAAE,KAAK,EAAE,OAAOoF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAA2CkE,GAAG16S,EAAEC,EAAEoF,EAArC5D,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE6/O,GAAGj8O,EAAE5D,GAAcvB,GAAG,KAAK,EAAE,OAAOmF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAA2CuE,GAAG/6S,EAAEC,EAAEoF,EAArC5D,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE6/O,GAAGj8O,EAAE5D,GAAcvB,GAAG,KAAK,EAAwB,GAAtBg7S,GAAGj7S,GAAGoF,EAAEpF,EAAE4yS,YAAe,OAAO7yS,GAAG,OAAOqF,EAAE,MAAMlE,MAAM3D,EAAE,MAC3Y,GAA9G6H,EAAEpF,EAAEu2S,aAA+B/0S,EAAE,QAApBA,EAAExB,EAAEq/R,eAAyB79R,EAAE6nB,QAAQ,KAAK2pR,GAAGjzS,EAAEC,GAAGuzS,GAAGvzS,EAAEoF,EAAE,KAAKnF,IAAGmF,EAAEpF,EAAEq/R,cAAch2Q,WAAe7nB,EAAE09D,KAAKl/D,EAAEqiJ,GAAGtiJ,EAAEC,EAAEC,OAAO,CAAuF,IAArEoF,GAAjB7D,EAAExB,EAAE+4O,WAAiB+nD,WAAQqV,GAAG/H,GAAGpuS,EAAE+4O,UAAUC,cAAcmjD,YAAY+Z,GAAGl2S,EAAEqF,EAAEurM,IAAG,GAAMvrM,EAAE,CAAqC,GAAG,OAAvCtF,EAAEyB,EAAEyhT,iCAA2C,IAAIzhT,EAAE,EAAEA,EAAEzB,EAAEjW,OAAO0X,GAAG,GAAE6D,EAAEtF,EAAEyB,IAAKq1S,8BAA8B92S,EAAEyB,EAAE,GAAGm1S,GAAGntT,KAAK6b,GAAoB,IAAjBpF,EAAEq1S,GAAGt1S,EAAE,KAAKoF,EAAEnF,GAAOD,EAAE6qB,MAAM5qB,EAAEA,GAAGA,EAAEooP,OAAe,EAATpoP,EAAEooP,MAAS,KAAKpoP,EAAEA,EAAEw5O,OAAQ,MAAK2gE,GAAGr6S,EAAEC,EAAEoF,EAAEnF,GAAGi/D,KAAKl/D,EAAEA,EAAE6qB,KAAM,QAAO7qB,EAAE,KAAK,EAAE,OAAO81S,GAAG91S,GAAG,OAAOD,GACnfy2S,GAAGx2S,GAAGoF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAAalxS,EAAE,OAAOtF,EAAEA,EAAE2yO,cAAc,KAAKptO,EAAE9D,EAAEsZ,SAASkzR,GAAG5oS,EAAE5D,GAAG8D,EAAE,KAAK,OAAOD,GAAG2oS,GAAG5oS,EAAEC,KAAKrF,EAAEqoP,OAAO,IAAIwyD,GAAG96S,EAAEC,GAAGo6S,GAAGr6S,EAAEC,EAAEsF,EAAErF,GAAGD,EAAE6qB,MAAM,KAAK,EAAE,OAAO,OAAO9qB,GAAGy2S,GAAGx2S,GAAG,KAAK,KAAK,GAAG,OAAOw7S,GAAGz7S,EAAEC,EAAEC,GAAG,KAAK,EAAE,OAAO21S,GAAG51S,EAAEA,EAAE+4O,UAAUC,eAAe5zO,EAAEpF,EAAEu2S,aAAa,OAAOx2S,EAAEC,EAAE6qB,MAAMwqR,GAAGr1S,EAAE,KAAKoF,EAAEnF,GAAGm6S,GAAGr6S,EAAEC,EAAEoF,EAAEnF,GAAGD,EAAE6qB,MAAM,KAAK,GAAG,OAAOzlB,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAA2C8D,GAAGt6S,EAAEC,EAAEoF,EAArC5D,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE6/O,GAAGj8O,EAAE5D,GAAcvB,GAAG,KAAK,EAAE,OAAOm6S,GAAGr6S,EAAEC,EAAEA,EAAEu2S,aAAat2S,GAAGD,EAAE6qB,MAAM,KAAK,EACtc,KAAK,GAAG,OAAOuvR,GAAGr6S,EAAEC,EAAEA,EAAEu2S,aAAaz7R,SAAS7a,GAAGD,EAAE6qB,MAAM,KAAK,GAAG9qB,EAAE,CAACqF,EAAEpF,EAAE1E,KAAKwkF,SAASt+E,EAAExB,EAAEu2S,aAAajxS,EAAEtF,EAAE0yO,cAAcrtO,EAAE7D,EAAEjW,MAAM,IAAIga,EAAEvF,EAAE1E,KAAKwkF,SAAiD,GAAxCwpE,GAAEooJ,GAAGnsS,EAAEiyR,eAAejyR,EAAEiyR,cAAcnyR,EAAK,OAAOC,EAAE,GAAGC,EAAED,EAAE/Z,MAA0G,KAApG8Z,EAAEkmS,GAAGhmS,EAAEF,GAAG,EAAwF,GAArF,oBAAoBD,EAAEmyR,sBAAsBnyR,EAAEmyR,sBAAsBhyR,EAAEF,GAAG,cAAqB,GAAGC,EAAEwV,WAAWtZ,EAAEsZ,WAAWwvF,GAAEhU,QAAQ,CAACt2F,EAAEqiJ,GAAGtiJ,EAAEC,EAAEC,GAAG,MAAMF,CAAE,OAAM,IAAc,QAAVwF,EAAEvF,EAAE6qB,SAAiBtlB,EAAEuzO,OAAO94O,GAAG,OAAOuF,GAAG,CAAC,IAAI49D,EAAE59D,EAAE4sS,aAAa,GAAG,OAAOhvO,EAAE,CAAC79D,EAAEC,EAAEslB,MAAM,IAAI,IAAI5uB,EACtfknE,EAAEivO,aAAa,OAAOn2S,GAAG,CAAC,GAAGA,EAAE8O,UAAU3F,GAAG,KAAKnJ,EAAEu2S,aAAantS,GAAG,CAAC,IAAIE,EAAEoxN,OAAM16N,EAAEg3S,IAAI,EAAEhzS,GAAGA,IAAK02N,IAAI,EAAE08E,GAAG9tS,EAAEtJ,IAAIsJ,EAAE8sS,OAAOpyS,EAAgB,QAAdhE,EAAEsJ,EAAEq2O,aAAqB3/O,EAAEo2S,OAAOpyS,GAAG+xS,GAAGzsS,EAAEuzO,OAAO74O,GAAGkjE,EAAEkvO,OAAOpyS,EAAE,KAAM,CAAAhE,EAAEA,EAAEpP,IAAK,CAAC,MAAKyY,EAAE,KAAKC,EAAEoxN,KAAIpxN,EAAEjK,OAAO0E,EAAE1E,KAAK,KAAaiK,EAAEslB,MAAM,GAAG,OAAOvlB,EAAEA,EAAEwzO,OAAOvzO,OAAO,IAAID,EAAEC,EAAE,OAAOD,GAAG,CAAC,GAAGA,IAAItF,EAAE,CAACsF,EAAE,KAAK,KAAM,CAAY,GAAG,QAAfC,EAAED,EAAEm0O,SAAoB,CAACl0O,EAAEuzO,OAAOxzO,EAAEwzO,OAAOxzO,EAAEC,EAAE,KAAM,CAAAD,EAAEA,EAAEwzO,MAAO,CAAAvzO,EAAED,CAAE,CAAA80S,GAAGr6S,EAAEC,EAAEwB,EAAEsZ,SAAS7a,GAAGD,EAAEA,EAAE6qB,KAAM,QAAO7qB,EAAE,KAAK,EAAE,OAAOwB,EAAExB,EAAE1E,KAAsB8J,GAAjBC,EAAErF,EAAEu2S,cAAiBz7R,SAASo3R,GAAGlyS,EAAEC,GACndmF,EAAEA,EADod5D,EAAE+wS,GAAG/wS,EACpf6D,EAAEy+S,wBAA8B9jT,EAAEqoP,OAAO,EAAE+xD,GAAGr6S,EAAEC,EAAEoF,EAAEnF,GAAGD,EAAE6qB,MAAM,KAAK,GAAG,OAAgBxlB,EAAEg8O,GAAX7/O,EAAExB,EAAE1E,KAAY0E,EAAEu2S,cAA6B+D,GAAGv6S,EAAEC,EAAEwB,EAAtB6D,EAAEg8O,GAAG7/O,EAAElG,KAAK+J,GAAcD,EAAEnF,GAAG,KAAK,GAAG,OAAOu6S,GAAGz6S,EAAEC,EAAEA,EAAE1E,KAAK0E,EAAEu2S,aAAanxS,EAAEnF,GAAG,KAAK,GAAG,OAAOmF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAAa/0S,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE6/O,GAAGj8O,EAAE5D,GAAG,OAAOzB,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAGroP,EAAE22N,IAAI,EAAEu4E,GAAG9pS,IAAIrF,GAAE,EAAGwvS,GAAGvvS,IAAID,GAAE,EAAGmyS,GAAGlyS,EAAEC,GAAGk0S,GAAGn0S,EAAEoF,EAAE5D,GAAG8yS,GAAGt0S,EAAEoF,EAAE5D,EAAEvB,GAAG+6S,GAAG,KAAKh7S,EAAEoF,GAAE,EAAGrF,EAAEE,GAAG,KAAK,GAAG,OAAOo8S,GAAGt8S,EAAEC,EAAEC,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAOy6S,GAAG36S,EAAEC,EAAEC,GAAG,MAAMiB,MAAM3D,EAAE,IAAIyC,EAAE22N,KAC9e,EAYD0sF,GAAGp4T,UAAU03C,OAAO,SAAS5iC,GAAGojT,GAAGpjT,EAAEjU,KAAK03T,cAAc,KAAK,KAAM,EAACH,GAAGp4T,UAAU84T,QAAQ,WAAW,IAAIhkT,EAAEjU,KAAK03T,cAAcxjT,EAAED,EAAEi5O,cAAcmqE,GAAG,KAAKpjT,EAAE,MAAK,WAAWC,EAAEstS,IAAI,IAAK,GAAE,EAEiJ7N,GAAG,SAAS1/R,GAAM,KAAKA,EAAE42N,MAAgBq9E,GAAGj0S,EAAE,EAAV+zS,MAAejhJ,GAAG9yJ,EAAE,GAAI,EAAC2/R,GAAG,SAAS3/R,GAAM,KAAKA,EAAE42N,MAAgBq9E,GAAGj0S,EAAE,SAAV+zS,MAAsBjhJ,GAAG9yJ,EAAE,UAAW,EAC9cs3J,GAAG,SAASt3J,GAAG,GAAG,KAAKA,EAAE42N,IAAI,CAAC,IAAI32N,EAAE8zS,KAAK7zS,EAAE8zS,GAAGh0S,GAAGi0S,GAAGj0S,EAAEE,EAAED,GAAG6yJ,GAAG9yJ,EAAEE,EAAG,CAAC,EAAC0/R,GAAG,SAAS5/R,EAAEC,GAAG,OAAOA,GAAI,EACjG09R,GAAG,SAAS39R,EAAEC,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAyB,GAAjB85B,GAAG/5B,EAAEE,GAAGD,EAAEC,EAAE2H,KAAQ,UAAU3H,EAAE3E,MAAM,MAAM0E,EAAE,CAAC,IAAIC,EAAEF,EAAEE,EAAEsiK,YAAYtiK,EAAEA,EAAEsiK,WAAsF,IAA3EtiK,EAAEA,EAAEgzN,iBAAiB,cAAcllN,KAAKE,UAAU,GAAGjO,GAAG,mBAAuBA,EAAE,EAAEA,EAAEC,EAAEnW,OAAOkW,IAAI,CAAC,IAAIoF,EAAEnF,EAAED,GAAG,GAAGoF,IAAIrF,GAAGqF,EAAE4+S,OAAOjkT,EAAEikT,KAAK,CAAC,IAAIxiT,EAAEu8R,GAAG34R,GAAG,IAAI5D,EAAE,MAAMN,MAAM3D,EAAE,KAAKm9R,EAAGt1R,GAAG00B,GAAG10B,EAAE5D,EAAG,CAAC,CAAC,OAAM,IAAK,WAAWqpF,GAAG9qF,EAAEE,GAAG,MAAM,IAAK,SAAmB,OAAVD,EAAEC,EAAE1U,QAAek1K,GAAG1gK,IAAIE,EAAEw8S,SAASz8S,GAAE,GAAK,EAACk+R,GAAGyjB,GAC9ZxjB,GAAG,SAASp+R,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAEojJ,GAAEA,IAAG,EAAE,IAAI,OAAO4oJ,GAAG,GAAGtxS,EAAEzS,KAAK,KAAK0S,EAAEC,EAAEmF,EAAE5D,GAAmC,CAAtE,QAAmD,KAAJinJ,GAAEpjJ,KAAUo6S,KAAKlO,KAAM,CAAC,EAACnT,GAAG,WAAW,KAAO,GAAF31I,MAhD/H,WAAc,GAAG,OAAOu3J,GAAG,CAAC,IAAIjgT,EAAEigT,GAAGA,GAAG,KAAKjgT,EAAE/V,SAAQ,SAAS+V,GAAGA,EAAE6iS,cAAc,GAAG7iS,EAAE4iS,aAAage,GAAG5gT,EAAEipJ,KAAK,GAAE,CAAAuoJ,IAAK,CAgDiB0S,GAAKhD,KAAM,EAAC5iB,GAAG,SAASt+R,EAAEC,GAAG,IAAIC,EAAEwoJ,GAAEA,IAAG,EAAE,IAAI,OAAO1oJ,EAAEC,EAAkC,CAA/C,QAA4B,KAAJyoJ,GAAExoJ,KAAUw/S,KAAKlO,KAAM,CAAC,EAAwI,IAAI2S,GAAG,CAACC,OAAO,CAACrmB,GAAG0M,GAAGzM,GAAGC,GAAGC,GAAGgjB,GAAG,CAAC3qN,SAAQ,KAAM8tN,GAAG,CAACC,wBAAwBzjB,GAAGpjD,WAAW,EAAE5xO,QAAQ,SAAS6xO,oBAAoB,aACve6mE,GAAG,CAAC9mE,WAAW4mE,GAAG5mE,WAAW5xO,QAAQw4S,GAAGx4S,QAAQ6xO,oBAAoB2mE,GAAG3mE,oBAAoB8mE,eAAeH,GAAGG,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBxsB,EAAGvB,uBAAuBguB,wBAAwB,SAASllT,GAAW,OAAO,QAAfA,EAAEw/R,GAAGx/R,IAAmB,KAAKA,EAAEg5O,SAAU,EAACsrE,wBAAwBD,GAAGC,yBAR/I,WAAc,OAAO,IAAK,EASlXa,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAM,GAAG,qBAAqBnyF,+BAA+B,CAAC,IAAIoyF,GAAGpyF,+BAA+B,IAAIoyF,GAAGC,YAAYD,GAAGE,cAAc,IAAI/V,GAAG6V,GAAGtmF,OAAOqlF,IAAI3U,GAAG4V,EAAa,CAAV,MAAMxlT,IAAI,CAAC,CAAApX,EAAQ2uS,mDAAmD4sB,GAAGv7T,EAAQ25Q,aAAashD,GACnXj7T,EAAQulO,YAAY,SAASnuN,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE84N,SAAS,OAAO94N,EAAE,IAAIC,EAAED,EAAE8zS,gBAAgB,QAAG,IAAS7zS,EAAE,CAAC,GAAG,oBAAoBD,EAAE4iC,OAAO,MAAMzhC,MAAM3D,EAAE,MAAM,MAAM2D,MAAM3D,EAAE,IAAItU,OAAOD,KAAK+W,IAAM,CAAoC,OAA5BA,EAAE,QAAVA,EAAEw/R,GAAGv/R,IAAc,KAAKD,EAAEg5O,SAAmB,EAACpwP,EAAQ+8T,UAAU,SAAS3lT,EAAEC,GAAG,IAAIC,EAAEwoJ,GAAE,GAAG,KAAO,GAAFxoJ,GAAM,OAAOF,EAAEC,GAAGyoJ,IAAG,EAAE,IAAI,GAAG1oJ,EAAE,OAAOsxS,GAAG,GAAGtxS,EAAEzS,KAAK,KAAK0S,GAAqB,CAAvD,QAA8CyoJ,GAAExoJ,EAAEsxS,IAAK,CAAC,EAAC5oT,EAAQm4S,QAAQ,SAAS/gS,EAAEC,EAAEC,GAAG,IAAIwjT,GAAGzjT,GAAG,MAAMkB,MAAM3D,EAAE,MAAM,OAAOmmT,GAAG,KAAK3jT,EAAEC,GAAE,EAAGC,EAAG,EACtdtX,EAAQg6C,OAAO,SAAS5iC,EAAEC,EAAEC,GAAG,IAAIwjT,GAAGzjT,GAAG,MAAMkB,MAAM3D,EAAE,MAAM,OAAOmmT,GAAG,KAAK3jT,EAAEC,GAAE,EAAGC,EAAG,EAACtX,EAAQ4tP,uBAAuB,SAASx2O,GAAG,IAAI0jT,GAAG1jT,GAAG,MAAMmB,MAAM3D,EAAE,KAAK,QAAOwC,EAAE2+S,sBAAqBkD,IAAG,WAAW8B,GAAG,KAAK,KAAK3jT,GAAE,GAAG,WAAWA,EAAE2+S,oBAAoB,KAAK3+S,EAAEutS,IAAI,IAAK,GAAE,KAAE,EAAO,EAAC3kT,EAAQg9T,wBAAwBhE,GAAGh5T,EAAQi9T,sBAAsB,SAAS7lT,EAAEC,GAAG,OAAO4jT,GAAG7jT,EAAEC,EAAE,EAAEnW,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAM,EACpblB,EAAQk9T,oCAAoC,SAAS9lT,EAAEC,EAAEC,EAAEmF,GAAG,IAAIq+S,GAAGxjT,GAAG,MAAMiB,MAAM3D,EAAE,MAAM,GAAG,MAAMwC,QAAG,IAASA,EAAE8zS,gBAAgB,MAAM3yS,MAAM3D,EAAE,KAAK,OAAOmmT,GAAG3jT,EAAEC,EAAEC,GAAE,EAAGmF,EAAG,EAACzc,EAAQijB,QAAQ,Q,+BChShL,IAAIvG,EAAEC,EAAEC,EAAE49D,EAAE,GAAG,kBAAkBmiD,aAAa,oBAAoBA,YAAYJ,IAAI,CAAC,IAAIjpH,EAAEqpH,YAAY38H,EAAQ2xP,aAAa,WAAW,OAAOr+O,EAAEipH,KAAM,CAAC,KAAI,CAAC,IAAIh9G,EAAEq9G,KAAKzlH,EAAEoI,EAAEg9G,MAAMv8H,EAAQ2xP,aAAa,WAAW,OAAOpyO,EAAEg9G,MAAMplH,CAAE,CAAC,CAC9O,GAAG,qBAAqBioF,QAAQ,oBAAoB+9N,eAAe,CAAC,IAAItoT,EAAE,KAAKsb,EAAE,KAAK1X,EAAE,SAAFA,IAAa,GAAG,OAAO5D,EAAE,IAAI,IAAIuC,EAAEpX,EAAQ2xP,eAAe98O,GAAE,EAAGuC,GAAGvC,EAAE,IAAuC,CAAlC,MAAMwC,GAAG,MAAMm6G,WAAW/4G,EAAE,GAAGpB,CAAG,CAAC,EAACqF,EAAE,SAAStF,GAAG,OAAOvC,EAAE28G,WAAW90G,EAAE,EAAEtF,IAAIvC,EAAEuC,EAAEo6G,WAAW/4G,EAAE,GAAI,EAACkE,EAAE,SAASvF,EAAEC,GAAG8Y,EAAEqhG,WAAWp6G,EAAEC,EAAG,EAACuF,EAAE,WAAW64L,aAAatlL,EAAG,EAACnwB,EAAQsnT,qBAAqB,WAAW,OAAM,CAAG,EAAC9sO,EAAEx6E,EAAQo9T,wBAAwB,WAAY,CAAC,KAAI,CAAC,IAAIzoT,EAAEyqF,OAAOoyB,WAAW58G,EAAEwqF,OAAOq2G,aAAa,GAAG,qBAAqBt9L,QAAQ,CAAC,IAAI+N,EAC7fk5E,OAAOxhD,qBAAqB,oBAAoBwhD,OAAO1hD,uBAAuBvlC,QAAQiC,MAAM,sJAAsJ,oBAAoB8L,GAAG/N,QAAQiC,MAAM,oJAAqJ,KAAIkkJ,GAAE,EAAG78C,EAAE,KAAK88C,GAAG,EAAEC,EAAE,EAAEC,EAAE,EAAEz+J,EAAQsnT,qBAAqB,WAAW,OAAOtnT,EAAQ2xP,gBAChgBlzF,CAAE,EAACjkF,EAAE,WAAY,EAACx6E,EAAQo9T,wBAAwB,SAAShmT,GAAG,EAAEA,GAAG,IAAIA,EAAEe,QAAQiC,MAAM,mHAAmHokJ,EAAE,EAAEpnJ,EAAE1D,KAAK2B,MAAM,IAAI+B,GAAG,CAAE,EAAC,IAAI2tI,EAAE,IAAIo4K,eAAe18J,EAAE1b,EAAEs4K,MAAMt4K,EAAEu4K,MAAMC,UAAU,WAAW,GAAG,OAAO97M,EAAE,CAAC,IAAIrqG,EAAEpX,EAAQ2xP,eAAelzF,EAAErnJ,EAAEonJ,EAAE,IAAI/8C,GAAE,EAAGrqG,GAAGqpJ,EAAE+8J,YAAY,OAAOl/J,GAAE,EAAG78C,EAAE,KAA4C,CAAtC,MAAMpqG,GAAG,MAAMopJ,EAAE+8J,YAAY,MAAMnmT,CAAG,CAAC,MAAKinJ,GAAE,CAAG,EAAC5hJ,EAAE,SAAStF,GAAGqqG,EAAErqG,EAAEknJ,IAAIA,GAAE,EAAGmC,EAAE+8J,YAAY,MAAO,EAAC7gT,EAAE,SAASvF,EAAEC,GAAGknJ,EACtf5pJ,GAAE,WAAWyC,EAAEpX,EAAQ2xP,eAAgB,GAACt6O,EAAG,EAACuF,EAAE,WAAWhI,EAAE2pJ,GAAGA,GAAG,CAAE,CAAC,UAASmC,EAAEtpJ,EAAEC,GAAG,IAAIC,EAAEF,EAAEjW,OAAOiW,EAAEvW,KAAKwW,GAAGD,EAAE,OAAO,CAAC,IAAIqF,EAAEnF,EAAE,IAAI,EAAEuB,EAAEzB,EAAEqF,GAAG,UAAG,IAAS5D,GAAG,EAAE8nJ,EAAE9nJ,EAAExB,IAA0B,MAAMD,EAA7BA,EAAEqF,GAAGpF,EAAED,EAAEE,GAAGuB,EAAEvB,EAAEmF,CAAe,CAAC,UAASmkJ,EAAExpJ,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,CAAE,CAClP,SAASopJ,EAAEppJ,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAIC,EAAEF,EAAE+7D,MAAM,GAAG77D,IAAID,EAAE,CAACD,EAAE,GAAGE,EAAEF,EAAE,IAAI,IAAIqF,EAAE,EAAE5D,EAAEzB,EAAEjW,OAAOsb,EAAE5D,GAAG,CAAC,IAAIpE,EAAE,GAAGgI,EAAE,GAAG,EAAEjI,EAAE4C,EAAE3C,GAAG+D,EAAE/D,EAAE,EAAE8I,EAAEnG,EAAEoB,GAAG,QAAG,IAAShE,GAAG,EAAEmsJ,EAAEnsJ,EAAE8C,QAAG,IAASiG,GAAG,EAAEojJ,EAAEpjJ,EAAE/I,IAAI4C,EAAEqF,GAAGc,EAAEnG,EAAEoB,GAAGlB,EAAEmF,EAAEjE,IAAIpB,EAAEqF,GAAGjI,EAAE4C,EAAE3C,GAAG6C,EAAEmF,EAAEhI,OAAQ,WAAG,IAAS8I,GAAG,EAAEojJ,EAAEpjJ,EAAEjG,IAA0B,MAAMF,EAA7BA,EAAEqF,GAAGc,EAAEnG,EAAEoB,GAAGlB,EAAEmF,EAAEjE,CAAO,CAAQ,CAAC,QAAOnB,CAAE,QAAO,IAAK,UAASspJ,EAAEvpJ,EAAEC,GAAG,IAAIC,EAAEF,EAAEqmT,UAAUpmT,EAAEomT,UAAU,OAAO,IAAInmT,EAAEA,EAAEF,EAAEsoB,GAAGroB,EAAEqoB,EAAG,KAAI6gI,EAAE,GAAGD,EAAE,GAAG3+C,EAAE,EAAE0+C,EAAE,KAAKl+C,EAAE,EAAEi+C,GAAE,EAAGD,GAAE,EAAGD,GAAE,EACja,SAASx+C,EAAEtqG,GAAG,IAAI,IAAIC,EAAEupJ,EAAEN,GAAG,OAAOjpJ,GAAG,CAAC,GAAG,OAAOA,EAAE+U,SAASo0I,EAAEF,OAAQ,MAAGjpJ,EAAEq0G,WAAWt0G,GAAgD,MAA9CopJ,EAAEF,GAAGjpJ,EAAEomT,UAAUpmT,EAAEqmT,eAAeh9J,EAAEH,EAAElpJ,EAAa,CAACA,EAAEupJ,EAAEN,EAAG,CAAC,UAASL,EAAE7oJ,GAAa,GAAV8oJ,GAAE,EAAGx+C,EAAEtqG,IAAO+oJ,EAAE,GAAG,OAAOS,EAAEL,GAAGJ,GAAE,EAAGzjJ,EAAEsjJ,OAAO,CAAC,IAAI3oJ,EAAEupJ,EAAEN,GAAG,OAAOjpJ,GAAGsF,EAAEsjJ,EAAE5oJ,EAAEq0G,UAAUt0G,EAAG,CAAC,CAC1P,SAAS4oJ,EAAE5oJ,EAAEC,GAAG8oJ,GAAE,EAAGD,IAAIA,GAAE,EAAGtjJ,KAAKwjJ,GAAE,EAAG,IAAI9oJ,EAAE6qG,EAAE,IAAS,IAALT,EAAErqG,GAAOgpJ,EAAEO,EAAEL,GAAG,OAAOF,MAAMA,EAAEq9J,eAAermT,IAAID,IAAIpX,EAAQsnT,yBAAyB,CAAC,IAAI7qS,EAAE4jJ,EAAEj0I,SAAS,GAAG,oBAAoB3P,EAAE,CAAC4jJ,EAAEj0I,SAAS,KAAK+1F,EAAEk+C,EAAEs9J,cAAc,IAAI9kT,EAAE4D,EAAE4jJ,EAAEq9J,gBAAgBrmT,GAAGA,EAAErX,EAAQ2xP,eAAe,oBAAoB94O,EAAEwnJ,EAAEj0I,SAASvT,EAAEwnJ,IAAIO,EAAEL,IAAIC,EAAED,GAAG7+C,EAAErqG,EAAG,MAAKmpJ,EAAED,GAAGF,EAAEO,EAAEL,EAAG,IAAG,OAAOF,EAAE,IAAI5rJ,GAAE,MAAO,CAAC,IAAID,EAAEosJ,EAAEN,GAAG,OAAO9rJ,GAAGmI,EAAEsjJ,EAAEzrJ,EAAEk3G,UAAUr0G,GAAG5C,GAAE,CAAG,QAAOA,CAA0B,CAA/Y,QAA+X4rJ,EAAE,KAAKl+C,EAAE7qG,EAAE8oJ,GAAE,CAAG,CAAC,KAAIL,EAAEvlF,EAAEx6E,EAAQyxP,sBAAsB,EACtezxP,EAAQ6nT,2BAA2B,EAAE7nT,EAAQioT,qBAAqB,EAAEjoT,EAAQ04S,wBAAwB,EAAE14S,EAAQ49T,mBAAmB,KAAK59T,EAAQg7S,8BAA8B,EAAEh7S,EAAQonT,wBAAwB,SAAShwS,GAAGA,EAAEgV,SAAS,IAAK,EAACpsB,EAAQ69T,2BAA2B,WAAW19J,GAAGC,IAAID,GAAE,EAAGzjJ,EAAEsjJ,GAAI,EAAChgK,EAAQ2nT,iCAAiC,WAAW,OAAOxlM,CAAE,EAACniH,EAAQ89T,8BAA8B,WAAW,OAAOl9J,EAAEL,EAAG,EACvavgK,EAAQ+9T,cAAc,SAAS3mT,GAAG,OAAO+qG,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI9qG,EAAE,EAAE,MAAM,QAAQA,EAAE8qG,EAAE,IAAI7qG,EAAE6qG,EAAEA,EAAE9qG,EAAE,IAAI,OAAOD,GAAgB,CAA3B,QAAuB+qG,EAAE7qG,CAAE,CAAC,EAACtX,EAAQg+T,wBAAwB,WAAY,EAACh+T,EAAQwnT,sBAAsBznJ,EAAE//J,EAAQwxP,yBAAyB,SAASp6O,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIE,EAAE6qG,EAAEA,EAAE/qG,EAAE,IAAI,OAAOC,GAAgB,CAA3B,QAAuB8qG,EAAE7qG,CAAE,CAAC,EACvWtX,EAAQy4S,0BAA0B,SAASrhS,EAAEC,EAAEC,GAAG,IAAImF,EAAEzc,EAAQ2xP,eAA8F,OAA/E,kBAAkBr6O,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEqoH,QAA6B,EAAEroH,EAAEmF,EAAEnF,EAAEmF,EAAGnF,EAAEmF,EAASrF,GAAG,KAAK,EAAE,IAAIyB,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAA2M,OAAjMzB,EAAE,CAACsoB,GAAGiiF,IAAIv1F,SAAS/U,EAAEsmT,cAAcvmT,EAAEs0G,UAAUp0G,EAAEomT,eAAvD7kT,EAAEvB,EAAEuB,EAAoE4kT,WAAW,GAAGnmT,EAAEmF,GAAGrF,EAAEqmT,UAAUnmT,EAAEopJ,EAAEJ,EAAElpJ,GAAG,OAAOwpJ,EAAEL,IAAInpJ,IAAIwpJ,EAAEN,KAAKJ,EAAEtjJ,IAAIsjJ,GAAE,EAAGvjJ,EAAEsjJ,EAAE3oJ,EAAEmF,MAAMrF,EAAEqmT,UAAU5kT,EAAE6nJ,EAAEH,EAAEnpJ,GAAG+oJ,GAAGC,IAAID,GAAE,EAAGzjJ,EAAEsjJ,KAAY5oJ,CAAE,EAC5dpX,EAAQi+T,sBAAsB,SAAS7mT,GAAG,IAAIC,EAAE8qG,EAAE,OAAO,WAAW,IAAI7qG,EAAE6qG,EAAEA,EAAE9qG,EAAE,IAAI,OAAOD,EAAEtW,MAAMqC,KAAKjC,UAAuB,CAA/C,QAA2CihH,EAAE7qG,CAAE,CAAC,CAAC,C,mCCXpHrX,EAAQ,IAAiB,IAAIyc,EAAEzc,EAAQ,GAAS0c,EAAE,MAA6B,GAAvB3c,EAAQ8hS,SAAS,MAAS,oBAAoBp+R,QAAQA,OAAOgqS,IAAI,CAAC,IAAI9wR,EAAElZ,OAAOgqS,IAAI/wR,EAAEC,EAAE,iBAAiB5c,EAAQ8hS,SAASllR,EAAE,iBAAkB,KAAInI,EAAEiI,EAAEiyR,mDAAmDH,kBAAkBh6R,EAAElU,OAAOgC,UAAUyC,eAAewa,EAAE,CAACje,KAAI,EAAG2kJ,KAAI,EAAG+nJ,QAAO,EAAGC,UAAS,GACrW,SAAS92R,EAAEG,EAAEF,EAAEojE,GAAG,IAAInjE,EAAEoF,EAAE,CAAC,EAAE5D,EAAE,KAAKvF,EAAE,KAAiF,IAAI+D,UAAhF,IAASmjE,IAAI3hE,EAAE,GAAG2hE,QAAG,IAASpjE,EAAE9V,MAAMuX,EAAE,GAAGzB,EAAE9V,UAAK,IAAS8V,EAAE6uI,MAAM3yI,EAAE8D,EAAE6uI,KAAc7uI,EAAE5C,EAAEvQ,KAAKmT,EAAEC,KAAKkI,EAAExa,eAAesS,KAAKoF,EAAEpF,GAAGD,EAAEC,IAAI,GAAGC,GAAGA,EAAEw4I,aAAa,IAAIz4I,KAAKD,EAAEE,EAAEw4I,kBAAe,IAASrzI,EAAEpF,KAAKoF,EAAEpF,GAAGD,EAAEC,IAAI,MAAM,CAAC62R,SAASvxR,EAAEhK,KAAK2E,EAAEhW,IAAIuX,EAAEotI,IAAI3yI,EAAEvR,MAAM0a,EAAE0xR,OAAO15R,EAAEk5F,QAAS,CAAA3tG,EAAQk+T,IAAI/mT,EAAEnX,EAAQm+T,KAAKhnT,C,+BCPvV,IAAI4qE,EAAQ9hF,EAAQ,IAChB0E,EAAO1E,EAAQ,KACfm+T,EAAQn+T,EAAQ,KAChBo+T,EAAcp+T,EAAQ,KA4B1B,IAAIq+T,EAnBJ,SAAStuE,EAAeuuE,GACtB,IAAIn8S,EAAU,IAAIg8S,EAAMG,GACpB58T,EAAWgD,EAAKy5T,EAAM97T,UAAU0yP,QAAS5yO,GAa7C,OAVA2/D,EAAMg7I,OAAOp7N,EAAUy8T,EAAM97T,UAAW8f,GAGxC2/D,EAAMg7I,OAAOp7N,EAAUygB,GAGvBzgB,EAASe,OAAS,SAAgB87T,GAChC,OAAOxuE,EAAequE,EAAYE,EAAeC,GAClD,EAEM78T,CACR,CAGWquP,CA3BG/vP,EAAQ,MA8BvBq+T,EAAMF,MAAQA,EAGdE,EAAMz8D,cAAgB5hQ,EAAQ,IAC9Bq+T,EAAMG,YAAcx+T,EAAQ,KAC5Bq+T,EAAMI,SAAWz+T,EAAQ,KACzBq+T,EAAMK,QAAU1+T,EAAQ,KAAcgjB,QACtCq7S,EAAMlgD,WAAan+Q,EAAQ,KAG3Bq+T,EAAMvpE,WAAa90P,EAAQ,IAG3Bq+T,EAAMM,OAASN,EAAMz8D,cAGrBy8D,EAAM95I,IAAM,SAAavB,GACvB,OAAO/xD,QAAQszD,IAAIvB,EACpB,EACDq7I,EAAMO,OAAS5+T,EAAQ,KAGvBq+T,EAAMQ,aAAe7+T,EAAQ,KAE7BF,EAAOC,QAAUs+T,EAGjBv+T,EAAOC,QAAQmG,QAAUm4T,C,+BC7DzB,IAAIv8O,EAAQ9hF,EAAQ,IAChBwnR,EAAWxnR,EAAQ,KACnB8+T,EAAqB9+T,EAAQ,KAC7B++T,EAAkB/+T,EAAQ,KAC1Bo+T,EAAcp+T,EAAQ,KACtBynR,EAAgBznR,EAAQ,KACxBg/T,EAAYh/T,EAAQ,KAEpBi/T,EAAaD,EAAUC,WAM3B,SAASd,EAAMI,GACbr7T,KAAK+oK,SAAWsyJ,EAChBr7T,KAAKg8T,aAAe,CAClBnqE,QAAS,IAAI+pE,EACb7sM,SAAU,IAAI6sM,EAEjB,CAODX,EAAM97T,UAAU0yP,QAAU,SAAiBoqE,EAAaz7I,GAG3B,kBAAhBy7I,GACTz7I,EAASA,GAAU,CAAC,GACbrgK,IAAM87S,EAEbz7I,EAASy7I,GAAe,CAAC,GAG3Bz7I,EAAS06I,EAAYl7T,KAAK+oK,SAAUyX,IAGzBvnF,OACTunF,EAAOvnF,OAASunF,EAAOvnF,OAAOt7E,cACrB3d,KAAK+oK,SAAS9vE,OACvBunF,EAAOvnF,OAASj5F,KAAK+oK,SAAS9vE,OAAOt7E,cAErC6iK,EAAOvnF,OAAS,MAGlB,IAAImiL,EAAe56F,EAAO46F,kBAEL1rQ,IAAjB0rQ,GACF0gD,EAAUI,cAAc9gD,EAAc,CACpCY,kBAAmB+/C,EAAW3gD,aAAa2gD,EAAWhjO,SACtDkjL,kBAAmB8/C,EAAW3gD,aAAa2gD,EAAWhjO,SACtD4qL,oBAAqBo4C,EAAW3gD,aAAa2gD,EAAWhjO,WACvD,GAIL,IAAIojO,EAA0B,GAC1BC,GAAiC,EACrCp8T,KAAKg8T,aAAanqE,QAAQ3zP,SAAQ,SAAoCm+T,GACjC,oBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQ97I,KAIrE47I,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwBvxQ,QAAQyxQ,EAAYG,UAAWH,EAAYI,UACpE,IAED,IAKI/8E,EALAg9E,EAA2B,GAO/B,GANA18T,KAAKg8T,aAAajtM,SAAS7wH,SAAQ,SAAkCm+T,GACnEK,EAAyBh/T,KAAK2+T,EAAYG,UAAWH,EAAYI,SAClE,KAIIL,EAAgC,CACnC,IAAIO,EAAQ,CAACd,OAAiBnsT,GAM9B,IAJA/M,MAAMxD,UAAUyrD,QAAQjtD,MAAMg/T,EAAOR,GACrCQ,EAAQA,EAAM1rN,OAAOyrN,GAErBh9E,EAAU3xH,QAAQC,QAAQwyD,GACnBm8I,EAAM3+T,QACX0hP,EAAUA,EAAQ5wH,KAAK6tM,EAAMrlO,QAASqlO,EAAMrlO,SAG9C,OAAOooJ,CACR,CAID,IADA,IAAIk9E,EAAYp8I,EACT27I,EAAwBn+T,QAAQ,CACrC,IAAI6+T,EAAcV,EAAwB7kO,QACtCwlO,EAAaX,EAAwB7kO,QACzC,IACEslO,EAAYC,EAAYD,EAIzB,CAHC,MAAO3lT,GACP6lT,EAAW7lT,GACX,KACD,CACF,CAED,IACEyoO,EAAUm8E,EAAgBe,EAG3B,CAFC,MAAO3lT,GACP,OAAO82G,QAAQE,OAAOh3G,EACvB,CAED,KAAOylT,EAAyB1+T,QAC9B0hP,EAAUA,EAAQ5wH,KAAK4tM,EAAyBplO,QAASolO,EAAyBplO,SAGpF,OAAOooJ,CACR,EAEDu7E,EAAM97T,UAAU49T,OAAS,SAAgBv8I,GACvCA,EAAS06I,EAAYl7T,KAAK+oK,SAAUyX,GACpC,IAAI+kG,EAAWhB,EAAc/jG,EAAOglG,QAAShlG,EAAOrgK,KACpD,OAAOmkQ,EAASiB,EAAU/kG,EAAO3qH,OAAQ2qH,EAAOuhG,iBACjD,EAGDnjM,EAAM1gF,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6B+6F,GAE/EgiO,EAAM97T,UAAU85F,GAAU,SAAS94E,EAAKqgK,GACtC,OAAOxgL,KAAK6xP,QAAQqpE,EAAY16I,GAAU,CAAC,EAAG,CAC5CvnF,OAAQA,EACR94E,IAAKA,EACLR,MAAO6gK,GAAU,CAAC,GAAG7gK,OAExB,CACF,IAEDi/D,EAAM1gF,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B+6F,GAGrE,SAAS+jO,EAAmBC,GAC1B,OAAO,SAAoB98S,EAAKR,EAAM6gK,GACpC,OAAOxgL,KAAK6xP,QAAQqpE,EAAY16I,GAAU,CAAC,EAAG,CAC5CvnF,OAAQA,EACRu1B,QAASyuM,EAAS,CAChB,eAAgB,uBACd,CAAC,EACL98S,IAAKA,EACLR,KAAMA,IAET,CACF,CAEDs7S,EAAM97T,UAAU85F,GAAU+jO,IAE1B/B,EAAM97T,UAAU85F,EAAS,QAAU+jO,GAAmB,EACvD,IAEDpgU,EAAOC,QAAUo+T,C,+BC7JjB,IAAIr8O,EAAQ9hF,EAAQ,IAEpB,SAAS8+T,IACP57T,KAAK2sH,SAAW,EACjB,CAUDivM,EAAmBz8T,UAAUgzO,IAAM,SAAaqqF,EAAWC,EAAUp4S,GAOnE,OANArkB,KAAK2sH,SAASjvH,KAAK,CACjB8+T,UAAWA,EACXC,SAAUA,EACVF,cAAal4S,GAAUA,EAAQk4S,YAC/BD,QAASj4S,EAAUA,EAAQi4S,QAAU,OAEhCt8T,KAAK2sH,SAAS3uH,OAAS,CAC/B,EAOD49T,EAAmBz8T,UAAU+9T,MAAQ,SAAe3gS,GAC9Cv8B,KAAK2sH,SAASpwF,KAChBv8B,KAAK2sH,SAASpwF,GAAM,KAEvB,EAUDq/R,EAAmBz8T,UAAUjB,QAAU,SAAiBiuJ,GACtDvtE,EAAM1gF,QAAQ8B,KAAK2sH,UAAU,SAAwBlzG,GACzC,OAANA,GACF0yI,EAAG1yI,EAEN,GACF,EAED7c,EAAOC,QAAU++T,C,+BCnDjB,IAAIh9O,EAAQ9hF,EAAQ,IAChBqgU,EAAgBrgU,EAAQ,KACxBy+T,EAAWz+T,EAAQ,KACnBisK,EAAWjsK,EAAQ,KACnB4hQ,EAAgB5hQ,EAAQ,IAK5B,SAASsgU,EAA6B58I,GAKpC,GAJIA,EAAOskG,aACTtkG,EAAOskG,YAAYu4C,mBAGjB78I,EAAOwkG,QAAUxkG,EAAOwkG,OAAO2B,QACjC,MAAM,IAAIjoB,CAEb,CAQD9hQ,EAAOC,QAAU,SAAyB2jL,GA8BxC,OA7BA48I,EAA6B58I,GAG7BA,EAAOhyD,QAAUgyD,EAAOhyD,SAAW,CAAC,EAGpCgyD,EAAO7gK,KAAOw9S,EAAcr8T,KAC1B0/K,EACAA,EAAO7gK,KACP6gK,EAAOhyD,QACPgyD,EAAO+6F,kBAIT/6F,EAAOhyD,QAAU5vC,EAAMxrC,MACrBotI,EAAOhyD,QAAQjxE,QAAU,CAAC,EAC1BijI,EAAOhyD,QAAQgyD,EAAOvnF,SAAW,CAAC,EAClCunF,EAAOhyD,SAGT5vC,EAAM1gF,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2B+6F,UAClBunF,EAAOhyD,QAAQv1B,EACvB,KAGWunF,EAAO8zC,SAAWvrD,EAASurD,SAE1B9zC,GAAQ1xD,MAAK,SAA6BC,GAWvD,OAVAquM,EAA6B58I,GAG7BzxD,EAASpvG,KAAOw9S,EAAcr8T,KAC5B0/K,EACAzxD,EAASpvG,KACTovG,EAASP,QACTgyD,EAAOu7F,mBAGFhtJ,CACR,IAAE,SAA4BuuM,GAe7B,OAdK/B,EAAS+B,KACZF,EAA6B58I,GAGzB88I,GAAUA,EAAOvuM,WACnBuuM,EAAOvuM,SAASpvG,KAAOw9S,EAAcr8T,KACnC0/K,EACA88I,EAAOvuM,SAASpvG,KAChB29S,EAAOvuM,SAASP,QAChBgyD,EAAOu7F,qBAKNhuJ,QAAQE,OAAOqvM,EACvB,GACF,C,+BCpFD,IAAI1+O,EAAQ9hF,EAAQ,IAChBisK,EAAWjsK,EAAQ,KAUvBF,EAAOC,QAAU,SAAuB8iB,EAAM6uG,EAAS+uM,GACrD,IAAIt+S,EAAUjf,MAAQ+oK,EAMtB,OAJAnqF,EAAM1gF,QAAQq/T,GAAK,SAAmBpxK,GACpCxsI,EAAOwsI,EAAGrrJ,KAAKme,EAASU,EAAM6uG,EAC/B,IAEM7uG,CACR,C,+BCnBD,IAAIi/D,EAAQ9hF,EAAQ,IAEpBF,EAAOC,QAAU,SAA6B2xH,EAASgvM,GACrD5+O,EAAM1gF,QAAQswH,GAAS,SAAuB/uH,EAAOqc,GAC/CA,IAAS0hT,GAAkB1hT,EAAK9K,gBAAkBwsT,EAAexsT,gBACnEw9G,EAAQgvM,GAAkB/9T,SACnB+uH,EAAQ1yG,GAElB,GACF,C,gCCXD,YAUA,IAAI2hT,EAAS3gU,EAAQ,KACjB4gU,EAAU5gU,EAAQ,KAClB8F,EAAU9F,EAAQ,KAmDtB,SAAS6gU,IACP,OAAO55C,EAAO65C,oBACV,WACA,UACL,CAED,SAASpiR,EAAcqiR,EAAM7/T,GAC3B,GAAI2/T,IAAe3/T,EACjB,MAAM,IAAI8/T,WAAW,8BAcvB,OAZI/5C,EAAO65C,qBAETC,EAAO,IAAI1iT,WAAWnd,IACjByD,UAAYsiR,EAAO5kR,WAGX,OAAT0+T,IACFA,EAAO,IAAI95C,EAAO/lR,IAEpB6/T,EAAK7/T,OAASA,GAGT6/T,CACR,CAYD,SAAS95C,EAAQthR,EAAKs7T,EAAkB//T,GACtC,IAAK+lR,EAAO65C,uBAAyB59T,gBAAgB+jR,GACnD,OAAO,IAAIA,EAAOthR,EAAKs7T,EAAkB//T,GAI3C,GAAmB,kBAARyE,EAAkB,CAC3B,GAAgC,kBAArBs7T,EACT,MAAM,IAAI3oT,MACR,qEAGJ,OAAO4oT,EAAYh+T,KAAMyC,EAC1B,CACD,OAAO2+G,EAAKphH,KAAMyC,EAAKs7T,EAAkB//T,EAC1C,CAUD,SAASojH,EAAMy8M,EAAMp+T,EAAOs+T,EAAkB//T,GAC5C,GAAqB,kBAAVyB,EACT,MAAM,IAAIf,UAAU,yCAGtB,MAA2B,qBAAhB+iH,aAA+BhiH,aAAiBgiH,YA6H7D,SAA0Bo8M,EAAM5tT,EAAOguT,EAAYjgU,GAGjD,GAFAiS,EAAM4/G,WAEFouM,EAAa,GAAKhuT,EAAM4/G,WAAaouM,EACvC,MAAM,IAAIH,WAAW,6BAGvB,GAAI7tT,EAAM4/G,WAAaouM,GAAcjgU,GAAU,GAC7C,MAAM,IAAI8/T,WAAW,6BAIrB7tT,OADiBP,IAAfuuT,QAAuCvuT,IAAX1R,EACtB,IAAImd,WAAWlL,QACHP,IAAX1R,EACD,IAAImd,WAAWlL,EAAOguT,GAEtB,IAAI9iT,WAAWlL,EAAOguT,EAAYjgU,GAGxC+lR,EAAO65C,qBAETC,EAAO5tT,GACFxO,UAAYsiR,EAAO5kR,UAGxB0+T,EAAOK,EAAcL,EAAM5tT,GAE7B,OAAO4tT,CACR,CAxJUM,CAAgBN,EAAMp+T,EAAOs+T,EAAkB//T,GAGnC,kBAAVyB,EAwFb,SAAqBo+T,EAAM5gT,EAAQkE,GACT,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAK4iQ,EAAOq6C,WAAWj9S,GACrB,MAAM,IAAIziB,UAAU,8CAGtB,IAAIV,EAAwC,EAA/B6xH,EAAW5yG,EAAQkE,GAG5Bm5O,GAFJujE,EAAOriR,EAAaqiR,EAAM7/T,IAERqgU,MAAMphT,EAAQkE,GAE5Bm5O,IAAWt8P,IAIb6/T,EAAOA,EAAK3tT,MAAM,EAAGoqP,IAGvB,OAAOujE,CACR,CA7GUS,CAAWT,EAAMp+T,EAAOs+T,GAsJnC,SAAqBF,EAAM36T,GACzB,GAAI6gR,EAAO7qD,SAASh2N,GAAM,CACxB,IAAIinB,EAA4B,EAAtB0kR,EAAQ3rS,EAAIlF,QAGtB,OAAoB,KAFpB6/T,EAAOriR,EAAaqiR,EAAM1zS,IAEjBnsB,QAITkF,EAAIyZ,KAAKkhT,EAAM,EAAG,EAAG1zS,GAHZ0zS,CAKV,CAED,GAAI36T,EAAK,CACP,GAA4B,qBAAhBu+G,aACRv+G,EAAI0Y,kBAAkB6lG,aAAgB,WAAYv+G,EACpD,MAA0B,kBAAfA,EAAIlF,SA+8CL+4I,EA/8CkC7zI,EAAIlF,UAg9CrC+4I,EA/8CFv7F,EAAaqiR,EAAM,GAErBK,EAAcL,EAAM36T,GAG7B,GAAiB,WAAbA,EAAIsM,MAAqB5M,EAAQM,EAAIyc,MACvC,OAAOu+S,EAAcL,EAAM36T,EAAIyc,KAElC,CAs8CH,IAAgBo3H,EAp8Cd,MAAM,IAAIr4I,UAAU,qFACrB,CA/KQ8oK,CAAWq2J,EAAMp+T,EACzB,CA2BD,SAAS8+T,EAAY/gT,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAI9e,UAAU,oCACf,GAAI8e,EAAO,EAChB,MAAM,IAAIsgT,WAAW,uCAExB,CA0BD,SAASE,EAAaH,EAAMrgT,GAG1B,GAFA+gT,EAAW/gT,GACXqgT,EAAOriR,EAAaqiR,EAAMrgT,EAAO,EAAI,EAAoB,EAAhBqxR,EAAQrxR,KAC5CumQ,EAAO65C,oBACV,IAAK,IAAI9/T,EAAI,EAAGA,EAAI0f,IAAQ1f,EAC1B+/T,EAAK//T,GAAK,EAGd,OAAO+/T,CACR,CAuCD,SAASK,EAAeL,EAAM5tT,GAC5B,IAAIjS,EAASiS,EAAMjS,OAAS,EAAI,EAA4B,EAAxB6wS,EAAQ5+R,EAAMjS,QAClD6/T,EAAOriR,EAAaqiR,EAAM7/T,GAC1B,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAC/B+/T,EAAK//T,GAAgB,IAAXmS,EAAMnS,GAElB,OAAO+/T,CACR,CA8DD,SAAShvB,EAAS7wS,GAGhB,GAAIA,GAAU2/T,IACZ,MAAM,IAAIG,WAAW,0DACaH,IAAa76T,SAAS,IAAM,UAEhE,OAAgB,EAAT9E,CACR,CAqFD,SAAS6xH,EAAY5yG,EAAQkE,GAC3B,GAAI4iQ,EAAO7qD,SAASj8M,GAClB,OAAOA,EAAOjf,OAEhB,GAA2B,qBAAhByjH,aAA6D,oBAAvBA,YAAYC,SACxDD,YAAYC,OAAOzkG,IAAWA,aAAkBwkG,aACnD,OAAOxkG,EAAO4yG,WAEM,kBAAX5yG,IACTA,EAAS,GAAKA,GAGhB,IAAIkN,EAAMlN,EAAOjf,OACjB,GAAY,IAARmsB,EAAW,OAAO,EAItB,IADA,IAAIq0S,GAAc,IAEhB,OAAQr9S,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOgJ,EACT,IAAK,OACL,IAAK,QACL,UAAKza,EACH,OAAO+uT,EAAYxhT,GAAQjf,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAANmsB,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOu0S,EAAczhT,GAAQjf,OAC/B,QACE,GAAIwgU,EAAa,OAAOC,EAAYxhT,GAAQjf,OAC5CmjB,GAAY,GAAKA,GAAUxD,cAC3B6gT,GAAc,EAGrB,CAGD,SAASG,EAAcx9S,EAAUypB,EAAOoN,GACtC,IAAIwmR,GAAc,EAclB,SALc9uT,IAAVk7B,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ5qC,KAAKhC,OACf,MAAO,GAOT,SAJY0R,IAARsoC,GAAqBA,EAAMh4C,KAAKhC,UAClCg6C,EAAMh4C,KAAKhC,QAGTg6C,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTpN,KAAW,GAGT,MAAO,GAKT,IAFKzpB,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOy9S,EAAS5+T,KAAM4qC,EAAOoN,GAE/B,IAAK,OACL,IAAK,QACH,OAAO6mR,EAAU7+T,KAAM4qC,EAAOoN,GAEhC,IAAK,QACH,OAAO8mR,EAAW9+T,KAAM4qC,EAAOoN,GAEjC,IAAK,SACL,IAAK,SACH,OAAO+mR,EAAY/+T,KAAM4qC,EAAOoN,GAElC,IAAK,SACH,OAAOgnR,EAAYh/T,KAAM4qC,EAAOoN,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOinR,EAAaj/T,KAAM4qC,EAAOoN,GAEnC,QACE,GAAIwmR,EAAa,MAAM,IAAI9/T,UAAU,qBAAuByiB,GAC5DA,GAAYA,EAAW,IAAIxD,cAC3B6gT,GAAc,EAGrB,CAMD,SAASU,EAAMhrT,EAAG7C,EAAGC,GACnB,IAAIxT,EAAIoW,EAAE7C,GACV6C,EAAE7C,GAAK6C,EAAE5C,GACT4C,EAAE5C,GAAKxT,CACR,CAkID,SAASqhU,EAAsBvjT,EAAQm7H,EAAKknL,EAAY98S,EAAUjd,GAEhE,GAAsB,IAAlB0X,EAAO5d,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfigU,GACT98S,EAAW88S,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACVpyR,MAAMoyR,KAERA,EAAa/5T,EAAM,EAAK0X,EAAO5d,OAAS,GAItCigU,EAAa,IAAGA,EAAariT,EAAO5d,OAASigU,GAC7CA,GAAcriT,EAAO5d,OAAQ,CAC/B,GAAIkG,EAAK,OAAQ,EACZ+5T,EAAariT,EAAO5d,OAAS,CACnC,MAAM,GAAIigU,EAAa,EAAG,CACzB,IAAI/5T,EACC,OAAQ,EADJ+5T,EAAa,CAEvB,CAQD,GALmB,kBAARlnL,IACTA,EAAMgtI,EAAO3iK,KAAK21B,EAAK51H,IAIrB4iQ,EAAO7qD,SAASniF,GAElB,OAAmB,IAAfA,EAAI/4I,QACE,EAEHohU,EAAaxjT,EAAQm7H,EAAKknL,EAAY98S,EAAUjd,GAClD,GAAmB,kBAAR6yI,EAEhB,OADAA,GAAY,IACRgtI,EAAO65C,qBACiC,oBAAjCziT,WAAWhc,UAAUiD,QAC1B8B,EACKiX,WAAWhc,UAAUiD,QAAQtB,KAAK8a,EAAQm7H,EAAKknL,GAE/C9iT,WAAWhc,UAAUo1H,YAAYzzH,KAAK8a,EAAQm7H,EAAKknL,GAGvDmB,EAAaxjT,EAAQ,CAAEm7H,GAAOknL,EAAY98S,EAAUjd,GAG7D,MAAM,IAAIxF,UAAU,uCACrB,CAED,SAAS0gU,EAAch/T,EAAK22I,EAAKknL,EAAY98S,EAAUjd,GACrD,IA0BIpG,EA1BAuhU,EAAY,EACZC,EAAYl/T,EAAIpC,OAChBuhU,EAAYxoL,EAAI/4I,OAEpB,QAAiB0R,IAAbyR,IAEe,UADjBA,EAAWqvB,OAAOrvB,GAAUxD,gBACY,UAAbwD,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI/gB,EAAIpC,OAAS,GAAK+4I,EAAI/4I,OAAS,EACjC,OAAQ,EAEVqhU,EAAY,EACZC,GAAa,EACbC,GAAa,EACbtB,GAAc,CACf,CAGH,SAAStuM,EAAM6vM,EAAK1hU,GAClB,OAAkB,IAAduhU,EACKG,EAAI1hU,GAEJ0hU,EAAIC,aAAa3hU,EAAIuhU,EAE/B,CAGD,GAAIn7T,EAAK,CACP,IAAIw7T,GAAc,EAClB,IAAK5hU,EAAImgU,EAAYngU,EAAIwhU,EAAWxhU,IAClC,GAAI6xH,EAAKvvH,EAAKtC,KAAO6xH,EAAKonB,GAAqB,IAAhB2oL,EAAoB,EAAI5hU,EAAI4hU,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa5hU,GAChCA,EAAI4hU,EAAa,IAAMH,EAAW,OAAOG,EAAaL,OAEtC,IAAhBK,IAAmB5hU,GAAKA,EAAI4hU,GAChCA,GAAc,CAGnB,MAEC,IADIzB,EAAasB,EAAYD,IAAWrB,EAAaqB,EAAYC,GAC5DzhU,EAAImgU,EAAYngU,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAI6hU,GAAQ,EACHjvS,EAAI,EAAGA,EAAI6uS,EAAW7uS,IAC7B,GAAIi/F,EAAKvvH,EAAKtC,EAAI4yB,KAAOi/F,EAAKonB,EAAKrmH,GAAI,CACrCivS,GAAQ,EACR,KACD,CAEH,GAAIA,EAAO,OAAO7hU,CACnB,CAGH,OAAQ,CACT,CAcD,SAAS8hU,EAAUJ,EAAKviT,EAAQvG,EAAQ1Y,GACtC0Y,EAAS2Q,OAAO3Q,IAAW,EAC3B,IAAIwnK,EAAYshJ,EAAIxhU,OAAS0Y,EACxB1Y,GAGHA,EAASqpB,OAAOrpB,IACHkgL,IACXlgL,EAASkgL,GAJXlgL,EAASkgL,EASX,IAAI2hJ,EAAS5iT,EAAOjf,OACpB,GAAI6hU,EAAS,IAAM,EAAG,MAAM,IAAInhU,UAAU,sBAEtCV,EAAS6hU,EAAS,IACpB7hU,EAAS6hU,EAAS,GAEpB,IAAK,IAAI/hU,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAC/B,IAAIk2K,EAAS12J,SAASL,EAAO8qN,OAAW,EAAJjqO,EAAO,GAAI,IAC/C,GAAI+tC,MAAMmoI,GAAS,OAAOl2K,EAC1B0hU,EAAI9oT,EAAS5Y,GAAKk2K,CACnB,CACD,OAAOl2K,CACR,CAED,SAASgiU,EAAWN,EAAKviT,EAAQvG,EAAQ1Y,GACvC,OAAO+hU,EAAWtB,EAAYxhT,EAAQuiT,EAAIxhU,OAAS0Y,GAAS8oT,EAAK9oT,EAAQ1Y,EAC1E,CAED,SAASgiU,EAAYR,EAAKviT,EAAQvG,EAAQ1Y,GACxC,OAAO+hU,EAq6BT,SAAuBvzK,GAErB,IADA,IAAIyzK,EAAY,GACPniU,EAAI,EAAGA,EAAI0uJ,EAAIxuJ,SAAUF,EAEhCmiU,EAAUviU,KAAyB,IAApB8uJ,EAAIutE,WAAWj8N,IAEhC,OAAOmiU,CACR,CA56BmBC,CAAajjT,GAASuiT,EAAK9oT,EAAQ1Y,EACtD,CAED,SAASmiU,EAAaX,EAAKviT,EAAQvG,EAAQ1Y,GACzC,OAAOgiU,EAAWR,EAAKviT,EAAQvG,EAAQ1Y,EACxC,CAED,SAASoiU,EAAaZ,EAAKviT,EAAQvG,EAAQ1Y,GACzC,OAAO+hU,EAAWrB,EAAczhT,GAASuiT,EAAK9oT,EAAQ1Y,EACvD,CAED,SAASqiU,EAAWb,EAAKviT,EAAQvG,EAAQ1Y,GACvC,OAAO+hU,EAk6BT,SAAyBvzK,EAAK7qF,GAG5B,IAFA,IAAIxtD,EAAGoiJ,EAAIC,EACPypK,EAAY,GACPniU,EAAI,EAAGA,EAAI0uJ,EAAIxuJ,WACjB2jE,GAAS,GAAK,KADa7jE,EAIhCy4J,GADApiJ,EAAIq4I,EAAIutE,WAAWj8N,KACT,EACV04J,EAAKriJ,EAAI,IACT8rT,EAAUviU,KAAK84J,GACfypK,EAAUviU,KAAK64J,GAGjB,OAAO0pK,CACR,CAh7BmBK,CAAerjT,EAAQuiT,EAAIxhU,OAAS0Y,GAAS8oT,EAAK9oT,EAAQ1Y,EAC7E,CAiFD,SAASghU,EAAaQ,EAAK50R,EAAOoN,GAChC,OAAc,IAAVpN,GAAeoN,IAAQwnR,EAAIxhU,OACtBy/T,EAAO8C,cAAcf,GAErB/B,EAAO8C,cAAcf,EAAItvT,MAAM06B,EAAOoN,GAEhD,CAED,SAAS6mR,EAAWW,EAAK50R,EAAOoN,GAC9BA,EAAMznC,KAAKW,IAAIsuT,EAAIxhU,OAAQg6C,GAI3B,IAHA,IAAIo/E,EAAM,GAENt5H,EAAI8sC,EACD9sC,EAAIk6C,GAAK,CACd,IAQMwoR,EAAYC,EAAWC,EAAYC,EARrCC,EAAYpB,EAAI1hU,GAChB+iU,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAI9iU,EAAIgjU,GAAoB9oR,EAG1B,OAAQ8oR,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEyB,OAAV,KADlBJ,EAAahB,EAAI1hU,EAAI,OAEnB6iU,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAahB,EAAI1hU,EAAI,GACrB2iU,EAAYjB,EAAI1hU,EAAI,GACQ,OAAV,IAAb0iU,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAahB,EAAI1hU,EAAI,GACrB2iU,EAAYjB,EAAI1hU,EAAI,GACpB4iU,EAAalB,EAAI1hU,EAAI,GACO,OAAV,IAAb0iU,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CE,EAAYF,GAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbzpM,EAAI15H,KAAKmjU,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBzpM,EAAI15H,KAAKmjU,GACT/iU,GAAKgjU,CACN,CAED,OAQF,SAAgCC,GAC9B,IAAI52S,EAAM42S,EAAW/iU,OACrB,GAAImsB,GAAO62S,EACT,OAAOxwR,OAAO4jF,aAAaz2H,MAAM6yC,OAAQuwR,GAI3C,IAAI3pM,EAAM,GACNt5H,EAAI,EACR,KAAOA,EAAIqsB,GACTitG,GAAO5mF,OAAO4jF,aAAaz2H,MACzB6yC,OACAuwR,EAAW7wT,MAAMpS,EAAGA,GAAKkjU,IAG7B,OAAO5pM,CACR,CAxBQ6pM,CAAsB7pM,EAC9B,CA/8BDv6H,EAAQknR,OAASA,EACjBlnR,EAAQqkU,WAoTR,SAAqBljU,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAO+lR,EAAOo9C,OAAOnjU,EACtB,EAxTDnB,EAAQukU,kBAAoB,GA0B5Br9C,EAAO65C,yBAAqDluT,IAA/B69G,EAAOqwM,oBAChCrwM,EAAOqwM,oBAQX,WACE,IACE,IAAIx9T,EAAM,IAAI+a,WAAW,GAEzB,OADA/a,EAAIqB,UAAY,CAACA,UAAW0Z,WAAWhc,UAAW8gQ,IAAK,WAAc,OAAO,EAAI,GAC3D,KAAd7/P,EAAI6/P,OACiB,oBAAjB7/P,EAAIy7C,UACuB,IAAlCz7C,EAAIy7C,SAAS,EAAG,GAAGg0E,UAGxB,CAFC,MAAOn6G,GACP,OAAO,CACR,CACF,CAjBG2rT,GAKJxkU,EAAQ8gU,WAAaA,IAkErB55C,EAAOu9C,SAAW,KAGlBv9C,EAAOw9C,SAAW,SAAUnhU,GAE1B,OADAA,EAAIqB,UAAYsiR,EAAO5kR,UAChBiB,CACR,EA0BD2jR,EAAO3iK,KAAO,SAAU3hH,EAAOs+T,EAAkB//T,GAC/C,OAAOojH,EAAK,KAAM3hH,EAAOs+T,EAAkB//T,EAC5C,EAEG+lR,EAAO65C,sBACT75C,EAAO5kR,UAAUsC,UAAY0Z,WAAWhc,UACxC4kR,EAAOtiR,UAAY0Z,WACG,qBAAX5a,QAA0BA,OAAOihU,SACxCz9C,EAAOxjR,OAAOihU,WAAaz9C,GAE7B5mR,OAAOmB,eAAeylR,EAAQxjR,OAAOihU,QAAS,CAC5C/hU,MAAO,KACPX,cAAc,KAiCpBilR,EAAOo9C,MAAQ,SAAU3jT,EAAMo5C,EAAMz1C,GACnC,OArBF,SAAgB08S,EAAMrgT,EAAMo5C,EAAMz1C,GAEhC,OADAo9S,EAAW/gT,GACPA,GAAQ,EACHg+B,EAAaqiR,EAAMrgT,QAEf9N,IAATknD,EAIyB,kBAAbz1C,EACVq6B,EAAaqiR,EAAMrgT,GAAMo5C,KAAKA,EAAMz1C,GACpCq6B,EAAaqiR,EAAMrgT,GAAMo5C,KAAKA,GAE7Bpb,EAAaqiR,EAAMrgT,EAC3B,CAOQ2jT,CAAM,KAAM3jT,EAAMo5C,EAAMz1C,EAChC,EAgBD4iQ,EAAOi6C,YAAc,SAAUxgT,GAC7B,OAAOwgT,EAAY,KAAMxgT,EAC1B,EAIDumQ,EAAO09C,gBAAkB,SAAUjkT,GACjC,OAAOwgT,EAAY,KAAMxgT,EAC1B,EAgHDumQ,EAAO7qD,SAAW,SAAmBhlN,GACnC,QAAe,MAALA,IAAaA,EAAEwtT,UAC1B,EAED39C,EAAOtoG,QAAU,SAAkBxnK,EAAGC,GACpC,IAAK6vQ,EAAO7qD,SAASjlN,KAAO8vQ,EAAO7qD,SAAShlN,GAC1C,MAAM,IAAIxV,UAAU,6BAGtB,GAAIuV,IAAMC,EAAG,OAAO,EAKpB,IAHA,IAAI1C,EAAIyC,EAAEjW,OACNyT,EAAIyC,EAAElW,OAEDF,EAAI,EAAGqsB,EAAM5Z,KAAKW,IAAIM,EAAGC,GAAI3T,EAAIqsB,IAAOrsB,EAC/C,GAAImW,EAAEnW,KAAOoW,EAAEpW,GAAI,CACjB0T,EAAIyC,EAAEnW,GACN2T,EAAIyC,EAAEpW,GACN,KACD,CAGH,OAAI0T,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACR,EAEDuyQ,EAAOq6C,WAAa,SAAqBj9S,GACvC,OAAQqvB,OAAOrvB,GAAUxD,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,EAEZ,EAEDomQ,EAAO9yK,OAAS,SAAiB//B,EAAMlzE,GACrC,IAAK4E,EAAQsuE,GACX,MAAM,IAAIxyE,UAAU,+CAGtB,GAAoB,IAAhBwyE,EAAKlzE,OACP,OAAO+lR,EAAOo9C,MAAM,GAGtB,IAAIrjU,EACJ,QAAe4R,IAAX1R,EAEF,IADAA,EAAS,EACJF,EAAI,EAAGA,EAAIozE,EAAKlzE,SAAUF,EAC7BE,GAAUkzE,EAAKpzE,GAAGE,OAItB,IAAI4d,EAASmoQ,EAAOi6C,YAAYhgU,GAC5Bm5K,EAAM,EACV,IAAKr5K,EAAI,EAAGA,EAAIozE,EAAKlzE,SAAUF,EAAG,CAChC,IAAI0hU,EAAMtuP,EAAKpzE,GACf,IAAKimR,EAAO7qD,SAASsmG,GACnB,MAAM,IAAI9gU,UAAU,+CAEtB8gU,EAAI7iT,KAAKf,EAAQu7J,GACjBA,GAAOqoJ,EAAIxhU,MACZ,CACD,OAAO4d,CACR,EA6CDmoQ,EAAOl0J,WAAaA,EA0EpBk0J,EAAO5kR,UAAUuiU,WAAY,EAQ7B39C,EAAO5kR,UAAUwiU,OAAS,WACxB,IAAIx3S,EAAMnqB,KAAKhC,OACf,GAAImsB,EAAM,IAAM,EACd,MAAM,IAAI2zS,WAAW,6CAEvB,IAAK,IAAIhgU,EAAI,EAAGA,EAAIqsB,EAAKrsB,GAAK,EAC5BohU,EAAKl/T,KAAMlC,EAAGA,EAAI,GAEpB,OAAOkC,IACR,EAED+jR,EAAO5kR,UAAUyiU,OAAS,WACxB,IAAIz3S,EAAMnqB,KAAKhC,OACf,GAAImsB,EAAM,IAAM,EACd,MAAM,IAAI2zS,WAAW,6CAEvB,IAAK,IAAIhgU,EAAI,EAAGA,EAAIqsB,EAAKrsB,GAAK,EAC5BohU,EAAKl/T,KAAMlC,EAAGA,EAAI,GAClBohU,EAAKl/T,KAAMlC,EAAI,EAAGA,EAAI,GAExB,OAAOkC,IACR,EAED+jR,EAAO5kR,UAAU0iU,OAAS,WACxB,IAAI13S,EAAMnqB,KAAKhC,OACf,GAAImsB,EAAM,IAAM,EACd,MAAM,IAAI2zS,WAAW,6CAEvB,IAAK,IAAIhgU,EAAI,EAAGA,EAAIqsB,EAAKrsB,GAAK,EAC5BohU,EAAKl/T,KAAMlC,EAAGA,EAAI,GAClBohU,EAAKl/T,KAAMlC,EAAI,EAAGA,EAAI,GACtBohU,EAAKl/T,KAAMlC,EAAI,EAAGA,EAAI,GACtBohU,EAAKl/T,KAAMlC,EAAI,EAAGA,EAAI,GAExB,OAAOkC,IACR,EAED+jR,EAAO5kR,UAAU2D,SAAW,WAC1B,IAAI9E,EAAuB,EAAdgC,KAAKhC,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBD,UAAUC,OAAqB6gU,EAAU7+T,KAAM,EAAGhC,GAC/C2gU,EAAahhU,MAAMqC,KAAMjC,UACjC,EAEDgmR,EAAO5kR,UAAUkxB,OAAS,SAAiBnc,GACzC,IAAK6vQ,EAAO7qD,SAAShlN,GAAI,MAAM,IAAIxV,UAAU,6BAC7C,OAAIsB,OAASkU,GACsB,IAA5B6vQ,EAAOtoG,QAAQz7K,KAAMkU,EAC7B,EAED6vQ,EAAO5kR,UAAU2iU,QAAU,WACzB,IAAIt1K,EAAM,GACNr7I,EAAMtU,EAAQukU,kBAKlB,OAJIphU,KAAKhC,OAAS,IAChBwuJ,EAAMxsJ,KAAK8C,SAAS,MAAO,EAAGqO,GAAK4xD,MAAM,SAAShgE,KAAK,KACnD/C,KAAKhC,OAASmT,IAAKq7I,GAAO,UAEzB,WAAaA,EAAM,GAC3B,EAEDu3H,EAAO5kR,UAAUs8K,QAAU,SAAkB59K,EAAQ+sC,EAAOoN,EAAK+pR,EAAWC,GAC1E,IAAKj+C,EAAO7qD,SAASr7N,GACnB,MAAM,IAAIa,UAAU,6BAgBtB,QAbcgR,IAAVk7B,IACFA,EAAQ,QAEEl7B,IAARsoC,IACFA,EAAMn6C,EAASA,EAAOG,OAAS,QAEf0R,IAAdqyT,IACFA,EAAY,QAEEryT,IAAZsyT,IACFA,EAAUhiU,KAAKhC,QAGb4sC,EAAQ,GAAKoN,EAAMn6C,EAAOG,QAAU+jU,EAAY,GAAKC,EAAUhiU,KAAKhC,OACtE,MAAM,IAAI8/T,WAAW,sBAGvB,GAAIiE,GAAaC,GAAWp3R,GAASoN,EACnC,OAAO,EAET,GAAI+pR,GAAaC,EACf,OAAQ,EAEV,GAAIp3R,GAASoN,EACX,OAAO,EAQT,GAAIh4C,OAASnC,EAAQ,OAAO,EAS5B,IAPA,IAAI2T,GAJJwwT,KAAa,IADbD,KAAe,GAMXtwT,GAPJumC,KAAS,IADTpN,KAAW,GASPzgB,EAAM5Z,KAAKW,IAAIM,EAAGC,GAElBwwT,EAAWjiU,KAAKkQ,MAAM6xT,EAAWC,GACjCE,EAAarkU,EAAOqS,MAAM06B,EAAOoN,GAE5Bl6C,EAAI,EAAGA,EAAIqsB,IAAOrsB,EACzB,GAAImkU,EAASnkU,KAAOokU,EAAWpkU,GAAI,CACjC0T,EAAIywT,EAASnkU,GACb2T,EAAIywT,EAAWpkU,GACf,KACD,CAGH,OAAI0T,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,CACR,EA4HDuyQ,EAAO5kR,UAAUwyK,SAAW,SAAmB56B,EAAKknL,EAAY98S,GAC9D,OAAoD,IAA7CnhB,KAAKoC,QAAQ20I,EAAKknL,EAAY98S,EACtC,EAED4iQ,EAAO5kR,UAAUiD,QAAU,SAAkB20I,EAAKknL,EAAY98S,GAC5D,OAAOg+S,EAAqBn/T,KAAM+2I,EAAKknL,EAAY98S,GAAU,EAC9D,EAED4iQ,EAAO5kR,UAAUo1H,YAAc,SAAsBwiB,EAAKknL,EAAY98S,GACpE,OAAOg+S,EAAqBn/T,KAAM+2I,EAAKknL,EAAY98S,GAAU,EAC9D,EAiDD4iQ,EAAO5kR,UAAUk/T,MAAQ,SAAgBphT,EAAQvG,EAAQ1Y,EAAQmjB,GAE/D,QAAezR,IAAXgH,EACFyK,EAAW,OACXnjB,EAASgC,KAAKhC,OACd0Y,EAAS,OAEJ,QAAehH,IAAX1R,GAA0C,kBAAX0Y,EACxCyK,EAAWzK,EACX1Y,EAASgC,KAAKhC,OACd0Y,EAAS,MAEJ,KAAI42B,SAAS52B,GAWlB,MAAM,IAAItB,MACR,2EAXFsB,GAAkB,EACd42B,SAAStvC,IACXA,GAAkB,OACD0R,IAAbyR,IAAwBA,EAAW,UAEvCA,EAAWnjB,EACXA,OAAS0R,EAOZ,CAED,IAAIwuK,EAAYl+K,KAAKhC,OAAS0Y,EAG9B,SAFehH,IAAX1R,GAAwBA,EAASkgL,KAAWlgL,EAASkgL,GAEpDjhK,EAAOjf,OAAS,IAAMA,EAAS,GAAK0Y,EAAS,IAAOA,EAAS1W,KAAKhC,OACrE,MAAM,IAAI8/T,WAAW,0CAGlB38S,IAAUA,EAAW,QAG1B,IADA,IAAIq9S,GAAc,IAEhB,OAAQr9S,GACN,IAAK,MACH,OAAOy+S,EAAS5/T,KAAMid,EAAQvG,EAAQ1Y,GAExC,IAAK,OACL,IAAK,QACH,OAAO8hU,EAAU9/T,KAAMid,EAAQvG,EAAQ1Y,GAEzC,IAAK,QACH,OAAOgiU,EAAWhgU,KAAMid,EAAQvG,EAAQ1Y,GAE1C,IAAK,SACL,IAAK,SACH,OAAOmiU,EAAYngU,KAAMid,EAAQvG,EAAQ1Y,GAE3C,IAAK,SAEH,OAAOoiU,EAAYpgU,KAAMid,EAAQvG,EAAQ1Y,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOqiU,EAAUrgU,KAAMid,EAAQvG,EAAQ1Y,GAEzC,QACE,GAAIwgU,EAAa,MAAM,IAAI9/T,UAAU,qBAAuByiB,GAC5DA,GAAY,GAAKA,GAAUxD,cAC3B6gT,GAAc,EAGrB,EAEDz6C,EAAO5kR,UAAUojB,OAAS,WACxB,MAAO,CACL/S,KAAM,SACNmQ,KAAMhd,MAAMxD,UAAU+Q,MAAMpP,KAAKd,KAAKW,MAAQX,KAAM,GAEvD,EAsFD,IAAIghU,EAAuB,KAoB3B,SAASlC,EAAYU,EAAK50R,EAAOoN,GAC/B,IAAI4vH,EAAM,GACV5vH,EAAMznC,KAAKW,IAAIsuT,EAAIxhU,OAAQg6C,GAE3B,IAAK,IAAIl6C,EAAI8sC,EAAO9sC,EAAIk6C,IAAOl6C,EAC7B8pK,GAAOp3H,OAAO4jF,aAAsB,IAATorM,EAAI1hU,IAEjC,OAAO8pK,CACR,CAED,SAASm3J,EAAaS,EAAK50R,EAAOoN,GAChC,IAAI4vH,EAAM,GACV5vH,EAAMznC,KAAKW,IAAIsuT,EAAIxhU,OAAQg6C,GAE3B,IAAK,IAAIl6C,EAAI8sC,EAAO9sC,EAAIk6C,IAAOl6C,EAC7B8pK,GAAOp3H,OAAO4jF,aAAaorM,EAAI1hU,IAEjC,OAAO8pK,CACR,CAED,SAASg3J,EAAUY,EAAK50R,EAAOoN,GAC7B,IAAI7tB,EAAMq1S,EAAIxhU,SAET4sC,GAASA,EAAQ,KAAGA,EAAQ,KAC5BoN,GAAOA,EAAM,GAAKA,EAAM7tB,KAAK6tB,EAAM7tB,GAGxC,IADA,IAAIg4S,EAAM,GACDrkU,EAAI8sC,EAAO9sC,EAAIk6C,IAAOl6C,EAC7BqkU,GAAOC,EAAM5C,EAAI1hU,IAEnB,OAAOqkU,CACR,CAED,SAASlD,EAAcO,EAAK50R,EAAOoN,GAGjC,IAFA,IAAIqqR,EAAQ7C,EAAItvT,MAAM06B,EAAOoN,GACzBo/E,EAAM,GACDt5H,EAAI,EAAGA,EAAIukU,EAAMrkU,OAAQF,GAAK,EACrCs5H,GAAO5mF,OAAO4jF,aAAaiuM,EAAMvkU,GAAoB,IAAfukU,EAAMvkU,EAAI,IAElD,OAAOs5H,CACR,CAyCD,SAASkrM,EAAa5rT,EAAQ6rT,EAAKvkU,GACjC,GAAK0Y,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAIonT,WAAW,sBAC3D,GAAIpnT,EAAS6rT,EAAMvkU,EAAQ,MAAM,IAAI8/T,WAAW,wCACjD,CA8JD,SAAS0E,EAAUhD,EAAK//T,EAAOiX,EAAQ6rT,EAAKpxT,EAAKD,GAC/C,IAAK6yQ,EAAO7qD,SAASsmG,GAAM,MAAM,IAAI9gU,UAAU,+CAC/C,GAAIe,EAAQ0R,GAAO1R,EAAQyR,EAAK,MAAM,IAAI4sT,WAAW,qCACrD,GAAIpnT,EAAS6rT,EAAM/C,EAAIxhU,OAAQ,MAAM,IAAI8/T,WAAW,qBACrD,CAiDD,SAAS2E,EAAmBjD,EAAK//T,EAAOiX,EAAQgsT,GAC1CjjU,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAI3B,EAAI,EAAG4yB,EAAIngB,KAAKW,IAAIsuT,EAAIxhU,OAAS0Y,EAAQ,GAAI5Y,EAAI4yB,IAAK5yB,EAC7D0hU,EAAI9oT,EAAS5Y,IAAM2B,EAAS,KAAS,GAAKijU,EAAe5kU,EAAI,EAAIA,MAClC,GAA5B4kU,EAAe5kU,EAAI,EAAIA,EAE7B,CA4BD,SAAS6kU,EAAmBnD,EAAK//T,EAAOiX,EAAQgsT,GAC1CjjU,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAI3B,EAAI,EAAG4yB,EAAIngB,KAAKW,IAAIsuT,EAAIxhU,OAAS0Y,EAAQ,GAAI5Y,EAAI4yB,IAAK5yB,EAC7D0hU,EAAI9oT,EAAS5Y,GAAM2B,IAAuC,GAA5BijU,EAAe5kU,EAAI,EAAIA,GAAU,GAElE,CAiJD,SAAS8kU,EAAcpD,EAAK//T,EAAOiX,EAAQ6rT,EAAKpxT,EAAKD,GACnD,GAAIwF,EAAS6rT,EAAM/C,EAAIxhU,OAAQ,MAAM,IAAI8/T,WAAW,sBACpD,GAAIpnT,EAAS,EAAG,MAAM,IAAIonT,WAAW,qBACtC,CAED,SAAS+E,EAAYrD,EAAK//T,EAAOiX,EAAQgsT,EAAcI,GAKrD,OAJKA,GACHF,EAAapD,EAAK//T,EAAOiX,EAAQ,GAEnCgnT,EAAQW,MAAMmB,EAAK//T,EAAOiX,EAAQgsT,EAAc,GAAI,GAC7ChsT,EAAS,CACjB,CAUD,SAASqsT,EAAavD,EAAK//T,EAAOiX,EAAQgsT,EAAcI,GAKtD,OAJKA,GACHF,EAAapD,EAAK//T,EAAOiX,EAAQ,GAEnCgnT,EAAQW,MAAMmB,EAAK//T,EAAOiX,EAAQgsT,EAAc,GAAI,GAC7ChsT,EAAS,CACjB,CAhdDqtQ,EAAO5kR,UAAU+Q,MAAQ,SAAgB06B,EAAOoN,GAC9C,IAoBIgrR,EApBA74S,EAAMnqB,KAAKhC,OAqBf,IApBA4sC,IAAUA,GAGE,GACVA,GAASzgB,GACG,IAAGygB,EAAQ,GACdA,EAAQzgB,IACjBygB,EAAQzgB,IANV6tB,OAActoC,IAARsoC,EAAoB7tB,IAAQ6tB,GASxB,GACRA,GAAO7tB,GACG,IAAG6tB,EAAM,GACVA,EAAM7tB,IACf6tB,EAAM7tB,GAGJ6tB,EAAMpN,IAAOoN,EAAMpN,GAGnBm5O,EAAO65C,qBACToF,EAAShjU,KAAK67C,SAASjR,EAAOoN,IACvBv2C,UAAYsiR,EAAO5kR,cACrB,CACL,IAAI8jU,EAAWjrR,EAAMpN,EACrBo4R,EAAS,IAAIj/C,EAAOk/C,OAAUvzT,GAC9B,IAAK,IAAI5R,EAAI,EAAGA,EAAImlU,IAAYnlU,EAC9BklU,EAAOllU,GAAKkC,KAAKlC,EAAI8sC,EAExB,CAED,OAAOo4R,CACR,EAUDj/C,EAAO5kR,UAAU+jU,WAAa,SAAqBxsT,EAAQm5G,EAAYizM,GACrEpsT,GAAkB,EAClBm5G,GAA0B,EACrBizM,GAAUR,EAAY5rT,EAAQm5G,EAAY7vH,KAAKhC,QAKpD,IAHA,IAAI+4I,EAAM/2I,KAAK0W,GACXysT,EAAM,EACNrlU,EAAI,IACCA,EAAI+xH,IAAeszM,GAAO,MACjCpsL,GAAO/2I,KAAK0W,EAAS5Y,GAAKqlU,EAG5B,OAAOpsL,CACR,EAEDgtI,EAAO5kR,UAAUikU,WAAa,SAAqB1sT,EAAQm5G,EAAYizM,GACrEpsT,GAAkB,EAClBm5G,GAA0B,EACrBizM,GACHR,EAAY5rT,EAAQm5G,EAAY7vH,KAAKhC,QAKvC,IAFA,IAAI+4I,EAAM/2I,KAAK0W,IAAWm5G,GACtBszM,EAAM,EACHtzM,EAAa,IAAMszM,GAAO,MAC/BpsL,GAAO/2I,KAAK0W,IAAWm5G,GAAcszM,EAGvC,OAAOpsL,CACR,EAEDgtI,EAAO5kR,UAAUkkU,UAAY,SAAoB3sT,EAAQosT,GAEvD,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACpCgC,KAAK0W,EACb,EAEDqtQ,EAAO5kR,UAAUmkU,aAAe,SAAuB5sT,EAAQosT,GAE7D,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACpCgC,KAAK0W,GAAW1W,KAAK0W,EAAS,IAAM,CAC5C,EAEDqtQ,EAAO5kR,UAAUsgU,aAAe,SAAuB/oT,EAAQosT,GAE7D,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACnCgC,KAAK0W,IAAW,EAAK1W,KAAK0W,EAAS,EAC5C,EAEDqtQ,EAAO5kR,UAAUokU,aAAe,SAAuB7sT,EAAQosT,GAG7D,OAFKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,SAElCgC,KAAK0W,GACT1W,KAAK0W,EAAS,IAAM,EACpB1W,KAAK0W,EAAS,IAAM,IACD,SAAnB1W,KAAK0W,EAAS,EACpB,EAEDqtQ,EAAO5kR,UAAUqkU,aAAe,SAAuB9sT,EAAQosT,GAG7D,OAFKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QAEpB,SAAfgC,KAAK0W,IACT1W,KAAK0W,EAAS,IAAM,GACrB1W,KAAK0W,EAAS,IAAM,EACrB1W,KAAK0W,EAAS,GACjB,EAEDqtQ,EAAO5kR,UAAUskU,UAAY,SAAoB/sT,EAAQm5G,EAAYizM,GACnEpsT,GAAkB,EAClBm5G,GAA0B,EACrBizM,GAAUR,EAAY5rT,EAAQm5G,EAAY7vH,KAAKhC,QAKpD,IAHA,IAAI+4I,EAAM/2I,KAAK0W,GACXysT,EAAM,EACNrlU,EAAI,IACCA,EAAI+xH,IAAeszM,GAAO,MACjCpsL,GAAO/2I,KAAK0W,EAAS5Y,GAAKqlU,EAM5B,OAFIpsL,IAFJosL,GAAO,OAESpsL,GAAOxmI,KAAKsB,IAAI,EAAG,EAAIg+G,IAEhCknB,CACR,EAEDgtI,EAAO5kR,UAAUukU,UAAY,SAAoBhtT,EAAQm5G,EAAYizM,GACnEpsT,GAAkB,EAClBm5G,GAA0B,EACrBizM,GAAUR,EAAY5rT,EAAQm5G,EAAY7vH,KAAKhC,QAKpD,IAHA,IAAIF,EAAI+xH,EACJszM,EAAM,EACNpsL,EAAM/2I,KAAK0W,IAAW5Y,GACnBA,EAAI,IAAMqlU,GAAO,MACtBpsL,GAAO/2I,KAAK0W,IAAW5Y,GAAKqlU,EAM9B,OAFIpsL,IAFJosL,GAAO,OAESpsL,GAAOxmI,KAAKsB,IAAI,EAAG,EAAIg+G,IAEhCknB,CACR,EAEDgtI,EAAO5kR,UAAUwkU,SAAW,SAAmBjtT,EAAQosT,GAErD,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACtB,IAAfgC,KAAK0W,IAC0B,GAA5B,IAAO1W,KAAK0W,GAAU,GADK1W,KAAK0W,EAE1C,EAEDqtQ,EAAO5kR,UAAUykU,YAAc,SAAsBltT,EAAQosT,GACtDA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QAC3C,IAAI+4I,EAAM/2I,KAAK0W,GAAW1W,KAAK0W,EAAS,IAAM,EAC9C,OAAc,MAANqgI,EAAsB,WAANA,EAAmBA,CAC5C,EAEDgtI,EAAO5kR,UAAU0kU,YAAc,SAAsBntT,EAAQosT,GACtDA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QAC3C,IAAI+4I,EAAM/2I,KAAK0W,EAAS,GAAM1W,KAAK0W,IAAW,EAC9C,OAAc,MAANqgI,EAAsB,WAANA,EAAmBA,CAC5C,EAEDgtI,EAAO5kR,UAAU2kU,YAAc,SAAsBptT,EAAQosT,GAG3D,OAFKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QAEnCgC,KAAK0W,GACV1W,KAAK0W,EAAS,IAAM,EACpB1W,KAAK0W,EAAS,IAAM,GACpB1W,KAAK0W,EAAS,IAAM,EACxB,EAEDqtQ,EAAO5kR,UAAU4kU,YAAc,SAAsBrtT,EAAQosT,GAG3D,OAFKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QAEnCgC,KAAK0W,IAAW,GACrB1W,KAAK0W,EAAS,IAAM,GACpB1W,KAAK0W,EAAS,IAAM,EACpB1W,KAAK0W,EAAS,EAClB,EAEDqtQ,EAAO5kR,UAAU6kU,YAAc,SAAsBttT,EAAQosT,GAE3D,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACpC0/T,EAAQ/tM,KAAK3vH,KAAM0W,GAAQ,EAAM,GAAI,EAC7C,EAEDqtQ,EAAO5kR,UAAU8kU,YAAc,SAAsBvtT,EAAQosT,GAE3D,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACpC0/T,EAAQ/tM,KAAK3vH,KAAM0W,GAAQ,EAAO,GAAI,EAC9C,EAEDqtQ,EAAO5kR,UAAU+kU,aAAe,SAAuBxtT,EAAQosT,GAE7D,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACpC0/T,EAAQ/tM,KAAK3vH,KAAM0W,GAAQ,EAAM,GAAI,EAC7C,EAEDqtQ,EAAO5kR,UAAUglU,aAAe,SAAuBztT,EAAQosT,GAE7D,OADKA,GAAUR,EAAY5rT,EAAQ,EAAG1W,KAAKhC,QACpC0/T,EAAQ/tM,KAAK3vH,KAAM0W,GAAQ,EAAO,GAAI,EAC9C,EAQDqtQ,EAAO5kR,UAAUilU,YAAc,SAAsB3kU,EAAOiX,EAAQm5G,EAAYizM,IAC9ErjU,GAASA,EACTiX,GAAkB,EAClBm5G,GAA0B,EACrBizM,IAEHN,EAASxiU,KAAMP,EAAOiX,EAAQm5G,EADft/G,KAAKsB,IAAI,EAAG,EAAIg+G,GAAc,EACO,GAGtD,IAAIszM,EAAM,EACNrlU,EAAI,EAER,IADAkC,KAAK0W,GAAkB,IAARjX,IACN3B,EAAI+xH,IAAeszM,GAAO,MACjCnjU,KAAK0W,EAAS5Y,GAAM2B,EAAQ0jU,EAAO,IAGrC,OAAOzsT,EAASm5G,CACjB,EAEDk0J,EAAO5kR,UAAUklU,YAAc,SAAsB5kU,EAAOiX,EAAQm5G,EAAYizM,IAC9ErjU,GAASA,EACTiX,GAAkB,EAClBm5G,GAA0B,EACrBizM,IAEHN,EAASxiU,KAAMP,EAAOiX,EAAQm5G,EADft/G,KAAKsB,IAAI,EAAG,EAAIg+G,GAAc,EACO,GAGtD,IAAI/xH,EAAI+xH,EAAa,EACjBszM,EAAM,EAEV,IADAnjU,KAAK0W,EAAS5Y,GAAa,IAAR2B,IACV3B,GAAK,IAAMqlU,GAAO,MACzBnjU,KAAK0W,EAAS5Y,GAAM2B,EAAQ0jU,EAAO,IAGrC,OAAOzsT,EAASm5G,CACjB,EAEDk0J,EAAO5kR,UAAUmlU,WAAa,SAAqB7kU,EAAOiX,EAAQosT,GAMhE,OALArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,IAAM,GACjDqtQ,EAAO65C,sBAAqBn+T,EAAQ8Q,KAAK2B,MAAMzS,IACpDO,KAAK0W,GAAmB,IAARjX,EACTiX,EAAS,CACjB,EAUDqtQ,EAAO5kR,UAAUolU,cAAgB,SAAwB9kU,EAAOiX,EAAQosT,GAUtE,OATArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,MAAQ,GACpDqtQ,EAAO65C,qBACT59T,KAAK0W,GAAmB,IAARjX,EAChBO,KAAK0W,EAAS,GAAMjX,IAAU,GAE9BgjU,EAAkBziU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAUqlU,cAAgB,SAAwB/kU,EAAOiX,EAAQosT,GAUtE,OATArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,MAAQ,GACpDqtQ,EAAO65C,qBACT59T,KAAK0W,GAAWjX,IAAU,EAC1BO,KAAK0W,EAAS,GAAc,IAARjX,GAEpBgjU,EAAkBziU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EASDqtQ,EAAO5kR,UAAUslU,cAAgB,SAAwBhlU,EAAOiX,EAAQosT,GAYtE,OAXArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,WAAY,GACxDqtQ,EAAO65C,qBACT59T,KAAK0W,EAAS,GAAMjX,IAAU,GAC9BO,KAAK0W,EAAS,GAAMjX,IAAU,GAC9BO,KAAK0W,EAAS,GAAMjX,IAAU,EAC9BO,KAAK0W,GAAmB,IAARjX,GAEhBkjU,EAAkB3iU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAUulU,cAAgB,SAAwBjlU,EAAOiX,EAAQosT,GAYtE,OAXArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,WAAY,GACxDqtQ,EAAO65C,qBACT59T,KAAK0W,GAAWjX,IAAU,GAC1BO,KAAK0W,EAAS,GAAMjX,IAAU,GAC9BO,KAAK0W,EAAS,GAAMjX,IAAU,EAC9BO,KAAK0W,EAAS,GAAc,IAARjX,GAEpBkjU,EAAkB3iU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAUwlU,WAAa,SAAqBllU,EAAOiX,EAAQm5G,EAAYizM,GAG5E,GAFArjU,GAASA,EACTiX,GAAkB,GACbosT,EAAU,CACb,IAAI1iI,EAAQ7vL,KAAKsB,IAAI,EAAG,EAAIg+G,EAAa,GAEzC2yM,EAASxiU,KAAMP,EAAOiX,EAAQm5G,EAAYuwE,EAAQ,GAAIA,EACvD,CAED,IAAItiM,EAAI,EACJqlU,EAAM,EACN72S,EAAM,EAEV,IADAtsB,KAAK0W,GAAkB,IAARjX,IACN3B,EAAI+xH,IAAeszM,GAAO,MAC7B1jU,EAAQ,GAAa,IAAR6sB,GAAsC,IAAzBtsB,KAAK0W,EAAS5Y,EAAI,KAC9CwuB,EAAM,GAERtsB,KAAK0W,EAAS5Y,IAAO2B,EAAQ0jU,GAAQ,GAAK72S,EAAM,IAGlD,OAAO5V,EAASm5G,CACjB,EAEDk0J,EAAO5kR,UAAUylU,WAAa,SAAqBnlU,EAAOiX,EAAQm5G,EAAYizM,GAG5E,GAFArjU,GAASA,EACTiX,GAAkB,GACbosT,EAAU,CACb,IAAI1iI,EAAQ7vL,KAAKsB,IAAI,EAAG,EAAIg+G,EAAa,GAEzC2yM,EAASxiU,KAAMP,EAAOiX,EAAQm5G,EAAYuwE,EAAQ,GAAIA,EACvD,CAED,IAAItiM,EAAI+xH,EAAa,EACjBszM,EAAM,EACN72S,EAAM,EAEV,IADAtsB,KAAK0W,EAAS5Y,GAAa,IAAR2B,IACV3B,GAAK,IAAMqlU,GAAO,MACrB1jU,EAAQ,GAAa,IAAR6sB,GAAsC,IAAzBtsB,KAAK0W,EAAS5Y,EAAI,KAC9CwuB,EAAM,GAERtsB,KAAK0W,EAAS5Y,IAAO2B,EAAQ0jU,GAAQ,GAAK72S,EAAM,IAGlD,OAAO5V,EAASm5G,CACjB,EAEDk0J,EAAO5kR,UAAU0lU,UAAY,SAAoBplU,EAAOiX,EAAQosT,GAO9D,OANArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,KAAO,KAClDqtQ,EAAO65C,sBAAqBn+T,EAAQ8Q,KAAK2B,MAAMzS,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCO,KAAK0W,GAAmB,IAARjX,EACTiX,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAU2lU,aAAe,SAAuBrlU,EAAOiX,EAAQosT,GAUpE,OATArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,OAAS,OACrDqtQ,EAAO65C,qBACT59T,KAAK0W,GAAmB,IAARjX,EAChBO,KAAK0W,EAAS,GAAMjX,IAAU,GAE9BgjU,EAAkBziU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAU4lU,aAAe,SAAuBtlU,EAAOiX,EAAQosT,GAUpE,OATArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,OAAS,OACrDqtQ,EAAO65C,qBACT59T,KAAK0W,GAAWjX,IAAU,EAC1BO,KAAK0W,EAAS,GAAc,IAARjX,GAEpBgjU,EAAkBziU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAU6lU,aAAe,SAAuBvlU,EAAOiX,EAAQosT,GAYpE,OAXArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,YAAa,YACzDqtQ,EAAO65C,qBACT59T,KAAK0W,GAAmB,IAARjX,EAChBO,KAAK0W,EAAS,GAAMjX,IAAU,EAC9BO,KAAK0W,EAAS,GAAMjX,IAAU,GAC9BO,KAAK0W,EAAS,GAAMjX,IAAU,IAE9BkjU,EAAkB3iU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAEDqtQ,EAAO5kR,UAAU8lU,aAAe,SAAuBxlU,EAAOiX,EAAQosT,GAapE,OAZArjU,GAASA,EACTiX,GAAkB,EACbosT,GAAUN,EAASxiU,KAAMP,EAAOiX,EAAQ,EAAG,YAAa,YACzDjX,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxCskR,EAAO65C,qBACT59T,KAAK0W,GAAWjX,IAAU,GAC1BO,KAAK0W,EAAS,GAAMjX,IAAU,GAC9BO,KAAK0W,EAAS,GAAMjX,IAAU,EAC9BO,KAAK0W,EAAS,GAAc,IAARjX,GAEpBkjU,EAAkB3iU,KAAMP,EAAOiX,GAAQ,GAElCA,EAAS,CACjB,EAeDqtQ,EAAO5kR,UAAU+lU,aAAe,SAAuBzlU,EAAOiX,EAAQosT,GACpE,OAAOD,EAAW7iU,KAAMP,EAAOiX,GAAQ,EAAMosT,EAC9C,EAED/+C,EAAO5kR,UAAUgmU,aAAe,SAAuB1lU,EAAOiX,EAAQosT,GACpE,OAAOD,EAAW7iU,KAAMP,EAAOiX,GAAQ,EAAOosT,EAC/C,EAUD/+C,EAAO5kR,UAAUimU,cAAgB,SAAwB3lU,EAAOiX,EAAQosT,GACtE,OAAOC,EAAY/iU,KAAMP,EAAOiX,GAAQ,EAAMosT,EAC/C,EAED/+C,EAAO5kR,UAAUkmU,cAAgB,SAAwB5lU,EAAOiX,EAAQosT,GACtE,OAAOC,EAAY/iU,KAAMP,EAAOiX,GAAQ,EAAOosT,EAChD,EAGD/+C,EAAO5kR,UAAUwd,KAAO,SAAe9e,EAAQynU,EAAa16R,EAAOoN,GAQjE,GAPKpN,IAAOA,EAAQ,GACfoN,GAAe,IAARA,IAAWA,EAAMh4C,KAAKhC,QAC9BsnU,GAAeznU,EAAOG,SAAQsnU,EAAcznU,EAAOG,QAClDsnU,IAAaA,EAAc,GAC5BttR,EAAM,GAAKA,EAAMpN,IAAOoN,EAAMpN,GAG9BoN,IAAQpN,EAAO,OAAO,EAC1B,GAAsB,IAAlB/sC,EAAOG,QAAgC,IAAhBgC,KAAKhC,OAAc,OAAO,EAGrD,GAAIsnU,EAAc,EAChB,MAAM,IAAIxH,WAAW,6BAEvB,GAAIlzR,EAAQ,GAAKA,GAAS5qC,KAAKhC,OAAQ,MAAM,IAAI8/T,WAAW,6BAC5D,GAAI9lR,EAAM,EAAG,MAAM,IAAI8lR,WAAW,2BAG9B9lR,EAAMh4C,KAAKhC,SAAQg6C,EAAMh4C,KAAKhC,QAC9BH,EAAOG,OAASsnU,EAActtR,EAAMpN,IACtCoN,EAAMn6C,EAAOG,OAASsnU,EAAc16R,GAGtC,IACI9sC,EADAqsB,EAAM6tB,EAAMpN,EAGhB,GAAI5qC,OAASnC,GAAU+sC,EAAQ06R,GAAeA,EAActtR,EAE1D,IAAKl6C,EAAIqsB,EAAM,EAAGrsB,GAAK,IAAKA,EAC1BD,EAAOC,EAAIwnU,GAAetlU,KAAKlC,EAAI8sC,QAEhC,GAAIzgB,EAAM,MAAS45P,EAAO65C,oBAE/B,IAAK9/T,EAAI,EAAGA,EAAIqsB,IAAOrsB,EACrBD,EAAOC,EAAIwnU,GAAetlU,KAAKlC,EAAI8sC,QAGrCzvB,WAAWhc,UAAU4V,IAAIjU,KACvBjD,EACAmC,KAAK67C,SAASjR,EAAOA,EAAQzgB,GAC7Bm7S,GAIJ,OAAOn7S,CACR,EAMD45P,EAAO5kR,UAAUy3D,KAAO,SAAemgF,EAAKnsG,EAAOoN,EAAK72B,GAEtD,GAAmB,kBAAR41H,EAAkB,CAS3B,GARqB,kBAAVnsG,GACTzpB,EAAWypB,EACXA,EAAQ,EACRoN,EAAMh4C,KAAKhC,QACa,kBAARg6C,IAChB72B,EAAW62B,EACXA,EAAMh4C,KAAKhC,QAEM,IAAf+4I,EAAI/4I,OAAc,CACpB,IAAI0uE,EAAOqqE,EAAIgjF,WAAW,GACtBrtJ,EAAO,MACTqqE,EAAMrqE,EAET,CACD,QAAiBh9D,IAAbyR,GAA8C,kBAAbA,EACnC,MAAM,IAAIziB,UAAU,6BAEtB,GAAwB,kBAAbyiB,IAA0B4iQ,EAAOq6C,WAAWj9S,GACrD,MAAM,IAAIziB,UAAU,qBAAuByiB,EAE9C,KAAyB,kBAAR41H,IAChBA,GAAY,KAId,GAAInsG,EAAQ,GAAK5qC,KAAKhC,OAAS4sC,GAAS5qC,KAAKhC,OAASg6C,EACpD,MAAM,IAAI8lR,WAAW,sBAGvB,GAAI9lR,GAAOpN,EACT,OAAO5qC,KAQT,IAAIlC,EACJ,GANA8sC,KAAkB,EAClBoN,OAActoC,IAARsoC,EAAoBh4C,KAAKhC,OAASg6C,IAAQ,EAE3C++F,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAKj5I,EAAI8sC,EAAO9sC,EAAIk6C,IAAOl6C,EACzBkC,KAAKlC,GAAKi5I,MAEP,CACL,IAAIsrL,EAAQt+C,EAAO7qD,SAASniF,GACxBA,EACA0nL,EAAY,IAAI16C,EAAOhtI,EAAK51H,GAAUre,YACtCqnB,EAAMk4S,EAAMrkU,OAChB,IAAKF,EAAI,EAAGA,EAAIk6C,EAAMpN,IAAS9sC,EAC7BkC,KAAKlC,EAAI8sC,GAASy3R,EAAMvkU,EAAIqsB,EAE/B,CAED,OAAOnqB,IACR,EAKD,IAAIulU,EAAoB,qBAmBxB,SAASnD,EAAO/wT,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAEvO,SAAS,IAC7BuO,EAAEvO,SAAS,GACnB,CAED,SAAS27T,EAAaxhT,EAAQ0kD,GAE5B,IAAIk/P,EADJl/P,EAAQA,GAASx0C,IAMjB,IAJA,IAAInvB,EAASif,EAAOjf,OAChBwnU,EAAgB,KAChBnD,EAAQ,GAEHvkU,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAI/B,IAHA+iU,EAAY5jT,EAAO88M,WAAWj8N,IAGd,OAAU+iU,EAAY,MAAQ,CAE5C,IAAK2E,EAAe,CAElB,GAAI3E,EAAY,MAAQ,EAEjBl/P,GAAS,IAAM,GAAG0gQ,EAAM3kU,KAAK,IAAM,IAAM,KAC9C,QACD,CAAM,GAAII,EAAI,IAAME,EAAQ,EAEtB2jE,GAAS,IAAM,GAAG0gQ,EAAM3kU,KAAK,IAAM,IAAM,KAC9C,QACD,CAGD8nU,EAAgB3E,EAEhB,QACD,CAGD,GAAIA,EAAY,MAAQ,EACjBl/P,GAAS,IAAM,GAAG0gQ,EAAM3kU,KAAK,IAAM,IAAM,KAC9C8nU,EAAgB3E,EAChB,QACD,CAGDA,EAAkE,OAArD2E,EAAgB,OAAU,GAAK3E,EAAY,MACzD,MAAU2E,IAEJ7jQ,GAAS,IAAM,GAAG0gQ,EAAM3kU,KAAK,IAAM,IAAM,KAMhD,GAHA8nU,EAAgB,KAGZ3E,EAAY,IAAM,CACpB,IAAKl/P,GAAS,GAAK,EAAG,MACtB0gQ,EAAM3kU,KAAKmjU,EACZ,MAAM,GAAIA,EAAY,KAAO,CAC5B,IAAKl/P,GAAS,GAAK,EAAG,MACtB0gQ,EAAM3kU,KACJmjU,GAAa,EAAM,IACP,GAAZA,EAAmB,IAEtB,MAAM,GAAIA,EAAY,MAAS,CAC9B,IAAKl/P,GAAS,GAAK,EAAG,MACtB0gQ,EAAM3kU,KACJmjU,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAEtB,KAAM,MAAIA,EAAY,SASrB,MAAM,IAAIzrT,MAAM,sBARhB,IAAKusD,GAAS,GAAK,EAAG,MACtB0gQ,EAAM3kU,KACJmjU,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,IAItB,CACF,CAED,OAAOwB,CACR,CA2BD,SAAS3D,EAAelyK,GACtB,OAAOixK,EAAOgI,YAhIhB,SAAsBj5K,GAIpB,IAFAA,EAUF,SAAqBA,GACnB,OAAIA,EAAIpoF,KAAaooF,EAAIpoF,OAClBooF,EAAIznF,QAAQ,aAAc,GAClC,CAbO2gQ,CAAWl5K,GAAKznF,QAAQwgQ,EAAmB,KAEzCvnU,OAAS,EAAG,MAAO,GAE3B,KAAOwuJ,EAAIxuJ,OAAS,IAAM,GACxBwuJ,GAAY,IAEd,OAAOA,CACR,CAsH2Bm5K,CAAYn5K,GACvC,CAED,SAASuzK,EAAYnhT,EAAKwK,EAAK1S,EAAQ1Y,GACrC,IAAK,IAAIF,EAAI,EAAGA,EAAIE,KACbF,EAAI4Y,GAAU0S,EAAIprB,QAAYF,GAAK8gB,EAAI5gB,UADhBF,EAE5BsrB,EAAItrB,EAAI4Y,GAAUkI,EAAI9gB,GAExB,OAAOA,CACR,C,mDCtvDDjB,EAAQgzH,WAuCR,SAAqB+1M,GACnB,IAAI51N,EAAO61N,EAAQD,GACfE,EAAW91N,EAAK,GAChB+1N,EAAkB/1N,EAAK,GAC3B,OAAuC,GAA9B81N,EAAWC,GAAuB,EAAKA,CACjD,EA3CDlpU,EAAQ4oU,YAiDR,SAAsBG,GACpB,IAAI7rT,EAcAjc,EAbAkyG,EAAO61N,EAAQD,GACfE,EAAW91N,EAAK,GAChB+1N,EAAkB/1N,EAAK,GAEvB5vG,EAAM,IAAI4lU,EAVhB,SAAsBJ,EAAKE,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,CACjD,CAQmBE,CAAYL,EAAKE,EAAUC,IAEzCG,EAAU,EAGV/7S,EAAM47S,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAKhoU,EAAI,EAAGA,EAAIqsB,EAAKrsB,GAAK,EACxBic,EACGosT,EAAUP,EAAI7rG,WAAWj8N,KAAO,GAChCqoU,EAAUP,EAAI7rG,WAAWj8N,EAAI,KAAO,GACpCqoU,EAAUP,EAAI7rG,WAAWj8N,EAAI,KAAO,EACrCqoU,EAAUP,EAAI7rG,WAAWj8N,EAAI,IAC/BsC,EAAI8lU,KAAcnsT,GAAO,GAAM,IAC/B3Z,EAAI8lU,KAAcnsT,GAAO,EAAK,IAC9B3Z,EAAI8lU,KAAmB,IAANnsT,EAGK,IAApBgsT,IACFhsT,EACGosT,EAAUP,EAAI7rG,WAAWj8N,KAAO,EAChCqoU,EAAUP,EAAI7rG,WAAWj8N,EAAI,KAAO,EACvCsC,EAAI8lU,KAAmB,IAANnsT,GAGK,IAApBgsT,IACFhsT,EACGosT,EAAUP,EAAI7rG,WAAWj8N,KAAO,GAChCqoU,EAAUP,EAAI7rG,WAAWj8N,EAAI,KAAO,EACpCqoU,EAAUP,EAAI7rG,WAAWj8N,EAAI,KAAO,EACvCsC,EAAI8lU,KAAcnsT,GAAO,EAAK,IAC9B3Z,EAAI8lU,KAAmB,IAANnsT,GAGnB,OAAO3Z,CACR,EA5FDvD,EAAQ0jU,cAkHR,SAAwB6F,GAQtB,IAPA,IAAIrsT,EACAoQ,EAAMi8S,EAAMpoU,OACZqoU,EAAal8S,EAAM,EACnB2gG,EAAQ,GACRw7M,EAAiB,MAGZxoU,EAAI,EAAGyoU,EAAOp8S,EAAMk8S,EAAYvoU,EAAIyoU,EAAMzoU,GAAKwoU,EACtDx7M,EAAMptH,KAAK8oU,EAAYJ,EAAOtoU,EAAIA,EAAIwoU,EAAkBC,EAAOA,EAAQzoU,EAAIwoU,IAI1D,IAAfD,GACFtsT,EAAMqsT,EAAMj8S,EAAM,GAClB2gG,EAAMptH,KACJ+oU,EAAO1sT,GAAO,GACd0sT,EAAQ1sT,GAAO,EAAK,IACpB,OAEsB,IAAfssT,IACTtsT,GAAOqsT,EAAMj8S,EAAM,IAAM,GAAKi8S,EAAMj8S,EAAM,GAC1C2gG,EAAMptH,KACJ+oU,EAAO1sT,GAAO,IACd0sT,EAAQ1sT,GAAO,EAAK,IACpB0sT,EAAQ1sT,GAAO,EAAK,IACpB,MAIJ,OAAO+wG,EAAM/nH,KAAK,GACnB,EA1ID,IALA,IAAI0jU,EAAS,GACTN,EAAY,GACZH,EAA4B,qBAAf7qT,WAA6BA,WAAaxY,MAEvD+pE,EAAO,mEACF5uE,EAAI,EAAGqsB,EAAMuiD,EAAK1uE,OAAQF,EAAIqsB,IAAOrsB,EAC5C2oU,EAAO3oU,GAAK4uE,EAAK5uE,GACjBqoU,EAAUz5P,EAAKqtJ,WAAWj8N,IAAMA,EAQlC,SAAS+nU,EAASD,GAChB,IAAIz7S,EAAMy7S,EAAI5nU,OAEd,GAAImsB,EAAM,EAAI,EACZ,MAAM,IAAI/U,MAAM,kDAKlB,IAAI0wT,EAAWF,EAAIxjU,QAAQ,KAO3B,OANkB,IAAd0jU,IAAiBA,EAAW37S,GAMzB,CAAC27S,EAJcA,IAAa37S,EAC/B,EACA,EAAK27S,EAAW,EAGrB,CAmED,SAASU,EAAaJ,EAAOx7R,EAAOoN,GAGlC,IAFA,IAAIj+B,EARoB67F,EASpB11F,EAAS,GACJpiB,EAAI8sC,EAAO9sC,EAAIk6C,EAAKl6C,GAAK,EAChCic,GACIqsT,EAAMtoU,IAAM,GAAM,WAClBsoU,EAAMtoU,EAAI,IAAM,EAAK,QACP,IAAfsoU,EAAMtoU,EAAI,IACboiB,EAAOxiB,KAdF+oU,GADiB7wN,EAeM77F,IAdT,GAAK,IACxB0sT,EAAO7wN,GAAO,GAAK,IACnB6wN,EAAO7wN,GAAO,EAAI,IAClB6wN,EAAa,GAAN7wN,IAaT,OAAO11F,EAAOnd,KAAK,GACpB,CAlGDojU,EAAU,IAAIpsG,WAAW,IAAM,GAC/BosG,EAAU,IAAIpsG,WAAW,IAAM,E,gBClB/Bl9N,EAAQ8yH,KAAO,SAAU/zG,EAAQlF,EAAQgwT,EAAMC,EAAMC,GACnD,IAAIlxT,EAAGpE,EACHu1T,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTlpU,EAAI4oU,EAAQE,EAAS,EAAK,EAC1BttT,EAAIotT,GAAQ,EAAI,EAChBhzT,EAAIkI,EAAOlF,EAAS5Y,GAOxB,IALAA,GAAKwb,EAEL5D,EAAIhC,GAAM,IAAOszT,GAAU,EAC3BtzT,KAAQszT,EACRA,GAASH,EACFG,EAAQ,EAAGtxT,EAAS,IAAJA,EAAWkG,EAAOlF,EAAS5Y,GAAIA,GAAKwb,EAAG0tT,GAAS,GAKvE,IAHA11T,EAAIoE,GAAM,IAAOsxT,GAAU,EAC3BtxT,KAAQsxT,EACRA,GAASL,EACFK,EAAQ,EAAG11T,EAAS,IAAJA,EAAWsK,EAAOlF,EAAS5Y,GAAIA,GAAKwb,EAAG0tT,GAAS,GAEvE,GAAU,IAANtxT,EACFA,EAAI,EAAIqxT,MACH,IAAIrxT,IAAMoxT,EACf,OAAOx1T,EAAIi2K,IAAsBp6J,KAAdzZ,GAAK,EAAI,GAE5BpC,GAAQf,KAAKsB,IAAI,EAAG80T,GACpBjxT,GAAQqxT,CACT,CACD,OAAQrzT,GAAK,EAAI,GAAKpC,EAAIf,KAAKsB,IAAI,EAAG6D,EAAIixT,EAC3C,EAED9pU,EAAQwhU,MAAQ,SAAUziT,EAAQnc,EAAOiX,EAAQgwT,EAAMC,EAAMC,GAC3D,IAAIlxT,EAAGpE,EAAG6C,EACN0yT,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBG,EAAe,KAATN,EAAcp2T,KAAKsB,IAAI,GAAI,IAAMtB,KAAKsB,IAAI,GAAI,IAAM,EAC1D/T,EAAI4oU,EAAO,EAAKE,EAAS,EACzBttT,EAAIotT,EAAO,GAAK,EAChBhzT,EAAIjU,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ8Q,KAAKyC,IAAIvT,GAEbosC,MAAMpsC,IAAUA,IAAU0tB,KAC5B7b,EAAIu6B,MAAMpsC,GAAS,EAAI,EACvBiW,EAAIoxT,IAEJpxT,EAAInF,KAAK2B,MAAM3B,KAAKwB,IAAItS,GAAS8Q,KAAKyB,KAClCvS,GAAS0U,EAAI5D,KAAKsB,IAAI,GAAI6D,IAAM,IAClCA,IACAvB,GAAK,IAGL1U,GADEiW,EAAIqxT,GAAS,EACNE,EAAK9yT,EAEL8yT,EAAK12T,KAAKsB,IAAI,EAAG,EAAIk1T,IAEpB5yT,GAAK,IACfuB,IACAvB,GAAK,GAGHuB,EAAIqxT,GAASD,GACfx1T,EAAI,EACJoE,EAAIoxT,GACKpxT,EAAIqxT,GAAS,GACtBz1T,GAAM7R,EAAQ0U,EAAK,GAAK5D,KAAKsB,IAAI,EAAG80T,GACpCjxT,GAAQqxT,IAERz1T,EAAI7R,EAAQ8Q,KAAKsB,IAAI,EAAGk1T,EAAQ,GAAKx2T,KAAKsB,IAAI,EAAG80T,GACjDjxT,EAAI,IAIDixT,GAAQ,EAAG/qT,EAAOlF,EAAS5Y,GAAS,IAAJwT,EAAUxT,GAAKwb,EAAGhI,GAAK,IAAKq1T,GAAQ,GAI3E,IAFAjxT,EAAKA,GAAKixT,EAAQr1T,EAClBu1T,GAAQF,EACDE,EAAO,EAAGjrT,EAAOlF,EAAS5Y,GAAS,IAAJ4X,EAAU5X,GAAKwb,EAAG5D,GAAK,IAAKmxT,GAAQ,GAE1EjrT,EAAOlF,EAAS5Y,EAAIwb,IAAU,IAAJ5F,CAC3B,C,gBCpFD,IAAI5Q,EAAW,CAAC,EAAEA,SAElBlG,EAAOC,QAAU8F,MAAMC,SAAW,SAAUxC,GAC1C,MAA6B,kBAAtB0C,EAAShC,KAAKV,EACtB,C,+BCFD,IAAIwxP,EAAa90P,EAAQ,IASzBF,EAAOC,QAAU,SAAgBmxH,EAASC,EAAQc,GAChD,IAAIytJ,EAAiBztJ,EAASyxD,OAAOg8F,eAChCztJ,EAAS/qD,QAAWw4M,IAAkBA,EAAeztJ,EAAS/qD,QAGjEiqD,EAAO,IAAI2jI,EACT,mCAAqC7iI,EAAS/qD,OAC9C,CAAC4tL,EAAWi1B,gBAAiBj1B,EAAWuqB,kBAAkB5rQ,KAAK2B,MAAM68G,EAAS/qD,OAAS,KAAO,GAC9F+qD,EAASyxD,OACTzxD,EAAS8iI,QACT9iI,IAPFf,EAAQe,EAUX,C,+BCtBD,IAAInwC,EAAQ9hF,EAAQ,IAEpBF,EAAOC,QACL+hF,EAAM66I,uBAIK,CACL4kG,MAAO,SAAeviT,EAAMrc,EAAOynU,EAAStkQ,EAAMukQ,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAO3pU,KAAKoe,EAAO,IAAMgmQ,mBAAmBriR,IAExCm/E,EAAMk2E,SAASoyK,IACjBG,EAAO3pU,KAAK,WAAa,IAAI+7H,KAAKytM,GAASI,eAGzC1oP,EAAM06I,SAAS12J,IACjBykQ,EAAO3pU,KAAK,QAAUklE,GAGpBgc,EAAM06I,SAAS6tG,IACjBE,EAAO3pU,KAAK,UAAYypU,IAGX,IAAXC,GACFC,EAAO3pU,KAAK,UAGdqe,SAASsrT,OAASA,EAAOtkU,KAAK,KAC/B,EAED4sH,KAAM,SAAc7zG,GAClB,IAAIinD,EAAQhnD,SAASsrT,OAAOtkQ,MAAM,IAAI69D,OAAO,aAAe9kH,EAAO,cACnE,OAAQinD,EAAQsxD,mBAAmBtxD,EAAM,IAAM,IAChD,EAEDzmC,OAAQ,SAAgBxgB,GACtB9b,KAAKq+T,MAAMviT,EAAM,GAAI29G,KAAKL,MAAQ,MACnC,GAMI,CACLilM,MAAO,WAAmB,EAC1B1uM,KAAM,WAAkB,OAAO,IAAO,EACtCrzF,OAAQ,WAAoB,E,+BCzCpC1/B,EAAOC,QAAU,SAAuBsjB,GAItC,MAAO,8BAA8BxB,KAAKwB,EAC3C,C,+BCJDvjB,EAAOC,QAAU,SAAqB2oR,EAAS+hD,GAC7C,OAAOA,EACH/hD,EAAQzgN,QAAQ,OAAQ,IAAM,IAAMwiQ,EAAYxiQ,QAAQ,OAAQ,IAChEygN,CACL,C,+BCXD,IAAI5mM,EAAQ9hF,EAAQ,IAIhB0qU,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5B5qU,EAAOC,QAAU,SAAsB2xH,GACrC,IACIrwH,EACA44I,EACAj5I,EAHAk2K,EAAS,CAAC,EAKd,OAAKxlD,GAEL5vC,EAAM1gF,QAAQswH,EAAQnqD,MAAM,OAAO,SAAgBxsB,GAKjD,GAJA/5C,EAAI+5C,EAAKz1C,QAAQ,KACjBjE,EAAMygF,EAAMxa,KAAKvsB,EAAKkwL,OAAO,EAAGjqO,IAAI6f,cACpCo5H,EAAMn4D,EAAMxa,KAAKvsB,EAAKkwL,OAAOjqO,EAAI,IAE7BK,EAAK,CACP,GAAI61K,EAAO71K,IAAQqpU,EAAkBplU,QAAQjE,IAAQ,EACnD,OAGA61K,EAAO71K,GADG,eAARA,GACa61K,EAAO71K,GAAO61K,EAAO71K,GAAO,IAAI8yG,OAAO,CAAC8lC,IAEzCi9B,EAAO71K,GAAO61K,EAAO71K,GAAO,KAAO44I,EAAMA,CAE1D,CACF,IAEMi9B,GAnBgBA,CAoBxB,C,+BClDD,IAAIp1F,EAAQ9hF,EAAQ,IAEpBF,EAAOC,QACL+hF,EAAM66I,uBAIH,WACC,IAEIguG,EAFAC,EAAO,kBAAkB/oT,KAAKikI,UAAUo+G,WACxC2mE,EAAiB5rT,SAASmoI,cAAc,KAS5C,SAASl3B,EAAW7sG,GAClB,IAAI+iI,EAAO/iI,EAWX,OATIunT,IAEFC,EAAen8R,aAAa,OAAQ03G,GACpCA,EAAOykL,EAAezkL,MAGxBykL,EAAen8R,aAAa,OAAQ03G,GAG7B,CACLA,KAAMykL,EAAezkL,KACrB0jI,SAAU+gD,EAAe/gD,SAAW+gD,EAAe/gD,SAAS7hN,QAAQ,KAAM,IAAM,GAChF2xG,KAAMixJ,EAAejxJ,KACrBjuB,OAAQk/K,EAAel/K,OAASk/K,EAAel/K,OAAO1jF,QAAQ,MAAO,IAAM,GAC3E+M,KAAM61P,EAAe71P,KAAO61P,EAAe71P,KAAK/M,QAAQ,KAAM,IAAM,GACpE6iQ,SAAUD,EAAeC,SACzBC,KAAMF,EAAeE,KACrBljL,SAAiD,MAAtCgjL,EAAehjL,SAASlnI,OAAO,GACxCkqT,EAAehjL,SACf,IAAMgjL,EAAehjL,SAE1B,CAUD,OARA8iL,EAAYz6M,EAAW/wB,OAAOnuC,SAASo1F,MAQhC,SAAyB4kL,GAC9B,IAAI9zJ,EAAUp1F,EAAM06I,SAASwuG,GAAe96M,EAAW86M,GAAcA,EACrE,OAAQ9zJ,EAAO4yG,WAAa6gD,EAAU7gD,UAClC5yG,EAAO0C,OAAS+wJ,EAAU/wJ,IAC/B,CACF,CAlDA,GAsDQ,WACL,OAAO,CACR,C,+BC/DP95K,EAAOC,QAAU,SAAuBsjB,GACtC,IAAI4iD,EAAQ,4BAA4B5lD,KAAKgD,GAC7C,OAAO4iD,GAASA,EAAM,IAAM,EAC7B,C,gBCJDnmE,EAAOC,QAAU,I,+BCCjB,IAAI2+T,EAAU1+T,EAAQ,KAAegjB,QACjC8xO,EAAa90P,EAAQ,IAErBi/T,EAAa,CAAC,EAGlB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU79T,SAAQ,SAASsR,EAAM1R,GACrFi+T,EAAWvsT,GAAQ,SAAmBw8J,GACpC,cAAcA,IAAUx8J,GAAQ,KAAO1R,EAAI,EAAI,KAAO,KAAO0R,CAC9D,CACF,IAED,IAAIu4T,EAAqB,CAAC,EAS1BhM,EAAW3gD,aAAe,SAAsB0gD,EAAWh8S,EAASy3E,GAClE,SAASywO,EAAcC,EAAKjmU,GAC1B,MAAO,WAAaw5T,EAAU,0BAA6ByM,EAAM,IAAOjmU,GAAQu1F,EAAU,KAAOA,EAAU,GAC5G,CAGD,OAAO,SAAS93F,EAAOwoU,EAAK75J,GAC1B,IAAkB,IAAd0tJ,EACF,MAAM,IAAIlqE,EACRo2E,EAAcC,EAAK,qBAAuBnoT,EAAU,OAASA,EAAU,KACvE8xO,EAAWs2E,gBAef,OAXIpoT,IAAYioT,EAAmBE,KACjCF,EAAmBE,IAAO,EAE1BjzT,QAAQC,KACN+yT,EACEC,EACA,+BAAiCnoT,EAAU,8CAK1Cg8S,GAAYA,EAAUr8T,EAAOwoU,EAAK75J,EAC1C,CACF,EAgCDxxK,EAAOC,QAAU,CACfq/T,cAxBF,SAAuB73S,EAAS8jT,EAAQC,GACtC,GAAuB,kBAAZ/jT,EACT,MAAM,IAAIutO,EAAW,4BAA6BA,EAAWy2E,sBAI/D,IAFA,IAAInrU,EAAOC,OAAOD,KAAKmnB,GACnBvmB,EAAIZ,EAAKc,OACNF,KAAM,GAAG,CACd,IAAImqU,EAAM/qU,EAAKY,GACXg+T,EAAYqM,EAAOF,GACvB,GAAInM,EAAJ,CACE,IAAIr8T,EAAQ4kB,EAAQ4jT,GAChBpoU,OAAmB6P,IAAVjQ,GAAuBq8T,EAAUr8T,EAAOwoU,EAAK5jT,GAC1D,IAAe,IAAXxkB,EACF,MAAM,IAAI+xP,EAAW,UAAYq2E,EAAM,YAAcpoU,EAAQ+xP,EAAWy2E,qBAG3E,MACD,IAAqB,IAAjBD,EACF,MAAM,IAAIx2E,EAAW,kBAAoBq2E,EAAKr2E,EAAW02E,eAE5D,CACF,EAICvM,WAAYA,E,+BClFd,IAAIr9D,EAAgB5hQ,EAAQ,IAQ5B,SAASw+T,EAAYiN,GACnB,GAAwB,oBAAbA,EACT,MAAM,IAAI7pU,UAAU,gCAGtB,IAAI8pU,EAEJxoU,KAAK0/O,QAAU,IAAI3xH,SAAQ,SAAyBC,GAClDw6M,EAAiBx6M,CAClB,IAED,IAAIy6M,EAAQzoU,KAGZA,KAAK0/O,QAAQ5wH,MAAK,SAASgwD,GACzB,GAAK2pJ,EAAM94T,WAAX,CAEA,IAAI7R,EACAqS,EAAIs4T,EAAM94T,WAAW3R,OAEzB,IAAKF,EAAI,EAAGA,EAAIqS,EAAGrS,IACjB2qU,EAAM94T,WAAW7R,GAAGghL,GAEtB2pJ,EAAM94T,WAAa,IARU,CAS9B,IAGD3P,KAAK0/O,QAAQ5wH,KAAO,SAAS45M,GAC3B,IAAIv3J,EAEAuuE,EAAU,IAAI3xH,SAAQ,SAASC,GACjCy6M,EAAMngF,UAAUt6H,GAChBmjD,EAAWnjD,CACZ,IAAEc,KAAK45M,GAMR,OAJAhpF,EAAQ5gE,OAAS,WACf2pJ,EAAM1jD,YAAY5zG,EACnB,EAEMuuE,CACR,EAED6oF,GAAS,SAAgBhxO,GACnBkxO,EAAMnL,SAKVmL,EAAMnL,OAAS,IAAI5+D,EAAcnnK,GACjCixO,EAAeC,EAAMnL,QACtB,GACF,CAKDhC,EAAYn8T,UAAUk+T,iBAAmB,WACvC,GAAIr9T,KAAKs9T,OACP,MAAMt9T,KAAKs9T,MAEd,EAMDhC,EAAYn8T,UAAUmpP,UAAY,SAAmB74O,GAC/CzP,KAAKs9T,OACP7tT,EAASzP,KAAKs9T,QAIZt9T,KAAK2P,WACP3P,KAAK2P,WAAWjS,KAAK+R,GAErBzP,KAAK2P,WAAa,CAACF,EAEtB,EAMD6rT,EAAYn8T,UAAU4lR,YAAc,SAAqBt1Q,GACvD,GAAKzP,KAAK2P,WAAV,CAGA,IAAIG,EAAQ9P,KAAK2P,WAAWvN,QAAQqN,IACrB,IAAXK,GACF9P,KAAK2P,WAAWI,OAAOD,EAAO,EAH/B,CAKF,EAMDwrT,EAAYr9T,OAAS,WACnB,IAAI6gL,EAIJ,MAAO,CACL2pJ,MAJU,IAAInN,GAAY,SAAkBnnT,GAC5C2qK,EAAS3qK,CACV,IAGC2qK,OAAQA,EAEX,EAEDliL,EAAOC,QAAUy+T,C,+BChGjB1+T,EAAOC,QAAU,SAAgBosB,GAC/B,OAAO,SAAc7oB,GACnB,OAAO6oB,EAAStrB,MAAM,KAAMyC,EAC7B,CACF,C,+BCxBD,IAAIw+E,EAAQ9hF,EAAQ,IAQpBF,EAAOC,QAAU,SAAsByqT,GACrC,OAAO1oO,EAAMizE,SAASy1J,KAAsC,IAAzBA,EAAQqU,YAC5C,C,+BCHD,IAAIgN,EAAuB7rU,EAAQ,KAEnC,SAAS8rU,IAAkB,CAC3B,SAASC,IAA2B,CACpCA,EAAuBC,kBAAoBF,EAE3ChsU,EAAOC,QAAU,WACf,SAASksU,EAAKnqU,EAAOspR,EAAUzoB,EAAe3xM,EAAUk7Q,EAAcC,GACpE,GAAIA,IAAWN,EAAf,CAIA,IAAI1nU,EAAM,IAAImU,MACZ,mLAKF,MADAnU,EAAI6a,KAAO,sBACL7a,CAPL,CAQF,CAED,SAASioU,IACP,OAAOH,CACR,CAHDA,EAAKztC,WAAaytC,EAMlB,IAAII,EAAiB,CACnBl5T,MAAO84T,EACPK,OAAQL,EACR5xD,KAAM4xD,EACNxuF,KAAMwuF,EACN9pJ,OAAQ8pJ,EACR/rU,OAAQ+rU,EACR9rT,OAAQ8rT,EACRM,OAAQN,EAERlwD,IAAKkwD,EACLnuC,QAASsuC,EACT3rS,QAASwrS,EACT9/I,YAAa8/I,EACb5tC,WAAY+tC,EACZ/mM,KAAM4mM,EACNltC,SAAUqtC,EACVnqE,MAAOmqE,EACPjqE,UAAWiqE,EACX/qS,MAAO+qS,EACPI,MAAOJ,EAEPK,eAAgBV,EAChBC,kBAAmBF,GAKrB,OAFAO,EAAerqE,UAAYqqE,EAEpBA,CACR,C,+BCrDDvsU,EAAOC,QAFoB,8C,+BCP3BM,OAAOmB,eAAezB,EAAS,aAAc,CAC3C4C,OAAO,IAET5C,EAAQmG,QAQR,WACE,IAAK,IAAI2lO,EAAO5qO,UAAUC,OAAQ+9T,EAAap5T,MAAMgmO,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACjFmzF,EAAWnzF,GAAQ7qO,UAAU6qO,GAG/B,SAAS4gG,IACP,IAAK,IAAIC,EAAQ1rU,UAAUC,OAAQo0J,EAAOzvJ,MAAM8mU,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChFt3K,EAAKs3K,GAAS3rU,UAAU2rU,GAG1B,IAAIzyT,EAAQ,KAaZ,OAXA8kT,EAAW79T,SAAQ,SAAU49T,GAC3B,GAAa,MAAT7kT,EAAJ,CAIA,IAAIpX,EAASi8T,EAAUn+T,WAAM+R,EAAW0iJ,GAC1B,MAAVvyJ,IACFoX,EAAQpX,EAJT,CAMF,IAEMoX,CACR,CAED,OAAO,EAAI0yT,EAA6B3mU,SAASwmU,EAClD,EAjCD,IAIgCtmU,EAJ5B0mU,EAA8B9sU,EAAQ,KAEtC6sU,GAE4BzmU,EAF0B0mU,IAEL1mU,EAAI2mU,WAAa3mU,EAAM,CAAEF,QAASE,GA8BvFtG,EAAOC,QAAUA,EAAO,O,+BCvCxBM,OAAOmB,eAAezB,EAAS,aAAc,CAC3C4C,OAAO,IAET5C,EAAQmG,QAYR,SAAoCinH,GAClC,SAAS6/M,EAAUxuC,EAAY18R,EAAOspR,EAAUzoB,EAAe3xM,EAAUk7Q,GACvE,IAAIe,EAAoBtqE,GAAiB,gBACrCuqE,EAAmBhB,GAAgB9gD,EAEvC,GAAuB,MAAnBtpR,EAAMspR,GACR,OAAIoT,EACK,IAAIlmR,MAAM,YAAc04C,EAAW,KAAOk8Q,EAAhC,2BAAsFD,EAAoB,MAGtH,KAGT,IAAK,IAAIphG,EAAO5qO,UAAUC,OAAQo0J,EAAOzvJ,MAAMgmO,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9Fx2E,EAAKw2E,EAAO,GAAK7qO,UAAU6qO,GAG7B,OAAO3+G,EAAStsH,WAAM+R,EAAW,CAAC9Q,EAAOspR,EAAU6hD,EAAmBj8Q,EAAUk8Q,GAAkB/4N,OAAOmhD,GAC1G,CAED,IAAI63K,EAAmBH,EAAUtoU,KAAK,MAAM,GAG5C,OAFAyoU,EAAiB3uC,WAAawuC,EAAUtoU,KAAK,MAAM,GAE5CyoU,CACR,EACDrtU,EAAOC,QAAUA,EAAO,O,sDC1CxB,YAQAD,EAAOC,QAAU,SAAuBqtU,GACpC,IAAIrtU,EAAU,CAAC,EACFuxR,EAAGtxR,EAAQ,IAAiBuxR,EAAGvxR,EAAQ,GAASwU,EAAExU,EAAQ,IAAa,SAASkX,EAAEC,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAEpW,UAAUC,OAAOmW,IAAID,GAAG,WAAW4tQ,mBAAmB/jR,UAAUoW,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,gHAAiH,CACpZ,IAAI25Q,EAAGQ,EAAGmd,mDAAmD1d,EAAG,MAAMC,EAAG,MAAMr5G,EAAG,MAAMs5G,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMG,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAM8d,EAAG,MAAM5jR,EAAG,MAAM+jR,EAAG,MAAMC,EAAG,MAAMC,EAAG,MACvM,GAAG,oBAAoBrsS,QAAQA,OAAOgqS,IAAI,CAAC,IAAInwR,EAAE7Z,OAAOgqS,IAAIzc,EAAG1zQ,EAAE,iBAAiB2zQ,EAAG3zQ,EAAE,gBAAgBs6J,EAAGt6J,EAAE,kBAAkB4zQ,EAAG5zQ,EAAE,qBAAqB6zQ,EAAG7zQ,EAAE,kBAAkB8zQ,EAAG9zQ,EAAE,kBAAkB+zQ,EAAG/zQ,EAAE,iBAAiBk0Q,EAAGl0Q,EAAE,qBAAqBm0Q,EAAGn0Q,EAAE,kBAAkBo0Q,EAAGp0Q,EAAE,uBAAuBq0Q,EAAGr0Q,EAAE,cAAcmyR,EAAGnyR,EAAE,cAAcuO,EAAGvO,EAAE,eAAeA,EAAE,eAAesyR,EAAGtyR,EAAE,0BAA0BuyR,EAAGvyR,EAAE,mBAAmBwyR,EAAGxyR,EAAE,sBAAuB,KAAIyyR,EAAG,oBAAoBtsS,QAAQA,OAAOC,SACjf,SAASsgC,EAAG7sB,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE44R,GAAI54R,EAAE44R,IAAK54R,EAAE,eAA0CA,EAAE,IAAK,CAC5H,SAAS64R,EAAG74R,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEg4I,aAAah4I,EAAE6H,MAAM,KAAK,GAAG,kBAAkB7H,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKygK,EAAG,MAAM,WAAW,KAAKq5G,EAAG,MAAM,SAAS,KAAKE,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKO,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBv6Q,EAAE,OAAOA,EAAE82R,UAAU,KAAK5c,EAAG,OAAOl6Q,EAAEg4I,aAAa,WAAW,YAAY,KAAKiiI,EAAG,OAAOj6Q,EAAE+/E,SAASi4D,aAAa,WAAW,YAAY,KAAKqiI,EAAG,IAAIp6Q,EAAED,EAAE4iC,OACnd,OAD0d3iC,EAAEA,EAAE+3I,aAAa/3I,EAAE4H,MAAM,GAC5e7H,EAAEg4I,cAAc,KAAK/3I,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAKu6Q,EAAG,OAAOqe,EAAG74R,EAAEzE,MAAM,KAAKmZ,EAAG,OAAOmkR,EAAG74R,EAAEm6R,SAAS,KAAK7B,EAAGr4R,EAAED,EAAEg4R,SAASh4R,EAAEA,EAAE64L,MAAM,IAAI,OAAOggG,EAAG74R,EAAEC,GAAc,CAAV,MAAMC,GAAI,EAAC,OAAO,IAAK,UAAS44R,EAAG94R,GAAG,IAAIC,EAAED,EAAEE,EAAEF,EAAE,GAAGA,EAAE67O,UAAU,KAAK57O,EAAE84O,QAAQ94O,EAAEA,EAAE84O,WAAW,CAAC/4O,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAASsoP,SAAcpoP,EAAED,EAAE84O,QAAQ/4O,EAAEC,EAAE84O,aAAa/4O,EAAG,QAAO,IAAIC,EAAE22N,IAAI12N,EAAE,IAAK,UAAS64R,EAAG/4R,GAAG,GAAG84R,EAAG94R,KAAKA,EAAE,MAAMmB,MAAMpB,EAAE,KAAO,CACnZ,SAASi5R,EAAGh5R,GAAG,IAAIC,EAAED,EAAE67O,UAAU,IAAI57O,EAAE,CAAS,GAAG,QAAXA,EAAE64R,EAAG94R,IAAe,MAAMmB,MAAMpB,EAAE,MAAM,OAAOE,IAAID,EAAE,KAAKA,CAAE,KAAI,IAAIE,EAAEF,EAAEqF,EAAEpF,IAAI,CAAC,IAAIwB,EAAEvB,EAAE64O,OAAO,GAAG,OAAOt3O,EAAE,MAAM,IAAI6D,EAAE7D,EAAEo6O,UAAU,GAAG,OAAOv2O,EAAE,CAAY,GAAG,QAAdD,EAAE5D,EAAEs3O,QAAmB,CAAC74O,EAAEmF,EAAE,QAAS,MAAM,IAAG5D,EAAEqpB,QAAQxlB,EAAEwlB,MAAM,CAAC,IAAIxlB,EAAE7D,EAAEqpB,MAAMxlB,GAAG,CAAC,GAAGA,IAAIpF,EAAE,OAAO64R,EAAGt3R,GAAGzB,EAAE,GAAGsF,IAAID,EAAE,OAAO0zR,EAAGt3R,GAAGxB,EAAEqF,EAAEA,EAAEo0O,OAAQ,OAAMv4O,MAAMpB,EAAE,KAAO,IAAGG,EAAE64O,SAAS1zO,EAAE0zO,OAAO74O,EAAEuB,EAAE4D,EAAEC,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGC,EAAE/D,EAAEqpB,MAAMtlB,GAAG,CAAC,GAAGA,IAAItF,EAAE,CAACqF,GAAE,EAAGrF,EAAEuB,EAAE4D,EAAEC,EAAE,KAAM,IAAGE,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAE5D,EAAEvB,EAAEoF,EAAE,KAAM,CAAAE,EAAEA,EAAEk0O,OAAQ,KAAIn0O,EAAE,CAAC,IAAIC,EAAEF,EAAEwlB,MAAMtlB,GAAG,CAAC,GAAGA,IAC5ftF,EAAE,CAACqF,GAAE,EAAGrF,EAAEoF,EAAED,EAAE5D,EAAE,KAAM,IAAG+D,IAAIH,EAAE,CAACE,GAAE,EAAGF,EAAEC,EAAEpF,EAAEuB,EAAE,KAAM,CAAA+D,EAAEA,EAAEk0O,OAAQ,KAAIn0O,EAAE,MAAMpE,MAAMpB,EAAE,KAAO,CAAC,IAAGG,EAAE27O,YAAYx2O,EAAE,MAAMlE,MAAMpB,EAAE,KAAO,IAAG,IAAIG,EAAE02N,IAAI,MAAMz1N,MAAMpB,EAAE,MAAM,OAAOG,EAAE84O,UAAUziJ,UAAUr2F,EAAEF,EAAEC,CAAE,UAASg5R,EAAGj5R,GAAW,KAARA,EAAEg5R,EAAGh5R,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAE22N,KAAK,IAAI32N,EAAE22N,IAAI,OAAO32N,EAAE,GAAGA,EAAE6qB,MAAM7qB,EAAE6qB,MAAMiuN,OAAO94O,EAAEA,EAAEA,EAAE6qB,UAAU,CAAC,GAAG7qB,IAAID,EAAE,MAAM,MAAMC,EAAEy5O,SAAS,CAAC,IAAIz5O,EAAE84O,QAAQ94O,EAAE84O,SAAS/4O,EAAE,OAAO,KAAKC,EAAEA,EAAE84O,MAAO,CAAA94O,EAAEy5O,QAAQX,OAAO94O,EAAE84O,OAAO94O,EAAEA,EAAEy5O,OAAQ,CAAC,QAAO,IAAK,CAC5L,SAASy/C,EAAGn5R,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAE67O,UAAU,OAAO57O,GAAG,CAAC,GAAGA,IAAID,GAAGC,IAAIC,EAAE,OAAM,EAAGD,EAAEA,EAAE84O,MAAO,QAAM,CAAG,CACpX,IAI8V6lD,EAJ1VxF,EAAG68B,EAAc/5E,kBAAkBm9C,EAAG48B,EAAc95E,mBAAmBm9C,EAAG28B,EAAc55E,oBAAoBk9C,EAAG08B,EAAcp5E,iBAAiB28C,EAAGy8B,EAAcl5E,iBAAiB08C,EAAGw8B,EAAcr9E,eAAe8gD,EAAGu8B,EAAcz7E,mBAAmBo/C,EAAGq8B,EAAcz5E,wBAAwBq9C,EAAGo8B,EAAc/6E,cAAcy+C,EAAGs8B,EAAcj5E,qBAAqB88C,EAAGm8B,EAAc15E,mBAAmBy9C,EAAGi8B,EAAcr7E,gBAAgBs/C,EAAG+7B,EAAcp7E,cAAcu/C,EAAG67B,EAAcn7E,UAAUu/C,EAAG47B,EAAct7E,kBACtf2/C,EAAG27B,EAAcv7E,iBAAiBggD,EAAGu7B,EAAcC,oBAAoB37B,EAAG07B,EAAcE,kBAAkBx7B,EAAGs7B,EAAcG,oBAAoBv7B,GAAGo7B,EAAcI,0BAA0Bv7B,GAAGm7B,EAAcK,aAAap7B,GAAG+6B,EAAcM,yBAAyBl7B,GAAG46B,EAAcO,wBAAwBz8R,GAAGk8R,EAAcn5E,mBAAmBw+C,GAAG26B,EAAcQ,sBAAsB38R,GAAGm8R,EAAcS,cAAcl7B,GAAGy6B,EAAcU,gBAAgBp7B,GAAG06B,EAAcW,eAAel2J,GAAGu1J,EAAcY,gBACvel7B,GAAGs6B,EAAca,uBAAuBl7B,GAAGq6B,EAAcc,oBAAoBjsO,GAAGmrO,EAAce,0BAA0Bn7B,GAAGo6B,EAAc58F,YAAYyiE,GAAGm6B,EAAcl7E,uBAAuBghD,GAAGk6B,EAAcgB,iBAAiBj7B,GAAGi6B,EAAcv5E,YAAYu/C,GAAGg6B,EAAcx6E,aAAaygD,GAAG+5B,EAAc98F,aAAaojE,GAAG05B,EAAch7E,wBAAwB9mO,GAAG8hT,EAAcl8F,YAAY4iE,GAAGs5B,EAAcj7E,yBAAyB4hD,GAAGq5B,EAAciB,iBAAiBr6B,GAAGo5B,EAAcl6E,aAAa+gD,GAAGm5B,EAAch6E,iBACzfrvN,GAAGqpS,EAAcj6E,eAAeuhD,GAAG04B,EAAckB,mBAAmB35B,GAAGy4B,EAAch5E,eAAe0gD,GAAGs4B,EAAcmB,cAAcx5B,GAAGq4B,EAAcoB,wBAAwBx5B,GAAGo4B,EAAcqB,+BAA+Bx5B,GAAGm4B,EAAcsB,0BAA0Bx5B,GAAGk4B,EAAcuB,yBAAyBx5B,GAAGi4B,EAAcwB,oBAAoBx5B,GAAGg4B,EAAcyB,wBAAwBx5B,GAAG+3B,EAAc0B,mBAAmBx5B,GAAG83B,EAAc2B,uBAAuBx5B,GAAG63B,EAAc4B,0BAC5dx5B,GAAG43B,EAAc6B,2BAA2Bx5B,GAAG23B,EAAc8B,yBAAyBx5B,GAAG03B,EAAc+B,wBAAwBx5B,GAAGy3B,EAAcgC,gBAAgBx5B,GAAGw3B,EAAciC,oBAAoB7qB,GAAG4oB,EAAckC,+CAA+Cz5B,GAAGu3B,EAAcmC,wBAAwBz5B,GAAGs3B,EAAcoC,+BAAkC,SAASx5B,GAAG7+R,GAAG,QAAG,IAAS4+R,EAAG,IAAI,MAAMz9R,OAA4E,CAAnE,MAAMjB,GAAG,IAAID,EAAEC,EAAE4tK,MAAM39G,OAAOrB,MAAM,gBAAgB8vO,EAAG3+R,GAAGA,EAAE,IAAI,EAAG,OAAM,KAAK2+R,EAAG5+R,CAAE,KAAI8+R,IAAG,EAC5e,SAASC,GAAG/+R,EAAEC,GAAG,IAAID,GAAG8+R,GAAG,MAAM,GAAGA,IAAG,EAAG,IAAI5+R,EAAEiB,MAAM84R,kBAAkB94R,MAAM84R,uBAAkB,EAAO,IAAI,GAAGh6R,EAAE,GAAGA,EAAE,WAAW,MAAMkB,OAAS,EAACjY,OAAOmB,eAAe4V,EAAE/U,UAAU,QAAQ,CAAC4V,IAAI,WAAW,MAAMK,OAAS,IAAG,kBAAkBnV,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUgU,EAAE,GAAqB,CAAjB,MAAMmjE,GAAG,IAAI/9D,EAAE+9D,CAAE,CAAAp3E,QAAQC,UAAU+T,EAAE,GAAGC,EAAG,KAAI,CAAC,IAAIA,EAAEpT,MAAoB,CAAb,MAAMu2E,GAAG/9D,EAAE+9D,CAAE,CAAApjE,EAAEnT,KAAKoT,EAAE/U,UAAW,KAAI,CAAC,IAAI,MAAMiW,OAAsB,CAAb,MAAMiiE,GAAG/9D,EAAE+9D,CAAE,CAAApjE,GAAI,CAC3J,CAD4J,MAAMojE,GAAG,GAAGA,GAAG/9D,GAAG,kBAAkB+9D,EAAE0qG,MAAM,CAAC,IAAI,IAAIrsK,EAAE2hE,EAAE0qG,MAAM19G,MAAM,MACnf9qD,EAAED,EAAEyoK,MAAM19G,MAAM,MAAM7qD,EAAE9D,EAAE1X,OAAO,EAAEyb,EAAEF,EAAEvb,OAAO,EAAE,GAAGwb,GAAG,GAAGC,GAAG/D,EAAE8D,KAAKD,EAAEE,IAAIA,IAAI,KAAK,GAAGD,GAAG,GAAGC,EAAED,IAAIC,IAAI,GAAG/D,EAAE8D,KAAKD,EAAEE,GAAG,CAAC,GAAG,IAAID,GAAG,IAAIC,EAAG,MAAMD,IAAQ,IAAJC,GAAS/D,EAAE8D,KAAKD,EAAEE,GAAG,MAAM,KAAK/D,EAAE8D,GAAGurD,QAAQ,WAAW,cAAc,GAAGvrD,GAAG,GAAGC,GAAG,KAAM,CAAC,CAAC,CADnI,QAC2Is5R,IAAG,EAAG39R,MAAM84R,kBAAkB/5R,CAAE,QAAOF,EAAEA,EAAEA,EAAEg4I,aAAah4I,EAAE6H,KAAK,IAAIg3R,GAAG7+R,GAAG,EAAG,KAAIg/R,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGl/R,GAAG,MAAM,CAACu2F,QAAQv2F,EAAG,UAAS8O,GAAE9O,GAAG,EAAEi/R,KAAKj/R,EAAEu2F,QAAQyoM,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAM,UAAS/3I,GAAElnJ,EAAEC,GAAGg/R,KAAKD,GAAGC,IAAIj/R,EAAEu2F,QAAQv2F,EAAEu2F,QAAQt2F,CAAE,CAC3d,IAAIk/R,GAAG,CAAC,EAAE90L,GAAE60L,GAAGC,IAAI/3I,GAAE83I,IAAG,GAAIiO,GAAGhO,GAAG,SAASC,GAAGp/R,EAAEC,GAAG,IAAIC,EAAEF,EAAEzE,KAAKytQ,aAAa,IAAI9oQ,EAAE,OAAOi/R,GAAG,IAAI95R,EAAErF,EAAEg5O,UAAU,GAAG3zO,GAAGA,EAAE4pS,8CAA8ChvS,EAAE,OAAOoF,EAAE6pS,0CAA0C,IAAS5pS,EAAL7D,EAAE,CAAC,EAAI,IAAI6D,KAAKpF,EAAEuB,EAAE6D,GAAGrF,EAAEqF,GAAoH,OAAjHD,KAAIrF,EAAEA,EAAEg5O,WAAYi2D,4CAA4ChvS,EAAED,EAAEkvS,0CAA0CztS,GAAUA,CAAE,UAAS4lJ,GAAErnJ,GAAyB,OAAO,QAA7BA,EAAEA,EAAE+oQ,yBAAmC,IAAS/oQ,CAAE,UAASq/R,KAAKvwR,GAAEs4I,IAAGt4I,GAAEu7F,GAAG,CAC5c,SAASvoF,GAAG9hB,EAAEC,EAAEC,GAAG,GAAGmqG,GAAE9T,UAAU4oM,GAAG,MAAMh+R,MAAMpB,EAAE,MAAMmnJ,GAAE78C,GAAEpqG,GAAGinJ,GAAEE,GAAElnJ,EAAG,UAAS8hB,GAAGhiB,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAEg5O,UAAgC,GAAtBh5O,EAAEC,EAAE8oQ,kBAAqB,oBAAoB1jQ,EAAEkqS,gBAAgB,OAAOrvS,EAAwB,IAAI,IAAIuB,KAA9B4D,EAAEA,EAAEkqS,kBAAiC,KAAK9tS,KAAKzB,GAAG,MAAMmB,MAAMpB,EAAE,IAAI84R,EAAG54R,IAAI,UAAUwB,IAAI,OAAO04Q,EAAG,CAAC,EAAEj6Q,EAAEmF,EAAG,UAASm6R,GAAGx/R,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEg5O,YAAYh5O,EAAEyvS,2CAA2CtQ,GAAGgO,GAAG9iM,GAAE9T,QAAQ2wD,GAAE78C,GAAErqG,GAAGknJ,GAAEE,GAAEA,GAAE7wD,UAAe,CAAG,CAC7Z,SAASkpM,GAAGz/R,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAEg5O,UAAU,IAAI3zO,EAAE,MAAMlE,MAAMpB,EAAE,MAAMG,GAAGF,EAAEgiB,GAAGhiB,EAAEC,EAAEktS,IAAI9nS,EAAEoqS,0CAA0CzvS,EAAE8O,GAAEs4I,IAAGt4I,GAAEu7F,IAAG68C,GAAE78C,GAAErqG,IAAI8O,GAAEs4I,IAAGF,GAAEE,GAAElnJ,EAAG,KAAIw/R,GAAG,KAAKC,GAAG,MAAuBroI,EAAfj6J,EAAEk9O,gBAAkB,IAAIqlD,GAAG,EAAEjyJ,GAAE,EACjN,SAASkyJ,GAAG7/R,GAAG,GAAG,KAAK,EAAEA,GAAG,OAAO2tI,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE3tI,GAAG,OAAO2tI,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE3tI,GAAG,OAAO2tI,GAAE,GAAG,EAAE,IAAI1tI,EAAE,GAAGD,EAAE,OAAG,IAAIC,GAAS0tI,GAAE,GAAG1tI,GAAK,KAAO,GAAFD,IAAa2tI,GAAE,GAAG,IAAc,KAAX1tI,EAAE,IAAID,IAAkB2tI,GAAE,GAAG1tI,GAAK,KAAO,IAAFD,IAAc2tI,GAAE,EAAE,KAAgB,KAAZ1tI,EAAE,KAAKD,IAAkB2tI,GAAE,EAAE1tI,GAAK,KAAO,KAAFD,IAAe2tI,GAAE,EAAE,MAAoB,KAAf1tI,EAAE,QAAQD,IAAkB2tI,GAAE,EAAE1tI,GAAkB,KAAhBA,EAAE,SAASD,IAAkB2tI,GAAE,EAAE1tI,GAAO,SAAFD,GAAkB2tI,GAAE,EAAE,UAAY,KAAO,UAAF3tI,IAAoB2tI,GAAE,EAAE,WAA2B,KAAjB1tI,EAAE,UAAUD,IAAkB2tI,GAAE,EAAE1tI,GAAK,KAAK,WAAWD,IAAU2tI,GAAE,EAAE,aACjfA,GAAE,EAAS3tI,EAAE,CACb,SAASggS,GAAGhgS,EAAEC,GAAG,IAAIC,EAAEF,EAAE4iS,aAAa,GAAG,IAAI1iS,EAAE,OAAOytI,GAAE,EAAE,IAAItoI,EAAE,EAAE5D,EAAE,EAAE6D,EAAEtF,EAAE6iS,aAAat9R,EAAEvF,EAAE8iS,eAAet9R,EAAExF,EAAE+iS,YAAY,GAAG,IAAIz9R,EAAED,EAAEC,EAAE7D,EAAEksI,GAAE,QAAQ,GAAiB,KAAdroI,EAAI,UAAFpF,GAAkB,CAAC,IAAIkjE,EAAE99D,GAAGC,EAAE,IAAI69D,GAAG/9D,EAAEw6R,GAAGz8N,GAAG3hE,EAAEksI,IAAS,KAALnoI,GAAGF,KAAUD,EAAEw6R,GAAGr6R,GAAG/D,EAAEksI,GAAI,MAAY,KAAProI,EAAEpF,GAAGqF,IAASF,EAAEw6R,GAAGv6R,GAAG7D,EAAEksI,IAAG,IAAInoI,IAAIH,EAAEw6R,GAAGr6R,GAAG/D,EAAEksI,IAAG,GAAG,IAAItoI,EAAE,OAAO,EAAqC,GAAxBA,EAAEnF,IAAI,GAAjBmF,EAAE,GAAG46R,GAAG56R,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAIpF,GAAGA,IAAIoF,GAAG,KAAKpF,EAAEsF,GAAG,CAAO,GAANs6R,GAAG5/R,GAAMwB,GAAGksI,GAAE,OAAO1tI,EAAE0tI,GAAElsI,CAAE,CAAmB,GAAG,KAAtBxB,EAAED,EAAEijS,gBAAwB,IAAIjjS,EAAEA,EAAEkjS,cAAcjjS,GAAGoF,EAAE,EAAEpF,GAAcwB,EAAE,IAAbvB,EAAE,GAAG+/R,GAAGhgS,IAAUoF,GAAGrF,EAAEE,GAAGD,IAAIwB,EAAE,OAAO4D,CAAE,CAC5e,SAAS66R,GAAGlgS,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE4iS,cAAsC5iS,EAAI,WAAFA,EAAa,WAAW,CAAE,UAASmgS,GAAGngS,EAAEC,GAAG,OAAOD,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAEogS,GAAG,IAAIngS,IAASkgS,GAAG,GAAGlgS,GAAGD,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAEogS,GAAG,KAAKngS,IAASkgS,GAAG,EAAElgS,GAAGD,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAEogS,GAAG,MAAMngS,MAA4B,KAAjBD,EAAEogS,GAAG,SAASngS,MAAWD,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBC,EAAEmgS,GAAG,WAAWngS,MAAWA,EAAE,WAAWA,EAAE,MAAMkB,MAAMpB,EAAE,IAAIC,GAAK,UAASogS,GAAGpgS,GAAG,OAAOA,GAAGA,CAAE,UAASqgS,GAAGrgS,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAE,GAAGA,EAAEA,IAAID,EAAExW,KAAKuW,GAAG,OAAOC,CAAE,CACvd,SAASqgS,GAAGtgS,EAAEC,EAAEC,GAAGF,EAAE4iS,cAAc3iS,EAAE,IAAIoF,EAAEpF,EAAE,EAAED,EAAE8iS,gBAAgBz9R,EAAErF,EAAE+iS,aAAa19R,GAAErF,EAAEA,EAAEwjS,YAAWvjS,EAAE,GAAGggS,GAAGhgS,IAAQC,CAAE,KAAI+/R,GAAG3jS,KAAKmnS,MAAMnnS,KAAKmnS,MAAiC,SAAYzjS,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAI4gS,GAAG5gS,GAAGikS,GAAG,GAAG,CAAE,EAAzErD,GAAGtkS,KAAKwB,IAAImmS,GAAG3nS,KAAKyB,IACzK,IAAIyuB,GAAGnvB,EAAE+8O,yBAAyBymD,GAAGxjS,EAAEgkS,0BAA0BL,GAAG3jS,EAAE2yS,wBAAwB/O,GAAG5jS,EAAE6yS,qBAAqBhP,GAAG7jS,EAAE+yS,sBAAsBjP,GAAG9jS,EAAEk9O,aAAa6mD,GAAG/jS,EAAEkzS,iCAAiChP,GAAGlkS,EAAEozS,2BAA2BjP,GAAGnkS,EAAEumS,8BAA8BnC,GAAGpkS,EAAEikS,wBAAwBQ,GAAGzkS,EAAEwzS,qBAAqB9O,GAAG1kS,EAAEg9O,sBAAsB2nD,GAAG,CAAC,EAAEC,QAAG,IAASf,GAAGA,GAAG,WAAY,EAACgB,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGlB,KAAK93I,GAAE,IAAIg5I,GAAGlB,GAAG,WAAW,OAAOA,KAAKkB,EAAG,EACzc,SAASC,KAAK,OAAOlB,MAAM,KAAKG,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKK,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,QAAQ,MAAM5gS,MAAMpB,EAAE,MAAQ,UAASwiS,GAAGviS,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOuhS,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOK,GAAG,KAAK,GAAG,OAAOC,GAAG,QAAQ,MAAM5gS,MAAMpB,EAAE,MAAQ,UAASyiS,GAAGxiS,EAAEC,GAAW,OAARD,EAAEuiS,GAAGviS,GAAUwsB,GAAGxsB,EAAEC,EAAG,UAASwiS,GAAGziS,EAAEC,EAAEC,GAAW,OAARF,EAAEuiS,GAAGviS,GAAU6gS,GAAG7gS,EAAEC,EAAEC,EAAG,UAASopJ,KAAI,GAAG,OAAO64I,GAAG,CAAC,IAAIniS,EAAEmiS,GAAGA,GAAG,KAAKnB,GAAGhhS,EAAG,CAAA0iS,IAAK,CAC/a,SAASA,KAAK,IAAIN,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIpiS,EAAE,EAAE,IAAI,IAAIC,EAAEiiS,GAAGM,GAAG,IAAG,WAAW,KAAKxiS,EAAEC,EAAElW,OAAOiW,IAAI,CAAC,IAAIE,EAAED,EAAED,GAAG,GAAGE,EAAEA,GAAE,SAAU,OAAOA,EAAG,CAAC,IAAEgiS,GAAG,IAA4E,CAAvE,MAAMhiS,GAAG,MAAM,OAAOgiS,KAAKA,GAAGA,GAAGjmS,MAAM+D,EAAE,IAAI6gS,GAAGU,GAAGj4I,IAAGppJ,CAAG,CAA7J,QAAqKkiS,IAAG,CAAG,CAAC,CAAC,KAAIqe,GAAG7mC,EAAGud,wBAAwF,IAAI5tI,GAAE,oBAAoBrgK,OAAOukP,GAAGvkP,OAAOukP,GAA3G,SAAYztO,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAE,EAAiD0iS,GAAGz5S,OAAOgC,UAAUyC,eACnY,SAASq1S,GAAGhjS,EAAEC,GAAG,GAAGspJ,GAAEvpJ,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIC,EAAEhX,OAAOD,KAAK+W,GAAGqF,EAAEnc,OAAOD,KAAKgX,GAAG,GAAGC,EAAEnW,SAASsb,EAAEtb,OAAO,OAAM,EAAG,IAAIsb,EAAE,EAAEA,EAAEnF,EAAEnW,OAAOsb,IAAI,IAAIs9R,GAAG91S,KAAKoT,EAAEC,EAAEmF,MAAMkkJ,GAAEvpJ,EAAEE,EAAEmF,IAAIpF,EAAEC,EAAEmF,KAAK,OAAM,EAAG,OAAM,CAAG,CACrQ,SAAS89R,GAAGnjS,GAAG,OAAOA,EAAE42N,KAAK,KAAK,EAAE,OAAOioE,GAAG7+R,EAAEzE,MAAM,KAAK,GAAG,OAAOsjS,GAAG,QAAQ,KAAK,GAAG,OAAOA,GAAG,YAAY,KAAK,GAAG,OAAOA,GAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO7+R,EAAE++R,GAAG/+R,EAAEzE,MAAK,GAAM,KAAK,GAAG,OAAOyE,EAAE++R,GAAG/+R,EAAEzE,KAAKqnC,QAAO,GAAM,KAAK,GAAG,OAAO5iC,EAAE++R,GAAG/+R,EAAEzE,KAAK4+R,SAAQ,GAAM,KAAK,EAAE,OAAOn6R,EAAE++R,GAAG/+R,EAAEzE,MAAK,GAAM,QAAQ,MAAM,GAAI,UAAS6nS,GAAGpjS,EAAEC,GAAG,GAAGD,GAAGA,EAAE04I,aAAa,CAA6B,IAAI,IAAIx4I,KAApCD,EAAEk6Q,EAAG,CAAC,EAAEl6Q,GAAGD,EAAEA,EAAE04I,kBAA4B,IAASz4I,EAAEC,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,CAAE,QAAOA,CAAE,KAAIojS,GAAGnE,GAAG,MAAMoE,GAAG,KAAKC,GAAG,KAAKxhR,GAAG,KACpe,SAASE,KAAKF,GAAGwhR,GAAGD,GAAG,IAAK,UAASI,GAAG1jS,EAAEC,GAAGD,EAAEA,EAAEzE,KAAKwkF,SAASs6M,GAAInzI,GAAEm8I,GAAGrjS,EAAEy3R,eAAez3R,EAAEy3R,cAAcx3R,IAAIinJ,GAAEm8I,GAAGrjS,EAAE03R,gBAAgB13R,EAAE03R,eAAez3R,EAAG,UAAS0jS,GAAG3jS,GAAG,IAAIC,EAAEojS,GAAG9sM,QAAQznF,GAAEu0R,IAAIrjS,EAAEA,EAAEzE,KAAKwkF,SAASs6M,EAAGr6R,EAAEy3R,cAAcx3R,EAAED,EAAE03R,eAAez3R,CAAE,UAAS4jS,GAAG7jS,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIE,EAAEF,EAAE67O,UAAU,IAAI77O,EAAEkyS,WAAWjyS,KAAKA,EAAtB,CAAwB,GAAG,OAAOC,IAAIA,EAAEgyS,WAAWjyS,KAAKA,EAAE,MAAWC,EAAEgyS,YAAYjyS,CAAnF,MAA0FD,EAAEkyS,YAAYjyS,EAAE,OAAOC,IAAIA,EAAEgyS,YAAYjyS,GAAGD,EAAEA,EAAE+4O,MAAO,CAAC,CAC7b,SAAS+qD,GAAG9jS,EAAEC,GAAGqjS,GAAGtjS,EAAE+hB,GAAGwhR,GAAG,KAAsB,QAAjBvjS,EAAEA,EAAEoyS,eAAuB,OAAOpyS,EAAEqyS,eAAe,KAAKryS,EAAEsyS,MAAMryS,KAAK8jS,IAAG,GAAI/jS,EAAEqyS,aAAa,KAAM,UAAS7oJ,GAAExpJ,EAAEC,GAAG,GAAG8hB,KAAK/hB,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAE8hB,GAAG/hB,EAAEC,EAAE,YAAWA,EAAE,CAAC+K,QAAQhL,EAAEyyS,aAAaxyS,EAAEnT,KAAK,MAAS,OAAOy2S,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMniS,MAAMpB,EAAE,MAAMwjS,GAAGtjS,EAAEqjS,GAAG8O,aAAa,CAACE,MAAM,EAAED,aAAapyS,EAAEyyS,WAAW,KAAM,MAAKnP,GAAGA,GAAGz2S,KAAKmT,EAAE,OAAOo6R,EAAGr6R,EAAEy3R,cAAcz3R,EAAE03R,cAAe,KAAIsM,IAAG,EAC7b,SAAS17Q,GAAGtoB,GAAGA,EAAE6yS,YAAY,CAACC,UAAU9yS,EAAEs/R,cAAcyT,gBAAgB,KAAKC,eAAe,KAAKrjI,OAAO,CAACv4C,QAAQ,MAAMwtB,QAAQ,KAAM,UAASs/I,GAAGlkS,EAAEC,GAAGD,EAAEA,EAAE6yS,YAAY5yS,EAAE4yS,cAAc7yS,IAAIC,EAAE4yS,YAAY,CAACC,UAAU9yS,EAAE8yS,UAAUC,gBAAgB/yS,EAAE+yS,gBAAgBC,eAAehzS,EAAEgzS,eAAerjI,OAAO3vK,EAAE2vK,OAAO/qB,QAAQ5kJ,EAAE4kJ,SAAU,UAASu/I,GAAGnkS,EAAEC,GAAG,MAAM,CAACkzS,UAAUnzS,EAAEozS,KAAKnzS,EAAE22N,IAAI,EAAEy8E,QAAQ,KAAKr+R,SAAS,KAAKloB,KAAK,KAAM,CAC5Z,SAASu0P,GAAGrhP,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAE6yS,aAAwB,CAAY,IAAI3yS,GAAfF,EAAEA,EAAE2vK,QAAev4C,QAAQ,OAAOl3H,EAAED,EAAEnT,KAAKmT,GAAGA,EAAEnT,KAAKoT,EAAEpT,KAAKoT,EAAEpT,KAAKmT,GAAGD,EAAEo3H,QAAQn3H,CAAE,CAAC,CACjI,SAASokS,GAAGrkS,EAAEC,GAAG,IAAIC,EAAEF,EAAE6yS,YAAYxtS,EAAErF,EAAE67O,UAAU,GAAG,OAAOx2O,GAAoBnF,KAAhBmF,EAAEA,EAAEwtS,aAAmB,CAAC,IAAIpxS,EAAE,KAAK6D,EAAE,KAAyB,GAAG,QAAvBpF,EAAEA,EAAE6yS,iBAA4B,CAAC,EAAE,CAAC,IAAIxtS,EAAE,CAAC4tS,UAAUjzS,EAAEizS,UAAUC,KAAKlzS,EAAEkzS,KAAKx8E,IAAI12N,EAAE02N,IAAIy8E,QAAQnzS,EAAEmzS,QAAQr+R,SAAS9U,EAAE8U,SAASloB,KAAK,MAAM,OAAOwY,EAAE7D,EAAE6D,EAAEC,EAAED,EAAEA,EAAExY,KAAKyY,EAAErF,EAAEA,EAAEpT,IAAK,OAAM,OAAOoT,GAAG,OAAOoF,EAAE7D,EAAE6D,EAAErF,EAAEqF,EAAEA,EAAExY,KAAKmT,CAAE,MAAKwB,EAAE6D,EAAErF,EAAiH,OAA/GC,EAAE,CAAC4yS,UAAUztS,EAAEytS,UAAUC,gBAAgBtxS,EAAEuxS,eAAe1tS,EAAEqqK,OAAOtqK,EAAEsqK,OAAO/qB,QAAQv/I,EAAEu/I,cAAS5kJ,EAAE6yS,YAAY3yS,EAAS,CAAmB,QAAnBF,EAAEE,EAAE8yS,gBAAwB9yS,EAAE6yS,gBAAgB9yS,EAAED,EAAElT,KACnfmT,EAAEC,EAAE8yS,eAAe/yS,CAAE,CACrB,SAASqkS,GAAGtkS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE6yS,YAAY7O,IAAG,EAAG,IAAI1+R,EAAE7D,EAAEsxS,gBAAgBxtS,EAAE9D,EAAEuxS,eAAextS,EAAE/D,EAAEkuK,OAAOv4C,QAAQ,GAAG,OAAO5xH,EAAE,CAAC/D,EAAEkuK,OAAOv4C,QAAQ,KAAK,IAAIh0D,EAAE59D,EAAEtJ,EAAEknE,EAAEt2E,KAAKs2E,EAAEt2E,KAAK,KAAK,OAAOyY,EAAED,EAAEpJ,EAAEqJ,EAAEzY,KAAKoP,EAAEqJ,EAAE69D,EAAE,IAAIhmE,EAAE4C,EAAE67O,UAAU,GAAG,OAAOz+O,EAAE,CAAiB,IAAIK,GAApBL,EAAEA,EAAEy1S,aAAoBG,eAAev1S,IAAI8H,IAAI,OAAO9H,EAAEL,EAAE21S,gBAAgB72S,EAAEuB,EAAE3Q,KAAKoP,EAAEkB,EAAE41S,eAAe5vO,EAAG,CAAC,IAAG,OAAO99D,EAAE,CAA8B,IAA7B7H,EAAEgE,EAAEqxS,UAAUvtS,EAAE,EAAEnI,EAAElB,EAAEknE,EAAE,OAAO,CAAC59D,EAAEF,EAAE8tS,KAAK,IAAIjrS,EAAE7C,EAAE6tS,UAAU,IAAI9tS,EAAEG,KAAKA,EAAE,CAAC,OAAOpI,IAAIA,EAAEA,EAAEtQ,KAAK,CAACqmT,UAAUhrS,EAAEirS,KAAK,EAAEx8E,IAAItxN,EAAEsxN,IAAIy8E,QAAQ/tS,EAAE+tS,QAAQr+R,SAAS1P,EAAE0P,SACrfloB,KAAK,OAAOkT,EAAE,CAAC,IAAIxC,EAAEwC,EAAEzC,EAAE+H,EAAU,OAARE,EAAEvF,EAAEkI,EAAEjI,EAAS3C,EAAEq5N,KAAK,KAAK,EAAc,GAAG,oBAAfp5N,EAAED,EAAE81S,SAAiC,CAAC51S,EAAED,EAAE3Q,KAAKsb,EAAE1K,EAAE+H,GAAG,MAAMxF,CAAE,CAAAvC,EAAED,EAAE,MAAMwC,EAAE,KAAK,EAAExC,EAAE8qP,OAAe,KAAT9qP,EAAE8qP,MAAY,GAAG,KAAK,EAAsD,GAAG,QAA3C9iP,EAAE,oBAAdhI,EAAED,EAAE81S,SAAgC71S,EAAE3Q,KAAKsb,EAAE1K,EAAE+H,GAAGhI,SAAe,IAASgI,EAAE,MAAMxF,EAAEvC,EAAE08Q,EAAG,CAAC,EAAE18Q,EAAE+H,GAAG,MAAMxF,EAAE,KAAK,EAAEgkS,IAAG,EAAI,QAAO1+R,EAAE0P,WAAWhV,EAAEsoP,OAAO,GAAe,QAAZ9iP,EAAE/D,EAAEmjJ,SAAiBnjJ,EAAEmjJ,QAAQ,CAACt/I,GAAGE,EAAE/b,KAAK6b,GAAI,MAAK6C,EAAE,CAACgrS,UAAUhrS,EAAEirS,KAAK5tS,EAAEoxN,IAAItxN,EAAEsxN,IAAIy8E,QAAQ/tS,EAAE+tS,QAAQr+R,SAAS1P,EAAE0P,SAASloB,KAAK,MAAM,OAAOsQ,GAAGlB,EAAEkB,EAAE+K,EAAEi7D,EAAE3lE,GAAGL,EAAEA,EAAEtQ,KAAKqb,EAAE5C,GAAGC,EAAW,GAAG,QAAZF,EAAEA,EAAExY,MAC3e,IAAsB,QAAnB0Y,EAAE/D,EAAEkuK,OAAOv4C,SAAiB,MAAW9xH,EAAEE,EAAE1Y,KAAK0Y,EAAE1Y,KAAK,KAAK2U,EAAEuxS,eAAextS,EAAE/D,EAAEkuK,OAAOv4C,QAAQ,IAAzD,CAA8D,CAAS,OAAOh6H,IAAIgmE,EAAE3lE,GAAGgE,EAAEqxS,UAAU1vO,EAAE3hE,EAAEsxS,gBAAgB72S,EAAEuF,EAAEuxS,eAAe51S,EAAEonS,IAAIj/R,EAAEvF,EAAEsyS,MAAM/sS,EAAEvF,EAAEs/R,cAAc7hS,CAAE,CAAC,UAASgnS,GAAGzkS,EAAEC,EAAEC,GAA8B,GAA3BF,EAAEC,EAAE2kJ,QAAQ3kJ,EAAE2kJ,QAAQ,KAAQ,OAAO5kJ,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEjW,OAAOkW,IAAI,CAAC,IAAIoF,EAAErF,EAAEC,GAAGwB,EAAE4D,EAAE2P,SAAS,GAAG,OAAOvT,EAAE,CAAqB,GAApB4D,EAAE2P,SAAS,KAAK3P,EAAEnF,EAAK,oBAAoBuB,EAAE,MAAMN,MAAMpB,EAAE,IAAI0B,IAAIA,EAAE5U,KAAKwY,EAAG,CAAC,CAAC,KAAIq/R,IAAI,IAAItqB,EAAGtiI,WAAWynG,KAC3b,SAAS4lD,GAAGnlS,EAAEC,EAAEC,EAAEmF,GAA8BnF,EAAE,QAAXA,EAAEA,EAAEmF,EAAtBpF,EAAED,EAAEs/R,sBAAmC,IAASp/R,EAAED,EAAEk6Q,EAAG,CAAC,EAAEl6Q,EAAEC,GAAGF,EAAEs/R,cAAcp/R,EAAE,IAAIF,EAAEsyS,QAAQtyS,EAAE6yS,YAAYC,UAAU5yS,EAAG,CAC/I,IAAIulS,GAAG,CAAC9gE,UAAU,SAAS3kO,GAAG,SAAOA,EAAEA,EAAE8zS,kBAAiBhb,EAAG94R,KAAKA,CAAK,EAACy2R,gBAAgB,SAASz2R,EAAEC,EAAEC,GAAGF,EAAEA,EAAE8zS,gBAAgB,IAAIzuS,EAAE+jJ,KAAI3nJ,EAAE8jS,GAAGvlS,GAAGsF,EAAE6+R,GAAG9+R,EAAE5D,GAAG6D,EAAE+tS,QAAQpzS,OAAE,IAASC,GAAG,OAAOA,IAAIoF,EAAE0P,SAAS9U,GAAGmhP,GAAGrhP,EAAEsF,GAAGkgS,GAAGxlS,EAAEyB,EAAE4D,EAAG,EAACmxR,oBAAoB,SAASx2R,EAAEC,EAAEC,GAAGF,EAAEA,EAAE8zS,gBAAgB,IAAIzuS,EAAE+jJ,KAAI3nJ,EAAE8jS,GAAGvlS,GAAGsF,EAAE6+R,GAAG9+R,EAAE5D,GAAG6D,EAAEsxN,IAAI,EAAEtxN,EAAE+tS,QAAQpzS,OAAE,IAASC,GAAG,OAAOA,IAAIoF,EAAE0P,SAAS9U,GAAGmhP,GAAGrhP,EAAEsF,GAAGkgS,GAAGxlS,EAAEyB,EAAE4D,EAAG,EAACkxR,mBAAmB,SAASv2R,EAAEC,GAAGD,EAAEA,EAAE8zS,gBAAgB,IAAI5zS,EAAEkpJ,KAAI/jJ,EAAEkgS,GAAGvlS,GAAGyB,EAAE0iS,GAAGjkS,EAAEmF,GAAG5D,EAAEm1N,IAAI,OAAE,IAAS32N,GAAG,OAAOA,IAAIwB,EAAEuT,SAC9e/U,GAAGohP,GAAGrhP,EAAEyB,GAAG+jS,GAAGxlS,EAAEqF,EAAEnF,EAAG,GAAE,SAAS8kS,GAAGhlS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,EAAEC,GAAiB,MAAM,oBAApBvF,EAAEA,EAAEg5O,WAAsCm7D,sBAAsBn0S,EAAEm0S,sBAAsB9uS,EAAEC,EAAEC,IAAGtF,EAAE/U,YAAW+U,EAAE/U,UAAUyrS,wBAAsBqM,GAAG9iS,EAAEmF,KAAK29R,GAAGvhS,EAAE6D,GAAM,CACrN,SAAS2/R,GAAGjlS,EAAEC,EAAEC,GAAG,IAAImF,GAAE,EAAG5D,EAAE09R,GAAO75R,EAAErF,EAAEkwN,YAAyW,MAA7V,kBAAkB7qN,GAAG,OAAOA,EAAEA,EAAEkkJ,GAAElkJ,IAAI7D,EAAE4lJ,GAAEpnJ,GAAGktS,GAAG9iM,GAAE9T,QAAyBjxF,GAAGD,EAAE,QAAtBA,EAAEpF,EAAE+oQ,oBAA4B,IAAS3jQ,GAAG+5R,GAAGp/R,EAAEyB,GAAG09R,IAAIl/R,EAAE,IAAIA,EAAEC,EAAEoF,GAAGtF,EAAEs/R,cAAc,OAAOr/R,EAAE+0C,YAAO,IAAS/0C,EAAE+0C,MAAM/0C,EAAE+0C,MAAM,KAAK/0C,EAAEy2R,QAAQ+O,GAAGzlS,EAAEg5O,UAAU/4O,EAAEA,EAAE6zS,gBAAgB9zS,EAAEqF,KAAIrF,EAAEA,EAAEg5O,WAAYi2D,4CAA4CxtS,EAAEzB,EAAEkvS,0CAA0C5pS,GAAUrF,CAAE,CAC3Z,SAASilS,GAAGllS,EAAEC,EAAEC,EAAEmF,GAAGrF,EAAEC,EAAE+0C,MAAM,oBAAoB/0C,EAAEk1N,2BAA2Bl1N,EAAEk1N,0BAA0Bj1N,EAAEmF,GAAG,oBAAoBpF,EAAEq0S,kCAAkCr0S,EAAEq0S,iCAAiCp0S,EAAEmF,GAAGpF,EAAE+0C,QAAQh1C,GAAGylS,GAAGjP,oBAAoBv2R,EAAEA,EAAE+0C,MAAM,KAAM,CACrQ,SAASgxP,GAAGhmS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAEg5O,UAAUv3O,EAAE9W,MAAMuV,EAAEuB,EAAEuzC,MAAMh1C,EAAEs/R,cAAc79R,EAAE89O,KAAKmlD,GAAGp8Q,GAAGtoB,GAAG,IAAIsF,EAAErF,EAAEkwN,YAAY,kBAAkB7qN,GAAG,OAAOA,EAAE7D,EAAEuJ,QAAQw+I,GAAElkJ,IAAIA,EAAE+hJ,GAAEpnJ,GAAGktS,GAAG9iM,GAAE9T,QAAQ90F,EAAEuJ,QAAQo0R,GAAGp/R,EAAEsF,IAAIg/R,GAAGtkS,EAAEE,EAAEuB,EAAE4D,GAAG5D,EAAEuzC,MAAMh1C,EAAEs/R,cAA2C,oBAA7Bh6R,EAAErF,EAAEmtN,4BAAiD+3E,GAAGnlS,EAAEC,EAAEqF,EAAEpF,GAAGuB,EAAEuzC,MAAMh1C,EAAEs/R,eAAe,oBAAoBr/R,EAAEmtN,0BAA0B,oBAAoB3rN,EAAE+zN,yBAAyB,oBAAoB/zN,EAAE+yS,2BAA2B,oBAAoB/yS,EAAEyzN,qBACrej1N,EAAEwB,EAAEuzC,MAAM,oBAAoBvzC,EAAEyzN,oBAAoBzzN,EAAEyzN,qBAAqB,oBAAoBzzN,EAAE+yS,2BAA2B/yS,EAAE+yS,4BAA4Bv0S,IAAIwB,EAAEuzC,OAAOywP,GAAGjP,oBAAoB/0R,EAAEA,EAAEuzC,MAAM,MAAMsvP,GAAGtkS,EAAEE,EAAEuB,EAAE4D,GAAG5D,EAAEuzC,MAAMh1C,EAAEs/R,eAAe,oBAAoB79R,EAAE8rN,oBAAoBvtN,EAAEsoP,OAAO,EAAG,KAAIo9C,GAAGh3S,MAAMC,QACvT,SAAS43S,GAAGvmS,EAAEC,EAAEC,GAAW,GAAG,QAAXF,EAAEE,EAAE2uI,MAAiB,oBAAoB7uI,GAAG,kBAAkBA,EAAE,CAAC,GAAGE,EAAE62R,OAAO,CAAY,GAAX72R,EAAEA,EAAE62R,OAAY,CAAC,GAAG,IAAI72R,EAAE02N,IAAI,MAAMz1N,MAAMpB,EAAE,MAAM,IAAIsF,EAAEnF,EAAE84O,SAAU,KAAI3zO,EAAE,MAAMlE,MAAMpB,EAAE,IAAIC,IAAI,IAAIyB,EAAE,GAAGzB,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE4uI,KAAK,oBAAoB5uI,EAAE4uI,KAAK5uI,EAAE4uI,IAAI8lK,aAAalzS,EAASxB,EAAE4uI,KAAI5uI,EAAE,SAASD,GAAG,IAAIC,EAAEoF,EAAEk6O,KAAKt/O,IAAIykS,KAAKzkS,EAAEoF,EAAEk6O,KAAK,CAAC,GAAG,OAAOv/O,SAASC,EAAEwB,GAAGxB,EAAEwB,GAAGzB,CAAE,EAACC,EAAE00S,WAAWlzS,EAASxB,EAAE,IAAG,kBAAkBD,EAAE,MAAMmB,MAAMpB,EAAE,MAAM,IAAIG,EAAE62R,OAAO,MAAM51R,MAAMpB,EAAE,IAAIC,GAAK,QAAOA,CAAE,CACle,SAASs4T,GAAGt4T,EAAEC,GAAG,GAAG,aAAaD,EAAEzE,KAAK,MAAM4F,MAAMpB,EAAE,GAAG,oBAAoB7W,OAAOgC,UAAU2D,SAAShC,KAAKoT,GAAG,qBAAqB/W,OAAOD,KAAKgX,GAAGnR,KAAK,MAAM,IAAImR,GAAK,CACvK,SAASumS,GAAGxmS,GAAG,SAASC,EAAEA,EAAEC,GAAG,GAAGF,EAAE,CAAC,IAAIqF,EAAEpF,EAAE60S,WAAW,OAAOzvS,GAAGA,EAAE0vS,WAAW70S,EAAED,EAAE60S,WAAW50S,GAAGD,EAAE+0S,YAAY/0S,EAAE60S,WAAW50S,EAAEA,EAAE60S,WAAW,KAAK70S,EAAEooP,MAAM,CAAE,CAAC,UAASpoP,EAAEA,EAAEmF,GAAG,IAAIrF,EAAE,OAAO,KAAK,KAAK,OAAOqF,GAAGpF,EAAEC,EAAEmF,GAAGA,EAAEA,EAAEq0O,QAAQ,OAAO,IAAK,UAASr0O,EAAErF,EAAEC,GAAG,IAAID,EAAE,IAAIg4D,IAAI,OAAO/3D,GAAG,OAAOA,EAAE/V,IAAI8V,EAAEc,IAAIb,EAAE/V,IAAI+V,GAAGD,EAAEc,IAAIb,EAAEpE,MAAMoE,GAAGA,EAAEA,EAAEy5O,QAAQ,OAAO15O,CAAE,UAASyB,EAAEzB,EAAEC,GAAsC,OAAnCD,EAAEu4T,GAAGv4T,EAAEC,IAAKpE,MAAM,EAAEmE,EAAE05O,QAAQ,KAAY15O,CAAE,UAASsF,EAAErF,EAAEC,EAAEmF,GAAa,OAAVpF,EAAEpE,MAAMwJ,EAAMrF,EAA4B,QAAjBqF,EAAEpF,EAAE47O,YAA6Bx2O,EAAEA,EAAExJ,OAAQqE,GAAGD,EAAEqoP,MAAM,EACpfpoP,GAAGmF,GAAEpF,EAAEqoP,MAAM,EAASpoP,GADoaA,CACla,UAASqF,EAAEtF,GAAsC,OAAnCD,GAAG,OAAOC,EAAE47O,YAAY57O,EAAEqoP,MAAM,GAAUroP,CAAE,UAASuF,EAAExF,EAAEC,EAAEC,EAAEmF,GAAG,OAAG,OAAOpF,GAAG,IAAIA,EAAE22N,MAAW32N,EAAEymS,GAAGxmS,EAAEF,EAAE66C,KAAKx1C,IAAK0zO,OAAO/4O,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAK64O,OAAO/4O,EAASC,EAAE,UAASmjE,EAAEpjE,EAAEC,EAAEC,EAAEmF,GAAG,OAAG,OAAOpF,GAAGA,EAAE+0K,cAAc90K,EAAE3E,OAAY8J,EAAE5D,EAAExB,EAAEC,EAAEvV,QAASkkJ,IAAI03J,GAAGvmS,EAAEC,EAAEC,GAAGmF,EAAE0zO,OAAO/4O,EAAEqF,KAAEA,EAAEmzT,GAAGt4T,EAAE3E,KAAK2E,EAAEhW,IAAIgW,EAAEvV,MAAM,KAAKqV,EAAE66C,KAAKx1C,IAAKwpI,IAAI03J,GAAGvmS,EAAEC,EAAEC,GAAGmF,EAAE0zO,OAAO/4O,EAASqF,EAAE,UAASnJ,EAAE8D,EAAEC,EAAEC,EAAEmF,GAAG,OAAG,OAAOpF,GAAG,IAAIA,EAAE22N,KAAK32N,EAAE+4O,UAAUC,gBAAgB/4O,EAAE+4O,eAAeh5O,EAAE+4O,UAAU0kC,iBAAiBx9Q,EAAEw9Q,iBAAsBz9Q,EACrgB0mS,GAAGzmS,EAAEF,EAAE66C,KAAKx1C,IAAK0zO,OAAO/4O,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,EAAE6a,UAAU,KAAMg+N,OAAO/4O,EAASC,EAAE,UAAS7C,EAAE4C,EAAEC,EAAEC,EAAEmF,EAAEC,GAAG,OAAG,OAAOrF,GAAG,IAAIA,EAAE22N,MAAW32N,EAAE6mS,GAAG5mS,EAAEF,EAAE66C,KAAKx1C,EAAEC,IAAKyzO,OAAO/4O,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAK64O,OAAO/4O,EAASC,EAAE,UAASxC,EAAEuC,EAAEC,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,kBAAkBA,EAAE,OAAOA,EAAEymS,GAAG,GAAGzmS,EAAED,EAAE66C,KAAK36C,IAAK64O,OAAO/4O,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE62R,UAAU,KAAKjd,EAAG,OAAO35Q,EAAEs4T,GAAGv4T,EAAE1E,KAAK0E,EAAE/V,IAAI+V,EAAEtV,MAAM,KAAKqV,EAAE66C,KAAK36C,IAAK2uI,IAAI03J,GAAGvmS,EAAE,KAAKC,GAAGC,EAAE64O,OAAO/4O,EAAEE,EAAE,KAAK45Q,EAAG,OAAO75Q,EAAE0mS,GAAG1mS,EAAED,EAAE66C,KAAK36C,IAAK64O,OAAO/4O,EAAEC,EAAE,GAAGylS,GAAGzlS,IAAI4sB,EAAG5sB,GAAG,OAAOA,EAAE6mS,GAAG7mS,EACnfD,EAAE66C,KAAK36C,EAAE,OAAQ64O,OAAO/4O,EAAEC,EAAEq4T,GAAGt4T,EAAEC,EAAG,QAAO,IAAK,UAASkI,EAAEnI,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE,OAAOxB,EAAEA,EAAE/V,IAAI,KAAK,GAAG,kBAAkBgW,GAAG,kBAAkBA,EAAE,OAAO,OAAOuB,EAAE,KAAK+D,EAAExF,EAAEC,EAAE,GAAGC,EAAEmF,GAAG,GAAG,kBAAkBnF,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE42R,UAAU,KAAKjd,EAAG,OAAO35Q,EAAEhW,MAAMuX,EAAEvB,EAAE3E,OAAOklK,EAAGrjK,EAAE4C,EAAEC,EAAEC,EAAEvV,MAAMowB,SAAS1V,EAAE5D,GAAG2hE,EAAEpjE,EAAEC,EAAEC,EAAEmF,GAAG,KAAK,KAAKy0Q,EAAG,OAAO55Q,EAAEhW,MAAMuX,EAAEvF,EAAE8D,EAAEC,EAAEC,EAAEmF,GAAG,KAAK,GAAGqgS,GAAGxlS,IAAI2sB,EAAG3sB,GAAG,OAAO,OAAOuB,EAAE,KAAKrE,EAAE4C,EAAEC,EAAEC,EAAEmF,EAAE,MAAMizT,GAAGt4T,EAAEE,EAAG,QAAO,IAAK,UAAS1C,EAAEwC,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,GAAG,kBAAkB4D,GAAG,kBAAkBA,EAAE,OACleG,EAAEvF,EADueD,EAAEA,EAAEpS,IAAIsS,IACtf,KAAW,GAAGmF,EAAE5D,GAAG,GAAG,kBAAkB4D,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEyxR,UAAU,KAAKjd,EAAG,OAAO75Q,EAAEA,EAAEpS,IAAI,OAAOyX,EAAEnb,IAAIgW,EAAEmF,EAAEnb,MAAM,KAAKmb,EAAE9J,OAAOklK,EAAGrjK,EAAE6C,EAAED,EAAEqF,EAAE1a,MAAMowB,SAAStZ,EAAE4D,EAAEnb,KAAKk5E,EAAEnjE,EAAED,EAAEqF,EAAE5D,GAAG,KAAKq4Q,EAAG,OAA2C59Q,EAAE+D,EAAtCD,EAAEA,EAAEpS,IAAI,OAAOyX,EAAEnb,IAAIgW,EAAEmF,EAAEnb,MAAM,KAAWmb,EAAE5D,GAAG,GAAGikS,GAAGrgS,IAAIwnB,EAAGxnB,GAAG,OAAwBjI,EAAE6C,EAAnBD,EAAEA,EAAEpS,IAAIsS,IAAI,KAAWmF,EAAE5D,EAAE,MAAM62T,GAAGr4T,EAAEoF,EAAG,QAAO,IAAK,UAAS9H,EAAEkE,EAAE8D,EAAEC,EAAE49D,GAAG,IAAI,IAAIlnE,EAAE,KAAKkF,EAAE,KAAK2X,EAAExT,EAAE4hJ,EAAE5hJ,EAAE,EAAEnI,EAAE,KAAK,OAAO2b,GAAGouI,EAAE3hJ,EAAEzb,OAAOo9J,IAAI,CAACpuI,EAAEld,MAAMsrJ,GAAG/pJ,EAAE2b,EAAEA,EAAE,MAAM3b,EAAE2b,EAAE2gO,QAAQ,IAAIr4O,EAAE8G,EAAE1G,EAAEsX,EAAEvT,EAAE2hJ,GAAG/jF,GAAG,GAAG,OAAO/hE,EAAE,CAAC,OAAO0X,IAAIA,EAAE3b,GAAG,KAAM,CAAA4C,GAAG+Y,GAAG,OACjf1X,EAAEw6O,WAAW57O,EAAEwB,EAAEsX,GAAGxT,EAAED,EAAEjE,EAAEkE,EAAE4hJ,GAAG,OAAO/lJ,EAAElF,EAAEmF,EAAED,EAAEs4O,QAAQr4O,EAAED,EAAEC,EAAE0X,EAAE3b,CAAE,IAAG+pJ,IAAI3hJ,EAAEzb,OAAO,OAAOmW,EAAEuB,EAAEsX,GAAG7c,EAAE,GAAG,OAAO6c,EAAE,CAAC,KAAKouI,EAAE3hJ,EAAEzb,OAAOo9J,IAAkB,QAAdpuI,EAAEtb,EAAEgE,EAAE+D,EAAE2hJ,GAAG/jF,MAAc79D,EAAED,EAAEyT,EAAExT,EAAE4hJ,GAAG,OAAO/lJ,EAAElF,EAAE6c,EAAE3X,EAAEs4O,QAAQ3gO,EAAE3X,EAAE2X,GAAG,OAAO7c,CAAE,KAAI6c,EAAE1T,EAAE5D,EAAEsX,GAAGouI,EAAE3hJ,EAAEzb,OAAOo9J,IAAsB,QAAlB/pJ,EAAEI,EAAEub,EAAEtX,EAAE0lJ,EAAE3hJ,EAAE2hJ,GAAG/jF,MAAcpjE,GAAG,OAAO5C,EAAEy+O,WAAW9iO,EAAEmuB,OAAO,OAAO9pC,EAAElT,IAAIi9J,EAAE/pJ,EAAElT,KAAKqb,EAAED,EAAElI,EAAEmI,EAAE4hJ,GAAG,OAAO/lJ,EAAElF,EAAEkB,EAAEgE,EAAEs4O,QAAQt8O,EAAEgE,EAAEhE,GAA4C,OAAzC4C,GAAG+Y,EAAE9uB,SAAQ,SAAS+V,GAAG,OAAOC,EAAEwB,EAAEzB,EAAG,IAAS9D,CAAE,UAASusJ,EAAEhnJ,EAAE8D,EAAEC,EAAE49D,GAAG,IAAIlnE,EAAE2wB,EAAGrnB,GAAG,GAAG,oBAAoBtJ,EAAE,MAAMiF,MAAMpB,EAAE,MAAkB,GAAG,OAAfyF,EAAEtJ,EAAErP,KAAK2Y,IAC1e,MAAMrE,MAAMpB,EAAE,MAAM,IAAI,IAAIgZ,EAAE7c,EAAE,KAAKkF,EAAEmE,EAAEnI,EAAEmI,EAAE,EAAE4hJ,EAAE,KAAK9lJ,EAAEmE,EAAE1Y,OAAO,OAAOsU,IAAIC,EAAEtU,KAAKqQ,IAAIiE,EAAEmE,EAAE1Y,OAAO,CAACsU,EAAEvF,MAAMuB,GAAG+pJ,EAAE/lJ,EAAEA,EAAE,MAAM+lJ,EAAE/lJ,EAAEs4O,QAAQ,IAAIn8O,EAAE4K,EAAE1G,EAAEL,EAAEC,EAAE7V,MAAM43E,GAAG,GAAG,OAAO7lE,EAAE,CAAC,OAAO6D,IAAIA,EAAE+lJ,GAAG,KAAM,CAAAnnJ,GAAGoB,GAAG,OAAO7D,EAAEs+O,WAAW57O,EAAEwB,EAAEL,GAAGmE,EAAED,EAAE/H,EAAEgI,EAAEnI,GAAG,OAAO2b,EAAE7c,EAAEqB,EAAEwb,EAAE2gO,QAAQn8O,EAAEwb,EAAExb,EAAE6D,EAAE+lJ,CAAE,IAAG9lJ,EAAEtU,KAAK,OAAOmT,EAAEuB,EAAEL,GAAGlF,EAAE,GAAG,OAAOkF,EAAE,CAAC,MAAMC,EAAEtU,KAAKqQ,IAAIiE,EAAEmE,EAAE1Y,OAAwB,QAAjBuU,EAAE5D,EAAEgE,EAAEJ,EAAE7V,MAAM43E,MAAc79D,EAAED,EAAEjE,EAAEkE,EAAEnI,GAAG,OAAO2b,EAAE7c,EAAEmF,EAAE0X,EAAE2gO,QAAQr4O,EAAE0X,EAAE1X,GAAG,OAAOnF,CAAE,KAAIkF,EAAEiE,EAAE5D,EAAEL,IAAIC,EAAEtU,KAAKqQ,IAAIiE,EAAEmE,EAAE1Y,OAA4B,QAArBuU,EAAE7D,EAAE4D,EAAEK,EAAErE,EAAEiE,EAAE7V,MAAM43E,MAAcpjE,GAAG,OAAOqB,EAAEw6O,WAChfz6O,EAAE8lC,OAAO,OAAO7lC,EAAEnX,IAAIkT,EAAEiE,EAAEnX,KAAKqb,EAAED,EAAEjE,EAAEkE,EAAEnI,GAAG,OAAO2b,EAAE7c,EAAEmF,EAAE0X,EAAE2gO,QAAQr4O,EAAE0X,EAAE1X,GAA4C,OAAzCrB,GAAGoB,EAAEnX,SAAQ,SAAS+V,GAAG,OAAOC,EAAEwB,EAAEzB,EAAG,IAAS9D,CAAE,QAAO,SAAS8D,EAAEqF,EAAEC,EAAEE,GAAG,IAAI49D,EAAE,kBAAkB99D,GAAG,OAAOA,GAAGA,EAAE/J,OAAOklK,GAAI,OAAOn7J,EAAEpb,IAAIk5E,IAAI99D,EAAEA,EAAE3a,MAAMowB,UAAU,IAAI7e,EAAE,kBAAkBoJ,GAAG,OAAOA,EAAE,GAAGpJ,EAAE,OAAOoJ,EAAEwxR,UAAU,KAAKjd,EAAG75Q,EAAE,CAAS,IAAR9D,EAAEoJ,EAAEpb,IAAQk5E,EAAE/9D,EAAE,OAAO+9D,GAAG,CAAC,GAAGA,EAAEl5E,MAAMgS,EAAE,CAAC,GAAmB,IAAZknE,EAAEwzJ,KAAY,GAAGtxN,EAAE/J,OAAOklK,EAAG,CAACvgK,EAAEF,EAAEojE,EAAEs2K,UAASr0O,EAAE5D,EAAE2hE,EAAE99D,EAAE3a,MAAMowB,WAAYg+N,OAAO/4O,EAAEA,EAAEqF,EAAE,MAAMrF,CAAE,OAAc,GAAGojE,EAAE4xG,cAAc1vK,EAAE/J,KAAK,CAAC2E,EAAEF,EAAEojE,EAAEs2K,UAC5er0O,EAAE5D,EAAE2hE,EAAE99D,EAAE3a,QAASkkJ,IAAI03J,GAAGvmS,EAAEojE,EAAE99D,GAAGD,EAAE0zO,OAAO/4O,EAAEA,EAAEqF,EAAE,MAAMrF,CAAE,CAACE,EAAEF,EAAEojE,GAAG,KAAM,CAAKnjE,EAAED,EAAEojE,GAAGA,EAAEA,EAAEs2K,OAAQ,CAAAp0O,EAAE/J,OAAOklK,IAAIp7J,EAAEyhS,GAAGxhS,EAAE3a,MAAMowB,SAAS/a,EAAE66C,KAAKr1C,EAAEF,EAAEpb,MAAO6uP,OAAO/4O,EAAEA,EAAEqF,KAAIG,EAAEgzT,GAAGlzT,EAAE/J,KAAK+J,EAAEpb,IAAIob,EAAE3a,MAAM,KAAKqV,EAAE66C,KAAKr1C,IAAKqpI,IAAI03J,GAAGvmS,EAAEqF,EAAEC,GAAGE,EAAEuzO,OAAO/4O,EAAEA,EAAEwF,EAAG,QAAOD,EAAEvF,GAAG,KAAK85Q,EAAG95Q,EAAE,CAAC,IAAIojE,EAAE99D,EAAEpb,IAAI,OAAOmb,GAAG,CAAC,GAAGA,EAAEnb,MAAMk5E,EAAX,CAAa,GAAG,IAAI/9D,EAAEuxN,KAAKvxN,EAAE2zO,UAAUC,gBAAgB3zO,EAAE2zO,eAAe5zO,EAAE2zO,UAAU0kC,iBAAiBp4Q,EAAEo4Q,eAAe,CAACx9Q,EAAEF,EAAEqF,EAAEq0O,UAASr0O,EAAE5D,EAAE4D,EAAEC,EAAEyV,UAAU,KAAMg+N,OAAO/4O,EAAEA,EAAEqF,EAAE,MAAMrF,CAAE,CAAKE,EAAEF,EAAEqF,GAAG,KAA/L,CAA0MpF,EAAED,EAAEqF,GAAGA,EAAEA,EAAEq0O,OAAQ,EAAAr0O,EACpfshS,GAAGrhS,EAAEtF,EAAE66C,KAAKr1C,IAAKuzO,OAAO/4O,EAAEA,EAAEqF,CAAE,QAAOE,EAAEvF,GAAG,GAAG,kBAAkBsF,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOD,GAAG,IAAIA,EAAEuxN,KAAK12N,EAAEF,EAAEqF,EAAEq0O,UAASr0O,EAAE5D,EAAE4D,EAAEC,IAAKyzO,OAAO/4O,EAAEA,EAAEqF,IAAInF,EAAEF,EAAEqF,IAAGA,EAAEqhS,GAAGphS,EAAEtF,EAAE66C,KAAKr1C,IAAKuzO,OAAO/4O,EAAEA,EAAEqF,GAAGE,EAAEvF,GAAG,GAAG0lS,GAAGpgS,GAAG,OAAO/H,EAAEyC,EAAEqF,EAAEC,EAAEE,GAAG,GAAGqnB,EAAGvnB,GAAG,OAAOmjJ,EAAEzoJ,EAAEqF,EAAEC,EAAEE,GAAc,GAAXtJ,GAAGo8T,GAAGt4T,EAAEsF,GAAM,qBAAqBA,IAAI89D,EAAE,OAAOpjE,EAAE42N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAMz1N,MAAMpB,EAAE,IAAI84R,EAAG74R,EAAEzE,OAAO,cAAe,OAAO2E,EAAEF,EAAEqF,EAAG,CAAC,KAAI2hS,GAAGR,IAAG,GAAIiyB,GAAGjyB,IAAG,GAAIS,GAAG,CAAC,EAAE99I,GAAE+1I,GAAG+H,IAAIC,GAAGhI,GAAG+H,IAAIa,GAAG5I,GAAG+H,IACrd,SAASc,GAAG/nS,GAAG,GAAGA,IAAIinS,GAAG,MAAM9lS,MAAMpB,EAAE,MAAM,OAAOC,CAAE,UAASmoS,GAAGnoS,EAAEC,GAAGinJ,GAAE4gJ,GAAG7nS,GAAGinJ,GAAEggJ,GAAGlnS,GAAGknJ,GAAEiC,GAAE89I,IAAIjnS,EAAEq5R,EAAGp5R,GAAG6O,GAAEq6I,IAAGjC,GAAEiC,GAAEnpJ,EAAG,UAASooS,KAAKt5R,GAAEq6I,IAAGr6I,GAAEo4R,IAAIp4R,GAAEg5R,GAAI,UAASQ,GAAGtoS,GAAG,IAAIC,EAAE8nS,GAAGD,GAAGvxM,SAASr2F,EAAE6nS,GAAG5+I,GAAE5yD,SAA0Br2F,KAAjBD,EAAEq5R,EAAGp5R,EAAEF,EAAEzE,KAAK0E,MAAWinJ,GAAEggJ,GAAGlnS,GAAGknJ,GAAEiC,GAAElpJ,GAAI,UAASy4T,GAAG14T,GAAGknS,GAAG3wM,UAAUv2F,IAAI8O,GAAEq6I,IAAGr6I,GAAEo4R,IAAK,KAAIh+I,GAAEg2I,GAAG,GACpS,SAASqJ,GAAGvoS,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAE22N,IAAI,CAAC,IAAI12N,EAAED,EAAEq/R,cAAc,GAAG,OAAOp/R,IAAmB,QAAfA,EAAEA,EAAEq/R,aAAqBnB,GAAGl+R,IAAIm+R,GAAGn+R,IAAI,OAAOD,CAAE,MAAK,GAAG,KAAKA,EAAE22N,UAAK,IAAS32N,EAAE0yO,cAAcujE,aAAa,GAAG,KAAa,GAARj2S,EAAEqoP,OAAU,OAAOroP,OAAO,GAAG,OAAOA,EAAE6qB,MAAM,CAAC7qB,EAAE6qB,MAAMiuN,OAAO94O,EAAEA,EAAEA,EAAE6qB,MAAM,QAAS,IAAG7qB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEy5O,SAAS,CAAC,GAAG,OAAOz5O,EAAE84O,QAAQ94O,EAAE84O,SAAS/4O,EAAE,OAAO,KAAKC,EAAEA,EAAE84O,MAAO,CAAA94O,EAAEy5O,QAAQX,OAAO94O,EAAE84O,OAAO94O,EAAEA,EAAEy5O,OAAQ,QAAO,IAAK,KAAIi/E,GAAG,KAAK5vB,GAAG,KAAK6vB,IAAG,EACpc,SAAS1vB,GAAGlpS,EAAEC,GAAG,IAAIC,EAAEgxJ,GAAG,EAAE,KAAK,KAAK,GAAGhxJ,EAAE80K,YAAY,UAAU90K,EAAE3E,KAAK,UAAU2E,EAAE84O,UAAU/4O,EAAEC,EAAE64O,OAAO/4O,EAAEE,EAAEooP,MAAM,EAAE,OAAOtoP,EAAE80S,YAAY90S,EAAE80S,WAAWC,WAAW70S,EAAEF,EAAE80S,WAAW50S,GAAGF,EAAEg1S,YAAYh1S,EAAE80S,WAAW50S,CAAE,UAASspS,GAAGxpS,EAAEC,GAAG,OAAOD,EAAE42N,KAAK,KAAK,EAAE,OAAqC,QAA9B32N,EAAEi+R,GAAGj+R,EAAED,EAAEzE,KAAKyE,EAAEw2S,iBAAwBx2S,EAAEg5O,UAAU/4O,GAAE,GAAO,KAAK,EAAE,OAA8B,QAAvBA,EAAEk+R,GAAGl+R,EAAED,EAAEw2S,iBAAwBx2S,EAAEg5O,UAAU/4O,GAAE,GAAwB,QAAQ,OAAM,EAAI,CACla,SAASwpS,GAAGzpS,GAAG,GAAG44T,GAAG,CAAC,IAAI34T,EAAE8oS,GAAG,GAAG9oS,EAAE,CAAC,IAAIC,EAAED,EAAE,IAAIupS,GAAGxpS,EAAEC,GAAG,CAAS,KAARA,EAAEq+R,GAAGp+R,MAAWspS,GAAGxpS,EAAEC,GAAuC,OAAnCD,EAAEsoP,OAAe,KAATtoP,EAAEsoP,MAAY,EAAEswE,IAAG,OAAGD,GAAG34T,GAASkpS,GAAGyvB,GAAGz4T,EAAG,CAAAy4T,GAAG34T,EAAE+oS,GAAGxK,GAAGt+R,EAAG,MAAKD,EAAEsoP,OAAe,KAATtoP,EAAEsoP,MAAY,EAAEswE,IAAG,EAAGD,GAAG34T,CAAE,CAAC,UAASiE,GAAGjE,GAAG,IAAIA,EAAEA,EAAE+4O,OAAO,OAAO/4O,GAAG,IAAIA,EAAE42N,KAAK,IAAI52N,EAAE42N,KAAK,KAAK52N,EAAE42N,KAAK52N,EAAEA,EAAE+4O,OAAO4/E,GAAG34T,CAAE,CACvR,SAASkE,GAAGlE,GAAG,IAAIu6R,GAAIv6R,IAAI24T,GAAG,OAAM,EAAG,IAAIC,GAAG,OAAO30T,GAAGjE,GAAG44T,IAAG,GAAG,EAAG,IAAI34T,EAAED,EAAEzE,KAAK,GAAG,IAAIyE,EAAE42N,KAAK,SAAS32N,GAAG,SAASA,IAAI05R,EAAG15R,EAAED,EAAE2yO,eAAe,IAAI1yO,EAAE8oS,GAAG9oS,GAAGipS,GAAGlpS,EAAEC,GAAGA,EAAEq+R,GAAGr+R,GAAS,GAANgE,GAAGjE,GAAM,KAAKA,EAAE42N,IAAI,CAAC,IAAI2jE,EAAG,MAAMp5R,MAAMpB,EAAE,MAAqD,KAA7BC,EAAE,QAApBA,EAAEA,EAAEs/R,eAAyBt/R,EAAEu/R,WAAW,MAAW,MAAMp+R,MAAMpB,EAAE,MAAMgpS,GAAGsE,GAAGrtS,EAAG,MAAK+oS,GAAG4vB,GAAGr6B,GAAGt+R,EAAEg5O,WAAW,KAAK,OAAM,CAAG,UAASt3N,KAAK64Q,IAAKwO,GAAG4vB,GAAG,KAAKC,IAAG,EAAI,KAAIh3S,GAAG,GACjY,SAAS+nR,KAAK,IAAI,IAAI3pS,EAAE,EAAEA,EAAE4hB,GAAG73B,OAAOiW,IAAI,CAAC,IAAIC,EAAE2hB,GAAG5hB,GAAGq6R,EAAGp6R,EAAE62S,8BAA8B,KAAK72S,EAAE44T,gCAAgC,IAAK,CAAAj3S,GAAG73B,OAAO,CAAE,KAAI6/S,GAAGhwB,EAAGsd,uBAAuB2S,GAAGjwB,EAAGud,wBAAwB2S,GAAG,EAAEv/L,GAAE,KAAK0+C,GAAE,KAAKl+C,GAAE,KAAKg/L,IAAG,EAAG4D,IAAG,EAAG,SAAS3kJ,KAAI,MAAM7nJ,MAAMpB,EAAE,KAAO,UAAS6tS,GAAG5tS,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAElW,QAAQmW,EAAEF,EAAEjW,OAAOmW,IAAI,IAAIqpJ,GAAEvpJ,EAAEE,GAAGD,EAAEC,IAAI,OAAM,EAAG,OAAM,CAAG,CACzY,SAAS8pS,GAAGhqS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAyH,GAAtHwkS,GAAGxkS,EAAEilG,GAAEtqG,EAAEA,EAAEq/R,cAAc,KAAKr/R,EAAE4yS,YAAY,KAAK5yS,EAAEqyS,MAAM,EAAE1I,GAAGrzM,QAAQ,OAAOv2F,GAAG,OAAOA,EAAEs/R,cAAc37R,GAAGwmS,GAAGnqS,EAAEE,EAAEmF,EAAE5D,GAAMksS,GAAG,CAACroS,EAAE,EAAE,EAAE,CAAO,GAANqoS,IAAG,IAAQ,GAAGroS,GAAG,MAAMnE,MAAMpB,EAAE,MAAMuF,GAAG,EAAEylG,GAAEk+C,GAAE,KAAKhpJ,EAAE4yS,YAAY,KAAKjJ,GAAGrzM,QAAQ6zM,GAAGpqS,EAAEE,EAAEmF,EAAE5D,EAAG,OAAMksS,GAAI,CAA8D,GAA9D/D,GAAGrzM,QAAQ8zM,GAAGpqS,EAAE,OAAOgpJ,IAAG,OAAOA,GAAEn8J,KAAKg9S,GAAG,EAAE/+L,GAAEk+C,GAAE1+C,GAAE,KAAKw/L,IAAG,EAAM9pS,EAAE,MAAMkB,MAAMpB,EAAE,MAAM,OAAOC,CAAE,UAASsqS,KAAK,IAAItqS,EAAE,CAACs/R,cAAc,KAAKwT,UAAU,KAAK8E,UAAU,KAAKv3M,MAAM,KAAKvzG,KAAK,MAA8C,OAAxC,OAAOi+G,GAAER,GAAE+0L,cAAcv0L,GAAE/qG,EAAE+qG,GAAEA,GAAEj+G,KAAKkT,EAAS+qG,EAAE,CACjf,SAASw/L,KAAK,GAAG,OAAOthJ,GAAE,CAAC,IAAIjpJ,EAAEuqG,GAAEsxI,UAAU77O,EAAE,OAAOA,EAAEA,EAAEs/R,cAAc,IAAK,MAAKt/R,EAAEipJ,GAAEn8J,KAAK,IAAImT,EAAE,OAAO8qG,GAAER,GAAE+0L,cAAcv0L,GAAEj+G,KAAK,GAAG,OAAOmT,EAAE8qG,GAAE9qG,EAAEgpJ,GAAEjpJ,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMmB,MAAMpB,EAAE,MAAUC,EAAE,CAACs/R,eAAPr2I,GAAEjpJ,GAAqBs/R,cAAcwT,UAAU7pJ,GAAE6pJ,UAAU8E,UAAU3uJ,GAAE2uJ,UAAUv3M,MAAM4oD,GAAE5oD,MAAMvzG,KAAK,MAAM,OAAOi+G,GAAER,GAAE+0L,cAAcv0L,GAAE/qG,EAAE+qG,GAAEA,GAAEj+G,KAAKkT,CAAE,QAAO+qG,EAAE,UAASy/L,GAAGxqS,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,CAAE,CACzY,SAASyD,GAAG1D,GAAG,IAAIC,EAAEsqS,KAAKrqS,EAAED,EAAEogG,MAAM,GAAG,OAAOngG,EAAE,MAAMiB,MAAMpB,EAAE,MAAMG,EAAE83S,oBAAoBh4S,EAAE,IAAIqF,EAAE4jJ,GAAExnJ,EAAE4D,EAAEuyS,UAAUtyS,EAAEpF,EAAEk3H,QAAQ,GAAG,OAAO9xH,EAAE,CAAC,GAAG,OAAO7D,EAAE,CAAC,IAAI8D,EAAE9D,EAAE3U,KAAK2U,EAAE3U,KAAKwY,EAAExY,KAAKwY,EAAExY,KAAKyY,CAAE,CAAAF,EAAEuyS,UAAUn2S,EAAE6D,EAAEpF,EAAEk3H,QAAQ,IAAK,IAAG,OAAO31H,EAAE,CAACA,EAAEA,EAAE3U,KAAKuY,EAAEA,EAAEytS,UAAU,IAAIttS,EAAED,EAAED,EAAE,KAAK89D,EAAE3hE,EAAE,EAAE,CAAC,IAAIvF,EAAEknE,EAAEgwO,KAAK,IAAItJ,GAAG5tS,KAAKA,EAAE,OAAOsJ,IAAIA,EAAEA,EAAE1Y,KAAK,CAACsmT,KAAK,EAAEt9K,OAAO1yD,EAAE0yD,OAAOmiL,aAAa70O,EAAE60O,aAAaC,WAAW90O,EAAE80O,WAAWprT,KAAK,OAAOuY,EAAE+9D,EAAE60O,eAAej4S,EAAEojE,EAAE80O,WAAWl4S,EAAEqF,EAAE+9D,EAAE0yD,YAAY,CAAC,IAAI14H,EAAE,CAACg2S,KAAKl3S,EAAE45H,OAAO1yD,EAAE0yD,OAAOmiL,aAAa70O,EAAE60O,aAC9fC,WAAW90O,EAAE80O,WAAWprT,KAAK,MAAM,OAAO0Y,GAAGD,EAAEC,EAAEpI,EAAEkI,EAAED,GAAGG,EAAEA,EAAE1Y,KAAKsQ,EAAEmtG,GAAE+nM,OAAOp2S,EAAEsoS,IAAItoS,CAAE,CAAAknE,EAAEA,EAAEt2E,IAAK,OAAM,OAAOs2E,GAAGA,IAAI3hE,GAAG,OAAO+D,EAAEF,EAAED,EAAEG,EAAE1Y,KAAKyY,EAAEgkJ,GAAElkJ,EAAEpF,EAAEq/R,iBAAiByE,IAAG,GAAI9jS,EAAEq/R,cAAcj6R,EAAEpF,EAAE6yS,UAAUxtS,EAAErF,EAAE23S,UAAUpyS,EAAEtF,EAAEi4S,kBAAkB9yS,CAAE,OAAM,CAACpF,EAAEq/R,cAAcp/R,EAAEk4S,SAAU,CAC/Q,SAAS3N,GAAGzqS,GAAG,IAAIC,EAAEsqS,KAAKrqS,EAAED,EAAEogG,MAAM,GAAG,OAAOngG,EAAE,MAAMiB,MAAMpB,EAAE,MAAMG,EAAE83S,oBAAoBh4S,EAAE,IAAIqF,EAAEnF,EAAEk4S,SAAS32S,EAAEvB,EAAEk3H,QAAQ9xH,EAAErF,EAAEq/R,cAAc,GAAG,OAAO79R,EAAE,CAACvB,EAAEk3H,QAAQ,KAAK,IAAI7xH,EAAE9D,EAAEA,EAAE3U,KAAK,GAAGwY,EAAEtF,EAAEsF,EAAEC,EAAEuwH,QAAQvwH,EAAEA,EAAEzY,WAAWyY,IAAI9D,GAAG8nJ,GAAEjkJ,EAAErF,EAAEq/R,iBAAiByE,IAAG,GAAI9jS,EAAEq/R,cAAch6R,EAAE,OAAOrF,EAAE23S,YAAY33S,EAAE6yS,UAAUxtS,GAAGpF,EAAEi4S,kBAAkB7yS,CAAE,OAAM,CAACA,EAAED,EAAG,CACrV,SAASqlS,GAAG1qS,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEs4S,YAAYlzS,EAAEA,EAAEpF,EAAEu4S,SAAS,IAAI/2S,EAAE44R,EAAGp6R,EAAE62S,8BAA8B72S,EAAE44T,gCAAkL,GAA/I,OAAOp3T,EAAEzB,EAAEyB,IAAI4D,GAAUrF,EAAEA,EAAEy4S,kBAAiBz4S,GAAG8pS,GAAG9pS,KAAKA,KAAEq6R,EAAGp6R,EAAE62S,8BAA8BzxS,EAAEpF,EAAE44T,gCAAgCxzT,EAAEuc,GAAGn4B,KAAKwW,KAAMD,EAAE,OAAOE,EAAED,EAAEu4S,SAAoB,MAAX52R,GAAGn4B,KAAKwW,GAASkB,MAAMpB,EAAE,KAAO,CAC5U,SAAS4qS,GAAG3qS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEsnJ,GAAE,GAAG,OAAOtnJ,EAAE,MAAMN,MAAMpB,EAAE,MAAM,IAAIuF,EAAErF,EAAEs4S,YAAYhzS,EAAED,EAAErF,EAAEu4S,SAAShzS,EAAEokS,GAAGrzM,QAAQnzB,EAAE59D,EAAE8uN,UAAS,WAAW,OAAOo2E,GAAGjpS,EAAExB,EAAEC,EAAG,IAAEhE,EAAEknE,EAAE,GAAGhmE,EAAEgmE,EAAE,GAAGA,EAAE2nC,GAAE,IAAIttG,EAAEuC,EAAEs/R,cAAcn3R,EAAE1K,EAAE8hP,KAAK/hP,EAAE2K,EAAEwwS,YAAYp7S,EAAEE,EAAEzT,OAAOyT,EAAEA,EAAE42O,UAAU,IAAI5rF,EAAEl+C,GACsO,OADpOvqG,EAAEs/R,cAAc,CAAC//C,KAAKp3O,EAAEne,OAAOiW,EAAEo0O,UAAUhvO,GAAGG,EAAEkkN,WAAU,WAAWvhN,EAAEwwS,YAAYz4S,EAAEiI,EAAEywS,YAAY18S,EAAE,IAAI8D,EAAEsF,EAAErF,EAAEu4S,SAAS,IAAIjvJ,GAAEhkJ,EAAEvF,GAAG,CAACA,EAAEE,EAAED,EAAEu4S,SAASjvJ,GAAEnsJ,EAAE4C,KAAK9D,EAAE8D,GAAGA,EAAEulS,GAAG98I,GAAGhnJ,EAAEg3S,kBAAkBz4S,EAAEyB,EAAEmhS,cAAc5iS,EAAEyB,EAAEg3S,iBAAiBh3S,EAAEwhS,gBAAgBjjS,EAAE,IAAI,IAAIqF,EAC1f5D,EAAEyhS,cAAc19R,EAAExF,EAAE,EAAEwF,GAAG,CAAC,IAAI49D,EAAE,GAAG68N,GAAGz6R,GAAG/H,EAAE,GAAG2lE,EAAE/9D,EAAE+9D,IAAIpjE,EAAEwF,IAAI/H,CAAE,CAAC,CAAC,GAAC,CAACyC,EAAED,EAAEoF,IAAIG,EAAEkkN,WAAU,WAAW,OAAOrkN,EAAEpF,EAAEu4S,SAAQ,WAAW,IAAIx4S,EAAEmI,EAAEwwS,YAAYz4S,EAAEiI,EAAEywS,YAAY,IAAI14S,EAAEF,EAAEC,EAAEu4S,UAAU,IAAInzS,EAAEkgS,GAAG98I,GAAGhnJ,EAAEg3S,kBAAkBpzS,EAAE5D,EAAEmhS,YAAgD,CAAnC,MAAM7I,GAAI75R,GAAE,WAAW,MAAM65R,CAAI,GAAE,CAAC,GAAE,GAAC,CAAC95R,EAAEoF,IAAIkkJ,GAAE/rJ,EAAE0C,IAAIqpJ,GAAEhsJ,EAAE0C,IAAIspJ,GAAE9rJ,EAAE4H,MAAKrF,EAAE,CAACo3H,QAAQ,KAAKghL,SAAS,KAAKJ,oBAAoBxN,GAAG2N,kBAAkB/6S,IAAKg7S,SAASl8S,EAAE0uS,GAAGr9S,KAAK,KAAKg9G,GAAEvqG,GAAGojE,EAAEi9B,MAAMrgG,EAAEojE,EAAEw0O,UAAU,KAAKx6S,EAAEstS,GAAGjpS,EAAExB,EAAEC,GAAGkjE,EAAEk8N,cAAcl8N,EAAE0vO,UAAU11S,GAAUA,CAAE,CACve,SAASytS,GAAG7qS,EAAEC,EAAEC,GAAc,OAAOyqS,GAAZJ,KAAiBvqS,EAAEC,EAAEC,EAAG,UAAS4qS,GAAG9qS,GAAG,IAAIC,EAAEqqS,KAAmL,MAA9K,oBAAoBtqS,IAAIA,EAAEA,KAAKC,EAAEq/R,cAAcr/R,EAAE6yS,UAAU9yS,EAAoFA,GAAlFA,EAAEC,EAAEogG,MAAM,CAAC+2B,QAAQ,KAAKghL,SAAS,KAAKJ,oBAAoBxN,GAAG2N,kBAAkBn4S,IAAOo4S,SAASxN,GAAGr9S,KAAK,KAAKg9G,GAAEvqG,GAAS,CAACC,EAAEq/R,cAAct/R,EAAG,CACnR,SAASgrS,GAAGhrS,EAAEC,EAAEC,EAAEmF,GAAkO,OAA/NrF,EAAE,CAAC42N,IAAI52N,EAAE1U,OAAO2U,EAAEy3D,QAAQx3D,EAAEumO,KAAKphO,EAAEvY,KAAK,MAAsB,QAAhBmT,EAAEsqG,GAAEsoM,cAAsB5yS,EAAE,CAAC60S,WAAW,MAAMvqM,GAAEsoM,YAAY5yS,EAAEA,EAAE60S,WAAW90S,EAAElT,KAAKkT,GAAmB,QAAfE,EAAED,EAAE60S,YAAoB70S,EAAE60S,WAAW90S,EAAElT,KAAKkT,GAAGqF,EAAEnF,EAAEpT,KAAKoT,EAAEpT,KAAKkT,EAAEA,EAAElT,KAAKuY,EAAEpF,EAAE60S,WAAW90S,GAAWA,CAAE,UAASkrS,GAAGlrS,GAA4B,OAAdA,EAAE,CAACu2F,QAAQv2F,GAAhBsqS,KAA4BhL,cAAct/R,CAAE,UAASmrS,KAAK,OAAOZ,KAAKjL,aAAc,UAAS+L,GAAGrrS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE6oS,KAAK//L,GAAE+9I,OAAOtoP,EAAEyB,EAAE69R,cAAc0L,GAAG,EAAE/qS,EAAEC,OAAE,OAAO,IAASmF,EAAE,KAAKA,EAAG,CACpc,SAASimS,GAAGtrS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAE8oS,KAAKllS,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIC,OAAE,EAAO,GAAG,OAAO2jJ,GAAE,CAAC,IAAI1jJ,EAAE0jJ,GAAEq2I,cAA0B,GAAZh6R,EAAEC,EAAEmyD,QAAW,OAAOryD,GAAGuoS,GAAGvoS,EAAEE,EAAEkhO,MAAmB,YAAZukE,GAAG/qS,EAAEC,EAAEoF,EAAED,EAAW,CAAAklG,GAAE+9I,OAAOtoP,EAAEyB,EAAE69R,cAAc0L,GAAG,EAAE/qS,EAAEC,EAAEoF,EAAED,EAAG,UAASkmS,GAAGvrS,EAAEC,GAAG,OAAOorS,GAAG,IAAI,EAAErrS,EAAEC,EAAG,UAAS64T,GAAG94T,EAAEC,GAAG,OAAOqrS,GAAG,IAAI,EAAEtrS,EAAEC,EAAG,UAASurS,GAAGxrS,EAAEC,GAAG,OAAOqrS,GAAG,EAAE,EAAEtrS,EAAEC,EAAG,UAASwrS,GAAGzrS,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAM,GAAI,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEs2F,QAAQv2F,EAAE,WAAWC,EAAEs2F,QAAQ,IAAK,QAA3E,CAA4E,CACpd,SAASm1M,GAAG1rS,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE88F,OAAO,CAACh9F,IAAI,KAAYsrS,GAAG,EAAE,EAAEG,GAAGl+S,KAAK,KAAK0S,EAAED,GAAGE,EAAG,UAASyrS,KAAM,UAASC,GAAG5rS,EAAEC,GAAG,IAAIC,EAAEqqS,KAAKtqS,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIoF,EAAEnF,EAAEo/R,cAAc,OAAG,OAAOj6R,GAAG,OAAOpF,GAAG2tS,GAAG3tS,EAAEoF,EAAE,IAAWA,EAAE,IAAGnF,EAAEo/R,cAAc,CAACt/R,EAAEC,GAAUD,EAAE,UAAS6rS,GAAG7rS,EAAEC,GAAG,IAAIC,EAAEqqS,KAAKtqS,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIoF,EAAEnF,EAAEo/R,cAAc,OAAG,OAAOj6R,GAAG,OAAOpF,GAAG2tS,GAAG3tS,EAAEoF,EAAE,IAAWA,EAAE,IAAGrF,EAAEA,IAAIE,EAAEo/R,cAAc,CAACt/R,EAAEC,GAAUD,EAAE,CAC3Z,SAAS8rS,GAAG9rS,EAAEC,GAAG,IAAIC,EAAEoiS,KAAKE,GAAG,GAAGtiS,EAAE,GAAGA,GAAE,WAAWF,GAAE,EAAI,IAAEwiS,GAAG,GAAGtiS,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAE2pS,GAAGz0H,WAAWy0H,GAAGz0H,WAAW,EAAE,IAAIp1K,GAAE,GAAIC,GAA4B,CAAtC,QAAsB4pS,GAAGz0H,WAAWl1K,CAAE,CAAC,GAAE,CACjK,SAAS0qS,GAAG5qS,EAAEC,EAAEC,GAAG,IAAImF,EAAE+jJ,KAAI3nJ,EAAE8jS,GAAGvlS,GAAGsF,EAAE,CAAC8tS,KAAK3xS,EAAEq0H,OAAO51H,EAAE+3S,aAAa,KAAKC,WAAW,KAAKprT,KAAK,MAAMyY,EAAEtF,EAAEm3H,QAA6E,GAArE,OAAO7xH,EAAED,EAAExY,KAAKwY,GAAGA,EAAExY,KAAKyY,EAAEzY,KAAKyY,EAAEzY,KAAKwY,GAAGrF,EAAEm3H,QAAQ9xH,EAAEC,EAAEvF,EAAE67O,UAAa77O,IAAIuqG,IAAG,OAAOhlG,GAAGA,IAAIglG,GAAEojM,GAAG5D,IAAG,MAAO,CAAC,GAAG,IAAI/pS,EAAEsyS,QAAQ,OAAO/sS,GAAG,IAAIA,EAAE+sS,QAAiC,QAAxB/sS,EAAEtF,EAAE+3S,qBAA8B,IAAI,IAAIxyS,EAAEvF,EAAEk4S,kBAAkB/0O,EAAE79D,EAAEC,EAAEtF,GAAmC,GAAhCoF,EAAE2yS,aAAa1yS,EAAED,EAAE4yS,WAAW90O,EAAKmmF,GAAEnmF,EAAE59D,GAAG,MAA0B,CAAnB,MAAMtJ,GAAI,CAASspS,GAAGxlS,EAAEyB,EAAE4D,EAAG,CAAC,CACha,IAAIglS,GAAG,CAACwP,YAAYrwJ,GAAEpR,YAAY4Q,GAAEn5J,WAAWm5J,GAAE0gE,UAAU1gE,GAAEsgF,oBAAoBtgF,GAAEw1F,gBAAgBx1F,GAAEkgE,QAAQlgE,GAAEyiG,WAAWziG,GAAEu+D,OAAOv+D,GAAEsrE,SAAStrE,GAAEkwH,cAAclwH,GAAE8wJ,iBAAiB9wJ,GAAE+wJ,cAAc/wJ,GAAEgxJ,iBAAiBhxJ,GAAEixJ,oBAAoBjxJ,GAAEkxJ,0BAAyB,GAAIv2S,GAAG,CAACk2S,YAAYrwJ,GAAEpR,YAAY,SAASp4I,EAAEC,GAA4C,OAAzCqqS,KAAKhL,cAAc,CAACt/R,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAE,EAACnQ,WAAW25J,GAAEkgE,UAAU6hF,GAAGjiE,oBAAoB,SAAStpO,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE88F,OAAO,CAACh9F,IAAI,KAAYqrS,GAAG,EAAE,EAAEI,GAAGl+S,KAAK,KAAK0S,EAAED,GAAGE,EAAG,EAACs+O,gBAAgB,SAASx+O,EAC7gBC,GAAG,OAAOorS,GAAG,EAAE,EAAErrS,EAAEC,EAAG,EAACipN,QAAQ,SAASlpN,EAAEC,GAAG,IAAIC,EAAEoqS,KAAqD,OAAhDrqS,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIE,EAAEo/R,cAAc,CAACt/R,EAAEC,GAAUD,CAAE,EAACyrP,WAAW,SAASzrP,EAAEC,EAAEC,GAAG,IAAImF,EAAEilS,KAAuK,OAAlKrqS,OAAE,IAASC,EAAEA,EAAED,GAAGA,EAAEoF,EAAEi6R,cAAcj6R,EAAEytS,UAAU7yS,EAAmFD,GAAjFA,EAAEqF,EAAEg7F,MAAM,CAAC+2B,QAAQ,KAAKghL,SAAS,KAAKJ,oBAAoBh4S,EAAEm4S,kBAAkBl4S,IAAOm4S,SAASxN,GAAGr9S,KAAK,KAAKg9G,GAAEvqG,GAAS,CAACqF,EAAEi6R,cAAct/R,EAAG,EAACunN,OAAO2jF,GAAG52E,SAASw2E,GAAG5xB,cAAcyyB,GAAGmO,iBAAiB,SAAS95S,GAAG,IAAIC,EAAE6qS,GAAG9qS,GAAGE,EAAED,EAAE,GAAGoF,EAAEpF,EAAE,GACva,OAD0asrS,IAAG,WAAW,IAAItrS,EAAE4pS,GAAGz0H,WAAWy0H,GAAGz0H,WAAW,EAAE,IAAI/vK,EAAErF,EACze,CADme,QAAiB6pS,GAAGz0H,WACzfn1K,CAAE,CAAC,GAAC,CAACD,IAAWE,CAAE,EAAC65S,cAAc,WAAW,IAAI/5S,EAAE8qS,IAAG,GAAI7qS,EAAED,EAAE,GAA8B,OAANkrS,GAArBlrS,EAAE8rS,GAAGv+S,KAAK,KAAKyS,EAAE,KAAgB,CAACA,EAAEC,EAAG,EAAC+5S,iBAAiB,SAASh6S,EAAEC,EAAEC,GAAG,IAAImF,EAAEilS,KAAkF,OAA7EjlS,EAAEi6R,cAAc,CAAC//C,KAAK,CAACo5D,YAAY14S,EAAE24S,YAAY,MAAM5uT,OAAOgW,EAAEq0O,UAAUn0O,GAAUyqS,GAAGtlS,EAAErF,EAAEC,EAAEC,EAAG,EAAC+5S,oBAAoB,WAAW,GAAG2e,GAAG,CAAC,IAAI54T,GAAE,EAAGC,EAAE46R,IAAG,WAA6B,MAAlB76R,IAAIA,GAAE,EAAGE,EAAE46R,OAAa35R,MAAMpB,EAAE,KAAO,IAAEG,EAAE4qS,GAAG7qS,GAAG,GAAwE,OAArE,KAAY,EAAPsqG,GAAE1vD,QAAU0vD,GAAE+9I,OAAO,IAAI0iD,GAAG,GAAE,WAAW9qS,EAAE46R,KAAM,QAAC,EAAO,OAAc76R,CAAE,CAAa,OAAN6qS,GAAP7qS,EAAE66R,MAAkB76R,CAAE,EAACi6S,0BAAyB,GAAI/P,GAAG,CAAC0P,YAAYrwJ,GAC1fpR,YAAYwzJ,GAAG/7S,WAAW25J,GAAEkgE,UAAUovG,GAAGxvF,oBAAoBoiE,GAAGltD,gBAAgBgtD,GAAGtiF,QAAQ2iF,GAAGpgD,WAAW/nP,GAAG6jN,OAAO4jF,GAAG72E,SAAS,WAAW,OAAO5wN,GAAG8mS,GAAI,EAACtxB,cAAcyyB,GAAGmO,iBAAiB,SAAS95S,GAAG,IAAIC,EAAEyD,GAAG8mS,IAAItqS,EAAED,EAAE,GAAGoF,EAAEpF,EAAE,GAA6F,OAA1F64T,IAAG,WAAW,IAAI74T,EAAE4pS,GAAGz0H,WAAWy0H,GAAGz0H,WAAW,EAAE,IAAI/vK,EAAErF,EAA2B,CAAjC,QAAiB6pS,GAAGz0H,WAAWn1K,CAAE,CAAC,GAAC,CAACD,IAAWE,CAAE,EAAC65S,cAAc,WAAW,IAAI/5S,EAAE0D,GAAG8mS,IAAI,GAAG,MAAM,CAACW,KAAK50M,QAAQv2F,EAAG,EAACg6S,iBAAiBnP,GAAGoP,oBAAoB,WAAW,OAAOv2S,GAAG8mS,IAAI,EAAG,EAAC0P,0BAAyB,GAAI9P,GAAG,CAACyP,YAAYrwJ,GACzfpR,YAAYwzJ,GAAG/7S,WAAW25J,GAAEkgE,UAAUovG,GAAGxvF,oBAAoBoiE,GAAGltD,gBAAgBgtD,GAAGtiF,QAAQ2iF,GAAGpgD,WAAWg/C,GAAGljF,OAAO4jF,GAAG72E,SAAS,WAAW,OAAOm2E,GAAGD,GAAI,EAACtxB,cAAcyyB,GAAGmO,iBAAiB,SAAS95S,GAAG,IAAIC,EAAEwqS,GAAGD,IAAItqS,EAAED,EAAE,GAAGoF,EAAEpF,EAAE,GAA6F,OAA1F64T,IAAG,WAAW,IAAI74T,EAAE4pS,GAAGz0H,WAAWy0H,GAAGz0H,WAAW,EAAE,IAAI/vK,EAAErF,EAA2B,CAAjC,QAAiB6pS,GAAGz0H,WAAWn1K,CAAE,CAAC,GAAC,CAACD,IAAWE,CAAE,EAAC65S,cAAc,WAAW,IAAI/5S,EAAEyqS,GAAGD,IAAI,GAAG,MAAM,CAACW,KAAK50M,QAAQv2F,EAAG,EAACg6S,iBAAiBnP,GAAGoP,oBAAoB,WAAW,OAAOxP,GAAGD,IAAI,EAAG,EAAC0P,0BAAyB,GAAIjO,GAAGryB,EAAGwd,kBAC/e2M,IAAG,EAAG,SAASj7I,GAAE9oJ,EAAEC,EAAEC,EAAEmF,GAAGpF,EAAE6qB,MAAM,OAAO9qB,EAAEy4T,GAAGx4T,EAAE,KAAKC,EAAEmF,GAAG2hS,GAAG/mS,EAAED,EAAE8qB,MAAM5qB,EAAEmF,EAAG,UAAS8mS,GAAGnsS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAGvB,EAAEA,EAAE0iC,OAAO,IAAIt9B,EAAErF,EAAE4uI,IAA8B,OAA1Bi1J,GAAG7jS,EAAEwB,GAAG4D,EAAE2kS,GAAGhqS,EAAEC,EAAEC,EAAEmF,EAAEC,EAAE7D,GAAM,OAAOzB,GAAI+jS,IAA0E9jS,EAAEqoP,OAAO,EAAEx/F,GAAE9oJ,EAAEC,EAAEoF,EAAE5D,GAAUxB,EAAE6qB,QAA/F7qB,EAAE4yS,YAAY7yS,EAAE6yS,YAAY5yS,EAAEqoP,QAAQ,IAAItoP,EAAEsyS,QAAQ7wS,EAAE2qS,GAAGpsS,EAAEC,EAAEwB,GAAwC,CACjR,SAAS4qS,GAAGrsS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,GAAG,OAAOtF,EAAE,CAAC,IAAIuF,EAAErF,EAAE3E,KAAK,MAAG,oBAAoBgK,GAAI+mS,GAAG/mS,SAAI,IAASA,EAAEmzI,cAAc,OAAOx4I,EAAEsnK,cAAS,IAAStnK,EAAEw4I,eAAsD14I,EAAEw4T,GAAGt4T,EAAE3E,KAAK,KAAK8J,EAAEpF,EAAEA,EAAE46C,KAAKv1C,IAAKupI,IAAI5uI,EAAE4uI,IAAI7uI,EAAE+4O,OAAO94O,EAASA,EAAE6qB,MAAM9qB,IAAvGC,EAAE22N,IAAI,GAAG32N,EAAE1E,KAAKgK,EAAEgnS,GAAGvsS,EAAEC,EAAEsF,EAAEF,EAAE5D,EAAE6D,GAA0E,CAAU,OAAVC,EAAEvF,EAAE8qB,MAAS,KAAKrpB,EAAE6D,KAAK7D,EAAE8D,EAAEotO,eAA0BzyO,EAAE,QAAdA,EAAEA,EAAEsnK,SAAmBtnK,EAAE8iS,IAAKvhS,EAAE4D,IAAIrF,EAAE6uI,MAAM5uI,EAAE4uI,KAAYu9J,GAAGpsS,EAAEC,EAAEqF,IAAGrF,EAAEqoP,OAAO,GAAEtoP,EAAEu4T,GAAGhzT,EAAEF,IAAKwpI,IAAI5uI,EAAE4uI,IAAI7uI,EAAE+4O,OAAO94O,EAASA,EAAE6qB,MAAM9qB,EAAE,CACpb,SAASusS,GAAGvsS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,GAAG,OAAOtF,GAAGgjS,GAAGhjS,EAAE2yO,cAActtO,IAAIrF,EAAE6uI,MAAM5uI,EAAE4uI,IAAI,IAAGk1J,IAAG,EAAG,KAAKz+R,EAAE7D,GAAqC,OAAOxB,EAAEqyS,MAAMtyS,EAAEsyS,MAAMlG,GAAGpsS,EAAEC,EAAEqF,GAAhE,KAAa,MAARtF,EAAEsoP,SAAey7C,IAAG,EAAS,CAAiC,OAAOgJ,GAAG/sS,EAAEC,EAAEC,EAAEmF,EAAEC,EAAG,CACtL,SAAS0nS,GAAGhtS,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEu2S,aAAa/0S,EAAE4D,EAAE0V,SAASzV,EAAE,OAAOtF,EAAEA,EAAEs/R,cAAc,KAAK,GAAG,WAAWj6R,EAAEw1C,MAAM,kCAAkCx1C,EAAEw1C,KAAK,GAAG,KAAY,EAAP56C,EAAE46C,MAAQ56C,EAAEq/R,cAAc,CAACsb,UAAU,GAAGzwJ,GAAGlqJ,EAAEC,OAAQ,IAAG,KAAO,WAAFA,GAA8E,OAAOF,EAAE,OAAOsF,EAAEA,EAAEs1S,UAAU16S,EAAEA,EAAED,EAAEqyS,MAAMryS,EAAEiyS,WAAW,WAAWjyS,EAAEq/R,cAAc,CAACsb,UAAU56S,GAAGmqJ,GAAGlqJ,EAAED,GAAG,KAAxKC,EAAEq/R,cAAc,CAACsb,UAAU,GAAGzwJ,GAAGlqJ,EAAE,OAAOqF,EAAEA,EAAEs1S,UAAU16S,EAAQ,MAAkH,OAAOoF,GAAGD,EAAEC,EAAEs1S,UAAU16S,EAAED,EAAEq/R,cAAc,MAAMj6R,EAAEnF,EAAEiqJ,GAAGlqJ,EAAEoF,GAAc,OAAXyjJ,GAAE9oJ,EAAEC,EAAEwB,EAAEvB,GAAUD,EAAE6qB,KAAM,CAC/e,SAASmiR,GAAGjtS,EAAEC,GAAG,IAAIC,EAAED,EAAE4uI,KAAO,OAAO7uI,GAAG,OAAOE,GAAG,OAAOF,GAAGA,EAAE6uI,MAAM3uI,KAAED,EAAEqoP,OAAO,IAAI,UAASykD,GAAG/sS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAE+hJ,GAAEnnJ,GAAGitS,GAAG9iM,GAAE9T,QAA4C,OAApCjxF,EAAE85R,GAAGn/R,EAAEqF,GAAGw+R,GAAG7jS,EAAEwB,GAAGvB,EAAE8pS,GAAGhqS,EAAEC,EAAEC,EAAEmF,EAAEC,EAAE7D,GAAM,OAAOzB,GAAI+jS,IAA0E9jS,EAAEqoP,OAAO,EAAEx/F,GAAE9oJ,EAAEC,EAAEC,EAAEuB,GAAUxB,EAAE6qB,QAA/F7qB,EAAE4yS,YAAY7yS,EAAE6yS,YAAY5yS,EAAEqoP,QAAQ,IAAItoP,EAAEsyS,QAAQ7wS,EAAE2qS,GAAGpsS,EAAEC,EAAEwB,GAAwC,CACrS,SAASyrS,GAAGltS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,GAAG4lJ,GAAEnnJ,GAAG,CAAC,IAAIoF,GAAE,EAAGk6R,GAAGv/R,EAAG,MAAKqF,GAAE,EAAW,GAARw+R,GAAG7jS,EAAEwB,GAAM,OAAOxB,EAAE+4O,UAAU,OAAOh5O,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAG28C,GAAGhlS,EAAEC,EAAEmF,GAAG2gS,GAAG/lS,EAAEC,EAAEmF,EAAE5D,GAAG4D,GAAE,OAAQ,GAAG,OAAOrF,EAAE,CAAC,IAAIuF,EAAEtF,EAAE+4O,UAAUxzO,EAAEvF,EAAE0yO,cAAcptO,EAAE5a,MAAM6a,EAAE,IAAI49D,EAAE79D,EAAEyF,QAAQ9O,EAAEgE,EAAEiwN,YAAY,kBAAkBj0N,GAAG,OAAOA,EAAEA,EAAEstJ,GAAEttJ,GAAwBA,EAAEkjS,GAAGn/R,EAAzB/D,EAAEmrJ,GAAEnnJ,GAAGitS,GAAG9iM,GAAE9T,SAAmB,IAAIn5F,EAAE8C,EAAEktN,yBAAyB3vN,EAAE,oBAAoBL,GAAG,oBAAoBmI,EAAEiwN,wBAAwB/3N,GAAG,oBAAoB8H,EAAE+uS,kCAAkC,oBAC5e/uS,EAAE4vN,4BAA4B3vN,IAAIH,GAAG+9D,IAAIlnE,IAAIgpS,GAAGjlS,EAAEsF,EAAEF,EAAEnJ,GAAG8nS,IAAG,EAAG,IAAI77R,EAAElI,EAAEq/R,cAAc/5R,EAAEyvC,MAAM7sC,EAAEm8R,GAAGrkS,EAAEoF,EAAEE,EAAE9D,GAAG2hE,EAAEnjE,EAAEq/R,cAAc95R,IAAIH,GAAG8C,IAAIi7D,GAAGgkF,GAAE7wD,SAASytM,IAAI,oBAAoB5mS,IAAI+nS,GAAGllS,EAAEC,EAAE9C,EAAEiI,GAAG+9D,EAAEnjE,EAAEq/R,gBAAgB95R,EAAEw+R,IAAIgB,GAAG/kS,EAAEC,EAAEsF,EAAEH,EAAE8C,EAAEi7D,EAAElnE,KAAKuB,GAAG,oBAAoB8H,EAAEivS,2BAA2B,oBAAoBjvS,EAAE2vN,qBAAqB,oBAAoB3vN,EAAE2vN,oBAAoB3vN,EAAE2vN,qBAAqB,oBAAoB3vN,EAAEivS,2BAA2BjvS,EAAEivS,6BAA6B,oBAAoBjvS,EAAEgoN,oBACxfttN,EAAEqoP,OAAO,KAAK,oBAAoB/iP,EAAEgoN,oBAAoBttN,EAAEqoP,OAAO,GAAGroP,EAAE0yO,cAActtO,EAAEpF,EAAEq/R,cAAcl8N,GAAG79D,EAAE5a,MAAM0a,EAAEE,EAAEyvC,MAAMouB,EAAE79D,EAAEyF,QAAQ9O,EAAEmJ,EAAEG,IAAI,oBAAoBD,EAAEgoN,oBAAoBttN,EAAEqoP,OAAO,GAAGjjP,GAAE,EAAI,KAAI,CAACE,EAAEtF,EAAE+4O,UAAUkrD,GAAGlkS,EAAEC,GAAGuF,EAAEvF,EAAE0yO,cAAcz2O,EAAE+D,EAAE1E,OAAO0E,EAAE+0K,YAAYxvK,EAAE49R,GAAGnjS,EAAE1E,KAAKiK,GAAGD,EAAE5a,MAAMuR,EAAEuB,EAAEwC,EAAEu2S,aAAaruS,EAAE5C,EAAEyF,QAAwB,kBAAhBo4D,EAAEljE,EAAEiwN,cAAiC,OAAO/sJ,EAAEA,EAAEomF,GAAEpmF,GAAwBA,EAAEg8N,GAAGn/R,EAAzBmjE,EAAEikF,GAAEnnJ,GAAGitS,GAAG9iM,GAAE9T,SAAmB,IAAI/4F,EAAE0C,EAAEktN,0BAA0BhwN,EAAE,oBAAoBI,GAAG,oBAAoB+H,EAAEiwN,0BAC9e,oBAAoBjwN,EAAE+uS,kCAAkC,oBAAoB/uS,EAAE4vN,4BAA4B3vN,IAAI/H,GAAG0K,IAAIi7D,IAAI8hO,GAAGjlS,EAAEsF,EAAEF,EAAE+9D,GAAG4gO,IAAG,EAAG77R,EAAElI,EAAEq/R,cAAc/5R,EAAEyvC,MAAM7sC,EAAEm8R,GAAGrkS,EAAEoF,EAAEE,EAAE9D,GAAG,IAAIlE,EAAE0C,EAAEq/R,cAAc95R,IAAI/H,GAAG0K,IAAI5K,GAAG6pJ,GAAE7wD,SAASytM,IAAI,oBAAoBxmS,IAAI2nS,GAAGllS,EAAEC,EAAE1C,EAAE6H,GAAG9H,EAAE0C,EAAEq/R,gBAAgBpjS,EAAE8nS,IAAIgB,GAAG/kS,EAAEC,EAAEhE,EAAEmJ,EAAE8C,EAAE5K,EAAE6lE,KAAKhmE,GAAG,oBAAoBmI,EAAEy1S,4BAA4B,oBAAoBz1S,EAAE8vN,sBAAsB,oBAAoB9vN,EAAE8vN,qBAAqB9vN,EAAE8vN,oBAAoBhwN,EAAE9H,EAAE6lE,GAAG,oBAAoB79D,EAAEy1S,4BACvfz1S,EAAEy1S,2BAA2B31S,EAAE9H,EAAE6lE,IAAI,oBAAoB79D,EAAEkoN,qBAAqBxtN,EAAEqoP,OAAO,GAAG,oBAAoB/iP,EAAEiwN,0BAA0Bv1N,EAAEqoP,OAAO,OAAO,oBAAoB/iP,EAAEkoN,oBAAoBjoN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,GAAG,oBAAoB/iP,EAAEiwN,yBAAyBhwN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,KAAKroP,EAAE0yO,cAActtO,EAAEpF,EAAEq/R,cAAc/hS,GAAGgI,EAAE5a,MAAM0a,EAAEE,EAAEyvC,MAAMz3C,EAAEgI,EAAEyF,QAAQo4D,EAAE/9D,EAAEnJ,IAAI,oBAAoBqJ,EAAEkoN,oBAAoBjoN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBACpfr/R,EAAEqoP,OAAO,GAAG,oBAAoB/iP,EAAEiwN,yBAAyBhwN,IAAIxF,EAAE2yO,eAAexqO,IAAInI,EAAEs/R,gBAAgBr/R,EAAEqoP,OAAO,KAAKjjP,GAAE,EAAI,QAAO+nS,GAAGptS,EAAEC,EAAEC,EAAEmF,EAAEC,EAAE7D,EAAG,UAAS2rS,GAAGptS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG2nS,GAAGjtS,EAAEC,GAAG,IAAIsF,EAAE,KAAa,GAARtF,EAAEqoP,OAAU,IAAIjjP,IAAIE,EAAE,OAAO9D,GAAGg+R,GAAGx/R,EAAEC,GAAE,GAAIksS,GAAGpsS,EAAEC,EAAEqF,GAAGD,EAAEpF,EAAE+4O,UAAUizD,GAAG11M,QAAQt2F,EAAE,IAAIuF,EAAED,GAAG,oBAAoBrF,EAAEw1O,yBAAyB,KAAKrwO,EAAEu9B,SAAuI,OAA9H3iC,EAAEqoP,OAAO,EAAE,OAAOtoP,GAAGuF,GAAGtF,EAAE6qB,MAAMk8Q,GAAG/mS,EAAED,EAAE8qB,MAAM,KAAKxlB,GAAGrF,EAAE6qB,MAAMk8Q,GAAG/mS,EAAE,KAAKuF,EAAEF,IAAIwjJ,GAAE9oJ,EAAEC,EAAEuF,EAAEF,GAAGrF,EAAEq/R,cAAcj6R,EAAE2vC,MAAMvzC,GAAGg+R,GAAGx/R,EAAEC,GAAE,GAAWD,EAAE6qB,KAAM,CACne,SAAStJ,GAAGxhB,GAAG,IAAIC,EAAED,EAAEg5O,UAAU/4O,EAAEk7S,eAAer5R,GAAG9hB,EAAEC,EAAEk7S,eAAel7S,EAAEk7S,iBAAiBl7S,EAAE+K,SAAS/K,EAAE+K,SAAS8W,GAAG9hB,EAAEC,EAAE+K,SAAQ,GAAIm9R,GAAGnoS,EAAEC,EAAEg5O,cAAe,KAS0N+0D,GAAGC,GAAGC,GAAGC,GAT/N1sR,GAAG,CAAC89Q,WAAW,KAAKic,UAAU,GAC5L,SAAS75R,GAAG3hB,EAAEC,EAAEC,GAAG,IAAsCqF,EAAlCF,EAAEpF,EAAEu2S,aAAa/0S,EAAEynJ,GAAE3yD,QAAQjxF,GAAE,EAA6M,OAAvMC,EAAE,KAAa,GAARtF,EAAEqoP,UAAa/iP,GAAE,OAAOvF,GAAG,OAAOA,EAAEs/R,gBAAiB,KAAO,EAAF79R,IAAM8D,GAAGD,GAAE,EAAGrF,EAAEqoP,QAAQ,IAAI,OAAOtoP,GAAG,OAAOA,EAAEs/R,oBAAe,IAASj6R,EAAEm3J,WAAU,IAAKn3J,EAAEq2S,6BAA6Bj6S,GAAG,GAAGylJ,GAAEgC,GAAI,EAAFznJ,GAAQ,OAAOzB,QAAG,IAASqF,EAAEm3J,UAAUitI,GAAGxpS,GAAGD,EAAEqF,EAAE0V,SAAStZ,EAAE4D,EAAEm3J,SAAYl3J,GAAStF,EAAE6hB,GAAG5hB,EAAED,EAAEyB,EAAEvB,GAAGD,EAAE6qB,MAAMw0Q,cAAc,CAACsb,UAAU16S,GAAGD,EAAEq/R,cAAc79Q,GAAGzhB,GAAK,kBAAkBqF,EAAEu2S,2BAAiC57S,EAAE6hB,GAAG5hB,EAAED,EAAEyB,EAAEvB,GAAGD,EAAE6qB,MAAMw0Q,cAAc,CAACsb,UAAU16S,GAC/fD,EAAEq/R,cAAc79Q,GAAGxhB,EAAEqyS,MAAM,SAAStyS,KAAEE,EAAEotS,GAAG,CAACzyP,KAAK,UAAU9/B,SAAS/a,GAAGC,EAAE46C,KAAK36C,EAAE,OAAQ64O,OAAO94O,EAASA,EAAE6qB,MAAM5qB,KAAYF,EAAEs/R,cAAkBh6R,GAASD,EAAEkoS,GAAGvtS,EAAEC,EAAEoF,EAAE0V,SAAS1V,EAAEm3J,SAASt8J,GAAGoF,EAAErF,EAAE6qB,MAAMrpB,EAAEzB,EAAE8qB,MAAMw0Q,cAAch6R,EAAEg6R,cAAc,OAAO79R,EAAE,CAACm5S,UAAU16S,GAAG,CAAC06S,UAAUn5S,EAAEm5S,UAAU16S,GAAGoF,EAAE4sS,WAAWlyS,EAAEkyS,YAAYhyS,EAAED,EAAEq/R,cAAc79Q,GAAGpc,IAAEnF,EAAEutS,GAAGztS,EAAEC,EAAEoF,EAAE0V,SAAS7a,GAAGD,EAAEq/R,cAAc,KAAYp/R,GAClQ,UAAS2hB,GAAG7hB,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE66C,KAAKv1C,EAAEtF,EAAE8qB,MAAuK,OAAjK7qB,EAAE,CAAC46C,KAAK,SAAS9/B,SAAS9a,GAAG,KAAO,EAAFwB,IAAM,OAAO6D,GAAGA,EAAE4sS,WAAW,EAAE5sS,EAAEkxS,aAAav2S,GAAGqF,EAAEgoS,GAAGrtS,EAAEwB,EAAE,EAAE,MAAMvB,EAAE4mS,GAAG5mS,EAAEuB,EAAE4D,EAAE,MAAMC,EAAEyzO,OAAO/4O,EAAEE,EAAE64O,OAAO/4O,EAAEsF,EAAEo0O,QAAQx5O,EAAEF,EAAE8qB,MAAMxlB,EAASpF,CAAE,CACvV,SAASutS,GAAGztS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAEzB,EAAE8qB,MAAiL,OAA3K9qB,EAAEyB,EAAEi4O,QAAQx5O,EAAEq4T,GAAG92T,EAAE,CAACo5C,KAAK,UAAU9/B,SAAS7a,IAAI,KAAY,EAAPD,EAAE46C,QAAU36C,EAAEoyS,MAAMjtS,GAAGnF,EAAE64O,OAAO94O,EAAEC,EAAEw5O,QAAQ,KAAK,OAAO15O,IAAIA,EAAE+0S,WAAW,KAAK/0S,EAAEsoP,MAAM,EAAEroP,EAAE+0S,YAAY/0S,EAAE60S,WAAW90S,GAAUC,EAAE6qB,MAAM5qB,CAAE,CAC/N,SAASqtS,GAAGvtS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAErF,EAAE46C,KAAKt1C,EAAEvF,EAAE8qB,MAAM9qB,EAAEuF,EAAEm0O,QAAQ,IAAIl0O,EAAE,CAACq1C,KAAK,SAAS9/B,SAAS7a,GAAoS,OAAjS,KAAO,EAAFoF,IAAMrF,EAAE6qB,QAAQvlB,IAAGrF,EAAED,EAAE6qB,OAAQonR,WAAW,EAAEhyS,EAAEs2S,aAAahxS,EAAiB,QAAfD,EAAErF,EAAE40S,aAAqB70S,EAAE+0S,YAAY90S,EAAE80S,YAAY/0S,EAAE60S,WAAWvvS,EAAEA,EAAEwvS,WAAW,MAAM90S,EAAE+0S,YAAY/0S,EAAE60S,WAAW,MAAM50S,EAAEq4T,GAAGhzT,EAAEC,GAAG,OAAOxF,EAAEqF,EAAEkzT,GAAGv4T,EAAEqF,IAAIA,EAAEyhS,GAAGzhS,EAAEC,EAAE7D,EAAE,OAAQ6mP,OAAO,EAAGjjP,EAAE0zO,OAAO94O,EAAEC,EAAE64O,OAAO94O,EAAEC,EAAEw5O,QAAQr0O,EAAEpF,EAAE6qB,MAAM5qB,EAASmF,CAAE,UAASqoS,GAAG1tS,EAAEC,GAAGD,EAAEsyS,OAAOryS,EAAE,IAAIC,EAAEF,EAAE67O,UAAU,OAAO37O,IAAIA,EAAEoyS,OAAOryS,GAAG4jS,GAAG7jS,EAAE+4O,OAAO94O,EAAG,CACzd,SAAS4tS,GAAG7tS,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,IAAIC,EAAEvF,EAAEs/R,cAAc,OAAO/5R,EAAEvF,EAAEs/R,cAAc,CAAC4c,YAAYj8S,EAAEk8S,UAAU,KAAKC,mBAAmB,EAAE5lN,KAAKnxF,EAAE65F,KAAKh/F,EAAEm8S,SAAS56S,EAAEqzS,WAAWxvS,IAAIC,EAAE22S,YAAYj8S,EAAEsF,EAAE42S,UAAU,KAAK52S,EAAE62S,mBAAmB,EAAE72S,EAAEixF,KAAKnxF,EAAEE,EAAE25F,KAAKh/F,EAAEqF,EAAE82S,SAAS56S,EAAE8D,EAAEuvS,WAAWxvS,EAAG,CAC1Q,SAASwoS,GAAG9tS,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEu2S,aAAa/0S,EAAE4D,EAAE6wS,YAAY5wS,EAAED,EAAE65F,KAAqC,GAAhC4pD,GAAE9oJ,EAAEC,EAAEoF,EAAE0V,SAAS7a,GAAkB,KAAO,GAAtBmF,EAAE6jJ,GAAE3yD,UAAqBlxF,EAAI,EAAFA,EAAI,EAAEpF,EAAEqoP,OAAO,OAAO,CAAC,GAAG,OAAOtoP,GAAG,KAAa,GAARA,EAAEsoP,OAAUtoP,EAAE,IAAIA,EAAEC,EAAE6qB,MAAM,OAAO9qB,GAAG,CAAC,GAAG,KAAKA,EAAE42N,IAAI,OAAO52N,EAAEs/R,eAAeoO,GAAG1tS,EAAEE,QAAQ,GAAG,KAAKF,EAAE42N,IAAI82E,GAAG1tS,EAAEE,QAAQ,GAAG,OAAOF,EAAE8qB,MAAM,CAAC9qB,EAAE8qB,MAAMiuN,OAAO/4O,EAAEA,EAAEA,EAAE8qB,MAAM,QAAS,IAAG9qB,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAE05O,SAAS,CAAC,GAAG,OAAO15O,EAAE+4O,QAAQ/4O,EAAE+4O,SAAS94O,EAAE,MAAMD,EAAEA,EAAEA,EAAE+4O,MAAO,CAAA/4O,EAAE05O,QAAQX,OAAO/4O,EAAE+4O,OAAO/4O,EAAEA,EAAE05O,OAAQ,CAAAr0O,GAAG,CAAE,CAAO,GAAP6hJ,GAAEgC,GAAE7jJ,GAAM,KAAY,EAAPpF,EAAE46C,MAAQ56C,EAAEq/R,cACxe,UAAU,OAAO79R,GAAG,IAAK,WAAqB,IAAVvB,EAAED,EAAE6qB,MAAUrpB,EAAE,KAAK,OAAOvB,GAAiB,QAAdF,EAAEE,EAAE27O,YAAoB,OAAO0sD,GAAGvoS,KAAKyB,EAAEvB,GAAGA,EAAEA,EAAEw5O,QAAY,QAAJx5O,EAAEuB,IAAYA,EAAExB,EAAE6qB,MAAM7qB,EAAE6qB,MAAM,OAAOrpB,EAAEvB,EAAEw5O,QAAQx5O,EAAEw5O,QAAQ,MAAMm0D,GAAG5tS,GAAE,EAAGwB,EAAEvB,EAAEoF,EAAErF,EAAE60S,YAAY,MAAM,IAAK,YAA6B,IAAjB50S,EAAE,KAAKuB,EAAExB,EAAE6qB,MAAU7qB,EAAE6qB,MAAM,KAAK,OAAOrpB,GAAG,CAAe,GAAG,QAAjBzB,EAAEyB,EAAEo6O,YAAuB,OAAO0sD,GAAGvoS,GAAG,CAACC,EAAE6qB,MAAMrpB,EAAE,KAAM,CAAAzB,EAAEyB,EAAEi4O,QAAQj4O,EAAEi4O,QAAQx5O,EAAEA,EAAEuB,EAAEA,EAAEzB,CAAE,CAAA6tS,GAAG5tS,GAAE,EAAGC,EAAE,KAAKoF,EAAErF,EAAE60S,YAAY,MAAM,IAAK,WAAWjH,GAAG5tS,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAE60S,YAAY,MAAM,QAAQ70S,EAAEq/R,cAAc,KAAK,OAAOr/R,EAAE6qB,KAAM,CACrgB,SAASshR,GAAGpsS,EAAEC,EAAEC,GAAyD,GAAtD,OAAOF,IAAIC,EAAEmyS,aAAapyS,EAAEoyS,cAAc5N,IAAIvkS,EAAEqyS,MAAS,KAAKpyS,EAAED,EAAEiyS,YAAY,CAAC,GAAG,OAAOlyS,GAAGC,EAAE6qB,QAAQ9qB,EAAE8qB,MAAM,MAAM3pB,MAAMpB,EAAE,MAAM,GAAG,OAAOE,EAAE6qB,MAAM,CAA4C,IAAjC5qB,EAAEq4T,GAAZv4T,EAAEC,EAAE6qB,MAAa9qB,EAAEw2S,cAAcv2S,EAAE6qB,MAAM5qB,EAAMA,EAAE64O,OAAO94O,EAAE,OAAOD,EAAE05O,SAAS15O,EAAEA,EAAE05O,SAAQx5O,EAAEA,EAAEw5O,QAAQ6+E,GAAGv4T,EAAEA,EAAEw2S,eAAgBz9D,OAAO94O,EAAEC,EAAEw5O,QAAQ,IAAK,QAAOz5O,EAAE6qB,KAAM,QAAO,IAAK,UAASijR,GAAG/tS,GAAGA,EAAEsoP,OAAO,CAAE,CAChX,GAAGgyC,EAAG0T,GAAG,SAAShuS,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAE6qB,MAAM,OAAO5qB,GAAG,CAAC,GAAG,IAAIA,EAAE02N,KAAK,IAAI12N,EAAE02N,IAAI8iE,EAAG15R,EAAEE,EAAE84O,gBAAgB,GAAG,IAAI94O,EAAE02N,KAAK,OAAO12N,EAAE4qB,MAAM,CAAC5qB,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,IAAG5qB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS94O,EAAE,OAAOC,EAAEA,EAAE64O,MAAO,CAAA74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,CAAC,EAACu0D,GAAG,WAAY,EAACC,GAAG,SAASluS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAqB,IAAlBzB,EAAEA,EAAE2yO,iBAAqBttO,EAAE,CAAC,IAAIC,EAAErF,EAAE+4O,UAAUzzO,EAAEwiS,GAAG5+I,GAAE5yD,SAASr2F,EAAE25R,EAAGv0R,EAAEpF,EAAEF,EAAEqF,EAAE5D,EAAE8D,IAAItF,EAAE4yS,YAAY3yS,IAAI6tS,GAAG9tS,EAAG,CAAC,EAACkuS,GAAG,SAASnuS,EAAEC,EAAEC,EAAEmF,GAAGnF,IAAImF,GAAG0oS,GAAG9tS,EAAG,OAAM,GAAGy6R,EAAG,CAACsT,GAAG,SAAShuS,EACpfC,EAAEC,EAAEmF,GAAG,IAAI,IAAI5D,EAAExB,EAAE6qB,MAAM,OAAOrpB,GAAG,CAAC,GAAG,IAAIA,EAAEm1N,IAAI,CAAC,IAAItxN,EAAE7D,EAAEu3O,UAAU94O,GAAGmF,IAAIC,EAAE04R,GAAG14R,EAAE7D,EAAElG,KAAKkG,EAAEkxO,cAAclxO,IAAIi4R,EAAG15R,EAAEsF,EAAG,MAAK,GAAG,IAAI7D,EAAEm1N,IAAItxN,EAAE7D,EAAEu3O,UAAU94O,GAAGmF,IAAIC,EAAE24R,GAAG34R,EAAE7D,EAAEkxO,cAAclxO,IAAIi4R,EAAG15R,EAAEsF,QAAQ,GAAG,IAAI7D,EAAEm1N,IAAI,CAAC,GAAG,KAAKn1N,EAAEm1N,KAAK,KAAa,EAARn1N,EAAE6mP,SAAWhjP,EAAE,OAAO7D,EAAE69R,eAAe,CAAC,IAAI/5R,EAAE9D,EAAEqpB,MAAM,GAAG,OAAOvlB,IAAI,OAAOA,EAAEulB,QAAQvlB,EAAEulB,MAAMiuN,OAAOxzO,EAAEyoS,GAAGhuS,EAAEuF,GAAE,EAAGD,IAAgB,QAAZA,EAAEC,EAAEm0O,UAAkB,CAACp0O,EAAEyzO,OAAOt3O,EAAEA,EAAE6D,EAAE,QAAS,CAAC,IAAG,OAAO7D,EAAEqpB,MAAM,CAACrpB,EAAEqpB,MAAMiuN,OAAOt3O,EAAEA,EAAEA,EAAEqpB,MAAM,QAAS,CAAC,IAAGrpB,IAAIxB,EAAE,MAAM,KAAK,OAAOwB,EAAEi4O,SAAS,CAAC,GAAG,OAAOj4O,EAAEs3O,QACrft3O,EAAEs3O,SAAS94O,EAAE,OAAOwB,EAAEA,EAAEs3O,MAAO,CAAAt3O,EAAEi4O,QAAQX,OAAOt3O,EAAEs3O,OAAOt3O,EAAEA,EAAEi4O,OAAQ,CAAC,EAAC,IAAI00D,GAAG,SAAHA,EAAYpuS,EAAEC,EAAEC,EAAEmF,GAAG,IAAI,IAAI5D,EAAExB,EAAE6qB,MAAM,OAAOrpB,GAAG,CAAC,GAAG,IAAIA,EAAEm1N,IAAI,CAAC,IAAItxN,EAAE7D,EAAEu3O,UAAU94O,GAAGmF,IAAIC,EAAE04R,GAAG14R,EAAE7D,EAAElG,KAAKkG,EAAEkxO,cAAclxO,IAAIo8R,GAAG79R,EAAEsF,EAAG,MAAK,GAAG,IAAI7D,EAAEm1N,IAAItxN,EAAE7D,EAAEu3O,UAAU94O,GAAGmF,IAAIC,EAAE24R,GAAG34R,EAAE7D,EAAEkxO,cAAclxO,IAAIo8R,GAAG79R,EAAEsF,QAAQ,GAAG,IAAI7D,EAAEm1N,IAAI,CAAC,GAAG,KAAKn1N,EAAEm1N,KAAK,KAAa,EAARn1N,EAAE6mP,SAAWhjP,EAAE,OAAO7D,EAAE69R,eAAe,CAAC,IAAI/5R,EAAE9D,EAAEqpB,MAAM,GAAG,OAAOvlB,IAAI,OAAOA,EAAEulB,QAAQvlB,EAAEulB,MAAMiuN,OAAOxzO,EAAE6oS,EAAGpuS,EAAEuF,GAAE,EAAGD,IAAgB,QAAZA,EAAEC,EAAEm0O,UAAkB,CAACp0O,EAAEyzO,OAAOt3O,EAAEA,EAAE6D,EAAE,QAAS,CAAC,IAAG,OAAO7D,EAAEqpB,MAAM,CAACrpB,EAAEqpB,MAAMiuN,OAC9ft3O,EAAEA,EAAEA,EAAEqpB,MAAM,QAAS,CAAC,IAAGrpB,IAAIxB,EAAE,MAAM,KAAK,OAAOwB,EAAEi4O,SAAS,CAAC,GAAG,OAAOj4O,EAAEs3O,QAAQt3O,EAAEs3O,SAAS94O,EAAE,OAAOwB,EAAEA,EAAEs3O,MAAO,CAAAt3O,EAAEi4O,QAAQX,OAAOt3O,EAAEs3O,OAAOt3O,EAAEA,EAAEi4O,OAAQ,CAAC,EAACu0D,GAAG,SAASjuS,GAAG,IAAIC,EAAED,EAAEg5O,UAAU,GAAG,OAAOh5O,EAAEg1S,YAAY,CAAC,IAAI90S,EAAED,EAAEg5O,cAAc5zO,EAAEu4R,GAAG19R,GAAGkuS,GAAG/oS,EAAErF,GAAE,GAAG,GAAIC,EAAE+iT,gBAAgB39S,EAAE0oS,GAAG/tS,GAAG89R,GAAG59R,EAAEmF,EAAG,CAAC,EAAC6oS,GAAG,SAASluS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAEtF,EAAEg5O,UAAUzzO,EAAEvF,EAAE2yO,cAAc,IAAI3yO,EAAE,OAAOC,EAAE+0S,cAAczvS,IAAIF,EAAEpF,EAAE+4O,UAAU1zO,MAAM,CAAC,IAAIE,EAAEvF,EAAE+4O,UAAU51K,EAAE2kO,GAAG5+I,GAAE5yD,SAASr6F,EAAE,KAAKqJ,IAAIF,IAAInJ,EAAE29R,EAAGr0R,EAAEtF,EAAEqF,EAAEF,EAAE5D,EAAE2hE,IAAIpjE,GAAG,OAAO9D,EAAE+D,EAAE+4O,UAAU1zO,GAAGA,EAAEq4R,GAAGr4R,EACvfpJ,EAAEgE,EAAEqF,EAAEF,EAAEpF,EAAED,EAAEwF,GAAGo0R,EAAGt0R,EAAEpF,EAAEmF,EAAE5D,EAAE2hE,IAAI2qO,GAAG9tS,GAAGA,EAAE+4O,UAAU1zO,EAAEtF,EAAE+tS,GAAG9tS,GAAG+tS,GAAG1oS,EAAErF,GAAE,GAAG,GAAK,CAAC,EAACkuS,GAAG,SAASnuS,EAAEC,EAAEC,EAAEmF,GAAGnF,IAAImF,GAAGrF,EAAE+nS,GAAGD,GAAGvxM,SAASr2F,EAAE6nS,GAAG5+I,GAAE5yD,SAASt2F,EAAE+4O,UAAU8gD,EAAGz0R,EAAErF,EAAEE,EAAED,GAAG8tS,GAAG9tS,IAAIA,EAAE+4O,UAAUh5O,EAAEg5O,SAAU,CAAC,MAAKi1D,GAAG,WAAY,EAACC,GAAG,WAAY,EAACC,GAAG,WAAY,EACpP,SAASE,GAAGruS,EAAEC,GAAG,IAAI24T,GAAG,OAAO54T,EAAEq8S,UAAU,IAAK,SAASp8S,EAAED,EAAEk/F,KAAK,IAAI,IAAIh/F,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAE47O,YAAY37O,EAAED,GAAGA,EAAEA,EAAEy5O,QAAQ,OAAOx5O,EAAEF,EAAEk/F,KAAK,KAAKh/F,EAAEw5O,QAAQ,KAAK,MAAM,IAAK,YAAYx5O,EAAEF,EAAEk/F,KAAK,IAAI,IAAI75F,EAAE,KAAK,OAAOnF,GAAG,OAAOA,EAAE27O,YAAYx2O,EAAEnF,GAAGA,EAAEA,EAAEw5O,QAAQ,OAAOr0O,EAAEpF,GAAG,OAAOD,EAAEk/F,KAAKl/F,EAAEk/F,KAAK,KAAKl/F,EAAEk/F,KAAKw6I,QAAQ,KAAKr0O,EAAEq0O,QAAQ,KAAM,CAC9U,SAASj0I,GAAGzlG,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEu2S,aAAa,OAAOv2S,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAGrE,KAAK,GAAG,OAAOvvE,GAAEpnJ,EAAE1E,OAAO8jS,KAAK,KAHoE,KAAK,EAAiL,OAA/K+I,KAAKt5R,GAAEs4I,IAAGt4I,GAAEu7F,IAAGs/L,MAAKtkS,EAAEpF,EAAE+4O,WAAYmiE,iBAAiB91S,EAAE2F,QAAQ3F,EAAE81S,eAAe91S,EAAE81S,eAAe,MAAS,OAAOn7S,GAAG,OAAOA,EAAE8qB,QAAM5mB,GAAGjE,GAAG8tS,GAAG9tS,GAAGoF,EAAE07R,UAAU9gS,EAAEqoP,OAAO,MAAK2lD,GAAGhuS,GAAU,KAAK,KAAK,EAAEy4T,GAAGz4T,GAAG,IAAIwB,EAAEsmS,GAAGD,GAAGvxM,SAAkB,GAATr2F,EAAED,EAAE1E,KAAQ,OAAOyE,GAAG,MAAMC,EAAE+4O,UAAUk1D,GAAGluS,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAGzB,EAAE6uI,MAAM5uI,EAAE4uI,MAAM5uI,EAAEqoP,OAAO,SAAS,CAAC,IAAIjjP,EAAE,CAAC,GAAG,OACvfpF,EAAE+4O,UAAU,MAAM73O,MAAMpB,EAAE,MAAM,OAAO,IAAK,CAAgB,GAAhBC,EAAE+nS,GAAG5+I,GAAE5yD,SAAYryF,GAAGjE,GAAG,CAAC,IAAIs6R,EAAG,MAAMp5R,MAAMpB,EAAE,MAAMC,EAAEw+R,GAAGv+R,EAAE+4O,UAAU/4O,EAAE1E,KAAK0E,EAAE0yO,cAAclxO,EAAEzB,EAAEC,GAAGA,EAAE4yS,YAAY7yS,EAAE,OAAOA,GAAG+tS,GAAG9tS,EAAG,KAAI,CAAC,IAAIqF,EAAEm0R,EAAGv5R,EAAEmF,EAAE5D,EAAEzB,EAAEC,GAAG+tS,GAAG1oS,EAAErF,GAAE,GAAG,GAAIA,EAAE+4O,UAAU1zO,EAAEs0R,EAAGt0R,EAAEpF,EAAEmF,EAAE5D,EAAEzB,IAAI+tS,GAAG9tS,EAAG,QAAOA,EAAE4uI,MAAM5uI,EAAEqoP,OAAO,IAAK,QAAO,KAAK,KAAK,EAAE,GAAGtoP,GAAG,MAAMC,EAAE+4O,UAAUm1D,GAAGnuS,EAAEC,EAAED,EAAE2yO,cAActtO,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOpF,EAAE+4O,UAAU,MAAM73O,MAAMpB,EAAE,MAAuC,GAAjCC,EAAE+nS,GAAGD,GAAGvxM,SAAS90F,EAAEsmS,GAAG5+I,GAAE5yD,SAAYryF,GAAGjE,GAAG,CAAC,IAAIs6R,EAAG,MAAMp5R,MAAMpB,EAAE,MAAM0+R,GAAGx+R,EAAE+4O,UAC3e/4O,EAAE0yO,cAAc1yO,IAAI8tS,GAAG9tS,EAAG,MAAKA,EAAE+4O,UAAU8gD,EAAGz0R,EAAErF,EAAEyB,EAAExB,EAAG,QAAO,KAAK,KAAK,GAA0B,OAAvB6O,GAAEo6I,IAAG7jJ,EAAEpF,EAAEq/R,cAAiB,KAAa,GAARr/R,EAAEqoP,QAAiBroP,EAAEqyS,MAAMpyS,EAAED,IAAEoF,EAAE,OAAOA,EAAE5D,GAAE,EAAG,OAAOzB,OAAE,IAASC,EAAE0yO,cAAcn2E,UAAUt4J,GAAGjE,GAAGwB,EAAE,OAAOzB,EAAEs/R,cAAiBj6R,IAAI5D,GAAG,KAAY,EAAPxB,EAAE46C,QAAW,OAAO76C,IAAG,IAAKC,EAAE0yO,cAAc+oE,4BAA4B,KAAe,EAAVxyJ,GAAE3yD,SAAW,IAAI+T,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOy+C,IAAG,KAAQ,UAAHy7I,KAAe,KAAQ,UAAH8J,KAAe6L,GAAGpxJ,GAAEF,MAAG6xI,GAAIr1R,IAAIpF,EAAEqoP,OAAO,GAAGgyC,IAAKj1R,GAAG5D,KAAKxB,EAAEqoP,OAAO,GAAU,MAAK,KAAK,EAAE,OAAO8/C,KACpf6F,GAAGhuS,GAAG,OAAOD,GAAG+5B,GAAG95B,EAAE+4O,UAAUC,eAAe,KAAK,KAAK,GAAG,OAAO0qD,GAAG1jS,GAAG,KAAyC,KAAK,GAA0B,GAAvB6O,GAAEo6I,IAAwB,QAArB7jJ,EAAEpF,EAAEq/R,eAA0B,OAAO,KAAsC,GAAjC79R,EAAE,KAAa,GAARxB,EAAEqoP,OAA2B,QAAjBhjP,EAAED,EAAE82S,WAAsB,GAAG16S,EAAE4sS,GAAGhpS,GAAE,OAAQ,CAAC,GAAG,IAAIilG,IAAG,OAAOtqG,GAAG,KAAa,GAARA,EAAEsoP,OAAU,IAAItoP,EAAEC,EAAE6qB,MAAM,OAAO9qB,GAAG,CAAS,GAAG,QAAXsF,EAAEijS,GAAGvoS,IAAe,CAAqJ,IAApJC,EAAEqoP,OAAO,GAAG+lD,GAAGhpS,GAAE,GAAoB,QAAhBrF,EAAEsF,EAAEutS,eAAuB5yS,EAAE4yS,YAAY7yS,EAAEC,EAAEqoP,OAAO,GAAG,OAAOjjP,EAAEyvS,aAAa70S,EAAE+0S,YAAY,MAAM/0S,EAAE60S,WAAWzvS,EAAEyvS,WAAW90S,EAAEE,EAAMmF,EAAEpF,EAAE6qB,MAAM,OAAOzlB,GAAOnF,EAAEF,GAANyB,EAAE4D,GAAQijP,OACjf,EAAE7mP,EAAEszS,WAAW,KAAKtzS,EAAEuzS,YAAY,KAAKvzS,EAAEqzS,WAAW,KAAmB,QAAdxvS,EAAE7D,EAAEo6O,YAAoBp6O,EAAEywS,WAAW,EAAEzwS,EAAE6wS,MAAMpyS,EAAEuB,EAAEqpB,MAAM,KAAKrpB,EAAEkxO,cAAc,KAAKlxO,EAAE69R,cAAc,KAAK79R,EAAEoxS,YAAY,KAAKpxS,EAAE2wS,aAAa,KAAK3wS,EAAEu3O,UAAU,OAAOv3O,EAAEywS,WAAW5sS,EAAE4sS,WAAWzwS,EAAE6wS,MAAMhtS,EAAEgtS,MAAM7wS,EAAEqpB,MAAMxlB,EAAEwlB,MAAMrpB,EAAEkxO,cAAcrtO,EAAEqtO,cAAclxO,EAAE69R,cAAch6R,EAAEg6R,cAAc79R,EAAEoxS,YAAYvtS,EAAEutS,YAAYpxS,EAAElG,KAAK+J,EAAE/J,KAAK2E,EAAEoF,EAAE8sS,aAAa3wS,EAAE2wS,aAAa,OAAOlyS,EAAE,KAAK,CAACoyS,MAAMpyS,EAAEoyS,MAAMD,aAAanyS,EAAEmyS,eAAehtS,EAAEA,EAAEq0O,QAC3d,OADmexyF,GAAEgC,GAAY,EAAVA,GAAE3yD,QAC5e,GAAUt2F,EAAE6qB,KAAM,CAAA9qB,EAAEA,EAAE05O,OAAQ,QAAOr0O,EAAE65F,MAAMmqD,KAAIklJ,KAAKtuS,EAAEqoP,OAAO,GAAG7mP,GAAE,EAAG4sS,GAAGhpS,GAAE,GAAIpF,EAAEqyS,MAAM,SAAU,KAAI,CAAC,IAAI7wS,EAAE,GAAW,QAARzB,EAAEuoS,GAAGjjS,KAAa,GAAGrF,EAAEqoP,OAAO,GAAG7mP,GAAE,EAAmB,QAAhBzB,EAAEA,EAAE6yS,eAAuB5yS,EAAE4yS,YAAY7yS,EAAEC,EAAEqoP,OAAO,GAAG+lD,GAAGhpS,GAAE,GAAI,OAAOA,EAAE65F,MAAM,WAAW75F,EAAEg3S,WAAW/2S,EAAEu2O,YAAY+8E,GAAG,OAAmC,QAA5B34T,EAAEA,EAAE60S,WAAWzvS,EAAEyvS,cAAsB70S,EAAE80S,WAAW,MAAM,UAAU,EAAE1rJ,KAAIhkJ,EAAE+2S,mBAAmB7N,IAAI,aAAaruS,IAAID,EAAEqoP,OAAO,GAAG7mP,GAAE,EAAG4sS,GAAGhpS,GAAE,GAAIpF,EAAEqyS,MAAM,UAAUjtS,EAAE62S,aAAa52S,EAAEo0O,QAAQz5O,EAAE6qB,MAAM7qB,EAAE6qB,MAAMxlB,IAAa,QAATtF,EAAEqF,EAAEmxF,MAAcx2F,EAAE05O,QACtfp0O,EAAErF,EAAE6qB,MAAMxlB,EAAED,EAAEmxF,KAAKlxF,EAAG,QAAO,OAAOD,EAAE65F,MAAMl/F,EAAEqF,EAAE65F,KAAK75F,EAAE82S,UAAUn8S,EAAEqF,EAAE65F,KAAKl/F,EAAE05O,QAAQr0O,EAAEyvS,WAAW70S,EAAE60S,WAAWzvS,EAAE+2S,mBAAmB/yJ,KAAIrpJ,EAAE05O,QAAQ,KAAKz5O,EAAEipJ,GAAE3yD,QAAQ2wD,GAAEgC,GAAEznJ,EAAI,EAAFxB,EAAI,EAAI,EAAFA,GAAKD,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOwuS,KAAK,OAAOxuS,GAAG,OAAOA,EAAEs/R,iBAAiB,OAAOr/R,EAAEq/R,gBAAgB,kCAAkCj6R,EAAEw1C,OAAO56C,EAAEqoP,OAAO,GAAG,KAAK,MAAMnnP,MAAMpB,EAAE,IAAIE,EAAE22N,KAAO,CAC3W,SAAS63E,GAAGzuS,GAAG,OAAOA,EAAE42N,KAAK,KAAK,EAAEvvE,GAAErnJ,EAAEzE,OAAO8jS,KAAK,IAAIp/R,EAAED,EAAEsoP,MAAM,OAAS,KAAFroP,GAAQD,EAAEsoP,OAAS,KAAHroP,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAAgC,GAA9BooS,KAAKt5R,GAAEs4I,IAAGt4I,GAAEu7F,IAAGs/L,KAAkB,KAAO,IAApB1pS,EAAED,EAAEsoP,QAAoB,MAAMnnP,MAAMpB,EAAE,MAAyB,OAAnBC,EAAEsoP,OAAS,KAAHroP,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAO04T,GAAG14T,GAAG,KAAK,KAAK,GAAG,OAAO8O,GAAEo6I,IAAe,MAAZjpJ,EAAED,EAAEsoP,QAActoP,EAAEsoP,OAAS,KAAHroP,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAO8O,GAAEo6I,IAAG,KAAK,KAAK,EAAE,OAAOk/I,KAAK,KAAK,KAAK,GAAG,OAAOzE,GAAG3jS,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOwuS,KAAK,KAAK,QAAQ,OAAO,KAAM,CAC1a,SAASE,GAAG1uS,EAAEC,GAAG,IAAI,IAAIC,EAAE,GAAGmF,EAAEpF,EAAE,GAAGC,GAAGijS,GAAG99R,GAAGA,EAAEA,EAAE0zO,aAAa1zO,GAAG,IAAI5D,EAAEvB,CAAiE,CAA/D,MAAMoF,GAAG7D,EAAE,6BAA6B6D,EAAEg+E,QAAQ,KAAKh+E,EAAEwoK,KAAM,OAAM,CAACtiL,MAAMwU,EAAEhW,OAAOiW,EAAE6tK,MAAMrsK,EAAG,UAASktS,GAAG3uS,EAAEC,GAAG,IAAIc,QAAQiC,MAAM/C,EAAEzU,MAAiD,CAA1C,MAAM0U,GAAGk6G,YAAW,WAAW,MAAMl6G,CAAG,GAAE,CAAC,KAAI0uS,GAAG,oBAAoB5nQ,QAAQA,QAAQgxB,IAAI,SAAS62O,GAAG7uS,EAAEC,EAAEC,IAAGA,EAAEikS,IAAI,EAAEjkS,IAAK02N,IAAI,EAAE12N,EAAEmzS,QAAQ,CAAC/pR,QAAQ,MAAM,IAAIjkB,EAAEpF,EAAEzU,MAAsD,OAAhD0U,EAAE8U,SAAS,WAAW85R,KAAKA,IAAG,EAAGC,GAAG1pS,GAAGspS,GAAG3uS,EAAEC,EAAG,EAAQC,CAAE,CACtb,SAAS8uS,GAAGhvS,EAAEC,EAAEC,IAAGA,EAAEikS,IAAI,EAAEjkS,IAAK02N,IAAI,EAAE,IAAIvxN,EAAErF,EAAEzE,KAAKm6O,yBAAyB,GAAG,oBAAoBrwO,EAAE,CAAC,IAAI5D,EAAExB,EAAEzU,MAAM0U,EAAEmzS,QAAQ,WAAmB,OAAR1E,GAAG3uS,EAAEC,GAAUoF,EAAE5D,EAAG,CAAC,KAAI6D,EAAEtF,EAAEg5O,UAA8O,OAApO,OAAO1zO,GAAG,oBAAoBA,EAAEk4S,oBAAoBt9S,EAAE8U,SAAS,WAAW,oBAAoB3P,IAAI,OAAO8pS,GAAGA,GAAG,IAAI32O,IAAI,CAACzsE,OAAOojT,GAAGr1R,IAAI/tB,MAAM4iT,GAAG3uS,EAAEC,IAAI,IAAIC,EAAED,EAAE6tK,MAAM/hL,KAAKyxT,kBAAkBv9S,EAAEzU,MAAM,CAACkyT,eAAe,OAAOx9S,EAAEA,EAAE,IAAK,GAASA,CAAE,KAAIkvS,GAAG,oBAAoBwO,QAAQA,QAAQplP,IACxc,SAAS62O,GAAGrvS,GAAG,IAAIC,EAAED,EAAE6uI,IAAI,GAAG,OAAO5uI,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAuB,CAAjB,MAAMC,GAAGovS,GAAGtvS,EAAEE,EAAG,MAAKD,EAAEs2F,QAAQ,IAAK,CACjH,SAASi5M,GAAGxvS,EAAEC,GAAG,OAAOA,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAkR,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAArS,KAAK,EAAE,GAAW,IAAR32N,EAAEqoP,OAAW,OAAOtoP,EAAE,CAAC,IAAIE,EAAEF,EAAE2yO,cAActtO,EAAErF,EAAEs/R,cAA4Br/R,GAAdD,EAAEC,EAAE+4O,WAAcxjB,wBAAwBv1N,EAAE+0K,cAAc/0K,EAAE1E,KAAK2E,EAAEkjS,GAAGnjS,EAAE1E,KAAK2E,GAAGmF,GAAGrF,EAAEg+S,oCAAoC/9S,CAAE,QAAO,KAAK,EAAiD,YAA/Cq6R,GAAY,IAARr6R,EAAEqoP,OAAWk1C,GAAGv9R,EAAE+4O,UAAUC,gBAA0D,MAAM93O,MAAMpB,EAAE,KAAO,CACtY,SAAS2vS,GAAG1vS,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE4yS,aAAuB5yS,EAAE60S,WAAW,MAAiB,CAAC,IAAI50S,EAAED,EAAEA,EAAEnT,KAAK,EAAE,CAAC,IAAIoT,EAAE02N,IAAI52N,KAAKA,EAAE,CAAC,IAAIqF,EAAEnF,EAAEw3D,QAAQx3D,EAAEw3D,aAAQ,OAAO,IAASryD,GAAGA,GAAI,CAAAnF,EAAEA,EAAEpT,IAAK,OAAMoT,IAAID,EAAG,CAAC,CACvL,SAAS0vS,GAAG3vS,EAAEC,EAAEC,GAAG,OAAOA,EAAE02N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhC32N,EAAE,QAAlBA,EAAEC,EAAE2yS,aAAuB5yS,EAAE60S,WAAW,MAAiB,CAAC90S,EAAEC,EAAEA,EAAEnT,KAAK,EAAE,CAAC,GAAG,KAAW,EAANkT,EAAE42N,KAAO,CAAC,IAAIvxN,EAAErF,EAAE1U,OAAO0U,EAAE03D,QAAQryD,GAAI,CAAArF,EAAEA,EAAElT,IAAK,OAAMkT,IAAIC,EAAG,CAA6C,GAAG,QAAhCA,EAAE,QAAlBA,EAAEC,EAAE2yS,aAAuB5yS,EAAE60S,WAAW,MAAiB,CAAC90S,EAAEC,EAAEA,EAAEnT,KAAK,EAAE,CAAC,IAAI2U,EAAEzB,EAAEqF,EAAE5D,EAAE3U,KAAa,KAAO,GAAf2U,EAAEA,EAAEm1N,OAAe,KAAO,EAAFn1N,KAAOmuS,GAAG1vS,EAAEF,GAAG6vS,GAAG3vS,EAAEF,IAAIA,EAAEqF,CAAE,OAAMrF,IAAIC,EAAG,QAAO,KAAK,EACtR,OADwRD,EAAEE,EAAE84O,UAAkB,EAAR94O,EAAEooP,QAAU,OAAOroP,EAAED,EAAEutN,qBAAqBloN,EAAEnF,EAAE80K,cAAc90K,EAAE3E,KAAK0E,EAAE0yO,cAAcywD,GAAGljS,EAAE3E,KAAK0E,EAAE0yO,eAAe3yO,EAAEytN,mBAAmBpoN,EACxgBpF,EAAEq/R,cAAct/R,EAAEg+S,4CAAuD,QAAhB/9S,EAAEC,EAAE2yS,cAAsBpO,GAAGvkS,EAAED,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAEC,EAAE2yS,aAAwB,CAAQ,GAAP7yS,EAAE,KAAQ,OAAOE,EAAE4qB,MAAM,OAAO5qB,EAAE4qB,MAAM8rM,KAAK,KAAK,EAAE52N,EAAEo5R,EAAGl5R,EAAE4qB,MAAMkuN,WAAW,MAAM,KAAK,EAAEh5O,EAAEE,EAAE4qB,MAAMkuN,UAAUyrD,GAAGvkS,EAAED,EAAED,EAAG,QAAO,KAAK,EAAoE,OAAlEA,EAAEE,EAAE84O,eAAU,OAAO/4O,GAAW,EAARC,EAAEooP,OAAS0zC,GAAGh8R,EAAEE,EAAE3E,KAAK2E,EAAEyyO,cAAczyO,IAAU,KAAK,EAAS,KAAK,EAAS,KAAK,GACvW,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OADiU,KAAK,GAC7X,YADgYq6R,GAAI,OAAOr6R,EAAEo/R,gBAAgBp/R,EAAEA,EAAE27O,UAAU,OAAO37O,IAAIA,EAAEA,EAAEo/R,cAAc,OAAOp/R,IAAIA,EAAEA,EAAEq/R,WAAW,OAAOr/R,GAClfy+R,GAAGz+R,OAAoE,MAAMiB,MAAMpB,EAAE,KAAO,CAC5F,SAAS+vS,GAAG9vS,EAAEC,GAAG,GAAGq6R,EAAG,IAAI,IAAIp6R,EAAEF,IAAI,CAAC,GAAG,IAAIE,EAAE02N,IAAI,CAAC,IAAIvxN,EAAEnF,EAAE84O,UAAU/4O,EAAE48R,GAAGx3R,GAAGunB,GAAG1sB,EAAE84O,UAAU94O,EAAEyyO,cAAe,MAAK,GAAG,IAAIzyO,EAAE02N,IAAIvxN,EAAEnF,EAAE84O,UAAU/4O,EAAE68R,GAAGz3R,GAAGk4R,GAAGl4R,EAAEnF,EAAEyyO,oBAAoB,IAAI,KAAKzyO,EAAE02N,KAAK,KAAK12N,EAAE02N,KAAK,OAAO12N,EAAEo/R,eAAep/R,IAAIF,IAAI,OAAOE,EAAE4qB,MAAM,CAAC5qB,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,IAAG5qB,IAAIF,EAAE,MAAM,KAAK,OAAOE,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS/4O,EAAE,OAAOE,EAAEA,EAAE64O,MAAO,CAAA74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,CAAC,CACla,SAASq2D,GAAG/vS,EAAEC,GAAG,GAAG0/R,IAAI,oBAAoBA,GAAGye,qBAAqB,IAAIze,GAAGye,qBAAqB1e,GAAGz/R,EAAa,CAAV,MAAMqF,GAAI,QAAOrF,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB52N,EAAEC,EAAE4yS,cAAyC,QAAf7yS,EAAEA,EAAE80S,YAAqB,CAAC,IAAI50S,EAAEF,EAAEA,EAAElT,KAAK,EAAE,CAAC,IAAIuY,EAAEnF,EAAEuB,EAAE4D,EAAEqyD,QAAgB,GAARryD,EAAEA,EAAEuxN,SAAO,IAASn1N,EAAE,GAAG,KAAO,EAAF4D,GAAKuqS,GAAG3vS,EAAEC,OAAO,CAACmF,EAAEpF,EAAE,IAAIwB,GAAqB,CAAjB,MAAM6D,GAAGgqS,GAAGjqS,EAAEC,EAAG,CAAC,CAAApF,EAAEA,EAAEpT,IAAK,OAAMoT,IAAIF,EAAG,OAAM,KAAK,EAAsB,GAApBqvS,GAAGpvS,GAAoB,oBAAjBD,EAAEC,EAAE+4O,WAAmCprB,qBAAqB,IAAI5tN,EAAErV,MAAMsV,EAAE0yO,cAAc3yO,EAAEg1C,MAAM/0C,EAAEq/R,cAAct/R,EAAE4tN,sBACze,CADggB,MAAMtoN,GAAGgqS,GAAGrvS,EAC/gBqF,EAAG,OAAM,KAAK,EAAE+pS,GAAGpvS,GAAG,MAAM,KAAK,EAAEq6R,EAAG2V,GAAGjwS,EAAEC,GAAGy6R,GAAIA,IAAKz6R,EAAEA,EAAE+4O,UAAUC,cAAcj5O,EAAE49R,GAAG39R,GAAG89R,GAAG99R,EAAED,IAAK,UAASmwS,GAAGnwS,EAAEC,GAAG,IAAI,IAAIC,EAAED,IAAI,GAAG8vS,GAAG/vS,EAAEE,GAAG,OAAOA,EAAE4qB,OAAOwvQ,GAAI,IAAIp6R,EAAE02N,IAAI,CAAC,GAAG12N,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS94O,EAAE,OAAOC,EAAEA,EAAE64O,MAAO,CAAA74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,MAAKx5O,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,KAAM,CAC9U,SAASulR,GAAGrwS,GAAGA,EAAE67O,UAAU,KAAK77O,EAAE8qB,MAAM,KAAK9qB,EAAEoyS,aAAa,KAAKpyS,EAAEg1S,YAAY,KAAKh1S,EAAE80S,WAAW,KAAK90S,EAAE2yO,cAAc,KAAK3yO,EAAEs/R,cAAc,KAAKt/R,EAAEw2S,aAAa,KAAKx2S,EAAE+4O,OAAO,KAAK/4O,EAAE6yS,YAAY,IAAK,UAASvC,GAAGtwS,GAAG,OAAO,IAAIA,EAAE42N,KAAK,IAAI52N,EAAE42N,KAAK,IAAI52N,EAAE42N,GAAI,CAC3P,SAAS45E,GAAGxwS,GAAG,GAAGs6R,EAAG,CAACt6R,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAE+4O,OAAO,OAAO94O,GAAG,CAAC,GAAGqwS,GAAGrwS,GAAG,MAAMD,EAAEC,EAAEA,EAAE84O,MAAO,OAAM53O,MAAMpB,EAAE,KAAO,KAAIG,EAAED,EAAgB,OAAdA,EAAEC,EAAE84O,UAAiB94O,EAAE02N,KAAK,KAAK,EAAE,IAAIvxN,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEpF,EAAEA,EAAEg5O,cAAc5zO,GAAE,EAAG,MAAM,QAAQ,MAAMlE,MAAMpB,EAAE,MAAe,GAARG,EAAEooP,QAAWs0C,GAAG38R,GAAGC,EAAEooP,QAAQ,IAAItoP,EAAEC,EAAE,IAAIC,EAAEF,IAAI,CAAC,KAAK,OAAOE,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQu3D,GAAGpwS,EAAE64O,QAAQ,CAAC74O,EAAE,KAAK,MAAMF,CAAE,CAAAE,EAAEA,EAAE64O,MAAO,CAA0B,IAA1B74O,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAW74O,EAAEA,EAAEw5O,QAAQ,IAAIx5O,EAAE02N,KAAK,IAAI12N,EAAE02N,KAAK,KAAK12N,EAAE02N,KAAK,CAAC,GAAW,EAAR12N,EAAEooP,MAAQ,SAASroP,EAAE,GAAG,OACnfC,EAAE4qB,OAAO,IAAI5qB,EAAE02N,IAAI,SAAS32N,EAAOC,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,KAAM,MAAa,EAAR5qB,EAAEooP,OAAS,CAACpoP,EAAEA,EAAE84O,UAAU,MAAMh5O,CAAE,CAAC,CAAAqF,EAAEqrS,GAAG1wS,EAAEE,EAAED,GAAG0wS,GAAG3wS,EAAEE,EAAED,EAAG,CAAC,UAASywS,GAAG1wS,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAE42N,IAAIn1N,EAAE,IAAI4D,GAAG,IAAIA,EAAE,GAAG5D,EAAEzB,EAAEyB,EAAEzB,EAAEg5O,UAAUh5O,EAAEg5O,UAAUzuP,SAAS0V,EAAEs8R,GAAGr8R,EAAEF,EAAEC,GAAG67R,GAAG57R,EAAEF,QAAQ,GAAG,IAAIqF,GAAc,QAAVrF,EAAEA,EAAE8qB,OAAgB,IAAI4lR,GAAG1wS,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,QAAQ,OAAO15O,GAAG0wS,GAAG1wS,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,OAAQ,CACvU,SAASi3D,GAAG3wS,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAE42N,IAAIn1N,EAAE,IAAI4D,GAAG,IAAIA,EAAE,GAAG5D,EAAEzB,EAAEyB,EAAEzB,EAAEg5O,UAAUh5O,EAAEg5O,UAAUzuP,SAAS0V,EAAEi8R,GAAGh8R,EAAEF,EAAEC,GAAG47R,GAAG37R,EAAEF,QAAQ,GAAG,IAAIqF,GAAc,QAAVrF,EAAEA,EAAE8qB,OAAgB,IAAI6lR,GAAG3wS,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,QAAQ,OAAO15O,GAAG2wS,GAAG3wS,EAAEC,EAAEC,GAAGF,EAAEA,EAAE05O,OAAQ,CAC1M,SAASu2D,GAAGjwS,EAAEC,GAAG,IAAI,IAAawB,EAAE6D,EAAXpF,EAAED,EAAEoF,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEnF,EAAE64O,OAAO/4O,EAAE,OAAO,CAAC,GAAG,OAAOqF,EAAE,MAAMlE,MAAMpB,EAAE,MAAoB,OAAd0B,EAAE4D,EAAE2zO,UAAiB3zO,EAAEuxN,KAAK,KAAK,EAAEtxN,GAAE,EAAG,MAAMtF,EAAE,KAAK,EAAiC,KAAK,EAAEyB,EAAEA,EAAEw3O,cAAc3zO,GAAE,EAAG,MAAMtF,EAAEqF,EAAEA,EAAE0zO,MAAO,CAAA1zO,GAAE,CAAG,IAAG,IAAInF,EAAE02N,KAAK,IAAI12N,EAAE02N,IAAIu5E,GAAGnwS,EAAEE,GAAGoF,EAAEq3R,GAAGl7R,EAAEvB,EAAE84O,WAAW7kO,GAAG1S,EAAEvB,EAAE84O,gBAAgB,GAAG,IAAI94O,EAAE02N,KAAK,GAAG,OAAO12N,EAAE4qB,MAAM,CAACrpB,EAAEvB,EAAE84O,UAAUC,cAAc3zO,GAAE,EAAGpF,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,OAAM,GAAGilR,GAAG/vS,EAAEE,GAAG,OAAOA,EAAE4qB,MAAM,CAAC5qB,EAAE4qB,MAAMiuN,OAAO74O,EAAEA,EAAEA,EAAE4qB,MAAM,QAAS,IAAG5qB,IAAID,EAAE,MAChf,KAAK,OAAOC,EAAEw5O,SAAS,CAAC,GAAG,OAAOx5O,EAAE64O,QAAQ74O,EAAE64O,SAAS94O,EAAE,OAAkB,KAAXC,EAAEA,EAAE64O,QAAaniB,MAAMvxN,GAAE,EAAI,CAAAnF,EAAEw5O,QAAQX,OAAO74O,EAAE64O,OAAO74O,EAAEA,EAAEw5O,OAAQ,CAAC,CACpI,SAASk3D,GAAG5wS,EAAEC,GAAG,GAAGq6R,EAAG,CAAC,OAAOr6R,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAAR84E,GAAG,EAAEzvS,GAAU,KAAK,EAAyX,KAAK,GAC7b,KAAK,GAAG,OADgE,KAAK,EAAE,IAAIC,EAAED,EAAE+4O,UAAU,GAAG,MAAM94O,EAAE,CAAC,IAAImF,EAAEpF,EAAE0yO,cAAc3yO,EAAE,OAAOA,EAAEA,EAAE2yO,cAActtO,EAAE,IAAI5D,EAAExB,EAAE1E,KAAK+J,EAAErF,EAAE4yS,YAAY5yS,EAAE4yS,YAAY,KAAK,OAAOvtS,GAAG22R,GAAG/7R,EAAEoF,EAAE7D,EAAEzB,EAAEqF,EAAEpF,EAAG,QAAO,KAAK,EAAE,GAAG,OAAOA,EAAE+4O,UAAU,MAAM73O,MAAMpB,EAAE,MAAqE,OAA/DG,EAAED,EAAE0yO,mBAAcopD,GAAG97R,EAAE+4O,UAAU,OAAOh5O,EAAEA,EAAE2yO,cAAczyO,EAAEA,GAAU,KAAK,EAAoE,YAAlEq6R,IAAKt6R,EAAEA,EAAE+4O,UAAU/4O,EAAE8gS,UAAU9gS,EAAE8gS,SAAQ,EAAGrC,GAAGz+R,EAAEg5O,kBAAuC,KAAK,GACxe,OAD2e63D,GAAG7wS,QACpf8wS,GAAG9wS,GAAU,KAAK,GAAS,YAAN8wS,GAAG9wS,GAAyB,KAAK,GAAG,KAAK,GAAgC,YAA7B6vS,GAAG7vS,EAAE,OAAOA,EAAEq/R,eAAsB,MAAMn+R,MAAMpB,EAAE,KAAO,QAAOE,EAAE22N,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAAR84E,GAAG,EAAEzvS,GAAU,KAAK,GAAyI,KAAK,GAAG,KAAK,GAAG,OAA/I,KAAK,GAAe,OAAZ6wS,GAAG7wS,QAAG8wS,GAAG9wS,GAAU,KAAK,GAAS,YAAN8wS,GAAG9wS,GAAU,KAAK,EAAEs6R,KAAKr6R,EAAED,EAAE+4O,WAAY+nD,UAAU7gS,EAAE6gS,SAAQ,EAAGrC,GAAGx+R,EAAE+4O,iBAA8Cj5O,EAAE,GAAG06R,EAAG,CAAC,OAAOz6R,EAAE22N,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM52N,EAAE,KAAK,EAAE,KAAK,EAAEC,EAAEA,EAAE+4O,UAAU+kD,GAAG99R,EAAEg5O,cAAch5O,EAAE+iT,iBAAiB,MAAMhjT,EAAE,MAAMmB,MAAMpB,EAAE,KACtf,CAAC,UAAS+wS,GAAG9wS,GAAG,OAAOA,EAAEs/R,gBAAgB0R,GAAG3nJ,KAAIixI,GAAIwV,GAAG9vS,EAAE8qB,OAAM,GAAK,UAASimR,GAAG/wS,GAAG,IAAIC,EAAED,EAAE6yS,YAAY,GAAG,OAAO5yS,EAAE,CAACD,EAAE6yS,YAAY,KAAK,IAAI3yS,EAAEF,EAAEg5O,UAAU,OAAO94O,IAAIA,EAAEF,EAAEg5O,UAAU,IAAIo2D,IAAInvS,EAAEhW,SAAQ,SAASgW,GAAG,IAAIoF,EAAE4rS,GAAG1jT,KAAK,KAAKyS,EAAEC,GAAGC,EAAEw7C,IAAIz7C,KAAKC,EAAE4Z,IAAI7Z,GAAGA,EAAE46G,KAAKx1G,EAAEA,GAAI,GAAE,CAAC,UAASgsN,GAAGrxN,EAAEC,GAAG,OAAO,OAAOD,IAAsB,QAAlBA,EAAEA,EAAEs/R,gBAAwB,OAAOt/R,EAAEu/R,cAA+B,QAAlBt/R,EAAEA,EAAEq/R,gBAAwB,OAAOr/R,EAAEs/R,WAAe,KAAI2R,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EACjb,GAAG,oBAAoBhlT,QAAQA,OAAOgqS,IAAI,CAAC,IAAIib,GAAGjlT,OAAOgqS,IAAI4a,GAAGK,GAAG,sBAAsBJ,GAAGI,GAAG,6BAA6BH,GAAGG,GAAG,iBAAiBF,GAAGE,GAAG,oBAAoBD,GAAGC,GAAG,gBAAiB,UAASC,GAAGxxS,GAAG,IAAIC,EAAE06R,EAAG36R,GAAG,GAAG,MAAMC,EAAE,CAAC,GAAG,kBAAkBA,EAAE0yO,cAAc,iBAAiB,MAAMxxO,MAAMpB,EAAE,MAAM,OAAOE,CAAE,CAAQ,GAAG,QAAXD,EAAE85B,GAAG95B,IAAe,MAAMmB,MAAMpB,EAAE,MAAM,OAAOC,EAAEg5O,UAAUziJ,OAAQ,CACjY,SAASk7M,GAAGzxS,EAAEC,GAAG,OAAOA,EAAE62R,UAAU,KAAKoa,GAAG,GAAGlxS,EAAEzE,OAAO0E,EAAEzU,MAAM,OAAM,EAAG,MAAM,KAAK2lT,GAAGnxS,EAAE,CAACC,EAAEA,EAAEzU,MAAMwU,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEjW,QAAQ,CAAC,IAAIsb,EAAErF,EAAEE,KAAKuB,EAAEzB,EAAEE,KAAKoF,EAAErF,EAAEwB,GAAG,GAAG,IAAI4D,EAAEuxN,MAAMl2D,GAAGr7J,GAAG,CAAC,KAAK,MAAMC,GAAGmsS,GAAGpsS,EAAEC,IAAQA,EAAErF,IAANwB,GAAW,GAAGA,IAAIxB,EAAElW,OAAO,CAACkW,GAAE,EAAG,MAAMD,CAAE,CAAK,IAAIqF,EAAEA,EAAEylB,MAAM,OAAOzlB,GAAGrF,EAAEvW,KAAK4b,EAAE5D,GAAG4D,EAAEA,EAAEq0O,OAAQ,CAAC,CAAAz5O,GAAE,CAAG,QAAOA,EAAE,KAAKmxS,GAAG,GAAG,IAAIpxS,EAAE42N,KAAK+kE,GAAG37R,EAAEg5O,UAAU/4O,EAAEzU,OAAO,OAAM,EAAG,MAAM,KAAK8lT,GAAG,IAAG,IAAItxS,EAAE42N,KAAK,IAAI52N,EAAE42N,OAAe,QAAR52N,EAAEu7R,GAAGv7R,KAAa,GAAGA,EAAE7R,QAAQ8R,EAAEzU,QAAO,OAAM,EAAG,MAAM,KAAK6lT,GAAG,GAAG,IAAIrxS,EAAE42N,MACpe,kBAD0e52N,EAAEA,EAAE2yO,cAAc,mBACve3yO,EAAE0J,gBAAgBzJ,EAAEzU,MAAMke,eAAe,OAAM,EAAG,MAAM,QAAQ,MAAMvI,MAAMpB,EAAE,IAAIE,IAAK,OAAM,CAAG,UAASyxS,GAAG1xS,GAAG,OAAOA,EAAE82R,UAAU,KAAKoa,GAAG,MAAM,KAAKrY,EAAG74R,EAAExU,QAAQ,WAAW,IAAI,KAAK2lT,GAAG,MAAM,SAASO,GAAG1xS,IAAI,IAAI,IAAI,KAAKoxS,GAAG,MAAM,UAAUpxS,EAAExU,MAAM,KAAK,KAAK8lT,GAAG,MAAM,IAAItxS,EAAExU,MAAM,IAAI,KAAK6lT,GAAG,MAAM,mBAAmBrxS,EAAExU,MAAM,KAAK,QAAQ,MAAM2V,MAAMpB,EAAE,IAAIC,IAAM,CAC7X,SAASshP,GAAGthP,EAAEC,GAAG,IAAIC,EAAE,GAAGF,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIqF,EAAE,EAAEA,EAAErF,EAAEjW,QAAQ,CAAC,IAAI0X,EAAEzB,EAAEqF,KAAKC,EAAEtF,EAAEqF,KAAKE,EAAEtF,EAAEqF,GAAG,GAAG,IAAI7D,EAAEm1N,MAAMl2D,GAAGj/J,GAAG,CAAC,KAAK,MAAM8D,GAAGksS,GAAGhwS,EAAE8D,IAAQA,EAAEtF,IAANqF,GAAW,GAAGA,IAAIrF,EAAElW,OAAOmW,EAAEzW,KAAKgY,QAAQ,IAAIA,EAAEA,EAAEqpB,MAAM,OAAOrpB,GAAGzB,EAAEvW,KAAKgY,EAAE6D,GAAG7D,EAAEA,EAAEi4O,OAAQ,CAAC,QAAOx5O,CAAE,UAASyxS,GAAG3xS,EAAEC,GAAG,IAAIq7R,GAAG,MAAMn6R,MAAMpB,EAAE,MAAcC,EAAEshP,GAAVthP,EAAEwxS,GAAGxxS,GAAUC,GAAGA,EAAE,GAAGD,EAAEtR,MAAMy+G,KAAKntG,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEjW,QAAQ,CAAC,IAAIsb,EAAErF,EAAEE,KAAK,GAAG,IAAImF,EAAEuxN,IAAIl2D,GAAGr7J,IAAIpF,EAAExW,KAAK4b,EAAE2zO,gBAAgB,IAAI3zO,EAAEA,EAAEylB,MAAM,OAAOzlB,GAAGrF,EAAEvW,KAAK4b,GAAGA,EAAEA,EAAEq0O,OAAQ,QAAOz5O,CAAE,KAAI2xS,GAAG,KACzN,IAAIE,GAAGx1S,KAAKuB,KAAKk0S,GAAGn4B,EAAGsd,uBAAuB8a,GAAGp4B,EAAGwd,kBAAkB6a,GAAGr4B,EAAGyd,qBAAqBzuI,GAAE,EAAEG,GAAE,KAAKJ,GAAE,KAAKE,GAAE,EAAEspJ,GAAG,EAAEI,GAAGrT,GAAG,GAAG50L,GAAE,EAAEkoM,GAAG,KAAKG,GAAG,EAAEnO,GAAG,EAAE8J,GAAG,EAAEsE,GAAG,EAAEK,GAAG,KAAKjC,GAAG,EAAEzC,GAAGr1R,IAAS,SAASg6R,KAAK3E,GAAGllJ,KAAI,GAAI,CAC3c,IA0BuZ0sJ,GA1BnZrtJ,GAAE,KAAKomJ,IAAG,EAAGC,GAAG,KAAKI,GAAG,KAAKmE,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEG,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEJ,GAAG,EAAEK,GAAG,KAAKE,IAAG,EAAG,SAAShrJ,KAAI,OAAO,KAAO,GAAFR,IAAMS,MAAK,IAAI2qJ,GAAGA,GAAGA,GAAG3qJ,IAAI,UAASk8I,GAAGvlS,GAAY,GAAG,KAAO,GAAnBA,EAAEA,EAAE66C,OAAkB,OAAO,EAAE,GAAG,KAAO,EAAF76C,GAAK,OAAO,KAAKsiS,KAAK,EAAE,EAAkB,GAAhB,IAAI2R,KAAKA,GAAGtB,IAAO,IAAI8N,GAAGrrI,WAAW,CAAC,IAAIy+H,KAAKA,GAAG,OAAOZ,GAAGA,GAAGrQ,aAAa,GAAG5iS,EAAEi0S,GAAG,IAAIh0S,EAAE,SAAS4zS,GAAsD,OAA7C,KAAN5zS,IAAIA,KAA8B,KAAPA,GAAbD,EAAE,SAASA,IAAOA,KAAUC,EAAE,OAAcA,CAAE,CAA0D,OAA1DD,EAAEsiS,KAAK,KAAO,EAAF15I,KAAM,KAAK5oJ,EAAEA,EAAEmgS,GAAG,GAAG8T,IAAaj0S,EAAEmgS,GAAVngS,EA1Hpb,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,EAAG,CA0H6T8/R,CAAG9/R,GAAUi0S,IAAYj0S,CAAE,CAC9d,SAASwlS,GAAGxlS,EAAEC,EAAEC,GAAG,GAAG,GAAG0zS,GAAG,MAAMA,GAAG,EAAEG,GAAG,KAAK5yS,MAAMpB,EAAE,MAAgB,GAAG,QAAbC,EAAEq0S,GAAGr0S,EAAEC,IAAe,OAAO,KAAKqgS,GAAGtgS,EAAEC,EAAEC,GAAGF,IAAI+oJ,KAAIulJ,IAAIruS,EAAE,IAAIqqG,IAAG6vM,GAAGn6S,EAAE6oJ,KAAI,IAAIxjJ,EAAEi9R,KAAK,IAAIriS,EAAE,KAAO,EAAF2oJ,KAAM,KAAO,GAAFA,IAAM2rJ,GAAGv0S,IAAIwoJ,GAAExoJ,EAAEE,GAAG,IAAI0oJ,KAAIsqJ,KAAK5pJ,QAAO,KAAO,EAAFV,KAAM,KAAKvjJ,GAAG,KAAKA,IAAI,OAAOsuS,GAAGA,GAAG,IAAIn7O,IAAI,CAACx4D,IAAI2zS,GAAG75R,IAAI9Z,IAAIwoJ,GAAExoJ,EAAEE,IAAI+yS,GAAGjzS,CAAE,UAASq0S,GAAGr0S,EAAEC,GAAGD,EAAEsyS,OAAOryS,EAAE,IAAIC,EAAEF,EAAE67O,UAAqC,IAA3B,OAAO37O,IAAIA,EAAEoyS,OAAOryS,GAAGC,EAAEF,EAAMA,EAAEA,EAAE+4O,OAAO,OAAO/4O,GAAGA,EAAEkyS,YAAYjyS,EAAgB,QAAdC,EAAEF,EAAE67O,aAAqB37O,EAAEgyS,YAAYjyS,GAAGC,EAAEF,EAAEA,EAAEA,EAAE+4O,OAAO,OAAO,IAAI74O,EAAE02N,IAAI12N,EAAE84O,UAAU,IAAK,CAC3e,SAASxwF,GAAExoJ,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAE6gT,aAAax7S,EAAErF,EAAE8iS,eAAerhS,EAAEzB,EAAE+iS,YAAYz9R,EAAEtF,EAAE8gT,gBAAgBv7S,EAAEvF,EAAE4iS,aAAa,EAAEr9R,GAAG,CAAC,IAAIC,EAAE,GAAGy6R,GAAG16R,GAAG69D,EAAE,GAAG59D,EAAEtJ,EAAEoJ,EAAEE,GAAG,IAAI,IAAItJ,GAAG,GAAG,KAAKknE,EAAE/9D,IAAI,KAAK+9D,EAAE3hE,GAAG,CAACvF,EAAE+D,EAAE4/R,GAAGz8N,GAAG,IAAIhmE,EAAEuwI,GAAEroI,EAAEE,GAAG,IAAIpI,EAAElB,EAAE,IAAI,GAAGkB,EAAElB,EAAE,KAAK,CAAE,OAAMA,GAAG+D,IAAID,EAAE6iS,cAAcz/N,GAAG79D,IAAI69D,CAAE,CAAsB,GAAtB/9D,EAAE26R,GAAGhgS,EAAEA,IAAI+oJ,GAAEF,GAAE,GAAG5oJ,EAAE0tI,GAAK,IAAItoI,EAAE,OAAOnF,IAAIA,IAAI8hS,IAAIhB,GAAG9gS,GAAGF,EAAE6gT,aAAa,KAAK7gT,EAAE+gT,iBAAiB,OAAO,CAAC,GAAG,OAAO7gT,EAAE,CAAC,GAAGF,EAAE+gT,mBAAmB9gT,EAAE,OAAOC,IAAI8hS,IAAIhB,GAAG9gS,EAAG,MAAKD,GAAGC,EAAEq0S,GAAGhnT,KAAK,KAAKyS,GAAG,OAAOkiS,IAAIA,GAAG,CAAChiS,GAAGiiS,GAAGtB,GAAGU,GAAGmB,KAAKR,GAAGz4S,KAAKyW,GACpfA,EAAE8hS,IAAI,KAAK/hS,EAAEC,EAAEuiS,GAAG,GAAG8R,GAAGhnT,KAAK,KAAKyS,KAAKE,EA7H+F,SAAYF,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAMmB,MAAMpB,EAAE,IAAIC,IAAM,CA6H9T+/R,CAAG9/R,GAAGC,EAAEuiS,GAAGviS,EAAEu0S,GAAGlnT,KAAK,KAAKyS,KAAKA,EAAE+gT,iBAAiB9gT,EAAED,EAAE6gT,aAAa3gT,CAAE,CAAC,CAC/G,SAASu0S,GAAGz0S,GAAiB,GAAdg0S,IAAI,EAAEH,GAAGI,GAAG,EAAK,KAAO,GAAFrrJ,IAAM,MAAMznJ,MAAMpB,EAAE,MAAM,IAAIE,EAAED,EAAE6gT,aAAa,GAAGnM,MAAM10S,EAAE6gT,eAAe5gT,EAAE,OAAO,KAAK,IAAIC,EAAE8/R,GAAGhgS,EAAEA,IAAI+oJ,GAAEF,GAAE,GAAG,GAAG,IAAI3oJ,EAAE,OAAO,KAAK,IAAImF,EAAEnF,EAAMuB,EAAEmnJ,GAAEA,IAAG,GAAG,IAAItjJ,EAAEsvS,KAAkC,IAA1B7rJ,KAAI/oJ,GAAG6oJ,KAAIxjJ,IAAE6tS,KAAK2B,GAAG70S,EAAEqF,UAAU4vS,KAAK,MAAM,MAAMzvS,GAAG0vS,GAAGl1S,EAAEwF,EAAG,CAA6D,GAApDyc,KAAK8vR,GAAGx7M,QAAQjxF,EAAEsjJ,GAAEnnJ,EAAE,OAAOknJ,GAAEtjJ,EAAE,GAAG0jJ,GAAE,KAAKF,GAAE,EAAExjJ,EAAEilG,IAAM,KAAKqoM,GAAGrE,IAAIuG,GAAG70S,EAAE,QAAQ,GAAG,IAAIqF,EAAE,CAAyF,GAAxF,IAAIA,IAAIujJ,IAAG,GAAG5oJ,EAAE+gS,UAAU/gS,EAAE+gS,SAAQ,EAAGvD,GAAGx9R,EAAEi5O,gBAAwB,KAAR/4O,EAAEggS,GAAGlgS,MAAWqF,EAAE8vS,GAAGn1S,EAAEE,KAAQ,IAAImF,EAAE,MAAMpF,EAAEuyS,GAAGqC,GAAG70S,EAAE,GAAGm6S,GAAGn6S,EAAEE,GAAGsoJ,GAAExoJ,EAAEqpJ,MAAKppJ,EAC1c,OAD4cD,EAAEwhT,aACpfxhT,EAAEu2F,QAAQslJ,UAAU77O,EAAEyhT,cAAcvhT,EAASmF,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMlE,MAAMpB,EAAE,MAAM,KAAK,EACI,KAAK,EAAEw1S,GAAGv1S,GAAG,MADH,KAAK,EAAU,GAARm6S,GAAGn6S,EAAEE,IAAS,SAAFA,KAAcA,GAAiB,IAAbmF,EAAE2rS,GAAG,IAAI3nJ,MAAU,CAAC,GAAG,IAAI22I,GAAGhgS,EAAE,GAAG,MAAyB,KAAnByB,EAAEzB,EAAE8iS,gBAAqB5iS,KAAKA,EAAE,CAACkpJ,KAAIppJ,EAAE+iS,aAAa/iS,EAAE8iS,eAAerhS,EAAE,KAAM,CAAAzB,EAAE2hT,cAAc3nB,EAAGub,GAAGhoT,KAAK,KAAKyS,GAAGqF,GAAG,KAAM,CAAAkwS,GAAGv1S,GAAG,MAAM,KAAK,EAAU,GAARm6S,GAAGn6S,EAAEE,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAfmF,EAAErF,EAAEwjS,WAAe/hS,GAAG,EAAE,EAAEvB,GAAG,CAAC,IAAIqF,EAAE,GAAG06R,GAAG//R,GAAGoF,EAAE,GAAGC,GAAEA,EAAEF,EAAEE,IAAK9D,IAAIA,EAAE8D,GAAGrF,IAAIoF,CAAE,CAClZ,GADkZpF,EAAEuB,EACjZ,IAD2ZvB,GAAG,KAAXA,EAAEmpJ,KAAInpJ,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KACjfA,EAAE,KAAK,KAAK4xS,GAAG5xS,EAAE,OAAOA,GAAU,CAACF,EAAE2hT,cAAc3nB,EAAGub,GAAGhoT,KAAK,KAAKyS,GAAGE,GAAG,KAAM,CAAAq1S,GAAGv1S,GAAG,MAAyB,QAAQ,MAAMmB,MAAMpB,EAAE,MAAQ,CAAS,OAATyoJ,GAAExoJ,EAAEqpJ,MAAYrpJ,EAAE6gT,eAAe5gT,EAAEw0S,GAAGlnT,KAAK,KAAKyS,GAAG,IAAK,UAASm6S,GAAGn6S,EAAEC,GAAuD,IAApDA,IAAI2yS,GAAG3yS,IAAIquS,GAAGtuS,EAAE8iS,gBAAgB7iS,EAAED,EAAE+iS,cAAc9iS,EAAMD,EAAEA,EAAE8gT,gBAAgB,EAAE7gT,GAAG,CAAC,IAAIC,EAAE,GAAG+/R,GAAGhgS,GAAGoF,EAAE,GAAGnF,EAAEF,EAAEE,IAAI,EAAED,IAAIoF,CAAE,CAAC,CAC5U,SAASkvS,GAAGv0S,GAAG,GAAG,KAAO,GAAF4oJ,IAAM,MAAMznJ,MAAMpB,EAAE,MAAW,GAAL20S,KAAQ10S,IAAI+oJ,IAAG,KAAK/oJ,EAAE6iS,aAAah6I,IAAG,CAAC,IAAI5oJ,EAAE4oJ,GAAM3oJ,EAAEi1S,GAAGn1S,EAAEC,GAAG,KAAK0yS,GAAGrE,MAAgBpuS,EAAEi1S,GAAGn1S,EAAfC,EAAE+/R,GAAGhgS,EAAEC,IAAc,MAAeC,EAAEi1S,GAAGn1S,EAAfC,EAAE+/R,GAAGhgS,EAAE,IAAgH,GAAnG,IAAIA,EAAE42N,KAAK,IAAI12N,IAAI0oJ,IAAG,GAAG5oJ,EAAE+gS,UAAU/gS,EAAE+gS,SAAQ,EAAGvD,GAAGx9R,EAAEi5O,gBAAwB,KAARh5O,EAAEigS,GAAGlgS,MAAWE,EAAEi1S,GAAGn1S,EAAEC,KAAQ,IAAIC,EAAE,MAAMA,EAAEsyS,GAAGqC,GAAG70S,EAAE,GAAGm6S,GAAGn6S,EAAEC,GAAGuoJ,GAAExoJ,EAAEqpJ,MAAKnpJ,EAAsE,OAApEF,EAAEwhT,aAAaxhT,EAAEu2F,QAAQslJ,UAAU77O,EAAEyhT,cAAcxhT,EAAEs1S,GAAGv1S,GAAGwoJ,GAAExoJ,EAAEqpJ,MAAY,IAAK,CACxR,SAASosJ,GAAGz1S,EAAEC,GAAG,IAAIC,EAAE0oJ,GAAEA,IAAG,EAAE,IAAI,OAAO5oJ,EAAEC,EAAiC,CAA9C,QAA4B,KAAJ2oJ,GAAE1oJ,KAAUgzS,KAAK5pJ,KAAK,CAAC,UAASosJ,GAAG11S,EAAEC,GAAG,IAAIC,EAAE0oJ,GAAE,GAAG,KAAO,GAAF1oJ,GAAM,OAAOF,EAAEC,GAAG2oJ,IAAG,EAAE,IAAI,GAAG5oJ,EAAE,OAAOwiS,GAAG,GAAGxiS,EAAEzS,KAAK,KAAK0S,GAAoB,CAAtD,QAA8C2oJ,GAAE1oJ,EAAEopJ,IAAI,CAAC,UAASa,GAAGnqJ,EAAEC,GAAGinJ,GAAEqrJ,GAAGJ,IAAIA,IAAIlyS,EAAE0yS,IAAI1yS,CAAE,UAASuuS,KAAK2D,GAAGI,GAAGh8M,QAAQznF,GAAEyjS,GAAI,CACxX,SAASsC,GAAG70S,EAAEC,GAAGD,EAAEwhT,aAAa,KAAKxhT,EAAEyhT,cAAc,EAAE,IAAIvhT,EAAEF,EAAE2hT,cAAiD,GAAnCzhT,IAAIk6R,IAAKp6R,EAAE2hT,cAAcvnB,EAAGF,EAAGh6R,IAAO,OAAOyoJ,GAAE,IAAIzoJ,EAAEyoJ,GAAEowF,OAAO,OAAO74O,GAAG,CAAC,IAAImF,EAAEnF,EAAE,OAAOmF,EAAEuxN,KAAK,KAAK,EAA6B,QAA3BvxN,EAAEA,EAAE9J,KAAKwtQ,yBAA4B,IAAS1jQ,GAAGg6R,KAAK,MAAM,KAAK,EAAE+I,KAAKt5R,GAAEs4I,IAAGt4I,GAAEu7F,IAAGs/L,KAAK,MAAM,KAAK,EAAE+uB,GAAGrzT,GAAG,MAAM,KAAK,EAAE+iS,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGt5R,GAAEo6I,IAAG,MAAM,KAAK,GAAGy6I,GAAGt+R,GAAG,MAAM,KAAK,GAAG,KAAK,GAAGmpS,KAAKtuS,EAAEA,EAAE64O,MAAO,CAAAhwF,GAAE/oJ,EAAE2oJ,GAAE4vK,GAAGv4T,EAAEu2F,QAAQ,MAAMsyD,GAAEspJ,GAAGQ,GAAG1yS,EAAEqqG,GAAE,EAAEkoM,GAAG,KAAKI,GAAGtE,GAAG9J,GAAG,CAAE,CACzc,SAAS0Q,GAAGl1S,EAAEC,GAAG,OAAE,CAAC,IAAIC,EAAEyoJ,GAAE,IAAuB,GAAnB1mI,KAAK2nR,GAAGrzM,QAAQ8zM,GAAMN,GAAG,CAAC,IAAI,IAAI1kS,EAAEklG,GAAE+0L,cAAc,OAAOj6R,GAAG,CAAC,IAAI5D,EAAE4D,EAAEg7F,MAAM,OAAO5+F,IAAIA,EAAE21H,QAAQ,MAAM/xH,EAAEA,EAAEvY,IAAK,CAAAi9S,IAAG,CAAG,CAAsC,GAAtCD,GAAG,EAAE/+L,GAAEk+C,GAAE1+C,GAAE,KAAKojM,IAAG,EAAGqE,GAAGz7M,QAAQ,KAAQ,OAAOr2F,GAAG,OAAOA,EAAE64O,OAAO,CAACzuI,GAAE,EAAEkoM,GAAGvyS,EAAE0oJ,GAAE,KAAK,KAAM,CAAA3oJ,EAAE,CAAC,IAAIsF,EAAEtF,EAAEuF,EAAErF,EAAE64O,OAAOvzO,EAAEtF,EAAEkjE,EAAEnjE,EAAoD,GAAlDA,EAAE4oJ,GAAErjJ,EAAE8iP,OAAO,KAAK9iP,EAAEwvS,YAAYxvS,EAAEsvS,WAAW,KAAQ,OAAO1xO,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEy3C,KAAK,CAAC,IAAI3+G,EAAEknE,EAAE,GAAG,KAAY,EAAP59D,EAAEq1C,MAAQ,CAAC,IAAIz9C,EAAEoI,EAAEq2O,UAAUz+O,GAAGoI,EAAEqtS,YAAYz1S,EAAEy1S,YAAYrtS,EAAE85R,cAAcliS,EAAEkiS,cAAc95R,EAAE8sS,MAAMl1S,EAAEk1S,QACpf9sS,EAAEqtS,YAAY,KAAKrtS,EAAE85R,cAAc,KAAM,KAAI7hS,EAAE,KAAe,EAAVyrJ,GAAE3yD,SAAWpuF,EAAE5C,EAAE,EAAE,CAAC,IAAI/H,EAAE,GAAGA,EAAE,KAAK2K,EAAEyuN,IAAI,CAAC,IAAIr5N,EAAE4K,EAAEm3R,cAAc,GAAG,OAAO/hS,EAAEC,EAAE,OAAOD,EAAEgiS,eAAqB,CAAC,IAAI92I,EAAEtgJ,EAAEwqO,cAAcn1O,OAAE,IAASirJ,EAAE+T,YAAY,IAAK/T,EAAEizJ,6BAA8Bj+S,EAAQ,CAAC,IAAGD,EAAE,CAAC,IAAIub,EAAE5Q,EAAE0qS,YAAY,GAAG,OAAO95R,EAAE,CAAC,IAAI3X,EAAE,IAAIo3D,IAAIp3D,EAAE0Y,IAAI5d,GAAGiM,EAAE0qS,YAAYzxS,CAAE,MAAK2X,EAAEe,IAAI5d,GAAG,GAAG,KAAY,EAAPiM,EAAE0yC,MAAQ,CAA2C,GAA1C1yC,EAAEmgP,OAAO,GAAG9iP,EAAE8iP,OAAO,MAAM9iP,EAAE8iP,QAAQ,KAAQ,IAAI9iP,EAAEoxN,IAAI,GAAG,OAAOpxN,EAAEq2O,UAAUr2O,EAAEoxN,IAAI,OAAO,CAAC,IAAIzvE,EAAEg9I,IAAI,EAAE,GAAGh9I,EAAEyvE,IAAI,EAAEyqB,GAAG77O,EAAE2hJ,EAAG,CAAA3hJ,EAAE8sS,OAAO,EAAE,MAAMtyS,CAAE,CAAAojE,OAC5f,EAAO59D,EAAEvF,EAAE,IAAI85R,EAAGz0R,EAAEw8S,UAAoH,GAA1G,OAAO/nB,GAAIA,EAAGz0R,EAAEw8S,UAAU,IAAIlT,GAAGxrO,EAAE,IAAI5K,IAAIuhO,EAAGj5R,IAAI5E,EAAEknE,SAAiB,KAAZA,EAAE22N,EAAGnsS,IAAIsO,MAAgBknE,EAAE,IAAI5K,IAAIuhO,EAAGj5R,IAAI5E,EAAEknE,KAASA,EAAE1nB,IAAIl2C,GAAG,CAAC49D,EAAEtpD,IAAItU,GAAG,IAAI8sJ,EAAGqjJ,GAAGpoT,KAAK,KAAK+X,EAAEpJ,EAAEsJ,GAAGtJ,EAAE2+G,KAAKy3C,EAAGA,EAAI,CAAAnqJ,EAAEmgP,OAAO,KAAKngP,EAAEmqS,MAAMryS,EAAE,MAAMD,CAAE,CAAAmI,EAAEA,EAAE4wO,MAAO,OAAM,OAAO5wO,GAAGi7D,EAAEjiE,OAAO03R,EAAGrzR,EAAEjK,OAAO,qBAAqB,wLAAyL,KAAI+uG,KAAIA,GAAE,GAAGlnC,EACnfsrO,GAAGtrO,EAAE59D,GAAG2C,EAAE5C,EAAE,EAAE,CAAC,OAAO4C,EAAEyuN,KAAK,KAAK,EAAEtxN,EAAE89D,EAAEj7D,EAAEmgP,OAAO,KAAKroP,IAAIA,EAAEkI,EAAEmqS,OAAOryS,EAAmBokS,GAAGl8R,EAAb0mS,GAAG1mS,EAAE7C,EAAErF,IAAY,MAAMD,EAAE,KAAK,EAAEsF,EAAE89D,EAAE,IAAIiyO,EAAGltS,EAAE5M,KAAK6oS,EAAGj8R,EAAE6wO,UAAU,GAAG,KAAa,GAAR7wO,EAAEmgP,SAAY,oBAAoB+sD,EAAG3/D,0BAA0B,OAAO0uD,GAAI,oBAAoBA,EAAGoZ,oBAAoB,OAAOrO,KAAKA,GAAGzzP,IAAI0oP,KAAM,CAACj8R,EAAEmgP,OAAO,KAAKroP,IAAIA,EAAEkI,EAAEmqS,OAAOryS,EAAmBokS,GAAGl8R,EAAb6mS,GAAG7mS,EAAE7C,EAAErF,IAAY,MAAMD,CAAE,EAACmI,EAAEA,EAAE4wO,MAAO,OAAM,OAAO5wO,EAAG,CAAAytS,GAAG11S,EAAyD,CAAtD,MAAMmB,GAAGpB,EAAEoB,EAAEsnJ,KAAIzoJ,GAAG,OAAOA,IAAIyoJ,GAAEzoJ,EAAEA,EAAE64O,QAAQ,QAAS,MAAM,CAAS,CAChd,SAAS67D,KAAK,IAAI50S,EAAE+xS,GAAGx7M,QAAsB,OAAdw7M,GAAGx7M,QAAQ8zM,GAAU,OAAOrqS,EAAEqqS,GAAGrqS,CAAE,UAASm1S,GAAGn1S,EAAEC,GAAG,IAAIC,EAAE0oJ,GAAEA,IAAG,GAAG,IAAIvjJ,EAAEuvS,KAA2B,IAAtB7rJ,KAAI/oJ,GAAG6oJ,KAAI5oJ,GAAG40S,GAAG70S,EAAEC,SAAU41S,KAAK,MAAM,MAAMp0S,GAAGyzS,GAAGl1S,EAAEyB,EAAG,CAA+B,GAAtBwgB,KAAK2mI,GAAE1oJ,EAAE6xS,GAAGx7M,QAAQlxF,EAAK,OAAOsjJ,GAAE,MAAMxnJ,MAAMpB,EAAE,MAAiB,OAAXgpJ,GAAE,KAAKF,GAAE,EAASv+C,EAAE,UAASurM,KAAK,KAAK,OAAOltJ,IAAGmtJ,GAAGntJ,GAAG,UAASssJ,KAAK,KAAK,OAAOtsJ,KAAIs4I,MAAM6U,GAAGntJ,GAAG,UAASmtJ,GAAG91S,GAAG,IAAIC,EAAE81S,GAAG/1S,EAAE67O,UAAU77O,EAAEmyS,IAAInyS,EAAE2yO,cAAc3yO,EAAEw2S,aAAa,OAAOv2S,EAAE21S,GAAG51S,GAAG2oJ,GAAE1oJ,EAAE+xS,GAAGz7M,QAAQ,IAAK,CACjb,SAASq/M,GAAG51S,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIE,EAAED,EAAE47O,UAAqB,GAAX77O,EAAEC,EAAE84O,OAAU,KAAa,KAAR94O,EAAEqoP,OAAY,CAAc,GAAG,QAAhBpoP,EAAEulG,GAAGvlG,EAAED,EAAEkyS,KAAqB,YAAJxpJ,GAAEzoJ,GAAa,GAAG,MAAPA,EAAED,GAAY22N,KAAK,KAAK12N,EAAE02N,KAAK,OAAO12N,EAAEo/R,eAAe,KAAQ,WAAH6S,KAAgB,KAAY,EAAPjyS,EAAE26C,MAAQ,CAAC,IAAI,IAAIx1C,EAAE,EAAE5D,EAAEvB,EAAE4qB,MAAM,OAAOrpB,GAAG4D,GAAG5D,EAAE6wS,MAAM7wS,EAAEywS,WAAWzwS,EAAEA,EAAEi4O,QAAQx5O,EAAEgyS,WAAW7sS,CAAE,QAAOrF,GAAG,KAAa,KAARA,EAAEsoP,SAAc,OAAOtoP,EAAEg1S,cAAch1S,EAAEg1S,YAAY/0S,EAAE+0S,aAAa,OAAO/0S,EAAE60S,aAAa,OAAO90S,EAAE80S,aAAa90S,EAAE80S,WAAWC,WAAW90S,EAAE+0S,aAAah1S,EAAE80S,WAAW70S,EAAE60S,YAAY,EAAE70S,EAAEqoP,QAAQ,OAC/etoP,EAAE80S,WAAW90S,EAAE80S,WAAWC,WAAW90S,EAAED,EAAEg1S,YAAY/0S,EAAED,EAAE80S,WAAW70S,GAAI,KAAI,CAAS,GAAG,QAAXC,EAAEuuS,GAAGxuS,IAAkC,OAAlBC,EAAEooP,OAAO,UAAK3/F,GAAEzoJ,GAAS,OAAOF,IAAIA,EAAEg1S,YAAYh1S,EAAE80S,WAAW,KAAK90S,EAAEsoP,OAAO,KAAM,CAAY,GAAG,QAAfroP,EAAEA,EAAEy5O,SAAyB,YAAJ/wF,GAAE1oJ,GAAS0oJ,GAAE1oJ,EAAED,CAAE,OAAM,OAAOC,GAAG,IAAIqqG,KAAIA,GAAE,EAAG,UAASirM,GAAGv1S,GAAG,IAAIC,EAAEqiS,KAA8B,OAAzBE,GAAG,GAAGwT,GAAGzoT,KAAK,KAAKyS,EAAEC,IAAW,IAAK,CAC3T,SAAS+1S,GAAGh2S,EAAEC,GAAG,GAAGy0S,WAAW,OAAOnB,IAAI,GAAG,KAAO,GAAF3qJ,IAAM,MAAMznJ,MAAMpB,EAAE,MAAM,IAAIG,EAAEF,EAAEwhT,aAAa,GAAG,OAAOthT,EAAE,OAAO,KAA2C,GAAtCF,EAAEwhT,aAAa,KAAKxhT,EAAEyhT,cAAc,EAAKvhT,IAAIF,EAAEu2F,QAAQ,MAAMp1F,MAAMpB,EAAE,MAAMC,EAAE6gT,aAAa,KAAK,IAAIx7S,EAAEnF,EAAEoyS,MAAMpyS,EAAEgyS,WAAWzwS,EAAE4D,EAAEC,EAAEtF,EAAE4iS,cAAcnhS,EAAEzB,EAAE4iS,aAAanhS,EAAEzB,EAAE8iS,eAAe,EAAE9iS,EAAE+iS,YAAY,EAAE/iS,EAAE6iS,cAAcphS,EAAEzB,EAAEy4S,kBAAkBh3S,EAAEzB,EAAEijS,gBAAgBxhS,EAAEA,EAAEzB,EAAEkjS,cAAc,IAAI,IAAI39R,EAAEvF,EAAEwjS,WAAWh+R,EAAExF,EAAE8gT,gBAAgB,EAAEx7S,GAAG,CAAC,IAAI89D,EAAE,GAAG68N,GAAG36R,GAAGpJ,EAAE,GAAGknE,EAAE3hE,EAAE2hE,GAAG,EAAE79D,EAAE69D,IAAI,EAAE59D,EAAE49D,IAAI,EAAE99D,IAAIpJ,CAAE,CACrV,GADqV,OACjfy3S,IAAI,KAAO,GAAFtuS,IAAOsuS,GAAGj4P,IAAI17C,IAAI2zS,GAAGzsQ,OAAOlnC,GAAGA,IAAI+oJ,KAAIJ,GAAEI,GAAE,KAAKF,GAAE,GAAG,EAAE3oJ,EAAEooP,MAAM,OAAOpoP,EAAE40S,YAAY50S,EAAE40S,WAAWC,WAAW70S,EAAEmF,EAAEnF,EAAE80S,aAAa3vS,EAAEnF,EAAEmF,EAAEnF,EAAE80S,YAAe,OAAO3vS,EAAE,CAAC5D,EAAEmnJ,GAAEA,IAAG,GAAGopJ,GAAGz7M,QAAQ,KAAK29M,GAAG3a,EAAGv5R,EAAEi5O,eAAem7D,IAAG,EAAG1rJ,GAAErjJ,EAAE,OAAO4wS,KAAK,MAAM70S,GAAG,GAAG,OAAOsnJ,GAAE,MAAMvnJ,MAAMpB,EAAE,MAAMuvS,GAAG5mJ,GAAEtnJ,GAAGsnJ,GAAEA,GAAEqsJ,UAAW,QAAM,OAAOrsJ,IAAGwrJ,GAAG,KAAKxrJ,GAAErjJ,EAAE,OAAO,IAAIE,EAAEvF,EAAE,OAAO0oJ,IAAG,CAAC,IAAItrJ,EAAEsrJ,GAAE4/F,MAAgC,GAAxB,GAAFlrP,GAAMk9R,GAAIsC,GAAGl0I,GAAEswF,WAAgB,IAAF57O,EAAM,CAAC,IAAIK,EAAEirJ,GAAEmzF,UAAU,GAAG,OAAOp+O,EAAE,CAAC,IAAI0K,EAAE1K,EAAEoxI,IAAI,OAAO1mI,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAEouF,QAC9e,KAAM,CAAC,QAAS,KAAFn5F,GAAQ,KAAK,EAAEozS,GAAG9nJ,IAAGA,GAAE4/F,QAAQ,EAAE,MAAM,KAAK,EAAEkoD,GAAG9nJ,IAAGA,GAAE4/F,QAAQ,EAAEsoD,GAAGloJ,GAAEmzF,UAAUnzF,IAAG,MAAM,KAAK,KAAKA,GAAE4/F,QAAQ,KAAK,MAAM,KAAK,KAAK5/F,GAAE4/F,QAAQ,KAAKsoD,GAAGloJ,GAAEmzF,UAAUnzF,IAAG,MAAM,KAAK,EAAEkoJ,GAAGloJ,GAAEmzF,UAAUnzF,IAAG,MAAM,KAAK,EAAEljJ,EAAED,EAAED,EAAEojJ,GAAE4xI,EAAG2V,GAAGzqS,EAAEF,GAAG6qS,GAAG3qS,EAAEF,GAAG,IAAI9H,EAAE8H,EAAEu2O,UAAUw0D,GAAG/qS,GAAG,OAAO9H,GAAG6yS,GAAG7yS,GAAGkrJ,GAAEA,GAAEqsJ,UAAW,EAAC,MAAM3zS,GAAG,GAAG,OAAOsnJ,GAAE,MAAMvnJ,MAAMpB,EAAE,MAAMuvS,GAAG5mJ,GAAEtnJ,GAAGsnJ,GAAEA,GAAEqsJ,UAAW,QAAM,OAAOrsJ,IAAG0rJ,IAAI/Y,KAAK7B,EAAGx5R,EAAEi5O,eAAej5O,EAAEu2F,QAAQr2F,EAAEwoJ,GAAErjJ,EAAE,OAAO,IAAIjI,EAAE4C,EAAE,OAAO0oJ,IAAG,CAAC,IAAInrJ,EAAEmrJ,GAAE4/F,MAAgC,GAAxB,GAAF/qP,GAAMoyS,GAAGvyS,EAAEsrJ,GAAEmzF,UAAUnzF,IAAQ,IAAFnrJ,EAAM,CAACE,OACxf,EAAO,IAAIgrJ,EAAEC,GAAE7Z,IAAI,GAAG,OAAO4Z,EAAE,CAAC,IAAI1vI,EAAE2vI,GAAEswF,UAAU,GAAmB,IAAZtwF,GAAEkuE,IAAYn5N,EAAE27R,EAAGrgR,QAAiBtb,EAAEsb,EAAE,oBAAoB0vI,EAAEA,EAAEhrJ,GAAGgrJ,EAAElyD,QAAQ94F,CAAE,CAAC,CAAAirJ,GAAEA,GAAEqsJ,UAAW,EAAC,MAAM3zS,GAAG,GAAG,OAAOsnJ,GAAE,MAAMvnJ,MAAMpB,EAAE,MAAMuvS,GAAG5mJ,GAAEtnJ,GAAGsnJ,GAAEA,GAAEqsJ,UAAW,QAAM,OAAOrsJ,IAAGA,GAAE,KAAKu5I,KAAKr5I,GAAEnnJ,CAAE,MAAKzB,EAAEu2F,QAAQr2F,EAAE,GAAGozS,GAAGA,IAAG,EAAGC,GAAGvzS,EAAEwzS,GAAGvzS,OAAO,IAAIyoJ,GAAErjJ,EAAE,OAAOqjJ,IAAGzoJ,EAAEyoJ,GAAEqsJ,WAAWrsJ,GAAEqsJ,WAAW,KAAa,EAARrsJ,GAAE4/F,SAAU/qP,EAAEmrJ,IAAIgxF,QAAQ,KAAKn8O,EAAEy7O,UAAU,MAAMtwF,GAAEzoJ,EAAqF,GAAlE,KAAjBoF,EAAErF,EAAE4iS,gBAAqBuM,GAAG,MAAM,IAAI9pS,EAAErF,IAAI+zS,GAAGH,MAAMA,GAAG,EAAEG,GAAG/zS,GAAG4zS,GAAG,EAAE1zS,EAAEA,EAAE84O,UAAa2mD,IAAI,oBAAoBA,GAAGijB,kBAAkB,IAAIjjB,GAAGijB,kBAAkBljB,GACziBx/R,OAAE,EAAO,MAAsB,GAAhBA,EAAEq2F,QAAQ+xJ,OAAqB,CAAV,MAAMlnP,GAAI,CAAS,GAATonJ,GAAExoJ,EAAEqpJ,MAAQylJ,GAAG,MAAMA,IAAG,EAAG9uS,EAAE+uS,GAAGA,GAAG,KAAK/uS,EAAE,OAAG,KAAO,EAAF4oJ,KAAiBU,KAAL,IAAqB,UAAS2sJ,KAAK,KAAK,OAAOvtJ,IAAG,CAAC,IAAI1oJ,EAAE0oJ,GAAEmzF,UAAUu4D,IAAI,OAAOF,KAAK,KAAa,EAARxrJ,GAAE4/F,OAAS6wC,EAAGzwI,GAAEwrJ,MAAME,IAAG,EAAGlZ,MAAM,KAAKxyI,GAAEkuE,KAAKvF,GAAGrxN,EAAE0oJ,KAAIywI,EAAGzwI,GAAEwrJ,MAAME,IAAG,EAAGlZ,OAAO,IAAIj7R,EAAEyoJ,GAAE4/F,MAAM,KAAO,IAAFroP,IAAQuvS,GAAGxvS,EAAE0oJ,IAAG,KAAO,IAAFzoJ,IAAQqzS,KAAKA,IAAG,EAAG7Q,GAAG,IAAG,WAAgB,OAALiS,KAAY,IAAK,KAAGhsJ,GAAEA,GAAEqsJ,UAAW,CAAC,UAASL,KAAK,GAAG,KAAKlB,GAAG,CAAC,IAAIxzS,EAAE,GAAGwzS,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUhR,GAAGxiS,EAAEm2S,GAAI,QAAM,CAAG,CAChd,SAAStG,GAAG7vS,EAAEC,GAAGwzS,GAAGhqT,KAAKwW,EAAED,GAAGszS,KAAKA,IAAG,EAAG7Q,GAAG,IAAG,WAAgB,OAALiS,KAAY,IAAK,IAAG,UAAS9E,GAAG5vS,EAAEC,GAAGyzS,GAAGjqT,KAAKwW,EAAED,GAAGszS,KAAKA,IAAG,EAAG7Q,GAAG,IAAG,WAAgB,OAALiS,KAAY,IAAK,IAAG,CAC5J,SAASyB,KAAK,GAAG,OAAO5C,GAAG,OAAM,EAAG,IAAIvzS,EAAEuzS,GAAW,GAARA,GAAG,KAAQ,KAAO,GAAF3qJ,IAAM,MAAMznJ,MAAMpB,EAAE,MAAM,IAAIE,EAAE2oJ,GAAEA,IAAG,GAAG,IAAI1oJ,EAAEwzS,GAAGA,GAAG,GAAG,IAAI,IAAIruS,EAAE,EAAEA,EAAEnF,EAAEnW,OAAOsb,GAAG,EAAE,CAAC,IAAI5D,EAAEvB,EAAEmF,GAAGC,EAAEpF,EAAEmF,EAAE,GAAGE,EAAE9D,EAAEi2D,QAAyB,GAAjBj2D,EAAEi2D,aAAQ,EAAU,oBAAoBnyD,EAAE,IAAIA,GAAqD,CAAjD,MAAM69D,GAAG,GAAG,OAAO99D,EAAE,MAAMnE,MAAMpB,EAAE,MAAMuvS,GAAGhqS,EAAE89D,EAAG,CAAC,CAAW,IAAXljE,EAAEuzS,GAAGA,GAAG,GAAOpuS,EAAE,EAAEA,EAAEnF,EAAEnW,OAAOsb,GAAG,EAAE,CAAC5D,EAAEvB,EAAEmF,GAAGC,EAAEpF,EAAEmF,EAAE,GAAG,IAAI,IAAIG,EAAE/D,EAAEnW,OAAOmW,EAAEi2D,QAAQlyD,GAAqD,CAAjD,MAAM49D,GAAG,GAAG,OAAO99D,EAAE,MAAMnE,MAAMpB,EAAE,MAAMuvS,GAAGhqS,EAAE89D,EAAG,CAAC,KAAI59D,EAAExF,EAAEu2F,QAAQy+M,YAAY,OAAOxvS,GAAGxF,EAAEwF,EAAEuvS,WAAWvvS,EAAEuvS,WAAW,KAAa,EAARvvS,EAAE8iP,QAAU9iP,EAAEk0O,QACjf,KAAKl0O,EAAEwzO,UAAU,MAAMxzO,EAAExF,EAAU,OAAR4oJ,GAAE3oJ,EAAEqpJ,MAAU,CAAG,UAAS8sJ,GAAGp2S,EAAEC,EAAEC,GAAyBmhP,GAAGrhP,EAAfC,EAAE4uS,GAAG7uS,EAAfC,EAAEyuS,GAAGxuS,EAAED,GAAY,IAAWA,EAAEmpJ,KAAc,QAAVppJ,EAAEq0S,GAAGr0S,EAAE,MAAcsgS,GAAGtgS,EAAE,EAAEC,GAAGuoJ,GAAExoJ,EAAEC,GAAI,CAC1I,SAASqvS,GAAGtvS,EAAEC,GAAG,GAAG,IAAID,EAAE42N,IAAIw/E,GAAGp2S,EAAEA,EAAEC,QAAQ,IAAI,IAAIC,EAAEF,EAAE+4O,OAAO,OAAO74O,GAAG,CAAC,GAAG,IAAIA,EAAE02N,IAAI,CAACw/E,GAAGl2S,EAAEF,EAAEC,GAAG,KAAM,CAAK,GAAG,IAAIC,EAAE02N,IAAI,CAAC,IAAIvxN,EAAEnF,EAAE84O,UAAU,GAAG,oBAAoB94O,EAAE3E,KAAKm6O,0BAA0B,oBAAoBrwO,EAAEm4S,oBAAoB,OAAOrO,KAAKA,GAAGzzP,IAAIr2C,IAAI,CAAW,IAAI5D,EAAEutS,GAAG9uS,EAAnBF,EAAE0uS,GAAGzuS,EAAED,GAAgB,GAA2B,GAAxBqhP,GAAGnhP,EAAEuB,GAAGA,EAAE2nJ,KAAiB,QAAblpJ,EAAEm0S,GAAGn0S,EAAE,IAAeogS,GAAGpgS,EAAE,EAAEuB,GAAG+mJ,GAAEtoJ,EAAEuB,QAAQ,GAAG,oBAAoB4D,EAAEm4S,oBAAoB,OAAOrO,KAAKA,GAAGzzP,IAAIr2C,IAAI,IAAIA,EAAEm4S,kBAAkBv9S,EAAED,EAAa,CAAV,MAAMsF,GAAI,MAAM,CAAC,CAAApF,EAAEA,EAAE64O,MAAO,CAAC,CAC1d,SAAS48D,GAAG31S,EAAEC,EAAEC,GAAG,IAAImF,EAAErF,EAAE8hT,UAAU,OAAOz8S,GAAGA,EAAE6hC,OAAOjnC,GAAGA,EAAEmpJ,KAAIppJ,EAAE+iS,aAAa/iS,EAAE8iS,eAAe5iS,EAAE6oJ,KAAI/oJ,IAAI6oJ,GAAE3oJ,KAAKA,IAAI,IAAIoqG,IAAG,IAAIA,KAAM,SAAFu+C,MAAcA,IAAG,IAAIQ,KAAI2nJ,GAAG6D,GAAG70S,EAAE,GAAG4yS,IAAI1yS,GAAGsoJ,GAAExoJ,EAAEC,EAAG,UAASgxS,GAAGjxS,EAAEC,GAAG,IAAIC,EAAEF,EAAEg5O,UAAU,OAAO94O,GAAGA,EAAEgnC,OAAOjnC,GAAO,KAAJA,EAAE,KAAmB,KAAO,GAAhBA,EAAED,EAAE66C,OAAe56C,EAAE,EAAE,KAAO,EAAFA,GAAKA,EAAE,KAAKqiS,KAAK,EAAE,GAAG,IAAI2R,KAAKA,GAAGtB,IAAuB,KAAnB1yS,EAAEmgS,GAAG,UAAU6T,OAAYh0S,EAAE,WAAWC,EAAEkpJ,KAAc,QAAVppJ,EAAEq0S,GAAGr0S,EAAEC,MAAcqgS,GAAGtgS,EAAEC,EAAEC,GAAGsoJ,GAAExoJ,EAAEE,GAAI,CACnZ61S,GAAG,SAAS/1S,EAAEC,EAAEC,GAAG,IAAImF,EAAEpF,EAAEqyS,MAAM,GAAG,OAAOtyS,EAAE,GAAGA,EAAE2yO,gBAAgB1yO,EAAEu2S,cAAcpvJ,GAAE7wD,QAAQwtM,IAAG,MAAQ,IAAG,KAAK7jS,EAAEmF,GAAoC,CAAO,OAAN0+R,IAAG,EAAU9jS,EAAE22N,KAAK,KAAK,EAAEp1M,GAAGvhB,GAAGyhB,KAAK,MAAM,KAAK,EAAE4mR,GAAGroS,GAAG,MAAM,KAAK,EAAEonJ,GAAEpnJ,EAAE1E,OAAOikS,GAAGv/R,GAAG,MAAM,KAAK,EAAEkoS,GAAGloS,EAAEA,EAAE+4O,UAAUC,eAAe,MAAM,KAAK,GAAGyqD,GAAGzjS,EAAEA,EAAE0yO,cAAcnnP,OAAO,MAAM,KAAK,GAAG,GAAG,OAAOyU,EAAEq/R,cAAe,OAAG,KAAKp/R,EAAED,EAAE6qB,MAAMonR,YAAmBvwR,GAAG3hB,EAAEC,EAAEC,IAAGgnJ,GAAEgC,GAAY,EAAVA,GAAE3yD,SAA8B,QAAnBt2F,EAAEmsS,GAAGpsS,EAAEC,EAAEC,IAAmBD,EAAEy5O,QAAQ,MAAKxyF,GAAEgC,GAAY,EAAVA,GAAE3yD,SAAW,MAAM,KAAK,GAC/d,GADkelxF,EACvf,KAAKnF,EAAED,EAAEiyS,YAAe,KAAa,GAARlyS,EAAEsoP,OAAU,CAAC,GAAGjjP,EAAE,OAAOyoS,GAAG9tS,EAAEC,EAAEC,GAAGD,EAAEqoP,OAAO,EAAG,KAAI7mP,EAAExB,EAAEq/R,cAAwF,GAA1E,OAAO79R,IAAIA,EAAE06S,UAAU,KAAK16S,EAAEy9F,KAAK,KAAKz9F,EAAEqzS,WAAW,MAAM5tJ,GAAEgC,GAAEA,GAAE3yD,SAAYlxF,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOpF,EAAEqyS,MAAM,EAAEtF,GAAGhtS,EAAEC,EAAEC,GAAG,OAAOksS,GAAGpsS,EAAEC,EAAEC,EAAG,CADhJ6jS,GAAG,KAAa,MAAR/jS,EAAEsoP,MACsI,MAAKy7C,IAAG,EAAa,OAAV9jS,EAAEqyS,MAAM,EAASryS,EAAE22N,KAAK,KAAK,EAA+I,GAA7IvxN,EAAEpF,EAAE1E,KAAK,OAAOyE,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAGtoP,EAAEC,EAAEu2S,aAAa/0S,EAAE29R,GAAGn/R,EAAEoqG,GAAE9T,SAASutM,GAAG7jS,EAAEC,GAAGuB,EAAEuoS,GAAG,KAAK/pS,EAAEoF,EAAErF,EAAEyB,EAAEvB,GAAGD,EAAEqoP,OAAO,EAAK,kBAAkB7mP,GAAG,OAAOA,GAAG,oBAAoBA,EAAEmhC,aACnf,IAASnhC,EAAEq1R,SAAS,CAAiD,GAAhD72R,EAAE22N,IAAI,EAAE32N,EAAEq/R,cAAc,KAAKr/R,EAAE4yS,YAAY,KAAQxrJ,GAAEhiJ,GAAG,CAAC,IAAIC,GAAE,EAAGk6R,GAAGv/R,EAAG,MAAKqF,GAAE,EAAGrF,EAAEq/R,cAAc,OAAO79R,EAAEuzC,YAAO,IAASvzC,EAAEuzC,MAAMvzC,EAAEuzC,MAAM,KAAK1sB,GAAGroB,GAAG,IAAIsF,EAAEF,EAAE+nN,yBAAyB,oBAAoB7nN,GAAG4/R,GAAGllS,EAAEoF,EAAEE,EAAEvF,GAAGyB,EAAEi1R,QAAQ+O,GAAGxlS,EAAE+4O,UAAUv3O,EAAEA,EAAEqyS,gBAAgB7zS,EAAE+lS,GAAG/lS,EAAEoF,EAAErF,EAAEE,GAAGD,EAAEmtS,GAAG,KAAKntS,EAAEoF,GAAE,EAAGC,EAAEpF,EAAG,MAAKD,EAAE22N,IAAI,EAAE9tE,GAAE,KAAK7oJ,EAAEwB,EAAEvB,GAAGD,EAAEA,EAAE6qB,MAAM,OAAO7qB,EAAE,KAAK,GAAGwB,EAAExB,EAAE+0K,YAAYh1K,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAGtoP,EAAEC,EAAEu2S,aAAuB/0S,GAAV6D,EAAE7D,EAAEo3L,OAAUp3L,EAAEu2R,UAAU/3R,EAAE1E,KAAKkG,EACpf6D,EAAErF,EAAE22N,IAQJ,SAAY52N,GAAG,GAAG,oBAAoBA,EAAE,OAAOssS,GAAGtsS,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAE82R,YAAgBzc,EAAG,OAAO,GAAG,GAAGr6Q,IAAIw6Q,EAAG,OAAO,EAAG,QAAO,CAAE,CARxI3pE,CAAGpvM,GAAGzB,EAAEojS,GAAG3hS,EAAEzB,GAAUsF,GAAG,KAAK,EAAErF,EAAE8sS,GAAG,KAAK9sS,EAAEwB,EAAEzB,EAAEE,GAAG,MAAMF,EAAE,KAAK,EAAEC,EAAEitS,GAAG,KAAKjtS,EAAEwB,EAAEzB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEksS,GAAG,KAAKlsS,EAAEwB,EAAEzB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEosS,GAAG,KAAKpsS,EAAEwB,EAAE2hS,GAAG3hS,EAAElG,KAAKyE,GAAGqF,EAAEnF,GAAG,MAAMF,EAAE,MAAMmB,MAAMpB,EAAE,IAAI0B,EAAE,IAAM,QAAOxB,EAAE,KAAK,EAAE,OAAOoF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAA2CzJ,GAAG/sS,EAAEC,EAAEoF,EAArC5D,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE2hS,GAAG/9R,EAAE5D,GAAcvB,GAAG,KAAK,EAAE,OAAOmF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAA2CtJ,GAAGltS,EAAEC,EAAEoF,EAArC5D,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE2hS,GAAG/9R,EAAE5D,GAAcvB,GAAG,KAAK,EAAwB,GAAtBshB,GAAGvhB,GAAGoF,EAAEpF,EAAE4yS,YAAe,OAAO7yS,GAAG,OAAOqF,EAAE,MAAMlE,MAAMpB,EAAE,MACnY,GADyYsF,EAAEpF,EAAEu2S,aAA+B/0S,EAAE,QAApBA,EAAExB,EAAEq/R,eAC9d79R,EAAE6nB,QAAQ,KAAK46Q,GAAGlkS,EAAEC,GAAGqkS,GAAGrkS,EAAEoF,EAAE,KAAKnF,IAAGmF,EAAEpF,EAAEq/R,cAAch2Q,WAAe7nB,EAAEigB,KAAKzhB,EAAEmsS,GAAGpsS,EAAEC,EAAEC,OAAO,CAAsF,IAApEoF,GAAjB7D,EAAExB,EAAE+4O,WAAiB+nD,WAAQxG,GAAIwO,GAAGxK,GAAGt+R,EAAE+4O,UAAUC,eAAe0/E,GAAG14T,EAAEqF,EAAEszT,IAAG,GAAItzT,GAAE,GAAMA,EAAE,CAAC,GAAGi1R,GAAyC,OAApCv6R,EAAEyB,EAAEyhT,iCAAyC,IAAIzhT,EAAE,EAAEA,EAAEzB,EAAEjW,OAAO0X,GAAG,EAAE6D,EAAEtF,EAAEyB,GAAG8D,EAAEvF,EAAEyB,EAAE,GAAG44R,EAAG/0R,EAAEwxS,8BAA8BvxS,EAAED,EAAEuzT,gCAAgCtzT,EAAEqc,GAAGn4B,KAAK6b,GAAoB,IAAjBpF,EAAEu4T,GAAGx4T,EAAE,KAAKoF,EAAEnF,GAAOD,EAAE6qB,MAAM5qB,EAAEA,GAAGA,EAAEooP,OAAe,EAATpoP,EAAEooP,MAAS,KAAKpoP,EAAEA,EAAEw5O,OAAQ,MAAK5wF,GAAE9oJ,EAAEC,EAAEoF,EAAEnF,GAAGwhB,KAAKzhB,EAAEA,EAAE6qB,KAAM,QAAO7qB,EAAE,KAAK,EAAE,OAAOqoS,GAAGroS,GAAG,OAC/eD,GAAGypS,GAAGxpS,GAAGoF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAAalxS,EAAE,OAAOtF,EAAEA,EAAE2yO,cAAc,KAAKptO,EAAE9D,EAAEsZ,SAAS4+Q,EAAGt0R,EAAE5D,GAAG8D,EAAE,KAAK,OAAOD,GAAGq0R,EAAGt0R,EAAEC,KAAKrF,EAAEqoP,OAAO,IAAI2kD,GAAGjtS,EAAEC,GAAG6oJ,GAAE9oJ,EAAEC,EAAEsF,EAAErF,GAAGD,EAAE6qB,MAAM,KAAK,EAAE,OAAO,OAAO9qB,GAAGypS,GAAGxpS,GAAG,KAAK,KAAK,GAAG,OAAO0hB,GAAG3hB,EAAEC,EAAEC,GAAG,KAAK,EAAE,OAAOioS,GAAGloS,EAAEA,EAAE+4O,UAAUC,eAAe5zO,EAAEpF,EAAEu2S,aAAa,OAAOx2S,EAAEC,EAAE6qB,MAAMk8Q,GAAG/mS,EAAE,KAAKoF,EAAEnF,GAAG4oJ,GAAE9oJ,EAAEC,EAAEoF,EAAEnF,GAAGD,EAAE6qB,MAAM,KAAK,GAAG,OAAOzlB,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAA2CrK,GAAGnsS,EAAEC,EAAEoF,EAArC5D,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE2hS,GAAG/9R,EAAE5D,GAAcvB,GAAG,KAAK,EAAE,OAAO4oJ,GAAE9oJ,EAAEC,EAAEA,EAAEu2S,aAAat2S,GAAGD,EAAE6qB,MAAM,KAAK,EACtc,KAAK,GAAG,OAAOg+H,GAAE9oJ,EAAEC,EAAEA,EAAEu2S,aAAaz7R,SAAS7a,GAAGD,EAAE6qB,MAAM,KAAK,GAAG9qB,EAAE,CAAwE,GAAvEqF,EAAEpF,EAAE1E,KAAKwkF,SAASt+E,EAAExB,EAAEu2S,aAAajxS,EAAEtF,EAAE0yO,cAAwB+wD,GAAGzjS,EAAbqF,EAAE7D,EAAEjW,OAAiB,OAAO+Z,EAAE,CAAC,IAAIC,EAAED,EAAE/Z,MAAyG,GAAG,KAAtG8Z,EAAEikJ,GAAE/jJ,EAAEF,GAAG,EAAwF,GAArF,oBAAoBD,EAAEmyR,sBAAsBnyR,EAAEmyR,sBAAsBhyR,EAAEF,GAAG,cAAwB,GAAGC,EAAEwV,WAAWtZ,EAAEsZ,WAAWqsI,GAAE7wD,QAAQ,CAACt2F,EAAEmsS,GAAGpsS,EAAEC,EAAEC,GAAG,MAAMF,CAAE,OAAM,IAAc,QAAVwF,EAAEvF,EAAE6qB,SAAiBtlB,EAAEuzO,OAAO94O,GAAG,OAAOuF,GAAG,CAAC,IAAI49D,EAAE59D,EAAE4sS,aAAa,GAAG,OAAOhvO,EAAE,CAAC79D,EAAEC,EAAEslB,MAAM,IAAI,IAAI5uB,EAAEknE,EAAEivO,aAAa,OAAOn2S,GAAG,CAAC,GAAGA,EAAE8O,UAAU3F,GAAG,KAChfnJ,EAAEu2S,aAAantS,GAAG,CAAC,IAAIE,EAAEoxN,OAAM16N,EAAEioS,IAAI,EAAEjkS,GAAGA,IAAK02N,IAAI,EAAEyqB,GAAG77O,EAAEtJ,IAAIsJ,EAAE8sS,OAAOpyS,EAAgB,QAAdhE,EAAEsJ,EAAEq2O,aAAqB3/O,EAAEo2S,OAAOpyS,GAAG2jS,GAAGr+R,EAAEuzO,OAAO74O,GAAGkjE,EAAEkvO,OAAOpyS,EAAE,KAAM,CAAAhE,EAAEA,EAAEpP,IAAK,CAAC,MAAKyY,EAAE,KAAKC,EAAEoxN,KAAIpxN,EAAEjK,OAAO0E,EAAE1E,KAAK,KAAaiK,EAAEslB,MAAM,GAAG,OAAOvlB,EAAEA,EAAEwzO,OAAOvzO,OAAO,IAAID,EAAEC,EAAE,OAAOD,GAAG,CAAC,GAAGA,IAAItF,EAAE,CAACsF,EAAE,KAAK,KAAM,CAAY,GAAG,QAAfC,EAAED,EAAEm0O,SAAoB,CAACl0O,EAAEuzO,OAAOxzO,EAAEwzO,OAAOxzO,EAAEC,EAAE,KAAM,CAAAD,EAAEA,EAAEwzO,MAAO,CAAAvzO,EAAED,CAAE,CAAC,CAAAujJ,GAAE9oJ,EAAEC,EAAEwB,EAAEsZ,SAAS7a,GAAGD,EAAEA,EAAE6qB,KAAM,QAAO7qB,EAAE,KAAK,EAAE,OAAOwB,EAAExB,EAAE1E,KAAsB8J,GAAjBC,EAAErF,EAAEu2S,cAAiBz7R,SAAS+oR,GAAG7jS,EAAEC,GAAkCmF,EAAEA,EAAjC5D,EAAE+nJ,GAAE/nJ,EAAE6D,EAAEy+S,wBAA8B9jT,EAAEqoP,OAAO,EAAEx/F,GAAE9oJ,EAAEC,EACpfoF,EAAEnF,GAAGD,EAAE6qB,MAAM,KAAK,GAAG,OAAgBxlB,EAAE89R,GAAX3hS,EAAExB,EAAE1E,KAAY0E,EAAEu2S,cAA6BnK,GAAGrsS,EAAEC,EAAEwB,EAAtB6D,EAAE89R,GAAG3hS,EAAElG,KAAK+J,GAAcD,EAAEnF,GAAG,KAAK,GAAG,OAAOqsS,GAAGvsS,EAAEC,EAAEA,EAAE1E,KAAK0E,EAAEu2S,aAAanxS,EAAEnF,GAAG,KAAK,GAAG,OAAOmF,EAAEpF,EAAE1E,KAAKkG,EAAExB,EAAEu2S,aAAa/0S,EAAExB,EAAE+0K,cAAc3vK,EAAE5D,EAAE2hS,GAAG/9R,EAAE5D,GAAG,OAAOzB,IAAIA,EAAE67O,UAAU,KAAK57O,EAAE47O,UAAU,KAAK57O,EAAEqoP,OAAO,GAAGroP,EAAE22N,IAAI,EAAEvvE,GAAEhiJ,IAAIrF,GAAE,EAAGw/R,GAAGv/R,IAAID,GAAE,EAAG8jS,GAAG7jS,EAAEC,GAAG+kS,GAAGhlS,EAAEoF,EAAE5D,GAAGukS,GAAG/lS,EAAEoF,EAAE5D,EAAEvB,GAAGktS,GAAG,KAAKntS,EAAEoF,GAAE,EAAGrF,EAAEE,GAAG,KAAK,GAAG,OAAO4tS,GAAG9tS,EAAEC,EAAEC,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAO8sS,GAAGhtS,EAAEC,EAAEC,GAAG,MAAMiB,MAAMpB,EAAE,IAAIE,EAAE22N,KAAO,EACnc,IAAIy/E,GAAG,CAAC9/M,SAAQ,GAAI+/M,GAAGj5S,EAAE07T,kCAAkCxiB,GAAG,oBAAoBD,GAAG,SAASG,KAAK,QAAG,IAASH,GAAG,OAAOA,KAAK,IAAI,IAAIt2S,GAAE,EAAG00S,MAAM10S,GAAE,EAAG,OAAOA,CAAE,UAAS02S,GAAG12S,GAAG,IAAIy2S,KArClL,SAAYz2S,GAAG,GAAG,OAAO4xS,GAAG,IAAI,IAAI3xS,GAAG,UAAU3D,KAAKK,UAAUV,MAAM,EAAE,GAAG21S,IAAIjpT,GAAQA,EAAOsX,IAAIpT,KAAKlE,EAAO,UAAUqwU,YAA+G,CAAlG,MAAM94T,GAAG0xS,GAAG,SAAS5xS,GAAG,IAAIC,EAAE,IAAI8lT,eAAe9lT,EAAEimT,MAAMC,UAAUnmT,EAAEC,EAAEgmT,MAAMG,iBAAY,EAAQ,CAAC,CAAOxU,GAAG5xS,EAAG,CAqC7D6xS,EAAG,WAAW4E,KAAKC,GAAG12S,GAAGA,GAAI,GAAgB,CAAd,MAAMC,GAAGD,EAAEC,EAAG,CAAC,KAAI02S,GAAG,EAAEx3O,IAAG,EACjP,SAASy3O,GAAG52S,EAAEC,EAAEC,EAAEmF,GAAGtZ,KAAK6qO,IAAI52N,EAAEjU,KAAK7B,IAAIgW,EAAEnU,KAAK2tP,QAAQ3tP,KAAK++B,MAAM/+B,KAAKgtP,OAAOhtP,KAAKitP,UAAUjtP,KAAKwP,KAAKxP,KAAKipL,YAAY,KAAKjpL,KAAK8P,MAAM,EAAE9P,KAAK8iJ,IAAI,KAAK9iJ,KAAKyqT,aAAav2S,EAAElU,KAAKqmT,aAAarmT,KAAKuzS,cAAcvzS,KAAK8mT,YAAY9mT,KAAK4mP,cAAc,KAAK5mP,KAAK8uD,KAAKx1C,EAAEtZ,KAAKu8P,MAAM,EAAEv8P,KAAK+oT,WAAW/oT,KAAKipT,YAAYjpT,KAAKgpT,WAAW,KAAKhpT,KAAKmmT,WAAWnmT,KAAKumT,MAAM,EAAEvmT,KAAK8vP,UAAU,IAAK,UAAS3qF,GAAGlxJ,EAAEC,EAAEC,EAAEmF,GAAG,OAAO,IAAIuxS,GAAG52S,EAAEC,EAAEC,EAAEmF,EAAG,UAASinS,GAAGtsS,GAAiB,UAAdA,EAAEA,EAAE9U,aAAuB8U,EAAE4/N,iBAAkB,CAEre,SAAS24F,GAAGv4T,EAAEC,GAAG,IAAIC,EAAEF,EAAE67O,UACuB,OADb,OAAO37O,IAAGA,EAAEgxJ,GAAGlxJ,EAAE42N,IAAI32N,EAAED,EAAE9V,IAAI8V,EAAE66C,OAAQm6H,YAAYh1K,EAAEg1K,YAAY90K,EAAE3E,KAAKyE,EAAEzE,KAAK2E,EAAE84O,UAAUh5O,EAAEg5O,UAAU94O,EAAE27O,UAAU77O,EAAEA,EAAE67O,UAAU37O,IAAIA,EAAEs2S,aAAav2S,EAAEC,EAAE3E,KAAKyE,EAAEzE,KAAK2E,EAAEooP,MAAM,EAAEpoP,EAAE60S,WAAW,KAAK70S,EAAE80S,YAAY,KAAK90S,EAAE40S,WAAW,MAAM50S,EAAEgyS,WAAWlyS,EAAEkyS,WAAWhyS,EAAEoyS,MAAMtyS,EAAEsyS,MAAMpyS,EAAE4qB,MAAM9qB,EAAE8qB,MAAM5qB,EAAEyyO,cAAc3yO,EAAE2yO,cAAczyO,EAAEo/R,cAAct/R,EAAEs/R,cAAcp/R,EAAE2yS,YAAY7yS,EAAE6yS,YAAY5yS,EAAED,EAAEoyS,aAAalyS,EAAEkyS,aAAa,OAAOnyS,EAAE,KAAK,CAACqyS,MAAMryS,EAAEqyS,MAAMD,aAAapyS,EAAEoyS,cAC3enyS,EAAEw5O,QAAQ15O,EAAE05O,QAAQx5O,EAAErE,MAAMmE,EAAEnE,MAAMqE,EAAE2uI,IAAI7uI,EAAE6uI,IAAW3uI,CAAE,CACzD,SAASs4T,GAAGx4T,EAAEC,EAAEC,EAAEmF,EAAE5D,EAAE6D,GAAG,IAAIC,EAAE,EAAM,GAAJF,EAAErF,EAAK,oBAAoBA,EAAEssS,GAAGtsS,KAAKuF,EAAE,QAAQ,GAAG,kBAAkBvF,EAAEuF,EAAE,OAAOvF,EAAE,OAAOA,GAAG,KAAKygK,EAAG,OAAOqmI,GAAG5mS,EAAE6a,SAAStZ,EAAE6D,EAAErF,GAAG,KAAKw4R,EAAGlzR,EAAE,EAAE9D,GAAG,GAAG,MAAM,KAAKs4Q,EAAGx0Q,EAAE,EAAE9D,GAAG,EAAE,MAAM,KAAKu4Q,EAAG,OAAOh6Q,EAAEkxJ,GAAG,GAAGhxJ,EAAED,EAAI,EAAFwB,IAAOuzK,YAAYglG,EAAGh6Q,EAAEzE,KAAKy+Q,EAAGh6Q,EAAEsyS,MAAMhtS,EAAEtF,EAAE,KAAKs6Q,EAAG,OAAOt6Q,EAAEkxJ,GAAG,GAAGhxJ,EAAED,EAAEwB,IAAKlG,KAAK++Q,EAAGt6Q,EAAEg1K,YAAYslG,EAAGt6Q,EAAEsyS,MAAMhtS,EAAEtF,EAAE,KAAKu6Q,EAAG,OAAOv6Q,EAAEkxJ,GAAG,GAAGhxJ,EAAED,EAAEwB,IAAKuzK,YAAYulG,EAAGv6Q,EAAEsyS,MAAMhtS,EAAEtF,EAAE,KAAK04R,EAAG,OAAO4U,GAAGptS,EAAEuB,EAAE6D,EAAErF,GAAG,KAAK04R,EAAG,OAAO34R,EAAEkxJ,GAAG,GAAGhxJ,EAAED,EAAEwB,IAAKuzK,YAAY2jH,EAAG34R,EAAEsyS,MAAMhtS,EAAEtF,EAAE,QAAQ,GAAG,kBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAE82R,UAAU,KAAK7c,EAAG10Q,EAAE,GAAG,MAAMvF,EAAE,KAAKk6Q,EAAG30Q,EAAE,EAAE,MAAMvF,EAAE,KAAKq6Q,EAAG90Q,EAAE,GAAG,MAAMvF,EAAE,KAAKw6Q,EAAGj1Q,EAAE,GAAG,MAAMvF,EAAE,KAAKs4R,EAAG/yR,EAAE,GAAGF,EAAE,KAAK,MAAMrF,EAAE,KAAK0U,EAAGnP,EAAE,GAAG,MAAMvF,EAAE,MAAMmB,MAAMpB,EAAE,IAAI,MAAMC,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAEixJ,GAAG3rJ,EAAErF,EAAED,EAAEwB,IAAKuzK,YAAYh1K,EAAEC,EAAE1E,KAAK8J,EAAEpF,EAAEqyS,MAAMhtS,EAASrF,CAAE,UAAS6mS,GAAG9mS,EAAEC,EAAEC,EAAEmF,GAA2B,OAAxBrF,EAAEkxJ,GAAG,EAAElxJ,EAAEqF,EAAEpF,IAAKqyS,MAAMpyS,EAASF,CAAE,UAASstS,GAAGttS,EAAEC,EAAEC,EAAEmF,GAA6C,OAA1CrF,EAAEkxJ,GAAG,GAAGlxJ,EAAEqF,EAAEpF,IAAK+0K,YAAY0jH,EAAG14R,EAAEsyS,MAAMpyS,EAASF,CAAE,UAAS0mS,GAAG1mS,EAAEC,EAAEC,GAA8B,OAA3BF,EAAEkxJ,GAAG,EAAElxJ,EAAE,KAAKC,IAAKqyS,MAAMpyS,EAASF,CAAE,CACpc,SAAS2mS,GAAG3mS,EAAEC,EAAEC,GAA8J,OAA3JD,EAAEixJ,GAAG,EAAE,OAAOlxJ,EAAE+a,SAAS/a,EAAE+a,SAAS,GAAG/a,EAAE9V,IAAI+V,IAAKqyS,MAAMpyS,EAAED,EAAE+4O,UAAU,CAACC,cAAcj5O,EAAEi5O,cAAc+pE,gBAAgB,KAAKtlC,eAAe19Q,EAAE09Q,gBAAuBz9Q,CAAE,CACvL,SAAS42S,GAAG72S,EAAEC,EAAEC,GAAGnU,KAAK6qO,IAAI32N,EAAElU,KAAKktP,cAAcj5O,EAAEjU,KAAKy1T,aAAaz1T,KAAK+1T,UAAU/1T,KAAKwqG,QAAQxqG,KAAKi3T,gBAAgB,KAAKj3T,KAAK41T,cAAcvnB,EAAGruS,KAAKovT,eAAepvT,KAAKif,QAAQ,KAAKjf,KAAKg1S,QAAQ7gS,EAAEnU,KAAK80T,aAAa,KAAK90T,KAAKg1T,iBAAiB,EAAEh1T,KAAKy3S,WAAWnD,GAAG,GAAGt0S,KAAK+0T,gBAAgBzgB,IAAI,GAAGt0S,KAAKk3S,eAAel3S,KAAK01T,cAAc11T,KAAK0sT,iBAAiB1sT,KAAK82S,aAAa92S,KAAKg3S,YAAYh3S,KAAK+2S,eAAe/2S,KAAK62S,aAAa,EAAE72S,KAAKm3S,cAAc7C,GAAG,GAAG9F,IAAKxuS,KAAKm3T,gCAAgC,KAAM,CACxf,SAASnM,GAAG/2S,GAAG,IAAIC,EAAED,EAAE8zS,gBAAgB,QAAG,IAAS7zS,EAAE,CAAC,GAAG,oBAAoBD,EAAE4iC,OAAO,MAAMzhC,MAAMpB,EAAE,MAAM,MAAMoB,MAAMpB,EAAE,IAAI7W,OAAOD,KAAK+W,IAAM,CAAQ,OAAO,QAAfA,EAAEi5R,EAAGh5R,IAAmB,KAAKD,EAAEg5O,SAAU,UAASg+D,GAAGh3S,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAEs/R,gBAA2B,OAAOt/R,EAAEu/R,WAAW,CAAC,IAAIr/R,EAAEF,EAAEw7S,UAAUx7S,EAAEw7S,UAAU,IAAIt7S,GAAGA,EAAED,EAAEC,EAAED,CAAE,CAAC,UAASg3S,GAAGj3S,EAAEC,GAAG+2S,GAAGh3S,EAAEC,IAAID,EAAEA,EAAE67O,YAAYm7D,GAAGh3S,EAAEC,EAAG,UAASi3S,GAAGl3S,GAAW,OAAO,QAAfA,EAAEi5R,EAAGj5R,IAAmB,KAAKA,EAAEg5O,SAAU,UAASm+D,KAAK,OAAO,IAAK,CAiB1a,OAjB0avuT,EAAQqwU,qBAAqB5iB,GAC3cztT,EAAQ20P,IAAI,SAASv9O,GAAG,SAASC,IAAI02S,KAAK1E,GAAG17M,QAAQr2F,EAAEm2S,GAAG9/M,QAAQlxF,CAAE,MAAK85D,KAAKA,IAAG,EAAGp+D,QAAQiC,MAAM,+FAA+F2zS,KAAK,IAAIz2S,EAAE+xS,GAAG17M,QAAQlxF,EAAEgxS,GAAG9/M,QAAQ07M,GAAG17M,SAAQ,EAAG8/M,GAAG9/M,SAAQ,EAAG,IAAI,IAAI90F,EAAEg0S,GAAGz1S,EAAyB,CAAtB,MAAMsF,GAAG,MAAMrF,IAAIqF,CAAG,IAAG,OAAO7D,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEo5G,KAAK,MAAM,CAACA,KAAK,SAAS76G,EAAEqF,GAAG5D,EAAEo5G,MAAK,WAAW,EAAE87L,KAAI,IAAKJ,KAAI,IAAKr2S,GAAGD,IAAID,KAAK02S,IAAG,SAASx2S,GAAGD,IAAIC,EAAEmF,EAAEnF,GAAGF,GAAI,GAAE,IAAC,SAASA,GAAGC,IAAIoF,EAAErF,EAAG,GAAE,GAAE,IAAI,IAAI22S,KACjf,IAAKJ,KAAI,IAAKr2S,GAAGu2S,KAAKx2S,GAA0B,CAAtB,MAAMqF,GAAG,MAAMrF,IAAIqF,CAAG,OAAM,CAACu1G,KAAK,SAAS76G,GAAGA,GAAI,EAAE,EAACpX,EAAQswU,2BAA2B,SAASl5T,GAAM,KAAKA,EAAE42N,MAAe4uE,GAAGxlS,EAAE,SAATopJ,MAAqB6tJ,GAAGj3S,EAAE,UAAW,EAACpX,EAAQuwU,kCAAkC,SAASn5T,GAAG,GAAG,KAAKA,EAAE42N,IAAI,CAAC,IAAI32N,EAAEmpJ,KAAIlpJ,EAAEqlS,GAAGvlS,GAAGwlS,GAAGxlS,EAAEE,EAAED,GAAGg3S,GAAGj3S,EAAEE,EAAG,CAAC,EACnStX,EAAQwwU,4BAA4B,SAASp5T,GAAG,OAAOA,EAAE42N,KAAK,KAAK,EAAE,IAAI32N,EAAED,EAAEg5O,UAAU,GAAG/4O,EAAE8gS,QAAQ,CAAC,IAAI7gS,EAAE2/R,GAAG5/R,EAAE2iS,cAAc3iS,EAAE4iS,cAAc3iS,EAAED,EAAE2iS,aAAap6I,GAAEvoJ,EAAEopJ,MAAK,KAAO,GAAFT,MAAQsqJ,KAAK5pJ,KAAK,OAAM,KAAK,GAAG,IAAIjkJ,EAAE+jJ,KAAIssJ,IAAG,WAAW,OAAOlQ,GAAGxlS,EAAE,EAAEqF,EAAG,IAAE4xS,GAAGj3S,EAAE,GAAI,EAACpX,EAAQywU,6BAA6B,SAASr5T,GAAM,KAAKA,EAAE42N,MAAe4uE,GAAGxlS,EAAE,EAATopJ,MAAc6tJ,GAAGj3S,EAAE,GAAI,EAACpX,EAAQ0wU,oBAAoB,SAASt5T,EAAEC,GAAG,IAAIC,EAAE0oJ,GAAEA,IAAG,EAAE,IAAI,OAAO5oJ,EAAEC,EAAiC,CAA9C,QAA4B,KAAJ2oJ,GAAE1oJ,KAAUgzS,KAAK5pJ,KAAK,CAAC,EAAC1gK,EAAQ2wU,eAAe9jB,GAC9d7sT,EAAQ4wU,wBAAwB,SAASx5T,GAAG,MAAM,CAAC82R,SAASoa,GAAG1lT,MAAMwU,EAAG,EAACpX,EAAQguP,gBAAgB,SAAS52O,EAAEC,EAAEC,GAAuF,OAApFF,EAAE,IAAI62S,GAAG72S,EAAEC,EAAEC,GAAGD,EAAEixJ,GAAG,EAAE,KAAK,KAAK,IAAIjxJ,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGD,EAAEu2F,QAAQt2F,EAAEA,EAAE+4O,UAAUh5O,EAAEsoB,GAAGroB,GAAUD,CAAE,EAACpX,EAAQ6wU,6BAA6B,SAASz5T,GAAG,MAAM,CAAC82R,SAASqa,GAAG3lT,MAAMwU,EAAG,EAACpX,EAAQ25Q,aAAa,SAASviQ,EAAEC,EAAEC,GAAG,IAAImF,EAAE,EAAEvb,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACgtS,SAAShd,EAAG5vR,IAAI,MAAMmb,EAAE,KAAK,GAAGA,EAAE0V,SAAS/a,EAAEi5O,cAAch5O,EAAEy9Q,eAAex9Q,EAAG,EAC1dtX,EAAQ8wU,mBAAmB,SAAS15T,GAAG,MAAM,CAAC82R,SAASsa,GAAG5lT,MAAMwU,EAAG,EAACpX,EAAQ+wU,uBAAuB,SAAS35T,GAAG,MAAM,CAAC82R,SAASua,GAAG7lT,MAAMwU,EAAG,EAACpX,EAAQgxU,mBAAmB,SAAS55T,GAAG,MAAM,CAAC82R,SAASwa,GAAG9lT,MAAMwU,EAAG,EAACpX,EAAQixU,gBAAgB,SAAS75T,GAAG,OAAOwiS,GAAG,GAAGxiS,EAAG,EAACpX,EAAQkxU,gBAAgB,SAAS95T,EAAEC,EAAEC,EAAEmF,EAAE5D,GAAG,IAAI6D,EAAEsjJ,GAAEA,IAAG,EAAE,IAAI,OAAO45I,GAAG,GAAGxiS,EAAEzS,KAAK,KAAK0S,EAAEC,EAAEmF,EAAE5D,GAAkC,CAArE,QAAmD,KAAJmnJ,GAAEtjJ,KAAU4tS,KAAK5pJ,KAAK,CAAC,EAAC1gK,EAAQmxU,aAAapoB,GAC1Z/oT,EAAQoxU,kBAAkB,SAASh6T,EAAEC,GAAG,IAAIq7R,GAAG,MAAMn6R,MAAMpB,EAAE,MAAME,EAAE0xS,GAAG3xS,EAAEC,GAAGD,EAAE,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAED,EAAElW,OAAOmW,IAAIF,EAAEvW,KAAK+xS,GAAGv7R,EAAEC,KAAK,IAAID,EAAED,EAAEjW,OAAO,EAAE,EAAEkW,EAAEA,IAAY,IAAI,IAAIoF,GAAfnF,EAAEF,EAAEC,IAAe1C,EAAEkE,EAAE4D,EAAEnF,EAAE4K,MAAMxF,EAAEpF,EAAE1C,EAAE+H,EAAED,EAAEpF,EAAE6K,OAAOvF,EAAEvF,EAAE,EAAE,GAAGuF,EAAEA,IAAI,GAAGvF,IAAIuF,EAAE,CAAC,IAAI49D,EAAEpjE,EAAEwF,GAAGtJ,EAAEknE,EAAE7lE,EAAEH,EAAElB,EAAEknE,EAAEt4D,MAAMrN,EAAE2lE,EAAE5lE,EAAE2K,EAAE1K,EAAE2lE,EAAEr4D,OAAO,GAAG1F,GAAGnJ,GAAGoJ,GAAG7H,GAAGgE,GAAGrE,GAAGmI,GAAG4C,EAAE,CAACnI,EAAElE,OAAOmE,EAAE,GAAG,KAAM,CAAK,KAAKoF,IAAInJ,GAAGgE,EAAE4K,QAAQs4D,EAAEt4D,OAAO3C,EAAE7C,GAAG7H,EAAE8H,GAAG,CAAC9H,EAAE6H,IAAI89D,EAAEr4D,QAAQtN,EAAE6H,EAAE89D,EAAE5lE,EAAE8H,GAAG6C,EAAE5C,IAAI69D,EAAEr4D,OAAOxF,EAAE9H,GAAGuC,EAAElE,OAAOmE,EAAE,GAAG,KAAM,CAAK,KAAKqF,IAAI7H,GAAGyC,EAAE6K,SAASq4D,EAAEr4D,QAAQ3N,EAAEiI,GAAGnJ,EAAEuF,GAAG,CAACvF,EAAEmJ,IAAI+9D,EAAEt4D,OAC/e5O,EAAEmJ,EAAE+9D,EAAE7lE,EAAE8H,GAAGjI,EAAEqE,IAAI2hE,EAAEt4D,MAAMrJ,EAAEvF,GAAG8D,EAAElE,OAAOmE,EAAE,GAAG,KAAM,CAAC,CAAC,OAAOD,CAAE,EAACpX,EAAQqxU,iBAAiBljB,GAAGnuT,EAAQsxU,8BAA8B,SAASl6T,GAAW,OAAO,QAAfA,EA1L5I,SAAYA,GAAW,KAARA,EAAEg5R,EAAGh5R,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAE22N,KAAK,IAAI32N,EAAE22N,IAAI,OAAO32N,EAAE,GAAGA,EAAE6qB,OAAO,IAAI7qB,EAAE22N,IAAI32N,EAAE6qB,MAAMiuN,OAAO94O,EAAEA,EAAEA,EAAE6qB,UAAU,CAAC,GAAG7qB,IAAID,EAAE,MAAM,MAAMC,EAAEy5O,SAAS,CAAC,IAAIz5O,EAAE84O,QAAQ94O,EAAE84O,SAAS/4O,EAAE,OAAO,KAAKC,EAAEA,EAAE84O,MAAO,CAAA94O,EAAEy5O,QAAQX,OAAO94O,EAAE84O,OAAO94O,EAAEA,EAAEy5O,OAAQ,CAAC,QAAO,IAAK,CA0LvIw/C,CAAGl5R,IAAmB,KAAK,KAAKA,EAAE42N,IAAI52N,EAAEg5O,UAAUzuP,SAASyV,EAAEg5O,SAAU,EAACpwP,EAAQuxU,4BAA4B,SAASn6T,GAAG,OAAO+2S,GAAG/2S,EAAG,EAACpX,EAAQwxU,gBAAgB,SAASp6T,GAAG,IAAIC,EAAE2oJ,GAAEA,IAAG,EAAE,IAAI45I,GAAG,GAAGxiS,EAAiC,CAA3C,QAAyB,KAAJ4oJ,GAAE3oJ,KAAUizS,KAAK5pJ,KAAK,CAAC,EAAC1gK,EAAQyxU,qBAAqB,WAAW,KAAO,GAAFzxK,MA5C/Z,WAAc,GAAG,OAAO+qJ,GAAG,CAAC,IAAI3zS,EAAE2zS,GAAGA,GAAG,KAAK3zS,EAAE/V,SAAQ,SAAS+V,GAAGA,EAAE6iS,cAAc,GAAG7iS,EAAE4iS,aAAap6I,GAAExoJ,EAAEqpJ,KAAK,GAAE,CAAAC,IAAI,CA4CmTksJ,GAAKd,KAAM,EAAC9rT,EAAQ0xU,oBAAoB5lB,GAAG9rT,EAAQ+8T,UAAUjQ,GACpe9sT,EAAQ2xU,YAAY,SAASv6T,EAAEC,GAAG,IAAIq7R,GAAG,MAAMn6R,MAAMpB,EAAE,MAAwC,IAA1BE,EAAEqhP,GAAVthP,EAAEwxS,GAAGxxS,GAAUC,GAAGA,EAAEvR,MAAMy+G,KAAKltG,GAAOD,EAAE,EAAEA,EAAEC,EAAElW,QAAQ,CAAC,IAAImW,EAAED,EAAED,KAAK,IAAI0gK,GAAGxgK,GAAG,CAAC,GAAG,IAAIA,EAAE02N,KAAKglE,GAAG17R,EAAE84O,WAAW,OAAM,EAAG,IAAI94O,EAAEA,EAAE4qB,MAAM,OAAO5qB,GAAGD,EAAExW,KAAKyW,GAAGA,EAAEA,EAAEw5O,OAAQ,CAAC,QAAM,CAAG,EAAC9wP,EAAQ4xU,6BAA6B,WAAW,OAAO56B,EAAG,EACtSh3S,EAAQ6xU,kCAAkC,SAASz6T,EAAEC,GAAG,IAAIq7R,GAAG,MAAMn6R,MAAMpB,EAAE,MAAM,IAAIG,EAAE,EAAEmF,EAAE,GAAGrF,EAAE,CAACwxS,GAAGxxS,GAAG,GAAG,IAAI,IAAIyB,EAAE,EAAEA,EAAEzB,EAAEjW,QAAQ,CAAC,IAAIub,EAAEtF,EAAEyB,KAAK8D,EAAEvF,EAAEyB,KAAK+D,EAAEvF,EAAEsF,GAAG,IAAG,IAAID,EAAEsxN,MAAMl2D,GAAGp7J,MAAMmsS,GAAGnsS,EAAEE,KAAKH,EAAE5b,KAAKioT,GAAGlsS,MAAID,EAAMrF,IAAIA,EAAEqF,IAAIA,EAAEtF,EAAElW,QAAO,IAAIub,EAAEA,EAAEwlB,MAAM,OAAOxlB,GAAGtF,EAAEvW,KAAK6b,EAAEC,GAAGD,EAAEA,EAAEo0O,OAAQ,IAAGx5O,EAAED,EAAElW,OAAO,CAAC,IAAIiW,EAAE,GAAGE,EAAED,EAAElW,OAAOmW,IAAIF,EAAEvW,KAAKioT,GAAGzxS,EAAEC,KAAK,MAAM,2DAA4DmF,EAAEvW,KAAK,OAAO,+CAAgDkR,EAAElR,KAAK,MAAO,QAAO,IAAK,EAC/elG,EAAQ8xU,sBAAsB,SAAS16T,GAAe,OAAZA,EAAEA,EAAEu2F,SAAczrE,MAA2C,IAAlB9qB,EAAE8qB,MAAM8rM,IAAmBwiE,EAAGp5R,EAAE8qB,MAAMkuN,WAA0Bh5O,EAAE8qB,MAAMkuN,UAApF,IAA+F,EACxKpwP,EAAQ40P,mBAAmB,SAASx9O,GACgD,GAD7CA,EAAE,CAACy9O,WAAWz9O,EAAEy9O,WAAW5xO,QAAQ7L,EAAE6L,QAAQ6xO,oBAAoB19O,EAAE09O,oBAAoB8mE,eAAexkT,EAAEwkT,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBrrC,EAAGsd,uBAAuBguB,wBAAwBhO,GAAGoN,wBAAwBtkT,EAAEskT,yBAAyBnN,GAAGgO,4BAA4B,KAC5gBC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAS,qBAAqBnyF,+BAA+BpzN,GAAE,MAAO,CAAC,IAAIC,EAAEmzN,+BAA+B,IAAInzN,EAAEwlT,YAAYxlT,EAAEylT,cAAc,IAAIhmB,GAAGz/R,EAAEi/N,OAAOl/N,GAAG2/R,GAAG1/R,CAAY,CAAV,MAAMC,GAAI,CAAAF,GAAE,CAAG,QAAOA,CAAE,EAACpX,EAAQ+xU,oBAAoB,SAAS36T,EAAEC,EAAEC,EAAEmF,GAAG,IAAIi2R,GAAG,MAAMn6R,MAAMpB,EAAE,MAAMC,EAAE2xS,GAAG3xS,EAAEC,GAAG,IAAIwB,EAAEqpF,GAAG9qF,EAAEE,EAAEmF,GAAGwzE,WAAW,MAAM,CAACA,WAAW,WAAWp3E,GAAI,EAAE,EAC9Z7Y,EAAQgyU,kCAAkC,SAAS56T,EAAEC,GAAG,IAAIC,EAAED,EAAEs4S,YAAYr4S,EAAEA,EAAED,EAAEu4S,SAAS,MAAMx4S,EAAEkjT,gCAAgCljT,EAAEkjT,gCAAgC,CAACjjT,EAAEC,GAAGF,EAAEkjT,gCAAgCz5T,KAAKwW,EAAEC,EAAG,EAACtX,EAAQiyU,gBAAgB,SAAS76T,EAAEC,GAAG,IAAIC,EAAE0/R,GAAG,IAAI,OAAOA,GAAG5/R,EAAEC,GAAiB,CAAjC,QAA4B2/R,GAAG1/R,CAAE,CAAC,EAACtX,EAAQkyU,cAAc,WAAW,OAAM,CAAG,EAAClyU,EAAQmyU,iBAAiB,SAAS/6T,EAAEC,GAAG,IAAIC,EAAE0oJ,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAO5oJ,EAAEC,EAAiC,CAA9C,QAA4B,KAAJ2oJ,GAAE1oJ,KAAUgzS,KAAK5pJ,KAAK,CAAC,EAC9b1gK,EAAQiuP,gBAAgB,SAAS72O,EAAEC,EAAEC,EAAEmF,GAAG,IAAI5D,EAAExB,EAAEs2F,QAAQjxF,EAAE8jJ,KAAI7jJ,EAAEggS,GAAG9jS,GAAGzB,EAAE,GAAGE,EAAE,CAAqBD,EAAE,CAAC,GAAG64R,EAA1B54R,EAAEA,EAAE4zS,mBAA8B5zS,GAAG,IAAIA,EAAE02N,IAAI,MAAMz1N,MAAMpB,EAAE,MAAM,IAAIyF,EAAEtF,EAAE,EAAE,CAAC,OAAOsF,EAAEoxN,KAAK,KAAK,EAAEpxN,EAAEA,EAAEwzO,UAAUhuO,QAAQ,MAAM/K,EAAE,KAAK,EAAE,GAAGonJ,GAAE7hJ,EAAEjK,MAAM,CAACiK,EAAEA,EAAEwzO,UAAUy2D,0CAA0C,MAAMxvS,CAAE,EAACuF,EAAEA,EAAEuzO,MAAO,OAAM,OAAOvzO,GAAG,MAAMrE,MAAMpB,EAAE,KAAO,IAAG,IAAIG,EAAE02N,IAAI,CAAC,IAAIxzJ,EAAEljE,EAAE3E,KAAK,GAAG8rJ,GAAEjkF,GAAG,CAACljE,EAAE8hB,GAAG9hB,EAAEkjE,EAAE59D,GAAG,MAAMxF,CAAE,CAAC,CAAAE,EAAEsF,CAAE,MAAKtF,EAAEi/R,GACvW,OAD0W,OAAOl/R,EAAE+K,QAAQ/K,EAAE+K,QAAQ9K,EAAED,EAAEk7S,eAAej7S,GAAED,EAAEkkS,GAAG7+R,EAAEC,IAAK8tS,QAAQ,CAAC/pR,QAAQtpB,GACle,QADqeqF,OAAE,IAChfA,EAAE,KAAKA,KAAapF,EAAE+U,SAAS3P,GAAGg8O,GAAG5/O,EAAExB,GAAGulS,GAAG/jS,EAAE8D,EAAED,GAAUC,CAAE,EAElD3c,CACV,C,uCCvNDD,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAOqyU,kBACXryU,EAAOsyU,UAAY,WAAa,EAChCtyU,EAAOupI,MAAQ,GAEVvpI,EAAOoyB,WAAUpyB,EAAOoyB,SAAW,IACxC7xB,OAAOmB,eAAe1B,EAAQ,SAAU,CACvCa,YAAY,EACZoE,IAAK,WACJ,OAAOjF,EAAOuT,CACd,IAEFhT,OAAOmB,eAAe1B,EAAQ,KAAM,CACnCa,YAAY,EACZoE,IAAK,WACJ,OAAOjF,EAAOkB,CACd,IAEFlB,EAAOqyU,gBAAkB,GAEnBryU,CACP,C,+BCZY,IAA4bowB,EAAxb9Y,EAAE3T,OAAOgqS,IAAI,iBAAiBp2R,EAAE5T,OAAOgqS,IAAI,gBAAgBjxR,EAAE/Y,OAAOgqS,IAAI,kBAAkB70R,EAAEnV,OAAOgqS,IAAI,qBAAqBhxR,EAAEhZ,OAAOgqS,IAAI,kBAAkB/wR,EAAEjZ,OAAOgqS,IAAI,kBAAkB9wR,EAAElZ,OAAOgqS,IAAI,iBAAiBlzN,EAAE92E,OAAOgqS,IAAI,wBAAwBp6R,EAAE5P,OAAOgqS,IAAI,qBAAqBj5R,EAAE/Q,OAAOgqS,IAAI,kBAAkBl5R,EAAE9Q,OAAOgqS,IAAI,uBAAuBnuR,EAAE7b,OAAOgqS,IAAI,cAAcv2R,EAAEzT,OAAOgqS,IAAI,cAAc74R,EAAEnR,OAAOgqS,IAAI,mBACtb,SAASl1R,EAAEpB,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAImG,EAAEnG,EAAE82R,SAAS,OAAO3wR,GAAG,KAAKlG,EAAE,OAAOD,EAAEA,EAAEzE,MAAQ,KAAK8J,EAAE,KAAKC,EAAE,KAAK7D,EAAE,KAAKpE,EAAE,KAAKD,EAAE,OAAO4C,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE82R,UAAY,KAAK1zN,EAAE,KAAK59D,EAAE,KAAKtJ,EAAE,KAAK6D,EAAE,KAAKoI,EAAE,KAAK5C,EAAE,OAAOvF,EAAE,QAAQ,OAAOmG,GAAG,KAAKjG,EAAE,OAAOiG,EAAG,CAAC,CADiM4S,EAAEzsB,OAAOgqS,IAAI,0BAC9M1tS,EAAQsyU,gBAAgB11T,EAAE5c,EAAQuyU,gBAAgB51T,EAAE3c,EAAQ+3L,QAAQ1gL,EAAErX,EAAQ+gR,WAAWztQ,EAAEtT,EAAQ8hS,SAASrlR,EAAEzc,EAAQwyU,KAAKr7T,EAAEnX,EAAQghR,KAAKzhQ,EAAEvf,EAAQyyU,OAAOn7T,EAAEtX,EAAQwtS,SAAS9wR,EAAE1c,EAAQutS,WAAW10R,EAAE7Y,EAAQytS,SAASh5R,EAChezU,EAAQ0yU,aAAal+T,EAAExU,EAAQ2yU,YAAY,WAAW,OAAM,CAAG,EAAC3yU,EAAQ4yU,iBAAiB,WAAW,OAAM,CAAG,EAAC5yU,EAAQ6yU,kBAAkB,SAASz7T,GAAG,OAAOoB,EAAEpB,KAAKwF,CAAE,EAAC5c,EAAQ8yU,kBAAkB,SAAS17T,GAAG,OAAOoB,EAAEpB,KAAKuF,CAAE,EAAC3c,EAAQ0jQ,UAAU,SAAStsP,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE82R,WAAW72R,CAAE,EAACrX,EAAQ+yU,aAAa,SAAS37T,GAAG,OAAOoB,EAAEpB,KAAK9D,CAAE,EAACtT,EAAQgzU,WAAW,SAAS57T,GAAG,OAAOoB,EAAEpB,KAAKqF,CAAE,EAACzc,EAAQizU,OAAO,SAAS77T,GAAG,OAAOoB,EAAEpB,KAAKD,CAAE,EAACnX,EAAQ8gR,OAAO,SAAS1pQ,GAAG,OAAOoB,EAAEpB,KAAKmI,CAAE,EACxevf,EAAQkzU,SAAS,SAAS97T,GAAG,OAAOoB,EAAEpB,KAAKE,CAAE,EAACtX,EAAQmzU,WAAW,SAAS/7T,GAAG,OAAOoB,EAAEpB,KAAKsF,CAAE,EAAC1c,EAAQozU,aAAa,SAASh8T,GAAG,OAAOoB,EAAEpB,KAAKyB,CAAE,EAAC7Y,EAAQqzU,WAAW,SAASj8T,GAAG,OAAOoB,EAAEpB,KAAK3C,CAAE,EAACzU,EAAQszU,eAAe,SAASl8T,GAAG,OAAOoB,EAAEpB,KAAK5C,CAAE,EACnPxU,EAAQ06O,mBAAmB,SAAStjO,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAIqF,GAAGrF,IAAIsF,GAAGtF,IAAIyB,GAAGzB,IAAI3C,GAAG2C,IAAI5C,GAAG4C,IAAIvC,GAAG,kBAAkBuC,GAAG,OAAOA,IAAIA,EAAE82R,WAAW/2R,GAAGC,EAAE82R,WAAW3uR,GAAGnI,EAAE82R,WAAWvxR,GAAGvF,EAAE82R,WAAWtxR,GAAGxF,EAAE82R,WAAW56R,GAAG8D,EAAE82R,WAAW/9Q,QAAG,IAAS/Y,EAAEm8T,YAAmB,EAACvzU,EAAQitO,OAAOz0N,C,+BCV/SzY,EAAOC,QAAUC,EAAQ,I,+BCMd,IAAIoX,EAAE,oBAAoB3T,QAAQA,OAAOgqS,IAAIp2R,EAAED,EAAE3T,OAAOgqS,IAAI,iBAAiB,MAAMjxR,EAAEpF,EAAE3T,OAAOgqS,IAAI,gBAAgB,MAAM70R,EAAExB,EAAE3T,OAAOgqS,IAAI,kBAAkB,MAAMhxR,EAAErF,EAAE3T,OAAOgqS,IAAI,qBAAqB,MAAM/wR,EAAEtF,EAAE3T,OAAOgqS,IAAI,kBAAkB,MAAM9wR,EAAEvF,EAAE3T,OAAOgqS,IAAI,kBAAkB,MAAMlzN,EAAEnjE,EAAE3T,OAAOgqS,IAAI,iBAAiB,MAAMp6R,EAAE+D,EAAE3T,OAAOgqS,IAAI,oBAAoB,MAAMj5R,EAAE4C,EAAE3T,OAAOgqS,IAAI,yBAAyB,MAAMl5R,EAAE6C,EAAE3T,OAAOgqS,IAAI,qBAAqB,MAAMnuR,EAAElI,EAAE3T,OAAOgqS,IAAI,kBAAkB,MAAMv2R,EAAEE,EACpf3T,OAAOgqS,IAAI,uBAAuB,MAAMnwR,EAAElG,EAAE3T,OAAOgqS,IAAI,cAAc,MAAM74R,EAAEwC,EAAE3T,OAAOgqS,IAAI,cAAc,MAAMl1R,EAAEnB,EAAE3T,OAAOgqS,IAAI,eAAe,MAAMj1R,EAAEpB,EAAE3T,OAAOgqS,IAAI,qBAAqB,MAAM/4R,EAAE0C,EAAE3T,OAAOgqS,IAAI,mBAAmB,MAAM94R,EAAEyC,EAAE3T,OAAOgqS,IAAI,eAAe,MAClQ,SAASxnR,EAAE9O,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI+Y,EAAE/Y,EAAE82R,SAAS,OAAO/9Q,GAAG,KAAK7Y,EAAE,OAAOF,EAAEA,EAAEzE,MAAQ,KAAKW,EAAE,KAAKmB,EAAE,KAAKoE,EAAE,KAAK8D,EAAE,KAAKD,EAAE,KAAK6C,EAAE,OAAOnI,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE82R,UAAY,KAAK1zN,EAAE,KAAKhmE,EAAE,KAAKK,EAAE,KAAK0I,EAAE,KAAKX,EAAE,OAAOxF,EAAE,QAAQ,OAAO+Y,GAAG,KAAK1T,EAAE,OAAO0T,EAAG,CAAC,UAASmuI,EAAElnJ,GAAG,OAAO8O,EAAE9O,KAAK3C,CAAE,CAAAzU,EAAQwzU,UAAUlgU,EAAEtT,EAAQyzU,eAAeh/T,EAAEzU,EAAQsyU,gBAAgB93P,EAAEx6E,EAAQuyU,gBAAgB31T,EAAE5c,EAAQ+3L,QAAQzgL,EAAEtX,EAAQ+gR,WAAWvsQ,EAAExU,EAAQ8hS,SAASjpR,EAAE7Y,EAAQwyU,KAAK39T,EAAE7U,EAAQghR,KAAKzjQ,EAAEvd,EAAQyyU,OAAOh2T,EAChfzc,EAAQwtS,SAAS7wR,EAAE3c,EAAQutS,WAAW7wR,EAAE1c,EAAQytS,SAASluR,EAAEvf,EAAQ2yU,YAAY,SAASv7T,GAAG,OAAOknJ,EAAElnJ,IAAI8O,EAAE9O,KAAK9D,CAAE,EAACtT,EAAQ4yU,iBAAiBt0K,EAAEt+J,EAAQ6yU,kBAAkB,SAASz7T,GAAG,OAAO8O,EAAE9O,KAAKojE,CAAE,EAACx6E,EAAQ8yU,kBAAkB,SAAS17T,GAAG,OAAO8O,EAAE9O,KAAKwF,CAAE,EAAC5c,EAAQ0jQ,UAAU,SAAStsP,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE82R,WAAW52R,CAAE,EAACtX,EAAQ+yU,aAAa,SAAS37T,GAAG,OAAO8O,EAAE9O,KAAK5C,CAAE,EAACxU,EAAQgzU,WAAW,SAAS57T,GAAG,OAAO8O,EAAE9O,KAAKyB,CAAE,EAAC7Y,EAAQizU,OAAO,SAAS77T,GAAG,OAAO8O,EAAE9O,KAAKvC,CAAE,EAC3d7U,EAAQ8gR,OAAO,SAAS1pQ,GAAG,OAAO8O,EAAE9O,KAAKmG,CAAE,EAACvd,EAAQkzU,SAAS,SAAS97T,GAAG,OAAO8O,EAAE9O,KAAKqF,CAAE,EAACzc,EAAQmzU,WAAW,SAAS/7T,GAAG,OAAO8O,EAAE9O,KAAKuF,CAAE,EAAC3c,EAAQozU,aAAa,SAASh8T,GAAG,OAAO8O,EAAE9O,KAAKsF,CAAE,EAAC1c,EAAQqzU,WAAW,SAASj8T,GAAG,OAAO8O,EAAE9O,KAAKmI,CAAE,EAC3Ovf,EAAQ06O,mBAAmB,SAAStjO,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAIyB,GAAGzB,IAAI3C,GAAG2C,IAAIuF,GAAGvF,IAAIsF,GAAGtF,IAAImI,GAAGnI,IAAID,GAAG,kBAAkBC,GAAG,OAAOA,IAAIA,EAAE82R,WAAWr5R,GAAGuC,EAAE82R,WAAW3wR,GAAGnG,EAAE82R,WAAWtxR,GAAGxF,EAAE82R,WAAW1zN,GAAGpjE,EAAE82R,WAAW15R,GAAG4C,EAAE82R,WAAWz1R,GAAGrB,EAAE82R,WAAWv5R,GAAGyC,EAAE82R,WAAWt5R,GAAGwC,EAAE82R,WAAW11R,EAAG,EAACxY,EAAQitO,OAAO/mN,C,kBCdnU,IAAI1f,EAAQvG,EAAQ,GAChBm7P,EAAoBn7P,EAAQ,KAC5B8qR,EAAY9qR,EAAQ,KAEpB6rR,EAAef,EAAUe,aACzBQ,EAAuBvB,EAAUuB,qBA6HrC,SAASonD,EAAsBpuM,GAC7B,OACEylJ,EAAUc,4BACI,QAAdvmJ,EAAK3yH,MACLo4Q,EAAUsB,kBAAkB/mJ,EAAKrmH,KAAMqmH,EAAK+nJ,QAE/C,CAEDttR,EAAOC,QA1HP,SAASm7P,EAAW56N,EAAO/Y,GAiBzB,IAdA,IAMI89G,EACAquM,EAEAC,EACA7xU,EACAowB,EAXAsO,GAFJjZ,EAAUA,GAAW,CAAC,GAEAiZ,SAAWj6B,EAC7B4gO,EAAe3mM,EAAQ2mM,aACvB//E,EAAgB5mH,EAAQ4mH,cACxB6nJ,EAAiBzuQ,EAAQyuQ,eAEzBlsS,EAAS,GAGT6wU,EAAwC,oBAApBrsT,EAAQ0gD,QAI5BX,EAAO//C,EAAQ+/C,KAEVtmE,EAAI,EAAGqsB,EAAMiT,EAAMp/B,OAAQF,EAAIqsB,EAAKrsB,IAI3C,GAHAqkI,EAAO/kG,EAAMt/B,GAGT4yU,GAGE3kC,EAFJ0kC,EAAiBpsT,EAAQ0gD,QAAQo9D,IAK3Bh4G,EAAM,IACRsmT,EAAiBxsG,EAAawsG,EAAgB,CAC5CtyU,IAAKsyU,EAAetyU,KAAOL,KAG/B+B,EAAOnC,KAAK+yU,QAKhB,GAAkB,SAAdtuM,EAAK3yH,KAAT,CA8BA,OATA5Q,EAAQujI,EAAK+nJ,QACTqmD,EAAsBpuM,GACxBwmJ,EAAa/pR,EAAMme,MAAOne,GACjBA,IACTA,EAAQq5P,EAAkBr5P,IAG5BowB,EAAW,KAEHmzG,EAAK3yH,MACX,IAAK,SACL,IAAK,QAGC2yH,EAAKnzG,SAAS,KAChBpwB,EAAMy5O,wBAA0B,CAC9BC,OAAQn2G,EAAKnzG,SAAS,GAAGrP,OAG7B,MAEF,IAAK,MAGe,aAAdwiH,EAAKrmH,MAAuBqmH,EAAKnzG,SAAS,GAC5CpwB,EAAMozJ,aAAe7vB,EAAKnzG,SAAS,GAAGrP,KAC7BwiH,EAAKnzG,UAAYmzG,EAAKnzG,SAAShxB,SAExCgxB,EAAWgpO,EAAW71H,EAAKnzG,SAAU3K,IAEvC,MAGF,QACE,SAKA8F,EAAM,IACRvrB,EAAMT,IAAML,GAGd+B,EAAOnC,KAAKwmJ,EAAc/hB,EAAKrmH,KAAMld,EAAOowB,GA7C3C,KAnBD,CAGE,IAFAwhT,GAAgBruM,EAAKxiH,KAAKykD,OAAOpmE,SAEbmkI,EAAKvnG,SAAWuuP,EAAqBhnJ,EAAKvnG,QAG5D,SAGF,GAAIwpC,GAAQosQ,EAGV,SAKF3wU,EAAOnC,KAAKykI,EAAKxiH,KAElB,CAgDH,OAAyB,IAAlB9f,EAAO7B,OAAe6B,EAAO,GAAKA,CAC1C,C,+BCrHD,SAASM,EAAeC,EAAKtC,GAC3B,OAGF,SAAyBsC,GACvB,GAAIuC,MAAMC,QAAQxC,GAAM,OAAOA,CAChC,CALQk/P,CAAgBl/P,IAOzB,SAA+BA,EAAKtC,GAClC,IAAIwC,EAAY,MAAPF,EAAc,KAAyB,qBAAXG,QAA0BH,EAAIG,OAAOC,WAAaJ,EAAI,cAE3F,GAAU,MAANE,EAAY,OAChB,IAIIG,EAAIC,EAJJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKP,EAAKA,EAAGQ,KAAKV,KAAQQ,GAAMH,EAAKH,EAAGS,QAAQC,QAC9CL,EAAKjD,KAAK+C,EAAGhB,QAET3B,GAAK6C,EAAK3C,SAAWF,GAH4B8C,GAAK,GAc7D,CATC,MAAOK,GACPJ,GAAK,EACLH,EAAKO,CACN,CATD,QAUE,IACOL,GAAsB,MAAhBN,EAAE,QAAoBA,EAAE,QAGpC,CAJD,QAGE,GAAIO,EAAI,MAAMH,CACf,CACF,CAED,OAAOC,CACR,CAnCgCgwU,CAAsBvwU,EAAKtC,IAqC5D,SAAqCuD,EAAGy3O,GACtC,IAAKz3O,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAOu3P,EAAkBv3P,EAAGy3O,GACvD,IAAIznO,EAAIlU,OAAOgC,UAAU2D,SAAShC,KAAKO,GAAG6O,MAAM,GAAI,GAC1C,WAANmB,GAAkBhQ,EAAE7B,cAAa6R,EAAIhQ,EAAE7B,YAAYsc,MACvD,GAAU,QAANzK,GAAqB,QAANA,EAAa,OAAO1O,MAAMy+G,KAAK//G,GAClD,GAAU,cAANgQ,GAAqB,2CAA2CsN,KAAKtN,GAAI,OAAOunP,EAAkBv3P,EAAGy3O,EAC1G,CA5CiED,CAA4Bz4O,EAAKtC,IAsDnG,WACE,MAAM,IAAIY,UAAU,4IACrB,CAxDwG6gQ,EACxG,CA6CD,SAAS3G,EAAkBx4P,EAAK+pB,IACnB,MAAPA,GAAeA,EAAM/pB,EAAIpC,UAAQmsB,EAAM/pB,EAAIpC,QAE/C,IAAK,IAAIF,EAAI,EAAG+6P,EAAO,IAAIl2P,MAAMwnB,GAAMrsB,EAAIqsB,EAAKrsB,IAAK+6P,EAAK/6P,GAAKsC,EAAItC,GAEnE,OAAO+6P,CACR,CAvDD17P,OAAOmB,eAAezB,EAAS,aAAc,CAAE4C,OAAO,IA2FtD,SAASmxU,EAAmB90T,EAAMtM,EAAM48R,EAAiBtkB,EAAeqkB,EAAoBE,EAAaC,GACvGtsS,KAAKksS,gBArBiB,IAqBC18R,GAjBX,IAiByCA,GAZ9B,IAYkDA,EACzExP,KAAK8nR,cAAgBA,EACrB9nR,KAAKmsS,mBAAqBA,EAC1BnsS,KAAKosS,gBAAkBA,EACvBpsS,KAAKqrH,aAAevvG,EACpB9b,KAAKwP,KAAOA,EACZxP,KAAKqsS,YAAcA,EACnBrsS,KAAKssS,kBAAoBA,CAC1B,CAKD,IAAIlmP,EAAa,CAAC,EAEE,CAAC,WAAY,0BAGjC,eAAgB,iBAAkB,YAAa,iCAAkC,2BAA4B,SAC/FloD,SAAQ,SAAU4d,GAC9BsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAjD7B,GAiD6C,EAC1DA,EACA,MACA,GACA,EACD,IAGD,CAAC,CAAC,gBAAiB,kBAAmB,CAAC,YAAa,SAAU,CAAC,UAAW,OAAQ,CAAC,YAAa,eAAe5d,SAAQ,SAAU88N,GAC/H,IAAIlxE,EAAQ3pJ,EAAe66N,EAAM,GAC7Bl/M,EAAOguI,EAAM,GACbg+H,EAAgBh+H,EAAM,GAE1B1jG,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EA3D/B,GA2D6C,EACxDgsQ,EACA,MACA,GACA,EACD,IAID,CAAC,kBAAmB,YAAa,aAAc,SAAS5pR,SAAQ,SAAU4d,GACxEsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAhEpB,GAgE6C,EACnEA,EAAK6B,cACL,MACA,GACA,EACD,IAKD,CAAC,cAAe,4BAA6B,YAAa,iBAAiBzf,SAAQ,SAAU4d,GAC3FsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EA3EpB,GA2E6C,EACnEA,EACA,MACA,GACA,EACD,IAED,CAAC,kBAAmB,QAEpB,YAAa,WAAY,WAAY,UAAW,QAAS,WAAY,0BAA2B,wBAAyB,iBAAkB,SAAU,OAAQ,WAAY,aAAc,OAAQ,cAAe,WAAY,WAAY,WAAY,SAAU,WAC5P,aAAa5d,SAAQ,SAAU4d,GAC7BsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAlF9B,GAkF6C,EACzDA,EAAK6B,cACL,MACA,GACA,EACD,IAGD,CAAC,UAED,WAAY,QAAS,YAGnBzf,SAAQ,SAAU4d,GAClBsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAhG9B,GAgG6C,EACzDA,EACA,MACA,GACA,EACD,IAGD,CAAC,UAAW,YAGV5d,SAAQ,SAAU4d,GAClBsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAvGnB,GAuG6C,EACpEA,EACA,MACA,GACA,EACD,IAED,CAAC,OAAQ,OAAQ,OAAQ,QAGvB5d,SAAQ,SAAU4d,GAClBsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EA5GrB,GA4G6C,EAClEA,EACA,MACA,GACA,EACD,IAED,CAAC,UAAW,SAAS5d,SAAQ,SAAU4d,GACrCsqC,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAvH9B,GAuH6C,EACzDA,EAAK6B,cACL,MACA,GACA,EACD,IACD,IAAIkzT,EAAW,iBAEXC,EAAa,SAAoBrI,GACnC,OAAOA,EAAM,GAAGz3T,aACjB,EAOD,CAAC,gBAAiB,qBAAsB,cAAe,iBAAkB,aAAc,YAAa,YAAa,sBAAuB,8BAA+B,gBAAiB,kBAAmB,oBAAqB,oBAAqB,eAAgB,YAAa,cAAe,gBAAiB,cAAe,YAAa,mBAAoB,eAAgB,aAAc,eAAgB,cAAe,aAAc,+BAAgC,6BAA8B,cAAe,iBAAkB,kBAAmB,iBAAkB,iBAAkB,aAAc,aAAc,eAAgB,oBAAqB,qBAAsB,cAAe,WAAY,iBAAkB,mBAAoB,kBAAmB,aAAc,eAAgB,yBAA0B,0BAA2B,mBAAoB,oBAAqB,iBAAkB,kBAAmB,oBAAqB,iBAAkB,eAAgB,cAAe,kBAAmB,iBAAkB,qBAAsB,sBAAuB,eAAgB,gBAAiB,eAAgB,eAAgB,YAAa,gBAAiB,iBAAkB,gBAAiB,aAAc,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,YAGtwC9S,SAAQ,SAAU4pR,GAClB,IAAIhsQ,EAAOgsQ,EAAc/iN,QAAQ8rQ,EAAUC,GAC3C1qR,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EA9J/B,GA8J6C,EACxDgsQ,EAAe,MACf,GACA,EACD,IAED,CAAC,gBAAiB,gBAAiB,aAAc,aAAc,cAAe,cAG5E5pR,SAAQ,SAAU4pR,GAClB,IAAIhsQ,EAAOgsQ,EAAc/iN,QAAQ8rQ,EAAUC,GAC3C1qR,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAzK/B,GAyK6C,EACxDgsQ,EAAe,gCAAgC,GAC/C,EACD,IAED,CAAC,WAAY,WAAY,aAGvB5pR,SAAQ,SAAU4pR,GAClB,IAAIhsQ,EAAOgsQ,EAAc/iN,QAAQ8rQ,EAAUC,GAC3C1qR,EAAWtqC,GAAQ,IAAI80T,EAAmB90T,EAnL/B,GAmL6C,EACxDgsQ,EAAe,wCAAwC,GACvD,EACD,IAID,CAAC,WAAY,eAAe5pR,SAAQ,SAAU4pR,GAC5C1hO,EAAW0hO,GAAiB,IAAI8oD,EAAmB9oD,EA3LxC,GA2L+D,EAC1EA,EAAcnqQ,cACd,MACA,GACA,EACD,IAIDyoC,EAAU,UAAc,IAAIwqR,EAAmB,YApMlC,GAoMuD,EACpE,aAAc,gCAAgC,GAC9C,GACA,CAAC,MAAO,OAAQ,SAAU,cAAc1yU,SAAQ,SAAU4pR,GACxD1hO,EAAW0hO,GAAiB,IAAI8oD,EAAmB9oD,EAxMxC,GAwM+D,EAC1EA,EAAcnqQ,cACd,MACA,GACA,EACD,IAED,IAAIozT,EAAWj0U,EAAQ,KACnBk0U,EAAYD,EAASC,UACrBC,EAAOF,EAASE,KAChBC,EAAiCH,EAAShpD,sBAa1CO,EAAoB1nJ,OAAOzhI,UAAUwf,KAAKnd,KAC9C,IAAIo/H,OAAO,+OACPmnJ,EAAwB5qR,OAAOD,KAAKg0U,GAAgClqL,QAAO,SAAUmqL,EAAaC,GACpG,IAAIlpD,EAAWgpD,EAA+BE,GAU9C,OARIlpD,IAAa+oD,EACfE,EAAYC,GAAgBA,EACnBlpD,IAAa8oD,EACtBG,EAAYC,EAAazzT,eAAiByzT,EAE1CD,EAAYC,GAAgBlpD,EAGvBipD,CACR,GAAE,CAAC,GAEJt0U,EAAQ2rR,QAtOM,EAuOd3rR,EAAQw0U,kBA3OgB,EA4OxBx0U,EAAQy0U,QAhOM,EAiOdz0U,EAAQ4rR,mBApOiB,EAqOzB5rR,EAAQ00U,iBA/Ne,EAgOvB10U,EAAQ20U,SAvPO,EAwPf30U,EAAQ40U,OArPK,EAsPb50U,EAAQ0rR,gBAjOR,SAAyBzsQ,GACvB,OAAOsqC,EAAWxkD,eAAeka,GAAQsqC,EAAWtqC,GAAQ,IAC7D,EAgODjf,EAAQyrR,kBAAoBA,EAC5BzrR,EAAQkrR,sBAAwBA,C,gBC1ThClrR,EAAQo0U,KADG,EAKXp0U,EAAQm0U,UADQ,EAGhBn0U,EAAQkrR,sBAAwB,CAC9B2pD,OAAQ,EACRC,cAAe,EACf,iBAAkB,gBAClBC,UAAW,EACX7nM,OAAQ,EACR8nM,gBAAiB,EACjBC,IAAK,EACLxmL,GAAI,EACJqF,MAAO,EACPohL,eAAgB,EAChBC,aAAc,EACdC,YAAa,EACb17E,UAAW,EACX27E,SAAU,EACVC,SAAU,EACVhxF,QAAS,EACTixF,YAAa,EACbC,YAAa,EACbC,UAAW,EACXC,QAAS,EACT1jC,QAAS,EACT7/Q,SAAU,EACVwjT,KAAM,EACNC,MAAO,YACPC,QAAS,EACTnuL,UAAW,EACX/8C,KAAM,EACNmrO,QAAS,EACT74G,QAAS,EACTqmF,gBAAiB,EACjByyB,YAAa,EACbr3F,SAAU,EACVs3F,aAAc,EACdnjM,OAAQ,EACR/hB,YAAa,EACb0qH,wBAAyB,EACzB14N,KAAM,EACNmzT,SAAU,EACV9vU,QAAS,EACTgsS,eAAgB,EAChBh9I,aAAc,EACd+gL,MAAO,EACP7uU,IAAK,EACLkkL,SAAU,EACV4qJ,wBAAyB,EACzBC,sBAAuB,EACvBC,SAAU,EACVC,UAAW,EACXC,QAAS,EACTC,aAAc,EACd9oC,IAAK,UACL2tB,KAAM,EACNob,WAAY,EACZC,WAAY,EACZC,YAAa,EACbC,eAAgB,EAChBC,WAAY,EACZC,YAAa,EACbnlN,QAAS,EACTxvG,OAAQ,EACR2oK,OAAQ,EACRt0K,KAAM,EACN6vI,KAAM,EACN0wL,SAAU,EACVt8D,QAAS,EACTu8D,UAAW,EACX,aAAc,YACdC,KAAM,EACNv3S,GAAI,EACJs1P,UAAW,EACXkiD,UAAW,EACXC,UAAW,EACXtyF,GAAI,EACJuyF,OAAQ,EACRC,SAAU,EACVC,QAAS,EACTC,UAAW,EACXC,SAAU,EACVC,UAAW,EACXC,QAAS,EACTC,KAAM,EACNjkN,MAAO,EACPkkN,KAAM,EACNvjQ,KAAM,EACNqqD,KAAM,EACNnoH,IAAK,EACLshU,SAAU,EACVC,YAAa,EACbC,aAAc,EACdzjU,IAAK,EACL0jU,UAAW,EACXxgF,MAAO,EACPygF,WAAY,EACZ77O,OAAQ,EACR/nF,IAAK,EACL6jU,UAAW,EACXpkB,SAAU,EACVh4C,MAAO,EACP78P,KAAM,EACNk5T,SAAU,EACV7nG,MAAO,EACP8nG,WAAY,EACZpvD,KAAM,EACNqvD,QAAS,EACTrqN,QAAS,EACTnU,YAAa,EACby+N,YAAa,EACbC,OAAQ,EACR51F,QAAS,EACT61F,QAAS,EACTC,WAAY,EACZl9D,SAAU,EACVm9D,eAAgB,EAChBv8F,IAAK,EACLw8F,SAAU,EACVC,SAAU,EACV32G,KAAM,EACNn3H,KAAM,EACN+tO,QAAS,EACTC,QAAS,EACT9jS,MAAO,EACPu4K,OAAQ,EACRwrH,UAAW,EACXC,SAAU,EACVnmC,SAAU,EACVvxQ,MAAO,EACP3gB,KAAM,EACNs4T,MAAO,EACPpqL,KAAM,EACNqqL,WAAY,EACZn3T,IAAK,EACLo3T,OAAQ,EACRC,QAAS,EACTC,OAAQ,EACRtrS,MAAO,EACPrjB,KAAM,EACNxK,MAAO,EACPo5T,QAAS,EACTl9F,SAAU,EACVp7O,OAAQ,EACR8xL,MAAO,EACPngL,KAAM,EACN4mU,OAAQ,EACR32U,MAAO,EACPsf,MAAO,EACPs3T,MAAO,EACP7zT,KAAM,EACN8zT,MAAO,EACPC,aAAc,EACd,gBAAiB,eACjBzrM,WAAY,EACZgjI,SAAU,EACV0oE,kBAAmB,EACnB,qBAAsB,oBACtBC,aAAc,EACdC,WAAY,EACZC,UAAW,EACXC,WAAY,EACZ,cAAe,aACfC,OAAQ,EACR/uD,cAAe,EACfgvD,cAAe,EACfC,YAAa,EACbhvO,QAAS,EACTivO,cAAe,EACfC,cAAe,EACf,iBAAkB,gBAClBC,YAAa,EACbC,KAAM,EACNC,MAAO,EACP5jQ,KAAM,EACNznD,GAAI,EACJsrT,SAAU,EACVC,UAAW,EACX,aAAc,YACd70N,KAAM,EACN80N,SAAU,EACV,YAAa,WACbC,cAAe,EACfC,SAAU,EACV,YAAa,WACbr6T,MAAO,EACPs6T,mBAAoB,EACpB,sBAAuB,qBACvBC,0BAA2B,EAC3B,8BAA+B,4BAC/BC,aAAc,EACd,gBAAiB,eACjBC,eAAgB,EAChB,kBAAmB,iBACnBC,kBAAmB,EACnBC,iBAAkB,EAClBj0H,OAAQ,EACRppM,GAAI,EACJC,GAAI,EACJrB,EAAG,EACH0+T,SAAU,EACVC,WAAY,EACZC,QAAS,EACTC,gBAAiB,EACjB7lT,UAAW,EACXuhE,QAAS,EACTukP,QAAS,EACTC,iBAAkB,EAClB,oBAAqB,mBACrBC,IAAK,EACLliU,GAAI,EACJC,GAAI,EACJkiU,SAAU,EACVC,UAAW,EACXC,iBAAkB,EAClB,oBAAqB,mBACrBzgS,IAAK,EACL0gS,SAAU,EACVC,0BAA2B,EAC3B/hR,KAAM,EACNg6N,YAAa,EACb,eAAgB,cAChBgoD,SAAU,EACV,YAAa,WACbt7U,OAAQ,EACRu7U,UAAW,EACXC,YAAa,EACbjoD,aAAc,EACd,gBAAiB,eACjBkoD,WAAY,EACZ,cAAe,aACfC,UAAW,EACXC,WAAY,EACZ,cAAe,aACf32I,SAAU,EACV,YAAa,WACb42I,eAAgB,EAChB,mBAAoB,iBACpBC,YAAa,EACb,eAAgB,cAChBC,UAAW,EACX,aAAc,YACdC,YAAa,EACb,eAAgB,cAChB/oD,WAAY,EACZ,cAAe,aACfrvQ,OAAQ,EACRmgG,KAAM,EACNk4N,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,UAAW,EACX,aAAc,YACdC,2BAA4B,EAC5B,+BAAgC,6BAChCC,yBAA0B,EAC1B,6BAA8B,2BAC9BC,SAAU,EACVC,kBAAmB,EACnBC,cAAe,EACfC,QAAS,EACTC,UAAW,EACX,cAAe,YACfC,aAAc,EACd,iBAAkB,eAClBC,YAAa,EACbC,eAAgB,EAChB,kBAAmB,iBACnBC,IAAK,EACLr5G,GAAI,EACJs5G,OAAQ,EACRC,UAAW,EACXC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJtjQ,EAAG,EACHujQ,aAAc,EACdC,iBAAkB,EAClBC,QAAS,EACTC,UAAW,EACXC,WAAY,EACZC,SAAU,EACVC,aAAc,EACdC,cAAe,EACf,iBAAkB,gBAClBC,cAAe,EACf,iBAAkB,gBAClBC,kBAAmB,EACnBnwK,MAAO,EACPowK,UAAW,EACX,aAAc,YACdC,aAAc,EACdC,UAAW,EACX,aAAc,YACdC,YAAa,EACb,eAAgB,cAChBC,YAAa,EACbC,YAAa,EACbhiT,KAAM,EACNiiT,iBAAkB,EAClBC,UAAW,EACXC,aAAc,EACdhtR,KAAM,EACNitR,WAAY,EACZrlU,OAAQ,EACRorB,QAAS,EACTk6S,SAAU,EACV5nU,MAAO,EACP6nU,OAAQ,EACRC,YAAa,EACb7pT,OAAQ,EACRivN,SAAU,EACV66F,iBAAkB,EAClB,oBAAqB,mBACrBC,kBAAmB,EACnB,qBAAsB,oBACtBC,WAAY,EACZ,cAAe,aACfC,QAAS,EACT,WAAY,UACZz5Q,WAAY,EACZ05Q,oBAAqB,EACrBC,iBAAkB,EAClBC,aAAc,EACdC,cAAe,EACf,iBAAkB,gBAClBhvT,OAAQ,EACRivT,UAAW,EACXC,UAAW,EACXC,UAAW,EACXj5U,OAAQ,EACRk5U,cAAe,EACfC,oBAAqB,EACrBC,eAAgB,EAChBr7U,SAAU,EACVyY,EAAG,EACHsS,OAAQ,EACRuwT,KAAM,EACNC,KAAM,EACNC,gBAAiB,EACjB,mBAAoB,kBACpBC,YAAa,EACbC,UAAW,EACXC,mBAAoB,EACpBC,iBAAkB,EAClBC,SAAU,EACVC,QAAS,EACT59U,OAAQ,EACRskI,QAAS,EACTmkC,OAAQ,EACRo1K,GAAI,EACJC,GAAI,EACJ9lT,MAAO,EACP+lT,SAAU,EACVj0C,KAAM,EACNk0C,eAAgB,EAChB,kBAAmB,iBACnBn3O,MAAO,EACPypF,QAAS,EACT2tJ,iBAAkB,EAClBC,iBAAkB,EAClBC,MAAO,EACPC,aAAc,EACdC,YAAa,EACbC,aAAc,EACdC,MAAO,EACPC,MAAO,EACPC,YAAa,EACbC,UAAW,EACX,aAAc,YACdztD,YAAa,EACb,eAAgB,cAChB0tD,sBAAuB,EACvB,yBAA0B,wBAC1BC,uBAAwB,EACxB,0BAA2B,yBAC3BxhU,OAAQ,EACRqwJ,OAAQ,EACRyjH,gBAAiB,EACjB,mBAAoB,kBACpBC,iBAAkB,EAClB,oBAAqB,mBACrB0tD,cAAe,EACf,iBAAkB,gBAClBC,eAAgB,EAChB,kBAAmB,iBACnB1tD,iBAAkB,EAClB,oBAAqB,mBACrB5iH,YAAa,EACb,eAAgB,cAChB6iH,cAAe,EACf,iBAAkB,gBAClB0tD,+BAAgC,EAChCC,yBAA0B,EAC1BC,aAAc,EACd7qD,eAAgB,EAChB8qD,YAAa,EACbC,QAAS,EACTC,QAAS,EACTC,WAAY,EACZ,cAAe,aACfC,eAAgB,EAChB,kBAAmB,iBACnBC,WAAY,EACZC,cAAe,EACf,iBAAkB,gBAClBh+N,GAAI,EACJz2B,UAAW,EACX00P,OAAQ,EACR12T,GAAI,EACJG,GAAI,EACJw2T,kBAAmB,EACnB,qBAAsB,oBACtBC,mBAAoB,EACpB,sBAAuB,qBACvBC,QAAS,EACTC,YAAa,EACb,eAAgB,cAChBC,aAAc,EACd,gBAAiB,eACjBC,WAAY,EACZ,eAAgB,aAChBC,aAAc,EACdC,YAAa,EACb,eAAgB,cAChBjhT,OAAQ,EACRkhT,aAAc,EACd,gBAAiB,eACjBjgU,QAAS,EACTkgU,SAAU,EACV,aAAc,WACdC,YAAa,EACb,gBAAiB,cACjBC,YAAa,EACb,gBAAiB,cACjBC,SAAU,EACV,YAAa,WACbC,aAAc,EACd,gBAAiB,eACjBC,QAAS,EACTC,WAAY,EACZ5iG,WAAY,EACZ6iG,cAAe,EACf,iBAAkB,gBAClBC,MAAO,EACP7hJ,OAAQ,EACR8hJ,YAAa,EACb,eAAgB,cAChBC,YAAa,EACb,eAAgB,cAChB52T,GAAI,EACJgO,GAAI,EACJtmB,EAAG,EACHmvU,iBAAkB,EAClBC,QAAS,EACT,WAAY,UACZC,aAAc,EACd,gBAAiB,eACjBC,aAAc,EACd,gBAAiB,eACjBr0C,UAAW,EACX,aAAc,YACds0C,UAAW,EACX,aAAc,YACdC,UAAW,EACX,aAAc,YACdC,WAAY,EACZ,cAAe,aACfC,UAAW,EACX,aAAc,YACdC,QAAS,EACT,WAAY,UACZC,QAAS,EACT,WAAY,UACZC,MAAO,EACP,YAAa,WACbC,WAAY,EACZ,cAAe,aACfC,SAAU,EACVx3T,GAAI,EACJgO,GAAI,EACJtmB,EAAG,EACH+vU,iBAAkB,EAClBz+T,EAAG,EACH0+T,WAAY,E,+BC1ed,IAAIC,EAAmB1hV,MAAQA,KAAK0hV,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAI9X,WAAc8X,EAAM,CAAE,QAAWA,EACvD,EACD9kV,EAAQgtU,YAAa,EACrB,IAAI+X,EAAoBF,EAAgB5kV,EAAQ,MAC5C+kV,EAAc/kV,EAAQ,KAa1BD,EAAO,QAZP,SAAmBkgB,EAAOsH,GACtB,IAAInE,EAAS,CAAC,EACd,OAAKnD,GAA0B,kBAAVA,IAGrB,EAAI6kU,EAAiB,SAAa7kU,GAAO,SAAUpb,EAAUlC,GACrDkC,GAAYlC,IACZygB,GAAO,EAAI2hU,EAAYC,WAAWngV,EAAU0iB,IAAY5kB,EAE/D,IACMygB,GAPIA,CAQd,C,kBClBD,IAAIgC,EAAQplB,EAAQ,KAyCpBF,EAAOC,QA5BP,SAAuBkgB,EAAOvc,GAC5B,IAKIuhV,EALA7hU,EAAS,KACb,IAAKnD,GAA0B,kBAAVA,EACnB,OAAOmD,EAST,IALA,IAEIve,EACAlC,EAHAuiV,EAAe9/T,EAAMnF,GACrBklU,EAAkC,oBAAbzhV,EAIhB1C,EAAI,EAAGqsB,EAAM63T,EAAahkV,OAAQF,EAAIqsB,EAAKrsB,IAElD6D,GADAogV,EAAcC,EAAalkV,IACJ6D,SACvBlC,EAAQsiV,EAAYtiV,MAEhBwiV,EACFzhV,EAASmB,EAAUlC,EAAOsiV,GACjBtiV,IACTygB,IAAWA,EAAS,CAAC,GACrBA,EAAOve,GAAYlC,GAIvB,OAAOygB,CACR,C,gBCrCD,IAAI2wN,EAAgB,kCAEhBqxG,EAAgB,MAChBC,EAAmB,OAGnBC,EAAiB,yCACjBC,EAAc,QACdC,EAAc,uDACdC,EAAkB,UAGlBC,EAAa,aAMbC,EAAe,GA8OnB,SAASr+Q,EAAKooF,GACZ,OAAOA,EAAMA,EAAIznF,QAAQy9Q,EAAYC,GAAgBA,CACtD,CAnOD7lV,EAAOC,QAAU,SAASkgB,EAAOsH,GAC/B,GAAqB,kBAAVtH,EACT,MAAM,IAAIre,UAAU,mCAGtB,IAAKqe,EAAO,MAAO,GAEnBsH,EAAUA,GAAW,CAAC,EAKtB,IAAIq+T,EAAS,EACT/wG,EAAS,EAOb,SAASgxG,EAAen2L,GACtB,IAAInyF,EAAQmyF,EAAIzpF,MAAMm/Q,GAClB7nR,IAAOqoR,GAAUroR,EAAMr8D,QAC3B,IAAIF,EAAI0uJ,EAAIj4B,YAvCF,MAwCVo9G,GAAU7zO,EAAI0uJ,EAAIxuJ,OAASF,EAAI6zO,EAASnlF,EAAIxuJ,MAC7C,CAOD,SAAS0wB,IACP,IAAIkc,EAAQ,CAAEiN,KAAM6qS,EAAQ/wG,OAAQA,GACpC,OAAO,SAASxvG,GAGd,OAFAA,EAAKzzG,SAAW,IAAIk0T,EAASh4S,GAC7Bi4S,IACO1gN,CACR,CACF,CAUD,SAASygN,EAASh4S,GAChB5qC,KAAK4qC,MAAQA,EACb5qC,KAAKg4C,IAAM,CAAEH,KAAM6qS,EAAQ/wG,OAAQA,GACnC3xO,KAAK/B,OAASomB,EAAQpmB,MACvB,CAKD2kV,EAASzjV,UAAU26N,QAAU/8M,EAE7B,IAAI+lU,EAAa,GAQjB,SAAS7rU,EAAM8rU,GACb,IAAI9hV,EAAM,IAAImU,MACZiP,EAAQpmB,OAAS,IAAMykV,EAAS,IAAM/wG,EAAS,KAAOoxG,GAQxD,GANA9hV,EAAIq8T,OAASylB,EACb9hV,EAAI+hV,SAAW3+T,EAAQpmB,OACvBgD,EAAI42C,KAAO6qS,EACXzhV,EAAI0wO,OAASA,EACb1wO,EAAIhD,OAAS8e,GAETsH,EAAQ4+T,OAGV,MAAMhiV,EAFN6hV,EAAWplV,KAAKuD,EAInB,CAQD,SAAS8hE,EAAMy7O,GACb,IAAIltS,EAAIktS,EAAGrhS,KAAKJ,GAChB,GAAKzL,EAAL,CACA,IAAIk7I,EAAMl7I,EAAE,GAGZ,OAFAqxU,EAAen2L,GACfzvI,EAAQA,EAAM7M,MAAMs8I,EAAIxuJ,QACjBsT,CAJO,CAKf,CAKD,SAASuxU,IACP9/Q,EAAMo/Q,EACP,CAQD,SAASe,EAASj4G,GAChB,IAAI92N,EAEJ,IADA82N,EAAQA,GAAS,GACT92N,EAAIgvU,MACA,IAANhvU,GACF82N,EAAMvtO,KAAKyW,GAGf,OAAO82N,CACR,CAQD,SAASk4G,IACP,IAAIhsK,EAAMzoJ,IACV,GAnJgB,KAmJK3R,EAAMU,OAAO,IAlJvB,KAkJyCV,EAAMU,OAAO,GAAjE,CAGA,IADA,IAAI3f,EAAI,EAEN2kV,GAAgB1lU,EAAMU,OAAO3f,KAtJpB,KAuJIif,EAAMU,OAAO3f,IAxJZ,KAwJmCif,EAAMU,OAAO3f,EAAI,OAEhEA,EAIJ,GAFAA,GAAK,EAED2kV,IAAiB1lU,EAAMU,OAAO3f,EAAI,GACpC,OAAOmZ,EAAM,0BAGf,IAAIu1I,EAAMzvI,EAAM7M,MAAM,EAAGpS,EAAI,GAM7B,OALA6zO,GAAU,EACVgxG,EAAen2L,GACfzvI,EAAQA,EAAM7M,MAAMpS,GACpB6zO,GAAU,EAEHx6D,EAAI,CACT3nK,KApKa,UAqKb2zU,QAAS32L,GAvBgE,CAyB5E,CAQD,SAASu1L,IACP,IAAI5qK,EAAMzoJ,IAGN0hJ,EAAOrtG,EAAMq/Q,GACjB,GAAKhyK,EAAL,CAIA,GAHA+yK,KAGKpgR,EAAMs/Q,GAAc,OAAOprU,EAAM,wBAGtC,IAAI8/H,EAAMh0E,EAAMu/Q,GAEZ16K,EAAMuP,EAAI,CACZ3nK,KA7LiB,cA8LjB7N,SAAUyiE,EAAKgsG,EAAK,GAAGrrG,QAAQ8rK,EAAe4xG,IAC9ChjV,MAAOs3I,EACH3yE,EAAK2yE,EAAI,GAAGhyE,QAAQ8rK,EAAe4xG,IACnCA,IAMN,OAFA1/Q,EAAMw/Q,GAEC36K,CApBU,CAqBlB,CAyBD,OADAi7K,IAjBA,WACE,IAKIO,EALAC,EAAQ,GAMZ,IAJAH,EAASG,GAIDD,EAAOrB,MACA,IAATqB,IACFC,EAAM3lV,KAAK0lV,GACXF,EAASG,IAIb,OAAOA,CACR,CAGMrB,EACR,C,+BCzPDnlV,EAAQgtU,YAAa,EACrBhtU,EAAQilV,eAAY,EACpB,IAAIwB,EAAwB,oBACxBC,EAAe,YACfC,EAAkB,UAClBC,EAAsB,6BACtBC,EAAyB,UAMzB5S,EAAa,SAAU/tQ,EAAO4gR,GAC9B,OAAOA,EAAU3yU,aACpB,EACG4yU,EAAa,SAAU7gR,EAAOn/D,GAAU,MAAO,GAAGqtG,OAAOrtG,EAAQ,IAAO,EAe5E/G,EAAQilV,UAdQ,SAAUngV,EAAU0iB,GAEhC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAVrB,SAAU1iB,GAC1B,OAAQA,GACJ6hV,EAAgB7kU,KAAKhd,IACrB2hV,EAAsB3kU,KAAKhd,EAClC,CAOOkiV,CAAcliV,GACPA,GAEXA,EAAWA,EAASgc,eAEhBhc,EADA0iB,EAAQykQ,YACGnnR,EAASojE,QAAQ2+Q,EAAwBE,GAGzCjiV,EAASojE,QAAQ0+Q,EAAqBG,IAErC7+Q,QAAQw+Q,EAAczS,GACzC,C,+BC9BD,4DAGIt+C,EAHJ,OAG0BA,UAEtBsxD,EAAkB,mBAQP,SAASC,EAAczrF,GACpC,GAAoB,kBAATA,EACT,MAAM,IAAI55P,UAAU,mCAGtB,GAAa,KAAT45P,EACF,MAAO,GAIT,IACIm6B,EADA1vN,EAAQu1L,EAAKv1L,MAAM+gR,GAOvB,OAJI/gR,GAASA,EAAM,KACjB0vN,EAAY1vN,EAAM,IAGbyvN,EAAUwxD,EAAU1rF,GAAO,KAAMm6B,EACzC,C,gBC1BD51R,EAAQq1R,yBAA2B,CACjC,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,iBACA,iBACA,W,yJChCI+xD,E,kDACJ,WAAYrlV,GAAO,kCACjB,cAAMA,IAEDmlC,gBAAkB,SAAAkT,GACrBA,EAAOzD,eAAiByD,EAAOzD,eAAeuxB,QAAQ,6BAA9B,0SAQzB,EAZgB,CAalB,C,uBAd6B09K,kBAiB1ByhG,EAA6B7gV,cAAiB,SAACzE,EAAOkkJ,GAC1D,MAAmBz/I,YAAe,kBAAM,IAAI4gV,EAAkB,KAA5B,IAA3BzlT,EAAP,oBACA,OAAoBn7B,gBAAoB,YAAaouJ,YAAS,CAC5Dz0J,OAAQwhC,EACRskH,IAAKA,EACLjC,OAAQ,YACPjiJ,GACJ,G,wKCpBKulV,EAAiBz3L,YAAmB,mBAAoB,CAC5DX,UAAW,SAuBPq4L,EAA0B/gV,cAAiB,WAQ9Cy/I,GAAQ,IAPTyI,EAOS,EAPTA,SACA/tI,EAMS,EANTA,KACA6mU,EAKS,EALTA,cACA9/L,EAIS,EAJTA,UAIS,IAFT+G,GAAIS,OAEK,MAFO,MAEP,EADNntJ,EACM,iBACT2sJ,EAAW5nJ,YAAmB4nJ,EAAU,eAGxC,IAAMq0E,EAAezC,mBAAQ,iBAAO,CAAC,CAAR,GAAY,IACzC,OAAoBnxE,cAAKszE,IAAkB57N,SAAU,CACnDjE,MAAOmgO,EACP5wM,SAAuBg9H,cAAKD,EAAD,YAAC,aAC1BjJ,IAAKA,GACFlkJ,GAFsB,IAGzB2lJ,UAAWhiJ,IAAWgiJ,EAAWgH,EAAU/tI,GAAQ,GAAJ,OAAO+tI,EAAP,YAAmB/tI,GAAQ6mU,GAAiB,sBAGhG,IACDD,EAAWn4L,YAAc,aACV9uJ,WAAO8nB,OAAOm/T,EAAY,CACvC1+G,KAAMy+G,EACNG,MAtCsB,SAAA1lV,GAAK,OAAiBotJ,cAAKm4L,EAAgB,CACjEn1T,SAAuBg9H,cAAKynG,IAAD,aACzBjkP,KAAM,SACH5Q,KAHsB,EAuC3B2lV,SA9CyB,SAAA3lV,GAAK,OAAiBotJ,cAAKm4L,EAAgB,CACpEn1T,SAAuBg9H,cAAKynG,IAAD,aACzBjkP,KAAM,YACH5Q,KAHyB,G,gQCJ1BylO,EAAY,CAKhB9nM,GAAIuiO,IAAU7hP,OAGdimI,KAAM47G,IAAU7hP,OAGhB8lI,QAAS+7G,IAAUvkB,KAGnB5qD,MAAOmvE,IAAU38H,KAAKm5J,WAGtBlzG,SAAU02E,IAAUqY,KASpB5/G,MAAOynG,IAGPwlF,SAAU1lF,IAAU7hP,OAGpBwnU,kBAAmB3lF,IAAUqY,KAO7Bpe,eAAgB+F,IAAU7hP,OAO1BynU,YAAa5lF,IAAUC,MAAM,CAAC,SAO9BlxF,KAAMixF,IAAUqY,KAGhB5rH,SAAUuzG,IAAU7hP,OAGpBsnN,QAASu6B,IAAU7hP,OAGnBO,KAAMshP,IAAU7hP,QAYZ0nU,EAA8BthV,cAAiB,WAelDy/I,GAfkD,IACnD6sC,EADmD,EACnDA,MACA3gK,EAFmD,EAEnDA,SACAu8H,EAHmD,EAGnDA,SACAwtG,EAJmD,EAInDA,eACAx0B,EALmD,EAKnDA,QACA/mN,EANmD,EAMnDA,KACAgnU,EAPmD,EAOnDA,SACAC,EARmD,EAQnDA,kBACAr8J,EATmD,EASnDA,SACAllC,EAVmD,EAUnDA,KACA3mH,EAXmD,EAWnDA,GACAmoT,EAZmD,EAYnDA,YACA72K,EAbmD,EAanDA,KACGjvK,EAdgD,wBAe7BqgP,eAAMvjB,IAAD,YAAC,aAC5B54E,IAAKA,GACFlkJ,GAFwB,IAG3BowB,SAAU,CAAcg9H,cAAK0yE,IAAgB,CAC3CniM,GAAIA,EACJ2mH,KAAMA,EACN1lI,KAAMA,EACN+mN,QAASA,EACTn8C,SAAUA,EACVu3E,cAAep0G,EACfv8H,SAAU2gK,IACK3jC,cAAKwyE,IAAc,CAClCM,KAAM0lH,EACNvrF,cAAewrF,EACf1rF,eAAgBA,EAChBx0B,QAASmgH,EACT72K,KAAMA,EACN7+I,SAAUA,OAhCuC,IAmCrD21T,EAAe14L,YAAc,iBAC7B04L,EAAetgH,UAAYA,EACZsgH,K,mCCtHXnnU,E,uEACW,SAASonU,EAAcC,GACpC,KAAKrnU,GAAiB,IAATA,GAAcqnU,IACrBjyF,IAAW,CACb,IAAIkyF,EAAY/oU,SAASmoI,cAAc,OACvC4gM,EAAU/nU,MAAM2R,SAAW,WAC3Bo2T,EAAU/nU,MAAM6b,IAAM,UACtBksT,EAAU/nU,MAAMgC,MAAQ,OACxB+lU,EAAU/nU,MAAMiC,OAAS,OACzB8lU,EAAU/nU,MAAMukO,SAAW,SAC3BvlO,SAASkzG,KAAKq+G,YAAYw3G,GAC1BtnU,EAAOsnU,EAAUpkG,YAAcokG,EAAUlsK,YACzC78J,SAASkzG,KAAK++G,YAAY82G,EAC3B,CAGH,OAAOtnU,CACR,C,qFCjBckvI,cAAmB,c,4HCG5Bq4L,EAA2B1hV,cAAiB,WAU/Cy/I,GAAQ,IATTyI,EASS,EATTA,SACAhH,EAQS,EARTA,UACAygM,EAOS,EAPTA,iBACAC,EAMS,EANTA,SACAznU,EAKS,EALTA,KACA0nU,EAIS,EAJTA,WACAl2T,EAGS,EAHTA,SACAm2T,EAES,EAFTA,WACGvmV,EACM,iBACT2sJ,EAAW5nJ,YAAmB4nJ,EAAU,SACxC,IAAM65L,EAAc,GAAH,OAAM75L,EAAN,WACX85L,EAAwC,kBAAfH,EAAP,UAAoC35L,EAApC,uBAA2D25L,GAA3D,UAA6E35L,EAA7E,eACxB,OAAoBS,cAAK,MAAD,YAAC,eAAYptJ,GAAb,IACtBkkJ,IAAKA,EACLyB,UAAWhiJ,IAAW6iV,EAAa7gM,EAAW/mI,GAAQ,GAAJ,OAAO+tI,EAAP,YAAmB/tI,GAAQynU,GAAY,GAAJ,OAAOG,EAAP,aAA+BD,GAAc,GAAJ,OAAOC,EAAP,eAAiCF,GAAcG,GAC7Kr2T,SAAuBg9H,cAAK,MAAO,CACjCzH,UAAWhiJ,IAAW,GAAD,OAAIgpJ,EAAJ,YAAwBy5L,GAC7Ch2T,SAAUA,MAGf,IACD+1T,EAAY94L,YAAc,cACX84L,QC3BAr4L,cAAmB,gB,oCCQ5B44L,EAA2BjiV,cAAiB,WAI/Cy/I,GAAQ,IAHTyI,EAGS,EAHTA,SACAhH,EAES,EAFTA,UACG3lJ,EACM,iBAET,OADA2sJ,EAAW5nJ,YAAmB4nJ,EAAU,gBACpBS,cAAK6pG,IAAD,YAAC,aACvB/yG,IAAKA,GACFlkJ,GAFmB,IAGtB2lJ,UAAWhiJ,IAAWgiJ,EAAWgH,KAEpC,IACD+5L,EAAYr5L,YAAc,cAC1Bq5L,EAAY34L,aAjBS,CACnBmpG,WAAY,QACZC,aAAa,GAgBAuvF,Q,QCrBTC,EAAgB3gH,YAAiB,MACxBl4E,cAAmB,cAAe,CAC/CX,UAAWw5L,I,0YCoBP54L,EAAe,CACnB0zB,MAAM,EACN4gB,UAAU,EACV06C,UAAU,EACV4a,WAAW,EACXC,cAAc,EACdC,cAAc,EACd/3N,WAAW,EACX8mT,SAAUT,GAIZ,SAAS/uF,EAAiBp3P,GACxB,OAAoBotJ,cAAKkqG,IAAD,YAAC,eAAWt3P,GAAZ,IACtByzM,QAAS,OAEZ,CAED,SAAS4jD,EAAmBr3P,GAC1B,OAAoBotJ,cAAKkqG,IAAD,YAAC,eAAWt3P,GAAZ,IACtByzM,QAAS,OAEZ,CAID,IAAM4iE,EAAqB5xQ,cAAiB,WAkCzCy/I,GAAQ,IAjCTyI,EAiCS,EAjCTA,SACAhH,EAgCS,EAhCTA,UACAxnI,EA+BS,EA/BTA,MACA0oU,EA8BS,EA9BTA,gBACAT,EA6BS,EA7BTA,iBACAh2T,EA4BS,EA5BTA,SACU02T,EA2BD,EA3BTF,SACmBpvF,EA0BV,EA1BT,mBACoBuvF,EAyBX,EAzBT,oBACcC,EAwBL,EAxBT,cAGAvlK,EAqBS,EArBTA,KACA3hJ,EAoBS,EApBTA,UACAuiK,EAmBS,EAnBTA,SACA06C,EAkBS,EAlBTA,SACA0a,EAiBS,EAjBTA,gBACAC,EAgBS,EAhBTA,OACArD,EAeS,EAfTA,OACAxwL,EAcS,EAdTA,UACA8zL,EAaS,EAbTA,UACAC,EAYS,EAZTA,aACAC,EAWS,EAXTA,aACAC,EAUS,EAVTA,oBACA1zB,EASS,EATTA,UACAK,EAQS,EARTA,OACAC,EAOS,EAPTA,UACAL,EAMS,EANTA,QACAC,EAKS,EALTA,WACAK,EAIS,EAJTA,SACAozB,EAGS,EAHTA,kBACSC,GAEA,EAFTlpI,QACG9uH,GACM,iBACT,GAA+B2pO,mBAAS,CAAC,GAAzC,qBAAOs9G,GAAP,MAAmBhpU,GAAnB,MACA,GAAoD0rN,oBAAS,GAA7D,qBAAOu9G,GAAP,MAA2BC,GAA3B,MACMC,GAAuBxqH,kBAAO,GAC9ByqH,GAAyBzqH,kBAAO,GAChC0qH,GAAgC1qH,iBAAO,MAC7C,GAA6B42B,cAA7B,qBAAOkJ,GAAP,MAAc6qF,GAAd,MACMvsG,GAAYhT,YAAc9jF,EAAKqjM,IAC/BhvF,GAAajrG,YAAiB+mG,GAC9B1zB,GAAQt7N,cACdsnJ,EAAW5nJ,YAAmB4nJ,EAAU,SACxC,IAAM6rG,GAAej6B,mBAAQ,iBAAO,CAClC81B,OAAQkE,GADmB,GAEzB,CAACA,KAEL,SAASivF,KACP,OAAIxvF,IACGgB,YAAiB,CACtBr4B,UAEH,CAED,SAAS8mH,GAAkBlkN,GACzB,GAAKywH,IAAL,CACA,IAAM0zF,EAAyBF,KAAkB3qF,oBAAsB,EACjE8qF,EAAqBpkN,EAAKmmI,aAAelrC,YAAcj7F,GAAMg5H,gBAAgBtiF,aACnFh8J,GAAS,CACP68K,aAAc4sJ,IAA2BC,EAAqBC,SAAqB92U,EACnF+pL,aAAc6sJ,GAA0BC,EAAqBC,SAAqB92U,GAL9D,CAOvB,CAED,IAAM+2U,GAAqBv6L,aAAiB,WACtCovG,IACF+qF,GAAkB/qF,GAAMuZ,OAE3B,IACD35B,aAAe,WACbzoL,YAAoBwpC,OAAQ,SAAUwqP,IACG,MAAzCP,GAA8B17O,SAA2B07O,GAA8B17O,SACxF,IAID,IAAMk8O,GAAwB,WAC5BV,GAAqBx7O,SAAU,CAChC,EAEKm8O,GAAgB,SAAAjxU,GAChBswU,GAAqBx7O,SAAW8wJ,IAAS5lP,EAAE7X,SAAWy9P,GAAMuZ,SAC9DoxE,GAAuBz7O,SAAU,GAGnCw7O,GAAqBx7O,SAAU,CAChC,EAEKo8O,GAA6B,WACjCb,IAAsB,GACtBG,GAA8B17O,QAAUivI,YAAc6hB,GAAMuZ,QAAQ,WAClEkxE,IAAsB,EACvB,GACF,EAUKnrH,GAAc,SAAAllN,GACD,WAAburL,EAKAglJ,GAAuBz7O,SAAW90F,EAAE7X,SAAW6X,EAAE+pN,cACnDwmH,GAAuBz7O,SAAU,EAIzB,MAAVyoJ,GAA0BA,IAnBM,SAAAv9O,GAC5BA,EAAE7X,SAAW6X,EAAE+pN,eAInBmnH,IACD,CAIGC,CAA0BnxU,EAU7B,EAwCK2hP,GAAiBhrG,uBAAY,SAAAirG,GAAa,OAAiBtrG,cAAK,MAAD,YAAC,eAAYsrG,GAAb,IACnE/yG,UAAWhiJ,IAAW,GAAD,OAAIgpJ,EAAJ,aAAyBorG,GAAoBj4N,GAAa,UADjC,GAE5C,CAACA,EAAWi4N,EAAmBprG,IAC7Bu7L,GAAiB,2BAAK/pU,GACvB8oU,IAILiB,GAAejzP,QAAU,QAoBzB,OAAoBm4D,cAAKgnG,IAAatvP,SAAU,CAC9CjE,MAAO23P,GACPpoO,SAAuBg9H,cAAKyrG,IAAW,CACrCp3E,KAAMA,EACNv9B,IAAK82F,GACL34C,SAAUA,EACVx+H,UAAWA,EACXk5K,UAAU,EAEV4a,UAAWA,EACXC,aAAcA,EACdC,aAAcA,EACdC,oBAAqBA,EACrBL,gBA/EwB,SAAA3gP,GACrBimO,GAAyB,WAAb16C,EAKN06C,GAAY0a,GACrBA,EAAgB3gP,IAHhBA,EAAE+hF,iBACFmvP,KAIH,EAuEGtwF,OAAQA,EACRrD,OAAQA,EACRhwB,QAvEgB,SAAC9gG,EAAM43H,GACrB53H,GACFkkN,GAAkBlkN,GAGT,MAAX8gG,GAA2BA,EAAQ9gG,EAAM43H,EAC1C,EAkEG72B,WA3DmB,SAAC/gG,EAAM43H,GACd,MAAd72B,GAA8BA,EAAW/gG,EAAM43H,GAE/CnnM,YAAiBqpC,OAAQ,SAAUwqP,GACpC,EAwDGzjH,UAAWA,EACXK,OAlEe,SAAAlhG,GACwB,MAAzC+jN,GAA8B17O,SAA2B07O,GAA8B17O,UAC7E,MAAV64H,GAA0BA,EAAOlhG,EAClC,EAgEGmhG,UAAWA,EACXC,SAzDiB,SAAAphG,GACfA,IAAMA,EAAKplH,MAAM82E,QAAU,IAEnB,MAAZ0vI,GAA4BA,EAASphG,GAErC1vE,YAAoBwpC,OAAQ,SAAUwqP,GACvC,EAoDG/4N,QAAS04N,KACT/8J,WAAY3qJ,EAAYs3N,OAAmBtmP,EAC3CmoP,mBAAoBn5N,EAAYu3N,OAAqBvmP,EACrD2nP,eAAgBA,GAChBE,aA5CiB,SAAAC,GAAW,OAAiBxrG,cAAK,MAAD,YAAC,aACpD8yE,KAAM,UACH04B,GAFgD,IAGnDz6O,MAAO+pU,GACPviM,UAAWhiJ,IAAWgiJ,EAAWgH,EAAUu6L,IAAsB,GAAJ,OAAOv6L,EAAP,YAC7DxI,QAASk+C,EAAW25B,QAAclrN,EAClCq3U,UAAWJ,GACX,aAAcf,EACd,kBAAmBxvF,EACnB,mBAAoBuvF,EACpB32T,SAAuBg9H,cAAK05L,EAAD,YAAC,eAAa9mV,IAAd,IACzBooV,YAAaN,GACbniM,UAAWkhM,EACXT,iBAAkBA,EAClBh2T,SAAUA,OAdkB,KA+CjC,IACDimP,EAAMhpH,YAAc,QACpBgpH,EAAMtoH,aAAeA,EACNxvJ,WAAO8nB,OAAOgwP,EAAO,CAClCxvC,KAAMwhH,EACNjnH,OAAQslH,EACR5/H,MAAOwhI,EACPvhH,OAAQwhH,EACRzB,OAAQX,EACRqC,oBAAqB,IACrBC,6BAA8B,K,qEC3Q5BvpV,EAAGwpV,E,yGCLD1kP,EAAoC,IAAI6/I,UAExC5/I,EAAoC,IAAI4/I,UAExC3/I,EAAsB,GAEtBC,EAAqB,IAAI0/I,O,GAERA,Q,mFDFjBxjO,EAAuB5b,gBAAoB,MAC3CkkV,EAAe,IAAI9kG,UACnB/zN,EAAW,IAAI+zN,UACfrlO,EAAQ,IAAIqlO,QAKZ+kG,EAA+BnkV,cAAiB,WAKnDy/I,GAAQ,IAJT9zH,EAIS,EAJTA,SACAxb,EAGS,EAHTA,MAGS,IAFT4sL,aAES,MAFD,IAEC,EADNxhM,EACM,iBACH6oV,EAAYpkV,SAAa,MAC/B,EAAwBA,WAAe,IAAvC,mBAAOmwP,EAAP,KAAak0F,EAAb,KACA,EAAqCrkV,YAAe,iBAAM,CAAC,IAAIoY,aAAqB,EAAR2kL,GAAY3kL,aAAa2lG,KAAK,CACxGpjH,OAAgB,EAARoiM,IACP,kBAAM,CAAN,IAAU3kL,aAAa2lG,KAAK,CAC7BpjH,OAAQoiM,IACP,kBAAM,CAAN,IAJiD,IAApD,yCAAQp0J,EAAR,KAAmBnD,EAAnB,KAA2BitS,EAA3B,KAKAzyU,mBAAsB,WACpBokV,EAAUj9O,QAAQh8E,SAASmc,UAAU9kB,MAAQtV,KAAKW,IAAIkvL,OAAiB1wL,IAAV8D,EAAsBA,EAAQ4sL,EAAOozD,EAAKx1P,OACxG,GAAE,CAACw1P,EAAMhgP,IACVnQ,aAAgB,WAEdokV,EAAUj9O,QAAQh8E,SAASC,WAAWC,SAAS9L,aAAc,CAC9D,IACDooO,aAAS,WAKP,IAJAy8F,EAAUj9O,QAAQ/uE,eAClBgsT,EAAUj9O,QAAQ3tE,oBAClB0qT,EAAa5qU,KAAK8qU,EAAUj9O,QAAQ/+E,aAAavR,SAE5Cpc,EAAI,EAAGA,EAAI01P,EAAKx1P,OAAQF,KAC3BwpV,EAAc9zF,EAAK11P,GAAG0sG,SACVm9I,iBAAiBj5N,GAAUrD,aAAak8T,GAEhD74T,EAASld,IAAMw6B,EAAc,EAAJluC,IAAU4wB,EAASjd,IAAMu6B,EAAc,EAAJluC,EAAQ,IAAM4wB,EAAS3L,IAAMipB,EAAc,EAAJluC,EAAQ,KAC7G4wB,EAAS8O,QAAQwO,EAAe,EAAJluC,GAC5B2pV,EAAUj9O,QAAQh8E,SAASC,WAAWC,SAAS9L,aAAc,EAC7D0kU,EAAYpsT,wBAAyB,GAGlCosT,EAAYlqU,MAAMiT,OAAOjT,EAAMtC,UAAU+tB,EAAY,EAAJ/qC,MACpDwpV,EAAYlqU,MAAMogB,QAAQqL,EAAY,EAAJ/qC,GAClC2pV,EAAUj9O,QAAQh8E,SAASC,WAAWrR,MAAMwF,aAAc,GAGxD0kU,EAAY9pU,OAASs4T,EAAMh4U,KAC7Bg4U,EAAM/gU,IAAI,CAACuyU,EAAY9pU,MAAO1f,GAC9B2pV,EAAUj9O,QAAQh8E,SAASC,WAAWjR,KAAKoF,aAAc,EAG9D,IACD,IAAM4mJ,EAASnmK,WAAc,WAC3B,IAAMmmK,EAAS,CAAC,EAEhB,IAAK1rK,EAAI,EAAGA,EAAI01P,EAAKx1P,OAAQF,IAAK,CAChC,IAAI6pV,EAEJxqV,OAAO8nB,OAAOukJ,EAA+C,OAAtCm+K,EAAkBn0F,EAAK11P,GAAG0sG,cAAmB,EAASm9O,EAAgB/kG,MAAMj2H,SACpG,CAED,OAAOxvH,OAAOD,KAAKssK,GAAQxiB,QAAO,SAAC70C,EAAMh0G,GAAP,mBAAC,eAAoBg0G,GAArB,kBAC/Bh0G,GAAM,SAAA6R,GACL,IAAI43U,EAAmBjlG,EAAMklG,EAEvB7qV,EAAoD,OAA1C4qV,EAAoBp0F,EAAKxjP,EAAMF,aAAkB,EAAS83U,EAAkBp9O,QAC5F,OAAiB,MAAVxtG,GAAmD,OAAxB2lP,EAAO3lP,EAAO4lP,QAA6D,OAAlCilG,EAAgBllG,EAAKh2H,eAAxE,EAAqGk7N,EAAc1pV,GAAd,2BAAwB6R,GAAxB,IAC3HhT,WAEH,IAR+B,GAS9B,CAAC,EACN,GAAE,CAACgyB,EAAUwkO,IACR04B,EAAM7oR,WAAc,iBAAO,CAC/BilP,UAAW,SAAAxlG,GAET,OADA4kM,GAAQ,SAAAl0F,GAAI,4BAAQA,GAAR,CAAc1wG,GAAd,IACL,kBAAM4kM,GAAQ,SAAAl0F,GAAI,OAAIA,EAAKl2P,QAAO,SAAAy2J,GAAI,OAAIA,EAAKvpD,UAAYs4C,EAAIt4C,OAAzB,GAApB,GAAlB,CACR,EAJuB,GAKtB,IACJ,OAAoBnnG,gBAAoB,SAAUouJ,YAAS,CACzDlwI,kBAAkB,EAClBuhI,IAAKikF,YAAU,CAACjkF,EAAK2kM,KACpBj+K,EAAQ5qK,GAAqByE,gBAAoB,iBAAkB,KAAmBA,gBAAoB,kBAAmB,CAC9HiqP,aAAc,CAAC,aAAc,YAC7BznO,MAAOmmB,EAAUhuC,OAAS,EAC1BiS,MAAO+7B,EACPxD,SAAU,EACVC,MAAOg6M,qBACQp/O,gBAAoB,kBAAmB,CACtDiqP,aAAc,CAAC,aAAc,SAC7BznO,MAAOgjB,EAAO7qC,OAAS,EACvBiS,MAAO44B,EACPL,SAAU,EACVC,MAAOg6M,qBACQp/O,gBAAoB,kBAAmB,CACtDiqP,aAAc,CAAC,aAAc,QAC7BznO,MAAOiwT,EAAM93U,OACbiS,MAAO6lU,EACPttS,SAAU,EACVC,MAAOg6M,sBACSp/O,gBAAoB4b,EAAQvb,SAAU,CACtDjE,MAAOysR,GACNl9P,GACJ,IAqBK84T,EAA4BzkV,cAAiB,WAOhDwyO,GAAiB,IANlB7mN,EAMkB,EANlBA,SACAgd,EAKkB,EALlBA,UACAnD,EAIkB,EAJlBA,OACAitS,EAGkB,EAHlBA,MAGkB,IAFlBpnS,cAEkB,MAFT,EAES,EADf9vC,EACe,iBACZmpV,EAAY1kV,SAAa,MAO/B,OANA2nP,aAAS,WACP,IAAMg9F,EAAOD,EAAUv9O,QAAQh8E,SAASC,WACxCu5T,EAAKt5T,SAAS9L,aAAc,EACxBimB,IAAQm/S,EAAK5qU,MAAMwF,aAAc,GACjCkzT,IAAOkS,EAAKxqU,KAAKoF,aAAc,EACpC,IACmBvf,gBAAoB,SAAUouJ,YAAS,CACzD3O,IAAKikF,YAAU,CAAC8O,EAAckyG,KAC7BnpV,GAAqByE,gBAAoB,iBAAkB,KAAmBA,gBAAoB,kBAAmB,CACtHiqP,aAAc,CAAC,aAAc,YAC7BznO,MAAOmmB,EAAUhuC,OAAS0wC,EAC1Bz+B,MAAO+7B,EACPxD,SAAUkG,EACVjG,MAAOg6M,qBACL55M,GAAuBxlC,gBAAoB,kBAAmB,CAChEiqP,aAAc,CAAC,aAAc,SAC7BznO,MAAOgjB,EAAO7qC,OAAS0wC,EACvBz+B,MAAO44B,EACPL,SAAU,EACVC,MAAOg6M,qBACLqzF,GAAsBzyU,gBAAoB,kBAAmB,CAC/DiqP,aAAc,CAAC,aAAc,QAC7BznO,MAAOiwT,EAAM93U,OAAS0wC,EACtBz+B,MAAO6lU,EACPttS,SAAU,EACVC,MAAOg6M,sBACJzzN,EACN,IACK61E,EAAsBxhG,cAAiB,SAACzE,EAAOi3O,GACnD,OAAIj3O,EAAMotC,qBAAqBvwB,aACTpY,gBAAoBykV,EAAcr2L,YAAS,CAAC,EAAG7yJ,EAAO,CACxEkkJ,IAAK+yF,KAEkBxyO,gBAAoBmkV,EAAiB/1L,YAAS,CAAC,EAAG7yJ,EAAO,CAClFkkJ,IAAK+yF,IAER,G","file":"static/js/2.2e54d5b0.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\n\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: { ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({ ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, { ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '138';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toUpperCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidian modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s % 2147483647;\n\n\t// Park-Miller algorithm\n\n\t_seed = _seed * 16807 % 2147483647;\n\n\treturn ( _seed - 1 ) / 2147483646;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nVector2.prototype.isVector2 = true;\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] > 65535 ) return true;\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex() {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t}\n\n\tgetHexString() {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle() {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nSource.prototype.isSource = true;\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype.isTexture = true;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nVector4.prototype.isVector4 = true;\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tthis.texture.image = Object.assign( {}, source.texture.image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nDataArrayTexture.prototype.isDataArrayTexture = true;\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nWebGLArrayRenderTarget.prototype.isWebGLArrayRenderTarget = true;\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nData3DTexture.prototype.isData3DTexture = true;\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nWebGL3DRenderTarget.prototype.isWebGL3DRenderTarget = true;\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nVector3.prototype.isVector3 = true;\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox3.prototype.isBox3 = true;\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nMatrix4.prototype.isMatrix4 = true;\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.fog = true;\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nMaterial.prototype.isMaterial = true;\n\nMaterial.fromType = function ( /*type*/ ) {\n\n\t// TODO: Behavior added in Materials.js\n\n\treturn null;\n\n};\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n * }\n */\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.x = this.getX( i );\n\t\t\t_vector$9.y = this.getY( i );\n\t\t\t_vector$9.z = this.getZ( i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\nBufferAttribute.prototype.isBufferAttribute = true;\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nBufferGeometry.prototype.isBufferGeometry = true;\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n}\n\nMesh.prototype.isMesh = true;\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: \n * }\n */\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nCamera.prototype.isCamera = true;\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nCubeTexture.prototype.isCubeTexture = true;\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.format = RGBAFormat; // see #18859\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nPlane.prototype.isPlane = true;\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tlightMapIrradiance *= PI;\\n\\t#endif\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec;\\n\\t\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\t\\treflectVec = reflect( - viewDir, normal );\\n\\t\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treflectVec = refract( - viewDir, normal, refractionRatio );\\n\\t\\t\\t#endif\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform vec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tfloat texelIndex = float( vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset );\\n\\t\\t\\tfloat y = floor( texelIndex / morphTargetsTextureSize.x );\\n\\t\\t\\tfloat x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tvec3 morphUV = vec3( ( x + 0.5 ) / morphTargetsTextureSize.x, y / morphTargetsTextureSize.y, morphTargetIndex );\\n\\t\\t\\treturn texture( morphTargetsTexture, morphUV );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\toutput_fragment: output_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // standard, physical\n\t\trefractionRatio: { value: 0.98 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t\tattributesNum ++;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize - 32;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tencoding: LinearEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.format = RGBAFormat; // using RGBA since RGB might be emulated (and is thus slower)\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tif ( morphColor.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyArrayTexture = new DataArrayTexture();\nconst empty3dTexture = new Data3DTexture();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tconst cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + addLineNumbers( gl.getShaderSource( shader ) );\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight / 32 + 1 ) + 3;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\n\t\tif ( cache.has( material ) === false ) {\n\n\t\t\tcache.set( material, new Set() );\n\n\t\t}\n\n\t\treturn cache.get( material );\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\n\t\tif ( cache.has( code ) === false ) {\n\n\t\t\tconst stage = new WebGLShaderStage();\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn cache.get( code );\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor() {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getMaxBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget === null ) ? renderer.outputEncoding : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding ),\n\t\t\tmap: !! material.map,\n\t\t\tmatcap: !! material.matcap,\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tdecodeVideoTexture: !! material.map && ( material.map.isVideoTexture === true ) && ( material.map.encoding === sRGBEncoding ),\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || !! material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: !! material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputEncoding );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputEncoding );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.vertexUvs );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.maxBones );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.map )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.lightMap )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.aoMap )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.emissiveMap )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.bumpMap )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.normalMap )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.objectSpaceNormalMap )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.tangentSpaceNormalMap )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.clearcoatMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.clearcoatRoughnessMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.clearcoatNormalMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.displacementMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.specularMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.roughnessMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.metalnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.gradientMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.alphaMap )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 24 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 25 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 26 );\n\t\tif ( parameters.vertexUvs )\n\t\t\t_programLayers.enable( 27 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 28 );\n\t\tif ( parameters.uvsVertexOnly )\n\t\t\t_programLayers.enable( 29 );\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 30 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.useVertexTexture )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.physicallyCorrectLights )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.depthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.specularIntensityMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.specularColorMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.transmissionMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.thicknessMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.sheenColorMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.sheenRoughnessMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 24 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\n/**\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.fog = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = 36064;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = 1029;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding, isVideoTexture = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 33319 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33328;\n\t\t\tif ( glType === 5131 ) internalFormat = 33327;\n\t\t\tif ( glType === 5121 ) internalFormat = 33323;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding && isVideoTexture === false ) ? 35907 : 32856;\n\t\t\tif ( glType === 32819 ) internalFormat = 32854;\n\t\t\tif ( glType === 32820 ) internalFormat = 32855;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 33327 || internalFormat === 33328 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.encoding );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataArrayTexture ) textureType = 35866;\n\t\tif ( texture.isData3DTexture ) textureType = 32879;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = 6402;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 35866, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 32879, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\t// Use the first texture for MRT so far\n\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[ 0 ] : renderTarget.texture;\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = 16384;\n\t\t\tconst invalidationArray = [ 36064 ];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\n\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t}\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : true;\n\n\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t}\n\n\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst encoding = texture.encoding;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( encoding !== LinearEncoding ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture encoding:', encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, encoding = null ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === RGBFormat ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228' );\n\t\t\treturn 6408;\n\n\t\t}\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nArrayCamera.prototype.isArrayCamera = true;\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nGroup.prototype.isGroup = true;\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps\t= false;\n\n\t}\n\n\n}\n\nDepthTexture.prototype.isDepthTexture = true;\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn referenceSpace;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33190;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: ( renderer.outputEncoding === sRGBEncoding ) ? 35907 : 32856,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 1.0 );\n\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign inputSources to available controllers\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t\t}\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst camera = cameras[ i ];\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst controller = controllers[ i ];\n\t\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. specular intensity map\n\t\t// 14. specular tint map\n\t\t// 15. transmission map\n\t\t// 16. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet _alpha;\n\n\tif ( parameters.context !== undefined ) {\n\n\t\t_alpha = _context.getContextAttributes().alpha;\n\n\t} else {\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false;\n\n\t}\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector2 = new Vector2();\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color ) bits |= 16384;\n\t\tif ( depth ) bits |= 256;\n\t\tif ( stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\t\tprogramCache.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: utils.convert( HalfFloatType ) !== null ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tsamples: ( isWebGL2 && _antialias === true ) ? 4 : 0\n\t\t\t} );\n\n\t\t}\n\n\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t} else {\n\n\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t}\n\n\t\t//\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\tuniforms.directionalShadowMap.needsUpdate = value;\n\t\tuniforms.directionalShadowMatrix.needsUpdate = value;\n\t\tuniforms.spotShadowMap.needsUpdate = value;\n\t\tuniforms.spotShadowMatrix.needsUpdate = value;\n\t\tuniforms.pointShadowMap.needsUpdate = value;\n\t\tuniforms.pointShadowMatrix.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTarget.useRenderToTexture = false;\n\t\t\t\t\trenderTarget.useRenderbuffer = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tif ( texture.isFramebufferTexture !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexSubImage2D( 3553, level, 0, 0, position.x, position.y, width, height );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t}\n\n}\n\nWebGLRenderer.prototype.isWebGLRenderer = true;\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nFogExp2.prototype.isFogExp2 = true;\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nFog.prototype.isFog = true;\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nScene.prototype.isScene = true;\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\n/**\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSprite.prototype.isSprite = true;\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nSkinnedMesh.prototype.isSkinnedMesh = true;\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nBone.prototype.isBone = true;\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nInstancedMesh.prototype.isInstancedMesh = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nLine.prototype.isLine = true;\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineSegments.prototype.isLineSegments = true;\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nLineLoop.prototype.isLineLoop = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * }\n */\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nPoints.prototype.isPoints = true;\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nVideoTexture.prototype.isVideoTexture = true;\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height, format ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.format = format;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nFramebufferTexture.prototype.isFramebufferTexture = true;\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nCanvasTexture.prototype.isCanvasTexture = true;\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineCurve.prototype.isLineCurve = true;\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve3';\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nSplineCurve.prototype.isSplineCurve = true;\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, - 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\n/**\n * parameters = {\n * color: \n * }\n */\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\treturn this;\n\n\t}\n\n}\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\n/**\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * ior: ,\n * reflectivity: ,\n *\n * sheen: ,\n * sheenColor: ,\n * sheenColorMap: new THREE.Texture( ),\n * sheenRoughness: ,\n * sheenRoughnessMap: new THREE.Texture( ),\n *\n * transmission: ,\n * transmissionMap: new THREE.Texture( ),\n *\n * thickness: ,\n * thicknessMap: new THREE.Texture( ),\n * attenuationDistance: ,\n * attenuationColor: ,\n *\n * specularIntensity: ,\n * specularIntensityMap: new THREE.Texture( ),\n * specularColor: ,\n * specularColorMap: new THREE.Texture( )\n * }\n */\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * flatShading: \n * }\n */\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\n/**\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * flatShading: \n * }\n */\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * }\n */\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * flatShading: \n * }\n */\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\n/**\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nconst materialLib = {\n\tShadowMaterial,\n\tSpriteMaterial,\n\tRawShaderMaterial,\n\tShaderMaterial,\n\tPointsMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMeshPhongMaterial,\n\tMeshToonMaterial,\n\tMeshNormalMaterial,\n\tMeshLambertMaterial,\n\tMeshDepthMaterial,\n\tMeshDistanceMaterial,\n\tMeshBasicMaterial,\n\tMeshMatcapMaterial,\n\tLineDashedMaterial,\n\tLineBasicMaterial,\n\tMaterial\n};\n\nMaterial.fromType = function ( type ) {\n\n\treturn new materialLib[ type ]();\n\n};\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n// ALIAS DEFINITIONS\n\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow Error( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}` );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLight.prototype.isLight = true;\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nHemisphereLight.prototype.isHemisphereLight = true;\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLightShadow.prototype.isSpotLightShadow = true;\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLight.prototype.isSpotLight = true;\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nPointLightShadow.prototype.isPointLightShadow = true;\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointLight.prototype.isPointLight = true;\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n}\n\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nDirectionalLight.prototype.isDirectionalLight = true;\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nAmbientLight.prototype.isAmbientLight = true;\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\nRectAreaLight.prototype.isRectAreaLight = true;\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLightProbe.prototype.isLightProbe = true;\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = Material.fromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array( 1 );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox2.prototype.isBox2 = true;\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nconst _floatView = new Float32Array( 1 );\nconst _int32View = new Int32Array( _floatView.buffer );\n\nclass DataUtils {\n\n\t// Converts float32 to float16 (stored as uint16 value).\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( val > 65504 ) {\n\n\t\t\tconsole.warn( 'THREE.DataUtils.toHalfFloat(): value exceeds 65504.' );\n\n\t\t\tval = 65504; // maximum representable value in float16\n\n\t\t}\n\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\n\n\t\t/* This method is faster than the OpenEXR implementation (very often\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\n\t\t* by James Tursa?s half-precision code. */\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst x = _int32View[ 0 ];\n\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\n\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\n\t\t\t* half, return signed zero. */\n\t\tif ( e < 103 ) return bits;\n\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n\t\tif ( e > 142 ) {\n\n\t\t\tbits |= 0x7c00;\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\t/* If exponent underflows but not too much, return a denormal */\n\t\tif ( e < 113 ) {\n\n\t\t\tm |= 0x0800;\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\n\t\t\t\t* to 1, which is OK. */\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\n\t\t\treturn bits;\n\n\t\t}\n\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\n\t\t\t* the exponent, which is OK. */\n\t\tbits += m & 1;\n\t\treturn bits;\n\n\t}\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials = [] ) {\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nPath.prototype.fromPoints = function ( points ) {\n\n\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\treturn this.setFromPoints( points );\n\n};\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nLoader.prototype.extractUrlBase = function ( url ) {\n\n\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\treturn LoaderUtils.extractUrlBase( url );\n\n};\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\n//\n\nBox2.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox2.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox2.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox2.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nBox3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox3.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox3.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox3.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\nBox3.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nEuler.prototype.toVector3 = function () {\n\n\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n};\n\n\n//\n\nSphere.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\n//\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\n//\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\n//\n\nMatrix3.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix3.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\treturn vector.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\treturn attribute.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nMatrix4.prototype.extractPosition = function ( m ) {\n\n\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\treturn this.copyPosition( m );\n\n};\n\nMatrix4.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix4.prototype.getPosition = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n};\n\nMatrix4.prototype.setRotationFromQuaternion = function ( q ) {\n\n\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\treturn this.makeRotationFromQuaternion( q );\n\n};\n\nMatrix4.prototype.multiplyToArray = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n};\n\nMatrix4.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector4 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateAxis = function ( v ) {\n\n\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\tv.transformDirection( this );\n\n};\n\nMatrix4.prototype.crossVector = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.translate = function () {\n\n\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateX = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateY = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateZ = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateByAxis = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n};\n\nMatrix4.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\treturn attribute.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.makeFrustum = function ( left, right, bottom, top, near, far ) {\n\n\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n};\n\nMatrix4.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\n//\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nQuaternion.prototype.inverse = function ( ) {\n\n\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\treturn this.invert();\n\n};\n\n//\n\nRay.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nRay.prototype.isIntersectionPlane = function ( plane ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\treturn this.intersectsPlane( plane );\n\n};\n\nRay.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\n//\n\nTriangle.prototype.area = function () {\n\n\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\treturn this.getArea();\n\n};\n\nTriangle.prototype.barycoordFromPoint = function ( point, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn this.getBarycoord( point, target );\n\n};\n\nTriangle.prototype.midpoint = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\treturn this.getMidpoint( target );\n\n};\n\nTriangle.prototypenormal = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn this.getNormal( target );\n\n};\n\nTriangle.prototype.plane = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\treturn this.getPlane( target );\n\n};\n\nTriangle.barycoordFromPoint = function ( point, a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n};\n\nTriangle.normal = function ( a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn Triangle.getNormal( a, b, c, target );\n\n};\n\n//\n\nShape.prototype.extractAllPoints = function ( divisions ) {\n\n\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\treturn this.extractPoints( divisions );\n\n};\n\nShape.prototype.extrude = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\treturn new ExtrudeGeometry( this, options );\n\n};\n\nShape.prototype.makeGeometry = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\treturn new ShapeGeometry( this, options );\n\n};\n\n//\n\nVector2.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector2.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector2.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector3.prototype.setEulerFromRotationMatrix = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n};\n\nVector3.prototype.setEulerFromQuaternion = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n};\n\nVector3.prototype.getPositionFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\treturn this.setFromMatrixPosition( m );\n\n};\n\nVector3.prototype.getScaleFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\treturn this.setFromMatrixScale( m );\n\n};\n\nVector3.prototype.getColumnFromMatrix = function ( index, matrix ) {\n\n\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\treturn this.setFromMatrixColumn( matrix, index );\n\n};\n\nVector3.prototype.applyProjection = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\treturn this.applyMatrix4( m );\n\n};\n\nVector3.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector3.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector3.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector4.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector4.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nObject3D.prototype.getChildByName = function ( name ) {\n\n\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\treturn this.getObjectByName( name );\n\n};\n\nObject3D.prototype.renderDepth = function () {\n\n\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n};\n\nObject3D.prototype.translate = function ( distance, axis ) {\n\n\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\treturn this.translateOnAxis( axis, distance );\n\n};\n\nObject3D.prototype.getWorldRotation = function () {\n\n\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n};\n\nObject3D.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\n\n};\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nMesh.prototype.setDrawMode = function () {\n\n\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n};\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( 'THREE.PerspectiveCamera.setLens is deprecated. ' +\n\t\t\t'Use .setFocalLength and .filmGauge for a photographic setup.' );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nBufferAttribute.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nBufferAttribute.prototype.copyIndicesArray = function ( /* indices */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n},\n\nBufferAttribute.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nBufferGeometry.prototype.addIndex = function ( index ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\tthis.setIndex( index );\n\n};\n\nBufferGeometry.prototype.addAttribute = function ( name, attribute ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t}\n\n\tif ( name === 'index' ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\tthis.setIndex( attribute );\n\n\t\treturn this;\n\n\t}\n\n\treturn this.setAttribute( name, attribute );\n\n};\n\nBufferGeometry.prototype.addDrawCall = function ( start, count, indexOffset ) {\n\n\tif ( indexOffset !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t}\n\n\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\tthis.addGroup( start, count );\n\n};\n\nBufferGeometry.prototype.clearDrawCalls = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\tthis.clearGroups();\n\n};\n\nBufferGeometry.prototype.computeOffsets = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n};\n\nBufferGeometry.prototype.removeAttribute = function ( name ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\treturn this.deleteAttribute( name );\n\n};\n\nBufferGeometry.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\n\n};\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nInterleavedBuffer.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nInterleavedBuffer.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nExtrudeGeometry.prototype.getArrays = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShapeList = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShape = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n};\n\n//\n\nScene.prototype.dispose = function () {\n\n\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n};\n\n//\n\nUniform.prototype.onUpdate = function () {\n\n\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\treturn this;\n\n};\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t},\n\n\tvertexTangents: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nWebGLRenderer.prototype.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\tthis.setRenderTarget( renderTarget );\n\tthis.clear( color, depth, stencil );\n\n};\n\nWebGLRenderer.prototype.animate = function ( callback ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\tthis.setAnimationLoop( callback );\n\n};\n\nWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\treturn this.getRenderTarget();\n\n};\n\nWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\treturn this.capabilities.getMaxAnisotropy();\n\n};\n\nWebGLRenderer.prototype.getPrecision = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\treturn this.capabilities.precision;\n\n};\n\nWebGLRenderer.prototype.resetGLState = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\treturn this.state.reset();\n\n};\n\nWebGLRenderer.prototype.supportsFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_float' );\n\n};\n\nWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_half_float' );\n\n};\n\nWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n};\n\nWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n};\n\nWebGLRenderer.prototype.supportsVertexTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\treturn this.capabilities.vertexTextures;\n\n};\n\nWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n};\n\nWebGLRenderer.prototype.enableScissorTest = function ( boolean ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\tthis.setScissorTest( boolean );\n\n};\n\nWebGLRenderer.prototype.initMaterial = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPrePlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPostPlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.updateShadowMap = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setFaceCulling = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.allocTextureUnit = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture2D = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTextureCube = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\treturn this.getActiveMipmapLevel();\n\n};\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\tgammaFactor: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\t\t\treturn 2;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tconst scope = this;\n\tconst audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\n//\n\nfunction ParametricGeometry() {\n\n\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction TextGeometry() {\n\n\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\treturn new BufferGeometry();\n\n}\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tconsole.error( 'THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.' );\n\tconst renderTarget = new WebGLRenderTarget( width, height, options );\n\trenderTarget.samples = 4;\n\treturn renderTarget;\n\n}\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tconsole.warn( 'THREE.DataTexture2DArray has been renamed to DataArrayTexture.' );\n\treturn new DataArrayTexture( data, width, height, depth );\n\n}\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\tconsole.warn( 'THREE.DataTexture3D has been renamed to Data3DTexture.' );\n\treturn new Data3DTexture( data, width, height, depth );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n ParamParseSegment extends string\n ? ParamParseSegment\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(\n branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{ ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, { ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst pascalCase = str => str[0].toUpperCase() + camelize(str).slice(1);\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix...`\nexport default function createWithBsPrefix(prefix, {\n displayName = pascalCase(prefix),\n Component,\n defaultProps\n} = {}) {\n const BsComponent = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Tag = Component || 'div',\n ...props\n }, ref) => {\n const resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Tag, {\n ref: ref,\n className: classNames(className, resolvedPrefix),\n ...props\n });\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","module.exports = require('./lib/axios');","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","import * as React from 'react'; // TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","const _excluded = [\"eventKey\", \"disabled\", \"onClick\", \"active\", \"as\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * Create a dropdown item. Returns a set of props for the dropdown item component\n * including an `onClick` handler that prevents selection when the item is disabled\n */\nexport function useDropdownItem({\n key,\n href,\n active,\n disabled,\n onClick\n}) {\n const onSelectCtx = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const {\n activeKey\n } = navContext || {};\n const eventKey = makeEventKey(key, href);\n const isActive = active == null && key != null ? makeEventKey(activeKey) === eventKey : active;\n const handleClick = useEventCallback(event => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(event);\n\n if (onSelectCtx && !event.isPropagationStopped()) {\n onSelectCtx(eventKey, event);\n }\n });\n return [{\n onClick: handleClick,\n 'aria-disabled': disabled || undefined,\n 'aria-selected': isActive,\n [dataAttr('dropdown-item')]: ''\n }, {\n isActive\n }];\n}\nconst DropdownItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n eventKey,\n disabled,\n onClick,\n active,\n as: Component = Button\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [dropdownItemProps] = useDropdownItem({\n key: eventKey,\n href: props.href,\n disabled,\n onClick,\n active\n });\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n ref: ref\n }, dropdownItemProps));\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport { useCallback, useRef, useEffect, useMemo, useContext } from 'react';\nimport * as React from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useEventListener from '@restart/hooks/useEventListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle, { isRoleMenu } from './DropdownToggle';\nimport DropdownItem from './DropdownItem';\nimport SelectableContext from './SelectableContext';\nimport { dataAttr } from './DataKey';\nimport useWindow from './useWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction useRefWithUpdate() {\n const forceUpdate = useForceUpdate();\n const ref = useRef(null);\n const attachRef = useCallback(element => {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown({\n defaultShow,\n show: rawShow,\n onSelect,\n onToggle: rawOnToggle,\n itemSelector = `* [${dataAttr('dropdown-item')}]`,\n focusFirstItemOnShow,\n placement = 'bottom-start',\n children\n}) {\n const window = useWindow();\n const [show, onToggle] = useUncontrolledProp(rawShow, defaultShow, rawOnToggle); // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n const [menuRef, setMenu] = useRefWithUpdate();\n const menuElement = menuRef.current;\n const [toggleRef, setToggle] = useRefWithUpdate();\n const toggleElement = toggleRef.current;\n const lastShow = usePrevious(show);\n const lastSourceEvent = useRef(null);\n const focusInDropdown = useRef(false);\n const onSelectCtx = useContext(SelectableContext);\n const toggle = useCallback((nextShow, event, source = event == null ? void 0 : event.type) => {\n onToggle(nextShow, {\n originalEvent: event,\n source\n });\n }, [onToggle]);\n const handleSelect = useEventCallback((key, event) => {\n onSelect == null ? void 0 : onSelect(key, event);\n toggle(false, event, 'select');\n\n if (!event.isPropagationStopped()) {\n onSelectCtx == null ? void 0 : onSelectCtx(key, event);\n }\n });\n const context = useMemo(() => ({\n toggle,\n placement,\n show,\n menuElement,\n toggleElement,\n setMenu,\n setToggle\n }), [toggle, placement, show, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(menuElement.ownerDocument.activeElement);\n }\n\n const focusToggle = useEventCallback(() => {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n const maybeFocusFirst = useEventCallback(() => {\n const type = lastSourceEvent.current;\n let focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && isRoleMenu(menuRef.current) ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n const first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(() => {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(() => {\n lastSourceEvent.current = null;\n });\n\n const getNextFocusedChild = (current, offset) => {\n if (!menuRef.current) return null;\n const items = qsa(menuRef.current, itemSelector);\n let index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useEventListener(useCallback(() => window.document, [window]), 'keydown', event => {\n var _menuRef$current, _toggleRef$current;\n\n const {\n key\n } = event;\n const target = event.target;\n const fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n const fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n const isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu || key === 'Escape' && target.type === 'search')) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (key === 'Tab' && (!menuRef.current || !show)) {\n return;\n }\n\n lastSourceEvent.current = event.type;\n const meta = {\n originalEvent: event,\n source: event.type\n };\n\n switch (key) {\n case 'ArrowUp':\n {\n const next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, meta);\n } else {\n const next = getNextFocusedChild(target, 1);\n if (next && next.focus) next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(target.ownerDocument, 'keyup', e => {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, meta);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n if (key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onToggle(false, meta);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: context,\n children: children\n })\n });\n}\n\nDropdown.displayName = 'Dropdown';\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nDropdown.Item = DropdownItem;\nexport default Dropdown;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useDropdownItem } from '@restart/ui/DropdownItem';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownItem = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n eventKey,\n disabled = false,\n onClick,\n active,\n as: Component = Anchor,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n const [dropdownItemProps, meta] = useDropdownItem({\n key: eventKey,\n href: props.href,\n disabled,\n onClick,\n active\n });\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...dropdownItemProps,\n ref: ref,\n className: classNames(className, prefix, meta.isActive && 'active', disabled && 'disabled')\n });\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport BaseDropdown from '@restart/ui/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu, { getDropdownMenuPlacement } from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nconst DropdownDivider = createWithBsPrefix('dropdown-divider', {\n Component: 'hr',\n defaultProps: {\n role: 'separator'\n }\n});\nconst DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nconst defaultProps = {\n navbar: false,\n align: 'start',\n autoClose: true\n};\nconst Dropdown = /*#__PURE__*/React.forwardRef((pProps, ref) => {\n const {\n bsPrefix,\n drop,\n show,\n className,\n align,\n onSelect,\n onToggle,\n focusFirstItemOnShow,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n navbar: _4,\n autoClose,\n ...props\n } = useUncontrolled(pProps, {\n show: 'onToggle'\n });\n const isInputGroup = useContext(InputGroupContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n const isRTL = useIsRTL();\n\n const isClosingPermitted = source => {\n // autoClose=false only permits close on button click\n if (autoClose === false) return source === 'click'; // autoClose=inside doesn't permit close on rootClose\n\n if (autoClose === 'inside') return source !== 'rootClose'; // autoClose=outside doesn't permit close on select\n\n if (autoClose === 'outside') return source !== 'select';\n return true;\n };\n\n const handleToggle = useEventCallback((nextShow, meta) => {\n if (meta.originalEvent.currentTarget === document && (meta.source !== 'keydown' || meta.originalEvent.key === 'Escape')) meta.source = 'rootClose';\n if (isClosingPermitted(meta.source)) onToggle == null ? void 0 : onToggle(nextShow, meta);\n });\n const alignEnd = align === 'end';\n const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n const contextValue = useMemo(() => ({\n align,\n drop,\n isRTL\n }), [align, drop, isRTL]);\n return /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(BaseDropdown, {\n placement: placement,\n show: show,\n onSelect: onSelect,\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: `.${prefix}-item:not(.disabled):not(:disabled)`,\n children: isInputGroup ? props.children : /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'end' && 'dropend', drop === 'start' && 'dropstart')\n })\n })\n });\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nexport default Object.assign(Dropdown, {\n Toggle: DropdownToggle,\n Menu: DropdownMenu,\n Item: DropdownItem,\n ItemText: DropdownItemText,\n Divider: DropdownDivider,\n Header: DropdownHeader\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n variant,\n as: Component = 'img',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(variant ? `${prefix}-${variant}` : prefix, className),\n ...props\n });\n});\nCardImg.displayName = 'CardImg';\nexport default CardImg;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardHeaderContext from './CardHeaderContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-header');\n const contextValue = useMemo(() => ({\n cardHeaderBsPrefix: prefix\n }), [prefix]);\n return /*#__PURE__*/_jsx(CardHeaderContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix)\n })\n });\n});\nCardHeader.displayName = 'CardHeader';\nexport default CardHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardImg from './CardImg';\nimport CardHeader from './CardHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst DivStyledAsH6 = divWithClassName('h6');\nconst CardBody = createWithBsPrefix('card-body');\nconst CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nconst CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nconst CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nconst CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nconst CardFooter = createWithBsPrefix('card-footer');\nconst CardImgOverlay = createWithBsPrefix('card-img-overlay');\nconst defaultProps = {\n body: false\n};\nconst Card = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n bg,\n text,\n border,\n body,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, bg && `bg-${bg}`, text && `text-${text}`, border && `border-${border}`),\n children: body ? /*#__PURE__*/_jsx(CardBody, {\n children: children\n }) : children\n });\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nexport default Object.assign(Card, {\n Img: CardImg,\n Title: CardTitle,\n Subtitle: CardSubtitle,\n Body: CardBody,\n Link: CardLink,\n Text: CardText,\n Header: CardHeader,\n Footer: CardFooter,\n ImgOverlay: CardImgOverlay\n});","import * as React from 'react'; // TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (a) a(value);\n if (b) b(value);\n };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return