{"version":3,"sources":["../webpack/bootstrap","../node_modules/react/index.js","packages/utilities/types.ts","../node_modules/underscore/modules/_setup.js","../node_modules/prop-types/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","packages/Redux/reduxState.ts","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-dom/index.js","packages/webchatEditor/constants/customizationEntries.ts","../node_modules/deepmerge/dist/cjs.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/webpack/buildin/global.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../src/setVersion.ts","../../src/index.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/prismjs/prism.js","../node_modules/object-assign/index.js","../node_modules/react-redux/node_modules/react-is/index.js","../../src/index.js","../node_modules/jsoneditor/dist/jsoneditor-minimalist.js","packages/Redux/reducers/AppReducer.ts","../node_modules/redux-devtools-extension/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-is/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/prismjs/components/prism-clike.js","../node_modules/prismjs/components/prism-javascript.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/simple-update-in/dist/simple-update-in.production.min.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/tslib/tslib.es6.js","../../src/Stylesheet.ts","../../src/StyleOptionsState.ts","../../src/extractStyleParts.ts","../../src/transforms/kebabRules.ts","../../src/getVendorSettings.ts","../../src/transforms/prefixRules.ts","../../src/transforms/provideUnits.ts","../../src/transforms/rtlifyRules.ts","../../src/styleToClassName.ts","../../src/mergeStyles.ts","../../src/keyframes.ts","../../src/motion/AnimationStyles.ts","../../src/classNames/AnimationClassNames.ts","../../src/fonts/FluentFonts.ts","../../src/utilities/buildClassMap.ts","../../src/styles/CommonStyles.ts","../../src/dom/setSSR.ts","../../src/dom/getWindow.ts","../../src/setFocusVisibility.ts","../../src/styles/zIndexes.ts","../../src/styles/getFocusStyle.ts","../../src/styles/hiddenContentStyle.ts","../../src/memoize.ts","../../src/styles/getGlobalClassNames.ts","../../src/GlobalSettings.ts","../../src/customizations/Customizations.ts","../../src/effects/FluentDepths.ts","../../src/colors/DefaultPalette.ts","../../src/effects/DefaultEffects.ts","../../src/fontFace.ts","../../src/fonts/createFontStyles.ts","../../src/language.ts","../../src/dom/getDocument.ts","../../src/sessionStorage.ts","../../src/fonts/DefaultFontStyles.ts","../../src/localStorage.ts","../../src/merge.ts","../../src/utilities/makeSemanticColors.ts","../../src/spacing/DefaultSpacing.ts","../../src/createTheme.ts","../../src/mergeThemes.ts","../../src/styles/theme.ts","../../src/styles/GeneralStyles.ts","../../src/styles/getPlaceholderStyles.ts","../../src/warn/warn.ts","../../src/utilities/icons.ts","../../src/concatStyleSets.ts","../../src/concatStyleSetsWithProps.ts","../../src/mergeStyleSets.ts","../../src/fabric-icons.ts","../../src/fabric-icons-0.ts","../../src/fabric-icons-1.ts","../../src/fabric-icons-2.ts","../../src/fabric-icons-3.ts","../../src/fabric-icons-4.ts","../../src/fabric-icons-5.ts","../../src/fabric-icons-6.ts","../../src/fabric-icons-7.ts","../../src/fabric-icons-8.ts","../../src/fabric-icons-9.ts","../../src/fabric-icons-10.ts","../../src/fabric-icons-11.ts","../../src/fabric-icons-12.ts","../../src/fabric-icons-13.ts","../../src/fabric-icons-14.ts","../../src/fabric-icons-15.ts","../../src/fabric-icons-16.ts","../../src/fabric-icons-17.ts","../../src/version.ts","../../src/iconAliases.ts","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","packages/Redux/actions.ts","../../src/rtl.ts","packages/webchatEditor/components/webChat.tsx","../../src/KeyCodes.ts","../../src/utilities.ts","../../src/slots.tsx","../../src/customizations/CustomizerContext.ts","../../src/createComponent.tsx","../../src/properties.ts","../../src/components/Stack/StackUtils.ts","../../src/components/Stack/Stack.styles.ts","../../src/components/Stack/StackItem/StackItem.styles.ts","../../src/components/Stack/StackItem/StackItem.tsx","../../src/components/Stack/Stack.tsx","../../src/customizations/useCustomizationSettings.ts","../../src/styled.tsx","../../src/classNamesFunction.ts","../../src/appendFunction.ts","../../src/extendComponent.ts","../../src/initializeComponentRef.ts","../../src/getId.ts","../../src/css.ts","../../src/array.ts","../../src/createMergedRef.ts","../../src/getParent.ts","../../src/getVirtualParent.ts","../../src/isVirtualElement.ts","../../src/findElementRecursive.ts","../../src/portalContainsElement.ts","../../src/setPortalAttribute.ts","../../src/Async.ts","../../src/object.ts","../../src/EventGroup.ts","../../src/BaseComponent.ts","../../src/keyboard.ts","../../src/useFocusRects.ts","../../src/components/Icon/Icon.types.ts","../../src/components/Image/Image.types.ts","../../src/aria.ts","../../src/components/Image/Image.base.tsx","../../src/components/Image/Image.styles.ts","../../src/components/Image/Image.tsx","../../src/components/Icon/Icon.styles.ts","../../src/components/Icon/FontIcon.tsx","../../src/components/Icon/Icon.base.tsx","../../src/components/Icon/Icon.tsx","../../src/components/Icon/ImageIcon.tsx","../../src/common/DirectionalHint.ts","../../src/renderFunction/composeRenderFunction.tsx","../../src/components/ContextualMenu/ContextualMenu.types.ts","../../src/components/FocusZone/FocusZone.types.ts","../../src/elementContains.ts","../../src/focus.ts","../../src/elementContainsAttribute.ts","../../src/scroll.ts","../../src/components/FocusZone/FocusZone.tsx","../../src/osDetector.ts","../../src/mobileDetector.ts","../../src/utilities/contextualMenu/contextualMenuUtility.ts","../../src/hoist.ts","../../src/utilities/decorators/BaseDecorator.ts","../../src/hoistStatics.ts","../../src/WindowProvider.tsx","../../src/utilities/decorators/withResponsiveMode.tsx","../../src/utilities/positioning/positioning.types.ts","../../src/dom/on.ts","../../src/Rectangle.ts","../../src/utilities/positioning/positioning.ts","../../src/components/Popup/Popup.tsx","../../src/components/Callout/CalloutContent.base.tsx","../../src/components/Callout/CalloutContent.styles.ts","../../src/components/Callout/CalloutContent.tsx","../../src/customizations/mergeSettings.ts","../../src/customizations/Customizer.tsx","../../src/customizations/mergeCustomizations.ts","../../src/components/Fabric/Fabric.base.tsx","../../src/components/Fabric/Fabric.styles.ts","../../src/components/Fabric/Fabric.tsx","../../src/setVirtualParent.ts","../../src/customizations/customizable.tsx","../../src/components/Layer/Layer.notification.ts","../../src/components/Layer/Layer.base.tsx","../../src/components/Layer/Layer.styles.ts","../../src/utilities/keytips/KeytipConstants.ts","../../src/components/Layer/Layer.tsx","../../src/components/Callout/Callout.tsx","../../src/components/ContextualMenu/ContextualMenuItem.base.tsx","../../src/components/Divider/VerticalDivider.classNames.ts","../../src/components/ContextualMenu/ContextualMenu.cnstyles.ts","../../src/components/ContextualMenu/ContextualMenu.classNames.ts","../../src/components/ContextualMenu/ContextualMenuItem.ts","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuItemWrapper.tsx","../../src/useConst.ts","../../src/utilities/keytips/KeytipManager.ts","../../src/utilities/keytips/KeytipUtils.ts","../../src/components/KeytipData/useKeytipData.ts","../../src/usePrevious.ts","../../src/components/KeytipData/KeytipData.tsx","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuAnchor.tsx","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuButton.tsx","../../src/components/Divider/VerticalDivider.base.tsx","../../src/components/Divider/VerticalDivider.tsx","../../src/components/Divider/VerticalDivider.styles.ts","../../src/components/ContextualMenu/ContextualMenuItemWrapper/ContextualMenuSplitButton.tsx","../../src/components/ContextualMenu/ContextualMenu.base.tsx","../../src/components/ContextualMenu/ContextualMenu.styles.ts","../../src/components/ContextualMenu/ContextualMenu.tsx","../../src/components/Button/BaseButton.classNames.ts","../../src/components/Button/SplitButton/SplitButton.classNames.ts","../../src/componentAs/composeComponentAs.tsx","../../src/components/Button/BaseButton.tsx","../../src/components/Pivot/Pivot.types.ts","../../src/components/Button/BaseButton.styles.ts","../../src/components/Button/ActionButton/ActionButton.styles.ts","../../src/components/Button/CommandButton/CommandButton.tsx","../../src/components/Button/ActionButton/ActionButton.tsx","../../src/components/Pivot/PivotItem.tsx","../../src/components/Pivot/Pivot.base.tsx","../../src/components/Pivot/Pivot.styles.ts","../../src/components/Pivot/Pivot.tsx","../../src/components/Label/Label.base.tsx","../../src/components/Label/Label.tsx","../../src/components/Label/Label.styles.ts","../../src/DelayedRender.tsx","../../src/ie11Detector.ts","../../src/components/TextField/TextField.base.tsx","../../src/controlled.ts","../../src/components/TextField/TextField.styles.tsx","../../src/components/TextField/TextField.ts","../../src/components/MessageBar/MessageBar.types.ts","../../src/components/Button/SplitButton/SplitButton.styles.ts","../../src/components/Button/IconButton/IconButton.styles.ts","../../src/components/Button/IconButton/IconButton.tsx","../../src/components/MessageBar/MessageBar.base.tsx","../../src/components/MessageBar/MessageBar.styles.ts","../../src/components/MessageBar/MessageBar.tsx","../../src/components/Button/DefaultButton/DefaultButton.styles.ts","../../src/components/Button/ButtonThemes.ts","../../src/components/Button/DefaultButton/DefaultButton.tsx","../../src/components/Button/PrimaryButton/PrimaryButton.tsx","../node_modules/deep-object-diff/mjs/utils.js","../node_modules/deep-object-diff/mjs/diff.js","packages/webchatEditor/components/webChatJsonEditor.tsx","packages/webchatEditor/components/categoryLink.tsx","packages/webchatEditor/components/defaultSelector.tsx","../../src/components/Checkbox/Checkbox.base.tsx","../../src/components/Checkbox/Checkbox.styles.ts","../../src/components/Checkbox/Checkbox.tsx","packages/webchatEditor/components/booleanSelector.tsx","../../src/math.ts","../../src/components/SpinButton/SpinButton.styles.ts","../../src/components/SpinButton/SpinButton.tsx","../../src/components/SpinButton/SpinButton.classNames.ts","../node_modules/underscore/modules/restArguments.js","../node_modules/underscore/modules/isObject.js","../node_modules/underscore/modules/isNull.js","../node_modules/underscore/modules/isUndefined.js","../node_modules/underscore/modules/isBoolean.js","../node_modules/underscore/modules/isElement.js","../node_modules/underscore/modules/_tagTester.js","../node_modules/underscore/modules/isString.js","../node_modules/underscore/modules/isNumber.js","../node_modules/underscore/modules/isDate.js","../node_modules/underscore/modules/isRegExp.js","../node_modules/underscore/modules/isError.js","../node_modules/underscore/modules/isSymbol.js","../node_modules/underscore/modules/isArrayBuffer.js","../node_modules/underscore/modules/isFunction.js","../node_modules/underscore/modules/_hasObjectTag.js","../node_modules/underscore/modules/_stringTagBug.js","../node_modules/underscore/modules/isDataView.js","../node_modules/underscore/modules/isArray.js","../node_modules/underscore/modules/_has.js","../node_modules/underscore/modules/isArguments.js","../node_modules/underscore/modules/isFinite.js","../node_modules/underscore/modules/isNaN.js","../node_modules/underscore/modules/constant.js","../node_modules/underscore/modules/_createSizePropertyCheck.js","../node_modules/underscore/modules/_shallowProperty.js","../node_modules/underscore/modules/_getByteLength.js","../node_modules/underscore/modules/_isBufferLike.js","../node_modules/underscore/modules/isTypedArray.js","../node_modules/underscore/modules/_getLength.js","../node_modules/underscore/modules/_collectNonEnumProps.js","../node_modules/underscore/modules/keys.js","../node_modules/underscore/modules/isEmpty.js","../node_modules/underscore/modules/isMatch.js","../node_modules/underscore/modules/underscore.js","../node_modules/underscore/modules/_toBufferView.js","../node_modules/underscore/modules/isEqual.js","../node_modules/underscore/modules/allKeys.js","../node_modules/underscore/modules/_methodFingerprint.js","../node_modules/underscore/modules/isMap.js","../node_modules/underscore/modules/isWeakMap.js","../node_modules/underscore/modules/isSet.js","../node_modules/underscore/modules/isWeakSet.js","../node_modules/underscore/modules/values.js","../node_modules/underscore/modules/pairs.js","../node_modules/underscore/modules/invert.js","../node_modules/underscore/modules/functions.js","../node_modules/underscore/modules/_createAssigner.js","../node_modules/underscore/modules/extend.js","../node_modules/underscore/modules/extendOwn.js","../node_modules/underscore/modules/defaults.js","../node_modules/underscore/modules/_baseCreate.js","../node_modules/underscore/modules/create.js","../node_modules/underscore/modules/clone.js","../node_modules/underscore/modules/tap.js","../node_modules/underscore/modules/toPath.js","../node_modules/underscore/modules/_toPath.js","../node_modules/underscore/modules/_deepGet.js","../node_modules/underscore/modules/get.js","../node_modules/underscore/modules/has.js","../node_modules/underscore/modules/identity.js","../node_modules/underscore/modules/matcher.js","../node_modules/underscore/modules/property.js","../node_modules/underscore/modules/_optimizeCb.js","../node_modules/underscore/modules/_baseIteratee.js","../node_modules/underscore/modules/iteratee.js","../node_modules/underscore/modules/_cb.js","../node_modules/underscore/modules/mapObject.js","../node_modules/underscore/modules/noop.js","../node_modules/underscore/modules/propertyOf.js","../node_modules/underscore/modules/times.js","../node_modules/underscore/modules/random.js","../node_modules/underscore/modules/now.js","../node_modules/underscore/modules/_createEscaper.js","../node_modules/underscore/modules/_escapeMap.js","../node_modules/underscore/modules/escape.js","../node_modules/underscore/modules/unescape.js","../node_modules/underscore/modules/_unescapeMap.js","../node_modules/underscore/modules/templateSettings.js","../node_modules/underscore/modules/template.js","../node_modules/underscore/modules/result.js","../node_modules/underscore/modules/uniqueId.js","../node_modules/underscore/modules/chain.js","../node_modules/underscore/modules/_executeBound.js","../node_modules/underscore/modules/partial.js","../node_modules/underscore/modules/bind.js","../node_modules/underscore/modules/_isArrayLike.js","../node_modules/underscore/modules/_flatten.js","../node_modules/underscore/modules/bindAll.js","../node_modules/underscore/modules/memoize.js","../node_modules/underscore/modules/delay.js","../node_modules/underscore/modules/defer.js","../node_modules/underscore/modules/throttle.js","../node_modules/underscore/modules/debounce.js","../node_modules/underscore/modules/wrap.js","../node_modules/underscore/modules/negate.js","../node_modules/underscore/modules/compose.js","../node_modules/underscore/modules/after.js","../node_modules/underscore/modules/before.js","../node_modules/underscore/modules/once.js","../node_modules/underscore/modules/findKey.js","../node_modules/underscore/modules/_createPredicateIndexFinder.js","../node_modules/underscore/modules/findIndex.js","../node_modules/underscore/modules/findLastIndex.js","../node_modules/underscore/modules/sortedIndex.js","../node_modules/underscore/modules/_createIndexFinder.js","../node_modules/underscore/modules/indexOf.js","../node_modules/underscore/modules/lastIndexOf.js","../node_modules/underscore/modules/find.js","../node_modules/underscore/modules/findWhere.js","../node_modules/underscore/modules/each.js","../node_modules/underscore/modules/map.js","../node_modules/underscore/modules/_createReduce.js","../node_modules/underscore/modules/reduce.js","../node_modules/underscore/modules/reduceRight.js","../node_modules/underscore/modules/filter.js","../node_modules/underscore/modules/reject.js","../node_modules/underscore/modules/every.js","../node_modules/underscore/modules/some.js","../node_modules/underscore/modules/contains.js","../node_modules/underscore/modules/invoke.js","../node_modules/underscore/modules/pluck.js","../node_modules/underscore/modules/where.js","../node_modules/underscore/modules/max.js","../node_modules/underscore/modules/min.js","../node_modules/underscore/modules/toArray.js","../node_modules/underscore/modules/sample.js","../node_modules/underscore/modules/shuffle.js","../node_modules/underscore/modules/sortBy.js","../node_modules/underscore/modules/_group.js","../node_modules/underscore/modules/groupBy.js","../node_modules/underscore/modules/indexBy.js","../node_modules/underscore/modules/countBy.js","../node_modules/underscore/modules/partition.js","../node_modules/underscore/modules/size.js","../node_modules/underscore/modules/_keyInObj.js","../node_modules/underscore/modules/pick.js","../node_modules/underscore/modules/omit.js","../node_modules/underscore/modules/initial.js","../node_modules/underscore/modules/first.js","../node_modules/underscore/modules/rest.js","../node_modules/underscore/modules/last.js","../node_modules/underscore/modules/compact.js","../node_modules/underscore/modules/flatten.js","../node_modules/underscore/modules/difference.js","../node_modules/underscore/modules/without.js","../node_modules/underscore/modules/uniq.js","../node_modules/underscore/modules/union.js","../node_modules/underscore/modules/intersection.js","../node_modules/underscore/modules/unzip.js","../node_modules/underscore/modules/zip.js","../node_modules/underscore/modules/object.js","../node_modules/underscore/modules/range.js","../node_modules/underscore/modules/chunk.js","../node_modules/underscore/modules/_chainResult.js","../node_modules/underscore/modules/mixin.js","../node_modules/underscore/modules/underscore-array-methods.js","../node_modules/underscore/modules/index-default.js","packages/webchatEditor/components/integerSelector.tsx","../../src/components/Slider/Slider.base.tsx","../../src/components/Slider/Slider.styles.ts","../../src/components/Slider/Slider.tsx","packages/webchatEditor/components/percentageSelector.tsx","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../src/utilities/color/consts.ts","../../src/utilities/color/hsv2rgb.ts","../../src/utilities/color/clamp.ts","../../src/utilities/color/rgb2hex.ts","../../src/utilities/color/getFullColorString.ts","../../src/utilities/color/hsv2hex.ts","../../src/utilities/color/_rgbaOrHexString.ts","../../src/utilities/color/updateSV.ts","../../src/components/ColorPicker/ColorRectangle/ColorRectangle.base.tsx","../../src/components/ColorPicker/ColorRectangle/ColorRectangle.styles.ts","../../src/components/ColorPicker/ColorRectangle/ColorRectangle.tsx","../../src/components/ColorPicker/ColorSlider/ColorSlider.base.tsx","../../src/components/ColorPicker/ColorSlider/ColorSlider.styles.ts","../../src/components/ColorPicker/ColorSlider/ColorSlider.tsx","../../src/utilities/color/cssColor.ts","../../src/utilities/color/hsl2rgb.ts","../../src/utilities/color/hsl2hsv.ts","../../src/utilities/color/getColorFromRGBA.ts","../../src/utilities/color/rgb2hsv.ts","../../src/utilities/color/getColorFromString.ts","../../src/utilities/color/updateA.ts","../../src/utilities/color/updateT.ts","../../src/components/ColorPicker/ColorPicker.base.tsx","../../src/components/ColorPicker/ColorPicker.styles.ts","../../src/components/ColorPicker/ColorPicker.tsx","../../src/utilities/color/updateH.ts","../../src/utilities/color/correctHex.ts","../../src/utilities/color/correctRGB.ts","../../src/useBoolean.ts","../../src/modalize.ts","../../src/components/FocusTrapZone/FocusTrapZone.tsx","../../src/components/Modal/Modal.styles.ts","../../src/components/Overlay/Overlay.base.tsx","../../src/components/Overlay/Overlay.styles.ts","../../src/components/Overlay/Overlay.tsx","../../src/utilities/DraggableZone/DraggableZone.styles.ts","../../src/utilities/DraggableZone/DraggableZone.tsx","../../src/components/Modal/Modal.base.tsx","../../src/components/Modal/Modal.ts","../../src/utilities/ButtonGrid/ButtonGrid.base.tsx","../../src/utilities/ButtonGrid/ButtonGrid.tsx","../../src/utilities/ButtonGrid/ButtonGrid.styles.ts","../../src/utilities/ButtonGrid/ButtonGridCell.tsx","../../src/components/SwatchColorPicker/ColorPickerGridCell.base.tsx","../../src/components/SwatchColorPicker/ColorPickerGridCell.styles.ts","../../src/components/SwatchColorPicker/ColorPickerGridCell.tsx","../../src/components/SwatchColorPicker/SwatchColorPicker.base.tsx","../../src/components/SwatchColorPicker/SwatchColorPicker.styles.ts","../../src/components/SwatchColorPicker/SwatchColorPicker.tsx","packages/webchatEditor/components/colorSelectorModal.tsx","../../src/useId.ts","packages/webchatEditor/constants/defaultStyleOptions.ts","../../src/utilities/selectableOption/SelectableOption.types.ts","packages/webchatEditor/components/colorSelector.tsx","packages/webchatEditor/components/rgbaSelector.tsx","packages/webchatEditor/constants/dropDownOptions.ts","../../src/components/Dropdown/utilities/DropdownSizePosCache.ts","../../src/components/Panel/Panel.types.ts","../../src/components/Panel/Panel.base.tsx","../../src/components/Panel/Panel.styles.ts","../../src/components/Panel/Panel.ts","../../src/utilities/selectableOption/SelectableOption.ts","../../src/components/Dropdown/Dropdown.base.tsx","../../src/safeRequestAnimationFrame.ts","../../src/components/Dropdown/Dropdown.styles.ts","../../src/components/Dropdown/Dropdown.ts","packages/webchatEditor/components/dropDownSelector.tsx","packages/webchatEditor/components/reactSelector.tsx","../../src/Editor.jsx","packages/webchatEditor/components/localizationSelector.tsx","packages/webchatEditor/components/WebChatOptionsSearch.tsx","packages/webchatEditor/components/customizationEntrySelector.tsx","packages/webchatEditor/components/customizationEntrySubCategory.tsx","packages/webchatEditor/components/configurationEntryViewer.tsx","packages/webchatEditor/components/webChatEditor.tsx","App.tsx","rootReducer.ts","index.tsx","packages/Redux/appStore.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","Category","SubCategory","UISelectorType","VERSION","root","self","global","Function","ArrayProto","Array","ObjProto","SymbolProto","push","slice","toString","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","apply","_objectSpread2","target","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","loadConfigurationValue","defaultWebchatOptions","mergeWith","merge","DruidWebchat_v2","webChatDefaultOptions","isMergeableObject","isPlainObject","initialAppState","activeCategory","General","customizationEntries","webchatOptions","jsonIsInvalid","displayColorModal","colorValue","initialized","_defineProperty","obj","configurable","writable","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","process","err","console","error","colorAndPaddingEntries","id","displayName","category","ColorAndPaddings","uiSelectorType","defaultSelector","containerName","colorSelector","rgbaSelector","integerSelector","fontEntries","Fonts","percentageSelector","dropDownSelector","avatarEntries","Avatar","subCategory","AvatarSettings","BotAvatar","UserAvatar","buttonsEntries","Buttons","Layout","Colors","Icons","multiline","chatBubbleEntries","ChatBubble","AvatarChatBubble","UserChatBubble","sendBoxEntries","SendBox","booleanSelector","ButtonColors","Border","suggestedActionsEntries","SuggestedActions","BorderDisabled","CarouselFlipper","Container","timestampAndStatusEntries","TimestampAndStatus","TimeStamp","Status","trascriptOverlayButtonsEntries","TranscriptOverlayButtons","ButtonDefault","ButtonOnFocus","ButtonOnHover","ScrollToEndButton","connectivityUIEntries","ConnectivityUI","SlowConnectionTimeOut","toastUIEntries","ToastUI","ToasterLayout","ToasterStyling","Error","Info","Success","Warn","miscellaneousEntries","Miscellaneous","layoutEntries","Common","ChatBox","Header","customCSSEntries","CustomCSS","customHandlers","Handlers","reactSelector","defaultValue","generalEntries","Cookies","localizationEntry","Localization","localizationSelector","searchEntry","Search","searchSelector","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","val","defaultArrayMerge","concat","map","element","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","array","reduce","prev","next","deepmerge_1","isObject","ctor","prot","undefined","constructor","_arrayLikeToArray","arr","len","arr2","g","this","e","window","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","done","Promise","then","_asyncToGenerator","fn","args","_unsupportedIterableToArray","minLen","from","test","packagesCache","_win","setVersion","packageName","packageVersion","packages","__packages__","formatProdErrorMessage","code","$$observable","observable","randomString","random","substring","split","join","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","proto","getPrototypeOf","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","index","indexOf","splice","dispatch","action","type","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","unsubscribe","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","state","hasChanged","nextState","_i","_key","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","_len","funcs","a","b","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","middleware","_objectSpread","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","Prism","_self","lang","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","util","encode","tokens","Token","content","alias","replace","objId","deepClone","visited","v","getLanguage","exec","className","toLowerCase","parentElement","setLanguage","language","RegExp","classList","add","currentScript","document","src","stack","scripts","getElementsByTagName","isActive","defaultActivation","no","contains","languages","plain","plaintext","text","txt","extend","redef","insertBefore","inside","before","insert","grammar","ret","token","newToken","old","DFS","callback","propertyType","plugins","highlightAll","async","highlightAllUnder","container","env","selector","hooks","run","elements","querySelectorAll","highlightElement","parent","nodeName","textContent","insertHighlightedCode","highlightedCode","innerHTML","hasAttribute","setAttribute","Worker","worker","filename","onmessage","evt","data","postMessage","JSON","stringify","immediateClose","highlight","tokenize","rest","tokenList","LinkedList","addAfter","head","matchGrammar","startNode","startPos","rematch","patterns","j","cause","patternObj","lookbehind","greedy","pattern","flags","match","currentNode","pos","tail","reach","str","removeCount","matchPattern","to","k","matchStr","after","removeFrom","removeRange","wrapped","nestedRematch","list","node","toArray","callbacks","matchedStr","lastIndex","lookbehindLength","newNode","count","tag","classes","attributes","aliases","addEventListener","message","parse","close","script","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","setTimeout","WorkerGlobalScope","markup","tagName","includedCdataInside","def","attrName","html","mathml","svg","xml","ssml","atom","rss","string","css","addInlined","addAttribute","clike","javascript","regex","js","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","SELECTOR","pre","appendChild","createElement","getAttribute","extension","autoloader","loadLanguages","success","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","loadFile","range","start","Number","comma","end","parseRange","lines","max","min","String","fileHighlight","logged","warn","propIsEnumerable","toObject","TypeError","assign","test1","test2","fromCharCode","test3","letter","shouldUseNative","React","isWindows","navigator","isMacLike","Editor","capture","_recordCurrentState","input","selectionStart","selectionEnd","_getLines","_recordChange","overwrite","offset","extras","timestamp","Date","last","re","previous","current","record","_updateInput","_applyEdits","_undoEdit","_redoEdit","_handleKeyDown","tabSize","insertSpaces","ignoreTabKey","onKeyDown","tabCharacter","linesBeforeCaret","startLine","endLine","nextValue","line","startLineText","updatedSelection","hasSelection","textBeforeCaret","indent","chars","_handleChange","_history","style","padding","textareaId","textareaClassName","autoFocus","disabled","form","maxLength","minLength","placeholder","readOnly","required","onClick","onFocus","onBlur","onKeyUp","preClassName","contentStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","highlighted","styles","ref","onChange","autoCapitalize","autoComplete","autoCorrect","spellCheck","data-gramm","aria-hidden","dangerouslySetInnerHTML","__html","children","cssText","history","session","Component","position","textAlign","boxSizing","overflow","textarea","top","left","height","width","resize","color","MozOsxFontSmoothing","WebkitFontSmoothing","WebkitTextFillColor","pointerEvents","editor","margin","border","background","display","fontFamily","fontSize","fontStyle","fontVariantLigatures","fontWeight","letterSpacing","lineHeight","textIndent","textRendering","textTransform","whiteSpace","wordBreak","overflowWrap","factory","__webpack_modules__","897","__unused_webpack_module","__webpack_exports__","_createAbsoluteAnchor__WEBPACK_IMPORTED_MODULE_0__","_util__WEBPACK_IMPORTED_MODULE_1__","_i18n__WEBPACK_IMPORTED_MODULE_2__","_defineProperties","props","ContextMenu","items","instance","Constructor","_classCallCheck","dom","me","anchor","eventListeners","selection","onClose","limitHeight","menu","focusButton","li","createMenuItems","domItems","item","separator","_li","domItem","_li2","button","title","click","onclick","event","preventDefault","hide","submenu","divIcon","buttonSubmenu","divText","createTextNode","buttonExpand","buttonExpandInner","submenuTitle","divExpand","_onExpandItem","focus","domSubItems","subItems","ul","icon","Iu","maxHeight","protoProps","staticProps","buttons","expandedItem","subItem","frame","ignoreParent","showBelow","parentNode","anchorRect","getBoundingClientRect","parentRect","frameRect","absoluteAnchor","w","bottom","topGap","anchorHeight","offsetHeight","maxPossibleMenuHeight","overflowY","getSelection","visibleMenu","destroy","removeChild","alreadyVisible","removeClassName","clientHeight","childsHeight","childNodes","addClassName","targetIndex","prevButton","nextButton","keynum","which","handled","setSelection","shiftKey","_getVisibleButtons","stopPropagation","436","ErrorTable","config","errorTableVisible","onToggleVisibility","onFocusLine","onChangeHeight","validationErrorsContainer","additionalErrorsIndication","validationErrorIcon","validationErrorCount","parseErrorIndication","errors","errorLocations","_this","validationErrors","table","tbody","dataPath","errLoc","find","loc","path","trEl","td1","td2","td34","colSpan","td3","td4","_pre","scrollHeight","onscroll","scrollTop","statusBar","validationErrorsCount","innerText","toggleTableVisibility","some","474","FocusTracker","_onClick","_onEvent","_onKeyUp","keyCode","focusFlag","firstEventFlag","removeEventListener","body","activeElement","161","__unused_webpack_exports","ace","VanillaPicker","treeModeMixins","textModeMixins","previewModeMixins","_require4","clear","getInnerText","getInternetExplorerVersion","tryRequireAjv","showTransformModal","showSortModal","Ajv","JSONEditor","json","ieVersion","onError","change","editable","onEditable","onChangeJSON","modes","option","VALID_OPTIONS","_create","DEBOUNCE_INTERVAL","setMode","set","setText","jsonText","getText","setName","getName","oldMode","asText","mixin","load","onModeChange","getMode","_onError","alert","setSchema","schema","schemaRefs","ajv","allErrors","verbose","schemaId","$data","addMetaSchema","removeSchema","addSchema","validateSchema","compile","validate","refresh","registerMode","prop","reserved","617","_ContextMenu__WEBPACK_IMPORTED_MODULE_0__","_i18n__WEBPACK_IMPORTED_MODULE_1__","ModeSwitcher","onSwitch","availableModes","tree","view","preview","currentMode","currentTitle","box","x","show","170","jsonWorkerDataUrl","setModuleUrl","864","define","acequire","isDark","cssClass","importCssString","589","jsonlint","parser","trace","yy","symbols_","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","hash","vstack","lstack","recovering","lexer","setInput","yylloc","yyloc","lex","preErrorSymbol","newState","expected","yyval","errStr","showPosition","first_line","last_line","first_column","last_column","EOF","_input","_more","_less","matched","conditionStack","ch","unput","more","less","pastInput","past","substr","upcomingInput","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","879","defaultConfig","defaultSelected","searchable","clearable","sortSelected","allowDeselect","closeOnScroll","nativeDropdown","taggable","tagPlaceholder","Events","on","func","_events","off","emit","each","f","el","hasClass","addClass","trim","removeClass","remove","closest","isInt","floor","debounce","h","clearTimeout","rect","abs","pageXOffset","y","pageYOffset","right","includes","truncate","firstChild","isset","appendItem","custom","createDocumentFragment","pagination","pages","pageIndex","customOption","childElementCount","navIndex","querySelector","idx","dismiss","opened","createItem","renderOption","opt","role","build","requiresPagination","customClass","mobileDevice","tabIndex","selected","label","multiple","dropdown","notice","tags","selectedValues","getSelectedProperties","selectedIndexes","selectClear","tagIndex","autocomplete","autocorrect","autocapitalize","spellcheck","tagSeperators","inputClear","inputContainer","first","group","optgroup","Option","setSelected","paginate","placeEl","setPlaceholder","disable","navigate","direction","prevEl","navigating","searching","lastElementChild","firstElementChild","optsRect","addTag","that","docFrag","customSelected","renderSelection","btn","$1","$2","Infinity","sort","ac","bc","ax","shift","by","nn","localeCompare","tg","removeTag","total","page","clearSearch","Selectr","rendered","originalType","originalIndex","originalOptionCount","userAgent","bindEvents","update","selectedIndex","getSelected","events","reset","changedTouches","toggle","indexes","changes","added","removed","getChangedOptions","select","deselect","search","setMessage","invert","paginateItems","selectedValue","setValue","replaceChild","maxSelections","removeAttribute","force","selIndex","valIndex","getValue","toJson","values","checkDuplicate","dupe","getOptionByIndex","getOptionByValue","removeAll","removeMessage","result","query","firstEl","blur","enable","serialise","serialize","rt","oh","wh","innerHeight","isInverted","188","DEFAULT_MODAL_ANCHOR","SIZE_LARGE","MAX_PREVIEW_CHARACTERS","PREVIEW_HISTORY_LIMIT","602","_util__WEBPACK_IMPORTED_MODULE_0__","createAbsoluteAnchor","onDestroy","destroyOnMouseOut","getRootNode","isOutside","isChildOf","destroyIfOutside","mousedown","mousewheel","destroyTimer","onmouseover","onmouseout","907","_defs","en","auto","appendText","appendTitle","appendSubmenuTitle","appendTitleAuto","ascending","ascendingTitle","actionsMenu","cannotParseFieldError","cannotParseValueError","collapseAll","compactTitle","descending","descendingTitle","drag","duplicateKey","duplicateText","duplicateTitle","duplicateField","duplicateFieldError","empty","expandAll","expandTitle","formatTitle","insertTitle","insertSub","ok","redo","removeText","removeTitle","removeField","repairTitle","searchTitle","searchNextResultTitle","searchPreviousResultTitle","selectNode","showAll","showMore","showMoreStatus","sortTitle","sortTitleShort","sortFieldLabel","sortDirectionLabel","sortFieldTitle","sortAscending","sortAscendingTitle","sortDescending","sortDescendingTitle","transform","transformTitle","transformTitleShort","extract","extractTitle","transformQueryTitle","transformWizardLabel","transformWizardFilter","transformWizardSortBy","transformWizardSelectFields","transformQueryLabel","transformPreviewLabel","typeTitle","openUrl","undo","validationCannotMove","autoType","objectType","arrayType","stringType","modeEditorTitle","modeCodeText","modeCodeTitle","modeFormText","modeFormTitle","modeTextText","modeTextTitle","modeTreeText","modeTreeTitle","modeViewText","modeViewTitle","modePreviewText","modePreviewTitle","examples","containsInvalidProperties","containsInvalidItems","es","tr","ja","de","ru","ko","_locales","userLang","userLanguage","_lang","langFound","setLanguages","_loop","translate","dataKey","56","jmespath__WEBPACK_IMPORTED_MODULE_0__","jmespath__WEBPACK_IMPORTED_MODULE_0___default","createQuery","queryOptions","projection","examplePath","field","parsePath","value1","parseString","relation","fields","parts","executeQuery","987","polyfill","CharacterData","DocumentType","findIndex","predicate","341","jsonrepair_min","jsonrepair_min_default","constants","History","calculateItemSize","limit","_calculateHistorySize","totalSize","canUndo","canRedo","i18n","jmespathQuery","textmode","previewmode_textmode","previewmode","mainMenuBar","enableSort","enableTransform","J","indentation","cC","m0","_debouncedValidate","clientWidth","focusTrackerConfig","frameFocusTracker","R","busy","busyContent","previewContent","previewText","buttonFormat","executeWithBusyMessage","format","buttonCompact","compact","_sort","_showSortModal","_showTransformModal","buttonRepair","repair","onHistoryChange","oW","_applyHistory","modeSwitcher","errorTable","Q","totalHeight","marginBottom","getErrorTable","fileSizeInfo","arrayInfo","getErrorCounter","getWarningIcon","getErrorIcon","_renderPreview","nodeValue","limitCharacters","WF","formatSize","onChangeText","modalAnchor","qD","sortedBy","sortedArray","_setAndFireOnChange","sortedObject","sortObjectKeys","onSort","_this$options","queryDescription","onTransform","updatedJson","_setTextAndFireOnChange","repairedText","_set","_pushHistory","_onChange","escapeUnicode","escapeUnicodeChars","_setText","EX","_renderErrors","210","picomodal__WEBPACK_IMPORTED_MODULE_0__","picomodal__WEBPACK_IMPORTED_MODULE_0___default","_util__WEBPACK_IMPORTED_MODULE_2__","paths","getChildPaths","selectedPath","selectedDirection","overlayClass","overlayStyles","backgroundColor","opacity","modalClass","afterCreate","modal","modalElem","setDirection","preprocessPath","onsubmit","afterClose","558","picoModal","picoModal_default","selectr","selectr_default","_typeof","iterator","stringifyValue","space","Boolean","childIndent","stringifyArray","toJSON","jsonUtils_hasOwnProperty","stringifyObject","repeat","times","res","_ref$queryDescription","elem","wizard","filterField","filterRelation","filterValue","sortField","sortOrder","selectFields","formattedPath","filterOption","sortOption","selectablePaths","selectFieldsPart","selectrFilterField","selectrFilterRelation","selectrSortField","selectrSortOrder","selectrSelectFields","generateQueryFromWizard","oninput","debouncedUpdatePreview","transformed","_space","output","stringifyPartial","tryCreateQuery","selectedField","956","ace_default","tryRequireThemeJsonEditor","_ace","theme","O","onTextSelectionChange","aceEditor","annotations","lastSchemaErrors","_validateAndCatch","onkeydown","_onKeyDown","getSession","getUndoManager","poweredBy","href","emptyNode","isReadOnly","editorDom","edit","aceSession","$blockScrolling","setTheme","setOptions","setShowPrintMargin","setFontSize","setTabSize","setUseSoftTabs","setUseWrapMode","originalSetAnnotations","setAnnotations","commands","bindKey","_onSelect","onchange","onselect","onmousedown","_onMouseDown","onblur","_onBlur","_updateHistoryButtons","isFocused","setTextSelection","row","column","curserInfoElements","lnLabel","lnVal","colLabel","colVal","countLabel","countVal","_this2","onChangeDisabled","undoManager","hasUndo","hasRedo","sortedJson","_sortedJson","_this3","_createQuery","_executeQuery","_updateCursorInfo","_emitSelectionChange","ctrlKey","col","selectionRange","getInputSelection","startIndex","endIndex","cursorInfo","updateDisplay","curserPos","getCursorPosition","selectedText","getSelectedText","_selectionChangedHandler","currentSelection","getTextSelection","_refreshAnnotations","errEnnotations","getAnnotations","annotation","updateText","clearHistory","_this4","_this5","schemaErrors","parseErrors","improveSchemaError","validationSequence","seq","onValidate","customValidateResults","isPromise","customValidationPathErrors","valid","isValidValidationError","stringifyPath","validateCustom","customValidationErrors","onValidationError","isValidationErrorChanged","errorPaths","acc","curr","getPositionForPath","setErrors","aceSelection","getRange","lead","getSelectionLead","endPos","getIndexForPosition","setSelectionRange","createTextRange","collapse","moveEnd","moveStart","rows","selectionScrollPos","_range","setRange","scrollToLine","38","defaultFilterFunction","contain","Highlighter","locked","setHighlight","_cancelUnhighlight","unhighlightTimer","naturalSort","naturalSort_default","js_showSortModal","js_showTransformModal","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","normalCompletion","didErr","step","_e3","Node_defineProperties","Node","params","Node_classCallCheck","expanded","setField","fieldEditable","setInternalValue","internalValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","visibleChilds","getMaxVisibleChilds","maxVisibleChilds","DEFAULT_MAX_VISIBLE_CHILDS","getPath","unshift","internalPath","getIndex","childs","findNodeByPath","childIndex","jsonPath","child","parents","errorChild","updateError","fieldError","valueError","tdError","tdValue","popupAnchor","createPopup","getPopupAnchor","buttonRect","popupWidth","popover","onfocus","findParents","expand","scrollTo","previousField","_getDomField","childValue","previousChilds","_getType","visible","Node_hasOwnProperty","childField","_child","findChildByProperty","newChild","_visible","hideChilds","append","recreateDom","updateDom","updateIndexes","previousValue","domAnchor","_detachFromDom","clearDom","_attachToDom","getField","_getDomValue","getInternalValue","getLevel","getNodePath","fieldInnerText","valueInnerText","cloneChilds","childClone","setParent","recurse","showChilds","nextTr","getAppendDom","nextSibling","iMax","_getNextTr","getDom","getShowMoreDom","resetVisibleChilds","onClassName","removeAllClassNames","addClasses","_updateCssClassName","recursivelyUpdateCssClassesOnNodes","_hasChilds","newTr","beforeNode","trTemp","AppendNode","lastVisibleNode","afterNode","results","searchField","searchValue","MAX_SEARCH_RESULTS","_updateDomField","_updateDomValue","expandPathToNode","offsetTop","elementName","focusElement","selectContentEditable","containsNode","removedNode","newType","oldType","deepEqual","_clearValueError","_unescapeHTML","_setValueError","oldSelection","getDomSelection","undoDiff","textDiff","startOffset","endOffset","newSelection","redoDiff","_onAction","getInternalPath","oldValue","newValue","parentPath","domValue","classNames","valueType","getType","valueIsUrl","isUrl","searchValueActive","checkbox","tdCheckbox","checked","getUTCMilliseconds","defaultOption","_updateEnumOptions","tdSelect","valueFieldHTML","visibility","colorPicker","isValidColor","tdColor","_deleteDomColor","_showTimestampTag","date","timestampFormat","toISOString","stripFormatting","_updateDomDefault","domField","tooltip","makeFieldTooltip","searchFieldActive","forceUnique","_clearFieldError","existingFieldNames","getFieldNames","findUniqueName","_setFieldError","inputElement","timestampTag","isTimestamp","_updateEditability","tdDrag","domDrag","tdMenu","tdField","_createDomTree","isFirst","domTree","marginLeft","fieldText","contentEditable","_findSchema","escapedField","_escapeHTML","_updateSchema","updateNodeName","escapedValue","_updateDomIndexes","_findEnum","borderCollapse","tdExpand","_createDomExpandButton","_createDomField","tdSeparator","_createDomValue","srcElement","expandable","highlighter","unhighlight","lock","showContextMenu","unlock","_onExpand","_showColorPicker","hasMoved","offsetX","pageX","getAbsoluteLeft","setEndOfContentEditable","onEvent","isField","isValue","prevNode","nextNode","nextDom","nextDom2","oldNextNode","oldParent","oldIndexRedo","newIndexRedo","oldParentPathRedo","newParentPathRedo","nodes","multiselection","altKey","selectedNodes","firstNode","lastNode","onDuplicate","onRemove","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","getNodeFromTarget","nextNode2","moveBefore","fieldNames","oldParentPath","newParentPath","oldIndex","newIndex","_previousNode","_findTopLevelNodes","nextElement","_nextElement","prevDom","previousSibling","isVisible","_nextNode","_nextNode2","onColorPicker","colorAnchor","excludeNode","beforePath","insertAfter","afterPath","changeType","triggerAction","oldChilds","order","nodeA","getNestedChild","nodeB","valueA","valueB","newChilds","lastTr","oldInternalValue","newInternalValue","_setRoot","ShowMoreNode","firstDom","lastDom","lastChild","templates","appendData","_onAppend","insertData","template","_onChangeType","appendSubmenu","addTemplates","insertSubmenu","onCreateMenu","pathArray","_this$editor$options","htmlEscaped","escapedText","_escapeJSON","escaped","charAt","onNodeName","size","recursivelyUpdateNodeName","editableDiv","onDragStart","draggedNode","offsetY","getAbsoluteTop","mousemove","onDrag","mouseup","onDragEnd","oldCursor","cursor","oldPaths","mouseX","level","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topPrev","topFirst","bottomNext","heightNext","mouseY","pageY","moved","trThis","topThis","heightThis","limitDragging","diffX","diffLevel","round","levelNext","isDescendantOf","startAutoScroll","sameParent","stopAutoScroll","composite","oneOf","anyOf","allOf","entry","topLevelSchema","currentSchema","nextPath","nextKey","possibleSchemas","subSchemas","_step","_iterator","$ref","_ref$match","startsWith","_ref$split","_ref$split2","schemaUrl","relativePath","referencedSchema","reference","auxNextPath","refPath","_step2","_iterator2","segment","properties","patternProperties","additionalProperties","firstIndex","blurNodes","_remove","clones","clonePaths","targetIsColorPicker","trAppend","tdAppend","domText","td","appendNodeFactory","showMoreButton","showAllButton","moreContents","moreText","_getShowMoreText","tdContents","moreTr","totalChilds","showMoreNodeFactory","NodeHistory_defineProperties","NodeHistory","findNode","findNodeByInternalPath","NodeHistory_classCallCheck","actions","editField","updateField","editValue","updateValue","appendNodes","insertBeforeNodes","insertAfterNodes","removeNodes","duplicateNodes","moveNodes","oldParentNode","newParentNode","oldBeforeNode","newBeforeNode","setDomSelection","SearchBox_defineProperties","SearchBox","SearchBox_classCallCheck","searchBox","timeout","delay","lastText","wrapper","divInput","refreshSearch","_onDelayedSearch","_onSearch","onkeyup","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","_clearDelay","forceSearch","activeResultIndex","resultCount","TreePath_defineProperties","TreePath","TreePath_classCallCheck","contentMenuClicked","pathObjs","_onShowAllClick","setPath","_onSegmentClick","pathObj","selectionCallback","_onContextMenuItemClick","contextMenuCallback","sepEl","pathEl","leftRectPos","offsetWidth","scrollLeft","showAllBtn","vanilla_picker","vanilla_picker_default","treemode","errorNodes","focusTarget","_setOptions","trigger","confirmKeys","caseSensitive","outline","spacer","leftSide","dropDown","setEndOfContenteditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","moveToElementText","calculateWidthForText","rs","onArrowDown","onArrowUp","onEnter","onTab","startFrom","elementHint","elementStyle","getComputedStyle","getPropertyValue","marginTop","zIndex","borderColor","cloneNode","keyDownHandler","onBlurHandler","repaint","hideDropDown","dropDownController","optionsLength","realInnerText","ix","onMouseOver","onMouseOut","onMouseDown","onmouseselection","__hint","vph","documentElement","distanceToTop","distanceToBottom","filterFn","filtered","divRow","move","createDropDownController","_token","_m","wasDropDownHidden","_createFrame","_createTable","navigationBar","onSelectionChange","showOnTop","getWindow","popup","onDone","hex","rgba","isEmpty","repairedJsonText","tryJsonRepair","repairJsonText","scrollableContent","treePath","selectedNode","_updateTreePath","_validateCustom","_renderValidationErrors","setError","parentPairs","pair","autoScrollStep","autoScrollTimer","setInterval","domName","setSelectionOffset","getSelectionOffset","animateCallback","animateTimeout","finalScrollTop","animate","diff","contentOuter","oncut","onpaste","onmouseup","onfocusin","onfocusout","_onUndo","_onRedo","navBar","onSectionSelected","_onTreePathSectionSelected","onContextMenuItemSelected","_onTreePathMenuItemSelected","_showAutoComplete","_startDragDistance","_updateDragDistance","hasParentNode","_onMultiSelectStart","pathNodes","childNode","expandTo","selectionObj","dragDistanceEvent","initialTarget","initialPageX","initialPageY","dragDistance","diffY","sqrt","_onMultiSelect","_onMultiSelectEnd","clearStartAndEnd","selectionChanged","startPath","endPath","startChild","endChild","jsonElementType","getOptions","metaKey","currentTarget","colgroupContent","selection1","selection2","_getNodeInstancesByRange","serializableNodes","744","49","791","javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1__","javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1___default","jsonrepair__WEBPACK_IMPORTED_MODULE_2__","jsonrepair__WEBPACK_IMPORTED_MODULE_2___default","_assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__","json_source_map__WEBPACK_IMPORTED_MODULE_4__","_i18n__WEBPACK_IMPORTED_MODULE_5__","jsonString","charCodeAt","isUrlRegex","ownerDocument","defaultView","divElement","attribute","specified","sel","getRangeAt","rangeCount","startContainer","endContainer","setStart","setEnd","buffer","_text","flush","trimmedValue","removeReturnsAndSurroundingWhitespace","hasChildNodes","prevChild","prevName","_ieVersion","rv","appName","ua","parseFloat","isFirefox","useCapture","attachEvent","detachEvent","parseProperty","parseIndex","keyword","enums","additionalProperty","validationError","insideRect","_margin","wait","immediate","context","later","callNow","oldText","newText","oldEnd","newEnd","normalizedValue","textInputRange","endRange","moveToBookmark","getBookmark","compareEndPoints","_positionForIndex","textTillIndex","lastIndexOf","columnCount","jsmap","pointerName","compileJSONPointer","pointer","pointers","getColorCSS","ele","locale","description","example","existingPropNames","strippedName","validName","includeObjects","pathsMap","getObjectChildPaths","rootPath","parsedPath","sign","aValue","bValue","sortedFields","lower","num","numFloat","valueOf","toFixed","KB","MB","GB","maxCharacterCount","currErr","prevErr","schemaPath","_ret","37","Picker","233","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","parseInt","yD","cLoc","numS","156","strictDeepEqual","second","keysSeen","key2","isFalse","trimLeft","TYPE_NUMBER","TYPE_STRING","TYPE_NAME_TABLE","0","basicTokens","operatorStartToken","skipChars","isNum","Lexer","stream","identifier","_current","_consumeUnquotedIdentifier","_consumeNumber","_consumeLBracket","_consumeQuotedIdentifier","_consumeRawStringLiteral","literal","_consumeLiteral","_consumeOperator","startingChar","literalString","_looksLikeJSON","ex","bindingPower","Parser","TreeInterpreter","runtime","Runtime","interpreter","_interpreter","functionTable","_func","_functionAbs","_signature","types","avg","_functionAvg","ceil","_functionCeil","_functionContains","_functionEndsWith","_functionFloor","_functionLength","_functionMap","_functionMax","_functionMerge","variadic","_functionMaxBy","sum","_functionSum","_functionStartsWith","_functionMin","_functionMinBy","_functionType","_functionKeys","_functionValues","_functionSort","_functionSortBy","_functionJoin","reverse","_functionReverse","_functionToArray","_functionToString","_functionToNumber","_functionNotNull","expression","_loadTokens","ast","_lookahead","_lookaheadToken","rbp","leftToken","_advance","nud","currentToken","led","number","Not","_parseProjectionRHS","Star","_parseMultiselectHash","Flatten","_parseIndexExpression","_projectIfSlice","_parseMultiselectList","Expref","_match","_errorToken","tokenName","Dot","_parseDotRHS","Pipe","Or","And","Filter","_parseComparator","tokenType","_parseSliceExpression","indexExpr","comparator","lookahead","expressions","keyToken","keyName","pairs","identifierTypes","visit","collected","sliceParams","computed","computeSliceParams","stop","base","objValues","finalResults","original","merged","resolvedArgs","callFunction","refNode","jmespathType","arrayLength","stepValueNegative","capSliceRange","actualValue","functionEntry","_validateArgs","signature","pluralized","currentSpec","actualType","typeMatched","_getTypeName","_typeMatches","typeIdentifier","actual","argValue","subtype","searchStr","suffix","originalStr","reversedStr","reversedArray","inputArray","mapped","exprefNode","maxElement","minElement","listToSum","joinChar","convertedValue","typeName","requiredType","decorated","exprA","exprB","maxRecord","resolvedArray","keyFunction","createKeyFunction","maxNumber","minRecord","minNumber","allowedTypes","msg","26","escapedChars","A_CODE","bigint","BigInt","_parse","ptr","topLevel","whitespace","char","getChar","read","backChar","itemPtr","wasUnexpectedToken","parseArray","getLoc","propPtr","escapeJsonPointer","mapLoc","parseObject","numStr","integer","getDigits","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseNumber","unexpectedToken","loop","getCharCode","checkUnexpectedEnd","digits","SyntaxError","validType","wsPos","wsColumn","wsLine","es6","Map","_stringify","_data","lvl","out","quoted","BYTES_PER_ELEMENT","stringifyMapSet","Set","itemLvl","propLvl","isSet","entries","VALID_TYPES","ESC_QUOTE","ESC_B","ESC_F","ESC_N","ESC_R","ESC_T","ESC_0","ESC_1","483","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","isNode","nodeType","watch","detail","unprevented","isHidden","Elem","buildOverlay","getOption","make","clazz","stylize","attr","anyAncestor","autoinc","buildClose","borderRadius","buildElemAccessor","builder","escapeKey","tabKey","keycode","afterCreateEvent","beforeShowEvent","afterShowEvent","beforeCloseEvent","afterCloseEvent","iface","built","shadowElem","closeElem","forceClose","returnIface","buildModal","overlay","isEnabled","canFocus","firstFocusable","focused","beforeShow","afterShow","focusable","lastFocusable","manageFocus","overlayElem","buildDom","opts","beforeClose","origOverflow","manageBodyOverflow","928","u","I","E","A","null","true","false","None","True","False","T","C","S","U","z","N","V","Z","q","__webpack_module_cache__","cachedModule","definition","simpleUpdateIn","updateStyleElement","styleElementName","parentObject","eval","mergedObj","customDruidStyleSet","druidWebChatDispatch","druidWebChatInstance","payload","variablePath","variableValue","handlerName","handler","withDecorate","styleOptions","userAvatarInitials","botAvatarInitials","updateRootStateVariable","stateVariableName","updateStyleOptions","WebChatReducer","propertyName","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","devToolsEnhancer","__REDUX_DEVTOOLS_EXTENSION__","noop","arrayLikeToArray","unsupportedIterableToArray","B","encodeURIComponent","D","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","G","H","isReactComponent","setState","forceUpdate","isPureReactComponent","K","L","__self","__source","M","_owner","P","keyPrefix","escape","W","aa","X","Y","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Children","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","isValidElement","lazy","_ctor","_status","_result","memo","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","version","da","ea","fa","ha","ia","la","ma","na","oa","ka","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","toUpperCase","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","pb","qb","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","xb","_valueTracker","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","Gb","Fb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","transition","Xb","Yb","Zb","$b","WeakMap","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","correspondingUseElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","has","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columns","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","md","setProperty","nd","menuitem","area","br","embed","hr","img","keygen","link","meta","param","track","wbr","od","pd","is","qd","rd","sd","ud","vd","xd","HTMLIFrameElement","contentWindow","location","yd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","getPooled","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","ge","he","ie","je","ke","documentMode","le","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","se","ve","te","ue","we","datetime","email","month","password","tel","time","url","week","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","relatedTarget","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","ef","ff","gf","hf","jf","anchorNode","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","27","32","33","34","35","36","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","sf","dataTransfer","tf","touches","targetTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","xg","yg","zg","ca","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","ph","qh","rh","sh","th","queue","uh","vh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","hi","pendingContext","ni","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","si","wasMultiple","createElementNS","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","wb","activeElementDetached","focusedElem","Tj","wd","compareDocumentPosition","vb","Uj","Vj","Wj","hidden","default","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","Lj","lk","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","performance","cancelAnimationFrame","port2","port1","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","setPrototypeOf","__proto__","awrap","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","any","arrayOf","instanceOf","objectOf","oneOfType","shape","exact","checkPropTypes","PropTypes","t0","t1","t2","t3","t4","t5","catch","updateInAsync","t6","t7","t8","t9","t10","t11","t12","t13","_createClass","_setPrototypeOf","_inherits","subClass","superClass","_getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","Super","NewTarget","extendStatics","__extends","__","__assign","__rest","__decorate","decorators","desc","decorate","__spreadArrays","il","jl","_stylesheet","InjectionMode","REUSE_STYLE_NODE","_global","_rtl","_rules","_preservedRules","_rulesToInsert","_counter","_keyToClassName","_onResetCallbacks","_classNameToArgs","_config","injectionMode","defaultPrefix","namespace","cspSettings","classNameCache","getInstance","_lastStyleElement","fabricConfig","FabricConfig","Stylesheet","mergeStyles","setConfig","onReset","getClassName","cacheClassName","classNameFromKey","getClassNameCache","argsFromClassName","insertedRulesFromClassName","insertRule","rule","preserve","_getStyleElement","sheet","cssRules","onInsertRule","getRules","includePreservedRules","resetKeys","_styleElement","_createStyleElement","styleElement","nonce","nextElementSibling","placeholderStyleTag","_findPlaceholderStyleTag","extractStyleParts","objects","stylesheet","_processArgs","argsList","translatedArgs","setRTL","isRTL","getRTL","getStyleOptions","rtl","_vendorSettings","kebabRules","rulePairs","autoPrefixNames","prefixRules","vendorSettings","doc","nav","isWebkit","isMoz","isOpera","isMs","getVendorSettings","NON_PIXEL_NUMBER_PROPS","provideUnits","isNonPixelProp","isVariableOrPrefixed","unit","LEFT","RIGHT","NAME_REPLACEMENTS","VALUE_REPLACEMENTS","rtlifyRules","flipQuad","partIndex","numberVal","negateNum","rootStyle","globalSelectorRegExp","expandSelector","newSelector","currentSelector","extractSelector","__order","extractRules","selectorWithGlobals","replacementInfo","findGlobal","matchIndex","matchEndIndex","replacement","expandCommaSeparatedGlobals","separatedSelector","currentRules","expandedRules","propValue","selectors","expandQuads","getKeyForRules","serialized","hasProps","rulesForSelector","repeatString","serializeRuleEntries","ruleEntries","allEntries","styleToRegistration","registration","rulesToInsert","applyRegistration","specificityMultiplier","processedRule","mergeCss","styleToClassName","keyframes","timeline","rulesArray","EASING_FUNCTION_1","EASING_FUNCTION_2","FADE_IN","FADE_OUT","SLIDE_RIGHT_IN10","_createSlideInX","SLIDE_RIGHT_IN20","SLIDE_RIGHT_IN40","SLIDE_RIGHT_IN400","SLIDE_LEFT_IN10","SLIDE_LEFT_IN20","SLIDE_LEFT_IN40","SLIDE_LEFT_IN400","SLIDE_UP_IN10","_createSlideInY","SLIDE_UP_IN20","SLIDE_DOWN_IN10","SLIDE_DOWN_IN20","SLIDE_RIGHT_OUT10","_createSlideOutX","SLIDE_RIGHT_OUT20","SLIDE_RIGHT_OUT40","SLIDE_RIGHT_OUT400","SLIDE_LEFT_OUT10","SLIDE_LEFT_OUT20","SLIDE_LEFT_OUT40","SLIDE_LEFT_OUT400","SLIDE_UP_OUT10","_createSlideOutY","SLIDE_UP_OUT20","SLIDE_DOWN_OUT10","SLIDE_DOWN_OUT20","SCALE_UP100","SCALE_DOWN98","SCALE_DOWN100","SCALE_UP103","ROTATE90","ROTATE_N90","AnimationVariables","_createAnimation","animationDuration","animationTimingFunction","animationFillMode","fromX","fromY","toX","toY","LocalizedFontNames","LocalizedFontFamilies","FontSizes","FontWeights","IconFontSizes","AnimationClassNames","styleName","buildClassMap","slideRightIn10","slideRightIn20","slideRightIn40","slideRightIn400","slideLeftIn10","slideLeftIn20","slideLeftIn40","slideLeftIn400","slideUpIn10","slideUpIn20","slideDownIn10","slideDownIn20","slideRightOut10","slideRightOut20","slideRightOut40","slideRightOut400","slideLeftOut10","slideLeftOut20","slideLeftOut40","slideLeftOut400","slideUpOut10","slideUpOut20","slideDownOut10","slideDownOut20","scaleUpIn100","scaleDownIn100","scaleUpOut103","scaleDownOut98","fadeIn100","fadeIn200","fadeIn400","fadeIn500","fadeOut100","fadeOut200","fadeOut400","fadeOut500","rotate90deg","rotateN90deg","Arabic","Cyrillic","EastEuropean","Greek","Hebrew","Thai","Vietnamese","WestEuropean","Selawik","Armenian","Georgian","ChineseSimplified","ChineseTraditional","Hindi","Japanese","Korean","size10","size12","size14","size16","size18","size20","size24","size28","size32","size42","size68","mini","xSmall","small","smallPlus","medium","mediumPlus","large","xLarge","xLargePlus","xxLarge","xxLargePlus","superLarge","mega","light","semilight","regular","semibold","bold","HighContrastSelector","getScreenSelector","_isSSR","_window","rootElement","ZIndexes","IsFocusVisibleClassName","setFocusVisibility","enabled","win","getFocusStyle","insetOrOptions","highContrastStyle","outlineColor","isFocusedOnly","_getFocusStyleInternal","inset","FocusStyle","Nav","ScrollablePane","Coachmark","Layer","KeytipLayer","borderType","borderPosition","isBorderBottom","hiddenContentStyle","_initializedStylesheetResets","_resetCounter","_emptyObject","_dictionary","_weakMap","resetMemoizations","memoizeFunction","maxCacheSize","ignoreNullOrUndefinedResult","rootNode","cacheSize","localResetCounter","_createNode","_normalizeArg","createMemoizer","cache","_getGlobalClassNames","disableGlobalClassNames","styleSheet","getGlobalClassNames","globalSettings","_getGlobalSettings","changeDescription","addChangeListener","__id__","_getCallbacks","removeChangeListener","globalObj","Depths","NO_CUSTOMIZATIONS","settings","scopedSettings","inCustomizerContext","_allSettings","GlobalSettings","applySettings","Customizations","_raiseChange","applyScopedSettings","scopeName","getSettings","localSettings","localScopedSettings","globalScopedSettings","applyBatchedUpdates","suppressUpdate","_suppressUpdates","observe","unobserve","DefaultPalette","themeDarker","themeDark","themeDarkAlt","themePrimary","themeSecondary","themeTertiary","themeLight","themeLighter","themeLighterAlt","black","blackTranslucent40","neutralDark","neutralPrimary","neutralPrimaryAlt","neutralSecondary","neutralSecondaryAlt","neutralTertiary","neutralTertiaryAlt","neutralQuaternary","neutralQuaternaryAlt","neutralLight","neutralLighter","neutralLighterAlt","accent","white","whiteTranslucent40","yellowDark","yellow","yellowLight","orange","orangeLight","orangeLighter","redDark","red","magentaDark","magenta","magentaLight","purpleDark","purple","purpleLight","blueDark","blueMid","blue","blueLight","tealDark","teal","tealLight","greenDark","green","greenLight","depth0","depth4","depth8","depth16","depth64","DefaultEffects","elevation4","elevation8","elevation16","elevation64","roundedCorner2","roundedCorner4","roundedCorner6","fontFace","font","_language","defaultFontFamily","LanguageToFontMap","ar","cs","et","hu","lt","lv","pl","sk","uk","hy","_createFont","weight","getDocument","sessionStorage","getItem","setItem","DefaultFontStyles","localeCode","fontFamilyWithFallback","_getLocalizedFontFamily","tiny","createFontStyles","persistenceType","savedLanguage","localStorage","_registerFontFace","localFontName","localFontSrc","fontDisplay","_registerFontFaceSet","baseUrl","cdnFolder","cdnFontName","urlBase","_merge","circularReferences","isCircularReference","makeSemanticColors","depComments","dep","listTextColor","listText","menuItemBackgroundChecked","warningHighlight","warningText","messageText","successText","_fixDeprecatedSlots","getSemanticColors","primaryButtonBorder","errorText","messageLink","messageLinkHovered","infoIcon","errorIcon","blockingIcon","warningIcon","severeWarningIcon","successIcon","infoBackground","errorBackground","blockingBackground","warningBackground","severeWarningBackground","successBackground","bodyBackground","bodyFrameBackground","accentButtonText","buttonBackground","primaryButtonText","primaryButtonTextHovered","primaryButtonTextPressed","inputBackground","inputForegroundChecked","listBackground","menuBackground","cardStandoutBackground","bodyTextChecked","buttonTextCheckedHovered","primaryButtonBackground","inputBackgroundChecked","inputIcon","inputFocusBorderAlt","menuIcon","menuHeader","accentButtonBackground","primaryButtonBackgroundPressed","inputBackgroundCheckedHovered","inputIconHovered","linkHovered","primaryButtonBackgroundHovered","inputPlaceholderBackgroundChecked","bodyBackgroundChecked","bodyFrameDivider","bodyDivider","variantBorder","buttonBackgroundCheckedHovered","buttonBackgroundPressed","listItemBackgroundChecked","listHeaderBackgroundPressed","menuItemBackgroundPressed","bodyBackgroundHovered","buttonBackgroundHovered","buttonBackgroundDisabled","buttonBorderDisabled","primaryButtonBackgroundDisabled","disabledBackground","listItemBackgroundHovered","listHeaderBackgroundHovered","menuItemBackgroundHovered","primaryButtonTextDisabled","disabledSubtext","listItemBackgroundCheckedHovered","disabledBodyText","variantBorderHovered","buttonTextDisabled","inputIconDisabled","disabledText","bodyText","actionLink","buttonText","inputBorderHovered","inputText","menuItemText","bodyStandoutBackground","defaultStateBackground","actionLinkHovered","buttonTextHovered","buttonTextChecked","buttonTextPressed","inputTextHovered","menuItemTextHovered","bodySubtext","focusBorder","inputBorder","smallInputBorder","inputPlaceholderText","buttonBorder","disabledBodySubtext","disabledBorder","buttonBackgroundChecked","menuDivider","cardShadow","cardShadowHovered","fontUrl","registerDefaultFontFaces","fontBaseUrl","_getFontBaseUrl","DefaultSpacing","s2","s1","l1","l2","createTheme","partialTheme","mergedTheme","semanticColors","palette","defaultFontStyle","fonts","stylesheets","mergeThemes","spacing","_theme","_onThemeChangeCallbacks","initializeThemeInCustomizations","legacyTheme","fontName","_loadFonts","loadTheme","getTheme","normalize","boxShadow","getPlaceholderStyles","_iconSettings","__options","disableWarnings","warnOnMissingIcons","__remapped","subset","normalizeIconName","registerIcons","iconSubset","isRegistered","icons","iconName","normalizedIconName","_warnDuplicateIcon","registerIconAlias","mappedToName","_missingIcons","_missingIconsTimer","concatStyleSets","styleSets","subComponentStyles","mergedSet","workingSubcomponentStyles","currentSet","currentComponentStyles","subCompProp","mergedValue","currentValue","mergedSubStyles","styleProps","styleFunctionOrObject","concatStyleSetsWithProps","allStyles","mergeStyleSets","mergeCssSets","classNameSet","concatenatedStyleSet","registrations","styleSetArea","initializeIcons","speak","GlobalNavButton","ChevronDown","ChevronUp","Edit","Add","Cancel","More","Settings","Mail","Share","BlockedSite","FavoriteStar","FavoriteStarFill","CheckMark","Delete","ChevronLeft","ChevronRight","Calendar","Megaphone","Undo","Flag","Page","Pinned","View","Clear","Download","Upload","Folder","Sort","AlignRight","AlignLeft","Tag","AddFriend","SortLines","List","CircleRing","Heart","HeartFill","Tiles","Embed","Glimmer","Ascending","Descending","SortUp","SortDown","SyncToPC","LargeGrid","SkypeCheck","SkypeClock","SkypeMinus","ClearFilter","Flow","StatusCircleCheckmark","MoreVertical","ReactReduxContext","batch","createListenerCollection","notify","nullListeners","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","contextValue","previousState","_extends","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","hoistStatics","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","newBatch","actionTypes","genericSingleAction","actionName","_isRTL","WebChatContainerClassName","WebChatPaneClassName","connect","UPDATE_STYLE_OPTIONS","defaultOptions","botId","UI","autoExpandEnabled","fullScreenMode","mergedOptions","init","restylingsEnabledModified","initialIsLoading","customGeneratorFunction","take","put","currentStyleOptions","KeyCodes","savedRTL","persistSetting","getRTLSafeKeyCode","withSlots","slotType","isSlot","DefaultComponent","defaultProp","componentProps","userProps","userSlotOptions","defaultStyles","finalProps","allProps","_constructFinalProps","slotProps","transformedProps","_translateShorthand","UserComponent","defaultFactory","getSlots","slots","mixedProps","slot","_renderSlot","_defaultStyles","ComponentType","slotOptions","CustomizerContext","customizations","createComponent","factoryOptions","ResultComponent","stateReducer","_resolveTokens","allTokens","currentTokens","_resolveStyles","viewProps","statics","toObjectMap","baseElementEvents","baseElementProperties","htmlElementProperties","audioProperties","anchorProperties","buttonProperties","inputProperties","textAreaProperties","imgProperties","divProperties","getNativeProps","allowedPropNames","excludedPropNames","_getThemedSpacing","_getValueUnitGap","gap","numericalPart","numericalValue","numericalString","parsePadding","paddingValues","padding1","padding2","nameMap","GlobalClassNames","inner","alignMap","StackItem","nativeProps","grow","shrink","disableShrink","align","verticalFill","alignSelf","Stack","as","stackChildren","defaultItemProps","Slots","RootType","horizontal","reversed","horizontalAlign","verticalAlign","childrenGap","maxWidth","rowGap","columnGap","splitGap","calculatedGap","horizontalMargin","verticalMargin","childStyles","textOverflow","commonSelectors","flexWrap","marginRight","flexDirection","Item","useCustomizationSettings","useForceUpdate","styled","baseStyles","getProps","customizable","scope","Wrapped","forwardedRef","dir","additionalProps","__cachedInputs__","customizedStyles","concatenatedStyles","__noStyleOverride__","pureComponent","_memoizedClassNames","classNamesFunction","styleCalcCount","getClassNamesCount","currentMemoizedClassNames","useStaticStyles","disableCaching","_traverseMap","enableClassNameCacheFullWarning","_traverseEdge","_normalizeValue","inputs","appendFunction","functions","extendComponent","methods","initializeComponentRef","_onMount","_onUpdate","_onUnmount","_setComponentRef","componentRef","prevProps","getId","prefix","resetIds","counter","fromIndex","arraysEqual","array1","array2","createResolver","local","resolver","newRefs","getParent","allowVirtualParents","_virtual","getVirtualParent","findElementRecursive","matchFunction","portalContainsElement","elementMatch","testElement","_timeoutIds","_immediateIds","_intervalIds","_animationFrameIds","_isDisposed","_parent","_onErrorHandler","_noop","dispose","clearImmediate","clearInterval","duration","timeoutId","setImmediate","targetElement","immediateId","_logError","intervalId","throttle","lastResult","lastArgs","waitMS","leading","trailing","lastExecuteTime","userCall","delta","waitLength","noOpFunction","cancel","maxWait","lastCallTime","markExecuted","invokeFunction","executeImmediately","maxWaitDelta","maxWaitExpired","resultFunction","animationFrameId","animationFrameCallback","shallowCompare","filteredAssign","isAllowed","sourceObject","_id","EventGroup","_uniqueId","_eventRecords","raise","eventName","eventArgs","bubbleEvent","retVal","_isElement","createEvent","ev","initEvent","dispatchEvent","createEventObject","evObj","fireEvent","__events__","eventRecords","eventRecordList","listIndex","objectCallback","isObserved","isDeclared","declaredEvents","__declaredEvents","HTMLElement","onAll","eventRecord","processElementEvent","elementCallback","targetArrayLookup","targetArray","declare","methodNames","_makeSafe","_makeAllSafe","BaseComponent","prevState","_updateComponentRef","__disposables","_disposables","disposable","__className","__async","__events","_resolveRef","refName","__resolves","currentProps","newProps","_warnDeprecations","deprecationMap","_warnMutuallyExclusive","mutuallyExclusiveMap","_warnConditionallyRequiredProps","requiredProps","conditionalPropName","_skipComponentRefResolution","classMethod","prototypeMethod","nullRender","DirectionalKeyCodes","mountCounters","setMountCounters","currValue","IconType","ImageFit","ImageCoverStyle","ImageLoadState","FocusRects","rootRef","disableFocusRects","_onPointerDown","mergeAriaAttributeValues","mergedAttribute","ariaAttributes","_coverStyle","portrait","_imageElement","_frameElement","_onImageLoaded","onLoad","_computeCoverStyle","loadState","loaded","_onImageError","notLoaded","nextProps","_checkImageLoaded","onLoadingStateChange","imageProps","alt","shouldFadeIn","shouldStartVisible","imageFit","maximizeFrame","coverStyle","isLoaded","isLandscape","landscape","isCenter","center","isCenterContain","centerContain","isCenterCover","centerCover","isContain","isCover","cover","isNone","none","isError","isNotImageFit","image","naturalWidth","naturalHeight","ImageBase","_svgRegex","desiredRatio","naturalRatio","rootMaximizeFrame","imageCenter","imageContain","imageCover","imageCenterContain","imageCenterCover","imageNone","imageLandscape","imagePortrait","Image","ImageFitStyles","supportsObjectFit","msMaxTouchPoints","fallbackObjectFitStyles","objectFit","getIconContent","iconClassName","mergeImageProps","iconContent","accessibleName","containerProps","finalChildren","ariaLabel","Icon","_onImageLoadingStateChange","imageLoadError","imageErrorAs","isPlaceholder","isImage","iconType","ImageType","finalIconContentChildren","iconContentChildren","imageContainer","DirectionalHint","ContextualMenuItemType","memoizer","outer","innerMemoizer","defaultRender","innerProps","outerProps","FocusZoneDirection","FocusZoneTabbableElements","elementContains","isContained","nextParent","getFirstFocusable","currentElement","includeElementsInFocusZones","getNextElement","getLastFocusable","getPreviousElement","checkNode","suppressParentTraversal","traverseChildren","allowFocusRoot","tabbable","isCurrentElementVisible","isElementVisible","isElementFocusZone","isElementFocusSubZone","childMatch","isElementTabbable","childMatchSiblingMatch","previousElementSibling","childMatchParent","childMatchParentMatch","siblingMatch","suppressChildTraversal","visibilityAttribute","offsetParent","checkTabIndex","tabIndexAttributeValue","isFocusableAttribute","isTabIndexSet","shouldWrapFocus","noWrapDataAttribute","elementContainsAttribute","_scrollbarWidth","targetToFocusOnNextRepaint","focusAsync","focusableElement","_bodyScrollDisabledCount","DisabledScrollClassName","allowScrollOnElement","_previousClientY","_element","passive","scrollableParent","findScrollableParent","allowOverscrollOnElement","_disableIosBodyScroll","getScrollbarWidth","scrollDiv","startingElement","computedStyles","focusZoneStyles","raiseClickFromKeyboardEvent","MouseEvent","initMouseEvent","isMacResult","_allInstances","_outerZones","ALLOWED_INPUT_TYPES","_root","_mergedRef","_onFocus","_portalContainsElement","newActiveElement","onActiveElementChanged","doNotAllowFocusEventToPropagate","stopFocusPropagation","onFocusNotification","shouldFocusInnerElementWhenReceivedFocus","defaultTabbableElement","isImmediateDescendant","_isImmediateDescendantOfZone","maybeElementToFocus","_activeElement","initialElementFocused","_setFocusAlignment","_updateTabIndexes","_setParkedFocus","_setActiveElement","isInnerZoneKeystroke","pagingSupportDisabled","shouldEnterInnerZone","_getDocument","_isInnerZone","innerZone","_getFirstInnerZone","_tryInvokeClickForFocusable","vertical","_preventDefaultWhenHandled","_moveFocusLeft","_moveFocusRight","_moveFocusUp","_moveFocusDown","_moveFocusPaging","allowTabKey","handleTabKey","_isElementInput","focusChanged","_processingTabKey","_shouldWrapFocus","shouldResetActiveElementWhenTabFromZone","_isContentEditableElement","_shouldInputLoseFocus","_getHorizontalDistanceFromCenter","isForward","activeRect","targetRect","leftAlignment","_focusAlignment","targetRectTop","activeRectBottom","targetRectBottom","activeRectTop","getOuterZones","_onKeyDownCapture","zone","_windowElement","FocusZone","defaultActiveElement","shouldFocusOnMount","_lastIndexPath","preventFocusRestoration","elementToFocus","nextChild","getFocusableByIndexPath","_defaultFocusElement","rootProps","ariaDescribedBy","ariaLabelledBy","divProps","_evaluateFocusBeforeRender","elementRef","onMouseDownCapture","forceIntoFirstElement","ownerZoneElement","_getOwnerZone","ownerZone","focusLast","forceAlignment","onBeforeFocus","shouldReceiveFocus","setFocusAlignment","point","focusedElement","shouldRestoreFocus","getElementIndexPath","isParked","_isParked","_parkedTabIndex","previousActiveElement","preventDefaultWhenHandled","shouldRaiseClicks","_moveFocus","getDistanceFromCenter","useDefaultWrap","candidateDistance","candidateElement","changedFocus","isBidirectional","bidirectional","elementDistance","isCircularNavigation","targetTop","distance","shouldWrap","targetBottom","pagesize","isHorizontal","isVertical","isRangeSelected","inputValue","isReadonly","shouldInputLoseFocusOnArrowKey","checkForNoWrap","isMac","isIOS","getIsChecked","canCheck","isChecked","hasSubmenu","subMenuProps","isItemDisabled","getMenuItemAriaRole","REACT_LIFECYCLE_EXCLUSIONS","_updateComposedComponentRef","composedComponentInstance","_composedComponentInstance","_hoisted","exclusions","hoisted","hoistMethods","dest","ResponsiveMode","WindowContext","_defaultMode","_lastMode","RectangleEdge","Position","RESPONSIVE_MAX_CONSTRAINT","getInitialResponsiveMode","withResponsiveMode","ComposedComponent","resultClass","_onResize","responsiveMode","getResponsiveMode","unknown","currentWindow","innerWidth","equals","_createPositionData","targetEdge","alignmentEdge","isAuto","DirectionalDictionary","_isRectangleWithinBounds","boundingRect","_getOutOfBoundsEdges","outOfBounds","_getEdgeValue","edge","_setEdgeValue","_getCenterValue","edges","_getFlankingEdges","positiveEdge","negativeEdge","_getRelativeEdgeValue","_getRelativeRectEdgeValue","_getRelativeEdgeDifference","hostRect","_moveEdge","difference","_alignEdges","_isEdgeInBounds","bounds","_adjustFitWithinBounds","bounding","positionData","directionalHintFixed","coverTarget","alignTargetEdge","elementEstimate","elementRectangle","directions","currentEstimate","currentEdge","currentAlignment","_estimatePosition","_flipToFit","flippedElementEstimate","oppositeEdge","_flipAlignmentEdge","_alignOutOfBoundsEdges","outOfBoundsEdges","_centerEdgeToPoint","elementToPosition","estimatedElementPosition","elementEdge","adjustedGap","_alignOppositeEdges","_finalizeReturnEdge","returnEdge","_calculateActualBeakWidthInPixels","beakWidth","_getPositionData","directionalHint","directionalHintForRTL","previousPositions","positionInformation","getClosestEdge","targetCenter","boundingCenter","_positionElementWithinBounds","_finalizeBeakPosition","elementPosition","positionedBeak","actualElement","Rectangle","closestEdge","_positionBeak","targetRectangle","beakTargetPoint","elementBounds","beakPosition","_getRectangleFromElement","clientRect","_getRectangleFromIRect","_getMaxHeightFromTargetRectangle","gapSpace","_positionElementRelative","rectOrPoint","_getTargetRect","_getAlignmentData","positionedElement","_finalizePositionData","hostElement","doNotFinalizeReturnEdge","elementEdgeString","_finalizeElementPosition","_positionCallout","callout","isBeakVisible","positionProps","finalizedBeakPosition","positionCard","_positionCard","onDismiss","_containsFocus","_async","needsVerticalScrollBar","_originalFocusedElement","currentActiveElement","doesElementContainFocus","_updateScrollBarAsync","onRestoreFocus","originalElement","containsFocus","documentContainsFocus","hasFocus","_getScrollBar","rootHeight","firstChildHeight","defaultFocusRestorer","ANIMATIONS","BEAK_ORIGIN_POSITION","OFF_SCREEN_STYLE","ARIA_ROLE_ATTRIBUTES","_hostElement","_calloutElement","_hasListeners","_dismissOnScroll","preventDismissOnEvent","preventDismissOnScroll","positions","_dismissOnClickOrScroll","_dismissOnResize","preventDismissOnResize","_dismissOnLostFocus","preventDismissOnLostFocus","_setInitialFocus","setInitialFocus","_didSetInitialFocus","focusFirstChild","_onComponentDidMount","_addListeners","onLayerMounted","_updateAsyncPosition","_setHeightOffsetEveryFrame","_dismissOnTargetWindowBlur","shouldDismissOnWindowFocus","_targetWindow","_mouseDownOnPopup","_isMouseDownOnPopup","_mouseUpOnPopup","slideDirectionalClassName","calloutElementRect","heightOffset","_positionAttempts","_removeListeners","shouldUpdateWhenHidden","_setTargetWindowAndElement","_getTarget","newTarget","_blockResetHeight","_maxHeight","finalHeight","_didPositionPropsChange","_bounds","calloutWidth","calloutMaxWidth","calloutMinWidth","hideOverflow","calloutMaxHeight","onScroll","getContentMaxHeight","_getMaxHeight","contentMaxHeight","overflowYHidden","beakVisible","_classNames","overflowStyle","visibilityStyle","beak","_getBeakPosition","beakCurtain","calloutMain","onMouseUp","isEventTargetOutsideCallout","_target","dismissOnTargetClick","beakPostionStyle","_updatePosition","calloutElement","expectsTarget","_getBounds","newPositions","positionCallout","_arePositionsEqual","onPositioned","currentBounds","targetWindow","segments","getWindowSegments","_getBoundsFromTargetWindow","minPagePadding","mouseTarget","elementTarget","rectOrPointTarget","boundingRectangle","getMaxHeight","newPosition","_comparePositions","oldPositions","oldPositionEdge","newPositionEdge","currentDoc","_setHeightOffsetTimer","calloutMainElem","scrollDiff","oldProps","getBeakStyle","CalloutContent","borderWidth","borderStyle","minWidth","overflowX","mergeSettings","oldSettings","newSettings","_isSettingsFunction","_settingsMergeWith","mergeScopedSettings","scopedSettingsFromProps","oldScopedSettings","newScopedSettings","_scopedSettingsMergeWith","_onCustomizationChange","contextTransform","parentContext","newContext","mergeCustomizations","getFabricTheme","_rootElement","_removeClassNameFromBody","_getClassNames","contextDir","pageDir","componentDir","rootDir","needsTheme","renderedContent","Root","_addClassNameToBody","applyTheme","applyThemeToBody","bodyThemed","inheritFont","Fabric","setVirtualParent","virtualChild","virtualParent","concatStyles","_styleCache","_onSettingChanged","mergedStyles","_defaultHostSelector","_layersByHostId","_filteredEventProps","_rootRef","_createLayerElement","hostId","host","_getHost","_removeLayerElement","layerElement","insertFirst","onLayerDidMount","registerLayer","eventBubblingEnabled","_getFilteredEvents","unregisterLayer","onLayerWillUnmount","isNotHost","getElementById","defaultHostSelector","LayerBase","_onFilterEvent","Event","BUBBLING_PHASE","KeytipEvents","rootNoHost","layerProps","doNotLayer","hasIcons","iconProps","onRenderIcon","onCheckmarkClick","isItemChecked","checkmarkIcon","secondaryText","submenuIconProps","subMenuIcon","openSubMenu","getSubmenuTarget","submenuTarget","dismissSubMenu","dismissMenu","dismissAll","renderContent","onRenderContent","_renderLayout","linkContentMenu","linkContent","renderCheckMarkIcon","renderItemIcon","renderItemName","renderSecondaryText","renderSubMenuIcon","defaultRenders","alignItems","divider","MediumScreenSelector","ScreenWidthMinLarge","getItemHighContrastStyles","forcedColorAdjust","MsHighContrastAdjust","getMenuItemStyles","ContextualMenuItemBackgroundHoverColor","ContextualMenuItemTextHoverColor","ContextualMenuItemBackgroundSelectedColor","ContextualMenuItemDividerColor","rootDisabled","rootHovered","rootFocused","rootChecked","rootPressed","rootExpanded","anchorLink","wordSpacing","textShadow","textDecoration","minHeight","iconColor","iconDisabled","splitButtonFlexContainer","justifyContent","getSplitButtonVerticalDividerClassNames","isExpanded","splitMenu","screenReaderText","isAnchorLink","knownIcon","itemClassName","dividerClassName","subMenuClassName","primaryDisabled","splitPrimary","flexBasis","splitContainer","getItemStyles","ContextualMenuItem","_onItemMouseEnter","onItemMouseEnter","_onItemClick","onItemClickBase","_onItemMouseLeave","onItemMouseLeave","_onItemKeyDown","onItemKeyDown","_onItemMouseMove","onItemMouseMove","_getSubmenuTarget","useConst","KEYTIP_ADDED","KEYTIP_REMOVED","KEYTIP_UPDATED","PERSISTED_KEYTIP_ADDED","PERSISTED_KEYTIP_REMOVED","PERSISTED_KEYTIP_EXECUTE","ENTER_KEYTIP_MODE","EXIT_KEYTIP_MODE","keytips","persistedKeytips","sequenceMapping","inKeytipMode","shouldEnterKeytipMode","delayUpdatingKeytipChange","_instance","register","keytipProps","persisted","addParentOverflow","keySequences","uniqueKeytip","_getUniqueKtp","uniqueID","keytip","newKeytipProps","oldKeyTip","unregister","keytipToRemove","enterKeytipMode","exitKeytipMode","getKeytips","fullSequence","parentKeytip","overflowSetSequence","menuExecute","overflowButtonSequences","keytipSequences","KeytipManager","sequencesToID","prevValue","keySequence","useKeytipData","keytipManager","prevOptions","usePrevious","nativeKeytipProps","keytipId","describedByPrepend","describedby","getAriaDescribedBy","overflowKeySequences","overflowSequenceLen","overflowSequence","itemToAdd","copy","addElementAtIndex","mergeOverflows","getKeytipData","_anchor","_getMemoizedMenuButtonKeytipProps","hasMenu","onItemClick","_renderAriaDescription","ariaDescription","_ariaDescriptionId","focusableElementIndex","totalItemCount","hasCheckmarks","contextualMenuItemAs","expandedMenuItemKey","anchorRel","rel","itemHasSubmenu","itemProps","keytipAttributes","onMouseEnter","onMouseLeave","onMouseMove","ChildrenRenderer","_btn","onItemMouseDown","defaultRole","buttonNativeProperties","itemRole","ariaDescribedByIds","itemButtonProperties","getClassNames","deprecatedGetClassNames","VerticalDivider","names","_executeItemClick","_splitButton","_onItemMouseEnterPrimary","_onItemMouseEnterIcon","_onItemMouseMovePrimary","_onItemMouseMoveIcon","_onIconItemClick","executeItemClick","_processingTouch","_onTouchStart","_handleTouchAndPointerEvent","stopImmediatePropagation","splitButton","onTouchStart","_renderSplitPrimaryButton","_renderSplitDivider","_renderSplitIconButton","itemComponentProps","getDividerClassNames","buttonProps","onTap","_lastTouchTimeoutId","getContextualMenuItemClassNames","getSubmenuItems","overrideItems","preferMenuTargetAsEventTarget","contextItem","getOnClickWithOverrideTarget","_getMenuItemStylesFunction","_mounted","_tryFocusPreviousActiveElement","_previousActiveElement","_onRenderMenuList","menuListProps","indexCorrection","menuItem","_renderMenuItem","itemType","Divider","indexIncrease","customOnRenderListLength","itemClassNames","renderedItems","getItemClassNames","subMenuIconClassName","itemStyleProps","_renderSeparator","headerItem","_renderHeaderMenuItem","_renderListItem","Section","_renderSectionItem","_renderNormalItem","_defaultMenuItemRenderer","_lastKeyDownWasAltOrMeta","_isAltOrMeta","dismissAllMenus","_keyHandler","_shouldHandleKeyDown","_shouldCloseSubMenu","_onMenuFocusCapture","delayUpdateFocusOnHover","_shouldUpdateFocusOnMouseEvent","_shouldHandleKeyUp","keyPressIsAltOrMetaAlone","shouldHandleKey","_focusingPreviousElement","submenuCloseKey","isSubMenu","_adjustedFocusZoneProps","_onMenuKeyDown","_host","hasModifier","isUp","isDown","_onScroll","_isScrollIdle","_scrollIdleTimeoutId","_onItemMouseEnterBase","_shouldIgnoreMouseEvent","_updateFocusOnMouseEvent","_onItemMouseMoveBase","_gotMouseMove","_enterTimerId","_onMouseItemLeave","setActive","_onItemMouseDown","_onItemClickBase","_cancelSubMenuTimer","expandedByMouseClick","_onItemSubMenuExpand","_onAnchorClick","overrideTarget","menuTarget","openKey","_onSubMenuDismiss","dismissedMenuItemKey","_onPointerAndTouchEvent","contextualMenuItems","subMenuId","_isHidden","_onMenuClosed","_onMenuOpened","onMenuDismissed","labelElementId","useTargetWidth","useTargetAsMinWidth","shouldFocusOnContainer","calloutProps","onRenderSubMenu","onRenderMenuList","focusZoneProps","getMenuClassNames","itemsHaveIcons","sectionProps","_getFocusZoneDirection","contextMenuStyle","submenuItem","canAnyMenuItemsCheck","submenuProps","_getSubmenuProps","targetAsHtmlElement","targetWidth","calloutStyles","onFocusCapture","defaultMenuItemRenderer","_onRenderSubMenu","onMenuOpened","sectionItem","menuClassNames","groupProps","headerContextualMenuItem","ariaLabellledby","topDivider","contextualMenuItem","itemsIndex","bottomDivider","fromSection","onRender","_renderAnchorMenuItem","_renderSplitButton","_renderButtonItem","divHtmlProperties","header","subMenuHoverDelay","timeoutDuration","_findItemByKey","_findItemByKeyFromItems","ContextualMenuBase","isopen","LocalContextualMenu","listStyleType","userSelect","ContextualMenu","ButtonGlobalClassNames","msButton","msButtonHasMenu","msButtonIcon","msButtonMenuIcon","msButtonLabel","msButtonDescription","msButtonScreenReaderText","msButtonFlexContainer","msButtonTextContainer","getBaseButtonClassNames","variantClassName","menuIconClassName","isSplit","iconExpandedHovered","menuIconExpandedHovered","rootExpandedHovered","rootHasMenu","labelHovered","iconHovered","descriptionHovered","menuIconHovered","iconPressed","descriptionPressed","menuIconPressed","rootCheckedDisabled","rootCheckedHovered","rootCheckedPressed","flexContainer","textContainer","iconExpanded","iconChecked","labelChecked","labelDisabled","menuIconChecked","menuIconDisabled","menuIconExpanded","descriptionChecked","descriptionDisabled","splitButtonMenuButton","splitButtonMenuButtonExpanded","splitButtonMenuButtonDisabled","splitButtonMenuButtonChecked","splitButtonMenuFocused","splitButtonContainer","splitButtonContainerChecked","splitButtonContainerCheckedHovered","splitButtonContainerHovered","splitButtonContainerFocused","splitButtonContainerDisabled","splitButtonMenuIcon","splitButtonMenuIconDisabled","splitButtonDivider","splitButtonDividerDisabled","componentAsMemoizer","Outer","Inner","PivotLinkFormat","PivotLinkSize","_buttonElement","_splitButtonContainer","_renderedVisibleMenu","_onRenderIcon","_onRenderTextContents","onRenderText","onRenderDescription","_onRenderText","_onRenderDescription","_hasText","_labelId","_onRenderChildren","_descriptionId","_onRenderAriaDescription","_onRenderMenuIcon","menuIconProps","_onRenderMenu","menuProps","MenuType","menuAs","_onDismissMenu","_dismissMenu","_menuShouldFocusOnMount","_menuShouldFocusOnContainer","menuHidden","_openMenu","_onToggleMenu","_onSplitContainerFocusCapture","_onSplitButtonPrimaryClick","_onMenuClick","_onKeyPress","onKeyPress","_onMouseUp","_onSplitButtonContainerKeyDown","_isValidMenuOpenKey","onMenuClick","_isSplitButton","ariaHidden","allowDisabledFocus","isPrimaryButtonDisabled","renderAsAnchor","resolvedAriaLabel","dataIsFocusable","isCheckboxTypeRole","checkedOrPressedValue","_onRenderSplitButtonContent","_onRenderContent","onPointerUp","onAfterMenuDismiss","openMenu","onRenderAriaDescription","onRenderChildren","onRenderMenu","onRenderMenuIcon","Button","_shouldRenderMenu","_getMenuProps","Content","persistMenu","renderPersistedMenuHiddenOnMount","getSplitButtonClassNames","primaryActionButtonProps","onPointerDown","SplitButton","_onRenderSplitButtonMenuButton","_onRenderSplitButtonDivider","splitButtonMenuProps","splitButtonAriaLabel","splitButtonProps","BaseButton","menuTriggerKeyCode","baseClassName","noOutline","buttonHighContrastFocus","customStyles","CommandButton","ActionButton","_focusZone","_renderPivotLink","linkCollection","selectedKey","itemKey","headerButtonProps","tabId","keyToTabIdMapping","onRenderItemLink","isSelected","_renderLinkContent","contentString","headerText","itemCount","itemIcon","linkIsSelected","_onLinkClick","_pivotId","links","_getPivotLinks","defaultSelectedKey","defaultSelectedIndex","_getSelectedKey","_renderPivotLinks","alwaysRender","_renderPivotItem","_isKeyValid","propsSelectedKey","stateSelectedKey","headersOnly","keyToIndexMapping","selectedTabId","itemContainer","_isPivotItem","pivotItem","linkText","pivotItemProps","_getTabId","getTabId","_updateSelectedItem","onLinkClick","rootIsLarge","linkSize","rootIsTabs","linkFormat","tabs","globalClassNames","outlineOffset","Pivot","Label","labelFontWeight","labelColor","labelDisabledColor","labelRequiredStarColor","wordWrap","isRendered","_timeoutId","__browserNeedsRevealButton","_textElement","validateOnFocusIn","_validate","validateOnFocusOut","_onRenderLabel","labelStyles","htmlFor","_onRevealButtonClick","isRevealingPassword","_onInputChange","isSameValue","_lastChangeValue","_getValue","_isControlled","uncontrolledValue","_fallbackId","_warnControlledUsage","errorMessage","_delayedValidate","deferredValidationTime","_lastValidation","_adjustInputHeight","validateOnLoad","snapshot","_shouldValidateAllChanges","borderless","inputClassName","underlined","resizable","autoAdjustHeight","canRevealPassword","onRenderPrefix","onRenderSuffix","onRenderLabel","_errorMessage","hasRevealButton","isEdge","_browserNeedsRevealButton","hasLabel","hasErrorMessage","hasIcon","fieldGroup","_onRenderPrefix","_renderTextArea","_renderInput","revealButton","revealSpan","revealIcon","_onRenderSuffix","_isDescriptionAvailable","setSelectionStart","setSelectionEnd","_hasWarnedNullValue","valueProp","textAreaProps","onInput","inputProps","updatedInputProps","onRenderInput","_latestValidateValue","onGetErrorMessage","_notifyAfterValidate","onNotifyValidationResult","textField","unresizable","active","getLabelStyles","MessageBarType","TextField","fieldPrefixSuffix","placeholderStyles","disabledPlaceholderStyles","borderBottom","borderBottomColor","splitButtonDividerBaseStyles","borderTopRightRadius","borderBottomRightRadius","borderRight","borderRightWidth","borderLeftWidth","borderLeft","baseButtonStyles","splitButtonStyles","IconButton","ICON_MAP","warning","blocked","severeWarning","_getRegionProps","hasActions","_getActionsDiv","_getDismissDiv","regionProps","labelId","expandSingleLine","showContent","isMultiline","_renderMultiLine","_renderSingleLine","dismissIconProps","dismissal","dismissButtonAriaLabel","_getDismissSingleLine","dismissSingleLine","_getExpandSingleLine","truncated","overflowButtonAriaLabel","_getIconSpan","messageBarIconProps","iconContainer","messageBarType","_renderInnerText","_getAnnouncementPriority","singleline","dismissalSingleLine","expandingSingleLine","actionsSingleline","highContrastBackgroundColor","MessageBar","SmallScreenSelector","ScreenWidthMinMedium","dismissalAndExpandIconStyle","dismissalAndExpandStyle","primary","primaryStyles","standardStyles","DefaultButton","PrimaryButton","isDate","isEmptyObject","lhs","rhs","deletedValues","resetButtonClassName","float","copyPasteButtonClassName","listItem","WebChatJsonEditor","onJsonChange","newJson","newStyleOptions","textValue","validateJSON","renderErrorBanner","resetToDefault","confirm","uniqueErrors","reInitialize","removeError","addError","addNewError","checkColor","checkRGBA","checkInt","checkBoolean","checkPercentage","checkDropDown","log","checkDefault","invalidAttributesInJson","newArr","onSuccess","clipboard","writeText","readText","pastedStyleOptions","transformWebchatOptions","UPDATE_ROOT_WEBCHAT_STATE_VARIABlE","categoryHeaderContainer","aligntItems","CategoryLink","stringName","conditionalCategoryStyle","categoryStyle","conditionalIconStyle","stroke","fill","viewBox","xmlns","DefaultSelector","parsedValue","_checkBox","_renderContent","indeterminate","checkmarkIconProps","ariaPositionInSet","ariaSetSize","checkmark","isIndeterminate","defaultIndeterminate","stateUpdate","boxSide","isUsingCustomLabelRender","Checkbox","checkmarkFontColor","checkmarkFontColorHovered","checkboxBorderColor","checkboxBorderIndeterminateColor","checkboxBorderColorChecked","checkboxBorderColorDisabled","checkboxBorderHoveredColor","checkboxBorderIndeterminateHoveredColor","checkboxBackgroundChecked","checkboxBackgroundCheckedHovered","checkboxBorderColorCheckedHovered","checkboxHoveredTextColor","checkboxBackgroundDisabledChecked","checkboxTextColor","checkboxTextColorDisabled","indeterminateDotStyles","transitionProperty","transitionDuration","transitionTimingFunction","BooleanSelector","precisionRound","precision","exp","KeyboardSpinDirection","_getDisabledStyles","SpinButtonTextColorDisabled","SpinButtonBackgroundColorDisabled","getArrowButtonStyles","isUpArrow","customSpecificArrowStyles","ArrowButtonTextColor","ArrowButtonTextColorHovered","ArrowButtonTextColorPressed","ArrowButtonBackgroundHovered","ArrowButtonBackgroundPressed","SpinButtonRootBorderColor","SpinButtonRootBackgroundColor","SpinButtonRootBorderColorHovered","SpinButtonRootBorderColorFocused","SpinButtonInputTextColor","SpinButtonInputTextColorSelected","SpinButtonInputBackgroundColorSelected","SpinButtonIconDisabledColor","labelWrapper","labelWrapperStart","labelWrapperEnd","labelWrapperTop","labelWrapperBottom","spinButtonWrapper","spinButtonWrapperTopBottom","spinButtonWrapperHovered","spinButtonWrapperFocused","spinButtonWrapperDisabled","DEFAULT_MIN_WIDTH","inputTextSelected","inputDisabled","arrowButtonsContainer","arrowButtonsContainerDisabled","keyboardSpinDirection","labelPosition","_getStyleForLabelBasedOnPosition","_getStyleForRootBasedOnPosition","arrowBox","_initialStepDelay","_stepDelay","_spinningByMouse","notSpinning","_stop","_onValidate","_defaultOnValidate","_calculatePrecision","groups","_lastValidValue","_onIncrement","onIncrement","_defaultOnIncrement","_precision","_onDecrement","onDecrement","_defaultOnDecrement","_valueToValidate","_updateValue","shouldSpin","stepDelay","stepFunction","_currentStepFunctionHandle","spinDirection","up","down","_handleKeyUp","_onIncrementMouseDown","_onDecrementMouseDown","_inputId","incrementButtonIcon","incrementButtonAriaLabel","decrementButtonIcon","decrementButtonAriaLabel","upArrowButtonStyles","downArrowButtonStyles","ariaValueNow","ariaValueText","iconButtonProps","customUpArrowButtonStyles","customDownArrowButtonStyles","SpinButton","restArguments","isNull","isUndefined","isBoolean","tagTester","isFunction","nodelist","Int8Array","hasStringTagBug","hasObjectTag","isIE11","isDataView","getInt8","isArrayBuffer","isArguments","isSymbol","isNumber","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","getByteLength","typedArrayPattern","isBufferLike","collectNonEnumProps","emulatedSet","nonEnumIdx","getLength","isString","isMatch","attrs","_keys","_wrapped","toBufferView","bufferSource","Uint8Array","byteOffset","eq","aStack","bStack","deepEq","areArrays","isTypedArray","aCtor","bCtor","isEqual","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","defaults","baseCreate","Ctor","extendOwn","tap","interceptor","toPath","deepGet","_has","identity","matcher","optimizeCb","argCount","accumulator","baseIteratee","iteratee","mapObject","currentKey","propertyOf","accum","getTime","createEscaper","escaper","testRegexp","replaceRegexp","escapeMap","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","bareIdentifier","argument","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","callArgs","flatten","depth","strict","isArrayLike","memoize","hasher","address","throttled","_now","remaining","passed","debounced","_args","negate","findKey","createPredicateIndexFinder","sortedIndex","low","high","mid","createIndexFinder","predicateFind","findLastIndex","findWhere","createReduce","initial","every","guard","contextPath","pluck","where","lastComputed","reStrSymbol","sample","rand","temp","shuffle","sortBy","criteria","behavior","partition","pass","keyInObj","pick","_flatten","otherArrays","uniq","isSorted","seen","arrays","intersection","argsLength","unzip","chunk","chainResult","allExports","Ui_selector","IntegerSelector","debounceOnChange","_sliderLine","_thumb","_lowerValueThumb","_onKeyDownTimer","_isAdjustingLowerValue","_getAriaValueText","_calculateCurrentSteps","currentSteps","steps","sliderPositionRect","stepLength","_getPosition","_onMouseDownOrTouchStart","ranged","newRenderedValue","lowerValue","_onMouseMoveOrTouchMove","_onMouseUpOrTouchEnd","suppressEventCancelation","renderedValue","renderedLowerValue","onChanged","_disposeListeners","_clearOnKeyDownTimer","_setOnKeyDownTimer","_onThumbFocus","defaultLowerValue","showValue","originFromZero","thumbOffsetPercent","_getPercent","lowerThumbOffsetPercent","originValue","originPercent","activeSectionWidth","topSectionWidth","bottomSectionWidth","lengthString","onMouseDownProp","onTouchStartProp","onKeyDownProp","onFocusProp","showTransitions","divButtonProps","sliderProps","sliderBoxProps","slideBox","thumbProps","lowerValueThumbProps","titleLabel","valueLabel","_getValueLabel","zeroTick","_getStyleUsingOffsetPercent","thumb","lineContainer","inactiveSection","activeSection","valueFormat","currentPosition","_setValueState","roundedValue","isAdjustingLowerValue","valueChanged","snapToStep","numDec","shouldAdjustLowerThumb","shouldAdjustUpperThumb","Slider","titleLabelClassName","pressedActiveSectionColor","hoveredActiveSectionColor","hoveredPressedinactiveSectionColor","restActiveSectionColor","restInactiveSectionColor","disabledActiveSectionColor","disabledInactiveSectionColor","thumbBackgroundColor","thumbBorderColor","thumbDisabledBorderColor","slideBoxActiveSectionStyles","slideBoxInactiveSectionStyles","slideHoverSectionStyles","slideBoxActiveThumbStyles","slideBoxActiveZeroTickStyles","PercentageSelector","sliderValue","HEX_REGEX","RGBA_REGEX","hsv2rgb","rgb","clamp","rgb2hex","_rgbToPaddedHex","getFullColorString","hsv2hex","_rgbaOrHexString","updateSV","_isAdjustingSaturation","increment","_updateColor","_onMouseMove","newColor","prevColor","rectSize","sPercentage","vPercentage","_getNewColor","minSize","ariaValueFormat","valueText","dark","oldColor","ColorRectangle","maxValue","_maxValue","currentPercentage","_type","overlayColor","overlayStyle","sliderOverlay","sliderThumb","isAlpha","hueStyle","alphaStyle","backgroundImage","ColorSlider","useAlphaBackground","cssColor","easyColor","_rgba","_hex6","_hex3","hasAlpha","expectedPartCount","hsv","hsl2hsv","hsl2rgb","_hsla","eComputedStyle","computedColor","_browserCompute","getColorFromRGBA","NaN","getColorFromString","inputColor","updateA","updateT","allColorComponents","_getColorFromProps","ColorPicker","_onSVChanged","_onHChanged","updateH","_onATChanged","alphaType","editingColor","isHex","isTransparency","correctRGB","strings","hue","_textChangeHandlers","_onTextChange","defaultStrings","ColorPickerBase","_textLabels","redLabel","greenLabel","blueLabel","alphaLabel","alpha","hexLabel","transparency","_strings","alphaAriaLabel","transparencyAriaLabel","textLabels","alphaSliderHidden","useTransparency","colorComponents","atValue","atLabel","selectedColorAriaParts","rootAriaLabelFormat","panel","svAriaLabel","svAriaDescription","svAriaValueFormat","colorRectangle","flexSlider","hueAriaLabel","showPreview","flexPreviewBox","colorSquare","cellPadding","cellSpacing","tableHeader","tableHexCell","tableAlphaCell","comp","_getDisplayValue","tableLayout","useBoolean","initialState","valueRef","setTrue","setFalse","modalize","affectedNodes","targetDocument","unmodalize","_firstBumper","_lastBumper","_hasFocus","_onRootFocus","_onRootBlur","_onFirstBumperFocus","_onBumperFocus","_onLastBumperFocus","isFirstBumper","currentBumper","nextFocusable","getFirstTabbable","_isBumper","_onFocusCapture","_previouslyFocusedElementInTrapZone","_forceFocusInTrap","FocusTrapZone","_focusStack","_forceClickInTrap","clickedElement","_bringFocusIntoZone","_updateEventHandlers","enableAriaHiddenSiblings","_unmodalize","elementToFocusOnDismiss","_previouslyFocusedElementOutsideTrapZone","prevForceFocusInsideTrap","forceFocusInsideTrap","newForceFocusInsideTrap","prevDisabled","newDisabled","_returnFocusToInitiator","_disposeClickHandler","_disposeFocusHandler","bumperProps","focusPreviouslyFocusedInnerElement","firstFocusableSelector","firstFocusableTarget","_focusAsync","focusSelector","_firstFocusableChild","disableFirstFocus","ignoreExternalFocusing","isClickableOutsideFocusTrap","main","isOpen","layer","allowTouchBodyScroll","_allowTouchBodyScroll","disableBodyScroll","enableBodyScroll","isDarkThemed","rootDark","Overlay","isDragging","touchAction","eventMapping","_currentEventType","_onDragStart","_onDragStop","_onTouchEnd","onTouchEnd","handleSelector","_matchesSelector","preventDragSelector","_touchId","_getTouchId","_getControlPosition","dragData","_createDragDataFromPosition","onStart","lastPosition","_onDrag","updatedData","_createUpdatedDragData","updatedPosition","onDragChange","baseDragData","onStop","statePosition","touchObj","_getActiveTouch","eventToGetOffset","_findTouchInTouchList","touch","matchesSelectorFn","touchList","DefaultLayerProps","Modal","_focusTrapZone","_registerInitialModalPosition","dialogMain","modalRectangle","dragOptions","keepInBounds","_minClampedPosition","_maxClampedPosition","modalRectangleTop","_allowScrollOnModal","elt","_scrollableContent","_onModalContextMenuClose","isModalMenuOpen","_onModalClose","_lastSetX","_lastSetY","isInKeyboardMoveMode","_hasRegisteredKeyUp","onDismissed","_getClampedPosition","handledEvent","_getMoveDelta","_getClampedPositionY","_getClampedPositionX","_onEnterKeyboardMoveMode","_onExitKeyboardMoveMode","_registerForKeyUp","hasBeenOpened","_onModalCloseTimer","containerClassName","scrollableContentClassName","isBlocking","isDarkOverlay","titleAriaId","subtitleAriaId","topOffsetFixed","isModeless","isAlert","layerClassName","isAlertRole","isDefaultDragHandle","dragHandleSelector","mergedLayerProps","modalContent","keyboardMoveIconContainer","keyboardMoveIconProps","keyboardMoveIcon","moveMenuItemText","closeMenuItemText","minPosition","maxPosition","ModalBase","onRenderItem","ariaPosInSet","doNotContainWithinFocusZone","htmlProps","rowsOfItems","toMatrix","rowIndex","cell","cellIndex","tableCell","shouldFocusCircularNavigate","focusedContainer","ButtonGrid","_onMouseEnter","onHover","_onMouseLeave","cellDisabledStyle","cellIsSelectedStyle","getColorPickerGridCellButtonClassNames","_onRenderColorOption","colorOption","circle","cx","cy","idPrefix","onWheel","isWhite","_isWhiteCell","colorCell","cellHighContrastFocus","ColorPickerGridCell","buttonBorderHovered","buttonBorderChecked","buttonBorderCheckedHovered","buttonBorderIsWhite","calculatedBorderWidth","navigationIdleDelay","_getItemsWithIndex","_onRenderItem","onRenderColorCell","_renderOption","_onSwatchColorPickerBlur","onCellFocused","_cellFocused","getColorGridCellStyles","_onCellClick","_onGridCellHovered","_onGridCellFocused","cellShape","_onWheel","cellHeight","cellWidth","cellBorderWidth","focusOnHover","isNavigationIdle","parentSelector","mouseLeaveParentSelector","_setNavigationTimeout","navigationIdleTimeoutId","onCellHovered","onColorChanged","isControlled","selectedId","_getSelectedIndex","colorCells","newSelectedIndex","cellMargin","SwatchColorPicker","contentStyles","flexFlow","borderTop","currentColorStyles","iconButtonStyles","cancelIcon","ColorSelectorModal","isModalOpen","showModal","hideModal","titleId","providedId","useId","SelectableOptionMenuItemType","colorPickerStyles","ColorSelector","colorCode","getComputedValue","retFromStyleOptions","getStyleOptionValue","retFromUIOptions","textFieldValue","setTextFieldValue","isErrorMessageOpen","showErrorMessage","hideErrorMessage","compRef","colorFormOnChange","isValid","debounceUpdateColor","colorObj","parseRGBValues","rgbaValue","parseRGBStringValues","getHexColorFromRgba","RgbaSelector","rgbaTransformedValue","rgbaToTransformValue","DropDownOptions","borderStyles","suggestedActionLayout","bubbleNubOffset","scrollToEndButtonBehavior","PanelType","_size","updateOptions","displayOnlyOptionsCache","_displayOnlyOptionsCache","_cachedOptions","positionInSet","PanelVisibilityState","_panel","_animationCallback","_hasCustomNavigation","onRenderNavigation","onRenderNavigationContent","_allowScrollOnPanel","_onRenderNavigation","hasCloseButton","navigation","_onRenderNavigationContent","closeButtonAriaLabel","onRenderHeader","closeButton","_onRenderHeader","_headerTextId","_onPanelClick","headerTextId","headerTextProps","_onRenderBody","_onRenderFooter","onRenderFooterContent","footer","footerInner","_animateTo","newVisibilityState","onOpen","_onTransitionComplete","_clearExistingAnimationTimer","_updateFooterPosition","onOpened","closed","isFooterSticky","animatingClosed","animatingOpen","_shouldListenForOuterClick","_dismissOnOuterClick","previousProps","shouldListenOnOuterClick","previousShouldListenOnOuterClick","focusTrapZoneProps","headerClassName","isFooterAtBottom","isLightDismiss","isHiddenOnDismiss","overlayProps","popupProps","customWidth","onLightDismissClick","onRenderBody","onRenderFooter","isLeft","smallFixedNear","customNear","isOnRightSide","customWidthStyles","isAnimating","focusTrapZoneClassName","hasCustomNavigation","hiddenPanel","contentInner","onOuterClick","smallFixedFar","smallFluid","largeFixed","extraLarge","panelWidth","panelMargin","smallPanelSelectors","mediumPanelSelectors","largePanelSelectors","largeFixedPanelSelectors","extraLargePanelSelectors","sharedPaddingStyles","Panel","isCustomPanel","WebkitOverflowScrolling","hyphens","borderTopColor","getAllSelectedOptions","selectedIndices","selectedOptions","_dropDown","_scrollIdleDelay","_sizePosCache","_requestAnimationFrame","activeTimeouts","multiSelect","changedOpt","_getPlaceholder","placeHolder","_getTitle","_unused","multiSelectDelimiter","_onRenderTitle","_onRenderPlaceholder","_onRenderContainer","panelProps","dropdownWidth","isSmall","panelStyles","_onDismiss","_renderFocusableList","_onPositioned","_onRenderCaretDown","caretDown","_onRenderList","renderedList","emptyQueue","newGroup","placeRenderedOptionIntoQueue","_renderHeader","onRenderOption","isItemSelected","dropdownItemHidden","dropdownItemSelectedAndDisabled","dropdownItemSelected","dropdownItemDisabled","dropdownItem","multiSelectItemStyles","multiSelectItem","_listId","_onRenderItemLabel","optionSetSize","_onRenderOption","dropdownOptionText","calloutRenderEdge","setSelectedIndex","_onDropdownBlur","_isDisabled","_onDropdownKeyDown","containsExpandCollapseModifier","_moveIndex","_onDropdownKeyUp","_onZoneKeyDown","_onZoneKeyUp","_onDropdownClick","_shouldOpenOnFocus","_isFocusedByClick","_onDropdownMouseDown","selectedKeys","defaultSelectedKeys","_optionId","_getSelectedIndexes","selectedKeyProp","didOptionsChange","onRenderTitle","onRenderContainer","onRenderCaretDown","onRenderPlaceholder","onRenderPlaceHolder","cachedOptions","errorMessageId","ariaActiveDescendant","propStyles","hasError","isRenderingPlaceholder","panelClassName","calloutClassName","caretDownWrapper","shouldOpenOnFocus","notifyOnReselect","newIndexes","_copyArray","newArray","stepValue","stepCounter","onRenderList","dropdownItemsWrapper","dropdownItems","dropdownDivider","dropdownItemHeader","_getAllSelectedIndices","openOnKeyboardFocus","DropdownBase","titleIsPlaceHolder","titleHasError","highContrastAdjustMixin","highContrastItemAndTitleStateMixin","highContrastBorderState","MinimumScreenSelector","Dropdown","globalClassnames","rootHoverFocusActiveSelectorNeutralDarkMixin","rootHoverFocusActiveSelectorNeutralPrimaryMixin","borderColorError","dropdownItemStyle","selectedItemBackgroundColor","itemSelectors","titleOpenBorderRadius","calloutOpenBorderRadius","DROPDOWN_HEIGHT","dropdownStyles","DropDownSelector","selectedItem","setSelectedItem","optionType","retrieveOptionType","dropDownOptions","toSetValue","addDefaultTemplateButton","ReactSelector","reactValue","setReactValue","onValueChange","allowedModes","innerRef","htmlElementProps","jsonEditor","handleChange","currentJson","setRef","subCategoryHeaderContainer","subCategoryHeaderIcon","subCategoryHeader","LocalizationSelector","isCollapsed","setIsCollapsed","defaultDruidLocalization","enUSJson","WebChatOptionsSearch","toLocaleLowerCase","filteredCustomizationEntries","UPDATE_STYLE_ELEMENT","UI_selector","CustomizationEntrySelector","onChangeWithContainerName","renderSelector","subCategoryContentContainer","CustomizationEntrySubCategory","entryViewerContainer","defaultEntriesContainer","ConfigurationEntryViewer","createSubCategoriesObject","subCategoryObject","noSubCategory","containerValue","mapSubCategoriesObjectToReactElements","subCategoriesObject","rootContainer","headerContainer","pivotHeader","editorContainer","borderBottomStyle","configurationEntriesContainer","overscrollBehavior","configurationCategoriesContainer","stackTokens","WebChatEditor","RenderCategories","resultingUIComponents","botName","documentationUrl","onSave","aria-label","App","initialize","AppState","initialOptions","rootElem","ReactDOM"],"mappings":";mCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,mBAIjBlC,EAAoBA,EAAoBmC,EAAI,I,+BC/EnDhC,EAAOD,QAAUkC,EAAQ,K,6BCHpB,IAAKC,EAwBAC,EAsCAC,EA9DZ,sG,SAAYF,K,gBAAAA,E,kBAAAA,E,gBAAAA,E,oCAAAA,E,cAAAA,E,kBAAAA,E,yBAAAA,E,gBAAAA,E,iCAAAA,E,mBAAAA,E,qCAAAA,E,0CAAAA,E,mBAAAA,E,sDAAAA,E,8BAAAA,E,2BAAAA,E,2BAAAA,E,6BAAAA,M,cAwBAC,K,mCAAAA,E,iCAAAA,E,uBAAAA,E,gBAAAA,E,mCAAAA,E,6BAAAA,E,gCAAAA,E,iCAAAA,E,iCAAAA,E,mCAAAA,E,mBAAAA,E,gBAAAA,E,2CAAAA,E,sBAAAA,E,kBAAAA,E,cAAAA,E,gBAAAA,E,gBAAAA,E,cAAAA,E,YAAAA,E,gBAAAA,E,2CAAAA,E,0CAAAA,E,gDAAAA,E,qCAAAA,E,gBAAAA,E,kBAAAA,E,sBAAAA,E,+BAAAA,E,iCAAAA,E,mCAAAA,E,mCAAAA,E,yBAAAA,E,kCAAAA,E,aAAAA,M,cAsCAC,K,kCAAAA,E,8BAAAA,E,kCAAAA,E,oCAAAA,E,kCAAAA,E,wCAAAA,E,4BAAAA,E,8BAAAA,E,4CAAAA,E,iCAAAA,M,qCC9DZ,orBACO,IAAIC,EAAU,SAKVC,EAAsB,iBAARC,MAAoBA,KAAKA,OAASA,MAAQA,MACxC,iBAAVC,GAAsBA,EAAOA,SAAWA,GAAUA,GACzDC,SAAS,cAATA,IACA,GAGCC,EAAaC,MAAMd,UAAWe,EAAWjC,OAAOkB,UAChDgB,EAAgC,qBAAX7B,OAAyBA,OAAOa,UAAY,KAGjEiB,EAAOJ,EAAWI,KACzBC,EAAQL,EAAWK,MACnBC,EAAWJ,EAASI,SACpBlB,EAAiBc,EAASd,eAGnBmB,EAA6C,qBAAhBC,YACpCC,EAAuC,qBAAbC,SAInBC,EAAgBV,MAAMW,QAC7BC,EAAa5C,OAAO6C,KACpBC,EAAe9C,OAAOY,OACtBmC,EAAeT,GAAuBC,YAAYS,OAG3CC,EAASC,MAChBC,EAAYC,SAGLC,GAAc,CAAChB,SAAU,MAAMiB,qBAAqB,YACpDC,EAAqB,CAAC,UAAW,gBAAiB,WAC3D,uBAAwB,iBAAkB,kBAGjCC,EAAkBC,KAAKC,IAAI,EAAG,IAAM,I,mCCzB7CrE,EAAOD,QAAUkC,EAAQ,GAARA,I,6BCjBnB,8CAEA,SAASqC,EAAQ3C,EAAQ4C,GACvB,IAAIf,EAAO7C,OAAO6C,KAAK7B,GAEvB,GAAIhB,OAAO6D,sBAAuB,CAChC,IAAIC,EAAU9D,OAAO6D,sBAAsB7C,GACvC4C,IAAgBE,EAAUA,EAAQC,QAAO,SAAUC,GACrD,OAAOhE,OAAOiE,yBAAyBjD,EAAQgD,GAAK9D,eAEtD2C,EAAKV,KAAK+B,MAAMrB,EAAMiB,GAGxB,OAAOjB,EAGM,SAASsB,EAAeC,GACrC,IAAK,IAAI9E,EAAI,EAAGA,EAAI+E,UAAUC,OAAQhF,IAAK,CACzC,IAAIiF,EAAyB,MAAhBF,UAAU/E,GAAa+E,UAAU/E,GAAK,GAE/CA,EAAI,EACNqE,EAAQ3D,OAAOuE,IAAS,GAAMC,SAAQ,SAAU3D,GAC9C,YAAeuD,EAAQvD,EAAK0D,EAAO1D,OAE5Bb,OAAOyE,0BAChBzE,OAAO0E,iBAAiBN,EAAQpE,OAAOyE,0BAA0BF,IAEjEZ,EAAQ3D,OAAOuE,IAASC,SAAQ,SAAU3D,GACxCb,OAAOC,eAAemE,EAAQvD,EAAKb,OAAOiE,yBAAyBM,EAAQ1D,OAKjF,OAAOuD,I,8BCjCT,uGA8CeO,EACd,GA0GYC,EAAwB,eAACC,EAAD,uDAAsC,GAAtC,OAA6CC,MAA0B,CAACC,gBAAgBC,sBAAuBL,EAAwBE,GAAY,CAAEI,kBAAmBC,OAEhMC,EAA6B,CACtCC,eAAgB7D,IAAS8D,QACzBC,qBAAsBA,IAQtBC,eAAgBX,IAChBY,eAAe,EACfC,mBAAmB,EACnBC,WAAY,UACZC,aAAa,I,kBCzKjBtG,EAAOD,QAAU,EAAQ,K,6BCAV,SAASwG,EAAgBC,EAAKhF,EAAKN,GAYhD,OAXIM,KAAOgF,EACT7F,OAAOC,eAAe4F,EAAKhF,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZ4F,cAAc,EACdC,UAAU,IAGZF,EAAIhF,GAAON,EAGNsF,EAZT,mC,+BCEA,SAASG,IAEP,GAC4C,qBAAnCC,gCAC4C,oBAA5CA,+BAA+BD,SAFxC,CAMIE,EAUJ,IAEED,+BAA+BD,SAASA,GACxC,MAAOG,GAGPC,QAAQC,MAAMF,KAOhBH,GACA3G,EAAOD,QAAUkC,EAAQ,K,8BChC3B,6CAEMgF,EAA+C,CAGnD,CACEC,GAAI,YACJC,YAAa,aACbC,SAAUlF,IAASmF,iBACnBC,eAAgBlF,IAAemF,gBAC/BC,cAAe,MAEjB,CACEN,GAAI,SACJC,YAAa,SACbC,SAAUlF,IAASmF,iBACnBC,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,kBACJC,YAAa,mBACbC,SAAUlF,IAASmF,iBACnBC,eAAgBlF,IAAesF,cAOjC,CACER,GAAI,iBACJC,YAAa,kBACbC,SAAUlF,IAASmF,iBACnBC,eAAgBlF,IAAeuF,iBAQjC,CACET,GAAI,SACJC,YAAa,SACbC,SAAUlF,IAASmF,iBACnBC,eAAgBlF,IAAeqF,gBAI7BG,EAAoC,CACxC,CACEV,GAAI,gBACJC,YAAa,kBACbC,SAAUlF,IAAS2F,MACnBP,eAAgBlF,IAAe0F,oBAQjC,CACEZ,GAAI,cACJC,YAAa,eACbC,SAAUlF,IAAS2F,MACnBP,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,eACJC,YAAa,iBACbC,SAAUlF,IAAS2F,MACnBL,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,qBACJC,YAAa,uBACbC,SAAUlF,IAAS2F,MACnBL,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,iBACJC,YAAa,mBACbC,SAAUlF,IAAS2F,MACnBL,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,kBACJC,YAAa,oBACbC,SAAUlF,IAAS2F,MACnBL,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,aACJC,YAAa,uBACbC,SAAUlF,IAAS2F,MACnBL,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,2BACJC,YAAa,8BACbC,SAAUlF,IAAS2F,MACnBP,eAAgBlF,IAAe2F,mBAI7BC,EAAsC,CAC1C,CACEd,GAAI,qBACJC,YAAa,uBACbC,SAAUlF,IAAS+F,OACnBC,YAAa/F,IAAYgG,eACzBb,eAAgBlF,IAAe0F,oBAEjC,CACEZ,GAAI,aACJC,YAAa,cACbC,SAAUlF,IAAS+F,OACnBC,YAAa/F,IAAYgG,eACzBb,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,2BACJC,YAAa,mBACbC,SAAUlF,IAAS+F,OACnBC,YAAa/F,IAAYiG,UACzBd,eAAgBlF,IAAesF,cAEjC,CACER,GAAI,iBACJC,YAAa,QACbC,SAAUlF,IAAS+F,OACnBC,YAAa/F,IAAYiG,UACzBd,eAAgBlF,IAAemF,iBASjC,CACEL,GAAI,4BACJC,YAAa,mBACbC,SAAUlF,IAAS+F,OACnBC,YAAa/F,IAAYkG,WACzBf,eAAgBlF,IAAesF,cAEjC,CACER,GAAI,kBACJC,YAAa,QACbC,SAAUlF,IAAS+F,OACnBC,YAAa/F,IAAYkG,WACzBf,eAAgBlF,IAAemF,kBAW7Be,EAAuC,CAC3C,CACEpB,GAAI,iBACJC,YAAa,UACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAEjB,CACEN,GAAI,sBACJC,YAAa,gBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYqG,OAEzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAEjB,CACEN,GAAI,mBACJC,YAAa,aACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYsG,OAEzBnB,eAAgBlF,IAAeqF,cAC/BD,cAAe,MAEjB,CACEN,GAAI,qBACJC,YAAa,eACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYsG,OAEzBnB,eAAgBlF,IAAeqF,cAC/BD,cAAe,MAEjB,CACEN,GAAI,yBACJC,YAAa,mBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYsG,OAEzBnB,eAAgBlF,IAAeqF,cAC/BD,cAAe,MAEjB,CACEN,GAAI,gCACJC,YAAa,yBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,cAC/BD,cAAe,MAEjB,CACEN,GAAI,0BACJC,YAAa,mBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYsG,OAEzBnB,eAAgBlF,IAAeqF,cAC/BD,cAAe,MAEjB,CACEN,GAAI,4BACJC,YAAa,qBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYsG,OAEzBnB,eAAgBlF,IAAeqF,cAC/BD,cAAe,MAEjB,CACEN,GAAI,sBACJC,YAAa,oBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYuG,MACzBpB,eAAgBlF,IAAemF,gBAC/BoB,WAAW,EACXnB,cAAe,MAEjB,CACEN,GAAI,mBACJC,YAAa,gBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYuG,MACzBpB,eAAgBlF,IAAemF,gBAC/BoB,WAAW,EACXnB,cAAe,MAEjB,CACEN,GAAI,kCACJC,YAAa,mBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYuG,MACzBpB,eAAgBlF,IAAemF,gBAC/BoB,WAAW,EACXnB,cAAe,MAEjB,CACEN,GAAI,oCACJC,YAAa,qBACbC,SAAUlF,IAASqG,QACnBL,YAAa/F,IAAYuG,MACzBpB,eAAgBlF,IAAemF,gBAC/BoB,WAAW,EACXnB,cAAe,OAIboB,EAA0C,CAC9C,CACE1B,GAAI,mBACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,kBACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,oBACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,qBACJC,YAAa,gBACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,oBACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,oBACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,gBACJC,YAAa,WACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,kBACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY2G,iBACzBxB,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,2BACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,0BACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,4BACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,6BACJC,YAAa,gBACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,4BACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,4BACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,wBACJC,YAAa,WACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,0BACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAY4G,eACzBzB,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,oBACJC,YAAa,eACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,iBACJC,YAAa,YACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,kBACJC,YAAa,aACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,iBACJC,YAAa,YACbC,SAAUlF,IAAS2G,WACnBX,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,kBAI7BqB,EAAuC,CAC3C,CACE9B,GAAI,gBACJC,YAAa,SACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,mBACJC,YAAa,aACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,+BACJC,YAAa,yBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAEjB,CACEN,GAAI,yBACJC,YAAa,cACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAEjB,CACEN,GAAI,4BACJC,YAAa,iBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAGjB,CACEN,GAAI,6BACJC,YAAa,gBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAEjB,CACEN,GAAI,oCACJC,YAAa,+BACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAEjB,CACEN,GAAI,oCACJC,YAAa,+BACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,gBAC/BH,cAAe,MAUjB,CACEN,GAAI,mBACJC,YAAa,gBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,MAEjB,CACEN,GAAI,mBACJC,YAAa,qBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,qBACJC,YAAa,sBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,MAEjB,CACEN,GAAI,wBACJC,YAAa,8BACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,MAEjB,CACEN,GAAI,kBACJC,YAAa,YACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,mBACJC,YAAa,aACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,oBACJC,YAAa,mBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAGjC,CACEP,GAAI,2BACJC,YAAa,sBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,0BACJC,YAAa,oBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,qBACJC,YAAa,UACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYgH,aACzB7B,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,+BACJC,YAAa,cACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYgH,aACzB7B,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,4BACJC,YAAa,WACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYgH,aACzB7B,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,4BACJC,YAAa,WACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYgH,aACzB7B,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,iCACJC,YAAa,qCACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYgH,aACzB7B,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,sBACJC,YAAa,SACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,oBACJC,YAAa,OACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,qBACJC,YAAa,QACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,mBACJC,YAAa,MACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,gCACJC,YAAa,sBACbC,SAAUlF,IAAS+G,QACnBf,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAeuF,gBAC/BH,cAAe,OAIb6B,EAAgD,CACpD,CACEnC,GAAI,4BACJC,YAAa,mBACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,2BACJC,YAAa,QACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,oCACJC,YAAa,8BACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,mCACJC,YAAa,wBACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYsG,OACzBnB,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,6BACJC,YAAa,SACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,8BACJC,YAAa,SACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,6BACJC,YAAa,QACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,6BACJC,YAAa,QACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYiH,OACzB9B,eAAgBlF,IAAeuF,iBASjC,CACET,GAAI,qCACJC,YAAa,SACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYoH,eACzBjC,eAAgBlF,IAAeqF,eAUjC,CACEP,GAAI,qCACJC,YAAa,QACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYoH,eACzBjC,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,qCACJC,YAAa,QACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYoH,eACzBjC,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,wBACJC,YAAa,SACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAeuF,iBASjC,CACET,GAAI,wBACJC,YAAa,SACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYqG,OACzBlB,eAAgBlF,IAAe2F,kBAUjC,CACEb,GAAI,0CACJC,YAAa,YACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYqH,gBACzBlC,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,sCACJC,YAAa,OACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYqH,gBACzBlC,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,gCACJC,YAAa,gCACbC,SAAUlF,IAASoH,iBACnBpB,YAAa/F,IAAYsH,UACzBnC,eAAgBlF,IAAeuF,kBAY7B+B,EAAkD,CACtD,CACExC,GAAI,iBACJC,YAAa,kBACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAYyH,UACzBtC,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,cACJC,YAAa,eACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAYyH,UACzBtC,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,4BACJC,YAAa,+BACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAYyH,UACzBtC,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,iBACJC,YAAa,QACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAYyH,UACzBtC,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,kBACJC,YAAa,SACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAYyH,UACzBtC,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,wBACJC,YAAa,0BACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAYyH,UACzBpC,cAAe,KACfF,eAAgBlF,IAAemF,iBAGjC,CACEL,GAAI,0BACJC,YAAa,oBACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAY0H,OACzBrC,cAAe,KACfF,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,wBACJC,YAAa,kBACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAY0H,OACzBrC,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,4BACJC,YAAa,gBACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAY0H,OACzBrC,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,yBACJC,YAAa,mBACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAY0H,OACzBrC,cAAe,KACfF,eAAgBlF,IAAemF,iBAGjC,CACEL,GAAI,6BACJC,YAAa,iBACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAY0H,OACzBrC,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,8BACJC,YAAa,gCACbC,SAAUlF,IAASyH,mBACnBzB,YAAa/F,IAAY0H,OACzBrC,cAAe,KACfF,eAAgBlF,IAAe8G,kBAK7BY,EAAuD,CAC3D,CACE5C,GAAI,+BACJC,YAAa,QACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAY6H,cACzB1C,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,oCACJC,YAAa,mBACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAY6H,cACzB1C,eAAgBlF,IAAesF,cASjC,CACER,GAAI,sCACJC,YAAa,QACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAY8H,cACzB3C,eAAgBlF,IAAesF,cAEjC,CACER,GAAI,2CACJC,YAAa,mBACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAY8H,cACzB3C,eAAgBlF,IAAesF,cAEjC,CACER,GAAI,sCACJC,YAAa,QACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAY+H,cACzB5C,eAAgBlF,IAAesF,cAEjC,CACER,GAAI,2CACJC,YAAa,mBACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAY+H,cACzB5C,eAAgBlF,IAAesF,cAEjC,CACER,GAAI,4BACJC,YAAa,WACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAYgI,kBACzB7C,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,4BACJC,YAAa,mBACbC,SAAUlF,IAAS6H,yBACnB7B,YAAa/F,IAAYgI,kBACzB7C,eAAgBlF,IAAe0F,qBAK7BsC,EAA8C,CA6IlD,CACElD,GAAI,sBACJC,YAAa,wBACbC,SAAUlF,IAASmI,eACnBnC,YAAa/F,IAAYmI,sBACzBhD,eAAgBlF,IAAeuF,kBAI7B4C,EAAuC,CAC3C,CACErD,GAAI,cACJC,YAAa,eACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYsI,cACzBnD,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,gBACJC,YAAa,SACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYsI,cACzBnD,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,mBACJC,YAAa,aACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYsI,cACzBnD,eAAgBlF,IAAeuF,iBASjC,CACET,GAAI,gBACJC,YAAa,YACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYuI,eACzBpD,eAAgBlF,IAAe0F,oBAEjC,CACEZ,GAAI,iBACJC,YAAa,aACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYuI,eACzBpD,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,sBACJC,YAAa,kBACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYuI,eACzBpD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,mBACJC,YAAa,eACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYuI,eACzBpD,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,kBACJC,YAAa,QACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYwI,MACzBrD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,4BACJC,YAAa,mBACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYwI,MACzBrD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,iBACJC,YAAa,QACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYyI,KACzBtD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,2BACJC,YAAa,mBACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAYyI,KACzBtD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,oBACJC,YAAa,QACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAY0I,QACzBvD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,8BACJC,YAAa,mBACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAY0I,QACzBvD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,iBACJC,YAAa,QACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAY2I,KACzBxD,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,2BACJC,YAAa,mBACbC,SAAUlF,IAASsI,QACnBtC,YAAa/F,IAAY2I,KACzBxD,eAAgBlF,IAAeqF,gBAY7BsD,EAA6C,CACjD,CACE7D,GAAI,oBACJC,YAAa,uBACbC,SAAUlF,IAAS8I,cACnB1D,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,gBACJC,YAAa,iBACbC,SAAUlF,IAAS8I,cACnB1D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,MAEjB,CACEN,GAAI,yBACJC,YAAa,2BACbC,SAAUlF,IAAS8I,cACnB1D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,MAEjB,CACEN,GAAI,iBACJC,YAAa,mBACbC,SAAUlF,IAAS8I,cACnB1D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,OAmDbyD,EAAsC,CAI1C,CACE/D,GAAI,oBACJC,YAAa,cACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,qBACJC,YAAa,4BACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,iBACJC,YAAa,kBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,gBACJC,YAAa,0BACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,8BACJC,YAAa,mCACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,SACJC,YAAa,cACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,QACJC,YAAa,aACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,WACJC,YAAa,qBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,WACJC,YAAa,wBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAe2F,kBAEjC,CACEb,GAAI,aACJC,YAAa,QACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,SACJC,YAAa,SACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,MACJC,YAAa,MACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAY+I,OACzB1D,cAAe,KACfF,eAAgBlF,IAAemF,iBAGjC,CACEL,GAAI,sBACJC,YAAa,gBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB3D,cAAe,KACfF,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,sBACJC,YAAa,gBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB3D,cAAe,KACfF,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,qBACJC,YAAa,eACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB3D,cAAe,KACfF,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,sBACJC,YAAa,aACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB3D,cAAe,KACfF,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,oBACJC,YAAa,cACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB3D,cAAe,KACfF,eAAgBlF,IAAeuF,iBAEjC,CACET,GAAI,mBACJC,YAAa,gBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB3D,cAAe,KACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,uBACJC,YAAa,cACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYgJ,QACzB7D,eAAgBlF,IAAe8G,iBAGjC,CACEhC,GAAI,kBACJC,YAAa,aACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,KACfF,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,yBACJC,YAAa,mBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,KACfF,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,2BACJC,YAAa,qBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,KACfF,eAAgBlF,IAAeqF,eAUjC,CACEP,GAAI,2BACJC,YAAa,uBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,qBACJC,YAAa,gBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,KACfF,eAAgBlF,IAAemF,iBAEjC,CACEL,GAAI,mBACJC,YAAa,mBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,KACfF,eAAgBlF,IAAeqF,eAEjC,CACEP,GAAI,kBACJC,YAAa,oBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,uBACJC,YAAa,0BACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,uBACJC,YAAa,gCACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,aACJC,YAAa,uBACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,yBACJC,YAAa,4BACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,aACJC,YAAa,8BACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,iBAEjC,CACEhC,GAAI,YACJC,YAAa,6BACbC,SAAUlF,IAASsG,OACnBN,YAAa/F,IAAYiJ,OACzB5D,cAAe,mBACfF,eAAgBlF,IAAe8G,kBAG7BmC,EAAyC,CAC7C,CACInE,GAAI,sBACJC,YAAa,wBACbC,SAAUlF,IAASoJ,UACnB9D,cAAe,OACfF,eAAgBlF,IAAemF,gBAC/BoB,WAAW,GAEf,CACEzB,GAAI,oBACJC,YAAa,mBACbC,SAAUlF,IAASoJ,UACnB9D,cAAe,KACfF,eAAgBlF,IAAe8G,kBAI7BqC,EAAuC,CAC3C,CACErE,GAAI,sBACJC,YAAa,yBACbC,SAAUlF,IAASsJ,SACnBlE,eAAgBlF,IAAeqJ,cAC/BjE,cAAe,OACfmB,WAAW,EACX+C,aAAa,gWASf,CACExE,GAAI,2BACJC,YAAa,4BACbC,SAAUlF,IAASsJ,SACnBlE,eAAgBlF,IAAeqJ,cAC/BjE,cAAe,cACfmB,WAAW,EACX+C,aAAc,6DAEhB,CACExE,GAAI,uBACJC,YAAa,wBACbC,SAAUlF,IAASsJ,SACnBlE,eAAgBlF,IAAeqJ,cAC/BjE,cAAe,cACfmB,WAAW,EACX+C,aAAa,gKAMf,CACExE,GAAI,uBACJC,YAAa,wBACbC,SAAUlF,IAASsJ,SACnBlE,eAAgBlF,IAAeqJ,cAC/BjE,cAAe,cACfmB,WAAW,EACX+C,aAAc,8DAGhB,CACExE,GAAI,qBACJC,YAAa,sBACbC,SAAUlF,IAASsJ,SACnBlE,eAAgBlF,IAAeqJ,cAC/BjE,cAAe,cACfmB,WAAW,EACX+C,aAAa,kXAgBf,CACExE,GAAI,8BACJC,YAAa,gCACbC,SAAUlF,IAASsJ,SACnBlE,eAAgBlF,IAAeqJ,cAC/BjE,cAAe,OACfmB,WAAW,EACX+C,aAAa,oJAOXC,EAAuC,CAC3C,CACEzE,GAAI,aACJC,YAAa,kBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,cACJC,YAAa,cACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAEjB,CACEN,GAAI,2BACJC,YAAa,6BACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,mBACJC,YAAa,mBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAEjB,CACEN,GAAI,uBACJC,YAAa,uBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAEjB,CACEN,GAAI,kBACJC,YAAa,wBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,gCACJC,YAAa,qCACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,uBACJC,YAAa,uBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,6BACJC,YAAa,gCACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAeuF,gBAC/BH,cAAe,QAEjB,CACEN,GAAI,eACJC,YAAa,kBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAY+I,OACzB5D,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAkBjB,CACEN,GAAI,2BACJC,YAAa,2BACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,+BACJC,YAAa,4EACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAEjB,CACEN,GAAI,+BACJC,YAAa,+BACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAEjB,CACEN,GAAI,8BACJC,YAAa,8BACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,kCACJC,YAAa,kCACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAemF,gBAC/BC,cAAe,QAEjB,CACEN,GAAI,4BACJC,YAAa,qBACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAe8G,gBAC/B1B,cAAe,QAEjB,CACEN,GAAI,eACJC,YAAa,eACbC,SAAUlF,IAAS8D,QACnBkC,YAAa/F,IAAYyJ,QACzBtE,eAAgBlF,IAAemF,gBAC/BC,cAAe,SAIbqE,EAAwC,CAC5C3E,GAAI,eACJC,YAAa,eACbC,SAAUlF,IAAS4J,aACnBxE,eAAgBlF,IAAe2J,qBAC/BvE,cAAe,QAGXwE,EAAkC,CACtC9E,GAAI,SACJC,YAAa,SACbC,SAAUlF,IAAS+J,OACnB3E,eAAgBlF,IAAe8J,eAC/B1E,cAAe,QAGJvB,EAA0C,UAClDgB,EACAW,EACAI,EACAM,EACAM,EACAI,EACAK,EACAK,EACAI,EACAM,EACAG,EACAQ,EACAE,EACAI,EACAE,EACAI,EAhBkD,CAiBrDK,EACAH,K,8BCx0DF,IAAIjG,EAAoB,SAA2B1E,GAClD,OAID,SAAyBA,GACxB,QAASA,GAA0B,kBAAVA,EALlBiL,CAAgBjL,KAQxB,SAAmBA,GAClB,IAAIkL,EAAczL,OAAOkB,UAAUmB,SAAS5C,KAAKc,GAEjD,MAAuB,oBAAhBkL,GACa,kBAAhBA,GAQL,SAAwBlL,GACvB,OAAOA,EAAMmL,WAAaC,EARtBC,CAAerL,GAZdsL,CAAUtL,IAgBhB,IACIoL,EADiC,oBAAXtL,QAAyBA,OAAOyL,IAClBzL,OAAOyL,IAAI,iBAAmB,MAUtE,SAASC,EAA8BxL,EAAOyL,GAC7C,OAA0B,IAAlBA,EAAQC,OAAmBD,EAAQ/G,kBAAkB1E,GAC1D2L,GANiBC,EAMK5L,EALlByB,MAAMW,QAAQwJ,GAAO,GAAK,IAKA5L,EAAOyL,GACrCzL,EAPJ,IAAqB4L,EAUrB,SAASC,EAAkBhI,EAAQG,EAAQyH,GAC1C,OAAO5H,EAAOiI,OAAO9H,GAAQ+H,KAAI,SAASC,GACzC,OAAOR,EAA8BQ,EAASP,MAoBhD,SAASQ,EAAQpI,GAChB,OAAOpE,OAAO6C,KAAKuB,GAAQiI,OAT5B,SAAyCjI,GACxC,OAAOpE,OAAO6D,sBACX7D,OAAO6D,sBAAsBO,GAAQL,QAAO,SAAS0I,GACtD,OAAOrI,EAAOd,qBAAqBmJ,MAElC,GAI+BC,CAAgCtI,IAGnE,SAASuI,EAAmB3L,EAAQC,GACnC,IACC,OAAOA,KAAYD,EAClB,MAAM4L,GACP,OAAO,GAWT,SAASC,EAAYzI,EAAQG,EAAQyH,GACpC,IAAIc,EAAc,GAiBlB,OAhBId,EAAQ/G,kBAAkBb,IAC7BoI,EAAQpI,GAAQI,SAAQ,SAAS3D,GAChCiM,EAAYjM,GAAOkL,EAA8B3H,EAAOvD,GAAMmL,MAGhEQ,EAAQjI,GAAQC,SAAQ,SAAS3D,IAblC,SAA0BuD,EAAQvD,GACjC,OAAO8L,EAAmBvI,EAAQvD,MAC5Bb,OAAOmB,eAAe1B,KAAK2E,EAAQvD,IACpCb,OAAOsD,qBAAqB7D,KAAK2E,EAAQvD,KAWzCkM,CAAiB3I,EAAQvD,KAIzB8L,EAAmBvI,EAAQvD,IAAQmL,EAAQ/G,kBAAkBV,EAAO1D,IACvEiM,EAAYjM,GAhDf,SAA0BA,EAAKmL,GAC9B,IAAKA,EAAQgB,YACZ,OAAOd,EAER,IAAIc,EAAchB,EAAQgB,YAAYnM,GACtC,MAA8B,oBAAhBmM,EAA6BA,EAAcd,EA2CpCe,CAAiBpM,EAAKmL,EAAtBiB,CAA+B7I,EAAOvD,GAAM0D,EAAO1D,GAAMmL,GAE5Ec,EAAYjM,GAAOkL,EAA8BxH,EAAO1D,GAAMmL,OAGzDc,EAGR,SAASZ,EAAU9H,EAAQG,EAAQyH,IAClCA,EAAUA,GAAW,IACbkB,WAAalB,EAAQkB,YAAcd,EAC3CJ,EAAQ/G,kBAAoB+G,EAAQ/G,mBAAqBA,EAGzD+G,EAAQD,8BAAgCA,EAExC,IAAIoB,EAAgBnL,MAAMW,QAAQ4B,GAIlC,OAFgC4I,IADZnL,MAAMW,QAAQyB,GAKvB+I,EACHnB,EAAQkB,WAAW9I,EAAQG,EAAQyH,GAEnCa,EAAYzI,EAAQG,EAAQyH,GAJ5BD,EAA8BxH,EAAQyH,GAQ/CE,EAAUkB,IAAM,SAAsBC,EAAOrB,GAC5C,IAAKhK,MAAMW,QAAQ0K,GAClB,MAAM,IAAIrD,MAAM,qCAGjB,OAAOqD,EAAMC,QAAO,SAASC,EAAMC,GAClC,OAAOtB,EAAUqB,EAAMC,EAAMxB,KAC3B,KAGJ,IAAIyB,EAAcvB,EAElB7M,EAAOD,QAAUqO,G,6BC7HjB,SAASC,EAAS3N,GAChB,MAA6C,oBAAtCC,OAAOkB,UAAUmB,SAAS5C,KAAKM,GAGxC,SAASmF,EAAcnF,GACrB,IAAI4N,EAAKC,EAET,OAAoB,IAAhBF,EAAS3N,UAIA8N,KADbF,EAAO5N,EAAE+N,eAKc,IAAnBJ,EADJE,EAAOD,EAAKzM,aAIiC,IAAzC0M,EAAKzM,eAAe,kBAzB1B,mC,6BCAe,SAAS4M,EAAkBC,EAAKC,IAClC,MAAPA,GAAeA,EAAMD,EAAI1J,UAAQ2J,EAAMD,EAAI1J,QAE/C,IAAK,IAAIhF,EAAI,EAAG4O,EAAO,IAAIlM,MAAMiM,GAAM3O,EAAI2O,EAAK3O,IAC9C4O,EAAK5O,GAAK0O,EAAI1O,GAGhB,OAAO4O,EAPT,mC,eCAA,IAAIC,EAGJA,EAAK,WACJ,OAAOC,KADH,GAIL,IAECD,EAAIA,GAAK,IAAIrM,SAAS,cAAb,GACR,MAAOuM,GAEc,kBAAXC,SAAqBH,EAAIG,QAOrCjP,EAAOD,QAAU+O,G,6BCnBjB,SAASI,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ/N,EAAKgO,GACpE,IACE,IAAIC,EAAON,EAAI3N,GAAKgO,GAChBtO,EAAQuO,EAAKvO,MACjB,MAAO8F,GAEP,YADAqI,EAAOrI,GAILyI,EAAKC,KACPN,EAAQlO,GAERyO,QAAQP,QAAQlO,GAAO0O,KAAKN,EAAOC,GAIxB,SAASM,EAAkBC,GACxC,OAAO,WACL,IAAIvN,EAAOwM,KACPgB,EAAO/K,UACX,OAAO,IAAI2K,SAAQ,SAAUP,EAASC,GACpC,IAAIF,EAAMW,EAAGjL,MAAMtC,EAAMwN,GAEzB,SAAST,EAAMpO,GACbgO,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQrO,GAGlE,SAASqO,EAAOzI,GACdoI,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASzI,GAGnEwI,OAAMd,OA/BZ,mC,6BCAA,8CACe,SAASwB,EAA4BtP,EAAGuP,GACrD,GAAKvP,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,YAAiBA,EAAGuP,GACtD,IAAIvO,EAAIf,OAAOkB,UAAUmB,SAAS5C,KAAKM,GAAGqC,MAAM,GAAI,GAEpD,MADU,WAANrB,GAAkBhB,EAAE+N,cAAa/M,EAAIhB,EAAE+N,YAAYjO,MAC7C,QAANkB,GAAqB,QAANA,EAAoBiB,MAAMuN,KAAKxO,GACxC,cAANA,GAAqB,2CAA2CyO,KAAKzO,GAAW,YAAiBhB,EAAGuP,QAAxG,K,+DCLF,IAAMG,EAA4C,GAG9CC,OAA2B7B,EAE/B,IACE6B,EAAOpB,OACP,MAAOD,IAIH,SAAUsB,EAAWC,EAAqBC,GAC9C,GAAoB,qBAATH,EAAsB,CAE/B,IAAMI,EAAaJ,EAAaK,aAAgBL,EAAaK,cAAgB,GAI7E,IAAKD,EAASF,KAAiBH,EAAcG,GAC3CH,EAAcG,GAAeC,GACXC,EAASF,GAAeE,EAASF,IAAgB,IAC1DzN,KAAK0N,ICpBpB,EAAW,wBAAyB,U,kCCHrB,SAASjK,EAAgBC,EAAKhF,EAAKN,GAYhD,OAXIM,KAAOgF,EACT7F,OAAOC,eAAe4F,EAAKhF,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZ4F,cAAc,EACdC,UAAU,IAGZF,EAAIhF,GAAON,EAGNsF,ECVT,SAASlC,EAAQ3C,EAAQ4C,GACvB,IAAIf,EAAO7C,OAAO6C,KAAK7B,GAEvB,GAAIhB,OAAO6D,sBAAuB,CAChC,IAAIC,EAAU9D,OAAO6D,sBAAsB7C,GAC3C4C,IAAmBE,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOhE,OAAOiE,yBAAyBjD,EAAQgD,GAAK9D,eACjD2C,EAAKV,KAAK+B,MAAMrB,EAAMiB,GAG7B,OAAOjB,EAGM,SAASsB,EAAeC,GACrC,IAAK,IAAI9E,EAAI,EAAGA,EAAI+E,UAAUC,OAAQhF,IAAK,CACzC,IAAIiF,EAAS,MAAQF,UAAU/E,GAAK+E,UAAU/E,GAAK,GACnDA,EAAI,EAAIqE,EAAQ3D,OAAOuE,IAAS,GAAIC,SAAQ,SAAU3D,GACpD,EAAeuD,EAAQvD,EAAK0D,EAAO1D,OAChCb,OAAOyE,0BAA4BzE,OAAO0E,iBAAiBN,EAAQpE,OAAOyE,0BAA0BF,IAAWZ,EAAQ3D,OAAOuE,IAASC,SAAQ,SAAU3D,GAC5Jb,OAAOC,eAAemE,EAAQvD,EAAKb,OAAOiE,yBAAyBM,EAAQ1D,OAI/E,OAAOuD,EChBT,SAAS4L,EAAuBC,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,kF,wSAIT,IAAIC,EACuB,oBAAX7P,QAAyBA,OAAO8P,YAAc,eAS1DC,EAAe,WACjB,OAAO3M,KAAK4M,SAAShO,SAAS,IAAIiO,UAAU,GAAGC,MAAM,IAAIC,KAAK,MAG5DC,EAAc,CAChBC,KAAM,eAAiBN,IACvBO,QAAS,kBAAoBP,IAC7BQ,qBAAsB,WACpB,MAAO,+BAAiCR,MAQ5C,SAASlL,EAAcW,GACrB,GAAmB,kBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAIgL,EAAQhL,EAE4B,OAAjC7F,OAAO8Q,eAAeD,IAC3BA,EAAQ7Q,OAAO8Q,eAAeD,GAGhC,OAAO7Q,OAAO8Q,eAAejL,KAASgL,EAwFxC,SAASE,EAAYC,EAASC,EAAgBC,GAC5C,IAAIC,EAEJ,GAA8B,oBAAnBF,GAAqD,oBAAbC,GAA+C,oBAAbA,GAAmD,oBAAjB7M,UAAU,GAC/H,MAAM,IAAI2F,MAA8CgG,EAAuB,IAQjF,GAL8B,oBAAnBiB,GAAqD,qBAAbC,IACjDA,EAAWD,EACXA,OAAiBpD,GAGK,qBAAbqD,EAA0B,CACnC,GAAwB,oBAAbA,EACT,MAAM,IAAIlH,MAA8CgG,EAAuB,IAGjF,OAAOkB,EAASH,EAATG,CAAsBF,EAASC,GAGxC,GAAuB,oBAAZD,EACT,MAAM,IAAIhH,MAA8CgG,EAAuB,IAGjF,IAAIoB,EAAiBJ,EACjBK,EAAeJ,EACfK,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBlP,SAUrC,SAASsP,IACP,GAAIF,EACF,MAAM,IAAIxH,MAA8CgG,EAAuB,IAGjF,OAAOqB,EA2BT,SAASM,EAAUC,GACjB,GAAwB,oBAAbA,EACT,MAAM,IAAI5H,MAA8CgG,EAAuB,IAGjF,GAAIwB,EACF,MAAM,IAAIxH,MAA8CgG,EAAuB,IAGjF,IAAI6B,GAAe,EAGnB,OAFAJ,IACAF,EAAcpP,KAAKyP,GACZ,WACL,GAAKC,EAAL,CAIA,GAAIL,EACF,MAAM,IAAIxH,MAA8CgG,EAAuB,IAGjF6B,GAAe,EACfJ,IACA,IAAIK,EAAQP,EAAcQ,QAAQH,GAClCL,EAAcS,OAAOF,EAAO,GAC5BR,EAAmB,OA8BvB,SAASW,EAASC,GAChB,IAAKhN,EAAcgN,GACjB,MAAM,IAAIlI,MAA8CgG,EAAuB,IAGjF,GAA2B,qBAAhBkC,EAAOC,KAChB,MAAM,IAAInI,MAA8CgG,EAAuB,IAGjF,GAAIwB,EACF,MAAM,IAAIxH,MAA8CgG,EAAuB,IAGjF,IACEwB,GAAgB,EAChBH,EAAeD,EAAeC,EAAca,GAF9C,QAIEV,GAAgB,EAKlB,IAFA,IAAIY,EAAYd,EAAmBC,EAE1BjS,EAAI,EAAGA,EAAI8S,EAAU9N,OAAQhF,IAAK,EAEzCsS,EADeQ,EAAU9S,MAI3B,OAAO4S,EAcT,SAASG,EAAeC,GACtB,GAA2B,oBAAhBA,EACT,MAAM,IAAItI,MAA8CgG,EAAuB,KAGjFoB,EAAiBkB,EAKjBL,EAAS,CACPE,KAAM1B,EAAYE,UAWtB,SAASR,IACP,IAAIoC,EAEAC,EAAiBb,EACrB,OAAOY,EAAO,CASZZ,UAAW,SAAmBc,GAC5B,GAAwB,kBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAIzI,MAA8CgG,EAAuB,KAGjF,SAAS0C,IACHD,EAASjF,MACXiF,EAASjF,KAAKkE,KAMlB,OAFAgB,IAEO,CACLC,YAFgBH,EAAeE,OAK7BxC,GAAgB,WACtB,OAAO9B,MACNmE,EASL,OAHAN,EAAS,CACPE,KAAM1B,EAAYC,QAEbS,EAAQ,CACbc,SAAUA,EACVN,UAAWA,EACXD,SAAUA,EACVW,eAAgBA,IACTnC,GAAgBC,EAAYgB,EAuFvC,SAASyB,EAAgBC,GAIvB,IAHA,IAAIC,EAAc9S,OAAO6C,KAAKgQ,GAC1BE,EAAgB,GAEXzT,EAAI,EAAGA,EAAIwT,EAAYxO,OAAQhF,IAAK,CAC3C,IAAIuB,EAAMiS,EAAYxT,GAElB4G,EAMyB,oBAAlB2M,EAAShS,KAClBkS,EAAclS,GAAOgS,EAAShS,IAIlC,IASImS,EATAC,EAAmBjT,OAAO6C,KAAKkQ,GAWnC,KAjEF,SAA4BF,GAC1B7S,OAAO6C,KAAKgQ,GAAUrO,SAAQ,SAAU3D,GACtC,IAAImQ,EAAU6B,EAAShS,GAKvB,GAA4B,qBAJTmQ,OAAQnD,EAAW,CACpCsE,KAAM1B,EAAYC,OAIlB,MAAM,IAAI1G,MAA8CgG,EAAuB,KAGjF,GAEO,qBAFIgB,OAAQnD,EAAW,CAC5BsE,KAAM1B,EAAYG,yBAElB,MAAM,IAAI5G,MAA8CgG,EAAuB,QAoDjFkD,CAAmBH,GACnB,MAAO1E,GACP2E,EAAsB3E,EAGxB,OAAO,SAAqB8E,EAAOjB,GAKjC,QAJc,IAAViB,IACFA,EAAQ,IAGNH,EACF,MAAMA,EAcR,IAX2C,IAQvCI,GAAa,EACbC,EAAY,GAEPC,EAAK,EAAGA,EAAKL,EAAiB3O,OAAQgP,IAAM,CACnD,IAAIC,EAAON,EAAiBK,GACxBtC,EAAU+B,EAAcQ,GACxBC,EAAsBL,EAAMI,GAC5BE,EAAkBzC,EAAQwC,EAAqBtB,GAEnD,GAA+B,qBAApBuB,EAAiC,CACzBvB,GAAUA,EAAOC,KAClC,MAAM,IAAInI,MAA8CgG,EAAuB,KAGjFqD,EAAUE,GAAQE,EAClBL,EAAaA,GAAcK,IAAoBD,EAIjD,OADAJ,EAAaA,GAAcH,EAAiB3O,SAAWtE,OAAO6C,KAAKsQ,GAAO7O,QACtD+O,EAAYF,GAIpC,SAASO,EAAkBC,EAAe1B,GACxC,OAAO,WACL,OAAOA,EAAS0B,EAAczP,MAAMkK,KAAM/J,aA0B9C,SAASuP,EAAmBC,EAAgB5B,GAC1C,GAA8B,oBAAnB4B,EACT,OAAOH,EAAkBG,EAAgB5B,GAG3C,GAA8B,kBAAnB4B,GAAkD,OAAnBA,EACxC,MAAM,IAAI7J,MAA8CgG,EAAuB,KAGjF,IAAI8D,EAAsB,GAE1B,IAAK,IAAIjT,KAAOgT,EAAgB,CAC9B,IAAIF,EAAgBE,EAAehT,GAEN,oBAAlB8S,IACTG,EAAoBjT,GAAO6S,EAAkBC,EAAe1B,IAIhE,OAAO6B,EAaT,SAASC,IACP,IAAK,IAAIC,EAAO3P,UAAUC,OAAQ2P,EAAQ,IAAIjS,MAAMgS,GAAOT,EAAO,EAAGA,EAAOS,EAAMT,IAChFU,EAAMV,GAAQlP,UAAUkP,GAG1B,OAAqB,IAAjBU,EAAM3P,OACD,SAAUuK,GACf,OAAOA,GAIU,IAAjBoF,EAAM3P,OACD2P,EAAM,GAGRA,EAAM3G,QAAO,SAAU4G,EAAGC,GAC/B,OAAO,WACL,OAAOD,EAAEC,EAAEjQ,WAAM,EAAQG,gBAsB/B,SAAS+P,IACP,IAAK,IAAIJ,EAAO3P,UAAUC,OAAQ+P,EAAc,IAAIrS,MAAMgS,GAAOT,EAAO,EAAGA,EAAOS,EAAMT,IACtFc,EAAYd,GAAQlP,UAAUkP,GAGhC,OAAO,SAAUxC,GACf,OAAO,WACL,IAAIuD,EAAQvD,EAAY7M,WAAM,EAAQG,WAElCkQ,EAAY,WACd,MAAM,IAAIvK,MAA8CgG,EAAuB,MAG7EwE,EAAgB,CAClB9C,SAAU4C,EAAM5C,SAChBO,SAAU,WACR,OAAOsC,EAAUrQ,WAAM,EAAQG,aAG/BoQ,EAAQJ,EAAY/H,KAAI,SAAUoI,GACpC,OAAOA,EAAWF,MAGpB,OADAD,EAAYR,EAAQ7P,WAAM,EAAQuQ,EAAtBV,CAA6BO,EAAMrC,UACxC0C,EAAcA,EAAc,GAAIL,GAAQ,GAAI,CACjDrC,SAAUsC,Q,6BCxpBlB,IAAIK,EAAUtT,EAAQ,IAMlBuT,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdzO,aAAa,EACb0O,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRC,WAAW,EACXnD,MAAM,GAEJoD,EAAgB,CAClB1V,MAAM,EACNyE,QAAQ,EACRpD,WAAW,EACXsU,QAAQ,EACRC,QAAQ,EACRpR,WAAW,EACXqR,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTX,cAAc,EACdzO,aAAa,EACb8O,WAAW,EACXnD,MAAM,GAEJ0D,EAAe,GAInB,SAASC,EAAWC,GAElB,OAAInB,EAAQoB,OAAOD,GACVJ,EAIFE,EAAaE,EAAS,WAAiBlB,EAVhDgB,EAAajB,EAAQqB,YAhBK,CACxB,UAAY,EACZC,QAAQ,EACRjB,cAAc,EACdzO,aAAa,EACb8O,WAAW,GAYbO,EAAajB,EAAQuB,MAAQR,EAY7B,IAAI1V,EAAiBD,OAAOC,eACxBmW,EAAsBpW,OAAOoW,oBAC7BvS,EAAwB7D,OAAO6D,sBAC/BI,EAA2BjE,OAAOiE,yBAClC6M,EAAiB9Q,OAAO8Q,eACxBuF,EAAkBrW,OAAOkB,UAsC7B7B,EAAOD,QArCP,SAASkX,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqB5F,EAAe0F,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,GAI9D,IAAI5T,EAAOuT,EAAoBI,GAE3B3S,IACFhB,EAAOA,EAAKwJ,OAAOxI,EAAsB2S,KAM3C,IAHA,IAAIG,EAAgBb,EAAWS,GAC3BK,EAAgBd,EAAWU,GAEtBlX,EAAI,EAAGA,EAAIuD,EAAKyB,SAAUhF,EAAG,CACpC,IAAIuB,EAAMgC,EAAKvD,GAEf,IAAKiW,EAAc1U,MAAU4V,IAAaA,EAAU5V,OAAW+V,IAAiBA,EAAc/V,OAAW8V,IAAiBA,EAAc9V,IAAO,CAC7I,IAAIgW,EAAa5S,EAAyBuS,EAAiB3V,GAE3D,IAEEZ,EAAesW,EAAiB1V,EAAKgW,GACrC,MAAOxI,OAKf,OAAOkI,I,iBClGT,YAMA,IAgBIO,EAAS,SAAUC,GAGtB,IAAIC,EAAO,0CACPC,EAAW,EAGXC,EAAmB,GAGnBtK,EAAI,CAsBPuK,OAAQJ,EAAMD,OAASC,EAAMD,MAAMK,OAsBnCC,4BAA6BL,EAAMD,OAASC,EAAMD,MAAMM,4BAWxDC,KAAM,CACLC,OAAQ,SAASA,EAAOC,GACvB,OAAIA,aAAkBC,EACd,IAAIA,EAAMD,EAAOpF,KAAMmF,EAAOC,EAAOE,SAAUF,EAAOG,OACnD1V,MAAMW,QAAQ4U,GACjBA,EAAOjL,IAAIgL,GAEXC,EAAOI,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,UAAW,MAoBhFxF,KAAM,SAAUpS,GACf,OAAOC,OAAOkB,UAAUmB,SAAS5C,KAAKM,GAAGqC,MAAM,GAAI,IASpDwV,MAAO,SAAU/R,GAIhB,OAHKA,EAAG,MACP7F,OAAOC,eAAe4F,EAAK,OAAQ,CAAEtF,QAAS0W,IAExCpR,EAAG,MAaXoG,MAAO,SAAS4L,EAAU9X,EAAG+X,GAG5B,IAAI7L,EAAW1F,EACf,OAHAuR,EAAUA,GAAW,GAGblL,EAAEyK,KAAKlF,KAAKpS,IACnB,IAAK,SAEJ,GADAwG,EAAKqG,EAAEyK,KAAKO,MAAM7X,GACd+X,EAAQvR,GACX,OAAOuR,EAAQvR,GAKhB,IAAK,IAAI1F,KAHToL,EAA4C,GAC5C6L,EAAQvR,GAAM0F,EAEElM,EACXA,EAAEoB,eAAeN,KACpBoL,EAAMpL,GAAOgX,EAAU9X,EAAEc,GAAMiX,IAIjC,SAED,IAAK,QAEJ,OADAvR,EAAKqG,EAAEyK,KAAKO,MAAM7X,GACd+X,EAAQvR,GACJuR,EAAQvR,IAEhB0F,EAAQ,GACR6L,EAAQvR,GAAM0F,EAE2BlM,EAAKyE,SAAQ,SAAUuT,EAAGzY,GAClE2M,EAAM3M,GAAKuY,EAAUE,EAAGD,MAGzB,GAED,QACC,OAAO/X,IAYViY,YAAa,SAAUzL,GACtB,KAAOA,GAAS,CACf,IAAI7M,EAAIsX,EAAKiB,KAAK1L,EAAQ2L,WAC1B,GAAIxY,EACH,OAAOA,EAAE,GAAGyY,cAEb5L,EAAUA,EAAQ6L,cAEnB,MAAO,QAURC,YAAa,SAAU9L,EAAS+L,GAG/B/L,EAAQ2L,UAAY3L,EAAQ2L,UAAUP,QAAQY,OAAOvB,EAAM,MAAO,IAIlEzK,EAAQiM,UAAUC,IAAI,YAAcH,IAUrCI,cAAe,WACd,GAAwB,qBAAbC,SACV,OAAO,KAER,GAAI,kBAAmBA,SACtB,OAA2BA,SAA3B,cAOD,IACC,MAAM,IAAI3O,MACT,MAAO7D,GAQR,IAAIyS,GAAO,qCAAqCX,KAAK9R,EAAI0S,QAAU,IAAI,GACvE,GAAID,EAAK,CACR,IAAIE,EAAUH,SAASI,qBAAqB,UAC5C,IAAK,IAAIzZ,KAAKwZ,EACb,GAAIA,EAAQxZ,GAAGsZ,KAAOA,EACrB,OAAOE,EAAQxZ,GAIlB,OAAO,OAuBT0Z,SAAU,SAAUzM,EAAS2L,EAAWe,GAGvC,IAFA,IAAIC,EAAK,MAAQhB,EAEV3L,GAAS,CACf,IAAIiM,EAAYjM,EAAQiM,UACxB,GAAIA,EAAUW,SAASjB,GACtB,OAAO,EAER,GAAIM,EAAUW,SAASD,GACtB,OAAO,EAER3M,EAAUA,EAAQ6L,cAEnB,QAASa,IAWXG,UAAW,CAIVC,MAAOnC,EACPoC,UAAWpC,EACXqC,KAAMrC,EACNsC,IAAKtC,EA8BLuC,OAAQ,SAAUlT,EAAImT,GACrB,IAAI1C,EAAOpK,EAAEyK,KAAKpL,MAAMW,EAAEwM,UAAU7S,IAEpC,IAAK,IAAI1F,KAAO6Y,EACf1C,EAAKnW,GAAO6Y,EAAM7Y,GAGnB,OAAOmW,GA8ER2C,aAAc,SAAUC,EAAQC,EAAQC,EAAQnY,GAE/C,IAAIoY,GADJpY,EAAOA,GAA4BiL,EAAEwM,WAClBQ,GAEfI,EAAM,GAEV,IAAK,IAAIC,KAASF,EACjB,GAAIA,EAAQ5Y,eAAe8Y,GAAQ,CAElC,GAAIA,GAASJ,EACZ,IAAK,IAAIK,KAAYJ,EAChBA,EAAO3Y,eAAe+Y,KACzBF,EAAIE,GAAYJ,EAAOI,IAMrBJ,EAAO3Y,eAAe8Y,KAC1BD,EAAIC,GAASF,EAAQE,IAKxB,IAAIE,EAAMxY,EAAKiY,GAUf,OATAjY,EAAKiY,GAAUI,EAGfpN,EAAEwM,UAAUgB,IAAIxN,EAAEwM,WAAW,SAAUvY,EAAKN,GACvCA,IAAU4Z,GAAOtZ,GAAO+Y,IAC3BxL,KAAKvN,GAAOmZ,MAIPA,GAIRI,IAAK,SAASA,EAAIra,EAAGsa,EAAUlI,EAAM2F,GACpCA,EAAUA,GAAW,GAErB,IAAIF,EAAQhL,EAAEyK,KAAKO,MAEnB,IAAK,IAAItY,KAAKS,EACb,GAAIA,EAAEoB,eAAe7B,GAAI,CACxB+a,EAAS5a,KAAKM,EAAGT,EAAGS,EAAET,GAAI6S,GAAQ7S,GAElC,IAAI2B,EAAWlB,EAAET,GACbgb,EAAe1N,EAAEyK,KAAKlF,KAAKlR,GAEV,WAAjBqZ,GAA8BxC,EAAQF,EAAM3W,IAGpB,UAAjBqZ,GAA6BxC,EAAQF,EAAM3W,MACrD6W,EAAQF,EAAM3W,KAAa,EAC3BmZ,EAAInZ,EAAUoZ,EAAU/a,EAAGwY,KAJ3BA,EAAQF,EAAM3W,KAAa,EAC3BmZ,EAAInZ,EAAUoZ,EAAU,KAAMvC,OAUnCyC,QAAS,GAcTC,aAAc,SAAUC,EAAOJ,GAC9BzN,EAAE8N,kBAAkB/B,SAAU8B,EAAOJ,IAkBtCK,kBAAmB,SAAUC,EAAWF,EAAOJ,GAC9C,IAAIO,EAAM,CACTP,SAAUA,EACVM,UAAWA,EACXE,SAAU,oGAGXjO,EAAEkO,MAAMC,IAAI,sBAAuBH,GAEnCA,EAAII,SAAWhZ,MAAMd,UAAUkB,MAAM8B,MAAM0W,EAAID,UAAUM,iBAAiBL,EAAIC,WAE9EjO,EAAEkO,MAAMC,IAAI,gCAAiCH,GAE7C,IAAK,IAAWrO,EAAPjN,EAAI,EAAaiN,EAAUqO,EAAII,SAAS1b,MAChDsN,EAAEsO,iBAAiB3O,GAAmB,IAAVkO,EAAgBG,EAAIP,WAgClDa,iBAAkB,SAAU3O,EAASkO,EAAOJ,GAE3C,IAAI/B,EAAW1L,EAAEyK,KAAKW,YAAYzL,GAC9BwN,EAAUnN,EAAEwM,UAAUd,GAG1B1L,EAAEyK,KAAKgB,YAAY9L,EAAS+L,GAG5B,IAAI6C,EAAS5O,EAAQ6L,cACjB+C,GAA4C,QAAlCA,EAAOC,SAASjD,eAC7BvL,EAAEyK,KAAKgB,YAAY8C,EAAQ7C,GAG5B,IAEIsC,EAAM,CACTrO,QAASA,EACT+L,SAAUA,EACVyB,QAASA,EACT9J,KANU1D,EAAQ8O,aASnB,SAASC,EAAsBC,GAC9BX,EAAIW,gBAAkBA,EAEtB3O,EAAEkO,MAAMC,IAAI,gBAAiBH,GAE7BA,EAAIrO,QAAQiP,UAAYZ,EAAIW,gBAE5B3O,EAAEkO,MAAMC,IAAI,kBAAmBH,GAC/BhO,EAAEkO,MAAMC,IAAI,WAAYH,GACxBP,GAAYA,EAAS5a,KAAKmb,EAAIrO,SAW/B,GARAK,EAAEkO,MAAMC,IAAI,sBAAuBH,IAGnCO,EAASP,EAAIrO,QAAQ6L,gBAC2B,QAAlC+C,EAAOC,SAASjD,gBAA4BgD,EAAOM,aAAa,aAC7EN,EAAOO,aAAa,WAAY,MAG5Bd,EAAI3K,KAGR,OAFArD,EAAEkO,MAAMC,IAAI,WAAYH,QACxBP,GAAYA,EAAS5a,KAAKmb,EAAIrO,UAM/B,GAFAK,EAAEkO,MAAMC,IAAI,mBAAoBH,GAE3BA,EAAIb,QAKT,GAAIU,GAAS1D,EAAM4E,OAAQ,CAC1B,IAAIC,EAAS,IAAID,OAAO/O,EAAEiP,UAE1BD,EAAOE,UAAY,SAAUC,GAC5BT,EAAsBS,EAAIC,OAG3BJ,EAAOK,YAAYC,KAAKC,UAAU,CACjC7D,SAAUsC,EAAItC,SACdrI,KAAM2K,EAAI3K,KACVmM,gBAAgB,UAGjBd,EAAsB1O,EAAEyP,UAAUzB,EAAI3K,KAAM2K,EAAIb,QAASa,EAAItC,gBAjB7DgD,EAAsB1O,EAAEyK,KAAKC,OAAOsD,EAAI3K,QAyC1CoM,UAAW,SAAU9C,EAAMQ,EAASzB,GACnC,IAAIsC,EAAM,CACT3K,KAAMsJ,EACNQ,QAASA,EACTzB,SAAUA,GAGX,GADA1L,EAAEkO,MAAMC,IAAI,kBAAmBH,IAC1BA,EAAIb,QACR,MAAM,IAAI/P,MAAM,iBAAmB4Q,EAAItC,SAAW,qBAInD,OAFAsC,EAAIrD,OAAS3K,EAAE0P,SAAS1B,EAAI3K,KAAM2K,EAAIb,SACtCnN,EAAEkO,MAAMC,IAAI,iBAAkBH,GACvBpD,EAAM2E,UAAUvP,EAAEyK,KAAKC,OAAOsD,EAAIrD,QAASqD,EAAItC,WA2BvDgE,SAAU,SAAU/C,EAAMQ,GACzB,IAAIwC,EAAOxC,EAAQwC,KACnB,GAAIA,EAAM,CACT,IAAK,IAAItC,KAASsC,EACjBxC,EAAQE,GAASsC,EAAKtC,UAGhBF,EAAQwC,KAGhB,IAAIC,EAAY,IAAIC,EAKpB,OAJAC,EAASF,EAAWA,EAAUG,KAAMpD,GAmNtC,SAASqD,EAAarD,EAAMiD,EAAWzC,EAAS8C,EAAWC,EAAUC,GACpE,IAAK,IAAI9C,KAASF,EACjB,GAAKA,EAAQ5Y,eAAe8Y,IAAWF,EAAQE,GAA/C,CAIA,IAAI+C,EAAWjD,EAAQE,GACvB+C,EAAWhb,MAAMW,QAAQqa,GAAYA,EAAW,CAACA,GAEjD,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAS1Y,SAAU2Y,EAAG,CACzC,GAAIF,GAAWA,EAAQG,OAASjD,EAAQ,IAAMgD,EAC7C,OAGD,IAAIE,EAAaH,EAASC,GACtBrD,EAASuD,EAAWvD,OACpBwD,IAAeD,EAAWC,WAC1BC,IAAWF,EAAWE,OACtB3F,EAAQyF,EAAWzF,MAEvB,GAAI2F,IAAWF,EAAWG,QAAQzb,OAAQ,CAEzC,IAAI0b,EAAQJ,EAAWG,QAAQjb,WAAWmb,MAAM,aAAa,GAC7DL,EAAWG,QAAU/E,OAAO4E,EAAWG,QAAQ/Y,OAAQgZ,EAAQ,KAMhE,IAFA,IAAID,EAAUH,EAAWG,SAAWH,EAG/BM,EAAcZ,EAAUrP,KAAMkQ,EAAMZ,EACxCW,IAAgBjB,EAAUmB,QAItBZ,GAAWW,GAAOX,EAAQa,OAH9BF,GAAOD,EAAYld,MAAM+D,OAAQmZ,EAAcA,EAAYjQ,KAC1D,CAMD,IAAIqQ,EAAMJ,EAAYld,MAEtB,GAAIic,EAAUlY,OAASiV,EAAKjV,OAE3B,OAGD,KAAIuZ,aAAerG,GAAnB,CAIA,IACIgG,EADAM,EAAc,EAGlB,GAAIT,EAAQ,CAEX,KADAG,EAAQO,EAAaT,EAASI,EAAKnE,EAAM6D,KAC3BI,EAAM1L,OAASyH,EAAKjV,OACjC,MAGD,IAAIiL,EAAOiO,EAAM1L,MACbkM,EAAKR,EAAM1L,MAAQ0L,EAAM,GAAGlZ,OAC5BlD,EAAIsc,EAIR,IADAtc,GAAKqc,EAAYld,MAAM+D,OAChBiL,GAAQnO,GACdqc,EAAcA,EAAYjQ,KAC1BpM,GAAKqc,EAAYld,MAAM+D,OAOxB,GAJAlD,GAAKqc,EAAYld,MAAM+D,OACvBoZ,EAAMtc,EAGFqc,EAAYld,iBAAiBiX,EAChC,SAID,IACC,IAAIyG,EAAIR,EACRQ,IAAMzB,EAAUmB,OAASvc,EAAI4c,GAAyB,kBAAZC,EAAE1d,OAC5C0d,EAAIA,EAAEzQ,KAENsQ,IACA1c,GAAK6c,EAAE1d,MAAM+D,OAEdwZ,IAGAD,EAAMtE,EAAKnX,MAAMsb,EAAKtc,GACtBoc,EAAM1L,OAAS4L,OAGf,KADAF,EAAQO,EAAaT,EAAS,EAAGO,EAAKT,IAErC,SAKE7N,EAAOiO,EAAM1L,MAAjB,IACIoM,EAAWV,EAAM,GACjB3D,EAASgE,EAAIzb,MAAM,EAAGmN,GACtB4O,EAAQN,EAAIzb,MAAMmN,EAAO2O,EAAS5Z,QAElCsZ,EAAQF,EAAMG,EAAIvZ,OAClByY,GAAWa,EAAQb,EAAQa,QAC9Bb,EAAQa,MAAQA,GAGjB,IAAIQ,EAAaX,EAAYlQ,KAEzBsM,IACHuE,EAAa1B,EAASF,EAAW4B,EAAYvE,GAC7C6D,GAAO7D,EAAOvV,QAGf+Z,EAAY7B,EAAW4B,EAAYN,GAEnC,IAAIQ,EAAU,IAAI9G,EAAMyC,EAAOL,EAAShN,EAAE0P,SAAS4B,EAAUtE,GAAUsE,EAAUxG,EAAOwG,GAOxF,GANAT,EAAcf,EAASF,EAAW4B,EAAYE,GAE1CH,GACHzB,EAASF,EAAWiB,EAAaU,GAG9BL,EAAc,EAAG,CAKpB,IAAIS,EAAgB,CACnBrB,MAAOjD,EAAQ,IAAMgD,EACrBW,MAAOA,GAERhB,EAAarD,EAAMiD,EAAWzC,EAAS0D,EAAYlQ,KAAMmQ,EAAKa,GAG1DxB,GAAWwB,EAAcX,MAAQb,EAAQa,QAC5Cb,EAAQa,MAAQW,EAAcX,YA5VlChB,CAAarD,EAAMiD,EAAWzC,EAASyC,EAAUG,KAAM,GAyazD,SAAiB6B,GAChB,IAAInR,EAAQ,GACRoR,EAAOD,EAAK7B,KAAKnP,KACrB,KAAOiR,IAASD,EAAKb,MACpBtQ,EAAMlL,KAAKsc,EAAKle,OAChBke,EAAOA,EAAKjR,KAEb,OAAOH,EA9aCqR,CAAQlC,IAQhB1B,MAAO,CACN1N,IAAK,GAcLqL,IAAK,SAAU5Y,EAAMwa,GACpB,IAAIS,EAAQlO,EAAEkO,MAAM1N,IAEpB0N,EAAMjb,GAAQib,EAAMjb,IAAS,GAE7Bib,EAAMjb,GAAMsC,KAAKkY,IAYlBU,IAAK,SAAUlb,EAAM+a,GACpB,IAAI+D,EAAY/R,EAAEkO,MAAM1N,IAAIvN,GAE5B,GAAK8e,GAAcA,EAAUra,OAI7B,IAAK,IAAW+V,EAAP/a,EAAI,EAAc+a,EAAWsE,EAAUrf,MAC/C+a,EAASO,KAKZpD,MAAOA,GAqBR,SAASA,EAAMrF,EAAMsF,EAASC,EAAOkH,GAUpCxQ,KAAK+D,KAAOA,EASZ/D,KAAKqJ,QAAUA,EAQfrJ,KAAKsJ,MAAQA,EAEbtJ,KAAK9J,OAAqC,GAA3Bsa,GAAc,IAAIta,OA8ElC,SAASyZ,EAAaT,EAASI,EAAKnE,EAAM6D,GACzCE,EAAQuB,UAAYnB,EACpB,IAAIF,EAAQF,EAAQrF,KAAKsB,GACzB,GAAIiE,GAASJ,GAAcI,EAAM,GAAI,CAEpC,IAAIsB,EAAmBtB,EAAM,GAAGlZ,OAChCkZ,EAAM1L,OAASgN,EACftB,EAAM,GAAKA,EAAM,GAAGpb,MAAM0c,GAE3B,OAAOtB,EAiLR,SAASf,IAER,IAAIE,EAAO,CAAEpc,MAAO,KAAMgN,KAAM,KAAMC,KAAM,MAExCmQ,EAAO,CAAEpd,MAAO,KAAMgN,KAAMoP,EAAMnP,KAAM,MAC5CmP,EAAKnP,KAAOmQ,EAGZvP,KAAKuO,KAAOA,EAEZvO,KAAKuP,KAAOA,EACZvP,KAAK9J,OAAS,EAYf,SAASoY,EAAS8B,EAAMC,EAAMle,GAE7B,IAAIiN,EAAOiR,EAAKjR,KAEZuR,EAAU,CAAExe,MAAOA,EAAOgN,KAAMkR,EAAMjR,KAAMA,GAKhD,OAJAiR,EAAKjR,KAAOuR,EACZvR,EAAKD,KAAOwR,EACZP,EAAKla,SAEEya,EAUR,SAASV,EAAYG,EAAMC,EAAMO,GAEhC,IADA,IAAIxR,EAAOiR,EAAKjR,KACPlO,EAAI,EAAGA,EAAI0f,GAASxR,IAASgR,EAAKb,KAAMre,IAChDkO,EAAOA,EAAKA,KAEbiR,EAAKjR,KAAOA,EACZA,EAAKD,KAAOkR,EACZD,EAAKla,QAAUhF,EAkBhB,GA3XAyX,EAAMD,MAAQlK,EA+Ed4K,EAAM2E,UAAY,SAASA,EAAUpc,EAAGuY,GACvC,GAAgB,iBAALvY,EACV,OAAOA,EAER,GAAIiC,MAAMW,QAAQ5C,GAAI,CACrB,IAAIsB,EAAI,GAIR,OAHAtB,EAAEyE,SAAQ,SAAU6J,GACnBhN,GAAK8a,EAAU9N,EAAGiK,MAEZjX,EAGR,IAAIuZ,EAAM,CACTzI,KAAMpS,EAAEoS,KACRsF,QAAS0E,EAAUpc,EAAE0X,QAASa,GAC9B2G,IAAK,OACLC,QAAS,CAAC,QAASnf,EAAEoS,MACrBgN,WAAY,GACZ7G,SAAUA,GAGP8G,EAAUrf,EAAE2X,MACZ0H,IACCpd,MAAMW,QAAQyc,GACjBpd,MAAMd,UAAUiB,KAAK+B,MAAM0W,EAAIsE,QAASE,GAExCxE,EAAIsE,QAAQ/c,KAAKid,IAInBxS,EAAEkO,MAAMC,IAAI,OAAQH,GAEpB,IAAIuE,EAAa,GACjB,IAAK,IAAItf,KAAQ+a,EAAIuE,WACpBA,GAAc,IAAMtf,EAAO,MAAQ+a,EAAIuE,WAAWtf,IAAS,IAAI8X,QAAQ,KAAM,UAAY,IAG1F,MAAO,IAAMiD,EAAIqE,IAAM,WAAarE,EAAIsE,QAAQ1O,KAAK,KAAO,IAAM2O,EAAa,IAAMvE,EAAInD,QAAU,KAAOmD,EAAIqE,IAAM,MAuQhHlI,EAAM4B,SACV,OAAK5B,EAAMsI,kBAKNzS,EAAEwK,6BAENL,EAAMsI,iBAAiB,WAAW,SAAUtD,GAC3C,IAAIuD,EAAUpD,KAAKqD,MAAMxD,EAAIC,MACzBhF,EAAOsI,EAAQhH,SACfrI,EAAOqP,EAAQrP,KACfmM,EAAiBkD,EAAQlD,eAE7BrF,EAAMkF,YAAYrP,EAAEyP,UAAUpM,EAAMrD,EAAEwM,UAAUpC,GAAOA,IACnDoF,GACHrF,EAAMyI,WAEL,GAGG5S,GAlBCA,EAsBT,IAAI6S,EAAS7S,EAAEyK,KAAKqB,gBAUpB,SAASgH,IACH9S,EAAEuK,QACNvK,EAAE4N,eAIJ,GAdIiF,IACH7S,EAAEiP,SAAW4D,EAAO7G,IAEhB6G,EAAOhE,aAAa,iBACvB7O,EAAEuK,QAAS,KAURvK,EAAEuK,OAAQ,CAOd,IAAIwI,EAAahH,SAASgH,WACP,YAAfA,GAA2C,gBAAfA,GAAgCF,GAAUA,EAAOG,MAChFjH,SAAS0G,iBAAiB,mBAAoBK,GAE1CpR,OAAOuR,sBACVvR,OAAOuR,sBAAsBH,GAE7BpR,OAAOwR,WAAWJ,EAAgC,IAKrD,OAAO9S,EAhqCK,CAhBkB,qBAAX0B,OACjBA,OAE6B,qBAAtByR,mBAAqCne,gBAAgBme,kBAC1Dne,KACA,IA+qCgCvC,EAAOD,UAC3CC,EAAOD,QAAU0X,GAII,qBAAXjV,IACVA,EAAOiV,MAAQA,GAyDhBA,EAAMsC,UAAU4G,OAAS,CACxB,QAAW,CACV1C,QAAS,8BACTD,QAAQ,GAET,OAAU,CACTC,QAAS,iBACTD,QAAQ,GAET,QAAW,CAEVC,QAAS,uHACTD,QAAQ,EACRzD,OAAQ,CACP,kBAAmB,CAClB0D,QAAS,6BACTF,YAAY,EACZC,QAAQ,EACRzD,OAAQ,MAET,OAAU,CACT0D,QAAS,kBACTD,QAAQ,GAET,YAAe,eACf,cAAe,YACf,KAAQ,eAGV,MAAS,CACRC,QAAS,4BACTD,QAAQ,GAET,IAAO,CACNC,QAAS,uHACTD,QAAQ,EACRzD,OAAQ,CACP,IAAO,CACN0D,QAAS,iBACT1D,OAAQ,CACP,YAAe,QACf,UAAa,iBAGf,eAAgB,GAChB,aAAc,CACb0D,QAAS,qCACT1D,OAAQ,CACP,YAAe,CACd,CACC0D,QAAS,KACT5F,MAAO,eAER,SAIH,YAAe,OACf,YAAa,CACZ4F,QAAS,YACT1D,OAAQ,CACP,UAAa,mBAMjB,OAAU,CACT,CACC0D,QAAS,kBACT5F,MAAO,gBAER,uBAIFZ,EAAMsC,UAAU4G,OAAhB,IAA8BpG,OAAO,cAAcA,OAAnD,OACC9C,EAAMsC,UAAU4G,OAAhB,OACDlJ,EAAMsC,UAAU4G,OAAhB,QAAkCpG,OAAO,mBAAmBA,OAAS9C,EAAMsC,UAAU4G,OAGrFlJ,EAAMgE,MAAMrC,IAAI,QAAQ,SAAUmC,GAEhB,WAAbA,EAAIzI,OACPyI,EAAIuE,WAAJ,MAA0BvE,EAAInD,QAAQE,QAAQ,QAAS,SAIzD3X,OAAOC,eAAe6W,EAAMsC,UAAU4G,OAAOf,IAAK,aAAc,CAY/D1e,MAAO,SAAoB0f,EAASjJ,GACnC,IAAIkJ,EAAsB,GAC1BA,EAAoB,YAAclJ,GAAQ,CACzCsG,QAAS,oCACTF,YAAY,EACZxD,OAAQ9C,EAAMsC,UAAUpC,IAEzBkJ,EAAmB,MAAY,uBAE/B,IAAItG,EAAS,CACZ,iBAAkB,CACjB0D,QAAS,4BACT1D,OAAQsG,IAGVtG,EAAO,YAAc5C,GAAQ,CAC5BsG,QAAS,UACT1D,OAAQ9C,EAAMsC,UAAUpC,IAGzB,IAAImJ,EAAM,GACVA,EAAIF,GAAW,CACd3C,QAAS/E,OAAO,wFAAwFhU,OAAOoT,QAAQ,OAAO,WAAc,OAAOsI,KAAa,KAChK7C,YAAY,EACZC,QAAQ,EACRzD,OAAQA,GAGT9C,EAAMsC,UAAUO,aAAa,SAAU,QAASwG,MAGlDngB,OAAOC,eAAe6W,EAAMsC,UAAU4G,OAAOf,IAAK,eAAgB,CAYjE1e,MAAO,SAAU6f,EAAUpJ,GAC1BF,EAAMsC,UAAU4G,OAAOf,IAAIrF,OAAO,gBAAgBzX,KAAK,CACtDmb,QAAS/E,OACR,aAAahU,OAAS,MAAQ6b,EAAW,IAAM,iDAAiD7b,OAChG,KAED6Y,YAAY,EACZxD,OAAQ,CACP,YAAa,WACb,aAAc,CACb0D,QAAS,WACT1D,OAAQ,CACP,MAAS,CACR0D,QAAS,yCACTF,YAAY,EACZ1F,MAAO,CAACV,EAAM,YAAcA,GAC5B4C,OAAQ9C,EAAMsC,UAAUpC,IAEzB,YAAe,CACd,CACCsG,QAAS,KACT5F,MAAO,eAER,eASPZ,EAAMsC,UAAUiH,KAAOvJ,EAAMsC,UAAU4G,OACvClJ,EAAMsC,UAAUkH,OAASxJ,EAAMsC,UAAU4G,OACzClJ,EAAMsC,UAAUmH,IAAMzJ,EAAMsC,UAAU4G,OAEtClJ,EAAMsC,UAAUoH,IAAM1J,EAAMsC,UAAUK,OAAO,SAAU,IACvD3C,EAAMsC,UAAUqH,KAAO3J,EAAMsC,UAAUoH,IACvC1J,EAAMsC,UAAUsH,KAAO5J,EAAMsC,UAAUoH,IACvC1J,EAAMsC,UAAUuH,IAAM7J,EAAMsC,UAAUoH,IAOrC,SAAU1J,GAEV,IAAI8J,EAAS,8EAEb9J,EAAMsC,UAAUyH,IAAM,CACrB,QAAW,mBACX,OAAU,CACTvD,QAAS,iDACT1D,OAAQ,CACP,KAAQ,WACR,6BAA8B,CAC7B0D,QAAS,4FACTF,YAAY,EACZ1F,MAAO,YAER,QAAW,CACV4F,QAAS,yCACTF,YAAY,KAKf,IAAO,CAENE,QAAS/E,OAAO,eAAiBqI,EAAOrc,OAAS,IAAM,8BAA8BA,OAAS,OAAQ,KACtG8Y,QAAQ,EACRzD,OAAQ,CACP,SAAY,QACZ,YAAe,UACf,OAAU,CACT0D,QAAS/E,OAAO,IAAMqI,EAAOrc,OAAS,KACtCmT,MAAO,SAIV,SAAY,CACX4F,QAAS/E,OAAO,qDAAuDqI,EAAOrc,OAAS,iBACvF6Y,YAAY,GAEb,OAAU,CACTE,QAASsD,EACTvD,QAAQ,GAET,SAAY,CACXC,QAAS,oFACTF,YAAY,GAEb,UAAa,gBACb,SAAY,CACXE,QAAS,kCACTF,YAAY,GAEb,YAAe,aAGhBtG,EAAMsC,UAAUyH,IAAhB,OAA8BjH,OAAO2C,KAAOzF,EAAMsC,UAAUyH,IAE5D,IAAIb,EAASlJ,EAAMsC,UAAU4G,OACzBA,IACHA,EAAOf,IAAI6B,WAAW,QAAS,OAC/Bd,EAAOf,IAAI8B,aAAa,QAAS,QA5DlC,CA+DCjK,GAOFA,EAAMsC,UAAU4H,MAAQ,CACvB,QAAW,CACV,CACC1D,QAAS,kCACTF,YAAY,EACZC,QAAQ,GAET,CACCC,QAAS,mBACTF,YAAY,EACZC,QAAQ,IAGV,OAAU,CACTC,QAAS,iDACTD,QAAQ,GAET,aAAc,CACbC,QAAS,2FACTF,YAAY,EACZxD,OAAQ,CACP,YAAe,UAGjB,QAAW,6GACX,QAAW,qBACX,SAAY,cACZ,OAAU,4DACV,SAAY,+CACZ,YAAe,iBAQhB9C,EAAMsC,UAAU6H,WAAanK,EAAMsC,UAAUK,OAAO,QAAS,CAC5D,aAAc,CACb3C,EAAMsC,UAAU4H,MAAM,cACtB,CACC1D,QAAS,0GACTF,YAAY,IAGd,QAAW,CACV,CACCE,QAAS,uBACTF,YAAY,GAEb,CACCE,QAAS,mdACTF,YAAY,IAId,SAAY,oGACZ,OAAU,CACTE,QAAS/E,OACR,aAAahU,OACb,MAGC,eAAeA,OACf,IAEA,0BAA0BA,OAC1B,IAEA,4BAA4BA,OAC5B,IAEA,sCAAsCA,OACtC,IAEA,gBAAgBA,OAChB,IAEA,oFAAoFA,OAErF,IACA,YAAYA,QAEb6Y,YAAY,GAEb,SAAY,8FAGbtG,EAAMsC,UAAU6H,WAAW,cAAc,GAAG3D,QAAU,uEAEtDxG,EAAMsC,UAAUO,aAAa,aAAc,UAAW,CACrD,MAAS,CAER2D,QAAS,yLACTF,YAAY,EACZC,QAAQ,EACRzD,OAAQ,CACP,eAAgB,CACf0D,QAAS,4BACTF,YAAY,EACZ1F,MAAO,iBACPkC,OAAQ9C,EAAMsC,UAAU8H,OAEzB,kBAAmB,UACnB,cAAe,aAIjB,oBAAqB,CACpB5D,QAAS,gMACT5F,MAAO,YAER,UAAa,CACZ,CACC4F,QAAS,sIACTF,YAAY,EACZxD,OAAQ9C,EAAMsC,UAAU6H,YAEzB,CACC3D,QAAS,qFACTF,YAAY,EACZxD,OAAQ9C,EAAMsC,UAAU6H,YAEzB,CACC3D,QAAS,kEACTF,YAAY,EACZxD,OAAQ9C,EAAMsC,UAAU6H,YAEzB,CACC3D,QAAS,8eACTF,YAAY,EACZxD,OAAQ9C,EAAMsC,UAAU6H,aAG1B,SAAY,8BAGbnK,EAAMsC,UAAUO,aAAa,aAAc,SAAU,CACpD,SAAY,CACX2D,QAAS,QACTD,QAAQ,EACR3F,MAAO,WAER,kBAAmB,CAClB4F,QAAS,2EACTD,QAAQ,EACRzD,OAAQ,CACP,uBAAwB,CACvB0D,QAAS,QACT5F,MAAO,UAER,cAAiB,CAChB4F,QAAS,mEACTF,YAAY,EACZxD,OAAQ,CACP,4BAA6B,CAC5B0D,QAAS,YACT5F,MAAO,eAER6E,KAAMzF,EAAMsC,UAAU6H,aAGxB,OAAU,YAGZ,kBAAmB,CAClB3D,QAAS,4EACTF,YAAY,EACZC,QAAQ,EACR3F,MAAO,cAITZ,EAAMsC,UAAUO,aAAa,aAAc,WAAY,CACtD,mBAAoB,CACnB2D,QAAS,oFACTF,YAAY,EACZ1F,MAAO,cAILZ,EAAMsC,UAAU4G,SACnBlJ,EAAMsC,UAAU4G,OAAOf,IAAI6B,WAAW,SAAU,cAIhDhK,EAAMsC,UAAU4G,OAAOf,IAAI8B,aAC1B,yNAAyNxc,OACzN,eAIFuS,EAAMsC,UAAU+H,GAAKrK,EAAMsC,UAAU6H,WAOpC,WAEA,GAAqB,qBAAVnK,GAA6C,qBAAb6B,SAA3C,CAKKyI,QAAQlgB,UAAUmgB,UACtBD,QAAQlgB,UAAUmgB,QAAUD,QAAQlgB,UAAUogB,mBAAqBF,QAAQlgB,UAAUqgB,uBAGtF,IAMIC,EAAa,CAChB,GAAM,aACN,GAAM,SACN,GAAM,OACN,IAAO,aACP,KAAQ,aACR,GAAM,OACN,IAAO,QACP,EAAK,IACL,IAAO,SAQJC,EAAW,iFAuDf3K,EAAMgE,MAAMrC,IAAI,uBAAuB,SAAUmC,GAChDA,EAAIC,UAAY,KAAO4G,KAGxB3K,EAAMgE,MAAMrC,IAAI,uBAAuB,SAAUmC,GAChD,IAAI8G,EAAqC9G,EAAIrO,QAC7C,GAAImV,EAAIL,QAAQI,GAAW,CAC1B7G,EAAI3K,KAAO,GAEXyR,EAAIhG,aArEY,kBACG,WAuEnB,IAAIzL,EAAOyR,EAAIC,YAAYhJ,SAASiJ,cAAc,SAClD3R,EAAKoL,YA3Fe,gBA6FpB,IAAIzC,EAAM8I,EAAIG,aAAa,YAEvBvJ,EAAWsC,EAAItC,SACnB,GAAiB,SAAbA,EAAqB,CAGxB,IAAIwJ,GAAa,WAAW7J,KAAKW,IAAQ,CAAC,CAAE,SAAS,GACrDN,EAAWkJ,EAAWM,IAAcA,EAIrChL,EAAMO,KAAKgB,YAAYpI,EAAMqI,GAC7BxB,EAAMO,KAAKgB,YAAYqJ,EAAKpJ,GAG5B,IAAIyJ,EAAajL,EAAMyD,QAAQwH,WAC3BA,GACHA,EAAWC,cAAc1J,GA7E5B,SAAkBM,EAAKqJ,EAAS5b,GAC/B,IAAI6b,EAAM,IAAIC,eACdD,EAAIE,KAAK,MAAOxJ,GAAK,GACrBsJ,EAAIG,mBAAqB,WAnCJ,IAAUC,EAAQhD,EAoChB,GAAlB4C,EAAIvC,aACHuC,EAAII,OAAS,KAAOJ,EAAIK,aAC3BN,EAAQC,EAAIK,cAERL,EAAII,QAAU,IACjBjc,GAzC2Bic,EAyCLJ,EAAII,OAzCShD,EAyCD4C,EAAIM,WAxCnC,gBAAaF,EAAS,yBAA2BhD,IA0CpDjZ,EAxCuB,mDA6C3B6b,EAAIO,KAAK,MAiERC,CACC9J,GACA,SAAUW,GAETmI,EAAIhG,aApGU,kBAEE,UAqGhB,IAAIiH,EA7DR,SAAoBA,GACnB,IAAIjjB,EAAI,wCAAwCuY,KAAK0K,GAAS,IAC9D,GAAIjjB,EAAG,CACN,IAAIkjB,EAAQC,OAAOnjB,EAAE,IACjBojB,EAAQpjB,EAAE,GACVqjB,EAAMrjB,EAAE,GAEZ,OAAKojB,EAGAC,EAGE,CAACH,EAAOC,OAAOE,IAFd,CAACH,OAAO/U,GAHR,CAAC+U,EAAOA,IAqDFI,CAAWtB,EAAIG,aAAa,eACxC,GAAIc,EAAO,CACV,IAAIM,EAAQ1J,EAAKhJ,MAAM,aAGnBqS,EAAQD,EAAM,GACdI,EAAkB,MAAZJ,EAAM,GAAaM,EAAM3e,OAASqe,EAAM,GAE9CC,EAAQ,IAAKA,GAASK,EAAM3e,QAChCse,EAAQnf,KAAKyf,IAAI,EAAGzf,KAAK0f,IAAIP,EAAQ,EAAGK,EAAM3e,SAC1Cye,EAAM,IAAKA,GAAOE,EAAM3e,QAC5Bye,EAAMtf,KAAKyf,IAAI,EAAGzf,KAAK0f,IAAIJ,EAAKE,EAAM3e,SAEtCiV,EAAO0J,EAAM7gB,MAAMwgB,EAAOG,GAAKvS,KAAK,MAG/BkR,EAAIjG,aAAa,eACrBiG,EAAIhG,aAAa,aAAc0H,OAAOR,EAAQ,IAKhD3S,EAAKoL,YAAc9B,EACnBzC,EAAMoE,iBAAiBjL,MAExB,SAAU5J,GAETqb,EAAIhG,aAlIU,kBAGE,UAiIhBzL,EAAKoL,YAAchV,SAMvByQ,EAAMyD,QAAQ8I,cAAgB,CAQ7BhH,UAAW,SAAmB1B,GAG7B,IAFA,IAEgBpO,EAFZyO,GAAYL,GAAahC,UAAUsC,iBAAiBwG,GAE/CniB,EAAI,EAAaiN,EAAUyO,EAAS1b,MAC5CwX,EAAMoE,iBAAiB3O,KAK1B,IAAI+W,GAAS,EAEbxM,EAAMuM,cAAgB,WAChBC,IACJld,QAAQmd,KAAK,2FACbD,GAAS,GAEVxM,EAAMyD,QAAQ8I,cAAchH,UAAUnY,MAAMkK,KAAM/J,aA/LnD,K,iDC5rDD,IAAIR,EAAwB7D,OAAO6D,sBAC/B1C,EAAiBnB,OAAOkB,UAAUC,eAClCqiB,EAAmBxjB,OAAOkB,UAAUoC,qBAExC,SAASmgB,EAAStX,GACjB,GAAY,OAARA,QAAwB0B,IAAR1B,EACnB,MAAM,IAAIuX,UAAU,yDAGrB,OAAO1jB,OAAOmM,GA+Cf9M,EAAOD,QA5CP,WACC,IACC,IAAKY,OAAO2jB,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAIR,OAAO,OAEvB,GADAQ,EAAM,GAAK,KACkC,MAAzC5jB,OAAOoW,oBAAoBwN,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHvkB,EAAI,EAAGA,EAAI,GAAIA,IACvBukB,EAAM,IAAMT,OAAOU,aAAaxkB,IAAMA,EAKvC,GAAwB,eAHXU,OAAOoW,oBAAoByN,GAAOvX,KAAI,SAAUvL,GAC5D,OAAO8iB,EAAM9iB,MAEHyP,KAAK,IACf,OAAO,EAIR,IAAIuT,EAAQ,GAIZ,MAHA,uBAAuBxT,MAAM,IAAI/L,SAAQ,SAAUwf,GAClDD,EAAMC,GAAUA,KAGf,yBADEhkB,OAAO6C,KAAK7C,OAAO2jB,OAAO,GAAII,IAAQvT,KAAK,IAM9C,MAAOrK,GAER,OAAO,GAIQ8d,GAAoBjkB,OAAO2jB,OAAS,SAAUvf,EAAQG,GAKtE,IAJA,IAAIgL,EAEAzL,EADAka,EAAKyF,EAASrf,GAGT/C,EAAI,EAAGA,EAAIgD,UAAUC,OAAQjD,IAAK,CAG1C,IAAK,IAAIR,KAFT0O,EAAOvP,OAAOqE,UAAUhD,IAGnBF,EAAe1B,KAAK8P,EAAM1O,KAC7Bmd,EAAGnd,GAAO0O,EAAK1O,IAIjB,GAAIgD,EAAuB,CAC1BC,EAAUD,EAAsB0L,GAChC,IAAK,IAAIjQ,EAAI,EAAGA,EAAIwE,EAAQQ,OAAQhF,IAC/BkkB,EAAiB/jB,KAAK8P,EAAMzL,EAAQxE,MACvC0e,EAAGla,EAAQxE,IAAMiQ,EAAKzL,EAAQxE,MAMlC,OAAO0e,I,6BCrFN3e,EAAOD,QAAUkC,EAAQ,K,8BPH3B,8C,mNA4GM,EAA+B,qBAAX,OAAyB,EAAS,OAGtD,EAAsB,GAAS,EAAM,aAAe,EAAM,YAAY,MAEtE,EAqBN,WACE,IAAI,EAAqB,EAAM,gBAAkB,CAC/C,WAAO,EACP,sBAAkB,EAClB,iBAAkB,IAGf,EAAM,WACT,EAAK,OACA,GAAK,CACR,KAAM,CACJ,MAAO,EACP,SAAU,GAEZ,SAAU,CACR,WAAY,EACZ,KAAI,EACJ,OAAQ,OAIT,EAAM,2BACT,EAAK,OACA,GAAK,CACR,yBAA0B,MAI9B,OADA,EAAM,eAAiB,EAChB,EAjDwB,GA0HjC,SAAS,EAAoB,EAA4B,GACnD,EAAY,WACd,EAAY,WAAW,EAAqB,GAAa,YAAa,GA6J1E,SAAwB,GACtB,GAAwB,qBAAb,SACT,OAEF,IAAM,EAAwB,SAAS,qBAAqB,QAAQ,GAC9D,EAAiC,SAAS,cAAc,SACxD,EAA4B,EAAqB,GAA/C,EAAW,cAAE,EAAQ,WAE7B,EAAa,aAAa,0BAA2B,QACjD,GACF,EAAa,aAAa,QAAS,GAErC,EAAa,YAAY,SAAS,eAAe,IACjD,EAAY,KAAK,QACjB,EAAK,YAAY,GAEjB,IAAM,EAAmD,SAAS,YAAY,cAC9E,EAAG,UAAU,eAAe,GAAwB,GACpD,EAAG,KAAO,CACR,SAAU,GAEZ,SAAS,cAAc,GAEvB,IAAM,EAAuB,CAC3B,aAAc,EACd,cAAe,GAGb,EACF,EAAY,yBAAyB,KAAK,GAE1C,EAAY,iBAAiB,KAAK,GA1LlC,CAAe,GASb,SAAU,EAAU,GACxB,EAAY,MAAQ,EAkCtB,WACE,GAAI,EAAY,MAAO,CAErB,IADA,IAAM,EAAkC,GACd,QAAY,yBAAZ,eAAsC,CAA3D,IAAM,EAAW,KACpB,EAAe,KAAK,EAAY,eAE9B,EAAe,OAAS,KA7B1B,SAAsB,qBAChB,IAAN,GAA0C,IAAN,IACtC,EAAoB,EAAY,kBAChC,EAAY,iBAAmB,IAEvB,IAAN,GAA0C,IAAN,IACtC,EAAoB,EAAY,0BAChC,EAAY,yBAA2B,IAuBrC,CAAW,GACX,EAAqB,GAAqB,OAAO,MAAM,GAAI,MAvC/D,GAmBF,SAAS,EAAoB,GAC3B,EAAQ,SAAQ,SAAC,GACf,IAAM,EAAiC,GAAgB,EAAY,aAC/D,GAAgB,EAAa,eAC/B,EAAa,cAAc,YAAY,MAqC7C,SAAS,EAAqB,GACpB,MAAuB,EAAlB,MACT,GAAoB,EAiCxB,MAAO,CACL,aA/B6C,GAAmB,IAAI,KACpE,SAAC,GACC,IAAM,EAAgC,EAAa,MACnD,GAAI,EAAW,CACb,GAAW,EAEX,IAAM,EAAkC,EAAQ,EAAM,QAAa,EAC7D,EAAuB,EAAa,cAAgB,UAe1D,OAVE,IACC,GACD,WACE,KAAa,IACE,qBAAV,OACP,OAEA,QAAQ,KAAK,0CAAmC,EAAS,+BAAuB,EAAY,OAGvF,GAAe,EAGtB,OAAO,EAAa,aAMG,KAAK,IAChC,SAAU,M,0gBQ1VF4iB,E,wJAAZ,M,mQAkDA,IAeMC,EAAY,cAAetiB,GAAU,OAAO2N,KAAK4U,UAAvD,UACMC,EACJ,cAAexiB,GAAU,0BAA0B2N,KAAK4U,UAD1D,UAGMlM,EAAN,0CA8BqBoM,E,+MAQnBnR,MAAQ,CACNoR,SAAS,G,EAOXC,oBAAsB,WACpB,IAAMC,EAAQ,EAAd,OAEA,MAH0B,IAMlBlkB,EAAwCkkB,EANtB,MAMXC,EAAiCD,EANtB,eAMKE,EAAiBF,EANtB,aAQ1B,gBAAmB,CACjBlkB,MADiB,EAEjBmkB,eAFiB,EAGjBC,mB,EAIJC,UAAY,qBACVrL,EAAKA,UAAUA,EAAGA,GAAUA,MADlB,O,EAGZsL,cAAgB,YAAiD,IAAhCC,EAAgC,0DACrC,EADqC,SACvDjM,EADuD,QAChDkM,EADgD,SAG/D,GAAIlM,EAAMA,QAAUkM,GAApB,EAAiC,CAE/B,iBAAsBlM,EAAMA,MAAMA,EAAGkM,EAArC,GAGA,IAAM/F,EAAQ,iBAAd,OAEA,GAAIA,EAjFV,IAiFiC,CACzB,IAAMgG,EAAShG,EAlFvB,IAoFQ,iBAAsBnG,EAAMA,MAAMA,EAAlC,GACA,kBAAuBpV,KAAKA,IAAI,kBAATA,EAAvB,IAIJ,IAAMwhB,EAAYC,KAAlB,MAEA,KAAe,CACb,IAAMC,EAAO,iBAAoB,WAAjC,QAEA,GAAIA,GAAQF,EAAYE,EAAZF,UA7FlB,IA6FiE,CAIzD,IAAMG,EAAN,yBAGMC,EAAW,YAAeF,EAAf,MAA2BA,EAA3B,4BAAjB,GAKMG,EAAU,YAAeC,EAAf,MAA6BA,EAA7B,4BAAhB,GAIA,GAAIF,GAAYA,GAAWC,EAAQA,GAAGA,WAAWD,EAAjD,IAKE,YAFA,iBAAoB,WAApB,gBAAyDJ,UAAzD,MAQN,8BAAsCA,UAAtC,KACA,qB,EAGFO,aAAe,YACb,IAAMf,EAAQ,EAAd,OAEA,IAGAA,QAAcc,EAAdd,MACAA,iBAAuBc,EAAvBd,eACAA,eAAqBc,EAArBd,aAEA,sBAAyBc,EAAzB,S,EAGFE,YAAc,YAEZ,IAAMhB,EAAQ,EAAd,OACMU,EAAO,iBAAoB,WAAjC,QAEIA,GAAJ,IACE,iBAAoB,WAApB,gBAEET,eAAgBD,EAFlB,eAGEE,aAAcF,EAAME,gBAKxB,mBACA,mB,EAGFe,UAAY,WAAM,MACU,EADV,SACR7M,EADQ,QACDkM,EADC,SAIVQ,EAAS1M,EAAMkM,EAArB,GAEA,IAEE,kBACA,kBAAuBthB,KAAKA,IAAIshB,EAATthB,EAAvB,K,EAIJkiB,UAAY,WAAM,MACU,EADV,SACR9M,EADQ,QACDkM,EADC,SAIVQ,EAAS1M,EAAMkM,EAArB,GAEA,IAEE,kBACA,kBAAuBthB,KAAKA,IAAIshB,EAATthB,EAAqBoV,EAAMA,OAAlD,K,EAIJ+M,eAAiB,YAAU,MACkC,EADlC,MACjBC,EADiB,UACRC,EADQ,eACMC,EADN,eACoBC,EADpB,YAGzB,QACEA,MAEI3X,EAAJ,kBAHF,CA3LJ,KAmMQA,EAAEA,SACJA,gBAZuB,MAeuBA,EAfvB,OAejB9N,EAfiB,QAeVmkB,EAfU,iBAeMC,EAfN,eAiBnBsB,GAAgBH,EAAeA,IAAhB,aAArB,GAEA,GApNJ,IAoNQzX,EAAEA,UAAFA,GAA8C,QAAlD,QAIE,GAFAA,mBAEIA,EAAJ,SAAgB,CAEd,IAAM6X,EAAmB,cAAzB,GACMC,EAAYD,EAAiBA,OAAnC,EACME,EAAU,wBAAhB,EACMC,EAAY9lB,EAAA,iBAEX,cACH,OACEjB,GAAKA,GACLA,GADAA,GAEAgnB,EAAKA,WAHP,GAKSA,EAAKA,UAAUL,EAAtB,QAGF,KAXc,KAAlB,MAeA,GAAI1lB,IAAJ,EAAyB,CACvB,IAAMgmB,EAAgBL,EAAtB,GAEA,cAAiB,CACf3lB,MADe,EAIfmkB,eAAgB6B,EAAcA,WAAWA,GACrC7B,EAAiBuB,EADLM,OAJD,EAQf5B,aAAcA,GAAgBpkB,EAAMA,OAAS8lB,EAA/B1B,gBAGb,GAAID,IAAJ,EAAqC,CAE1C,IAAMwB,EAAmB,cAAzB,GACMC,EAAYD,SAAlB,EACME,EAAU,wBAAhB,EACMG,EAAgBL,EAAtB,GAEA,cAAiB,CACf3lB,MAAOA,EAAA,iBAEA,cACH,OAAIjB,GAAKA,GAAaA,GAAtB,EACS2mB,EAAP,EAGF,KAPG,KADQ,MAafvB,eAAgB,KAAKlV,KAAK,GACtBkV,EAAiBuB,EADL,OAbD,EAiBftB,aACEA,EAAesB,EAAaA,QAAUG,IAAvBH,SAEd,CACL,IAAMO,EAAmB9B,EAAiBuB,EAA1C,OAEA,cAAiB,CAEf1lB,MACEA,EAAMA,UAAUA,EAAGA,GAAnBA,EAEAA,EAAMA,UALO,GAOfmkB,eAPe,EAQfC,aAAc6B,SAGb,GAlSX,IAkSenY,EAAEA,QAA+B,CAC1C,IAAMoY,EAAe/B,IAArB,EAGA,GAFwBnkB,EAAMA,UAAUA,EAAxC,GAEoBmmB,SAASA,KAA7B,EAA6D,CAE3DrY,mBAEA,IAAMmY,EAAmB9B,EAAiBuB,EAA1C,OAEA,cAAiB,CAEf1lB,MACEA,EAAMA,UAAUA,EAAGmkB,EAAiBuB,EAApC1lB,QACAA,EAAMA,UAJO,GAMfmkB,eANe,EAOfC,aAAc6B,UAGb,GAxTX,KAwTenY,EAAEA,SAEX,GAAIqW,IAAJ,EAAqC,CAEnC,IACMrD,EADO,iBAAb,MACqBiF,MAArB,QAEA,GAAIjF,GAAWA,EAAf,GAA2B,CACzBhT,mBAGA,IAAMsY,EAAS,KAAOtF,EAAtB,GACMmF,EAAmB9B,EAAiBiC,EAA1C,OAEA,cAAiB,CAEfpmB,MACEA,EAAMA,UAAUA,EAAGA,GAAnBA,EAEAA,EAAMA,UALO,GAOfmkB,eAPe,EAQfC,aAAc6B,WAIf,GA5UX,KA6UMnY,EAAEA,SA5UR,MA6UMA,EAAEA,SA5UR,MA6UMA,EAAEA,SA5UR,MA6UMA,EAAEA,QACF,CACA,IAAIuY,SAlVV,KAoVUvY,EAAEA,SAA8BA,EAApC,SACEuY,EAAQ,CAAC,IAATA,KApVR,MAqViBvY,EAAEA,QAETuY,EADEvY,EAAJ,SACU,CAAC,IAATuY,KAEQ,CAAC,IAATA,KAxVV,MA0ViBvY,EAAEA,QAETuY,EADEvY,EAAJ,SACU,CAAC,IAATuY,KAEQ,CAAC,IAATA,KA7VV,MA+ViBvY,EAAEA,SAAmCA,EAAzC,WACLuY,EAAQ,CAAC,IAATA,MAIElC,IAAmBA,GAAvB,IACErW,mBAEA,cAAiB,CACf9N,MACEA,EAAMA,UAAUA,EAAGA,GACnBqmB,EADArmB,GAEAA,EAAMA,UAAUA,EAFhBA,GAGAqmB,EAHArmB,GAIAA,EAAMA,UANO,GAQfmkB,eARe,EASfC,aAAcA,EAAe,WAIhCN,EAEGhW,WA3XV,KA2XuBA,EAAEA,QAEfA,WA7XV,KA6XuBA,EAAEA,UAClBA,EALD,UAMCA,EAPI,QAaJgW,EAEGhW,WAvYV,KAuYuBA,EAAEA,SAAyBA,EAF3CgW,SAGGF,EAEE9V,WA3YZ,KA2YyBA,EAAEA,QAEfA,WA5YZ,KA4YyBA,EAAEA,SAAyBA,EAP9C,YAQCA,EATI,QAWLA,mBAEA,eAhZN,KAkZMA,EAAEA,UACFA,EADAA,SAECgW,IAAYhW,EAAZgW,WAEDhW,mBAGA,YAAc,SAAA8E,GAAA,MAAU,CACtBoR,SAAUpR,EAAMoR,cA1BlBlW,mBAEA,iB,EA6BJwY,cAAgB,YAAU,MACwBxY,EADxB,OAChB9N,EADgB,QACTmkB,EADS,iBACOC,EADP,eAGxB,gBACE,CACEpkB,MADF,EAEEmkB,eAFF,EAGEC,iBAJJ,GASA,0B,EAGFmC,SAAoB,CAClBjO,MADkB,GAElBkM,QAAS,G,6XAvXT3W,KAAA,wB,+BAsYO,aA8BHA,KA9BG,MAEL7N,EAFK,QAGLwmB,EAHK,QAILC,EAJK,UAKL3K,EALK,YAML4K,EANK,aAOLC,EAPK,oBAQLC,EARK,YASLC,EATK,WAULC,EAVK,OAWLC,EAXK,YAYLC,EAZK,YAaL1nB,EAbK,OAcL2nB,EAdK,cAeLC,EAfK,WAgBLC,EAhBK,WAiBLC,EAjBK,UAkBLC,EAlBK,UAmBLC,EAnBK,SAoBLC,EApBK,UA4BLC,GA5BK,oFA6BFxL,E,uHA7BE,wSAgCDyL,EAAe,CACnBC,WADmB,EAEnBC,aAFmB,EAGnBC,cAHmB,EAInBC,YAAapB,GAGTqB,EAAchM,EAApB,GAEA,OACE,8BAAe0K,MAAA,KAAYuB,EAAZ,UAAf,KACE,4BACEC,IAAK,SAAA5oB,GAAA,OAAM,SAANA,GACLonB,MAAA,KACKuB,EADL,OAEKA,EAFL,SAFF,GAOEpQ,UACEA,GAAagP,EAAoBA,IAApBA,EARjB,IAUE3gB,GAVF,EAWEhG,MAXF,EAYEioB,SAAUpa,KAZZ,cAaE4X,UAAW5X,KAbb,eAcEuZ,QAdF,EAeEG,QAfF,EAgBEF,QAhBF,EAiBEC,OAjBF,EAkBET,SAlBF,EAmBEC,KAnBF,EAoBEC,UApBF,EAqBEC,UArBF,EAsBE1nB,KAtBF,EAuBE2nB,YAvBF,EAwBEC,SAxBF,EAyBEC,SAzBF,EA0BEP,UA1BF,EA2BEsB,eA3BF,MA4BEC,aA5BF,MA6BEC,YA7BF,MA8BEC,YA9BF,EA+BEC,cAAY,IAEd,yBACE3Q,UADF,EAEE4Q,cAFF,OAGE/B,MAAA,KAAYuB,EAAZ,OAA8BA,EAA9B,cAC4B,kBAAhBD,EACR,CAAEU,wBAAyB,CAAEC,OAAQX,EADpC,WAED,CAAEY,SAxCV,KA2CE,yBAAO9W,KAAP,WAAuB4W,wBAAyB,CAAEC,OApgBpDE,kvB,8BAsaF,MAAO,CACLC,QAAS/a,KAAK0Y,W,aAINsC,GACVhb,KAAA,SAAgBgb,EAAhB,Y,GAhZgClF,EAAMmF,WAArB/E,EACZrP,aAAe,CACpB4Q,QADoB,EAEpBC,cAFoB,EAGpBC,cAHoB,EAIpBiB,QAAS,G,UALQ1C,EA8erB,IAAMgE,EAAS,CACb3N,UAAW,CACT2O,SADS,WAETC,UAFS,OAGTC,UAHS,aAITxC,QAJS,EAKTyC,SAAU,UAEZC,SAAU,CACRJ,SADQ,WAERK,IAFQ,EAGRC,KAHQ,EAIRC,OAJQ,OAKRC,MALQ,OAMRC,OANQ,OAORC,MAPQ,UAQRP,SARQ,SASRQ,oBATQ,YAURC,oBAVQ,cAWRC,oBAAqB,eAEvB9N,UAAW,CACTiN,SADS,WAETc,cAAe,QAEjBC,OAAQ,CACNC,OADM,EAENC,OAFM,EAGNC,WAHM,OAINhB,UAJM,UAKNiB,QALM,UAMNC,WANM,UAONC,SAPM,UAQNC,UARM,UASNC,qBATM,UAUNC,WAVM,UAWNC,cAXM,UAYNC,WAZM,UAaNnF,QAbM,UAcNoF,WAdM,UAeNC,cAfM,UAgBNC,cAhBM,UAiBNC,WAjBM,WAkBNC,UAlBM,WAmBNC,aAAc,iB,kCClmBlB,IAAiDC,EAS9C3pB,KAT8C2pB,EASxC,WACT,OAAiB,WACP,IAAIC,EAAuB,CAE/BC,IACC,SAASC,EAAyBC,EAAqBzsB,GAE9D,aACqBA,EAAoBU,EAAE+rB,EAAqB,CACzC,EAAK,WAAa,YAEpB,IAAIC,EAAqD1sB,EAAoB,KACzE2sB,EAAqC3sB,EAAoB,KACzD4sB,EAAqC5sB,EAAoB,KAKlF,SAAS6sB,EAAkB3nB,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAmB7S,IAAIoV,EAA2B,WAC7B,SAASA,EAAYC,EAAOlgB,IAtB9B,SAAyBmgB,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAuB5G2I,CAAgBje,KAAM6d,GAEtB7d,KAAKke,IAAM,GACX,IAAIC,EAAKne,KACLke,EAAMle,KAAKke,IACfle,KAAKoe,YAAS3e,EACdO,KAAK8d,MAAQA,EACb9d,KAAKqe,eAAiB,GACtBre,KAAKse,eAAY7e,EAEjBO,KAAKue,QAAU3gB,EAAUA,EAAQwT,WAAQ3R,EACzCO,KAAKwe,cAAc5gB,GAAUA,EAAQ4gB,YAErC,IAAIjrB,EAAOgX,SAASiJ,cAAc,OAClCjgB,EAAKuW,UAAY,8BACjBoU,EAAI3qB,KAAOA,EAEX,IAAIkrB,EAAOlU,SAASiJ,cAAc,OAClCiL,EAAK3U,UAAY,yBACjBoU,EAAIO,KAAOA,EACXlrB,EAAKggB,YAAYkL,GAEjB,IAAIrO,EAAO7F,SAASiJ,cAAc,MAClCpD,EAAKtG,UAAY,kBACjB2U,EAAKlL,YAAYnD,GACjB8N,EAAI9N,KAAOA,EACX8N,EAAIJ,MAAQ,GAGZ,IAAIY,EAAcnU,SAASiJ,cAAc,UACzCkL,EAAY3a,KAAO,SACnBma,EAAIQ,YAAcA,EAClB,IAAIC,EAAKpU,SAASiJ,cAAc,MAChCmL,EAAGhG,MAAM0C,SAAW,SACpBsD,EAAGhG,MAAM8C,OAAS,IAClBkD,EAAGpL,YAAYmL,GACftO,EAAKmD,YAAYoL,GAEjB,SAASC,EAAgBxO,EAAMyO,EAAUf,GACvCA,EAAM1nB,SAAQ,SAAU0oB,GACtB,GAAkB,cAAdA,EAAK/a,KAAsB,CAE7B,IAAIgb,EAAYxU,SAASiJ,cAAc,OACvCuL,EAAUjV,UAAY,uBAEtB,IAAIkV,EAAMzU,SAASiJ,cAAc,MAEjCwL,EAAIzL,YAAYwL,GAEhB3O,EAAKmD,YAAYyL,OACZ,CACL,IAAIC,EAAU,GAEVC,EAAO3U,SAASiJ,cAAc,MAElCpD,EAAKmD,YAAY2L,GAEjB,IAAIC,EAAS5U,SAASiJ,cAAc,UAoBpC,GAnBA2L,EAAOpb,KAAO,SACdob,EAAOrV,UAAYgV,EAAKhV,UACxBmV,EAAQE,OAASA,EAEbL,EAAKM,QACPD,EAAOC,MAAQN,EAAKM,OAGlBN,EAAKO,QACPF,EAAOG,QAAU,SAAUC,GACzBA,EAAMC,iBACNrB,EAAGsB,OACHX,EAAKO,UAITH,EAAK3L,YAAY4L,GAGbL,EAAKY,QAAS,CAEhB,IAAIC,EAAUpV,SAASiJ,cAAc,OACrCmM,EAAQ7V,UAAY,kBACpBqV,EAAO5L,YAAYoM,GACnB,IAIIC,EAJAC,EAAUtV,SAASiJ,cAAc,OAMrC,GALAqM,EAAQ/V,UAAY,mBAAqBgV,EAAKO,MAAQ,GAAK,4BAC3DQ,EAAQtM,YAAYhJ,SAASuV,eAAehB,EAAK3T,OACjDgU,EAAO5L,YAAYsM,GAGff,EAAKO,MAAO,CAEdF,EAAOrV,WAAa,sBACpB,IAAIiW,EAAexV,SAASiJ,cAAc,UAC1CuM,EAAahc,KAAO,SACpBkb,EAAQc,aAAeA,EACvBA,EAAajW,UAAY,oBACzB,IAAIkW,EAAoBzV,SAASiJ,cAAc,OAC/CwM,EAAkBlW,UAAY,oBAC9BiW,EAAaxM,YAAYyM,GAEzBd,EAAK3L,YAAYwM,GAEbjB,EAAKmB,eACPF,EAAaX,MAAQN,EAAKmB,cAG5BL,EAAgBG,MACX,CAEL,IAAIG,EAAY3V,SAASiJ,cAAc,OACvC0M,EAAUpW,UAAY,oBACtBqV,EAAO5L,YAAY2M,GACnBN,EAAgBT,EAIlBS,EAAcN,QAAU,SAAUC,GAChCA,EAAMC,iBAENrB,EAAGgC,cAAclB,GAEjBW,EAAcQ,SAIhB,IAAIC,EAAc,GAClBpB,EAAQqB,SAAWD,EACnB,IAAIE,EAAKhW,SAASiJ,cAAc,MAChCyL,EAAQsB,GAAKA,EACbA,EAAGzW,UAAY,kBACfyW,EAAG5H,MAAM8C,OAAS,IAElByD,EAAK3L,YAAYgN,GAEjB3B,EAAgB2B,EAAIF,EAAavB,EAAKY,aACjC,CAEL,IAAIc,EAAOjW,SAASiJ,cAAc,OAClCgN,EAAK1W,UAAY,kBACjBqV,EAAO5L,YAAYiN,GACnB,IAAIrV,EAAOZ,SAASiJ,cAAc,OAClCrI,EAAKrB,UAAY,kBACjBqB,EAAKoI,YAAYhJ,SAASuV,gBAAe,EAAGpC,EAAoD+C,IAAI3B,EAAK3T,QACzGgU,EAAO5L,YAAYpI,GAGrB0T,EAAS9qB,KAAKkrB,OAKpBL,CAAgBxO,EAAMpQ,KAAKke,IAAIJ,MAAOA,GAGtC9d,KAAK0gB,UAAY,EAEjB5C,EAAM1nB,SAAQ,SAAU0oB,GACtB,IAAIrD,EAAqE,IAA3DqC,EAAM5nB,QAAU4oB,EAAKY,QAAUZ,EAAKY,QAAQxpB,OAAS,IACnEioB,EAAGuC,UAAYrrB,KAAKyf,IAAIqJ,EAAGuC,UAAWjF,MAhL5C,IAAsBuC,EAAa2C,EAAYC,EAoe7C,OApeoB5C,EA0LPH,GA1LoB8C,EA0LP,CAAC,CACzBluB,IAAK,qBACLN,MAAO,WACL,IAAI0uB,EAAU,GACV1C,EAAKne,KAmBT,OAlBAA,KAAKke,IAAIJ,MAAM1nB,SAAQ,SAAU0oB,GAC/B+B,EAAQ9sB,KAAK+qB,EAAKK,QAEdL,EAAKiB,cACPc,EAAQ9sB,KAAK+qB,EAAKiB,cAGhBjB,EAAKwB,UAAYxB,IAASX,EAAG2C,cAC/BhC,EAAKwB,SAASlqB,SAAQ,SAAU2qB,GAC9BF,EAAQ9sB,KAAKgtB,EAAQ5B,QAEjB4B,EAAQhB,cACVc,EAAQ9sB,KAAKgtB,EAAQhB,oBAMtBc,IASR,CACDpuB,IAAK,OACLN,MAAO,SAAcisB,EAAQ4C,EAAOC,GAClCjhB,KAAKyf,OAEL,IAAIyB,GAAY,EACZnU,EAASqR,EAAO+C,WAChBC,EAAahD,EAAOiD,wBACpBC,EAAavU,EAAOsU,wBACpBE,EAAYP,EAAMK,wBAClBlD,EAAKne,KACTA,KAAKke,IAAIsD,gBAAiB,EAAGhE,EAA+EiE,GAAGrD,EAAQ4C,GAAO,WAC5H7C,EAAGsB,UAGD2B,EAAWM,OAAS1hB,KAAK0gB,UAAYa,EAAUG,QACxCN,EAAW7F,IAAMvb,KAAK0gB,UAAYa,EAAUhG,MAErD2F,GAAY,GAId,IAAIS,EAASV,EAAe,EAAIG,EAAW7F,IAAM+F,EAAW/F,IAE5D,GAAI2F,EAAW,CAEb,IAAIU,EAAexD,EAAOyD,aAC1B7hB,KAAKke,IAAIO,KAAK9F,MAAM6C,KAAO,IAC3Bxb,KAAKke,IAAIO,KAAK9F,MAAM4C,IAAMoG,EAASC,EAAe,KAClD5hB,KAAKke,IAAIO,KAAK9F,MAAM+I,OAAS,QAG7B1hB,KAAKke,IAAIO,KAAK9F,MAAM6C,KAAO,IAC3Bxb,KAAKke,IAAIO,KAAK9F,MAAM4C,IAAM,GAC1Bvb,KAAKke,IAAIO,KAAK9F,MAAM+I,OAAS,MAG/B,GAAI1hB,KAAKwe,YAAa,CACpB,IAEIsD,EAAwBZ,EAAYK,EAAUG,OAASN,EAAWM,OAFzD,GAE2EN,EAAW7F,IAAMgG,EAAUhG,IAFtG,GAGbvb,KAAKke,IAAI9N,KAAKuI,MAAM+H,UAAYoB,EAAwB,KACxD9hB,KAAKke,IAAI9N,KAAKuI,MAAMoJ,UAAY,OAKlC/hB,KAAKke,IAAIsD,eAAejO,YAAYvT,KAAKke,IAAI3qB,MAE7CyM,KAAKse,WAAY,EAAGb,EAAmCuE,gBACvDhiB,KAAKoe,OAASA,EACd1M,YAAW,WACTyM,EAAGD,IAAIQ,YAAY0B,UAClB,GAECvC,EAAYoE,aACdpE,EAAYoE,YAAYxC,OAG1B5B,EAAYoE,YAAcjiB,OAM3B,CACDvN,IAAK,OACLN,MAAO,WAED6N,KAAKke,IAAIsD,iBACXxhB,KAAKke,IAAIsD,eAAeU,iBACjBliB,KAAKke,IAAIsD,gBAIdxhB,KAAKke,IAAI3qB,KAAK4tB,aAChBnhB,KAAKke,IAAI3qB,KAAK4tB,WAAWgB,YAAYniB,KAAKke,IAAI3qB,MAE1CyM,KAAKue,SACPve,KAAKue,WAILV,EAAYoE,cAAgBjiB,OAC9B6d,EAAYoE,iBAAcxiB,KAU7B,CACDhN,IAAK,gBACLN,MAAO,SAAuB8sB,GAC5B,IAAId,EAAKne,KACLoiB,EAAiBnD,IAAYjf,KAAK8gB,aAElCA,EAAe9gB,KAAK8gB,aAgBxB,GAdIA,IAEFA,EAAaP,GAAG5H,MAAM8C,OAAS,IAC/BqF,EAAaP,GAAG5H,MAAMC,QAAU,GAChClH,YAAW,WACLyM,EAAG2C,eAAiBA,IACtBA,EAAaP,GAAG5H,MAAM0D,QAAU,IAChC,EAAGoB,EAAmC4E,iBAAiBvB,EAAaP,GAAGY,WAAY,0BAEpF,KAEHnhB,KAAK8gB,kBAAerhB,IAGjB2iB,EAAgB,CACnB,IAAI7B,EAAKtB,EAAQsB,GACjBA,EAAG5H,MAAM0D,QAAU,QAEnBkE,EAAG+B,aAEH5Q,YAAW,WACT,GAAIyM,EAAG2C,eAAiB7B,EAAS,CAG/B,IAFA,IAAIsD,EAAe,EAEVrxB,EAAI,EAAGA,EAAIqvB,EAAGiC,WAAWtsB,OAAQhF,IACxCqxB,GAAgBhC,EAAGiC,WAAWtxB,GAAGoxB,aAGnC/B,EAAG5H,MAAM8C,OAAS8G,EAAe,KACjChC,EAAG5H,MAAMC,QAAU,cAEpB,IACH,EAAG6E,EAAmCgF,cAAclC,EAAGY,WAAY,uBACnEnhB,KAAK8gB,aAAe7B,KASvB,CACDxsB,IAAK,aACLN,MAAO,SAAoBotB,GACzB,IAGIsB,EAAS6B,EAAaC,EAAYC,EAHlC5sB,EAASupB,EAAMvpB,OACf6sB,EAAStD,EAAMuD,MACfC,GAAU,EAGC,KAAXF,GAIE7iB,KAAKse,YACP,EAAGb,EAAmCuF,cAAchjB,KAAKse,WAGvDte,KAAKoe,QACPpe,KAAKoe,OAAOgC,QAGdpgB,KAAKyf,OACLsD,GAAU,GACU,IAAXF,EAEJtD,EAAM0D,SAeW,KAFpBP,GADA7B,EAAU7gB,KAAKkjB,sBACOvf,QAAQ3N,MAI5B6qB,EAAQA,EAAQ3qB,OAAS,GAAGkqB,QAC5B2C,GAAU,IAfZL,GADA7B,EAAU7gB,KAAKkjB,sBACOvf,QAAQ3N,MAEV6qB,EAAQ3qB,OAAS,IAEnC2qB,EAAQ,GAAGT,QACX2C,GAAU,GAaM,KAAXF,GAEgB,sBAArB7sB,EAAO8T,YAET4Y,GADA7B,EAAU7gB,KAAKkjB,sBACOvf,QAAQ3N,IAC9B2sB,EAAa9B,EAAQ6B,EAAc,KAGjCC,EAAWvC,SAIf2C,GAAU,GACU,KAAXF,GAGTH,GADA7B,EAAU7gB,KAAKkjB,sBACOvf,QAAQ3N,IAC9B2sB,EAAa9B,EAAQ6B,EAAc,KAEQ,sBAAzBC,EAAW7Y,YAE3B6Y,EAAa9B,EAAQ6B,EAAc,IAGhCC,IAEHA,EAAa9B,EAAQA,EAAQ3qB,OAAS,IAGpCysB,GACFA,EAAWvC,QAGb2C,GAAU,GACU,KAAXF,GAGTH,GADA7B,EAAU7gB,KAAKkjB,sBACOvf,QAAQ3N,IAC9B4sB,EAAa/B,EAAQ6B,EAAc,KAEQ,sBAAzBE,EAAW9Y,WAC3B8Y,EAAWxC,QAGb2C,GAAU,GACU,KAAXF,IAGTH,GADA7B,EAAU7gB,KAAKkjB,sBACOvf,QAAQ3N,IAC9B4sB,EAAa/B,EAAQ6B,EAAc,KAEQ,sBAAzBE,EAAW9Y,YAE3B8Y,EAAa/B,EAAQ6B,EAAc,IAGhCE,IAEHA,EAAa/B,EAAQ,IAGnB+B,IACFA,EAAWxC,QACX2C,GAAU,GAGZA,GAAU,GAIRA,IACFxD,EAAM4D,kBACN5D,EAAMC,uBA/dgE7B,EAAkBK,EAAYlrB,UAAW6tB,GAAiBC,GAAajD,EAAkBK,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IAoerPkmB,EAndsB,GAsd/BA,EAAYoE,iBAAcxiB,GAIpB2jB,IACC,SAAS9F,EAAyBC,EAAqBzsB,GAE9D,aAMA,SAAS6sB,EAAkB3nB,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IALxR3X,EAAoBU,EAAE+rB,EAAqB,CACzC,EAAK,WAAa,YAiBzC,IAAI8F,EAA0B,WAC5B,SAASA,EAAWC,IAhBtB,SAAyBvF,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAiB5G2I,CAAgBje,KAAMqjB,GAEtBrjB,KAAKujB,kBAAoBD,EAAOC,kBAChCvjB,KAAKwjB,mBAAqBF,EAAOE,mBAEjCxjB,KAAKyjB,YAAcH,EAAOG,aAAe,aAEzCzjB,KAAK0jB,eAAiBJ,EAAOI,eAC7B1jB,KAAKke,IAAM,GACX,IAAIyF,EAA4BpZ,SAASiJ,cAAc,OACvDmQ,EAA0B7Z,UAAY,yCACtC9J,KAAKke,IAAIyF,0BAA4BA,EACrC,IAAIC,EAA6BrZ,SAASiJ,cAAc,OACxDoQ,EAA2BjL,MAAM0D,QAAU,OAC3CuH,EAA2B9Z,UAAY,sCACvC8Z,EAA2B3W,YAAc,yBACzCjN,KAAKke,IAAI0F,2BAA6BA,EACtCD,EAA0BpQ,YAAYqQ,GACtC,IAAIC,EAAsBtZ,SAASiJ,cAAc,QACjDqQ,EAAoB/Z,UAAY,mCAChC+Z,EAAoBlL,MAAM0D,QAAU,OACpCrc,KAAKke,IAAI2F,oBAAsBA,EAC/B,IAAIC,EAAuBvZ,SAASiJ,cAAc,QAClDsQ,EAAqBha,UAAY,oCACjCga,EAAqBnL,MAAM0D,QAAU,OACrCrc,KAAKke,IAAI4F,qBAAuBA,EAChC9jB,KAAKke,IAAI6F,qBAAuBxZ,SAASiJ,cAAc,QACvDxT,KAAKke,IAAI6F,qBAAqBja,UAAY,8BAC1C9J,KAAKke,IAAI6F,qBAAqBpL,MAAM0D,QAAU,OAzClD,IAAsB2B,EAAa2C,EAAYC,EAgN7C,OAhNoB5C,EA4CPqF,GA5CoB1C,EA4CR,CAAC,CACxBluB,IAAK,gBACLN,MAAO,WACL,OAAO6N,KAAKke,IAAIyF,4BAEjB,CACDlxB,IAAK,kBACLN,MAAO,WACL,OAAO6N,KAAKke,IAAI4F,uBAEjB,CACDrxB,IAAK,iBACLN,MAAO,WACL,OAAO6N,KAAKke,IAAI2F,sBAEjB,CACDpxB,IAAK,eACLN,MAAO,WACL,OAAO6N,KAAKke,IAAI6F,uBAEjB,CACDtxB,IAAK,wBACLN,MAAO,WACL6N,KAAKujB,mBAAqBvjB,KAAKujB,kBAC/BvjB,KAAKwjB,mBAAmBxjB,KAAKujB,qBAE9B,CACD9wB,IAAK,YACLN,MAAO,SAAmB6xB,EAAQC,GAChC,IAAIC,EAAQlkB,KAWZ,GARIA,KAAKke,IAAIiG,mBACXnkB,KAAKke,IAAIiG,iBAAiBhD,WAAWgB,YAAYniB,KAAKke,IAAIiG,kBAC1DnkB,KAAKke,IAAIiG,iBAAmB,KAC5BnkB,KAAKke,IAAI0F,2BAA2BjL,MAAM0D,QAAU,QAKlDrc,KAAKujB,mBAAqBS,EAAO9tB,OAAS,EAAG,CAC/C,IAAIiuB,EAAmB5Z,SAASiJ,cAAc,OAC9C2Q,EAAiBra,UAAY,+BAC7B,IAAIsa,EAAQ7Z,SAASiJ,cAAc,SACnC4Q,EAAMta,UAAY,yBAClBqa,EAAiB5Q,YAAY6Q,GAC7B,IAAIC,EAAQ9Z,SAASiJ,cAAc,SACnC4Q,EAAM7Q,YAAY8Q,GAClBL,EAAO5tB,SAAQ,SAAU6B,GACvB,IAAIigB,EAEJ,GAAKpjB,MAAMmD,EAAMigB,OAEV,GAAIjgB,EAAMqsB,SAAU,CACzB,IAAIC,EAASN,EAAeO,MAAK,SAAUC,GACzC,OAAOA,EAAIC,OAASzsB,EAAMqsB,YAGxBC,IACFrM,EAAOqM,EAAOrM,KAAO,SAPvBA,EAAOjgB,EAAMigB,KAWf,IAAIyM,EAAOpa,SAASiJ,cAAc,MAClCmR,EAAK7a,UAAahV,MAAMojB,GAAyB,GAAjB,eAEb,UAAfjgB,EAAM8L,KACR4gB,EAAK7a,WAAa,eAElB6a,EAAK7a,WAAa,oBAGpB,IAAI8a,EAAMra,SAASiJ,cAAc,MAC7B2L,EAAS5U,SAASiJ,cAAc,UACpC2L,EAAOrV,UAAY,0BACnB8a,EAAIrR,YAAY4L,GAChBwF,EAAKpR,YAAYqR,GACjB,IAAIC,EAAMta,SAASiJ,cAAc,MAKjC,GAJAqR,EAAIlM,MAAQ,uBACZkM,EAAI5X,YAAenY,MAAMojB,GAAuB,GAAf,MAAQA,EACzCyM,EAAKpR,YAAYsR,GAEI,kBAAV5sB,EAAoB,CAC7B,IAAI6sB,EAAOva,SAASiJ,cAAc,MAClCsR,EAAKC,QAAU,EACf,IAAIzR,EAAM/I,SAASiJ,cAAc,OACjCF,EAAIC,YAAYhJ,SAASuV,eAAe7nB,IACxC6sB,EAAKvR,YAAYD,GACjBqR,EAAKpR,YAAYuR,OACZ,CACL,IAAIE,EAAMza,SAASiJ,cAAc,MACjCwR,EAAIzR,YAAYhJ,SAASuV,eAAe7nB,EAAMqsB,UAAY,KAC1DK,EAAKpR,YAAYyR,GACjB,IAAIC,EAAM1a,SAASiJ,cAAc,MAE7B0R,EAAO3a,SAASiJ,cAAc,OAElC0R,EAAK3R,YAAYhJ,SAASuV,eAAe7nB,EAAMiZ,QAAQ3H,QAAQ,SAAU,QAEzE0b,EAAI1R,YAAY2R,GAChBP,EAAKpR,YAAY0R,GAGnBN,EAAKrF,QAAU,WACb4E,EAAMT,YAAYvL,IAGpBmM,EAAM9Q,YAAYoR,MAEpB3kB,KAAKke,IAAIiG,iBAAmBA,EAC5BnkB,KAAKke,IAAIyF,0BAA0BpQ,YAAY4Q,GAC/CnkB,KAAKke,IAAI0F,2BAA2BxE,MAAQ4E,EAAO9tB,OAAS,gBAExD8J,KAAKke,IAAIyF,0BAA0BrB,aAAetiB,KAAKke,IAAIyF,0BAA0BwB,cACvFnlB,KAAKke,IAAI0F,2BAA2BjL,MAAM0D,QAAU,QAEpDrc,KAAKke,IAAIyF,0BAA0ByB,SAAW,WAC5ClB,EAAMhG,IAAI0F,2BAA2BjL,MAAM0D,QAAU6H,EAAMhG,IAAIyF,0BAA0BrB,aAAe,GAAuD,IAAlD4B,EAAMhG,IAAIyF,0BAA0B0B,UAAkB,QAAU,SAG/KrlB,KAAKke,IAAIyF,0BAA0ByB,cAAW3lB,EAGhD,IAAIgc,EAASzb,KAAKke,IAAIyF,0BAA0BrB,cAAgBtiB,KAAKke,IAAIoH,UAAYtlB,KAAKke,IAAIoH,UAAUhD,aAAe,GAGvHtiB,KAAK0jB,eAAejI,QAEpBzb,KAAK0jB,eAAe,GAItB,IAAI6B,EAAwBvB,EAAOruB,QAAO,SAAUsC,GAClD,MAAsB,UAAfA,EAAM8L,QACZ7N,OAmBH,GAjBIqvB,EAAwB,GAC1BvlB,KAAKke,IAAI4F,qBAAqBnL,MAAM0D,QAAU,SAC9Crc,KAAKke,IAAI4F,qBAAqB0B,UAAYD,EAC1CvlB,KAAKke,IAAI4F,qBAAqBxE,QAAUtf,KAAKylB,sBAAsB/yB,KAAKsN,MACxEA,KAAKke,IAAI2F,oBAAoBlL,MAAM0D,QAAU,SAC7Crc,KAAKke,IAAI2F,oBAAoBzE,MAAQmG,EAAwB,oCAC7DvlB,KAAKke,IAAI2F,oBAAoBvE,QAAUtf,KAAKylB,sBAAsB/yB,KAAKsN,QAEvEA,KAAKke,IAAI4F,qBAAqBnL,MAAM0D,QAAU,OAC9Crc,KAAKke,IAAI2F,oBAAoBlL,MAAM0D,QAAU,QAI1B2H,EAAO0B,MAAK,SAAUztB,GACzC,MAAsB,UAAfA,EAAM8L,QAGK,CAClB,IAAImU,EAAO8L,EAAO,GAAG9L,KACrBlY,KAAKke,IAAI6F,qBAAqBpL,MAAM0D,QAAU,QAC9Crc,KAAKke,IAAI6F,qBAAqB3E,MAAStqB,MAAMojB,GAAwC,6CAAhC,uBAAyBA,EAC9ElY,KAAKke,IAAI6F,qBAAqBzE,QAAUtf,KAAKylB,sBAAsB/yB,KAAKsN,WAExEA,KAAKke,IAAI6F,qBAAqBpL,MAAM0D,QAAU,YA3MwBsB,EAAkBK,EAAYlrB,UAAW6tB,GAAiBC,GAAajD,EAAkBK,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IAgNrP0rB,EArMqB,IA0MxBsC,IACC,SAASrI,EAAyBC,EAAqBzsB,GAE9D,aAkBA,SAAS6sB,EAAkB3nB,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAjBxR3X,EAAoBU,EAAE+rB,EAAqB,CACzC,EAAK,WAAa,YAoBzC,IAAIqI,EAA4B,WAC9B,SAASA,EAAatC,GAKpB,GAZJ,SAAyBvF,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAQ5G2I,CAAgBje,KAAM4lB,GAEtB5lB,KAAKhK,OAASstB,EAAOttB,QAAU,MAE1BgK,KAAKhK,OACR,MAAM,IAAI4F,MAAM,gEAGlBoE,KAAKwZ,QAAoC,oBAAnB8J,EAAO9J,QAAyB8J,EAAO9J,QAAU,KACvExZ,KAAKyZ,OAAkC,oBAAlB6J,EAAO7J,OAAwB6J,EAAO7J,OAAS,KACpEzZ,KAAK6lB,SAAW7lB,KAAK8lB,SAASpzB,KAAKsN,MAEnCA,KAAK+lB,SAAW,SAAUxG,GACJ,IAAhBA,EAAMuD,OAAiC,IAAlBvD,EAAMyG,SAC7BhmB,KAAK8lB,SAASvG,IAEhB7sB,KAAKsN,MAEPA,KAAKimB,WAAY,EACjBjmB,KAAKkmB,gBAAiB,GAMlBlmB,KAAKwZ,SAAWxZ,KAAKyZ,UACvBlP,SAAS0G,iBAAiB,QAASjR,KAAK6lB,UACxCtb,SAAS0G,iBAAiB,QAASjR,KAAK+lB,WA/B9C,IAAsB/H,EAAa2C,EAAYC,EA+G7C,OA/GoB5C,EAwCP4H,GAxCoBjF,EAwCN,CAAC,CAC1BluB,IAAK,UACLN,MAAO,WACLoY,SAAS4b,oBAAoB,QAASnmB,KAAK6lB,UAC3Ctb,SAAS4b,oBAAoB,QAASnmB,KAAK+lB,UAE3C/lB,KAAK8lB,SAAS,CACZ9vB,OAAQuU,SAAS6b,SAapB,CACD3zB,IAAK,WACLN,MAAO,SAAkBotB,GACvB,IAAIvpB,EAASupB,EAAMvpB,OAGfA,IAAWgK,KAAKhK,QAETgK,KAAKhK,OAAO+U,SAAS/U,IAAWgK,KAAKhK,OAAO+U,SAASR,SAAS8b,eAOlErmB,KAAKimB,YAEJjmB,KAAKwZ,SACPxZ,KAAKwZ,QAAQ,CACXzV,KAAM,QACN/N,OAAQgK,KAAKhK,SAIjBgK,KAAKimB,WAAY,IAGfjmB,KAAKimB,WAAajmB,KAAKkmB,kBAErBlmB,KAAKyZ,QACPzZ,KAAKyZ,OAAO,CACV1V,KAAM,OACN/N,OAAQgK,KAAKhK,SAIjBgK,KAAKimB,WAAY,EAObjmB,KAAKkmB,iBACPlmB,KAAKkmB,gBAAiB,SAxG4CvI,EAAkBK,EAAYlrB,UAAW6tB,GAAiBC,GAAajD,EAAkBK,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IA+GrPiuB,EA7GuB,IAkH1BU,IACC,SAASr1B,EAAQs1B,EAA0Bz1B,GAElD,aAGA,IAAI01B,EAAM11B,EAAoB,KAG1B21B,EAAgB31B,EAAoB,IAIpC41B,EADW51B,EAAoB,IACL41B,eAG1BC,EADY71B,EAAoB,KACL61B,eAG3BC,EADY91B,EAAoB,KACF81B,kBAE9BC,EAAY/1B,EAAoB,KAChCg2B,EAAQD,EAAUC,MAClBzb,EAASwb,EAAUxb,OACnB0b,EAAeF,EAAUE,aACzBC,EAA6BH,EAAUG,2BACvC7V,EAAQ0V,EAAU1V,MAGlB8V,EADYn2B,EAAoB,KACNm2B,cAG1BC,EADYp2B,EAAoB,KACDo2B,mBAG/BC,EADYr2B,EAAoB,KACNq2B,cAE1BC,EAAMH,IA2FV,SAASI,EAAW9a,EAAW3O,EAAS0pB,GACtC,KAAMtnB,gBAAgBqnB,GACpB,MAAM,IAAIzrB,MAAM,gDAIlB,IAAI2rB,EAAYP,IAEhB,IAAmB,IAAfO,GAAoBA,EAAY,EAClC,MAAM,IAAI3rB,MAAM,kGAGdgC,IAEEA,EAAQ3F,QACVD,QAAQmd,KAAK,gDACbvX,EAAQ4pB,QAAU5pB,EAAQ3F,aACnB2F,EAAQ3F,OAGb2F,EAAQ6pB,SACVzvB,QAAQmd,KAAK,kDACbvX,EAAQwc,SAAWxc,EAAQ6pB,cACpB7pB,EAAQ6pB,QAGb7pB,EAAQ8pB,WACV1vB,QAAQmd,KAAK,sDACbvX,EAAQ+pB,WAAa/pB,EAAQ8pB,gBACtB9pB,EAAQ8pB,UAIb9pB,EAAQgqB,eACW,SAAjBhqB,EAAQvL,MAAoC,SAAjBuL,EAAQvL,MAAmBuL,EAAQiqB,SAA6C,IAAnCjqB,EAAQiqB,MAAMlkB,QAAQ,UAAqD,IAAnC/F,EAAQiqB,MAAMlkB,QAAQ,WACxI3L,QAAQmd,KAAK,iHAKbvX,GACFhM,OAAO6C,KAAKmJ,GAASxH,SAAQ,SAAU0xB,IACa,IAA9CT,EAAWU,cAAcpkB,QAAQmkB,IACnC9vB,QAAQmd,KAAK,mBAAqB2S,EAAS,sCAM/C7xB,UAAUC,QACZ8J,KAAKgoB,QAAQzb,EAAW3O,EAAS0pB,GA3Id,qBAAZ1mB,SACT5I,QAAQC,MAAM,+FA8JhBovB,EAAWQ,MAAQ,GAEnBR,EAAWv0B,UAAUm1B,kBAAoB,IACzCZ,EAAWU,cAAgB,CAAC,MAAO,SAAU,aAAc,YAAa,MAAO,QAAS,eAAgB,WAAY,eAAgB,eAAgB,aAAc,UAAW,UAAW,eAAgB,aAAc,aAAc,eAAgB,oBAAqB,wBAAyB,cAAe,UAAW,SAAU,cAAe,gBAAiB,eAAgB,kBAAmB,gBAAiB,UAAW,SAAU,OAAQ,QAAS,OAAQ,cAAe,iBAAkB,gBAAiB,YAAa,cAAe,YAAa,WAAY,aAAc,kBAAmB,gBAAiB,mBAAoB,oBAAqB,cAAe,cAAe,cAAe,eAAgB,oBASvsBV,EAAWv0B,UAAUk1B,QAAU,SAAUzb,EAAW3O,EAAS0pB,GAC3DtnB,KAAKuM,UAAYA,EACjBvM,KAAKpC,QAAUA,GAAW,GAC1BoC,KAAKsnB,KAAOA,GAAQ,GACpB,IAAIj1B,EAAO2N,KAAKpC,QAAQvL,MAAQ2N,KAAKpC,QAAQiqB,OAAS7nB,KAAKpC,QAAQiqB,MAAM,IAAM,OAC/E7nB,KAAKkoB,QAAQ71B,IAOfg1B,EAAWv0B,UAAUovB,QAAU,aAO/BmF,EAAWv0B,UAAUq1B,IAAM,SAAUb,GACnCtnB,KAAKsnB,KAAOA,GAQdD,EAAWv0B,UAAUf,IAAM,WACzB,OAAOiO,KAAKsnB,MAQdD,EAAWv0B,UAAUs1B,QAAU,SAAUC,GACvCroB,KAAKsnB,KAAOnW,EAAMkX,IAQpBhB,EAAWv0B,UAAUw1B,QAAU,WAC7B,OAAOxa,KAAKC,UAAU/N,KAAKsnB,OAQ7BD,EAAWv0B,UAAUy1B,QAAU,SAAU92B,GAClCuO,KAAKpC,UACRoC,KAAKpC,QAAU,IAGjBoC,KAAKpC,QAAQnM,KAAOA,GAQtB41B,EAAWv0B,UAAU01B,QAAU,WAC7B,OAAOxoB,KAAKpC,SAAWoC,KAAKpC,QAAQnM,MAUtC41B,EAAWv0B,UAAUo1B,QAAU,SAAU71B,GAEvC,GAAIA,IAAS2N,KAAKpC,QAAQvL,OAAQ2N,KAAKxN,OAAvC,CAIA,IAGIob,EACAnc,EAJA8a,EAAYvM,KAAKuM,UACjB3O,EAAUyN,EAAO,GAAIrL,KAAKpC,SAC1B6qB,EAAU7qB,EAAQvL,KAGtBuL,EAAQvL,KAAOA,EACf,IAAIixB,EAAS+D,EAAWQ,MAAMx1B,GAE9B,IAAKixB,EACH,MAAM,IAAI1nB,MAAM,iBAAmBgC,EAAQvL,KAAO,KAGpD,IAAIq2B,EAAyB,SAAhBpF,EAAO1V,KAWpB,GAVAnc,EAAOuO,KAAKwoB,UACZ5a,EAAO5N,KAAK0oB,EAAS,UAAY,SAEjC1oB,KAAKkiB,UACL4E,EAAM9mB,MACNqL,EAAOrL,KAAMsjB,EAAOqF,OACpB3oB,KAAKxN,OAAO+Z,EAAW3O,GACvBoC,KAAKuoB,QAAQ92B,GACbuO,KAAK0oB,EAAS,UAAY,OAAO9a,GAEN,oBAAhB0V,EAAOsF,KAChB,IACEtF,EAAOsF,KAAKv3B,KAAK2O,MACjB,MAAOjI,GACPC,QAAQC,MAAMF,GAIlB,GAAoC,oBAAzB6F,EAAQirB,cAA+Bx2B,IAASo2B,EACzD,IACE7qB,EAAQirB,aAAax2B,EAAMo2B,GAC3B,MAAO1wB,GACPC,QAAQC,MAAMF,MAUpBsvB,EAAWv0B,UAAUg2B,QAAU,WAC7B,OAAO9oB,KAAKpC,QAAQvL,MAWtBg1B,EAAWv0B,UAAUi2B,SAAW,SAAUhxB,GACpCiI,KAAKpC,SAA2C,oBAAzBoC,KAAKpC,QAAQ4pB,QACtCxnB,KAAKpC,QAAQ4pB,QAAQzvB,GAErBixB,MAAMjxB,EAAI9D,aAYdozB,EAAWv0B,UAAUm2B,UAAY,SAAUC,EAAQC,GAEjD,GAAID,EAAQ,CACV,IAAIE,EAEJ,IAEMppB,KAAKpC,QAAQwrB,IACfA,EAAMppB,KAAKpC,QAAQwrB,MAEnBA,EAAMhC,EAAI,CACRiC,WAAW,EACXC,SAAS,EACTC,SAAU,OACVC,OAAO,KAGLC,cAAc34B,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,+DAA6F,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAAvJ,MAC7CmpB,EAAIK,cAAc34B,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,+DAA6F,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAAvJ,OAE/C,MAAOlI,GACPC,QAAQmd,KAAK,iMAGf,GAAIiU,EAAK,CACP,GAAID,EAAY,CACd,IAAK,IAAIhP,KAAOgP,EACdC,EAAIM,aAAavP,GAEbgP,EAAWhP,IACbiP,EAAIO,UAAUR,EAAWhP,GAAMA,GAInCna,KAAKpC,QAAQurB,WAAaA,EAG5BnpB,KAAK4pB,eAAiBR,EAAIS,QAAQX,GAGlClpB,KAAKpC,QAAQsrB,OAASA,EACtBlpB,KAAKpC,QAAQurB,WAAaA,EAE1BnpB,KAAK8pB,WAGP9pB,KAAK+pB,eAGL/pB,KAAK4pB,eAAiB,KACtB5pB,KAAKpC,QAAQsrB,OAAS,KACtBlpB,KAAKpC,QAAQurB,WAAa,KAC1BnpB,KAAK8pB,WAEL9pB,KAAK+pB,WAST1C,EAAWv0B,UAAUg3B,SAAW,aAOhCzC,EAAWv0B,UAAUi3B,QAAU,aAuB/B1C,EAAW2C,aAAe,SAAU33B,GAClC,IAAInB,EAAG+4B,EAEP,GAAIr2B,MAAMW,QAAQlC,GAEhB,IAAKnB,EAAI,EAAGA,EAAImB,EAAK6D,OAAQhF,IAC3Bm2B,EAAW2C,aAAa33B,EAAKnB,QAE1B,CAEL,KAAM,SAAUmB,GAAO,MAAM,IAAIuJ,MAAM,2BACvC,KAAM,UAAWvJ,GAAO,MAAM,IAAIuJ,MAAM,4BACxC,KAAM,SAAUvJ,GAAO,MAAM,IAAIuJ,MAAM,2BACvC,IAAInK,EAAOY,EAAKA,KAEhB,GAAIZ,KAAQ41B,EAAWQ,MACrB,MAAM,IAAIjsB,MAAM,SAAWnK,EAAO,wBAIpC,GAAiC,oBAAtBY,EAAKs2B,MAAMn2B,OACpB,MAAM,IAAIoJ,MAAM,+CAGlB,IAAIsuB,EAAW,CAAC,UAAW,eAAgB,SAE3C,IAAKh5B,EAAI,EAAGA,EAAIg5B,EAASh0B,OAAQhF,IAG/B,IAFA+4B,EAAOC,EAASh5B,MAEJmB,EAAKs2B,MACf,MAAM,IAAI/sB,MAAM,sBAAwBquB,EAAO,0BAInD5C,EAAWQ,MAAMp2B,GAAQY,IAK7Bg1B,EAAW2C,aAAatD,GACxBW,EAAW2C,aAAarD,GACxBU,EAAW2C,aAAapD,GAExBS,EAAWb,IAAMA,EACjBa,EAAWD,IAAMA,EACjBC,EAAWZ,cAAgBA,EAE3BY,EAAWH,mBAAqBA,EAChCG,EAAWF,cAAgBA,EAC3BE,EAAWN,aAAeA,EAE1BM,EAAU,QAAcA,EACxBp2B,EAAOD,QAAUq2B,GAIX8C,IACC,SAAS7M,EAAyBC,EAAqBzsB,GAE9D,aACqBA,EAAoBU,EAAE+rB,EAAqB,CACzC,EAAK,WAAa,YAEpB,IAAI6M,EAA4Ct5B,EAAoB,KAChEu5B,EAAqCv5B,EAAoB,KAKlF,SAAS6sB,EAAkB3nB,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAe7S,IAAI6hB,EAA4B,WAC9B,SAASA,EAAa/d,EAAWsb,EAAO3Q,EAASqT,IAlBnD,SAAyBxM,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAmB5G2I,CAAgBje,KAAMsqB,GAkDtB,IA/CA,IAAIE,EAAiB,CACnB3oB,KAAM,CACJsJ,MAAM,EAAGkf,EAAoD5J,IAAI,gBACjErB,OAAO,EAAGiL,EAAoD5J,IAAI,iBAClEpB,MAAO,WACLkL,EAAS,UAGbtR,KAAM,CACJ9N,MAAM,EAAGkf,EAAoD5J,IAAI,gBACjErB,OAAO,EAAGiL,EAAoD5J,IAAI,iBAClEpB,MAAO,WACLkL,EAAS,UAGbpf,KAAM,CACJA,MAAM,EAAGkf,EAAoD5J,IAAI,gBACjErB,OAAO,EAAGiL,EAAoD5J,IAAI,iBAClEpB,MAAO,WACLkL,EAAS,UAGbE,KAAM,CACJtf,MAAM,EAAGkf,EAAoD5J,IAAI,gBACjErB,OAAO,EAAGiL,EAAoD5J,IAAI,iBAClEpB,MAAO,WACLkL,EAAS,UAGbG,KAAM,CACJvf,MAAM,EAAGkf,EAAoD5J,IAAI,gBACjErB,OAAO,EAAGiL,EAAoD5J,IAAI,iBAClEpB,MAAO,WACLkL,EAAS,UAGbI,QAAS,CACPxf,MAAM,EAAGkf,EAAoD5J,IAAI,mBACjErB,OAAO,EAAGiL,EAAoD5J,IAAI,oBAClEpB,MAAO,WACLkL,EAAS,cAKXzM,EAAQ,GAEH5sB,EAAI,EAAGA,EAAI22B,EAAM3xB,OAAQhF,IAAK,CACrC,IAAImB,EAAOw1B,EAAM32B,GACb4tB,EAAO0L,EAAen4B,GAE1B,IAAKysB,EACH,MAAM,IAAIljB,MAAM,iBAAmBvJ,EAAO,KAG5CysB,EAAKhV,UAAY,yBAA2BoN,IAAY7kB,EAAO,uBAAyB,IACxFyrB,EAAM/pB,KAAK+qB,GAIb,IAAI8L,EAAcJ,EAAetT,GAEjC,IAAK0T,EACH,MAAM,IAAIhvB,MAAM,iBAAmBsb,EAAU,KAG/C,IAAI2T,EAAeD,EAAYzf,KAE3B2f,EAAMvgB,SAASiJ,cAAc,UACjCsX,EAAI/mB,KAAO,SACX+mB,EAAIhhB,UAAY,wCAChBghB,EAAI7d,YAAc4d,EAAe,UACjCC,EAAI1L,OAAQ,EAAGiL,EAAoD5J,IAAI,mBAEvEqK,EAAIxL,QAAU,WACD,IAAI8K,EAA6DW,EAAEjN,GACzEkN,KAAKF,EAAKve,IAGjB,IAAIyU,EAAQzW,SAASiJ,cAAc,OACnCwN,EAAMlX,UAAY,mBAClBkX,EAAMrI,MAAMuC,SAAW,WACvB8F,EAAMzN,YAAYuX,GAClBve,EAAUgH,YAAYyN,GACtBhhB,KAAKke,IAAM,CACT3R,UAAWA,EACXue,IAAKA,EACL9J,MAAOA,GAzGb,IAAsBhD,EAAa2C,EAAYC,EAqI7C,OArIoB5C,EAiHPsM,GAjHoB3J,EAiHN,CAAC,CAC1BluB,IAAK,QACLN,MAAO,WACL6N,KAAKke,IAAI4M,IAAI1K,UAMd,CACD3tB,IAAK,UACLN,MAAO,WACD6N,KAAKke,KAAOle,KAAKke,IAAI8C,OAAShhB,KAAKke,IAAI8C,MAAMG,YAC/CnhB,KAAKke,IAAI8C,MAAMG,WAAWgB,YAAYniB,KAAKke,IAAI8C,OAGjDhhB,KAAKke,IAAM,UAjI6DP,EAAkBK,EAAYlrB,UAAW6tB,GAAiBC,GAAajD,EAAkBK,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IAqIrP2yB,EAxHuB,IA6H1BW,IACC,SAASh6B,EAAQs1B,EAA0Bz1B,GAElD,IAAI01B,EAEJ,GAAItmB,OAAOsmB,IAETA,EAAMtmB,OAAOsmB,SAEb,IAEEA,EAAM11B,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,sDAAoF,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAA9I,KAEjCnP,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,4DAA0F,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAApJ,KAE3BnP,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,gEAA8F,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAAxJ,KAI3B,IAAIirB,EAAoBp6B,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,0DAAwF,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAAlJ,KAEnDumB,EAAIlD,OAAO6H,aAAa,uBAAwBD,GAChD,MAAOnzB,IAKX9G,EAAOD,QAAUw1B,GAIX4E,IACC,WA+BPlrB,OAAOsmB,IAAI6E,OAAO,uBAAwB,CAAC,UAAW,UAAW,SAAU,gBAAgB,SAAUC,EAAUt6B,EAASC,GACtHD,EAAQu6B,QAAS,EACjBv6B,EAAQw6B,SAAW,iBACnBx6B,EAAQ8pB,QAAU,yiFACRwQ,EAAS,cACfG,gBAAgBz6B,EAAQ8pB,QAAS9pB,EAAQw6B,cAKzCE,IACC,SAASpO,EAAyBtsB,GAGzC,IAAI26B,EAAW,WACb,IAAIC,EAAS,CACXC,MAAO,aACPC,GAAI,GACJC,SAAU,CACR,MAAS,EACT,WAAc,EACd,OAAU,EACV,WAAc,EACd,OAAU,EACV,gBAAmB,EACnB,KAAQ,EACR,mBAAsB,EACtB,KAAQ,GACR,MAAS,GACT,SAAY,GACZ,UAAa,GACb,IAAO,GACP,WAAc,GACd,UAAa,GACb,IAAK,GACL,IAAK,GACL,eAAkB,GAClB,WAAc,GACd,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,gBAAmB,GACnB,QAAW,EACX,KAAQ,GAEVC,WAAY,CACVC,EAAG,QACHC,EAAG,SACHC,EAAG,SACHC,EAAG,OACHC,GAAI,OACJC,GAAI,QACJC,GAAI,MACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KAENC,aAAc,CAAC,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,IACtMC,cAAe,SAAmBC,EAAQC,EAAQC,EAAUpB,EAAIqB,EAASC,EAAIC,GAC3E,IAAIC,EAAKF,EAAGl3B,OAAS,EAErB,OAAQi3B,GACN,KAAK,EAEHntB,KAAKutB,EAAIP,EAAOzjB,QAAQ,YAAa,MAAWA,QAAQ,OAAQ,MAAMA,QAAQ,OAAQ,MAAMA,QAAQ,OAAQ,MAAMA,QAAQ,OAAQ,MAAMA,QAAQ,OAAQ,MAAMA,QAAQ,OAAQ,MAC9K,MAEF,KAAK,EACHvJ,KAAKutB,EAAI9Y,OAAOuY,GAChB,MAEF,KAAK,EACHhtB,KAAKutB,EAAI,KACT,MAEF,KAAK,EACHvtB,KAAKutB,GAAI,EACT,MAEF,KAAK,EACHvtB,KAAKutB,GAAI,EACT,MAEF,KAAK,EACH,OAAOvtB,KAAKutB,EAAIH,EAAGE,EAAK,GAG1B,KAAK,GACHttB,KAAKutB,EAAI,GACT,MAEF,KAAK,GACHvtB,KAAKutB,EAAIH,EAAGE,EAAK,GACjB,MAEF,KAAK,GACHttB,KAAKutB,EAAI,CAACH,EAAGE,EAAK,GAAIF,EAAGE,IACzB,MAEF,KAAK,GACHttB,KAAKutB,EAAI,GACTvtB,KAAKutB,EAAEH,EAAGE,GAAI,IAAMF,EAAGE,GAAI,GAC3B,MAEF,KAAK,GACHttB,KAAKutB,EAAIH,EAAGE,EAAK,GACjBF,EAAGE,EAAK,GAAGF,EAAGE,GAAI,IAAMF,EAAGE,GAAI,GAC/B,MAEF,KAAK,GACHttB,KAAKutB,EAAI,GACT,MAEF,KAAK,GACHvtB,KAAKutB,EAAIH,EAAGE,EAAK,GACjB,MAEF,KAAK,GACHttB,KAAKutB,EAAI,CAACH,EAAGE,IACb,MAEF,KAAK,GACHttB,KAAKutB,EAAIH,EAAGE,EAAK,GACjBF,EAAGE,EAAK,GAAGv5B,KAAKq5B,EAAGE,MAIzBlJ,MAAO,CAAC,CACNoJ,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,GACPuB,EAAG,EACHtB,GAAI,CAAC,EAAG,IACRC,GAAI,CAAC,EAAG,IACRsB,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJvB,GAAI,CAAC,EAAG,IACRI,GAAI,CAAC,EAAG,KACP,CACDoB,EAAG,CAAC,IACH,CACDzB,GAAI,CAAC,EAAG,KACP,CACDA,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDN,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDN,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRC,GAAI,CAAC,EAAG,GACRC,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDN,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,GACRE,GAAI,CAAC,EAAG,IACP,CACDW,EAAG,GACHtB,EAAG,CAAC,EAAG,IACPO,GAAI,CAAC,EAAG,IACRwB,GAAI,GACJC,GAAI,IACH,CACDV,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,GACPuB,EAAG,EACHtB,GAAI,CAAC,EAAG,IACRC,GAAI,CAAC,EAAG,IACRuB,GAAI,GACJC,GAAI,EACJC,GAAI,EACJvB,GAAI,CAAC,EAAG,IACRI,GAAI,CAAC,EAAG,IACRC,GAAI,CAAC,EAAG,IACRsB,GAAI,IACH,CACDH,EAAG,CAAC,EAAG,IACN,CACDzB,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDJ,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDF,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDD,GAAI,CAAC,EAAG,KACP,CACDH,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDF,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDF,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDN,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDW,EAAG,GACHtB,EAAG,CAAC,EAAG,IACPgC,GAAI,IACH,CACDV,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,GACPuB,EAAG,EACHtB,GAAI,CAAC,EAAG,IACRC,GAAI,CAAC,EAAG,IACRuB,GAAI,GACJC,GAAI,EACJC,GAAI,EACJvB,GAAI,CAAC,EAAG,IACRI,GAAI,CAAC,EAAG,KACP,CACDL,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDW,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,IACPuB,EAAG,EACHtB,EAAG,CAAC,EAAG,GACPuB,EAAG,EACHtB,GAAI,CAAC,EAAG,IACRC,GAAI,CAAC,EAAG,IACRuB,GAAI,GACJC,GAAI,EACJC,GAAI,EACJvB,GAAI,CAAC,EAAG,IACRI,GAAI,CAAC,EAAG,KACP,CACDH,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDF,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,KACP,CACDA,GAAI,CAAC,EAAG,IACRE,GAAI,CAAC,EAAG,MAEVuB,eAAgB,CACdL,GAAI,CAAC,EAAG,IAEVM,WAAY,SAAoB5e,EAAK6e,GACnC,MAAM,IAAI1yB,MAAM6T,IAElB0B,MAAO,SAAekF,GACpB,IAAI7iB,EAAOwM,KACPyK,EAAQ,CAAC,GACT8jB,EAAS,CAAC,MAEdC,EAAS,GAETpK,EAAQpkB,KAAKokB,MACT4I,EAAS,GACTE,EAAW,EACXD,EAAS,EACTwB,EAAa,EAIjBzuB,KAAK0uB,MAAMC,SAAStY,GACpBrW,KAAK0uB,MAAM5C,GAAK9rB,KAAK8rB,GACrB9rB,KAAK8rB,GAAG4C,MAAQ1uB,KAAK0uB,MACW,oBAArB1uB,KAAK0uB,MAAME,SAAuB5uB,KAAK0uB,MAAME,OAAS,IACjE,IAAIC,EAAQ7uB,KAAK0uB,MAAME,OAUvB,SAASE,IACP,IAAIjjB,EAQJ,MAJqB,kBAHrBA,EAAQrY,EAAKk7B,MAAMI,OAAS,KAI1BjjB,EAAQrY,EAAKu4B,SAASlgB,IAAUA,GAG3BA,EAlBT2iB,EAAOz6B,KAAK86B,GACsB,oBAAvB7uB,KAAK8rB,GAAGuC,aAA2BruB,KAAKquB,WAAaruB,KAAK8rB,GAAGuC,YAgCxE,IAZA,IAAIhwB,EACA0wB,EACAhqB,EACAjB,EAEA9R,EAEAgB,EACA6M,EACAmvB,EACAC,EA5Bct8B,EAwBdu8B,EAAQ,KAMC,CAaI,GAXfnqB,EAAQ0F,EAAMA,EAAMvU,OAAS,GAEzB8J,KAAKouB,eAAerpB,GACtBjB,EAAS9D,KAAKouB,eAAerpB,IAEf,MAAV1G,IAAgBA,EAASywB,KAE7BhrB,EAASsgB,EAAMrf,IAAUqf,EAAMrf,GAAO1G,IAIH,qBAAXyF,IAA2BA,EAAO5N,SAAW4N,EAAO,GAAI,CAChF,IAAK2qB,EAAY,CAIf,IAAKz7B,KAFLi8B,EAAW,GAED7K,EAAMrf,GACV/E,KAAKgsB,WAAWh5B,IAAMA,EAAI,GAC5Bi8B,EAASl7B,KAAK,IAAMiM,KAAKgsB,WAAWh5B,GAAK,KAI7C,IAAIm8B,EAAS,GAGXA,EADEnvB,KAAK0uB,MAAMU,aACJ,wBAA0BlC,EAAW,GAAK,MAAQltB,KAAK0uB,MAAMU,eAAiB,eAAiBH,EAAS7sB,KAAK,MAAQ,UAAYpC,KAAKgsB,WAAW3tB,GAAU,IAE3J,wBAA0B6uB,EAAW,GAAK,iBAA6B,GAAV7uB,EAEpE,eAAiB,KAAO2B,KAAKgsB,WAAW3tB,IAAWA,GAAU,KAGjE2B,KAAKquB,WAAWc,EAAQ,CACtBhkB,KAAMnL,KAAK0uB,MAAMtf,MACjBvD,MAAO7L,KAAKgsB,WAAW3tB,IAAWA,EAClC6Z,KAAMlY,KAAK0uB,MAAMxB,SACjBzI,IAAKoK,EACLI,SAAUA,IAKd,GAAkB,GAAdR,EAAiB,CACnB,GArFI,GAqFApwB,EACF,MAAM,IAAIzC,MAAMuzB,GAAU,mBAI5BlC,EAASjtB,KAAK0uB,MAAMzB,OACpBD,EAAShtB,KAAK0uB,MAAM1B,OACpBE,EAAWltB,KAAK0uB,MAAMxB,SACtB2B,EAAQ7uB,KAAK0uB,MAAME,OACnBvwB,EAASywB,IAIX,OAnGS,GAqGI76B,aAAcmwB,EAAMrf,KAFvB,CAMR,GAAa,GAATA,EACF,MAAM,IAAInJ,MAAMuzB,GAAU,mBA/FhBx8B,EAkGH,EAjGb8X,EAAMvU,OAASuU,EAAMvU,OAAS,EAAIvD,EAClC47B,EAAOr4B,OAASq4B,EAAOr4B,OAASvD,EAChC67B,EAAOt4B,OAASs4B,EAAOt4B,OAASvD,EAgG5BoS,EAAQ0F,EAAMA,EAAMvU,OAAS,GAG/B64B,EAAiB1wB,EAEjBA,EAnHS,EAsHTyF,EAASsgB,EADTrf,EAAQ0F,EAAMA,EAAMvU,OAAS,KACJkuB,EAAMrf,GAtHtB,GAuHT0pB,EAAa,EAIf,GAAI3qB,EAAO,aAAclQ,OAASkQ,EAAO5N,OAAS,EAChD,MAAM,IAAI0F,MAAM,oDAAsDmJ,EAAQ,YAAc1G,GAG9F,OAAQyF,EAAO,IACb,KAAK,EAGH2G,EAAM1W,KAAKsK,GACXkwB,EAAOx6B,KAAKiM,KAAK0uB,MAAM1B,QACvBwB,EAAOz6B,KAAKiM,KAAK0uB,MAAME,QACvBnkB,EAAM1W,KAAK+P,EAAO,IAElBzF,EAAS,KAEJ0wB,GASH1wB,EAAS0wB,EACTA,EAAiB,OARjB9B,EAASjtB,KAAK0uB,MAAMzB,OACpBD,EAAShtB,KAAK0uB,MAAM1B,OACpBE,EAAWltB,KAAK0uB,MAAMxB,SACtB2B,EAAQ7uB,KAAK0uB,MAAME,OACfH,EAAa,GAAGA,KAOtB,MAEF,KAAK,EAgBH,GAbA5uB,EAAMG,KAAK8sB,aAAahpB,EAAO,IAAI,GAEnCorB,EAAM3B,EAAIgB,EAAOA,EAAOr4B,OAAS2J,GAGjCqvB,EAAM7B,GAAK,CACTgC,WAAYb,EAAOA,EAAOt4B,QAAU2J,GAAO,IAAIwvB,WAC/CC,UAAWd,EAAOA,EAAOt4B,OAAS,GAAGo5B,UACrCC,aAAcf,EAAOA,EAAOt4B,QAAU2J,GAAO,IAAI0vB,aACjDC,YAAahB,EAAOA,EAAOt4B,OAAS,GAAGs5B,aAIxB,qBAFjBx9B,EAAIgO,KAAK+sB,cAAc17B,KAAK69B,EAAOlC,EAAQC,EAAQC,EAAUltB,KAAK8rB,GAAIhoB,EAAO,GAAIyqB,EAAQC,IAGvF,OAAOx8B,EAIL6N,IACF4K,EAAQA,EAAMzW,MAAM,GAAI,EAAI6L,EAAM,GAClC0uB,EAASA,EAAOv6B,MAAM,GAAI,EAAI6L,GAC9B2uB,EAASA,EAAOx6B,MAAM,GAAI,EAAI6L,IAGhC4K,EAAM1W,KAAKiM,KAAK8sB,aAAahpB,EAAO,IAAI,IAExCyqB,EAAOx6B,KAAKm7B,EAAM3B,GAClBiB,EAAOz6B,KAAKm7B,EAAM7B,IAElB2B,EAAW5K,EAAM3Z,EAAMA,EAAMvU,OAAS,IAAIuU,EAAMA,EAAMvU,OAAS,IAC/DuU,EAAM1W,KAAKi7B,GACX,MAEF,KAAK,EAEH,OAAO,GAIb,OAAO,IAKPN,EAAQ,WACV,IAAIA,EAAQ,CACVe,IAAK,EACLpB,WAAY,SAAoB5e,EAAK6e,GACnC,IAAItuB,KAAK8rB,GAAGuC,WAGV,MAAM,IAAIzyB,MAAM6T,GAFhBzP,KAAK8rB,GAAGuC,WAAW5e,EAAK6e,IAK5BK,SAAU,SAAkBtY,GAY1B,OAXArW,KAAK0vB,OAASrZ,EACdrW,KAAK2vB,MAAQ3vB,KAAK4vB,MAAQ5vB,KAAKW,MAAO,EACtCX,KAAKktB,SAAWltB,KAAKitB,OAAS,EAC9BjtB,KAAKgtB,OAAShtB,KAAK6vB,QAAU7vB,KAAKoP,MAAQ,GAC1CpP,KAAK8vB,eAAiB,CAAC,WACvB9vB,KAAK4uB,OAAS,CACZS,WAAY,EACZE,aAAc,EACdD,UAAW,EACXE,YAAa,GAERxvB,MAETqW,MAAO,WACL,IAAI0Z,EAAK/vB,KAAK0vB,OAAO,GAQrB,OAPA1vB,KAAKgtB,QAAU+C,EACf/vB,KAAKitB,SACLjtB,KAAKoP,OAAS2gB,EACd/vB,KAAK6vB,SAAWE,EACJA,EAAG3gB,MAAM,OACVpP,KAAKktB,WAChBltB,KAAK0vB,OAAS1vB,KAAK0vB,OAAO17B,MAAM,GACzB+7B,GAETC,MAAO,SAAeD,GAEpB,OADA/vB,KAAK0vB,OAASK,EAAK/vB,KAAK0vB,OACjB1vB,MAETiwB,KAAM,WAEJ,OADAjwB,KAAK2vB,OAAQ,EACN3vB,MAETkwB,KAAM,SAAcv9B,GAClBqN,KAAK0vB,OAAS1vB,KAAKoP,MAAMpb,MAAMrB,GAAKqN,KAAK0vB,QAE3CS,UAAW,WACT,IAAIC,EAAOpwB,KAAK6vB,QAAQQ,OAAO,EAAGrwB,KAAK6vB,QAAQ35B,OAAS8J,KAAKoP,MAAMlZ,QACnE,OAAQk6B,EAAKl6B,OAAS,GAAK,MAAQ,IAAMk6B,EAAKC,QAAQ,IAAI9mB,QAAQ,MAAO,KAE3E+mB,cAAe,WACb,IAAIlxB,EAAOY,KAAKoP,MAMhB,OAJIhQ,EAAKlJ,OAAS,KAChBkJ,GAAQY,KAAK0vB,OAAOW,OAAO,EAAG,GAAKjxB,EAAKlJ,UAGlCkJ,EAAKixB,OAAO,EAAG,KAAOjxB,EAAKlJ,OAAS,GAAK,MAAQ,KAAKqT,QAAQ,MAAO,KAE/E6lB,aAAc,WACZ,IAAI9b,EAAMtT,KAAKmwB,YACX5+B,EAAI,IAAIqC,MAAM0f,EAAIpd,OAAS,GAAGkM,KAAK,KACvC,OAAOkR,EAAMtT,KAAKswB,gBAAkB,KAAO/+B,EAAI,KAEjD6N,KAAM,WACJ,GAAIY,KAAKW,KACP,OAAOX,KAAKyvB,IAId,IAAI5jB,EAAOuD,EAAOmhB,EAAW7sB,EAAYmR,EADpC7U,KAAK0vB,SAAQ1vB,KAAKW,MAAO,GAGzBX,KAAK2vB,QACR3vB,KAAKgtB,OAAS,GACdhtB,KAAKoP,MAAQ,IAKf,IAFA,IAAIohB,EAAQxwB,KAAKywB,gBAERv/B,EAAI,EAAGA,EAAIs/B,EAAMt6B,WACxBq6B,EAAYvwB,KAAK0vB,OAAOtgB,MAAMpP,KAAKwwB,MAAMA,EAAMt/B,OAE5Bke,KAASmhB,EAAU,GAAGr6B,OAASkZ,EAAM,GAAGlZ,UACzDkZ,EAAQmhB,EACR7sB,EAAQxS,EACH8O,KAAKpC,QAAQ8yB,OANYx/B,KAUlC,OAAIke,IACFyF,EAAQzF,EAAM,GAAGA,MAAM,YACZpP,KAAKktB,UAAYrY,EAAM3e,QAClC8J,KAAK4uB,OAAS,CACZS,WAAYrvB,KAAK4uB,OAAOU,UACxBA,UAAWtvB,KAAKktB,SAAW,EAC3BqC,aAAcvvB,KAAK4uB,OAAOY,YAC1BA,YAAa3a,EAAQA,EAAMA,EAAM3e,OAAS,GAAGA,OAAS,EAAI8J,KAAK4uB,OAAOY,YAAcpgB,EAAM,GAAGlZ,QAE/F8J,KAAKgtB,QAAU5d,EAAM,GACrBpP,KAAKoP,OAASA,EAAM,GACpBpP,KAAKitB,OAASjtB,KAAKgtB,OAAO92B,OAC1B8J,KAAK2vB,OAAQ,EACb3vB,KAAK0vB,OAAS1vB,KAAK0vB,OAAO17B,MAAMob,EAAM,GAAGlZ,QACzC8J,KAAK6vB,SAAWzgB,EAAM,GACtBvD,EAAQ7L,KAAK+sB,cAAc17B,KAAK2O,KAAMA,KAAK8rB,GAAI9rB,KAAMwwB,EAAM9sB,GAAQ1D,KAAK8vB,eAAe9vB,KAAK8vB,eAAe55B,OAAS,IAChH8J,KAAKW,MAAQX,KAAK0vB,SAAQ1vB,KAAKW,MAAO,GACtCkL,QAAyB,GAGX,KAAhB7L,KAAK0vB,OACA1vB,KAAKyvB,SAEZzvB,KAAKquB,WAAW,0BAA4BruB,KAAKktB,SAAW,GAAK,yBAA2BltB,KAAKovB,eAAgB,CAC/GjkB,KAAM,GACNU,MAAO,KACPqM,KAAMlY,KAAKktB,YAIjB4B,IAAK,WACH,IAAI98B,EAAIgO,KAAKZ,OAEb,MAAiB,qBAANpN,EACFA,EAEAgO,KAAK8uB,OAGhB6B,MAAO,SAAeC,GACpB5wB,KAAK8vB,eAAe/7B,KAAK68B,IAE3BC,SAAU,WACR,OAAO7wB,KAAK8vB,eAAegB,OAE7BL,cAAe,WACb,OAAOzwB,KAAK+wB,WAAW/wB,KAAK8vB,eAAe9vB,KAAK8vB,eAAe55B,OAAS,IAAIs6B,OAE9EQ,SAAU,WACR,OAAOhxB,KAAK8vB,eAAe9vB,KAAK8vB,eAAe55B,OAAS,IAE1D+6B,UAAW,SAAeL,GACxB5wB,KAAK2wB,MAAMC,IAGflC,QAAgB,GAEhBA,cAAsB,SAAmB5C,EAAIoF,EAAKC,EAA2BC,GAG3E,OAAQD,GACN,KAAK,EAEH,MAEF,KAAK,EACH,OAAO,EAGT,KAAK,EAEH,OADAD,EAAIlE,OAASkE,EAAIlE,OAAOqD,OAAO,EAAGa,EAAIjE,OAAS,GACxC,EAGT,KAAK,EACH,OAAO,GAGT,KAAK,EACH,OAAO,GAGT,KAAK,EACH,OAAO,GAGT,KAAK,EACH,OAAO,GAGT,KAAK,EACH,OAAO,GAGT,KAAK,EACH,OAAO,GAGT,KAAK,EACH,OAAO,GAGT,KAAK,GACH,OAAO,GAGT,KAAK,GACH,OAAO,EAGT,KAAK,GACH,OAAO,GAGT,KAAK,GACH,MAAO,YAKbyB,MAAc,CAAC,WAAY,8DAA+D,qEAAsE,UAAW,UAAW,UAAW,UAAW,SAAU,SAAU,cAAe,eAAgB,cAAe,SAAU,UACxRA,WAAmB,CACjB,QAAW,CACT,MAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IACpD,WAAa,KAIjB,OAAOA,EAzNG,GA6NZ,OADA9C,EAAO8C,MAAQA,EACR9C,EA/tBM,GAmuBb56B,EAAQ46B,OAASD,EACjB36B,EAAQmgB,MAAQwa,EAASxa,MAAMze,KAAKi5B,IAKhC0F,IACC,SAASpgC,GAEhB,aAaA,IAAIqgC,EAAgB,CAKlBC,iBAAiB,EAMjB7V,MAAO,OAMP1C,UAAU,EAMVwY,YAAY,EAMZC,WAAW,EAMXC,cAAc,EAMdC,eAAe,EAMfC,eAAe,EAMfC,gBAAgB,EAMhBzY,YAAa,sBAMb0Y,UAAU,EAMVC,eAAgB,kBAMdC,EAAS,aAObA,EAAOl/B,UAAY,CAOjBm/B,GAAI,SAAY1S,EAAO2S,GACrBlyB,KAAKmyB,QAAUnyB,KAAKmyB,SAAW,GAC/BnyB,KAAKmyB,QAAQ5S,GAASvf,KAAKmyB,QAAQ5S,IAAU,GAE7Cvf,KAAKmyB,QAAQ5S,GAAOxrB,KAAKm+B,IAS3BE,IAAK,SAAa7S,EAAO2S,GACvBlyB,KAAKmyB,QAAUnyB,KAAKmyB,SAAW,GAC3B5S,KAASvf,KAAKmyB,WAAY,GAE9BnyB,KAAKmyB,QAAQ5S,GAAO3b,OAAO5D,KAAKmyB,QAAQ5S,GAAO5b,QAAQuuB,GAAO,IAQhEG,KAAM,SAAc9S,GAIlB,GADAvf,KAAKmyB,QAAUnyB,KAAKmyB,SAAW,GAC3B5S,KAASvf,KAAKmyB,WAAY,EAE9B,IAAK,IAAIjhC,EAAI,EAAGA,EAAI8O,KAAKmyB,QAAQ5S,GAAOrpB,OAAQhF,IAC9C8O,KAAKmyB,QAAQ5S,GAAOruB,GAAG4E,MAAMkK,KAAMpM,MAAMd,UAAUkB,MAAM3C,KAAK4E,UAAW,MAU/E+7B,EAAOrJ,MAAQ,SAAUlxB,GAGvB,IAFA,IAAImmB,EAAQ,CAAC,KAAM,MAAO,QAEjB1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IACb,oBAARuG,EACTA,EAAI3E,UAAU8qB,EAAM1sB,IAAM8gC,EAAOl/B,UAAU8qB,EAAM1sB,IAEjDuG,EAAImmB,EAAM1sB,IAAM8gC,EAAOl/B,UAAU8qB,EAAM1sB,IAI3C,OAAOuG,GAQT,IAAIwR,EAAO,CACToC,OAAQ,SAAgBb,EAAKoT,GAE3B,IAAI5qB,EAEJ,IAAKA,KAHL4qB,EAAQA,GAAS,GAGPpT,EACJA,EAAIzX,eAAeC,KAChB4qB,EAAM7qB,eAAeC,KACxB4qB,EAAM5qB,GAAKwX,EAAIxX,KAKrB,OAAO4qB,GAET0U,KAAM,SAAcxsB,EAAGC,EAAGxU,GACxB,GAAI,oBAAsBK,OAAOkB,UAAUmB,SAAS5C,KAAKyU,GACvD,IAAK,IAAItU,KAAKsU,EACRlU,OAAOkB,UAAUC,eAAe1B,KAAKyU,EAAGtU,IAC1CuU,EAAE1U,KAAKE,EAAGC,EAAGsU,EAAEtU,GAAIsU,QAIvB,IAAK,IAAI7F,EAAI,EAAGsyB,EAAIzsB,EAAE5P,OAAQ+J,EAAIsyB,EAAGtyB,IACnC8F,EAAE1U,KAAKE,EAAG0O,EAAG6F,EAAE7F,GAAI6F,IAIzB0N,cAAe,SAAuBvT,EAAG6F,GACvC,IAIM5U,EAJFM,EAAI+Y,SACJioB,EAAKhhC,EAAEgiB,cAAcvT,GAEzB,GAAI6F,GAAK,oBAAsBlU,OAAOkB,UAAUmB,SAAS5C,KAAKyU,GAG5D,IAAK5U,KAAK4U,EACR,GAAI5U,KAAKshC,EAAIA,EAAGthC,GAAK4U,EAAE5U,QAAQ,GAAI,SAAWA,EAAGshC,EAAGvlB,YAAcnH,EAAE5U,QAAQ,GAAI,SAAWA,EAAG,CAC5F,IAAIkB,EAAIZ,EAAEsuB,eAAeha,EAAE5U,IAC3BshC,EAAGjf,YAAYnhB,QACVogC,EAAGllB,aAAapc,EAAG4U,EAAE5U,IAIhC,OAAOshC,GAETC,SAAU,SAAkB3sB,EAAGC,GAC7B,GAAID,EAAG,OAAOA,EAAEsE,UAAYtE,EAAEsE,UAAUW,SAAShF,KAAOD,EAAEgE,aAAehE,EAAEgE,UAAUsF,MAAM,IAAIjF,OAAO,UAAYpE,EAAI,aAExH2sB,SAAU,SAAkB5sB,EAAGC,GACxBkD,EAAKwpB,SAAS3sB,EAAGC,KAChBD,EAAEsE,UACJtE,EAAEsE,UAAUC,IAAItE,GAEhBD,EAAEgE,UAAYhE,EAAEgE,UAAU6oB,OAAS,IAAM5sB,IAI/C6sB,YAAa,SAAqB9sB,EAAGC,GAC/BkD,EAAKwpB,SAAS3sB,EAAGC,KACfD,EAAEsE,UACJtE,EAAEsE,UAAUyoB,OAAO9sB,GAEnBD,EAAEgE,UAAYhE,EAAEgE,UAAUP,QAAQ,IAAIY,OAAO,UAAYpE,EAAE5D,MAAM,KAAKC,KAAK,KAAO,UAAW,MAAO,OAI1G0wB,QAAS,SAAiBN,EAAIzxB,GAC5B,OAAOyxB,GAAMA,IAAOjoB,SAAS6b,OAASrlB,EAAGyxB,GAAMA,EAAKvpB,EAAK6pB,QAAQN,EAAGrR,WAAYpgB,KAElFgyB,MAAO,SAAeh1B,GACpB,MAAsB,kBAARA,GAAoB/I,SAAS+I,IAAQ1I,KAAK29B,MAAMj1B,KAASA,GAEzEk1B,SAAU,SAAkBntB,EAAGC,EAAGxU,GAChC,IAAIC,EACJ,OAAO,WACL,IAAIyO,EAAID,KACJuyB,EAAIt8B,UACJ8J,EAAI,WACNvO,EAAI,KACCD,GAAGuU,EAAEhQ,MAAMmK,EAAGsyB,IAEjBW,EAAI3hC,IAAMC,EAEd2hC,aAAa3hC,GACbA,EAAIkgB,WAAW3R,EAAGgG,GAEdmtB,GACFptB,EAAEhQ,MAAMmK,EAAGsyB,KAIjBa,KAAM,SAAcZ,EAAIa,GACtB,IAAI5R,EAAIvhB,OACJlO,EAAIwgC,EAAGnR,wBACP0J,EAAIsI,EAAM5R,EAAE6R,YAAc,EAC1BC,EAAIF,EAAM5R,EAAE+R,YAAc,EAC9B,MAAO,CACL9R,OAAQ1vB,EAAE0vB,OAAS6R,EACnB9X,OAAQzpB,EAAEypB,OACVD,KAAMxpB,EAAEwpB,KAAOuP,EACf0I,MAAOzhC,EAAEyhC,MAAQ1I,EACjBxP,IAAKvpB,EAAEupB,IAAMgY,EACb7X,MAAO1pB,EAAE0pB,QAGbgY,SAAU,SAAkB5tB,EAAGC,GAC7B,OAAOD,EAAEnC,QAAQoC,IAAM,GAEzB4tB,SAAU,SAAkBnB,GAC1B,KAAOA,EAAGoB,YACRpB,EAAGrQ,YAAYqQ,EAAGoB,cAKxB,SAASC,EAAMp8B,EAAKwyB,GAClB,OAAOxyB,EAAI1E,eAAek3B,MAAwB,IAAdxyB,EAAIwyB,IAAkBxyB,EAAIwyB,GAAM/zB,QAUtE,SAAS49B,EAAWhV,EAAM/R,EAAQgnB,GAC5BjV,EAAKqC,WACFrC,EAAKqC,WAAWA,YACnBpU,EAAOwG,YAAYuL,EAAKqC,YAG1BpU,EAAOwG,YAAYuL,GAGrB7V,EAAK2pB,YAAY9T,EAAM,YAElBiV,IACHjV,EAAK7R,YAAc6R,EAAK7R,YAAc,IAS1C,IAAInF,EAAS,WACX,GAAI9H,KAAK8d,MAAM5nB,OAAQ,CACrB,IAAIq8B,EAAIhoB,SAASypB,yBAEjB,GAAIh0B,KAAKsjB,OAAO2Q,WAAY,CAC1B,IAAIC,EAAQl0B,KAAKk0B,MAAMlgC,MAAM,EAAGgM,KAAKm0B,WACrClrB,EAAKqpB,KAAK4B,GAAO,SAAUhjC,EAAG4sB,GAC5B7U,EAAKqpB,KAAKxU,GAAO,SAAUjP,EAAGiQ,GAC5BgV,EAAWhV,EAAMyT,EAAGvyB,KAAKo0B,gBACxBp0B,QACFA,WAEHiJ,EAAKqpB,KAAKtyB,KAAK8d,OAAO,SAAU5sB,EAAG4tB,GACjCgV,EAAWhV,EAAMyT,EAAGvyB,KAAKo0B,gBACxBp0B,MAGDuyB,EAAE8B,oBACJprB,EAAK2pB,YAAY5yB,KAAK8d,MAAM9d,KAAKs0B,UAAW,UAC5Ct0B,KAAKs0B,SAAW/B,EAAEgC,cAAc,mBAAmBC,IACnDvrB,EAAKypB,SAAS1yB,KAAK8d,MAAM9d,KAAKs0B,UAAW,WAG3Ct0B,KAAKyqB,KAAKlX,YAAYgf,KAUtBkC,EAAU,SAAiBx0B,GAC7B,IAAIjK,EAASiK,EAAEjK,OAEVgK,KAAKuM,UAAUxB,SAAS/U,KAAYgK,KAAK00B,SAAUzrB,EAAKwpB,SAASzyB,KAAKuM,UAAW,WACpFvM,KAAKoR,SAYLujB,EAAa,SAAoB7M,EAAQla,GAC3CA,EAAOA,GAAQka,EACf,IAAIze,EAAUrJ,KAAKo0B,aAAep0B,KAAKsjB,OAAOsR,aAAahnB,GAAQka,EAAO7a,YACtE4nB,EAAM5rB,EAAKuK,cAAc,KAAM,CACjC,MAAS,iBACTvB,KAAM5I,EACNyrB,KAAM,WACN,iBAAiB,IAcnB,OAZAD,EAAIL,IAAM1M,EAAO0M,IACjBx0B,KAAK8d,MAAM/pB,KAAK8gC,GAEZ/M,EAAOyJ,iBACTvxB,KAAKuxB,gBAAgBx9B,KAAK+zB,EAAO0M,KAG/B1M,EAAO9O,WACT6b,EAAI7b,UAAW,EACf/P,EAAKypB,SAASmC,EAAK,aAGdA,GAQLE,EAAQ,WACV/0B,KAAKg1B,mBAAqBh1B,KAAKsjB,OAAO2Q,YAAcj0B,KAAKsjB,OAAO2Q,WAAa,EAEzEJ,EAAM7zB,KAAKsjB,OAAQ,WACjBra,EAAK8pB,MAAM/yB,KAAKsjB,OAAO5H,OACzB1b,KAAK0b,MAAQ1b,KAAKsjB,OAAO5H,MAAQ,KAEP,SAAtB1b,KAAKsjB,OAAO5H,MACd1b,KAAK0b,MAAQ,OACJzS,EAAKyqB,SAAS1zB,KAAKsjB,OAAO5H,MAAO,OAC1C1b,KAAK0b,MAAQ1b,KAAKsjB,OAAO5H,QAK/B1b,KAAKuM,UAAYtD,EAAKuK,cAAc,MAAO,CACzC,MAAS,sBAGPxT,KAAKsjB,OAAO2R,aACdhsB,EAAKypB,SAAS1yB,KAAKuM,UAAWvM,KAAKsjB,OAAO2R,aAIxCj1B,KAAKk1B,aACPjsB,EAAKypB,SAAS1yB,KAAKuM,UAAW,kBAE9BtD,EAAKypB,SAAS1yB,KAAKuM,UAAW,mBAIhCvM,KAAKwyB,GAAG2C,UAAY,EAEhBn1B,KAAKsjB,OAAOuO,gBAAkB7xB,KAAKk1B,aACrCjsB,EAAKypB,SAAS1yB,KAAKwyB,GAAI,mBAEvBvpB,EAAKypB,SAAS1yB,KAAKwyB,GAAI,kBAGzBxyB,KAAKo1B,SAAWnsB,EAAKuK,cAAc,MAAO,CACxC,MAAS,mBACTwF,SAAUhZ,KAAKgZ,SACfmc,SAAU,EAEV,iBAAiB,IAEnBn1B,KAAKq1B,MAAQpsB,EAAKuK,cAAcxT,KAAKwyB,GAAG8C,SAAW,KAAO,OAAQ,CAChE,MAAS,kBAEX,IAAIC,EAAWtsB,EAAKuK,cAAc,MAAO,CACvC,MAAS,8BAuCX,GArCAxT,KAAKyqB,KAAOxhB,EAAKuK,cAAc,KAAM,CACnC,MAAS,kBACTshB,KAAM,OACN,eAAe,EACf,iBAAiB,IAEnB90B,KAAKw1B,OAASvsB,EAAKuK,cAAc,MAAO,CACtC,MAAS,mBAEXxT,KAAKwyB,GAAGllB,aAAa,eAAe,GAEhCtN,KAAKgZ,WACPhZ,KAAKwyB,GAAGxZ,UAAW,GAGjBhZ,KAAKwyB,GAAG8C,WACVrsB,EAAKypB,SAAS1yB,KAAKq1B,MAAO,gBAC1BpsB,EAAKypB,SAAS1yB,KAAKuM,UAAW,YAE9BvM,KAAKy1B,KAAO,GAEZz1B,KAAK01B,eAAiB11B,KAAK21B,sBAAsB,SAEjD31B,KAAK41B,gBAAkB51B,KAAK21B,sBAAsB,QAGpD31B,KAAKo1B,SAAS7hB,YAAYvT,KAAKq1B,OAE3Br1B,KAAKsjB,OAAOmO,YACdzxB,KAAK61B,YAAc5sB,EAAKuK,cAAc,SAAU,CAC9C,MAAS,gBACTzP,KAAM,WAER/D,KAAKuM,UAAUgH,YAAYvT,KAAK61B,aAChC5sB,EAAKypB,SAAS1yB,KAAKuM,UAAW,cAG5BvM,KAAKsjB,OAAOwO,SAAU,CACxB,IAAInT,EAAK1V,EAAKuK,cAAc,KAAM,CAChC,MAAS,cAEXxT,KAAKqW,MAAQpN,EAAKuK,cAAc,QAAS,CACvC,MAAS,oBACT4F,YAAapZ,KAAKsjB,OAAOyO,eACzB+D,SAAU,EACVC,aAAc,MACdC,YAAa,MACbC,eAAgB,MAChBC,WAAY,QACZpB,KAAM,UACN/wB,KAAM,WAER4a,EAAGpL,YAAYvT,KAAKqW,OACpBrW,KAAKq1B,MAAM9hB,YAAYoL,GACvB1V,EAAKypB,SAAS1yB,KAAKuM,UAAW,YAC9BvM,KAAKm2B,cAAgB,CAAC,KAElBn2B,KAAKsjB,OAAO6S,gBACdn2B,KAAKm2B,cAAgBn2B,KAAKm2B,cAAcl4B,OAAO+B,KAAKsjB,OAAO6S,gBAI3Dn2B,KAAKsjB,OAAOkO,aACdxxB,KAAKqW,MAAQpN,EAAKuK,cAAc,QAAS,CACvC,MAAS,gBACTsiB,UAAW,EACXC,aAAc,MACdC,YAAa,MACbC,eAAgB,MAChBC,WAAY,QACZpB,KAAM,UACN/wB,KAAM,WAER/D,KAAKo2B,WAAantB,EAAKuK,cAAc,SAAU,CAC7C,MAAS,sBACTzP,KAAM,WAER/D,KAAKq2B,eAAiBptB,EAAKuK,cAAc,MAAO,CAC9C,MAAS,4BAEXxT,KAAKq2B,eAAe9iB,YAAYvT,KAAKqW,OACrCrW,KAAKq2B,eAAe9iB,YAAYvT,KAAKo2B,YACrCb,EAAShiB,YAAYvT,KAAKq2B,iBAG5Bd,EAAShiB,YAAYvT,KAAKw1B,QAC1BD,EAAShiB,YAAYvT,KAAKyqB,MAE1BzqB,KAAK8d,MAAQ,GAEb9d,KAAKpC,QAAU,GAEXoC,KAAKwyB,GAAG50B,QAAQ1H,SAClB8J,KAAKpC,QAAU,GAAG5J,MAAM3C,KAAK2O,KAAKwyB,GAAG50B,UAKvC,IAiEI04B,EAjEAC,GAAQ,EACR1nB,EAAI,EAwBR,GAtBI7O,KAAKwyB,GAAG3X,SAAS3kB,QACnB+S,EAAKqpB,KAAKtyB,KAAKwyB,GAAG3X,UAAU,SAAU3pB,EAAGiN,GACd,aAArBA,EAAQ6O,UACVupB,EAAQttB,EAAKuK,cAAc,KAAM,CAC/B,MAAS,mBACTshB,KAAM,QACN7iB,KAAM,uCAAyC9T,EAAQk3B,MAAQ,UAEjEpsB,EAAKqpB,KAAKn0B,EAAQ0c,UAAU,SAAUkQ,EAAGyH,GACvCA,EAAGgC,IAAM3lB,EACT0nB,EAAMhjB,YAAYohB,EAAWtjC,KAAK2O,KAAMwyB,EAAI+D,IAC5C1nB,MACC7O,QAEH7B,EAAQq2B,IAAM3lB,EACd8lB,EAAWtjC,KAAK2O,KAAM7B,GACtB0Q,OAED7O,MAIDA,KAAKsjB,OAAO1V,MAAQha,MAAMW,QAAQyL,KAAKsjB,OAAO1V,MAAO,CACvD5N,KAAK4N,KAAO,GACZ,IACIka,EADA0O,GAAW,EAEfD,GAAQ,EACR1nB,EAAI,EACJ5F,EAAKqpB,KAAKtyB,KAAKsjB,OAAO1V,MAAM,SAAU1c,EAAG2jC,GAEnChB,EAAMgB,EAAK,aACb2B,EAAWvtB,EAAKuK,cAAc,WAAY,CACxC6hB,MAAOR,EAAI1pB,OAEborB,EAAQttB,EAAKuK,cAAc,KAAM,CAC/B,MAAS,mBACTshB,KAAM,QACN7iB,KAAM,uCAAyC4iB,EAAI1pB,KAAO,UAE5DlC,EAAKqpB,KAAKuC,EAAIha,UAAU,SAAUkQ,EAAGnd,IACnCka,EAAS,IAAI2O,OAAO7oB,EAAKzC,KAAMyC,EAAKzb,OAAO,EAAOyb,EAAK7a,eAAe,cAAiC,IAAlB6a,EAAKwnB,WACnFpc,SAAW6a,EAAMjmB,EAAM,YAC9B5N,KAAKpC,QAAQ7J,KAAK+zB,GAClB0O,EAASjjB,YAAYuU,GACrBA,EAAO0M,IAAM3lB,EACb0nB,EAAMhjB,YAAYohB,EAAWtjC,KAAK2O,KAAM8nB,EAAQla,IAChD5N,KAAK4N,KAAKiB,GAAKjB,EACfiB,MACC7O,SAEH8nB,EAAS,IAAI2O,OAAO5B,EAAI1pB,KAAM0pB,EAAI1iC,OAAO,EAAO0iC,EAAI9hC,eAAe,cAAgC,IAAjB8hC,EAAIO,WAC/Epc,SAAW6a,EAAMgB,EAAK,YAC7B70B,KAAKpC,QAAQ7J,KAAK+zB,GAClBA,EAAO0M,IAAM3lB,EACb8lB,EAAWtjC,KAAK2O,KAAM8nB,EAAQ+M,GAC9B70B,KAAK4N,KAAKiB,GAAKgmB,EACfhmB,OAED7O,MAGLA,KAAK02B,aAAY,GAEjB12B,KAAKs0B,SAAW,EAEhB,IAAK,IAAIpjC,EAAI,EAAGA,EAAI8O,KAAK8d,MAAM5nB,OAAQhF,IAGrC,GAFAolC,EAAQt2B,KAAK8d,MAAM5sB,IAEd+X,EAAKwpB,SAAS6D,EAAO,YAAa,CACrCrtB,EAAKypB,SAAS4D,EAAO,UACrBt2B,KAAKs0B,SAAWpjC,EAChB,MAKA8O,KAAKg1B,qBACPh1B,KAAKm0B,UAAY,EAEjBn0B,KAAK22B,YAGP32B,KAAKuM,UAAUgH,YAAYvT,KAAKo1B,UAChCp1B,KAAKuM,UAAUgH,YAAYgiB,GAC3Bv1B,KAAK42B,QAAU3tB,EAAKuK,cAAc,MAAO,CACvC,MAAS,wBAGXxT,KAAK62B,iBACL72B,KAAKo1B,SAAS7hB,YAAYvT,KAAK42B,SAE3B52B,KAAKgZ,UACPhZ,KAAK82B,UAGP92B,KAAKwyB,GAAGrR,WAAW5V,aAAavL,KAAKuM,UAAWvM,KAAKwyB,IACrDxyB,KAAKuM,UAAUgH,YAAYvT,KAAKwyB,KAS9BuE,EAAW,SAAkB92B,GAG/B,GAFAA,EAAIA,GAAKC,OAAOqf,MAEXvf,KAAK8d,MAAM5nB,QAAW8J,KAAK00B,QAAWzrB,EAAKyqB,SAAS,CAAC,GAAI,GAAI,IAAKzzB,EAAE6iB,OAAzE,CAOA,GAFA7iB,EAAEuf,iBAEc,KAAZvf,EAAE6iB,MACJ,QAAI9iB,KAAKsjB,OAAOwO,UAAY9xB,KAAKqW,MAAMlkB,MAAM+D,OAAS,IAI/C8J,KAAKynB,OAAOznB,KAAKs0B,UAG1B,IAAI0C,EACAC,EAASj3B,KAAK8d,MAAM9d,KAAKs0B,UAE7B,OAAQr0B,EAAE6iB,OACR,KAAK,GACHkU,EAAY,EAERh3B,KAAKs0B,SAAW,GAClBt0B,KAAKs0B,WAGP,MAEF,KAAK,GACH0C,EAAY,EAERh3B,KAAKs0B,SAAWt0B,KAAK8d,MAAM5nB,OAAS,GACtC8J,KAAKs0B,WAQX,IAHAt0B,KAAKk3B,YAAa,EAGXjuB,EAAKwpB,SAASzyB,KAAK8d,MAAM9d,KAAKs0B,UAAW,aAAerrB,EAAKwpB,SAASzyB,KAAK8d,MAAM9d,KAAKs0B,UAAW,aAOtG,GANI0C,EACFh3B,KAAKs0B,WAELt0B,KAAKs0B,WAGHt0B,KAAKm3B,UAAW,CAClB,GAAIn3B,KAAKs0B,SAAWt0B,KAAKyqB,KAAK2M,iBAAiB5C,IAAK,CAClDx0B,KAAKs0B,SAAWt0B,KAAKyqB,KAAK2M,iBAAiB5C,IAC3C,MACK,GAAIx0B,KAAKs0B,SAAWt0B,KAAKyqB,KAAK4M,kBAAkB7C,IAAK,CAC1Dx0B,KAAKs0B,SAAWt0B,KAAKyqB,KAAK4M,kBAAkB7C,IAC5C,OAMN,IAAIxiC,EAAIiX,EAAKmqB,KAAKpzB,KAAK8d,MAAM9d,KAAKs0B,WAE7B0C,GAOmB,IAAlBh3B,KAAKs0B,SACPt0B,KAAKyqB,KAAKpF,UAAY,EACbrzB,EAAEupB,IAAMvpB,EAAEypB,OAASzb,KAAKs3B,SAAS/b,IAAMvb,KAAKs3B,SAAS7b,SAC9Dzb,KAAKyqB,KAAKpF,UAAYrlB,KAAKyqB,KAAKpF,WAAarzB,EAAEupB,IAAMvpB,EAAEypB,QAAUzb,KAAKs3B,SAAS/b,IAAMvb,KAAKs3B,SAAS7b,UAIjGzb,KAAKs0B,WAAat0B,KAAKyqB,KAAK4J,kBAAoB,GAAKr0B,KAAKg1B,oBAC5DpM,EAAKv3B,KAAK2O,OAdU,IAAlBA,KAAKs0B,SACPt0B,KAAKyqB,KAAKpF,UAAY,EACbrzB,EAAEupB,IAAMvb,KAAKs3B,SAAS/b,IAAM,IACrCvb,KAAKyqB,KAAKpF,UAAYrlB,KAAKyqB,KAAKpF,WAAarzB,EAAEupB,IAAMvb,KAAKs3B,SAAS/b,MAenE0b,GACFhuB,EAAK2pB,YAAYqE,EAAQ,UAG3BhuB,EAAKypB,SAAS1yB,KAAK8d,MAAM9d,KAAKs0B,UAAW,eAnFvCt0B,KAAKk3B,YAAa,GA2FlBK,EAAS,SAAgBzY,GAC3B,IACI9sB,EADAwlC,EAAOx3B,KAEPy3B,EAAUltB,SAASypB,yBACnBlM,EAAS9nB,KAAKpC,QAAQkhB,EAAK0V,KAC3B5mB,EAAO5N,KAAK4N,KAAO5N,KAAK4N,KAAKkR,EAAK0V,KAAO1M,EACzCze,EAAUrJ,KAAK03B,eAAiB13B,KAAKsjB,OAAOqU,gBAAgB/pB,GAAQka,EAAO7a,YAC3E4D,EAAM5H,EAAKuK,cAAc,KAAM,CACjC,MAAS,cACTvB,KAAM5I,IAEJuuB,EAAM3uB,EAAKuK,cAAc,SAAU,CACrC,MAAS,qBACTzP,KAAM,WAQR,GANA8M,EAAI0C,YAAYqkB,GAEhB/mB,EAAI2jB,IAAM1V,EAAK0V,IACf3jB,EAAIA,IAAMiX,EAAO31B,MACjB6N,KAAKy1B,KAAK1hC,KAAK8c,GAEX7Q,KAAKsjB,OAAOoO,aAAc,CAC5B,IAAI+D,EAAOz1B,KAAKy1B,KAAKzhC,QAErBhC,EAAI,SAAW+L,EAAK6B,GAClB7B,EAAIwL,QAAQ,gBAAgB,SAAUiuB,EAAMK,EAAIC,GAC9Cl4B,EAAI7L,KAAK,CAAC8jC,GAAME,IAAUD,GAAM,SAIpCrC,EAAKuC,MAAK,SAAUlyB,EAAGC,GACrB,IAEIkyB,EACAC,EAHAnN,EAAI,GACJwI,EAAI,GAeR,KAXiC,IAA7BiE,EAAKlU,OAAOoO,cACduG,EAAKnyB,EAAE+K,IACPqnB,EAAKnyB,EAAE8K,KAC+B,SAA7B2mB,EAAKlU,OAAOoO,eACrBuG,EAAKnyB,EAAEmH,YACPirB,EAAKnyB,EAAEkH,aAGTjb,EAAEimC,EAAIlN,GACN/4B,EAAEkmC,EAAI3E,GAECxI,EAAE70B,QAAUq9B,EAAEr9B,QAAQ,CAC3B,IAAIiiC,EAAKpN,EAAEqN,QACPC,EAAK9E,EAAE6E,QACPE,EAAKH,EAAG,GAAKE,EAAG,IAAMF,EAAG,GAAGI,cAAcF,EAAG,IACjD,GAAIC,EAAI,OAAOA,EAGjB,OAAOvN,EAAE70B,OAASq9B,EAAEr9B,UAEtB+S,EAAKqpB,KAAKmD,GAAM,SAAUvkC,EAAGsnC,GAC3Bf,EAAQlkB,YAAYilB,MAEtBx4B,KAAKq1B,MAAMpoB,YAAc,QAEzBwqB,EAAQlkB,YAAY1C,GAGlB7Q,KAAKsjB,OAAOwO,SACd9xB,KAAKq1B,MAAM9pB,aAAaksB,EAASz3B,KAAKqW,MAAM8K,YAE5CnhB,KAAKq1B,MAAM9hB,YAAYkkB,IAUvBgB,EAAY,SAAmB3Z,GACjC,IAAIjO,GAAM,EACV5H,EAAKqpB,KAAKtyB,KAAKy1B,MAAM,SAAUvkC,EAAGkB,GAC5BA,EAAEoiC,MAAQ1V,EAAK0V,MACjB3jB,EAAMze,KAEP4N,MAEC6Q,IACF7Q,KAAKq1B,MAAMlT,YAAYtR,GACvB7Q,KAAKy1B,KAAK7xB,OAAO5D,KAAKy1B,KAAK9xB,QAAQkN,GAAM,KASzC+X,EAAO,WACT,IAAI6B,EAAOzqB,KAAKyqB,KAMhB,GALgBA,EAAKpF,WACFoF,EAAKtF,aACLsF,EAAK5I,cAGR7hB,KAAKm0B,UAAYn0B,KAAKk0B,MAAMh+B,OAAQ,CAClD,IAAIq8B,EAAIhoB,SAASypB,yBACjB/qB,EAAKqpB,KAAKtyB,KAAKk0B,MAAMl0B,KAAKm0B,YAAY,SAAUjjC,EAAG4tB,GACjDgV,EAAWhV,EAAMyT,EAAGvyB,KAAKo0B,gBACxBp0B,MACHyqB,EAAKlX,YAAYgf,GACjBvyB,KAAKm0B,YACLn0B,KAAKqyB,KAAK,mBAAoB,CAC5BvU,MAAO9d,KAAK8d,MAAM5nB,OAClBwiC,MAAO14B,KAAK4N,KAAK1X,OACjByiC,KAAM34B,KAAKm0B,UACXD,MAAOl0B,KAAKk0B,MAAMh+B,WAUpB0iC,EAAc,YACZ54B,KAAKsjB,OAAOkO,YAAcxxB,KAAKsjB,OAAOwO,YACxC9xB,KAAKqW,MAAMlkB,MAAQ,KACnB6N,KAAKm3B,WAAY,EAEbn3B,KAAKsjB,OAAOkO,YACdvoB,EAAK2pB,YAAY5yB,KAAKq2B,eAAgB,UAGpCptB,EAAKwpB,SAASzyB,KAAKuM,UAAW,YAChCtD,EAAK2pB,YAAY5yB,KAAKuM,UAAW,UACjCtD,EAAKypB,SAAS1yB,KAAKuM,UAAW,QAC9BvM,KAAKqW,MAAM+J,SAGbnX,EAAKqpB,KAAKtyB,KAAK8d,OAAO,SAAU5sB,EAAG4tB,GAGjC7V,EAAK2pB,YAAY9T,EAAM,YAElB9e,KAAKo0B,eACRtV,EAAK7R,YAAc6R,EAAK7R,YAAc,MAEvCjN,QA2BH64B,EAAU,SAAiBrG,EAAIlP,GAGjC,GAFAA,EAASA,GAAU,IAEdkP,EACH,MAAM,IAAI52B,MAAM,yEASlB,GANAoE,KAAKwyB,GAAKA,EAEQ,kBAAPA,IACTxyB,KAAKwyB,GAAKjoB,SAASgqB,cAAc/B,IAGnB,OAAZxyB,KAAKwyB,GACP,MAAM,IAAI52B,MAAM,uDAGlB,GAAuC,WAAnCoE,KAAKwyB,GAAGxlB,SAASjD,cACnB,MAAM,IAAInO,MAAM,iEAGlBoE,KAAK8H,OAAOwb,IASduV,EAAQ/lC,UAAUgV,OAAS,SAAUwb,GACnC,IAAItjB,KAAK84B,SAAT,CAEA94B,KAAKsjB,OAASra,EAAKoC,OAAOimB,EAAehO,GAEzCtjB,KAAK+4B,aAAe/4B,KAAKwyB,GAAGzuB,KAE5B/D,KAAKg5B,cAAgBh5B,KAAKwyB,GAAG2C,SAE7Bn1B,KAAKuxB,gBAAkB,GAEvBvxB,KAAKi5B,oBAAsBj5B,KAAKwyB,GAAG50B,QAAQ1H,QAEvC8J,KAAKsjB,OAAOgS,UAAYt1B,KAAKsjB,OAAOwO,YACtC9xB,KAAKwyB,GAAG8C,UAAW,GAIrBt1B,KAAKgZ,SAAW6a,EAAM7zB,KAAKsjB,OAAQ,YACnCtjB,KAAK00B,QAAS,EAEV10B,KAAKsjB,OAAOwO,WACd9xB,KAAKsjB,OAAOkO,YAAa,GAG3BxxB,KAAKk3B,YAAa,EAClBl3B,KAAKk1B,cAAe,EAEhB,iFAAiF9zB,KAAK4U,UAAUkjB,aAClGl5B,KAAKk1B,cAAe,GAGtBl1B,KAAKo0B,aAAep0B,KAAKsjB,OAAOvwB,eAAe,iBAAuD,oBAA7BiN,KAAKsjB,OAAOsR,aACrF50B,KAAK03B,eAAiB13B,KAAKsjB,OAAOvwB,eAAe,oBAA6D,oBAAhCiN,KAAKsjB,OAAOqU,gBAE1F3F,EAAOrJ,MAAM3oB,MACb+0B,EAAM1jC,KAAK2O,MACXA,KAAKm5B,aACLn5B,KAAKo5B,SACLp5B,KAAKs3B,SAAWruB,EAAKmqB,KAAKpzB,KAAKyqB,MAC/BzqB,KAAK84B,UAAW,EAEX94B,KAAKwyB,GAAG8C,WACXt1B,KAAKwyB,GAAG6G,cAAgBr5B,KAAKq5B,eAG/B,IAAI7B,EAAOx3B,KACX0R,YAAW,WACT8lB,EAAKnF,KAAK,kBACT,MAGLwG,EAAQ/lC,UAAUwmC,YAAc,WAE9B,OADet5B,KAAKwyB,GAAG3lB,iBAAiB,mBAI1CgsB,EAAQ/lC,UAAU6iC,sBAAwB,SAAU1L,GAClD,IAAImL,EAAWp1B,KAAKs5B,cAMpB,MALa,GAAGtlC,MAAM3C,KAAK+jC,GAAUl3B,KAAI,SAAU4pB,GACjD,OAAOA,EAAOmC,MACbt0B,QAAO,SAAUzE,GAClB,OAAa,OAANA,QAAoBuO,IAANvO,MASzB2nC,EAAQ/lC,UAAUqmC,WAAa,WAC7B,IAAI3B,EAAOx3B,KACXA,KAAKu5B,OAAS,GACdv5B,KAAKu5B,OAAO9E,QAAUA,EAAQ/hC,KAAKsN,MACnCA,KAAKu5B,OAAOxC,SAAWA,EAASrkC,KAAKsN,MACrCA,KAAKu5B,OAAOC,MAAQx5B,KAAKw5B,MAAM9mC,KAAKsN,OAEhCA,KAAKsjB,OAAOuO,gBAAkB7xB,KAAKk1B,gBACrCl1B,KAAKuM,UAAU0E,iBAAiB,cAAc,SAAUhR,GAClDA,EAAEw5B,eAAe,GAAGzjC,SAAWwhC,EAAKhF,IACtCgF,EAAKkC,aAIL15B,KAAKsjB,OAAOuO,gBAAkB7xB,KAAKk1B,eACrCl1B,KAAKuM,UAAU0E,iBAAiB,SAAS,SAAUhR,GACjDA,EAAEuf,iBAEFvf,EAAEkjB,kBAEEljB,EAAEjK,SAAWwhC,EAAKhF,IACpBgF,EAAKkC,YAoBX15B,KAAKwyB,GAAGvhB,iBAAiB,UAAU,SAAUhR,GAC3C,GAAIu3B,EAAKhF,GAAG8C,SAAU,CACpB,IAAIqE,EAAUnC,EAAK7B,sBAAsB,OACrCiE,EAlBgB,SAA2B7iB,EAAMG,GAKvD,IAJA,IAEIsd,EAFAqF,EAAQ,GACRC,EAAU/iB,EAAK/iB,MAAM,GAGhB9C,EAAI,EAAGA,EAAIgmB,EAAQhhB,OAAQhF,KAClCsjC,EAAMsF,EAAQn2B,QAAQuT,EAAQhmB,MACnB,EAAG4oC,EAAQl2B,OAAO4wB,EAAK,GAAQqF,EAAM9lC,KAAKmjB,EAAQhmB,IAG/D,MAAO,CAAC2oC,EAAOC,GAQCC,CAAkBvC,EAAK5B,gBAAiB+D,GACtD1wB,EAAKqpB,KAAKsH,EAAQ,IAAI,SAAU1oC,EAAGsjC,GACjCgD,EAAKwC,OAAOxF,KACXgD,GACHvuB,EAAKqpB,KAAKsH,EAAQ,IAAI,SAAU1oC,EAAGsjC,GACjCgD,EAAKyC,SAASzF,KACbgD,QAECA,EAAKhF,GAAG6G,eAAiB,GAC3B7B,EAAKwC,OAAOxC,EAAKhF,GAAG6G,mBAOxBr5B,KAAKsjB,OAAOuO,gBACd7xB,KAAKuM,UAAU0E,iBAAiB,WAAW,SAAUhR,GACrC,UAAVA,EAAExN,KAAmB+kC,EAAKpC,WAAa7qB,SAAS8b,gBAElDmR,EAAKkC,SAELhoB,YAAW,WACT8lB,EAAKhF,GAAGpS,UACP,SAMTpgB,KAAKo1B,SAASnkB,iBAAiB,SAAS,SAAUhR,GAC3Cu3B,EAAKxe,UACRwe,EAAKkC,SAGPz5B,EAAEuf,iBACFvf,EAAEkjB,qBAGJnjB,KAAKq1B,MAAMpkB,iBAAiB,SAAS,SAAUhR,GACzCgJ,EAAKwpB,SAASxyB,EAAEjK,OAAQ,uBAC1BwhC,EAAKyC,SAASh6B,EAAEjK,OAAOmrB,WAAWqT,QAIlCx0B,KAAK61B,aACP71B,KAAK61B,YAAY5kB,iBAAiB,QAASjR,KAAK8mB,MAAMp0B,KAAKsN,OAI7DA,KAAKyqB,KAAKxZ,iBAAiB,aAAa,SAAUhR,GAChDA,EAAEuf,oBAGJxf,KAAKyqB,KAAKxZ,iBAAiB,SAAS,SAAUhR,GAC5CA,EAAEuf,iBAEFvf,EAAEkjB,kBAEF,IAAIrE,EAAO7V,EAAK6pB,QAAQ7yB,EAAEjK,QAAQ,SAAUw8B,GAC1C,OAAOA,GAAMvpB,EAAKwpB,SAASD,EAAI,qBAG7B1T,IACG7V,EAAKwpB,SAAS3T,EAAM,cACnB7V,EAAKwpB,SAAS3T,EAAM,aAClB0Y,EAAKhF,GAAG8C,WAAakC,EAAKhF,GAAG8C,UAAYkC,EAAKlU,OAAOqO,gBACvD6F,EAAKyC,SAASnb,EAAK0V,KAGrBgD,EAAKwC,OAAOlb,EAAK0V,KAGfgD,EAAK9C,SAAW8C,EAAKhF,GAAG8C,UAC1BkC,EAAKpmB,aAMbpR,KAAKyqB,KAAKxZ,iBAAiB,aAAa,SAAUhR,GAC5CgJ,EAAKwpB,SAASxyB,EAAEjK,OAAQ,oBACrBiT,EAAKwpB,SAASxyB,EAAEjK,OAAQ,cAC3BiT,EAAK2pB,YAAY4E,EAAK1Z,MAAM0Z,EAAKlD,UAAW,UAC5CrrB,EAAKypB,SAASzyB,EAAEjK,OAAQ,UACxBwhC,EAAKlD,SAAW,GAAGtgC,MAAM3C,KAAKmmC,EAAK1Z,OAAOna,QAAQ1D,EAAEjK,aAKtDgK,KAAKsjB,OAAOkO,aAEdxxB,KAAKqW,MAAMpF,iBAAiB,SAAS,SAAUhR,GAC7Cu3B,EAAKL,WAAY,KAEnBn3B,KAAKqW,MAAMpF,iBAAiB,QAAQ,SAAUhR,GAC5Cu3B,EAAKL,WAAY,KAEnBn3B,KAAKqW,MAAMpF,iBAAiB,SAAS,SAAUhR,GAC7Cu3B,EAAK0C,SAEA1C,EAAKlU,OAAOwO,WAEX9xB,KAAK7N,MAAM+D,OACb+S,EAAKypB,SAAS1yB,KAAKmhB,WAAY,UAE/BlY,EAAK2pB,YAAY5yB,KAAKmhB,WAAY,cAKxCnhB,KAAKo2B,WAAWnlB,iBAAiB,SAAS,SAAUhR,GAClDu3B,EAAKnhB,MAAMlkB,MAAQ,KACnBymC,EAAYvnC,KAAKmmC,GAEZA,EAAK/M,KAAK4J,mBACbvsB,EAAOzW,KAAKmmC,OAKdx3B,KAAKsjB,OAAOwO,UACd9xB,KAAKqW,MAAMpF,iBAAiB,SAAS,SAAUhR,GAG7C,GAFAu3B,EAAK0C,SAED1C,EAAKlU,OAAOwO,UAAY9xB,KAAK7N,MAAM+D,OAAQ,CAC7C,IAAI6H,EAAMiC,KAAK7N,MAAMwgC,QAEL,KAAZ1yB,EAAE6iB,OAAgB7Z,EAAKyqB,SAAS8D,EAAKrB,cAAel2B,EAAExN,QACxDwW,EAAKqpB,KAAKkF,EAAKrB,eAAe,SAAUjlC,EAAG2e,GACzC9R,EAAMA,EAAIwL,QAAQsG,EAAG,OAEV2nB,EAAKntB,IAAI,CACpBlY,MAAO4L,EACPoN,KAAMpN,EACNq3B,UAAU,IACT,IAMDoC,EAAKpmB,QACLwnB,EAAYvnC,KAAKmmC,KAJjBx3B,KAAK7N,MAAQ,GACbqlC,EAAK2C,WAAW,qCAU1Bn6B,KAAKo5B,OAASnwB,EAAKgqB,UAAS,WAEtBuE,EAAK9C,QAAU8C,EAAKlU,OAAOsO,eAC7B4F,EAAKpmB,QAGHomB,EAAK9b,QACP8b,EAAKjrB,UAAUoM,MAAM+C,MAAQ8b,EAAK9b,OAGpC8b,EAAK4C,WACJ,IAECp6B,KAAKg1B,qBACPh1B,KAAKq6B,cAAgBpxB,EAAKgqB,UAAS,WACjCrK,EAAKv3B,KAAK2O,QACT,IACHA,KAAKyqB,KAAKxZ,iBAAiB,SAAUjR,KAAKq6B,cAAc3nC,KAAKsN,QAI/DuK,SAAS0G,iBAAiB,QAASjR,KAAKu5B,OAAO9E,SAC/Cv0B,OAAO+Q,iBAAiB,UAAWjR,KAAKu5B,OAAOxC,UAC/C72B,OAAO+Q,iBAAiB,SAAUjR,KAAKo5B,QACvCl5B,OAAO+Q,iBAAiB,SAAUjR,KAAKo5B,QAEnCp5B,KAAKwyB,GAAGvZ,MACVjZ,KAAKwyB,GAAGvZ,KAAKhI,iBAAiB,QAASjR,KAAKu5B,OAAOC,QASvDX,EAAQ/lC,UAAU4jC,YAAc,SAAU8C,GAoCxC,GAlCKx5B,KAAKsjB,OAAO1V,MAAS5N,KAAKwyB,GAAG8C,WAAYt1B,KAAKwyB,GAAG50B,QAAQ1H,SAE9B,IAA1B8J,KAAKwyB,GAAG6G,gBACLr5B,KAAKwyB,GAAG50B,QAAQ,GAAG2zB,iBAAoBvxB,KAAKsjB,OAAOiO,kBACtDvxB,KAAKwyB,GAAG6G,eAAiB,IAI7Br5B,KAAKq5B,cAAgBr5B,KAAKwyB,GAAG6G,cAEzBr5B,KAAKq5B,eAAiB,GACxBr5B,KAAKg6B,OAAOh6B,KAAKq5B,gBAOjBr5B,KAAKsjB,OAAOgS,UAAkC,eAAtBt1B,KAAK+4B,eAAkC/4B,KAAKsjB,OAAO1V,MACzE5N,KAAKwyB,GAAG50B,QAAQ,GAAGw3B,WAAap1B,KAAKwyB,GAAG50B,QAAQ,GAAG2zB,kBACrDvxB,KAAKwyB,GAAG50B,QAAQ,GAAGw3B,UAAW,GAIlCnsB,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG42B,GAC/BA,EAAOsN,UAAYtN,EAAOyJ,iBAC5BvxB,KAAKg6B,OAAOlS,EAAO0M,OAEpBx0B,MAECA,KAAKsjB,OAAOgX,eACdt6B,KAAKu6B,SAASv6B,KAAKsjB,OAAOgX,eAGxBt6B,KAAKsjB,OAAO1V,KAAM,EACf5N,KAAKwyB,GAAG8C,UAAYt1B,KAAKsjB,OAAOiO,iBAAmBvxB,KAAKwyB,GAAG6G,cAAgB,GAC9Er5B,KAAKg6B,OAAO,GAGd,IAAInrB,EAAI,EACR5F,EAAKqpB,KAAKtyB,KAAKsjB,OAAO1V,MAAM,SAAU1c,EAAG2jC,GAEnChB,EAAMgB,EAAK,YACb5rB,EAAKqpB,KAAKuC,EAAIha,UAAU,SAAUkQ,EAAGjM,GAC/BA,EAAK/rB,eAAe,cAAiC,IAAlB+rB,EAAKsW,UAC1Cp1B,KAAKg6B,OAAOnrB,GAGdA,MACC7O,OAEC60B,EAAI9hC,eAAe,cAAgC,IAAjB8hC,EAAIO,UACxCp1B,KAAKg6B,OAAOnrB,GAGdA,OAED7O,QASP64B,EAAQ/lC,UAAUovB,QAAU,WACrBliB,KAAK84B,WACV94B,KAAKqyB,KAAK,mBAEgB,eAAtBryB,KAAK+4B,eACP/4B,KAAKwyB,GAAG8C,UAAW,GAGjBt1B,KAAKsjB,OAAO1V,OACd5N,KAAKwyB,GAAGvlB,YAAc,IAIxBhE,EAAK2pB,YAAY5yB,KAAKwyB,GAAI,kBAEtBxyB,KAAKwyB,GAAGvZ,MACVhQ,EAAKmpB,IAAIpyB,KAAKwyB,GAAGvZ,KAAM,QAASjZ,KAAKu5B,OAAOC,OAI9CvwB,EAAKmpB,IAAI7nB,SAAU,QAASvK,KAAKu5B,OAAO9E,SACxCxrB,EAAKmpB,IAAI7nB,SAAU,UAAWvK,KAAKu5B,OAAOxC,UAC1C9tB,EAAKmpB,IAAIlyB,OAAQ,SAAUF,KAAKo5B,QAChCnwB,EAAKmpB,IAAIlyB,OAAQ,SAAUF,KAAKo5B,QAEhCp5B,KAAKuM,UAAU4U,WAAWqZ,aAAax6B,KAAKwyB,GAAIxyB,KAAKuM,WACrDvM,KAAK84B,UAAW,IASlBD,EAAQ/lC,UAAU20B,OAAS,SAAU/jB,GACnC,IAAIob,EAAO9e,KAAK8d,MAAMpa,GAClBokB,EAAS9nB,KAAKpC,QAAQ8F,GAEtBokB,EAAO9O,WAIP8O,EAAOsN,UAAYnsB,EAAKwpB,SAAS3T,EAAM,YACzC9e,KAAKi6B,SAASv2B,GAEd1D,KAAKg6B,OAAOt2B,GAGV1D,KAAK00B,SAAW10B,KAAKwyB,GAAG8C,UAC1Bt1B,KAAKoR,UAUTynB,EAAQ/lC,UAAUknC,OAAS,SAAUt2B,GACnC,IAAIob,EAAO9e,KAAK8d,MAAMpa,GAClB9F,EAAU,GAAG5J,MAAM3C,KAAK2O,KAAKwyB,GAAG50B,SAChCkqB,EAAS9nB,KAAKpC,QAAQ8F,GAE1B,GAAI1D,KAAKwyB,GAAG8C,SAAU,CACpB,GAAIrsB,EAAKyqB,SAAS1zB,KAAK41B,gBAAiBlyB,GACtC,OAAO,EAGT,GAAI1D,KAAKsjB,OAAOmX,eAAiBz6B,KAAKy1B,KAAKv/B,SAAW8J,KAAKsjB,OAAOmX,cAEhE,OADAz6B,KAAKm6B,WAAW,gBAAkBn6B,KAAKsjB,OAAOmX,cAAgB,2BAA2B,IAClF,EAGTz6B,KAAK01B,eAAe3hC,KAAK+zB,EAAO31B,OAChC6N,KAAK41B,gBAAgB7hC,KAAK2P,GAC1B6zB,EAAOlmC,KAAK2O,KAAM8e,OACb,CACL,IAAIlR,EAAO5N,KAAK4N,KAAO5N,KAAK4N,KAAKlK,GAASokB,EAC1C9nB,KAAKq1B,MAAMpoB,YAAcjN,KAAK03B,eAAiB13B,KAAKsjB,OAAOqU,gBAAgB/pB,GAAQka,EAAO7a,YAC1FjN,KAAKs6B,cAAgBxS,EAAO31B,MAC5B6N,KAAKq5B,cAAgB31B,EACrBuF,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAGS,GACnC,IAAIkjC,EAAM70B,KAAK8d,MAAM5sB,GAEjBA,IAAMwS,IACJmxB,GACF5rB,EAAK2pB,YAAYiC,EAAK,YAGxBljC,EAAEyjC,UAAW,EACbzjC,EAAE+oC,gBAAgB,eAEnB16B,MAGAiJ,EAAKyqB,SAAS91B,EAASkqB,IAC1B9nB,KAAKwyB,GAAGnoB,IAAIyd,GAGdhJ,EAAKxR,aAAa,iBAAiB,GACnCrE,EAAKypB,SAAS5T,EAAM,YACpB7V,EAAKypB,SAAS1yB,KAAKuM,UAAW,gBAC9Bub,EAAOsN,UAAW,EAClBtN,EAAOxa,aAAa,WAAY,IAChCtN,KAAKqyB,KAAK,iBAAkBvK,GAC5B9nB,KAAKqyB,KAAK,iBAAkBvK,IAS9B+Q,EAAQ/lC,UAAUmnC,SAAW,SAAUv2B,EAAOi3B,GAC5C,IAAI7b,EAAO9e,KAAK8d,MAAMpa,GAClBokB,EAAS9nB,KAAKpC,QAAQ8F,GAE1B,GAAI1D,KAAKwyB,GAAG8C,SAAU,CACpB,IAAIsF,EAAW56B,KAAK41B,gBAAgBjyB,QAAQD,GAC5C1D,KAAK41B,gBAAgBhyB,OAAOg3B,EAAU,GACtC,IAAIC,EAAW76B,KAAK01B,eAAe/xB,QAAQmkB,EAAO31B,OAClD6N,KAAK01B,eAAe9xB,OAAOi3B,EAAU,GACrCpC,EAAUpnC,KAAK2O,KAAM8e,GAEhB9e,KAAKy1B,KAAKv/B,QACb+S,EAAK2pB,YAAY5yB,KAAKuM,UAAW,oBAE9B,CACL,IAAKouB,IAAU36B,KAAKsjB,OAAOmO,YAAczxB,KAAKsjB,OAAOqO,cACnD,OAAO,EAGT3xB,KAAKq1B,MAAMpoB,YAAc,GACzBjN,KAAKs6B,cAAgB,KACrBt6B,KAAKwyB,GAAG6G,cAAgBr5B,KAAKq5B,eAAiB,EAC9CpwB,EAAK2pB,YAAY5yB,KAAKuM,UAAW,gBAGnCvM,KAAK8d,MAAMpa,GAAO4J,aAAa,iBAAiB,GAChDrE,EAAK2pB,YAAY5yB,KAAK8d,MAAMpa,GAAQ,YACpCokB,EAAOsN,UAAW,EAClBtN,EAAO4S,gBAAgB,YACvB16B,KAAKqyB,KAAK,iBAAkB,MAC5BryB,KAAKqyB,KAAK,mBAAoBvK,IAQhC+Q,EAAQ/lC,UAAUynC,SAAW,SAAUpoC,GACrC,IAAIoC,EAAUX,MAAMW,QAAQpC,GAO5B,GALKoC,IACHpC,EAAQA,EAAM8B,WAAW0+B,SAItB3yB,KAAKwyB,GAAG8C,UAAY/gC,EACvB,OAAO,EAGT0U,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG42B,IAC/BvzB,GAAW0U,EAAKyqB,SAASvhC,EAAM8B,WAAY6zB,EAAO31B,QAAU21B,EAAO31B,QAAUA,IAC/E6N,KAAKynB,OAAOK,EAAO0M,OAEpBx0B,OAUL64B,EAAQ/lC,UAAUgoC,SAAW,SAAUzlB,EAAU0lB,GAC/C,IAAI5oC,EAEJ,GAAI6N,KAAKwyB,GAAG8C,SACNjgB,EACErV,KAAK41B,gBAAgB1/B,UACvB/D,EAAQ,IACF6oC,OAAS,GACf/xB,EAAKqpB,KAAKtyB,KAAK41B,iBAAiB,SAAU1kC,EAAGwS,GAC3C,IAAIokB,EAAS9nB,KAAKpC,QAAQ8F,GAC1BvR,EAAM6oC,OAAO9pC,GAAK,CAChBiB,MAAO21B,EAAO31B,MACdgZ,KAAM2c,EAAO7a,eAEdjN,OAGL7N,EAAQ6N,KAAK01B,eAAe1hC,aAG9B,GAAIqhB,EAAU,CACZ,IAAIyS,EAAS9nB,KAAKpC,QAAQoC,KAAKq5B,eAC/BlnC,EAAQ,CACNA,MAAO21B,EAAO31B,MACdgZ,KAAM2c,EAAO7a,kBAGf9a,EAAQ6N,KAAKs6B,cAQjB,OAJIjlB,GAAY0lB,IACd5oC,EAAQ2b,KAAKC,UAAU5b,IAGlBA,GAQT0mC,EAAQ/lC,UAAUuX,IAAM,SAAUuD,EAAMqtB,GACtC,GAAIrtB,EAAM,CAKR,GAJA5N,KAAK4N,KAAO5N,KAAK4N,MAAQ,GACzB5N,KAAK8d,MAAQ9d,KAAK8d,OAAS,GAC3B9d,KAAKpC,QAAUoC,KAAKpC,SAAW,GAE3BhK,MAAMW,QAAQqZ,GAEhB3E,EAAKqpB,KAAK1kB,GAAM,SAAU1c,EAAGuG,GAC3BuI,KAAKqK,IAAI5S,EAAKwjC,KACbj7B,WAGA,GAAI,oBAAsBpO,OAAOkB,UAAUmB,SAAS5C,KAAKuc,GAAO,CACnE,GAAIqtB,EAAgB,CAClB,IAAIC,GAAO,EAOX,GANAjyB,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG42B,GAC/BA,EAAO31B,MAAM4X,gBAAkB6D,EAAKzb,MAAM4X,gBAC5CmxB,GAAO,MAIPA,EACF,OAAO,EAIX,IAAIpT,EAAS7e,EAAKuK,cAAc,SAAU5F,GAa1C,OAZA5N,KAAK4N,KAAK7Z,KAAK6Z,GAEf5N,KAAKpC,QAAQ7J,KAAK+zB,GAElBA,EAAO0M,IAAMx0B,KAAKpC,QAAQ1H,OAAS,EAAI8J,KAAKpC,QAAQ1H,OAAS,EAAI,EAEjEy+B,EAAWtjC,KAAK2O,KAAM8nB,GAElBla,EAAKwnB,UACPp1B,KAAKg6B,OAAOlS,EAAO0M,KAGd1M,EAWT,OANA9nB,KAAK62B,iBAED72B,KAAKsjB,OAAO2Q,YACdj0B,KAAK22B,YAGA,IAUXkC,EAAQ/lC,UAAU+/B,OAAS,SAAUlhC,GACnC,IAiBM+R,EAjBF9F,EAAU,GAEVhK,MAAMW,QAAQ5C,GAChBsX,EAAKqpB,KAAK3gC,GAAG,SAAUT,EAAG2jC,GACpB5rB,EAAK8pB,MAAM8B,GACbj3B,EAAQ7J,KAAKiM,KAAKm7B,iBAAiBtG,IACb,kBAANljC,GAChBiM,EAAQ7J,KAAKiM,KAAKo7B,iBAAiBvG,MAEpC70B,MACMiJ,EAAK8pB,MAAMphC,GACpBiM,EAAQ7J,KAAKiM,KAAKm7B,iBAAiBxpC,IACb,kBAANA,GAChBiM,EAAQ7J,KAAKiM,KAAKo7B,iBAAiBzpC,IAGjCiM,EAAQ1H,SAEV+S,EAAKqpB,KAAK10B,GAAS,SAAU1M,EAAG42B,GAC9BpkB,EAAQokB,EAAO0M,IAEfx0B,KAAKwyB,GAAGK,OAAO/K,GAEf9nB,KAAKpC,QAAQgG,OAAOF,EAAO,GAG3B,IAAIyd,EAAanhB,KAAK8d,MAAMpa,GAAOyd,WAE/BA,GACFA,EAAWgB,YAAYniB,KAAK8d,MAAMpa,IAIpC1D,KAAK8d,MAAMla,OAAOF,EAAO,GAEzBuF,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG2jC,GACnCA,EAAIL,IAAMtjC,EACV8O,KAAK8d,MAAM5sB,GAAGsjC,IAAMtjC,IACnB8O,QACFA,MAGHA,KAAK62B,iBAED72B,KAAKsjB,OAAO2Q,YACdj0B,KAAK22B,aASXkC,EAAQ/lC,UAAUuoC,UAAY,WAE5Br7B,KAAK8mB,OAAM,GAEX7d,EAAKqpB,KAAKtyB,KAAKwyB,GAAG50B,SAAS,SAAU1M,EAAG42B,GACtC9nB,KAAKwyB,GAAGK,OAAO/K,KACd9nB,MAEHiJ,EAAK0qB,SAAS3zB,KAAKyqB,MAEnBzqB,KAAK8d,MAAQ,GACb9d,KAAKpC,QAAU,GACfoC,KAAK4N,KAAO,GACZ5N,KAAKs0B,SAAW,EAEZt0B,KAAKg1B,qBACPh1B,KAAKg1B,oBAAqB,EAC1Bh1B,KAAKm0B,UAAY,EACjBn0B,KAAKk0B,MAAQ,IAIfl0B,KAAK62B,kBAQPgC,EAAQ/lC,UAAUonC,OAAS,SAAU1nB,GACnC,IAAIxS,KAAKk3B,WAAT,CACA1kB,EAASA,GAAUxS,KAAKqW,MAAMlkB,MAC9B,IAAIogC,EAAIhoB,SAASypB,yBAMjB,GAJAh0B,KAAKs7B,gBAELryB,EAAK0qB,SAAS3zB,KAAKyqB,MAEfjY,EAAOtc,OAAS,EA4BlB,GA1BA+S,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG42B,GACnC,IAAIhJ,EAAO9e,KAAK8d,MAAMgK,EAAO0M,KAG7B,GAFevrB,EAAKyqB,SAAS5L,EAAO7a,YAAYlD,cAAeyI,EAAOzI,iBAErD+d,EAAO9O,UAItB,GAHA8a,EAAWhV,EAAMyT,EAAGvyB,KAAKo0B,cACzBnrB,EAAK2pB,YAAY9T,EAAM,aAElB9e,KAAKo0B,aAAc,CACtBtV,EAAK7R,YAAc,GACnB,IAAIsuB,EAtyBF,SAAeC,EAAOrwB,GAChC,IAAIowB,EAAS,IAAIpxB,OAAOqxB,EAAO,KAAK3xB,KAAKsB,GAEzC,GAAIowB,EAAQ,CACV,IAAI/mB,EAAQ+mB,EAAO73B,MACfiR,EAAM4mB,EAAO73B,MAAQ63B,EAAO,GAAGrlC,OACnC,MAAO,CACLuV,OAAQN,EAAKjJ,UAAU,EAAGsS,GAC1BpF,MAAOjE,EAAKjJ,UAAUsS,EAAOG,GAC7B5E,MAAO5E,EAAKjJ,UAAUyS,IAI1B,OAAO,KAyxBcvF,CAAMoD,EAAQsV,EAAO7a,aAElC,GAAIsuB,EAAQ,CACVzc,EAAKvL,YAAYhJ,SAASuV,eAAeyb,EAAO9vB,SAChD,IAAIwC,EAAY1D,SAASiJ,cAAc,QACvCvF,EAAUnE,UAAY,gBACtBmE,EAAUsF,YAAYhJ,SAASuV,eAAeyb,EAAOnsB,QACrD0P,EAAKvL,YAAYtF,GACjB6Q,EAAKvL,YAAYhJ,SAASuV,eAAeyb,EAAOxrB,eAIpD9G,EAAKypB,SAAS5T,EAAM,cAErB9e,MAEEuyB,EAAE8B,kBAIA,CAEL,IAAI4C,EAASj3B,KAAK8d,MAAM9d,KAAKs0B,UACzBmH,EAAUlJ,EAAE8E,kBAChBpuB,EAAK2pB,YAAYqE,EAAQ,UACzBj3B,KAAKs0B,SAAWmH,EAAQjH,IACxBvrB,EAAKypB,SAAS+I,EAAS,eATlBz7B,KAAKsjB,OAAOwO,UACf9xB,KAAKm6B,WAAW,oBAWpBryB,EAAOzW,KAAK2O,MAGdA,KAAKyqB,KAAKlX,YAAYgf,KAQxBsG,EAAQ/lC,UAAU4mC,OAAS,WACpB15B,KAAKgZ,WACJhZ,KAAK00B,OACP10B,KAAKoR,QAELpR,KAAKgU,SAUX6kB,EAAQ/lC,UAAUkhB,KAAO,WACvB,IAAIwjB,EAAOx3B,KAEX,QAAKA,KAAKpC,QAAQ1H,SAIb8J,KAAK00B,QACR10B,KAAKqyB,KAAK,gBAGZryB,KAAK00B,QAAS,EAEV10B,KAAKk1B,cAAgBl1B,KAAKsjB,OAAOuO,gBACnC5oB,EAAKypB,SAAS1yB,KAAKuM,UAAW,oBAE1BvM,KAAKsjB,OAAO1V,MAGd3E,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG42B,GACnC9nB,KAAKwyB,GAAGnoB,IAAIyd,KACX9nB,SAMPiJ,EAAKypB,SAAS1yB,KAAKuM,UAAW,QAC9BzE,EAAOzW,KAAK2O,MACZA,KAAKo6B,SACLp6B,KAAKyqB,KAAKpF,UAAY,EACtBpc,EAAK2pB,YAAY5yB,KAAKuM,UAAW,UACjCvM,KAAKo1B,SAAS9nB,aAAa,iBAAiB,GAC5CtN,KAAKyqB,KAAKnd,aAAa,eAAe,GACtCtN,KAAKyqB,KAAKnd,aAAa,iBAAiB,QAEpCtN,KAAKsjB,OAAOkO,aAAexxB,KAAKsjB,OAAOwO,UACzCpgB,YAAW,WACT8lB,EAAKnhB,MAAM+J,QAEXoX,EAAKnhB,MAAM8e,SAAW,IACrB,QASP0D,EAAQ/lC,UAAUse,MAAQ,WAOxB,GANIpR,KAAK00B,QACP10B,KAAKqyB,KAAK,iBAGZryB,KAAK00B,QAAS,EAEV10B,KAAKk1B,cAAgBl1B,KAAKsjB,OAAOuO,eACnC5oB,EAAK2pB,YAAY5yB,KAAKuM,UAAW,mBADnC,CAKA,IAAIipB,EAASvsB,EAAKwpB,SAASzyB,KAAKuM,UAAW,UAEvCvM,KAAKsjB,OAAOkO,aAAegE,IAC7Bx1B,KAAKqW,MAAMqlB,OAEX17B,KAAKqW,MAAM8e,UAAY,EACvBn1B,KAAKm3B,WAAY,GAGf3B,IACFvsB,EAAK2pB,YAAY5yB,KAAKuM,UAAW,UACjCvM,KAAKw1B,OAAOvoB,YAAc,IAG5BhE,EAAK2pB,YAAY5yB,KAAKuM,UAAW,QACjCtD,EAAK2pB,YAAY5yB,KAAKuM,UAAW,eACjCvM,KAAKo1B,SAAS9nB,aAAa,iBAAiB,GAC5CtN,KAAKyqB,KAAKnd,aAAa,eAAe,GACtCtN,KAAKyqB,KAAKnd,aAAa,iBAAiB,GACxCrE,EAAK0qB,SAAS3zB,KAAKyqB,MACnBmO,EAAYvnC,KAAK2O,QAQnB64B,EAAQ/lC,UAAU6oC,OAAS,WACzB37B,KAAKgZ,UAAW,EAChBhZ,KAAKwyB,GAAGxZ,UAAW,EACnBhZ,KAAKo1B,SAASD,SAAWn1B,KAAKg5B,cAE1Bh5B,KAAKwyB,GAAG8C,UACVrsB,EAAKqpB,KAAKtyB,KAAKy1B,MAAM,SAAUvkC,EAAGkB,GAChCA,EAAEglC,iBAAiBjC,SAAW,KAIlClsB,EAAK2pB,YAAY5yB,KAAKuM,UAAW,qBASnCssB,EAAQ/lC,UAAUgkC,QAAU,SAAUvqB,GAC/BA,IACHvM,KAAKwyB,GAAGxZ,UAAW,GAGrBhZ,KAAKo1B,SAASD,UAAY,EAEtBn1B,KAAKwyB,GAAG8C,UACVrsB,EAAKqpB,KAAKtyB,KAAKy1B,MAAM,SAAUvkC,EAAGkB,GAChCA,EAAEglC,iBAAiBjC,UAAY,KAInCn1B,KAAKgZ,UAAW,EAChB/P,EAAKypB,SAAS1yB,KAAKuM,UAAW,qBAQhCssB,EAAQ/lC,UAAU0mC,MAAQ,WACnBx5B,KAAKgZ,WACRhZ,KAAK8mB,QACL9mB,KAAK02B,aAAY,GACjBztB,EAAKqpB,KAAKtyB,KAAKuxB,iBAAiB,SAAUrgC,EAAGsjC,GAC3Cx0B,KAAKg6B,OAAOxF,KACXx0B,MACHA,KAAKqyB,KAAK,mBASdwG,EAAQ/lC,UAAUg0B,MAAQ,SAAU6T,GAClC,GAAI36B,KAAKwyB,GAAG8C,UAGV,GAAIt1B,KAAK41B,gBAAgB1/B,OAAQ,CAE/B,IAAIyjC,EAAU35B,KAAK41B,gBAAgB5hC,QACnCiV,EAAKqpB,KAAKqH,GAAS,SAAUzoC,EAAGsjC,GAC9Bx0B,KAAKi6B,SAASzF,KACbx0B,YAGDA,KAAKq5B,eAAiB,GACxBr5B,KAAKi6B,SAASj6B,KAAKq5B,cAAesB,GAItC36B,KAAKqyB,KAAK,kBASZwG,EAAQ/lC,UAAU8oC,UAAY,SAAUb,GACtC,IAAIntB,EAAO,GAiBX,OAhBA3E,EAAKqpB,KAAKtyB,KAAKpC,SAAS,SAAU1M,EAAG42B,GACnC,IAAIrwB,EAAM,CACRtF,MAAO21B,EAAO31B,MACdgZ,KAAM2c,EAAO7a,aAGX6a,EAAOsN,WACT39B,EAAI29B,UAAW,GAGbtN,EAAO9O,WACTvhB,EAAIuhB,UAAW,GAGjBpL,EAAK1c,GAAKuG,KAELsjC,EAASjtB,KAAKC,UAAUH,GAAQA,GAOzCirB,EAAQ/lC,UAAU+oC,UAAY,SAAUd,GACtC,OAAO/6B,KAAK47B,UAAUb,IAQxBlC,EAAQ/lC,UAAU+jC,eAAiB,SAAUzd,GAE3CA,EAAcA,GAAepZ,KAAKsjB,OAAOlK,aAAepZ,KAAKwyB,GAAG/e,aAAa,eAExEzT,KAAKpC,QAAQ1H,SAChBkjB,EAAc,wBAGhBpZ,KAAK42B,QAAQ3pB,YAAcmM,GAQ7Byf,EAAQ/lC,UAAU6jC,SAAW,WAC3B,GAAI32B,KAAK8d,MAAM5nB,OAAQ,CACrB,IAAIshC,EAAOx3B,KAMX,OALAA,KAAKk0B,MAAQl0B,KAAK8d,MAAM5f,KAAI,SAAUyL,EAAGzY,GACvC,OAAOA,EAAIsmC,EAAKlU,OAAO2Q,aAAe,EAAIuD,EAAK1Z,MAAM9pB,MAAM9C,EAAGA,EAAIsmC,EAAKlU,OAAO2Q,YAAc,QAC3Ft+B,QAAO,SAAUu+B,GAClB,OAAOA,KAEFl0B,KAAKk0B,QAShB2E,EAAQ/lC,UAAUqnC,WAAa,SAAUjpB,EAASE,GAC5CA,GACFpR,KAAKoR,QAGPnI,EAAKypB,SAAS1yB,KAAKuM,UAAW,UAC9BvM,KAAKw1B,OAAOvoB,YAAciE,GAO5B2nB,EAAQ/lC,UAAUwoC,cAAgB,WAChCryB,EAAK2pB,YAAY5yB,KAAKuM,UAAW,UACjCvM,KAAKw1B,OAAOvoB,YAAc,IAQ5B4rB,EAAQ/lC,UAAUsnC,OAAS,WACzB,IAAI0B,EAAK7yB,EAAKmqB,KAAKpzB,KAAKo1B,UACpB2G,EAAK/7B,KAAKyqB,KAAKtJ,WAAWU,aAC1Bma,EAAK97B,OAAO+7B,YACDH,EAAGvgB,IAAMugB,EAAGrgB,OAASsgB,EAAKC,GAGvC/yB,EAAKypB,SAAS1yB,KAAKuM,UAAW,YAC9BvM,KAAKk8B,YAAa,IAElBjzB,EAAK2pB,YAAY5yB,KAAKuM,UAAW,YACjCvM,KAAKk8B,YAAa,GAGpBl8B,KAAKs3B,SAAWruB,EAAKmqB,KAAKpzB,KAAKyqB,OASjCoO,EAAQ/lC,UAAUqoC,iBAAmB,SAAUz3B,GAC7C,OAAO1D,KAAKpC,QAAQ8F,IAStBm1B,EAAQ/lC,UAAUsoC,iBAAmB,SAAUjpC,GAG7C,IAFA,IAAI21B,GAAS,EAEJ52B,EAAI,EAAGC,EAAI6O,KAAKpC,QAAQ1H,OAAQhF,EAAIC,EAAGD,IAC9C,GAAI8O,KAAKpC,QAAQ1M,GAAGiB,MAAMwgC,SAAWxgC,EAAM8B,WAAW0+B,OAAQ,CAC5D7K,EAAS9nB,KAAKpC,QAAQ1M,GACtB,MAIJ,OAAO42B,GAGT72B,EAAOD,QAAU6nC,GAIXsD,IACC,SAAS7e,EAAyBC,EAAqBzsB,GAE9D,aACqBA,EAAoBU,EAAE+rB,EAAqB,CACzC,GAAM,WAAa,UACnB,GAAM,WAAa,UACnB,GAAM,WAAa,UACnB,GAAM,WAAa,YAE1C,IAAI6e,EAAuB7xB,SAAS6b,KAChCiW,EAAa,SAEbC,EAAyB,IACzBC,EAAwB,YAItBC,IACC,SAASlf,EAAyBC,EAAqBzsB,GAE9D,aACqBA,EAAoBU,EAAE+rB,EAAqB,CACzC,EAAK,WAAa,YAEpB,IAAIkf,EAAqC3rC,EAAoB,KAYlF,SAAS4rC,EAAqBte,EAAQrR,EAAQ4vB,GAC5C,IAAIC,EAAoB3mC,UAAUC,OAAS,QAAsBuJ,IAAjBxJ,UAAU,IAAmBA,UAAU,GACnF1C,EAAOspC,EAAYze,GACnBC,EAAiB,GACjB+C,EAAahD,EAAOiD,wBACpBC,EAAavU,EAAOsU,wBACpBG,EAAiBjX,SAASiJ,cAAc,OAU5C,SAAS0O,IAEP,GAAIV,GAAkBA,EAAeL,WAAY,CAI/C,IAAK,IAAI1vB,KAHT+vB,EAAeL,WAAWgB,YAAYX,GAGrBnD,EACf,GAAItrB,EAAesrB,EAAgB5sB,GAAO,CACxC,IAAIsP,EAAKsd,EAAe5sB,GAEpBsP,IACF,EAAG07B,EAAmCtW,qBAAqB5yB,EAAM9B,EAAMsP,UAGlEsd,EAAe5sB,GAID,oBAAdkrC,GACTA,EAAUve,IAKhB,SAAS0e,EAAU9mC,GACjB,OAAOA,IAAWwrB,KAAmB,EAAGib,EAAmCM,WAAW/mC,EAAQwrB,GAIhG,SAASwb,EAAiBzd,GACpBud,EAAUvd,EAAMvpB,SAClBksB,IAOJ,GA/CAV,EAAe1X,UAAY,oBAC3B0X,EAAe7I,MAAMuC,SAAW,WAChCsG,EAAe7I,MAAM6C,KAAO4F,EAAW5F,KAAO8F,EAAW9F,KAAO,KAChEgG,EAAe7I,MAAM4C,IAAM6F,EAAW7F,IAAM+F,EAAW/F,IAAM,KAC7DiG,EAAe7I,MAAM+C,MAAQ0F,EAAW1F,MAAQ,EAAI,KACpD8F,EAAe7I,MAAM8C,OAAS2F,EAAW3F,OAAS,EAAI,KACtD+F,EAAe7I,MAAMyC,UAAY,aACjCrO,EAAOwG,YAAYiO,GAqCnBnD,EAAe4e,WAAY,EAAGR,EAAmCxrB,kBAAkB1d,EAAM,YAAaypC,GACtG3e,EAAe6e,YAAa,EAAGT,EAAmCxrB,kBAAkB1d,EAAM,aAAcypC,GAEpGJ,EAAmB,CACrB,IAAIO,EAAe,KAEnB3b,EAAe4b,YAAc,WAC3BjK,aAAagK,GACbA,EAAe,MAGjB3b,EAAe6b,WAAa,WACrBF,IACHA,EAAezrB,WAAWwQ,EAAS,OAMzC,OADAV,EAAeU,QAAUA,EAClBV,EAQT,SAASqb,EAAYxsB,GACnB,MAAmC,oBAArBA,EAAKwsB,YAA6BxsB,EAAKwsB,cAAgB38B,OAGvE,SAASnN,EAAeH,EAAQH,GAC9B,OAAOb,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQH,KAKhD6qC,IACC,SAAShgB,EAAyBC,EAAqBzsB,GAE9D,aACqBA,EAAoBU,EAAE+rB,EAAqB,CACzC,GAAM,WAAa,UACnB,GAAM,WAAa,UACnB,GAAM,WAAa,YAEyBzsB,EAAoB,KAAlE,IAMjBysC,EAAQ,CACVC,GAAI,CACFv+B,MAAO,QACPw+B,KAAM,OACNC,WAAY,SACZC,YAAa,wEACbC,mBAAoB,8CACpBC,gBAAiB,uDACjBC,UAAW,YACXC,eAAgB,qDAChBC,YAAa,0CACbC,sBAAuB,+BACvBC,sBAAuB,+BACvBC,YAAa,sBACbC,aAAc,2DACdC,WAAY,aACZC,gBAAiB,sDACjBC,KAAM,6CACNC,aAAc,gBACdC,cAAe,YACfC,eAAgB,qCAChBC,eAAgB,gCAChBC,oBAAqB,uBACrBC,MAAO,QACPC,UAAW,oBACXC,YAAa,sGACbC,YAAa,oEACbtzB,OAAQ,SACRuzB,YAAa,mEACbC,UAAW,8CACXtsC,OAAQ,SACRusC,GAAI,KACJC,KAAM,sBACNC,WAAY,SACZC,YAAa,oCACbC,YAAa,+BACbC,YAAa,wHACbC,YAAa,2BACbC,sBAAuB,sBACvBC,0BAA2B,kCAC3BC,WAAY,mBACZC,QAAS,WACTC,SAAU,YACVC,eAAgB,uDAChB/H,KAAM,OACNgI,UAAW,kCACXC,eAAgB,gBAChBC,eAAgB,SAChBC,mBAAoB,aACpBC,eAAgB,+DAChBC,cAAe,YACfC,mBAAoB,6CACpBC,eAAgB,aAChBC,oBAAqB,8CACrBhuB,OAAQ,SACRiuB,UAAW,YACXC,eAAgB,wDAChBC,oBAAqB,sCACrBC,QAAS,UACTC,aAAc,uBACdC,oBAAqB,yBACrBC,qBAAsB,SACtBC,sBAAuB,SACvBC,sBAAuB,UACvBC,4BAA6B,gBAC7BC,oBAAqB,QACrBC,sBAAuB,UACvBr9B,KAAM,OACNs9B,UAAW,gCACXC,QAAS,qDACTC,KAAM,4BACNC,qBAAsB,6CACtBC,SAAU,8HACVC,WAAY,+EACZC,UAAW,yEACXC,WAAY,mGACZC,gBAAiB,qBACjBC,aAAc,OACdC,cAAe,6BACfC,aAAc,OACdC,cAAe,wBACfC,aAAc,OACdC,cAAe,8BACfC,aAAc,OACdC,cAAe,wBACfC,aAAc,OACdC,cAAe,sBACfC,gBAAiB,UACjBC,iBAAkB,yBAClBC,SAAU,WACV,QAAW,UACXC,0BAA2B,8BAC3BC,qBAAsB,0BAExBC,GAAI,CACF5jC,MAAO,SACPw+B,KAAM,OACNC,WAAY,UACZC,YAAa,0FACbC,mBAAoB,iDACpBC,gBAAiB,iEACjBC,UAAW,aACXC,eAAgB,uEAChBC,YAAa,yDACbC,sBAAuB,uCACvBC,sBAAuB,uCACvBC,YAAa,4BACbC,aAAc,iFACdC,WAAY,cACZC,gBAAiB,wDACjBC,KAAM,4DACNC,aAAc,kBACdC,cAAe,WACfC,eAAgB,2CAChBC,eAAgB,iCAChBC,oBAAqB,4BACrBC,MAAO,QACPC,UAAW,4BACXC,YAAa,8HACbC,YAAa,4FACbtzB,OAAQ,WACRuzB,YAAa,6EACbC,UAAW,yCACXtsC,OAAQ,SACRusC,GAAI,KACJC,KAAM,4BACNC,WAAY,WACZC,YAAa,4CACbC,YAAa,kCACbC,YAAa,wIACbC,YAAa,kCACbC,sBAAuB,+BACvBC,0BAA2B,qCAC3BC,WAAY,wBACZC,QAAS,eACTC,SAAU,iBACVC,eAAgB,0DAChB/H,KAAM,UACNgI,UAAW,mCACXC,eAAgB,qBAChBC,eAAgB,SAChBC,mBAAoB,gBACpBC,eAAgB,qEAChBC,cAAe,aACfC,mBAAoB,oDACpBC,eAAgB,cAChBC,oBAAqB,0DACrBhuB,OAAQ,QACRiuB,UAAW,cACXC,eAAgB,2DAChBC,oBAAqB,4CACrBC,QAAS,UACTC,aAAc,sBACdC,oBAAqB,gCACrBC,qBAAsB,SACtBC,sBAAuB,SACvBC,sBAAuB,cACvBC,4BAA6B,sBAC7BC,oBAAqB,WACrBC,sBAAuB,eACvBr9B,KAAM,OACNs9B,UAAW,2BACXC,QAAS,iEACTC,KAAM,2CACNC,qBAAsB,uDACtBC,SAAU,8HACVC,WAAY,4FACZC,UAAW,qFACXC,WAAY,2HACZC,gBAAiB,yBACjBC,aAAc,SACdC,cAAe,qCACfC,aAAc,aACdC,cAAe,mCACfC,aAAc,QACdC,cAAe,yCACfC,aAAc,QACdC,cAAe,gCACfC,aAAc,QACdC,cAAe,iCACfC,gBAAiB,eACjBC,iBAAkB,kCAClBC,SAAU,WACV,QAAW,iBACXC,0BAA2B,kCAC3BC,qBAAsB,6BAExB,QAAS,CACP3jC,MAAO,eACPw+B,KAAM,eACNC,WAAY,eACZC,YAAa,oIACbC,mBAAoB,+DACpBC,gBAAiB,0FACjBC,UAAW,eACXC,eAAgB,0DAChBC,YAAa,2DACbC,sBAAuB,uDACvBC,sBAAuB,iDACvBC,YAAa,uCACbC,aAAc,wFACdC,WAAY,eACZC,gBAAiB,0DACjBC,KAAM,+DACNC,aAAc,qBACdC,cAAe,eACfC,eAAgB,+CAChBC,eAAgB,yCAChBC,oBAAqB,6CACrBC,MAAO,eACPC,UAAW,uCACXC,YAAa,wJACbC,YAAa,gHACbtzB,OAAQ,eACRuzB,YAAa,kHACbC,UAAW,+DACXtsC,OAAQ,eACRusC,GAAI,KACJC,KAAM,8BACNC,WAAY,eACZC,YAAa,kDACbC,YAAa,4CACbC,YAAa,kMACbI,WAAY,0CACZC,QAAS,2BACTC,SAAU,2BACVC,eAAgB,gEAChB/H,KAAM,eACNgI,UAAW,8CACXC,eAAgB,2BAChBC,eAAgB,qBAChBC,mBAAoB,qBACpBC,eAAgB,yGAChBC,cAAe,2BACfC,mBAAoB,yDACpBC,eAAgB,2BAChBC,oBAAqB,yDACrBhuB,OAAQ,qBACRiuB,UAAW,eACXC,eAAgB,8FAChBC,oBAAqB,2EACrBC,QAAS,eACTC,aAAc,mCACdC,oBAAqB,mCACrBC,qBAAsB,eACtBC,sBAAuB,eACvBC,sBAAuB,eACvBC,4BAA6B,2BAC7BC,oBAAqB,eACrBC,sBAAuB,eACvBr9B,KAAM,eACNs9B,UAAW,uCACXC,QAAS,sFACTC,KAAM,gDACNC,qBAAsB,qEACtBC,SAAU,2KACVC,WAAY,gHACZC,UAAW,kGACXC,WAAY,qKACZE,aAAc,eACdC,cAAe,6CACfC,aAAc,eACdC,cAAe,6CACfC,aAAc,eACdC,cAAe,6CACfC,aAAc,SACdC,cAAe,uCACfC,aAAc,eACdC,cAAe,uCACfC,gBAAiB,eACjBC,iBAAkB,6CAClBC,SAAU,eACV,QAAW,eACXC,0BAA2B,6CAC3BC,qBAAsB,wCAExB,QAAS,CACP3jC,MAAO,QACPw+B,KAAM,aACNC,WAAY,YACZC,YAAa,2EACbC,mBAAoB,6CACpBC,gBAAiB,wDACjBC,UAAW,aACXC,eAAgB,gDAChBC,YAAa,mDACbC,sBAAuB,mDACvBC,sBAAuB,mDACvBC,YAAa,sBACbC,aAAc,4EACdC,WAAY,cACZC,gBAAiB,oDACjBE,aAAc,kBACdD,KAAM,mDACNE,cAAe,WACfC,eAAgB,wCAChBC,eAAgB,+BAChBC,oBAAqB,0BACrBC,MAAO,QACPC,UAAW,wBACXC,YAAa,oHACbC,YAAa,oEACbtzB,OAAQ,UACRuzB,YAAa,oEACbC,UAAW,4CACXtsC,OAAQ,SACRusC,GAAI,KACJC,KAAM,yBACNC,WAAY,UACZC,YAAa,yCACbC,YAAa,gCACbC,YAAa,yIACbI,WAAY,4BACZC,QAAS,gBACTC,SAAU,eACVC,eAAgB,qDAChB/H,KAAM,YACNgI,UAAW,oCACXC,eAAgB,sBAChBC,eAAgB,SAChBC,mBAAoB,iBACpBC,eAAgB,+DAChBC,cAAe,aACfC,mBAAoB,mDACpBC,eAAgB,cAChBC,oBAAqB,oDACrBhuB,OAAQ,QACRiuB,UAAW,cACXC,eAAgB,0DAChBC,oBAAqB,+CACrBG,oBAAqB,mCACrBC,qBAAsB,aACtBC,sBAAuB,SACvBC,sBAAuB,cACvBC,4BAA6B,oBAC7BC,oBAAqB,eACrBC,sBAAuB,aACvBr9B,KAAM,OACNs9B,UAAW,2BACXC,QAAS,0DACTC,KAAM,yCACNC,qBAAsB,mDACtBC,SAAU,kJACVC,WAAY,oFACZC,UAAW,kFACXC,WAAY,qHACZc,SAAU,WACV,QAAW,UACXC,0BAA2B,sCAC3BC,qBAAsB,gCAExBE,GAAI,CACF7jC,MAAO,QACPw+B,KAAM,WACNC,WAAY,OACZC,YAAa,oFACbC,mBAAoB,sCACpBC,gBAAiB,yDACjBC,UAAW,QACXC,eAAgB,6DAChBC,YAAa,yEACbG,YAAa,6BACbE,WAAY,SACZC,gBAAiB,8DACjBC,KAAM,8EACNC,aAAc,mBACdC,cAAe,iCACfC,eAAgB,sDAChBC,eAAgB,4CAChBC,oBAAqB,uBACrBX,sBAAuB,wDACvBC,sBAAuB,8DACvBW,MAAO,WACPC,UAAW,6BACXC,YAAa,uIACbrzB,OAAQ,OACRuzB,YAAa,+EACbC,UAAW,4CACXtsC,OAAQ,QACRusC,GAAI,QACJC,KAAM,6BACNC,WAAY,cACZC,YAAa,kDACbC,YAAa,uCACbK,WAAY,sBACZC,QAAS,4BACTC,SAAU,uBACVC,eAAgB,gFAChB/H,KAAM,cACNgI,UAAW,uDACXC,eAAgB,iCAChBC,eAAgB,QAChBC,mBAAoB,UACpBC,eAAgB,6FAChBC,cAAe,QACfC,mBAAoB,oDACpBC,eAAgB,SAChBC,oBAAqB,qDACrBhuB,OAAQ,kBACRiuB,UAAW,yBACXC,eAAgB,6FAChBC,oBAAqB,wEACrBG,oBAAqB,uBACrBC,qBAAsB,WACtBC,sBAAuB,SACvBC,sBAAuB,cACvBC,4BAA6B,uBAC7BC,oBAAqB,QACrBC,sBAAuB,cACvBr9B,KAAM,MACNs9B,UAAW,2CACXC,QAAS,uEACTC,KAAM,kDACNC,qBAAsB,6CACtBC,SAAU,oIACVC,WAAY,mHACZC,UAAW,8EACXC,WAAY,wIACZE,aAAc,MACdC,cAAe,qCACfC,aAAc,OACdC,cAAe,+BACfC,aAAc,QACdC,cAAe,uCACfC,aAAc,eACdC,cAAe,uCACfC,aAAc,mBACdC,cAAe,6CACfG,SAAU,cACV,QAAW,kBACXC,0BAA2B,wCAC3BC,qBAAsB,0CAExBG,GAAI,CACF9jC,MAAO,eACPw+B,KAAM,qBACNC,WAAY,eACZC,YAAa,8IACbC,mBAAoB,2HACpBC,gBAAiB,8FACjBC,UAAW,eACXC,eAAgB,kFAChBC,YAAa,wHACbG,YAAa,yDACbE,WAAY,eACZC,gBAAiB,kFACjBC,KAAM,kIACNC,aAAc,2BACdC,cAAe,eACfC,eAAgB,oFAChBC,eAAgB,oFAChBC,oBAAqB,uFACrBX,sBAAuB,2FACvBC,sBAAuB,mEACvBW,MAAO,SACPC,UAAW,uCACXC,YAAa,+OACbrzB,OAAQ,eACRuzB,YAAa,wJACbC,UAAW,uFACXtsC,OAAQ,uCACRusC,GAAI,eACJC,KAAM,0CACNC,WAAY,eACZC,YAAa,sFACbC,YAAa,sFACbK,WAAY,0CACZC,QAAS,uCACTC,SAAU,iCACVC,eAAgB,oJAChB/H,KAAM,2BACNgI,UAAW,gEACXC,eAAgB,2BAChBC,eAAgB,kCAChBC,mBAAoB,gBACpBC,eAAgB,2KAChBC,cAAe,eACfC,mBAAoB,yGACpBC,eAAgB,eAChBC,oBAAqB,yGACrBhuB,OAAQ,qBACRiuB,UAAW,eACXC,eAAgB,kIAChBC,oBAAqB,+GACrBC,QAAS,eACTC,aAAc,4BACdC,oBAAqB,+CACrBC,qBAAsB,iCACtBC,sBAAuB,iCACvBC,sBAAuB,2BACvBC,4BAA6B,mDAC7BC,oBAAqB,qBACrBC,sBAAuB,iCACvBr9B,KAAM,SACNs9B,UAAW,uFACXC,QAAS,wHACTC,KAAM,oCACNC,qBAAsB,sEACtBC,SAAU,yOACVC,WAAY,8OACZC,UAAW,8IACXC,WAAY,kOACZE,aAAc,uCACdC,cAAe,iFACfC,aAAc,6CACdC,cAAe,2EACfC,aAAc,6CACdC,cAAe,2EACfC,aAAc,uCACdC,cAAe,qEACfC,aAAc,uCACdC,cAAe,qEACfC,gBAAiB,iCACjBC,iBAAkB,+DAClBC,SAAU,SACV,QAAW,iCACXC,0BAA2B,mGAC3BC,qBAAsB,8FAExB,QAAS,CACP3jC,MAAO,QACPw+B,KAAM,OACNC,WAAY,UACZC,YAAa,qEACbC,mBAAoB,gDACpBC,gBAAiB,mDACjBC,UAAW,YACXC,eAAgB,sDAChBC,YAAa,sCACbG,YAAa,YACbE,WAAY,aACZC,gBAAiB,uDACjBC,KAAM,iCACNC,aAAc,sBACdC,cAAe,YACfC,eAAgB,mDAChBC,eAAgB,8BAChBC,oBAAqB,4BACrBX,sBAAuB,uCACvBC,sBAAuB,wCACvBW,MAAO,OACPC,UAAW,aACXC,YAAa,uGACbrzB,OAAQ,aACRuzB,YAAa,+DACbC,UAAW,mDACXtsC,OAAQ,QACRusC,GAAI,KACJC,KAAM,yBACNC,WAAY,YACZC,YAAa,qDACbC,YAAa,gCACbE,YAAa,+BACbC,sBAAuB,8BACvBC,0BAA2B,8CAC3BC,WAAY,kCACZC,QAAS,YACTC,SAAU,YACVC,eAAgB,iEAChB/H,KAAM,QACNgI,UAAW,iCACXC,eAAgB,QAChBC,eAAgB,SAChBC,mBAAoB,aACpBC,eAAgB,qEAChBC,cAAe,YACfC,mBAAoB,0DACpBC,eAAgB,aAChBC,oBAAqB,2DACrBhuB,OAAQ,YACRiuB,UAAW,cACXC,eAAgB,2DAChBC,oBAAqB,2CACrBC,QAAS,WACTC,aAAc,sBACdC,oBAAqB,iCACrBC,qBAAsB,YACtBC,sBAAuB,UACvBC,sBAAuB,YACvBC,4BAA6B,6BAC7BC,oBAAqB,aACrBC,sBAAuB,sBACvBr9B,KAAM,OACNs9B,UAAW,8BACXC,QAAS,uEACTC,KAAM,yCACNC,qBAAsB,6CACtBC,SAAU,4KACVC,WAAY,+FACZC,UAAW,mFACXC,WAAY,qKACZC,gBAAiB,4BACjBC,aAAc,OACdC,cAAe,0BACfC,aAAc,aACdC,cAAe,qBACfC,aAAc,QACdC,cAAe,2BACfC,aAAc,QACdC,cAAe,2BACfC,aAAc,gBACdC,cAAe,oBACfC,gBAAiB,sBACjBC,iBAAkB,gCAClBC,SAAU,WACV,QAAW,YACXC,0BAA2B,4CAC3BC,qBAAsB,yCAExBI,GAAI,CACF/jC,MAAO,aACPw+B,KAAM,OACNC,WAAY,cACZC,YAAa,0FACbC,mBAAoB,yCACpBC,gBAAiB,kEACjBC,UAAW,cACXC,eAAgB,yEAChBC,YAAa,yDACbC,sBAAuB,yCACvBC,sBAAuB,yCACvBC,YAAa,wBACbC,aAAc,uEACdC,WAAY,aACZC,gBAAiB,wEACjBC,KAAM,8DACNC,aAAc,yBACdC,cAAe,WACfC,eAAgB,6CAChBC,eAAgB,mCAChBC,oBAAqB,qBACrBC,MAAO,OACPC,UAAW,uBACXC,YAAa,qKACbC,YAAa,uFACbtzB,OAAQ,cACRuzB,YAAa,kFACbC,UAAW,yCACXtsC,OAAQ,SACRusC,GAAI,KACJC,KAAM,gCACNC,WAAY,YACZC,YAAa,8CACbC,YAAa,oCACbC,YAAa,uJACbC,YAAa,uBACbC,sBAAuB,+BACvBC,0BAA2B,2CAC3BC,WAAY,oCACZC,QAAS,gBACTC,SAAU,gBACVC,eAAgB,6DAChB/H,KAAM,YACNgI,UAAW,4CACXC,eAAgB,mBAChBC,eAAgB,QAChBC,mBAAoB,YACpBC,eAAgB,8FAChBC,cAAe,cACfC,mBAAoB,qEACpBC,eAAgB,aAChBC,oBAAqB,oEACrBhuB,OAAQ,eACRiuB,UAAW,aACXC,eAAgB,qEAChBC,oBAAqB,iDACrBC,QAAS,SACTC,aAAc,iCACdC,oBAAqB,iCACrBC,qBAAsB,WACtBC,sBAAuB,SACvBC,sBAAuB,iBACvBC,4BAA6B,sBAC7BC,oBAAqB,UACrBC,sBAAuB,WACvBr9B,KAAM,kBACNs9B,UAAW,sCACXC,QAAS,iFACTC,KAAM,iDACNC,qBAAsB,4DACtBC,SAAU,8HACVC,WAAY,+FACZC,UAAW,4EACXC,WAAY,yHACZC,gBAAiB,0BACjBC,aAAc,OACdC,cAAe,kCACfC,aAAc,WACdC,cAAe,+BACfC,aAAc,OACdC,cAAe,4CACfC,aAAc,OACdC,cAAe,2BACfC,aAAc,QACdC,cAAe,2BACfC,gBAAiB,WACjBC,iBAAkB,iCAClBC,SAAU,YACV,QAAW,sBACXC,0BAA2B,wCAC3BC,qBAAsB,oCAExBK,GAAI,CACFhkC,MAAO,uCACPw+B,KAAM,2BACNC,WAAY,mDACZC,YAAa,oRACbC,mBAAoB,yKACpBC,gBAAiB,6LACjBC,UAAW,kFACXC,eAAgB,6JAChBC,YAAa,oMACbC,sBAAuB,mLACvBC,sBAAuB,2MACvBC,YAAa,sEACbC,aAAc,yFACdC,WAAY,gEACZC,gBAAiB,2IACjBC,KAAM,oNACNC,aAAc,0GACdC,cAAe,qEACfC,eAAgB,mHAChBC,eAAgB,uGAChBC,oBAAqB,qJACrBC,MAAO,uCACPC,UAAW,kFACXC,YAAa,maACbC,YAAa,qGACbtzB,OAAQ,mDACRuzB,YAAa,8QACbC,UAAW,uJACXtsC,OAAQ,uCACRusC,GAAI,eACJC,KAAM,wEACNC,WAAY,6CACZC,YAAa,wIACbC,YAAa,iFACbC,YAAa,siBACbC,YAAa,iCACbC,sBAAuB,wHACvBC,0BAA2B,sIAC3BC,WAAY,6DACZC,QAAS,sEACTC,SAAU,uCACVC,eAAgB,+CAChB/H,KAAM,+DACNgI,UAAW,iJACXC,eAAgB,kIAChBC,eAAgB,4BAChBC,mBAAoB,sEACpBC,eAAgB,qQAChBC,cAAe,kFACfC,mBAAoB,qOACpBC,eAAgB,gEAChBC,oBAAqB,mNACrBhuB,OAAQ,uCACRiuB,UAAW,qEACXC,eAAgB,yRAChBC,oBAAqB,wPACrBC,QAAS,+DACTC,aAAc,wEACdC,oBAAqB,2FACrBC,qBAAsB,uCACtBC,sBAAuB,uCACvBC,sBAAuB,+DACvBC,4BAA6B,2BAC7BC,oBAAqB,uCACrBC,sBAAuB,mDACvBr9B,KAAM,qBACNs9B,UAAW,8HACXC,QAAS,kLACTC,KAAM,4DACNC,qBAAsB,+MACtBC,SAAU,kiBACVC,WAAY,gTACZC,UAAW,wPACXC,WAAY,uXACZC,gBAAiB,uKACjBC,aAAc,qBACdC,cAAe,2LACfC,aAAc,iCACdC,cAAe,0IACfC,aAAc,iCACdC,cAAe,uMACfC,aAAc,uCACdC,cAAe,uMACfC,aAAc,wFACdC,cAAe,uMACfC,gBAAiB,mDACjBC,iBAAkB,kKAClBC,SAAU,6CACV,QAAW,sEACXC,0BAA2B,6KAC3BC,qBAAsB,8KAExBM,GAAI,CACFjkC,MAAO,eACPw+B,KAAM,eACNC,WAAY,eACZC,YAAa,4IACbC,mBAAoB,iGACpBC,gBAAiB,yFACjBC,UAAW,2BACXC,eAAgB,4HAChBC,YAAa,uCACbC,sBAAuB,oFACvBC,sBAAuB,8EACvBC,YAAa,4BACbC,aAAc,mJACdC,WAAY,2BACZC,gBAAiB,qHACjBC,KAAM,2GACNC,aAAc,qBACdC,cAAe,eACfC,eAAgB,mFAChBC,eAAgB,mFAChBC,oBAAqB,8EACrBC,MAAO,2BACPC,UAAW,4BACXC,YAAa,2NACbC,YAAa,mKACbtzB,OAAQ,eACRuzB,YAAa,qHACbC,UAAW,iGACXtsC,OAAQ,eACRusC,GAAI,eACJC,KAAM,+CACNC,WAAY,eACZC,YAAa,qFACbC,YAAa,qFACbC,YAAa,uNACbC,YAAa,gDACbC,sBAAuB,gDACvBC,0BAA2B,wDAC3BC,WAAY,6DACZC,QAAS,2BACTC,SAAU,qBACVC,eAAgB,gHAChB/H,KAAM,eACNgI,UAAW,mGACXC,eAAgB,eAChBC,eAAgB,gBAChBC,mBAAoB,gBACpBC,eAAgB,gIAChBC,cAAe,2BACfC,mBAAoB,6GACpBC,eAAgB,2BAChBC,oBAAqB,6GACrBhuB,OAAQ,eACRiuB,UAAW,eACXC,eAAgB,4JAChBC,oBAAqB,8GACrBC,QAAS,eACTC,aAAc,+GACdC,oBAAqB,oEACrBC,qBAAsB,qBACtBC,sBAAuB,eACvBC,sBAAuB,eACvBC,4BAA6B,2DAC7BC,oBAAqB,eACrBC,sBAAuB,2BACvBr9B,KAAM,eACNs9B,UAAW,2FACXC,QAAS,0FACTC,KAAM,uCACNC,qBAAsB,sFACtBC,SAAU,8NACVC,WAAY,+KACZC,UAAW,yGACXC,WAAY,qLACZC,gBAAiB,+CACjBC,aAAc,eACdC,cAAe,iIACfC,aAAc,4BACdC,cAAe,iGACfC,aAAc,eACdC,cAAe,+CACfC,aAAc,eACdC,cAAe,8EACfC,aAAc,eACdC,cAAe,mFACfC,gBAAiB,2BACjBC,iBAAkB,sEAClBC,SAAU,eACV,QAAW,qBACXC,0BAA2B,2FAC3BC,qBAAsB,4FAItBO,EAAWvxC,OAAO6C,KAAK8oC,GAGvB6F,EAAgC,qBAAdptB,UAA4BA,UAAU9L,UAAY8L,UAAUqtB,kBAAe5jC,EAE7F6jC,EAAQH,EAAS3e,MAAK,SAAUrzB,GAClC,OAAOA,IAAMiyC,MAJI,KAOnB,SAASn5B,EAAYrB,GACnB,GAAKA,EAAL,CAIA,IAAI26B,EAAYJ,EAAS3e,MAAK,SAAUrzB,GACtC,OAAOA,IAAMyX,KAGX26B,EACFD,EAAQC,EAERvrC,QAAQC,MAAM,uBAGlB,SAASurC,EAAax4B,GACpB,GAAKA,EAAL,CAIA,IAAIy4B,EAAQ,SAAev5B,GACTi5B,EAAS3e,MAAK,SAAUrzB,GACtC,OAAOA,IAAM+Y,MAIbi5B,EAASpvC,KAAKmW,GAGhBqzB,EAAMrzB,GAAYtY,OAAO2jB,OAAO,GAAIgoB,EAAK,GAAgBA,EAAMrzB,GAAWc,EAAUd,KAGtF,IAAK,IAAIA,KAAYc,EACnBy4B,EAAMv5B,IAGV,SAASw5B,EAAUjxC,EAAKmb,EAAMhF,GACvBA,IACHA,EAAO06B,GAGT,IAAIn4B,EAAOoyB,EAAM30B,GAAMnW,IAAQ8qC,EAAK,GAAe9qC,IAAQA,EAE3D,GAAImb,EACF,IAAK,IAAI+1B,KAAW/1B,EAClBzC,EAAOA,EAAK5B,QAAQ,KAAOo6B,EAAU,IAAK/1B,EAAK+1B,IAInD,OAAOx4B,IAKHy4B,GACC,SAAStmB,EAAyBC,EAAqBzsB,GAE9D,aACqBA,EAAoBU,EAAE+rB,EAAqB,CACzC,EAAK,WAAa,UAClB,EAAK,WAAa,YAEpB,IAAIsmB,EAAwC/yC,EAAoB,KAC5DgzC,EAA6DhzC,EAAoB6B,EAAEkxC,GACnFpmB,EAAqC3sB,EAAoB,KAYlF,SAASizC,EAAYzc,EAAM0c,GACzB,IAAIhM,EAAOgM,EAAahM,KACpBriC,EAASquC,EAAaruC,OACtBsuC,EAAaD,EAAaC,WAC1BzI,EAAQ,GAEZ,GAAI7lC,EAAQ,CACV,IAAIuuC,EAA+B,MAAjBvuC,EAAOwuC,MAAgB,CAAC,KAAKlmC,QAAO,EAAGwf,EAAmC2mB,WAAW,IAAMzuC,EAAOwuC,QAAU,CAAC,KAE3HE,EAAiC,kBADlB,EAAG5mB,EAAmC1rB,KAAKu1B,EAAM4c,GACpBvuC,EAAOxD,OAAQ,EAAGsrB,EAAmC6mB,aAAa3uC,EAAOxD,OACzHqpC,GAAS,MAAQ7lC,EAAOwuC,MAAQ,IAAMxuC,EAAO4uC,SAApC,KAA2Dz2B,KAAKC,UAAUs2B,GAA1E,UAET7I,GAAS5nC,MAAMW,QAAQ+yB,GAAQ,MAAQ,IA6BzC,OA1BI0Q,IACqB,SAAnBA,EAAKhB,UACPwE,GAAS,0BAA4BxD,EAAKmM,MAAQ,KAElD3I,GAAS,kBAAoBxD,EAAKmM,MAAQ,KAI1CF,IAC8B,MAA5BzI,EAAMA,EAAMtlC,OAAS,KACvBslC,GAAS,UAGsB,IAA7ByI,EAAWO,OAAOtuC,OACpBslC,GAAS,IAAMyI,EAAWO,OAAO,GACxBP,EAAWO,OAAOtuC,OAAS,IACpCslC,GAAS,KAAOyI,EAAWO,OAAOtmC,KAAI,SAAU/L,GAC9C,IAAIsyC,EAAQtyC,EAAMgQ,MAAM,KAExB,OADWsiC,EAAMA,EAAMvuC,OAAS,GAClB,KAAO/D,KACpBiQ,KAAK,MAAQ,MAMbo5B,EAST,SAASkJ,EAAapd,EAAMkU,GAC1B,OAAOsI,IAAgD5J,OAAO5S,EAAMkU,KAKhEmJ,IACC,WAEgB,qBAAZ3xB,SAET,WACE,SAAS4xB,EAAS9lB,GAChB,GAAoB,qBAATA,EAAsB,CAC/B,GAAI,WAAYA,EACd,OAGFltB,OAAOC,eAAeitB,EAAM,SAAU,CACpCpnB,cAAc,EACd5F,YAAY,EACZ6F,UAAU,EACVxF,MAAO,gBACmBsN,IAApBO,KAAKmhB,YACPnhB,KAAKmhB,WAAWgB,YAAYniB,UAOR,qBAAnBE,OAAO8S,SAChB4xB,EAAS1kC,OAAO8S,QAAQlgB,WAGU,qBAAzBoN,OAAO2kC,eAChBD,EAAS1kC,OAAO2kC,cAAc/xC,WAGG,qBAAxBoN,OAAO4kC,cAChBF,EAAS1kC,OAAO4kC,aAAahyC,WA7BjC,GAmCGc,MAAMd,UAAUiyC,WAEnBnzC,OAAOC,eAAe+B,MAAMd,UAAW,YAAa,CAClDX,MAAO,SAAe6yC,GACpB,IAAK,IAAI9zC,EAAI,EAAGA,EAAI8O,KAAK9J,OAAQhF,IAAK,CACpC,IAAIiN,EAAU6B,KAAK9O,GAEnB,GAAI8zC,EAAU3zC,KAAK2O,KAAM7B,EAASjN,EAAG8O,MACnC,OAAO9O,EAIX,OAAQ,GAEVwG,cAAc,EACdC,UAAU,IAKT/D,MAAMd,UAAU0xB,MAEnB5yB,OAAOC,eAAe+B,MAAMd,UAAW,OAAQ,CAC7CX,MAAO,SAAe6yC,GAEpB,OAAOhlC,KADCA,KAAK+kC,UAAUC,KAGzBttC,cAAc,EACdC,UAAU,IAKTqd,OAAOliB,UAAU6/B,OAEpB3d,OAAOliB,UAAU6/B,KAAO,WACtB,OAAO3yB,KAAKuJ,QAAQ,qCAAsC,OAMxD07B,IACC,SAAS3nB,EAAyBC,EAAqBzsB,GAE9D,aAEAA,EAAoBkB,EAAEurB,GAGtBzsB,EAAoBU,EAAE+rB,EAAqB,CACzC,kBAAqB,WAAa,YAIpC,IAAI2nB,EAAiBp0C,EAAoB,KACrCq0C,EAAsCr0C,EAAoB6B,EAAEuyC,GAE5DE,EAAYt0C,EAAoB,KAEhCuyB,EAAavyB,EAAoB,KAEjC80B,EAAe90B,EAAoB,KAIvC,SAAS6sB,EAAkB3nB,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAW7S,IAAI48B,EAAuB,WACzB,SAASA,EAAQjrB,EAAUkrB,EAAmBC,IAdhD,SAAyBxnB,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAe5G2I,CAAgBje,KAAMqlC,GAEtBrlC,KAAKoa,SAAWA,EAEhBpa,KAAKslC,kBAAoBA,GAAqB,WAC5C,OAAO,GAGTtlC,KAAKulC,MAAQA,EACbvlC,KAAK8d,MAAQ,GACb9d,KAAK0D,OAAS,EArBlB,IAAsBsa,EAAa2C,EAAYC,EA2F7C,OA3FoB5C,EAwBPqnB,GAxBoB1kB,EAwBX,CAAC,CACrBluB,IAAK,MACLN,MAAO,SAAa2sB,GAGlB,KAAO9e,KAAKwlC,wBAA0BxlC,KAAKulC,OAASvlC,KAAK8d,MAAM5nB,OAAS,GACtE8J,KAAK8d,MAAMsa,QACXp4B,KAAK0D,QAIP1D,KAAK8d,MAAQ9d,KAAK8d,MAAM9pB,MAAM,EAAGgM,KAAK0D,MAAQ,GAC9C1D,KAAK8d,MAAM/pB,KAAK+qB,GAChB9e,KAAK0D,QACL1D,KAAKoa,aAEN,CACD3nB,IAAK,wBACLN,MAAO,WACL,IAAImzC,EAAoBtlC,KAAKslC,kBACzBG,EAAY,EAIhB,OAHAzlC,KAAK8d,MAAM1nB,SAAQ,SAAU0oB,GAC3B2mB,GAAaH,EAAkBxmB,MAE1B2mB,IAER,CACDhzC,IAAK,OACLN,MAAO,WACL,GAAK6N,KAAK0lC,UAMV,OAFA1lC,KAAK0D,QACL1D,KAAKoa,WACEpa,KAAK8d,MAAM9d,KAAK0D,SAExB,CACDjR,IAAK,OACLN,MAAO,WACL,GAAK6N,KAAK2lC,UAMV,OAFA3lC,KAAK0D,QACL1D,KAAKoa,WACEpa,KAAK8d,MAAM9d,KAAK0D,SAExB,CACDjR,IAAK,UACLN,MAAO,WACL,OAAO6N,KAAK0D,MAAQ,IAErB,CACDjR,IAAK,UACLN,MAAO,WACL,OAAO6N,KAAK0D,MAAQ1D,KAAK8d,MAAM5nB,OAAS,IAEzC,CACDzD,IAAK,QACLN,MAAO,WACL6N,KAAK8d,MAAQ,GACb9d,KAAK0D,OAAS,EACd1D,KAAKoa,gBAvFmEuD,EAAkBK,EAAYlrB,UAAW6tB,GAAiBC,GAAajD,EAAkBK,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IA2FrP0tC,EAlFkB,GAqFvBO,EAAO90C,EAAoB,KAE3B+0C,EAAgB/0C,EAAoB,IAEpCw5B,EAAex5B,EAAoB,KAEnCq2B,EAAgBr2B,EAAoB,KAEpCo2B,EAAqBp2B,EAAoB,KAEzCg1C,EAAWh1C,EAAoB,KAE/BmY,EAAOnY,EAAoB,KAgB3Bi1C,EAAuBD,EAASnf,eAAe,GAAGgC,MAElDqd,EAAc,CAQlBA,OAAqB,SAAUz5B,GAC7B,IAAI3O,EAAU3H,UAAUC,OAAS,QAAsBuJ,IAAjBxJ,UAAU,GAAmBA,UAAU,GAAK,GAEjD,qBAAtB2H,EAAQ0nB,YACjB1nB,EAAQ0nB,WAAY,GAItB1nB,EAAQqoC,aAAsC,IAAxBroC,EAAQqoC,YAC9BroC,EAAQsoC,YAAoC,IAAvBtoC,EAAQsoC,WAC7BtoC,EAAQuoC,iBAA8C,IAA5BvoC,EAAQuoC,gBAClCvoC,EAAQmmC,YAAcnmC,EAAQmmC,aAAe8B,EAA+B7zC,EAC5E4L,EAAQ8mC,aAAe9mC,EAAQ8mC,cAAgBmB,EAAgCO,EAC/EpmC,KAAKpC,QAAUA,EAEoB,kBAAxBA,EAAQyoC,YACjBrmC,KAAKqmC,YAAc5xB,OAAO7W,EAAQyoC,aAElCrmC,KAAKqmC,YAAc,GAIrB,EAAGT,EAAuBU,IAAItmC,KAAKpC,QAAQoN,YAC3C,EAAG46B,EAAsBW,IAAIvmC,KAAKpC,QAAQsM,UAE1ClK,KAAK3N,KAAO,UACZ,IAAI8rB,EAAKne,KACTA,KAAKuM,UAAYA,EACjBvM,KAAKke,IAAM,GACXle,KAAKsnB,UAAO7nB,EACZO,KAAKmL,KAAO,GAGZnL,KAAKwmC,oBAAqB,EAAGv9B,EAAKgqB,UAAUjzB,KAAK8pB,SAASp3B,KAAKsN,MAAOA,KAAKioB,mBAC3EjoB,KAAK0b,MAAQnP,EAAUk6B,YACvBzmC,KAAKyb,OAASlP,EAAU+V,aACxBtiB,KAAKghB,MAAQzW,SAASiJ,cAAc,OACpCxT,KAAKghB,MAAMlX,UAAY,qCAEvB9J,KAAKghB,MAAM1B,QAAU,SAAUC,GAE7BA,EAAMC,kBAIR,IAAIknB,EAAqB,CACvB1wC,OAAQgK,KAAKghB,MACbxH,QAASxZ,KAAKpC,QAAQ4b,SAAW,KACjCC,OAAQzZ,KAAKpC,QAAQ6b,QAAU,MAiBjC,GAfAzZ,KAAK2mC,kBAAoB,IAAI/gB,EAA+BghB,EAAEF,GAC9D1mC,KAAKqJ,QAAUkB,SAASiJ,cAAc,OACtCxT,KAAKqJ,QAAQS,UAAY,mBACzB9J,KAAKke,IAAI2oB,KAAOt8B,SAASiJ,cAAc,OACvCxT,KAAKke,IAAI2oB,KAAK/8B,UAAY,kBAC1B9J,KAAKke,IAAI4oB,YAAcv8B,SAASiJ,cAAc,QAC9CxT,KAAKke,IAAI4oB,YAAY75B,YAAc,UACnCjN,KAAKke,IAAI2oB,KAAKtzB,YAAYvT,KAAKke,IAAI4oB,aACnC9mC,KAAKqJ,QAAQkK,YAAYvT,KAAKke,IAAI2oB,MAClC7mC,KAAKke,IAAI6oB,eAAiBx8B,SAASiJ,cAAc,OACjDxT,KAAKke,IAAI6oB,eAAej9B,UAAY,qBACpC9J,KAAKke,IAAI8oB,YAAcz8B,SAASuV,eAAe,IAC/C9f,KAAKke,IAAI6oB,eAAexzB,YAAYvT,KAAKke,IAAI8oB,aAC7ChnC,KAAKqJ,QAAQkK,YAAYvT,KAAKke,IAAI6oB,gBAE9B/mC,KAAKpC,QAAQqoC,YAAa,EAC5B,EAAGh9B,EAAKwZ,cAAcziB,KAAKqJ,QAAS,qBAEpCrJ,KAAKye,KAAOlU,SAASiJ,cAAc,OACnCxT,KAAKye,KAAK3U,UAAY,kBACtB9J,KAAKghB,MAAMzN,YAAYvT,KAAKye,MAE5B,IAAIwoB,EAAe18B,SAASiJ,cAAc,UAC1CyzB,EAAaljC,KAAO,SACpBkjC,EAAan9B,UAAY,oBACzBm9B,EAAa7nB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eAChDzgB,KAAKye,KAAKlL,YAAY0zB,GAEtBA,EAAa3nB,QAAU,WACrBnB,EAAG+oB,wBAAuB,WACxB,IACE/oB,EAAGgpB,SACH,MAAOpvC,GACPomB,EAAG4K,SAAShxB,MAEb,kBAIL,IAAIqvC,EAAgB78B,SAASiJ,cAAc,UAiB3C,GAhBA4zB,EAAcrjC,KAAO,SACrBqjC,EAAct9B,UAAY,qBAC1Bs9B,EAAchoB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,gBACjDzgB,KAAKye,KAAKlL,YAAY6zB,GAEtBA,EAAc9nB,QAAU,WACtBnB,EAAG+oB,wBAAuB,WACxB,IACE/oB,EAAGkpB,UACH,MAAOtvC,GACPomB,EAAG4K,SAAShxB,MAEb,kBAIDiI,KAAKpC,QAAQsoC,WAAY,CAC3B,IAAIoB,EAAQ/8B,SAASiJ,cAAc,UAEnC8zB,EAAMvjC,KAAO,SACbujC,EAAMx9B,UAAY,kBAClBw9B,EAAMloB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,kBAEzC6mB,EAAMhoB,QAAU,WACdnB,EAAGopB,kBAGLvnC,KAAKye,KAAKlL,YAAY+zB,GAIxB,GAAItnC,KAAKpC,QAAQuoC,gBAAiB,CAChC,IAAI1F,EAAYl2B,SAASiJ,cAAc,UACvCitB,EAAU18B,KAAO,SACjB08B,EAAUrhB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,uBAC7CggB,EAAU32B,UAAY,uBAEtB22B,EAAUnhB,QAAU,WAClBnB,EAAGqpB,uBAGLxnC,KAAKke,IAAIuiB,UAAYA,EACrBzgC,KAAKye,KAAKlL,YAAYktB,GAIxB,IAAIgH,EAAel9B,SAASiJ,cAAc,UAoB1C,GAnBAi0B,EAAa1jC,KAAO,SACpB0jC,EAAa39B,UAAY,oBACzB29B,EAAaroB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eAChDzgB,KAAKye,KAAKlL,YAAYk0B,GAEtBA,EAAanoB,QAAU,gBACL7f,IAAZ0e,EAAGmJ,MAELnJ,EAAG+oB,wBAAuB,WACxB,IACE/oB,EAAGupB,SACH,MAAO3vC,GACPomB,EAAG4K,SAAShxB,MAEb,kBAKsB,IAAzBiI,KAAKpC,QAAQmd,QAAmB,CAElC,IAAI4sB,EAAkB,WACpBxpB,EAAGD,IAAIqjB,KAAKvoB,UAAYmF,EAAGpD,QAAQ2qB,UACnCvnB,EAAGD,IAAIkhB,KAAKpmB,UAAYmF,EAAGpD,QAAQ4qB,WAGjCL,EAAoB,SAA2BxmB,GACjD,OACqB,EAAnBA,EAAK3T,KAAKjV,QAId8J,KAAK+a,QAAU,IAAIsqB,EAAQsC,EAAiBrC,EAAmBF,EAAqCwC,IAEpG,IAAIrG,EAAOh3B,SAASiJ,cAAc,UAClC+tB,EAAKx9B,KAAO,SACZw9B,EAAKz3B,UAAY,uCACjBy3B,EAAKniB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAExC8gB,EAAKjiB,QAAU,WACb,IAAIxb,EAASqa,EAAGpD,QAAQwmB,OAEpBz9B,GACFqa,EAAG0pB,cAAc/jC,IAIrB9D,KAAKye,KAAKlL,YAAYguB,GACtBvhC,KAAKke,IAAIqjB,KAAOA,EAEhB,IAAInC,EAAO70B,SAASiJ,cAAc,UAClC4rB,EAAKr7B,KAAO,SACZq7B,EAAKt1B,UAAY,kBACjBs1B,EAAKhgB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAExC2e,EAAK9f,QAAU,WACb,IAAIxb,EAASqa,EAAGpD,QAAQqkB,OAEpBt7B,GACFqa,EAAG0pB,cAAc/jC,IAIrB9D,KAAKye,KAAKlL,YAAY6rB,GACtBp/B,KAAKke,IAAIkhB,KAAOA,EAEhBp/B,KAAK+a,QAAQX,WAIXpa,KAAKpC,SAAWoC,KAAKpC,QAAQiqB,OAAS7nB,KAAKpC,QAAQiqB,MAAM3xB,SAC3D8J,KAAK8nC,aAAe,IAAIxd,EAA+BS,EAAE/qB,KAAKye,KAAMze,KAAKpC,QAAQiqB,MAAO7nB,KAAKpC,QAAQvL,MAAM,SAAkBA,GAE3H,IACE8rB,EAAG+J,QAAQ71B,GACX8rB,EAAG2pB,aAAa1nB,QAChB,MAAOroB,GACPomB,EAAG4K,SAAShxB,QAwBpB,GAlBAiI,KAAK+nC,WAAa,IAAI1kB,EAA2B2kB,EAAE,CACjDzkB,mBAAmB,EACnBC,mBAAoB,WAClBrF,EAAG2L,YAELrG,YAAa,KACbC,eAAgB,SAAwBjI,GAEtC,IACIwsB,EAAcxsB,GADI0C,EAAGD,IAAIoH,UAAYnH,EAAGD,IAAIoH,UAAUhD,aAAe,GAC5B,EAC7CnE,EAAG9U,QAAQsP,MAAMuvB,cAAgBD,EAAc,KAC/C9pB,EAAG9U,QAAQsP,MAAMoB,cAAgBkuB,EAAc,QAGnDjoC,KAAKghB,MAAMzN,YAAYvT,KAAKqJ,SAC5BrJ,KAAKghB,MAAMzN,YAAYvT,KAAK+nC,WAAWI,iBACvCnoC,KAAKuM,UAAUgH,YAAYvT,KAAKghB,OAE5BpjB,EAAQ0nB,UAAW,EACrB,EAAGrc,EAAKwZ,cAAcziB,KAAKqJ,QAAS,kBACpC,IAAIic,EAAY/a,SAASiJ,cAAc,OACvCxT,KAAKke,IAAIoH,UAAYA,EACrBA,EAAUxb,UAAY,uBACtB9J,KAAKghB,MAAMzN,YAAY+R,GACvBtlB,KAAKke,IAAIkqB,aAAe79B,SAASiJ,cAAc,QAC/CxT,KAAKke,IAAIkqB,aAAat+B,UAAY,uBAClC9J,KAAKke,IAAIkqB,aAAa5iB,UAAY,GAClCF,EAAU/R,YAAYvT,KAAKke,IAAIkqB,cAC/BpoC,KAAKke,IAAImqB,UAAY99B,SAASiJ,cAAc,QAC5CxT,KAAKke,IAAImqB,UAAUv+B,UAAY,uBAC/B9J,KAAKke,IAAImqB,UAAU7iB,UAAY,GAC/BF,EAAU/R,YAAYvT,KAAKke,IAAImqB,WAC/B/iB,EAAU/R,YAAYvT,KAAK+nC,WAAWO,mBACtChjB,EAAU/R,YAAYvT,KAAK+nC,WAAWQ,kBACtCjjB,EAAU/R,YAAYvT,KAAK+nC,WAAWS,gBAGxCxoC,KAAKyoC,iBAELzoC,KAAKipB,UAAUjpB,KAAKpC,QAAQsrB,OAAQlpB,KAAKpC,QAAQurB,aAGnD6c,eAA6B,WAC3B,IAAI76B,EAAOnL,KAAKsoB,UAChBtoB,KAAKke,IAAI8oB,YAAY0B,WAAY,EAAGz/B,EAAK0/B,iBAAiBx9B,EAAMi6B,EAAsCwD,IAElG5oC,KAAKke,IAAIkqB,eACXpoC,KAAKke,IAAIkqB,aAAa5iB,UAAY,UAAW,EAAGvc,EAAK4/B,YAAY19B,EAAKjV,SAGpE8J,KAAKke,IAAImqB,YACPz0C,MAAMW,QAAQyL,KAAKsnB,MACrBtnB,KAAKke,IAAImqB,UAAU7iB,UAAY,UAAYxlB,KAAKsnB,KAAKpxB,OAAS,SAE9D8J,KAAKke,IAAImqB,UAAU7iB,UAAY,KAYrCwgB,UAAwB,WAKtB,GAHAhmC,KAAKwmC,qBAGDxmC,KAAKpC,QAAQwc,SACf,IACEpa,KAAKpC,QAAQwc,WACb,MAAOriB,GACPC,QAAQC,MAAM,+BAAgCF,GAKlD,GAAIiI,KAAKpC,QAAQgqB,aACf,IACE5nB,KAAKpC,QAAQgqB,aAAa5nB,KAAKjO,OAC/B,MAAOgG,GACPC,QAAQC,MAAM,mCAAoCF,GAKtD,GAAIiI,KAAKpC,QAAQkrC,aACf,IACE9oC,KAAKpC,QAAQkrC,aAAa9oC,KAAKsoB,WAC/B,MAAOvwB,GACPC,QAAQC,MAAM,mCAAoCF,KAUxDiuC,eAA6B,WAC3B,IAAI7nB,EAAKne,KAkBTA,KAAKknC,wBAAuB,WAC1B,IAAI36B,EAAY4R,EAAGvgB,QAAQmrC,aAAe3D,EAAoC4D,GAC1E1hB,EAAOnJ,EAAGpsB,MAEdosB,EAAGsqB,kBAGH,EAAGthB,EAAcA,eAAe5a,EAAW+a,GAAM,SAAU2hB,GACzD9qB,EAAG+oB,wBAAuB,YAxB9B,SAAgB5f,EAAM2hB,GACpB,GAAIr1C,MAAMW,QAAQ+yB,GAAO,CACvB,IAAI4hB,GAAc,EAAGjgC,EAAK+uB,MAAM1Q,EAAM2hB,EAASvkB,KAAMukB,EAASjS,WAC9D7Y,EAAG8qB,SAAWA,EAEd9qB,EAAGgrB,oBAAoBD,GAGzB,IAAI,EAAGjgC,EAAK3J,UAAUgoB,GAAO,CAC3B,IAAI8hB,GAAe,EAAGngC,EAAKogC,gBAAgB/hB,EAAM2hB,EAASjS,WAC1D7Y,EAAG8qB,SAAWA,EAEd9qB,EAAGgrB,oBAAoBC,IAarBE,CAAOhiB,EAAM2hB,KACZ,gBACF9qB,EAAG8qB,YACL,eAQLjD,oBAAkC,WAChC,IAAI9hB,EAAQlkB,KAEZA,KAAKknC,wBAAuB,WAC1B,IAAIqC,EAAgBrlB,EAAMtmB,QACtBmmC,EAAcwF,EAAcxF,YAC5BW,EAAe6E,EAAc7E,aAC7BqE,EAAcQ,EAAcR,YAC5BS,EAAmBD,EAAcC,iBAEjCliB,EAAOpD,EAAMnyB,MAEjBmyB,EAAMukB,kBAGN,EAAGvhB,EAAmBA,oBAAoB,CACxC3a,UAAWw8B,GAAe3D,EAAoC4D,GAC9D1hB,KAAMA,EACNkiB,iBAAkBA,EAElBzF,YAAaA,EACbW,aAAcA,EACd+E,YAAa,SAAqBjO,GAChCtX,EAAMgjB,wBAAuB,WAC3B,IAAIwC,EAAchF,EAAapd,EAAMkU,GAErCtX,EAAMilB,oBAAoBO,KACzB,wBAGN,eAOL1D,QAAsB,WAChBhmC,KAAKghB,OAAShhB,KAAKuM,WAAavM,KAAKghB,MAAMG,aAAenhB,KAAKuM,WACjEvM,KAAKuM,UAAU4V,YAAYniB,KAAKghB,OAG9BhhB,KAAK8nC,eACP9nC,KAAK8nC,aAAa5lB,UAClBliB,KAAK8nC,aAAe,MAGtB9nC,KAAKwmC,mBAAqB,KAEtBxmC,KAAK+a,UACP/a,KAAK+a,QAAQ+L,QACb9mB,KAAK+a,QAAU,MAIjB/a,KAAK2mC,kBAAkBzkB,WAOzB8jB,QAAsB,WACpB,IAAI1e,EAAOtnB,KAAKjO,MACZoZ,EAAO2C,KAAKC,UAAUuZ,GAE1BtnB,KAAK2pC,wBAAwBx+B,EAAMmc,IAOrC0e,OAAqB,WACnB,IAAI1e,EAAOtnB,KAAKjO,MACZoZ,EAAO2C,KAAKC,UAAUuZ,EAAM,KAAMtnB,KAAKqmC,aAE3CrmC,KAAK2pC,wBAAwBx+B,EAAMmc,IAOrC0e,OAAqB,WACnB,IAAI76B,EAAOnL,KAAKsoB,UAEhB,IACE,IAAIshB,EAAezE,IAAyBh6B,GAE5CnL,KAAK2pC,wBAAwBC,GAC7B,MAAO7xC,MAQXiuC,MAAoB,WAGlBhmC,KAAKke,IAAIuiB,UAAUrgB,SAQrB4lB,IAAkB,SAAU1e,GACtBtnB,KAAK+a,SACP/a,KAAK+a,QAAQ+L,QAGf9mB,KAAK6pC,KAAKviB,IAQZ0e,OAAqB,SAAU1e,GAC7BtnB,KAAK6pC,KAAKviB,IAQZ0e,KAAmB,SAAU1e,GAC3BtnB,KAAKmL,UAAO1L,EACZO,KAAKsnB,KAAOA,EAEZtnB,KAAKyoC,iBAELzoC,KAAK8pC,eAGL9pC,KAAKwmC,sBAGPR,oBAAkC,SAAU1e,GAC1CtnB,KAAK6pC,KAAKviB,GAEVtnB,KAAK+pC,aAQP/D,IAAkB,WAChB,QAAkBvmC,IAAdO,KAAKsnB,KAAoB,CAC3B,IAAInc,EAAOnL,KAAKsoB,UAChBtoB,KAAKsnB,MAAO,EAAGre,EAAKkI,OAAOhG,GAG7B,OAAOnL,KAAKsnB,MAQd0e,QAAsB,WASpB,YARkBvmC,IAAdO,KAAKmL,OACPnL,KAAKmL,KAAO2C,KAAKC,UAAU/N,KAAKsnB,KAAM,KAAMtnB,KAAKqmC,cAEd,IAA/BrmC,KAAKpC,QAAQosC,gBACfhqC,KAAKmL,MAAO,EAAGlC,EAAKghC,oBAAoBjqC,KAAKmL,QAI1CnL,KAAKmL,MAQd66B,QAAsB,SAAU3d,GAC1BroB,KAAK+a,SACP/a,KAAK+a,QAAQ+L,QAGf9mB,KAAKkqC,SAAS7hB,IAQhB2d,WAAyB,SAAU3d,GAE7BroB,KAAKsoB,YAAcD,GAIvBroB,KAAKkqC,SAAS7hB,IAUhB2d,SAAuB,SAAU3d,EAAUf,GAWzC,IAVmC,IAA/BtnB,KAAKpC,QAAQosC,cACfhqC,KAAKmL,MAAO,EAAGlC,EAAKghC,oBAAoB5hB,GAExCroB,KAAKmL,KAAOkd,EAGdroB,KAAKsnB,KAAOA,EAEZtnB,KAAKyoC,sBAEahpC,IAAdO,KAAKsnB,KAAoB,CAC3B,IAAInJ,EAAKne,KACTA,KAAKknC,wBAAuB,WAC1B,IAEE/oB,EAAGmJ,KAAOnJ,EAAGpsB,MAEbosB,EAAGsqB,iBAEHtqB,EAAG2rB,eACH,MAAO/xC,OAER,mBAEHiI,KAAK8pC,eAGP9pC,KAAKwmC,sBAUPR,wBAAsC,SAAU3d,EAAUf,GACxDtnB,KAAKkqC,SAAS7hB,EAAUf,GAExBtnB,KAAK+pC,aASP/D,cAA4B,SAAUliC,GACpC9D,KAAKsnB,KAAOxjB,EAAOwjB,KACnBtnB,KAAKmL,KAAOrH,EAAOqH,KAEnBnL,KAAKyoC,iBAELzoC,KAAKwmC,sBAQPR,aAA2B,WACzB,GAAKhmC,KAAK+a,QAAV,CAIA,IAAIjX,EAAS,CACXqH,KAAMnL,KAAKmL,KACXmc,KAAMtnB,KAAKsnB,MAEbtnB,KAAK+a,QAAQ1Q,IAAIvG,KAUnBkiC,uBAAqC,SAAUjlC,EAAImQ,GAGjD,GAFWlR,KAAKsoB,UAAUpyB,OAEfkvC,EAA0B+E,GAAI,CACvC,IAAIhsB,EAAKne,MACT,EAAGiJ,EAAKwZ,cAActE,EAAG6C,MAAO,QAChC7C,EAAGD,IAAI4oB,YAAYthB,UAAYtU,EAC/BQ,YAAW,WACT3Q,KACA,EAAGkI,EAAKoZ,iBAAiBlE,EAAG6C,MAAO,QACnC7C,EAAGD,IAAI4oB,YAAYthB,UAAY,KAC9B,UAEHzkB,MAKJilC,EAAYlc,SAAWic,EAAqBjc,SAC5Ckc,EAAYoE,cAAgBrE,EAAqBqE,cAEjD,IAAIxjB,EAAoB,CAAC,CACvBv0B,KAAM,UACNs2B,MAAOqd,EACPp4B,KAAM,UAKFy8B,IACC,SAAS/sB,EAAyBC,EAAqBzsB,GAE9D,aACAA,EAAoBkB,EAAEurB,GACDzsB,EAAoBU,EAAE+rB,EAAqB,CACzC,cAAiB,WAAa,YAEhC,IAAI+sB,EAAyCx5C,EAAoB,KAC7Dy5C,EAA8Dz5C,EAAoB6B,EAAE23C,GACpFjgB,EAAqCv5B,EAAoB,KACzD05C,EAAqC15C,EAAoB,KAkBlF,SAASq2B,EAAc5a,EAAW+a,EAAMgiB,EAAQ1rC,GAC9C,IAAI6sC,EAAQ72C,MAAMW,QAAQ+yB,IAAQ,EAAGkjB,EAAmCE,eAAepjB,GAAQ,CAAC,IAC5FqjB,EAAe/sC,GAAWA,EAAQ8mB,OAAQ,EAAG8lB,EAAmCz/B,UAAU0/B,EAAO7sC,EAAQ8mB,MAAQ9mB,EAAQ8mB,KAAO+lB,EAAM,GACtIG,EAAoBhtC,GAAWA,EAAQo5B,WAAa,MACpD3tB,EAAU,oEAA0E,EAAGghB,EAAoD5J,IAAI,QAArI,wCAAiN,EAAG4J,EAAoD5J,IAAI,kBAA5Q,sHAAsa,EAAG4J,EAAoD5J,IAAI,kBAAje,iDAAqkB,EAAG4J,EAAoD5J,IAAI,sBAAhoB,iIAA8yB,EAAG4J,EAAoD5J,IAAI,iBAAz2B,aAA+4B,EAAG4J,EAAoD5J,IAAI,sBAA18B,0GAAimC,EAAG4J,EAAoD5J,IAAI,kBAA5pC,aAAmsC,EAAG4J,EAAoD5J,IAAI,uBAA9vC,qNAAqhD,EAAG4J,EAAoD5J,IAAI,MAAhlD,8CACd8pB,IAAiD,CAC/Cx9B,OAAQR,EACRlD,QAASA,EACTwhC,aAAc,2BACdC,cAAe,CACbC,gBAAiB,aACjBC,QAAS,IAEXC,WAAY,2CACXC,aAAY,SAAUC,GACvB,IAAIlyB,EAAOkyB,EAAMC,YAAY7W,cAAc,QACvC4K,EAAKgM,EAAMC,YAAY7W,cAAc,OACrC4P,EAAQgH,EAAMC,YAAY7W,cAAc,UACxCyC,EAAYmU,EAAMC,YAAY7W,cAAc,cAahD,SAAS8W,EAAal5C,GACpB6kC,EAAU7kC,MAAQA,EAClB6kC,EAAUltB,UAAY,yDAA2DktB,EAAU7kC,MAT7Fs4C,EAAMr0C,SAAQ,SAAUsuB,GACtB,IAAIoD,EAASvd,SAASiJ,cAAc,UACpCsU,EAAO3c,KANT,SAAwBuZ,GACtB,MAAgB,KAATA,EAAc,IAAkB,MAAZA,EAAK,GAAaA,EAAK1wB,MAAM,GAAK0wB,EAK/C4mB,CAAe5mB,GAC7BoD,EAAO31B,MAAQuyB,EACfyf,EAAM5wB,YAAYuU,MAQpBqc,EAAMhyC,MAAQw4C,GAAgBF,EAAM,GACpCY,EAAaT,GAAqB,OAElC5T,EAAU1X,QAAU,SAAUC,GAC5B8rB,EAAa9rB,EAAMvpB,OAAOyd,aAAa,gBAGzC0rB,EAAG7f,QAAU,SAAUC,GACrBA,EAAMC,iBACND,EAAM4D,kBACNgoB,EAAM/5B,QACNk4B,EAAO,CACL5kB,KAAMyf,EAAMhyC,MACZ6kC,UAAWA,EAAU7kC,SAIrB8mB,IAEFA,EAAKsyB,SAAWpM,EAAG7f,YAEpBksB,YAAW,SAAUL,GACtBA,EAAMjpB,aACL8I,SAKCygB,IACC,SAASnuB,EAAyBC,EAAqBzsB,GAE9D,aAEAA,EAAoBkB,EAAEurB,GAGtBzsB,EAAoBU,EAAE+rB,EAAqB,CACzC,mBAAsB,WAAa,YAIrC,IAAImuB,EAAY56C,EAAoB,KAChC66C,EAAiC76C,EAAoB6B,EAAE+4C,GAEvDE,EAAU96C,EAAoB,KAC9B+6C,EAA+B/6C,EAAoB6B,EAAEi5C,GAErDhG,EAAO90C,EAAoB,KAyB/B,SAASg7C,EAAQr0C,GAAkC,OAAOq0C,EAAU,mBAAqB75C,QAAU,iBAAmBA,OAAO85C,SAAW,SAAUt0C,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxF,QAAUwF,EAAIiI,cAAgBzN,QAAUwF,IAAQxF,OAAOa,UAAY,gBAAkB2E,IAAgBA,GA6BzU,SAASu0C,EAAe75C,EAAO85C,EAAO1zB,EAAQgtB,GAE5C,MAAqB,mBAAVpzC,GAAuBA,aAAiB+5C,SAAqB,OAAV/5C,GAAmC,kBAAVA,GAAsBA,aAAiBsiB,QAA2B,kBAAVtiB,GAAsBA,aAAiB6iB,QAAU7iB,aAAiB2kB,KACxMhJ,KAAKC,UAAU5b,GAIpByB,MAAMW,QAAQpC,GAqBpB,SAAwB8M,EAAOgtC,EAAO1zB,EAAQgtB,GAI5C,IAHA,IAAI4G,EAAcF,EAAQ1zB,EAAS0zB,OAAQxsC,EACvCgQ,EAAMw8B,EAAQ,MAAQ,IAEjB/6C,EAAI,EAAGA,EAAI+N,EAAM/I,OAAQhF,IAAK,CACrC,IAAI4tB,EAAO7f,EAAM/N,GAiBjB,GAfI+6C,IACFx8B,GAAO08B,GAIP18B,GADkB,qBAATqP,GAAwC,oBAATA,EACjCktB,EAAeltB,EAAMmtB,EAAOE,EAAa5G,GAEzC,OAGLr0C,EAAI+N,EAAM/I,OAAS,IACrBuZ,GAAOw8B,EAAQ,MAAQ,KAIrBx8B,EAAIvZ,OAASqvC,EACf,OAAO91B,EAAM,MAKjB,OADAA,GAAOw8B,EAAQ,KAAO1zB,EAAS,IAAM,IA/C5B6zB,CAAej6C,EAAO85C,EAAO1zB,EAAQgtB,GAI1CpzC,GAA4B,WAAnB25C,EAAQ35C,GAwDvB,SAAyBS,EAAQq5C,EAAO1zB,EAAQgtB,GAC9C,IAAI4G,EAAcF,EAAQ1zB,EAAS0zB,OAAQxsC,EACvC62B,GAAQ,EACR7mB,EAAMw8B,EAAQ,MAAQ,IAE1B,GAA6B,oBAAlBr5C,EAAOy5C,OAChB,OAAOL,EAAep5C,EAAOy5C,SAAUJ,EAAO1zB,EAAQgtB,GAGxD,IAAK,IAAI9yC,KAAOG,EACd,GAAI05C,EAAyB15C,EAAQH,GAAM,CACzC,IAAIN,EAAQS,EAAOH,GAWnB,GATI6jC,EACFA,GAAQ,EAER7mB,GAAOw8B,EAAQ,MAAQ,IAGzBx8B,GAAOw8B,EAAQE,EAAc,IAAM15C,EAAM,MAAQ,IAAMA,EAAM,MAC7Dgd,GAAOu8B,EAAe75C,EAAO85C,EAAOE,EAAa5G,IAEzCrvC,OAASqvC,EACf,OAAO91B,EAAM,MAMnB,OADAA,GAAOw8B,EAAQ,KAAO1zB,EAAS,IAAM,IAnF5Bg0B,CAAgBp6C,EAAO85C,EAAO1zB,EAAQgtB,QAD/C,EAgGF,SAASiH,EAAOrhC,EAAMshC,GAGpB,IAFA,IAAIC,EAAM,GAEHD,KAAU,GACfC,GAAOvhC,EAGT,OAAOuhC,EAyBT,SAASJ,EAAyB15C,EAAQH,GACxC,OAAOb,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQH,GAGtD,IAAIwW,EAAOnY,EAAoB,KAE3Bs0C,EAAYt0C,EAAoB,KAwBpC,SAASo2B,EAAmB/iB,GAC1B,IAAIoI,EAAYpI,EAAKoI,UACjB+a,EAAOnjB,EAAKmjB,KACZqlB,EAAwBxoC,EAAKqlC,iBAC7BA,OAA6C,IAA1BmD,EApBC,+OAoBwDA,EAC5E5I,EAAc5/B,EAAK4/B,YACnBW,EAAevgC,EAAKugC,aACpB+E,EAActlC,EAAKslC,YACnBt3C,EAAQm1B,EACRje,EAAU,sEAA4E,EAAGu8B,EAAoBnlB,IAAI,aAAvG,YAAyI+oB,EAAzI,+CAAiN,EAAG5D,EAAoBnlB,IAAI,wBAA5O,4KAA4c,EAAGmlB,EAAoBnlB,IAAI,yBAAve,w1BAAy8C,EAAGmlB,EAAoBnlB,IAAI,yBAAp+C,ugBAAklE,EAAGmlB,EAAoBnlB,IAAI,+BAA7mE,mPAA06E,EAAGmlB,EAAoBnlB,IAAI,uBAAr8E,6OAAovF,EAAGmlB,EAAoBnlB,IAAI,uBAA/wF,iEAAo3F,EAAGmlB,EAAoBnlB,IAAI,yBAA/4F,4PAA0sG,EAAGmlB,EAAoBnlB,IAAI,MAAruG,6BACdkrB,IAAoB,CAClB5+B,OAAQR,EACRlD,QAASA,EACTwhC,aAAc,2BACdC,cAAe,CACbC,gBAAiB,aACjBC,QAAS,IAEXC,WAAY,8CACZ7qB,OAAO,IACN8qB,aAAY,SAAUC,GACvB,IAAIyB,EAAOzB,EAAMC,YACbyB,EAASD,EAAKrY,cAAc,WAC5B4K,EAAKyN,EAAKrY,cAAc,OACxBuY,EAAcF,EAAKrY,cAAc,gBACjCwY,EAAiBH,EAAKrY,cAAc,mBACpCyY,EAAcJ,EAAKrY,cAAc,gBACjC0Y,EAAYL,EAAKrY,cAAc,cAC/B2Y,EAAYN,EAAKrY,cAAc,cAC/B4Y,EAAeP,EAAKrY,cAAc,iBAClCiH,EAAQoR,EAAKrY,cAAc,UAC3B5J,EAAUiiB,EAAKrY,cAAc,YAE5B3gC,MAAMW,QAAQpC,KACjB06C,EAAOl0B,MAAM6D,UAAY,SACzBqwB,EAAO5/B,YAAc,wDAGH,EAAGhE,EAAKyhC,eAAepjB,GAC7BlxB,SAAQ,SAAUsuB,GAC9B,IAAI0oB,EAAgB9B,EAAe5mB,GAC/B2oB,EAAe9iC,SAASiJ,cAAc,UAC1C65B,EAAaliC,KAAOiiC,EACpBC,EAAal7C,MAAQi7C,EACrBN,EAAYv5B,YAAY85B,GACxB,IAAIC,EAAa/iC,SAASiJ,cAAc,UACxC85B,EAAWniC,KAAOiiC,EAClBE,EAAWn7C,MAAQi7C,EACnBH,EAAU15B,YAAY+5B,MAExB,IAAIC,GAAkB,EAAGtkC,EAAKyhC,eAAepjB,GAAM,GAAM3xB,QAAO,SAAU+uB,GACxE,MAAgB,KAATA,KAGT,GAAI6oB,EAAgBr3C,OAAS,EAC3Bq3C,EAAgBn3C,SAAQ,SAAUsuB,GAChC,IAAI0oB,EAAgB9B,EAAe5mB,GAC/BoD,EAASvd,SAASiJ,cAAc,UACpCsU,EAAO3c,KAAOiiC,EACdtlB,EAAO31B,MAAQi7C,EACfD,EAAa55B,YAAYuU,UAEtB,CACL,IAAI0lB,EAAmBZ,EAAKrY,cAAc,qBAEtCiZ,IACFA,EAAiB70B,MAAM0D,QAAU,QAIrC,IAAIoxB,EAAqB,IAAK5B,IAAL,CAAwBiB,EAAa,CAC5Dvb,iBAAiB,EACjBE,WAAW,EACXE,eAAe,EACfvY,YAAa,aAEXs0B,EAAwB,IAAK7B,IAAL,CAAwBkB,EAAgB,CAClExb,iBAAiB,EACjBE,WAAW,EACXE,eAAe,EACfvY,YAAa,eAEXu0B,EAAmB,IAAK9B,IAAL,CAAwBoB,EAAW,CACxD1b,iBAAiB,EACjBE,WAAW,EACXE,eAAe,EACfvY,YAAa,aAEXw0B,EAAmB,IAAK/B,IAAL,CAAwBqB,EAAW,CACxD3b,iBAAiB,EACjBE,WAAW,EACXE,eAAe,EACfvY,YAAa,aAEXy0B,EAAsB,IAAKhC,IAAL,CAAwBsB,EAAc,CAC9D7X,UAAU,EACV7D,WAAW,EACXF,iBAAiB,EACjBnY,YAAa,qBAiBf,SAASkyB,EAAe5mB,GACtB,MAAgB,KAATA,EAAc,IAAkB,MAAZA,EAAK,GAAaA,EAAK1wB,MAAM,GAAK0wB,EAhB/D+oB,EAAmBxb,GAAG,iBAAkB6b,GACxCJ,EAAsBzb,GAAG,iBAAkB6b,GAC3Cd,EAAYe,QAAUD,EACtBH,EAAiB1b,GAAG,iBAAkB6b,GACtCF,EAAiB3b,GAAG,iBAAkB6b,GACtCD,EAAoB5b,GAAG,iBAAkB6b,GAEzClB,EAAKrY,cAAc,wBAAwBjV,QAAU,SAAUC,GAG/B,MAA1BA,EAAMvpB,OAAOgX,UACfuS,EAAMC,kBAqBV,IAAIwuB,GAAyB,EAAG/kC,EAAKgqB,WAbrC,WACE,IACE,IAAIgb,EAAcvJ,EAAavyC,EAAOqpC,EAAMrpC,OAC5Cw4B,EAAQ7gB,UAAY,+BACpB6gB,EAAQx4B,MAhUhB,SAA0BA,EAAO85C,EAAO1G,GACtC,IAAI2I,EAGiB,kBAAVjC,EACLA,EAAQ,GACViC,EAAS1B,EAAO,IAAK,IACZP,GAAS,IAClBiC,EAAS1B,EAAO,IAAKP,IAGG,kBAAVA,GAAgC,KAAVA,IACtCiC,EAASjC,GAGX,IAAIkC,EAASnC,EAAe75C,EAAO+7C,EAAQ,GAAI3I,GAC/C,OAAO4I,EAAOj4C,OAASqvC,EAwIzB,SAAep6B,EAAMo6B,GACnB,MAAwB,kBAAVA,EAAqBp6B,EAAKnX,MAAM,EAAGuxC,GAASp6B,EAzI3BnX,CAAMm6C,EAAQ5I,GAAS,MAAQ4I,EAgTxCC,CAAiBH,EAAa,EAAG7I,EAAsCwD,IACvFzJ,EAAGnmB,UAAW,EACd,MAAOjhB,GACP4yB,EAAQ7gB,UAAY,gDACpB6gB,EAAQx4B,MAAQ4F,EAAI9D,WACpBkrC,EAAGnmB,UAAW,KAI4C,KAE9D,SAASq1B,EAAe/mB,EAAM0c,GAC5B,IACExI,EAAMrpC,MAAQ4xC,EAAYzc,EAAM0c,GAChC7E,EAAGnmB,UAAW,EACdg1B,IACA,MAAOj2C,GACP,IAAImZ,EAAU,2DAA6DnZ,EAAImZ,SAAWnZ,EAAI9D,YAC9FunC,EAAMrpC,MAAQ,GACdgtC,EAAGnmB,UAAW,EACd2R,EAAQ7gB,UAAY,gDACpB6gB,EAAQx4B,MAAQ+e,GAIpB,SAAS48B,IACP,IAAI9J,EAAe,GAiBnB,GAfI8I,EAAY36C,OAAS46C,EAAe56C,OAAS66C,EAAY76C,QAC3D6xC,EAAaruC,OAAS,CACpBwuC,MAAO2I,EAAY36C,MACnBoyC,SAAUwI,EAAe56C,MACzBA,MAAO66C,EAAY76C,QAInB86C,EAAU96C,OAAS+6C,EAAU/6C,QAC/B6xC,EAAahM,KAAO,CAClBmM,MAAO8I,EAAU96C,MACjB6kC,UAAWkW,EAAU/6C,QAIrBg7C,EAAah7C,MAAO,CAGtB,IAFA,IAAIqyC,EAAS,GAEJtzC,EAAI,EAAGA,EAAIi8C,EAAavvC,QAAQ1H,OAAQhF,IAC/C,GAAIi8C,EAAavvC,QAAQ1M,GAAGkkC,SAAU,CACpC,IAAIkZ,EAAgBnB,EAAavvC,QAAQ1M,GAAGiB,MAC5CqyC,EAAOzwC,KAAKu6C,GAIhBtK,EAAaC,WAAa,CACxBO,OAAQA,GAIZ6J,EAAe/mB,EAAM0c,GAGvBxI,EAAMuS,QAAUC,EAEhB7O,EAAG7f,QAAU,SAAUC,GACrBA,EAAMC,iBACND,EAAM4D,kBACNgoB,EAAM/5B,QACNq4B,EAAYjO,EAAMrpC,QAIpBk8C,EAAe/mB,EAAM,IACrB5V,YAAW,WACT8pB,EAAMxB,SACNwB,EAAMpb,QACNob,EAAMllB,eAAiB,EACvBklB,EAAMjlB,aAAe,QAEtBi1B,YAAW,SAAUL,GACtBA,EAAMjpB,aACL8I,SAKCujB,IACC,SAASjxB,EAAyBC,EAAqBzsB,GAE9D,aAEAA,EAAoBkB,EAAEurB,GAGtBzsB,EAAoBU,EAAE+rB,EAAqB,CACzC,eAAkB,WAAa,YAIjC,IAAI2nB,EAAiBp0C,EAAoB,KACrCq0C,EAAsCr0C,EAAoB6B,EAAEuyC,GAE5D1e,EAAM11B,EAAoB,KAC1B09C,EAA2B19C,EAAoB6B,EAAE6zB,GAEjD4e,EAAYt0C,EAAoB,KAEhCuyB,EAAavyB,EAAoB,KAEjC80B,EAAe90B,EAAoB,KAEnC80C,EAAO90C,EAAoB,KAE3B+0C,EAAgB/0C,EAAoB,IAEpCw5B,EAAex5B,EAAoB,KAEnCq2B,EAAgBr2B,EAAoB,KAEpCo2B,EAAqBp2B,EAAoB,KAEzC29C,EAA4B39C,EAAoB,IAEhDmY,EAAOnY,EAAoB,KA+C/B,SAASg7C,EAAQr0C,GAAkC,OAAOq0C,EAAU,mBAAqB75C,QAAU,iBAAmBA,OAAO85C,SAAW,SAAUt0C,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxF,QAAUwF,EAAIiI,cAAgBzN,QAAUwF,IAAQxF,OAAOa,UAAY,gBAAkB2E,IAAgBA,GAgBzU,IAAIquC,EAAW,GA0lCf,SAASld,IACP,IACE5oB,KAAKmnC,SACL,MAAOpvC,KAplCX+tC,EAAStzC,OAAS,SAAU+Z,GAC1B,IAAI2X,EAAQlkB,KAERpC,EAAU3H,UAAUC,OAAS,QAAsBuJ,IAAjBxJ,UAAU,GAAmBA,UAAU,GAAK,GAEjD,qBAAtB2H,EAAQ0nB,YACjB1nB,EAAQ0nB,WAAY,GAItB1nB,EAAQqoC,aAAsC,IAAxBroC,EAAQqoC,YAC9BroC,EAAQsoC,YAAoC,IAAvBtoC,EAAQsoC,WAC7BtoC,EAAQuoC,iBAA8C,IAA5BvoC,EAAQuoC,gBAClCvoC,EAAQmmC,YAAcnmC,EAAQmmC,aAAe8B,EAA+B7zC,EAC5E4L,EAAQ8mC,aAAe9mC,EAAQ8mC,cAAgBmB,EAAgCO,EAC/EpmC,KAAKpC,QAAUA,EAEoB,kBAAxBA,EAAQyoC,YACjBrmC,KAAKqmC,YAAc5xB,OAAO7W,EAAQyoC,aAElCrmC,KAAKqmC,YAAc,GAIrB,EAAGT,EAAuBU,IAAItmC,KAAKpC,QAAQoN,YAC3C,EAAG46B,EAAsBW,IAAIvmC,KAAKpC,QAAQsM,UAE1C,IAAIwkC,EAAO9wC,EAAQ4oB,IAAM5oB,EAAQ4oB,IAAOgoB,IAIxCxuC,KAAK3N,KAAwB,SAAjBuL,EAAQvL,KAAkB,OAAS,OAE7B,SAAd2N,KAAK3N,MAEa,qBAATq8C,IACT1uC,KAAK3N,KAAO,OACZ2F,QAAQmd,KAAK,iKAKjBnV,KAAK2uC,MAAQ/wC,EAAQ+wC,OAlDH,gDAoDd3uC,KAAK2uC,OAA2BD,IAClC,EAAGD,EAAyDG,KAG1DhxC,EAAQixC,uBACV7uC,KAAK6uC,sBAAsBjxC,EAAQixC,uBAGrC,IAAI1wB,EAAKne,KACTA,KAAKuM,UAAYA,EACjBvM,KAAKke,IAAM,GACXle,KAAK8uC,eAAYrvC,EAEjBO,KAAKsb,cAAW7b,EAEhBO,KAAK4pB,eAAiB,KACtB5pB,KAAK+uC,YAAc,GACnB/uC,KAAKgvC,sBAAmBvvC,EAExBO,KAAKwmC,oBAAqB,EAAGv9B,EAAKgqB,UAAUjzB,KAAKivC,kBAAkBv8C,KAAKsN,MAAOA,KAAKioB,mBACpFjoB,KAAK0b,MAAQnP,EAAUk6B,YACvBzmC,KAAKyb,OAASlP,EAAU+V,aACxBtiB,KAAKghB,MAAQzW,SAASiJ,cAAc,OACpCxT,KAAKghB,MAAMlX,UAAY,8BAAgC9J,KAAKpC,QAAQvL,KAEpE2N,KAAKghB,MAAM1B,QAAU,SAAUC,GAE7BA,EAAMC,kBAGRxf,KAAKghB,MAAMkuB,UAAY,SAAU3vB,GAC/BpB,EAAGgxB,WAAW5vB,IAIhB,IAAImnB,EAAqB,CACvB1wC,OAAQgK,KAAKghB,MACbxH,QAASxZ,KAAKpC,QAAQ4b,SAAW,KACjCC,OAAQzZ,KAAKpC,QAAQ6b,QAAU,MAMjC,GAJAzZ,KAAK2mC,kBAAoB,IAAI/gB,EAA+BghB,EAAEF,GAC9D1mC,KAAKqJ,QAAUkB,SAASiJ,cAAc,OACtCxT,KAAKqJ,QAAQS,UAAY,mBAErB9J,KAAKpC,QAAQqoC,YAAa,EAC5B,EAAGh9B,EAAKwZ,cAAcziB,KAAKqJ,QAAS,qBAEpCrJ,KAAKye,KAAOlU,SAASiJ,cAAc,OACnCxT,KAAKye,KAAK3U,UAAY,kBACtB9J,KAAKghB,MAAMzN,YAAYvT,KAAKye,MAE5B,IAAIwoB,EAAe18B,SAASiJ,cAAc,UAC1CyzB,EAAaljC,KAAO,SACpBkjC,EAAan9B,UAAY,oBACzBm9B,EAAa7nB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eAChDzgB,KAAKye,KAAKlL,YAAY0zB,GAEtBA,EAAa3nB,QAAU,WACrB,IACEnB,EAAGgpB,SAEHhpB,EAAG4rB,YACH,MAAOhyC,GACPomB,EAAG4K,SAAShxB,KAKhB,IAAIqvC,EAAgB78B,SAASiJ,cAAc,UAiB3C,GAhBA4zB,EAAcrjC,KAAO,SACrBqjC,EAAct9B,UAAY,qBAC1Bs9B,EAAchoB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,gBACjDzgB,KAAKye,KAAKlL,YAAY6zB,GAEtBA,EAAc9nB,QAAU,WACtB,IACEnB,EAAGkpB,UAEHlpB,EAAG4rB,YACH,MAAOhyC,GACPomB,EAAG4K,SAAShxB,KAKZiI,KAAKpC,QAAQsoC,WAAY,CAC3B,IAAIoB,EAAQ/8B,SAASiJ,cAAc,UAEnC8zB,EAAMvjC,KAAO,SACbujC,EAAMx9B,UAAY,kBAClBw9B,EAAMloB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,kBAEzC6mB,EAAMhoB,QAAU,WACdnB,EAAGopB,kBAGLvnC,KAAKye,KAAKlL,YAAY+zB,GAIxB,GAAItnC,KAAKpC,QAAQuoC,gBAAiB,CAChC,IAAI1F,EAAYl2B,SAASiJ,cAAc,UACvCitB,EAAU18B,KAAO,SACjB08B,EAAUrhB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,uBAC7CggB,EAAU32B,UAAY,uBAEtB22B,EAAUnhB,QAAU,WAClBnB,EAAGqpB,uBAGLxnC,KAAKye,KAAKlL,YAAYktB,GAIxB,IAAIgH,EAAel9B,SAASiJ,cAAc,UAiB1C,GAhBAi0B,EAAa1jC,KAAO,SACpB0jC,EAAa39B,UAAY,oBACzB29B,EAAaroB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eAChDzgB,KAAKye,KAAKlL,YAAYk0B,GAEtBA,EAAanoB,QAAU,WACrB,IACEnB,EAAGupB,SAEHvpB,EAAG4rB,YACH,MAAOhyC,GACPomB,EAAG4K,SAAShxB,KAKE,SAAdiI,KAAK3N,KAAiB,CAExB,IAAIkvC,EAAOh3B,SAASiJ,cAAc,UAClC+tB,EAAKx9B,KAAO,SACZw9B,EAAKz3B,UAAY,uCACjBy3B,EAAKniB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAExC8gB,EAAKjiB,QAAU,WACb4E,EAAM4qB,UAAUM,aAAaC,iBAAiB9N,QAGhDvhC,KAAKye,KAAKlL,YAAYguB,GACtBvhC,KAAKke,IAAIqjB,KAAOA,EAEhB,IAAInC,EAAO70B,SAASiJ,cAAc,UAClC4rB,EAAKr7B,KAAO,SACZq7B,EAAKt1B,UAAY,kBACjBs1B,EAAKhgB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAExC2e,EAAK9f,QAAU,WACb4E,EAAM4qB,UAAUM,aAAaC,iBAAiBjQ,QAGhDp/B,KAAKye,KAAKlL,YAAY6rB,GACtBp/B,KAAKke,IAAIkhB,KAAOA,EAgBlB,GAZIp/B,KAAKpC,SAAWoC,KAAKpC,QAAQiqB,OAAS7nB,KAAKpC,QAAQiqB,MAAM3xB,SAC3D8J,KAAK8nC,aAAe,IAAIxd,EAA+BS,EAAE/qB,KAAKye,KAAMze,KAAKpC,QAAQiqB,MAAO7nB,KAAKpC,QAAQvL,MAAM,SAAkBA,GAE3H,IACE8rB,EAAG+J,QAAQ71B,GACX8rB,EAAG2pB,aAAa1nB,QAChB,MAAOroB,GACPomB,EAAG4K,SAAShxB,QAKA,SAAdiI,KAAK3N,KAAiB,CACxB,IAAIi9C,EAAY/kC,SAASiJ,cAAc,KACvC87B,EAAU/7B,YAAYhJ,SAASuV,eAAe,mBAC9CwvB,EAAUC,KAAO,qBACjBD,EAAUt5C,OAAS,SACnBs5C,EAAUxlC,UAAY,uBAEtBwlC,EAAUhwB,QAAU,WAIlBpf,OAAO8T,KAAKs7B,EAAUC,KAAMD,EAAUt5C,OAAQ,eAGhDgK,KAAKye,KAAKlL,YAAY+7B,IAI1B,IAAIE,EAAY,GACZC,EAAazvC,KAAKpC,QAAQ+pB,YAAcmkB,EAAoC,aAA5B9rC,KAAKpC,QAAQ+pB,cAA+B3nB,KAAKpC,QAAQ+pB,WAAW6nB,GAIxH,GAHAxvC,KAAKghB,MAAMzN,YAAYvT,KAAKqJ,SAC5BrJ,KAAKuM,UAAUgH,YAAYvT,KAAKghB,OAEd,SAAdhhB,KAAK3N,KAAiB,CACxB2N,KAAK0vC,UAAYnlC,SAASiJ,cAAc,OACxCxT,KAAK0vC,UAAU/2B,MAAM8C,OAAS,OAE9Bzb,KAAK0vC,UAAU/2B,MAAM+C,MAAQ,OAE7B1b,KAAKqJ,QAAQkK,YAAYvT,KAAK0vC,WAE9B,IAAIZ,EAAYJ,EAAKiB,KAAK3vC,KAAK0vC,WAE3BE,EAAad,EAAUM,aAC3BN,EAAUe,gBAAkB9X,IAC5B+W,EAAUgB,SAAS9vC,KAAK2uC,OACxBG,EAAUiB,WAAW,CACnB12B,SAAUo2B,IAEZX,EAAUkB,oBAAmB,GAC7BlB,EAAUmB,YAAY,QACtBL,EAAW1nB,QAAQ,iBACnB0nB,EAAWM,WAAWlwC,KAAKqmC,aAC3BuJ,EAAWO,gBAAe,GAC1BP,EAAWQ,gBAAe,GAE1B,IAAIC,EAAyBT,EAAWU,eAExCV,EAAWU,eAAiB,SAAUvB,GACpCsB,EAAuBh/C,KAAK2O,KAAM+uC,GAAeA,EAAY74C,OAAS64C,EAAc5wB,EAAG4wB,cAIzFD,EAAUyB,SAASC,QAAQ,SAAU,MACrC1B,EAAUyB,SAASC,QAAQ,YAAa,MAExC1B,EAAUyB,SAASC,QAAQ,UAAW,MACtC1B,EAAUyB,SAASC,QAAQ,aAAc,MACzC1B,EAAUyB,SAASC,QAAQ,gBAAiB,MAC5C1B,EAAUyB,SAASC,QAAQ,mBAAoB,MAC/CxwC,KAAK8uC,UAAYA,EAEjBA,EAAU7c,GAAG,SAAUjyB,KAAK+pC,UAAUr3C,KAAKsN,OAC3C8uC,EAAU7c,GAAG,kBAAmBjyB,KAAKywC,UAAU/9C,KAAKsN,WAC/C,CAEL,IAAIsb,EAAW/Q,SAASiJ,cAAc,YACtC8H,EAASxR,UAAY,kBACrBwR,EAAS4a,YAAa,EACtBl2B,KAAKqJ,QAAQkK,YAAY+H,GACzBtb,KAAKsb,SAAWA,EAChBtb,KAAKsb,SAASjC,SAAWo2B,EAEK,OAA1BzvC,KAAKsb,SAASyyB,QAChB/tC,KAAKsb,SAASyyB,QAAU/tC,KAAK+pC,UAAUr3C,KAAKsN,MAG5CA,KAAKsb,SAASo1B,SAAW1wC,KAAK+pC,UAAUr3C,KAAKsN,MAG/Csb,EAASq1B,SAAW3wC,KAAKywC,UAAU/9C,KAAKsN,MACxCsb,EAASs1B,YAAc5wC,KAAK6wC,aAAan+C,KAAKsN,MAC9Csb,EAASw1B,OAAS9wC,KAAK+wC,QAAQr+C,KAAKsN,MAiCtC,GA9BAA,KAAKgxC,wBAELhxC,KAAK+nC,WAAa,IAAI1kB,EAA2B2kB,EAAE,CACjDzkB,kBAAiC,SAAdvjB,KAAK3N,KACxBmxB,mBAAoB,WAClBrF,EAAG8wB,qBAELxrB,YAAa,SAAqBvL,GAChCiG,EAAG8yB,WAAY,EAEVn8C,MAAMojB,IACTiG,EAAG+yB,iBAAiB,CAClBC,IAAKj5B,EACLk5B,OAAQ,GACP,CACDD,IAAKj5B,EACLk5B,OAAQ,OAId1tB,eAAgB,SAAwBjI,GAEtC,IACIwsB,EAAcxsB,GADI0C,EAAGD,IAAIoH,UAAYnH,EAAGD,IAAIoH,UAAUhD,aAAe,GAC5B,EAC7CnE,EAAG9U,QAAQsP,MAAMuvB,cAAgBD,EAAc,KAC/C9pB,EAAG9U,QAAQsP,MAAMoB,cAAgBkuB,EAAc,QAGnDjoC,KAAKghB,MAAMzN,YAAYvT,KAAK+nC,WAAWI,iBAEnCvqC,EAAQ0nB,UAAW,EACrB,EAAGrc,EAAKwZ,cAAcziB,KAAKqJ,QAAS,kBACpCrJ,KAAKqxC,mBAAqB,GAC1B,IAAI/rB,EAAY/a,SAASiJ,cAAc,OACvCxT,KAAKke,IAAIoH,UAAYA,EACrBA,EAAUxb,UAAY,uBACtB9J,KAAKghB,MAAMzN,YAAY+R,GACvB,IAAIgsB,EAAU/mC,SAASiJ,cAAc,QACrC89B,EAAQxnC,UAAY,8BACpBwnC,EAAQ9rB,UAAY,MACpB,IAAI+rB,EAAQhnC,SAASiJ,cAAc,QACnC+9B,EAAMznC,UAAY,4BAClBynC,EAAM/rB,UAAY,IAClBF,EAAU/R,YAAY+9B,GACtBhsB,EAAU/R,YAAYg+B,GACtB,IAAIC,EAAWjnC,SAASiJ,cAAc,QACtCg+B,EAAS1nC,UAAY,8BACrB0nC,EAAShsB,UAAY,OACrB,IAAIisB,EAASlnC,SAASiJ,cAAc,QACpCi+B,EAAO3nC,UAAY,4BACnB2nC,EAAOjsB,UAAY,IACnBF,EAAU/R,YAAYi+B,GACtBlsB,EAAU/R,YAAYk+B,GACtBzxC,KAAKqxC,mBAAmBI,OAASA,EACjCzxC,KAAKqxC,mBAAmBE,MAAQA,EAChC,IAAIG,EAAannC,SAASiJ,cAAc,QACxCk+B,EAAW5nC,UAAY,8BACvB4nC,EAAWlsB,UAAY,sBACvBksB,EAAW/4B,MAAM0D,QAAU,OAC3B,IAAIs1B,EAAWpnC,SAASiJ,cAAc,QACtCm+B,EAAS7nC,UAAY,8BACrB6nC,EAASnsB,UAAY,IACrBmsB,EAASh5B,MAAM0D,QAAU,OACzBrc,KAAKqxC,mBAAmBK,WAAaA,EACrC1xC,KAAKqxC,mBAAmBM,SAAWA,EACnCrsB,EAAU/R,YAAYo+B,GACtBrsB,EAAU/R,YAAYm+B,GACtBpsB,EAAU/R,YAAYvT,KAAK+nC,WAAWO,mBACtChjB,EAAU/R,YAAYvT,KAAK+nC,WAAWQ,kBACtCjjB,EAAU/R,YAAYvT,KAAK+nC,WAAWS,gBAGxCxoC,KAAKipB,UAAUjpB,KAAKpC,QAAQsrB,OAAQlpB,KAAKpC,QAAQurB,aAUnD2c,EAASiE,UAAY,WACnB,IAAI6H,EAAS5xC,KAEb,IAAIA,KAAK6xC,iBAAT,CAcA,GATAngC,YAAW,WACLkgC,EAAOZ,uBACTY,EAAOZ,2BAIXhxC,KAAKwmC,qBAGDxmC,KAAKpC,QAAQwc,SACf,IACEpa,KAAKpC,QAAQwc,WACb,MAAOriB,GACPC,QAAQC,MAAM,+BAAgCF,GAKlD,GAAIiI,KAAKpC,QAAQkrC,aACf,IACE9oC,KAAKpC,QAAQkrC,aAAa9oC,KAAKsoB,WAC/B,MAAOvwB,GACPC,QAAQC,MAAM,mCAAoCF,MAKxD+tC,EAASkL,sBAAwB,WAC/B,GAAIhxC,KAAK8uC,WAAa9uC,KAAKke,IAAIqjB,MAAQvhC,KAAKke,IAAIkhB,KAAM,CACpD,IAAI0S,EAAc9xC,KAAK8uC,UAAUM,aAAaC,iBAE1CyC,GAAeA,EAAYC,SAAWD,EAAYE,UACpDhyC,KAAKke,IAAIqjB,KAAKvoB,UAAY84B,EAAYC,UACtC/xC,KAAKke,IAAIkhB,KAAKpmB,UAAY84B,EAAYE,aAU5ClM,EAASyB,eAAiB,WACxB,IACE,IAeIppB,EAAKne,KACLuM,EAAYvM,KAAKpC,QAAQmrC,aAAe3D,EAAoC4D,GAC5E1hB,EAAOtnB,KAAKjO,OAChB,EAAGo1B,EAAcA,eAAe5a,EAAW+a,GAlB9B,SAAgB2hB,GAC3B,GAAIr1C,MAAMW,QAAQ+yB,GAAO,CACvB,IAAI2qB,GAAa,EAAGhpC,EAAK+uB,MAAM1Q,EAAM2hB,EAASvkB,KAAMukB,EAASjS,WAC7D7Y,EAAG8qB,SAAWA,EACd9qB,EAAGib,OAAO6Y,GAGZ,IAAI,EAAGhpC,EAAK3J,UAAUgoB,GAAO,CAC3B,IAAI4qB,GAAc,EAAGjpC,EAAKogC,gBAAgB/hB,EAAM2hB,EAASjS,WAEzD7Y,EAAG8qB,SAAWA,EACd9qB,EAAGib,OAAO8Y,MAO2C/zB,EAAG8qB,UAC5D,MAAOlxC,GACPiI,KAAK+oB,SAAShxB,KASlB+tC,EAAS0B,oBAAsB,WAC7B,IAAI2K,EAASnyC,KAEb,IACE,IAAIupC,EAAgBvpC,KAAKpC,QACrBmrC,EAAcQ,EAAcR,YAC5BqJ,EAAe7I,EAAcxF,YAC7BsO,EAAgB9I,EAAc7E,aAC9B8E,EAAmBD,EAAcC,iBACjCliB,EAAOtnB,KAAKjO,OAChB,EAAGm1B,EAAmBA,oBAAoB,CACxC3a,UAAWw8B,GAAe3D,EAAoC4D,GAC9D1hB,KAAMA,EACNkiB,iBAAkBA,EAElBzF,YAAaqO,EACb1N,aAAc2N,EACd5I,YAAa,SAAqBjO,GAChC,IAAIkO,EAAc2I,EAAc/qB,EAAMkU,GAEtC2W,EAAO/Y,OAAOsQ,MAGlB,MAAO3xC,GACPiI,KAAK+oB,SAAShxB,KAUlB+tC,EAAS2K,UAAY,WACnBzwC,KAAKsyC,oBAELtyC,KAAKuyC,wBASPzM,EAASqJ,WAAa,SAAU5vB,GAC9B,IACIwD,GAAU,EAEC,MAHFxD,EAAMuD,OAASvD,EAAMyG,UAGbzG,EAAMizB,UACrBjzB,EAAM0D,UAERjjB,KAAKqnC,UAELrnC,KAAK+pC,cAGL/pC,KAAKmnC,SAELnnC,KAAK+pC,aAGPhnB,GAAU,GAGRA,IACFxD,EAAMC,iBACND,EAAM4D,mBAGRnjB,KAAKsyC,oBAELtyC,KAAKuyC,wBAQPzM,EAAS+K,aAAe,WACtB7wC,KAAKsyC,oBAELtyC,KAAKuyC,wBAQPzM,EAASiL,QAAU,WACjB,IAAI5yB,EAAKne,KAGT0R,YAAW,WACJyM,EAAG8yB,YACN9yB,EAAGm0B,oBAEHn0B,EAAGo0B,wBAGLp0B,EAAG8yB,WAAY,MAQnBnL,EAASwM,kBAAoB,WAC3B,IACIp6B,EAAMu6B,EAAK7hC,EADXuN,EAAKne,KAGT,GAAIA,KAAKsb,SACP5J,YAAW,WAET,IAAIghC,GAAiB,EAAGzpC,EAAK0pC,mBAAmBx0B,EAAG7C,UAE/Co3B,EAAeE,aAAeF,EAAeG,WAC/CjiC,EAAQ8hC,EAAeG,SAAWH,EAAeE,YAG/ChiC,GAASuN,EAAG20B,YAAc30B,EAAG20B,WAAW56B,OAASw6B,EAAe/9B,IAAIw8B,KAAOhzB,EAAG20B,WAAW1B,SAAWsB,EAAe/9B,IAAIy8B,QACzHl5B,EAAOw6B,EAAel+B,MAAM28B,IAC5BsB,EAAMC,EAAel+B,MAAM48B,SAE3Bl5B,EAAOw6B,EAAe/9B,IAAIw8B,IAC1BsB,EAAMC,EAAe/9B,IAAIy8B,QAG3BjzB,EAAG20B,WAAa,CACd56B,KAAMA,EACNk5B,OAAQqB,EACR7hC,MAAOA,GAGLuN,EAAGvgB,QAAQ0nB,WACbytB,MAED,QACE,GAAI/yC,KAAK8uC,WAAa9uC,KAAKqxC,mBAAoB,CACpD,IAAI2B,EAAYhzC,KAAK8uC,UAAUmE,oBAC3BC,EAAelzC,KAAK8uC,UAAUqE,kBAClCj7B,EAAO86B,EAAU7B,IAAM,EACvBsB,EAAMO,EAAU5B,OAAS,EACzBxgC,EAAQsiC,EAAah9C,OACrBioB,EAAG20B,WAAa,CACd56B,KAAMA,EACNk5B,OAAQqB,EACR7hC,MAAOA,GAGL5Q,KAAKpC,QAAQ0nB,WACfytB,IAIJ,SAASA,IACH50B,EAAGkzB,mBAAmBM,SAASnsB,YAAc5U,IAC/CuN,EAAGkzB,mBAAmBM,SAASnsB,UAAY5U,EAC3CuN,EAAGkzB,mBAAmBM,SAASh5B,MAAM0D,QAAUzL,EAAQ,SAAW,OAClEuN,EAAGkzB,mBAAmBK,WAAW/4B,MAAM0D,QAAUzL,EAAQ,SAAW,QAGtEuN,EAAGkzB,mBAAmBE,MAAM/rB,UAAYtN,EACxCiG,EAAGkzB,mBAAmBI,OAAOjsB,UAAYitB,IAS7C3M,EAASyM,qBAAuB,WAC9B,GAAIvyC,KAAKozC,yBAA0B,CACjC,IAAIC,EAAmBrzC,KAAKszC,mBAE5BtzC,KAAKozC,yBAAyBC,EAAiB7+B,MAAO6+B,EAAiB1+B,IAAK0+B,EAAiBloC,QAYjG26B,EAASyN,oBAAsB,WAC7B,IAAIv4B,EAAUhb,KAAK8uC,WAAa9uC,KAAK8uC,UAAUM,aAE/C,GAAIp0B,EAAS,CACX,IAAIw4B,EAAiBx4B,EAAQy4B,iBAAiB99C,QAAO,SAAU+9C,GAC7D,MAA2B,UAApBA,EAAW3vC,QAEpBiX,EAAQs1B,eAAekD,KAQ3B1N,EAAS5jB,QAAU,WAEbliB,KAAK8uC,YACP9uC,KAAK8uC,UAAU5sB,UACfliB,KAAK8uC,UAAY,MAGf9uC,KAAKghB,OAAShhB,KAAKuM,WAAavM,KAAKghB,MAAMG,aAAenhB,KAAKuM,WACjEvM,KAAKuM,UAAU4V,YAAYniB,KAAKghB,OAG9BhhB,KAAK8nC,eACP9nC,KAAK8nC,aAAa5lB,UAClBliB,KAAK8nC,aAAe,MAGtB9nC,KAAKsb,SAAW,KAChBtb,KAAKwmC,mBAAqB,KAE1BxmC,KAAK2mC,kBAAkBzkB,WAOzB4jB,EAASuB,QAAU,WACjB,IAAI/f,EAAOtnB,KAAKjO,MACZoZ,EAAO2C,KAAKC,UAAUuZ,GAC1BtnB,KAAK2zC,WAAWxoC,IAOlB26B,EAASqB,OAAS,WAChB,IAAI7f,EAAOtnB,KAAKjO,MACZoZ,EAAO2C,KAAKC,UAAUuZ,EAAM,KAAMtnB,KAAKqmC,aAC3CrmC,KAAK2zC,WAAWxoC,IAOlB26B,EAAS4B,OAAS,WAChB,IAAIv8B,EAAOnL,KAAKsoB,UAEhB,IACE,IAAIshB,EAAezE,IAAyBh6B,GAC5CnL,KAAK2zC,WAAW/J,GAChB,MAAO7xC,MAQX+tC,EAAS1lB,MAAQ,WACXpgB,KAAKsb,UACPtb,KAAKsb,SAAS8E,QAGZpgB,KAAK8uC,WACP9uC,KAAK8uC,UAAU1uB,SAQnB0lB,EAASnqB,OAAS,WACZ3b,KAAK8uC,WAEP9uC,KAAK8uC,UAAUnzB,QADH,IAUhBmqB,EAAS3d,IAAM,SAAUb,GACvBtnB,KAAKooB,QAAQta,KAAKC,UAAUuZ,EAAM,KAAMtnB,KAAKqmC,eAQ/CP,EAAS1M,OAAS,SAAU9R,GAC1BtnB,KAAK2zC,WAAW7lC,KAAKC,UAAUuZ,EAAM,KAAMtnB,KAAKqmC,eAQlDP,EAAS/zC,IAAM,WACb,IAAIoZ,EAAOnL,KAAKsoB,UAChB,OAAO,EAAGrf,EAAKkI,OAAOhG,IAQxB26B,EAASxd,QAAU,WACjB,OAAItoB,KAAKsb,SACAtb,KAAKsb,SAASnpB,MAGnB6N,KAAK8uC,UACA9uC,KAAK8uC,UAAUhU,WAGjB,IAUTgL,EAASoE,SAAW,SAAU7hB,EAAUurB,GACtC,IAAIC,EAAS7zC,KAETmL,GAAsC,IAA/BnL,KAAKpC,QAAQosC,eAAyB,EAAG/gC,EAAKghC,oBAAoB5hB,GAAYA,EAMzF,GAJIroB,KAAKsb,WACPtb,KAAKsb,SAASnpB,MAAQgZ,GAGpBnL,KAAK8uC,UAAW,CAMlB,GAJA9uC,KAAK6xC,kBAAmB,EACxB7xC,KAAK8uC,UAAUvU,SAASpvB,GAAO,GAC/BnL,KAAK6xC,kBAAmB,EAEpB+B,EAAc,CAEhB,IAAIz1B,EAAKne,KACT0R,YAAW,WACLyM,EAAG2wB,WACL3wB,EAAG2wB,UAAU9zB,QAAQq0B,iBAAiB7V,WAK5C9nB,YAAW,WACLmiC,EAAO7C,uBACT6C,EAAO7C,2BAMbhxC,KAAKwmC,sBAQPV,EAAS1d,QAAU,SAAUC,GAC3BroB,KAAKkqC,SAAS7hB,GAAU,IAQ1Byd,EAAS6N,WAAa,SAAUtrB,GAE1BroB,KAAKsoB,YAAcD,GAIvBroB,KAAKkqC,SAAS7hB,GAAU,IAQ1Byd,EAAShc,SAAW,WAClB,IAIIxC,EAJAwsB,EAAS9zC,KAET+zC,EAAe,GACfC,EAAc,GAGlB,IACE1sB,EAAOtnB,KAAKjO,MAGRiO,KAAK4pB,iBACK5pB,KAAK4pB,eAAetC,KAG9BysB,EAAe/zC,KAAK4pB,eAAe5F,OAAO9lB,KAAI,SAAUjG,GAEtD,OADAA,EAAM8L,KAAO,cACN,EAAGkF,EAAKgrC,oBAAoBh8C,QAOzC+H,KAAKk0C,oBAAsBl0C,KAAKk0C,oBAAsB,GAAK,EAC3D,IAAI/1B,EAAKne,KACLm0C,EAAMn0C,KAAKk0C,mBACf,OA97BJ,SAAwB5sB,EAAM8sB,GAC5B,IAAKA,EACH,OAAOxzC,QAAQP,QAAQ,IAGzB,IACE,IAAIg0C,EAAwBD,EAAW9sB,GAEvC,QADoB,EAAGre,EAAKqrC,WAAWD,GAAyBA,EAAwBzzC,QAAQP,QAAQg0C,IACnFxzC,MAAK,SAAU0zC,GAClC,OAAI3gD,MAAMW,QAAQggD,GACTA,EAA2B5+C,QAAO,SAAUsC,GACjD,IAAIu8C,GAAQ,EAAGvrC,EAAKwrC,wBAAwBx8C,GAM5C,OAJKu8C,GACHx8C,QAAQmd,KAAK,8HAAyIld,GAGjJu8C,KACNt2C,KAAI,SAAUjG,GACf,MAAQ,CAEJqsB,UAAU,EAAGrb,EAAKyrC,eAAez8C,EAAMysB,MACvCxT,QAASjZ,EAAMiZ,QACfnN,KAAM,uBAKL,MAGX,MAAOhM,GACP,OAAO6I,QAAQN,OAAOvI,IA85Bf48C,CAAertB,EAAMtnB,KAAKpC,QAAQw2C,YAAYvzC,MAAK,SAAU+zC,GAElE,GAAIT,IAAQh2B,EAAG+1B,mBAAoB,CACjC,IAAIlwB,EAAS+vB,EAAa91C,OAAO+1C,GAAa/1C,OAAO22C,GAErDz2B,EAAGisB,cAAcpmB,GAE+B,oBAArC8vB,EAAOl2C,QAAQi3C,oBAAoC,EAAG5rC,EAAK6rC,0BAA0B9wB,EAAQ8vB,EAAO9E,mBAC7G8E,EAAOl2C,QAAQi3C,kBAAkBxjD,KAAKyiD,EAAQ9vB,GAGhD8vB,EAAO9E,iBAAmBhrB,EAG5B,OAAO8vB,EAAO9E,oBAEhB,MAAOj3C,GACP,GAAIiI,KAAKsoB,UAAW,CAElB,IACIpQ,EADA9I,EAAQ,sBAAsBvF,KAAK9R,EAAImZ,SAGvC9B,IACF8I,GAAQ9I,EAAM,IAGhB4kC,EAAc,CAAC,CACbjwC,KAAM,QACNmN,QAASnZ,EAAImZ,QAAQ3H,QAAQ,MAAO,QACpC2O,KAAMA,IAWV,OAPAlY,KAAKoqC,cAAc4J,GAE2B,oBAAnCh0C,KAAKpC,QAAQi3C,oBAAoC,EAAG5rC,EAAK6rC,0BAA0Bd,EAAah0C,KAAKgvC,mBAC9GhvC,KAAKpC,QAAQi3C,kBAAkBxjD,KAAK2O,KAAMg0C,GAG5Ch0C,KAAKgvC,iBAAmBgF,EACjBpzC,QAAQP,QAAQL,KAAKgvC,oBAIhClJ,EAASmJ,kBAAoB,WAC3BjvC,KAAK8pB,WAAL,OAAyB,SAAU/xB,GACjCC,QAAQC,MAAM,4BAA6BF,OAI/C+tC,EAASsE,cAAgB,SAAUpmB,GACjC,IAAIqE,EAAWroB,KAAKsoB,UAChBysB,EAAa,GACjB/wB,EAAO9kB,QAAO,SAAU81C,EAAKC,GAK3B,MAJ6B,kBAAlBA,EAAK3wB,WAAyD,IAAhC0wB,EAAIrxC,QAAQsxC,EAAK3wB,WACxD0wB,EAAIjhD,KAAKkhD,EAAK3wB,UAGT0wB,IACND,GACH,IAAI9wB,GAAiB,EAAGhb,EAAKisC,oBAAoB7sB,EAAU0sB,GAEvD/0C,KAAK8uC,YACP9uC,KAAK+uC,YAAc9qB,EAAe/lB,KAAI,SAAUqmB,GAC9C,IAAIJ,EAAmBH,EAAOruB,QAAO,SAAUoC,GAC7C,OAAOA,EAAIusB,WAAaC,EAAOG,QAE7BxT,EAAUiT,EAAiBjmB,KAAI,SAAUnG,GAC3C,OAAOA,EAAImZ,WACV9O,KAAK,MAER,OAAI8O,EACK,CACLigC,IAAK5sB,EAAOrM,KACZk5B,OAAQ7sB,EAAO6sB,OACfjmC,KAAM,2BAAyD,IAA5BgZ,EAAiBjuB,OAAe,IAAM,IAAM,OAASgb,EACxFnN,KAAM,UACN5N,OAAQ,cAIL,MAGT6J,KAAKuzC,uBAIPvzC,KAAK+nC,WAAWoN,UAAUnxB,EAAQC,GAE9BjkB,KAAK8uC,WAEP9uC,KAAK8uC,UAAUnzB,QADH,IAUhBmqB,EAASwN,iBAAmB,WAC1B,IAAIh1B,EAAY,GAEhB,GAAIte,KAAKsb,SAAU,CACjB,IAAIo3B,GAAiB,EAAGzpC,EAAK0pC,mBAAmB3yC,KAAKsb,UAUrD,OARItb,KAAK8yC,YAAc9yC,KAAK8yC,WAAW56B,OAASw6B,EAAe/9B,IAAIw8B,KAAOnxC,KAAK8yC,WAAW1B,SAAWsB,EAAe/9B,IAAIy8B,QAEtH9yB,EAAU9J,MAAQk+B,EAAe/9B,IACjC2J,EAAU3J,IAAM+9B,EAAel+B,OAE/B8J,EAAYo0B,EAGP,CACLl+B,MAAO8J,EAAU9J,MACjBG,IAAK2J,EAAU3J,IACfxJ,KAAMnL,KAAKsb,SAASnpB,MAAM+P,UAAUwwC,EAAeE,WAAYF,EAAeG,WAIlF,GAAI7yC,KAAK8uC,UAAW,CAClB,IAAIsG,EAAep1C,KAAK8uC,UAAU9sB,eAC9BkxB,EAAelzC,KAAK8uC,UAAUqE,kBAC9B5+B,EAAQ6gC,EAAaC,WACrBC,EAAOF,EAAaG,mBAUxB,OARID,EAAKnE,MAAQ58B,EAAMI,IAAIw8B,KAAOmE,EAAKlE,SAAW78B,EAAMI,IAAIy8B,OAC1D9yB,EAAY/J,GAGZ+J,EAAU9J,MAAQD,EAAMI,IACxB2J,EAAU3J,IAAMJ,EAAMC,OAGjB,CACLA,MAAO,CACL28B,IAAK7yB,EAAU9J,MAAM28B,IAAM,EAC3BC,OAAQ9yB,EAAU9J,MAAM48B,OAAS,GAEnCz8B,IAAK,CACHw8B,IAAK7yB,EAAU3J,IAAIw8B,IAAM,EACzBC,OAAQ9yB,EAAU3J,IAAIy8B,OAAS,GAEjCjmC,KAAM+nC,KAYZpN,EAAS+I,sBAAwB,SAAU5iC,GACjB,oBAAbA,IACTjM,KAAKozC,0BAA2B,EAAGnqC,EAAKgqB,UAAUhnB,EAAUjM,KAAKioB,qBAUrE6d,EAASoL,iBAAmB,SAAUxiC,EAAU8mC,GAC9C,GAAK9mC,GAAa8mC,EAElB,GAAIx1C,KAAKsb,SAAU,CACjB,IAAIs3B,GAAa,EAAG3pC,EAAKwsC,qBAAqBz1C,KAAKsb,SAAU5M,EAASyiC,IAAKziC,EAAS0iC,QAChFyB,GAAW,EAAG5pC,EAAKwsC,qBAAqBz1C,KAAKsb,SAAUk6B,EAAOrE,IAAKqE,EAAOpE,QAE9E,GAAIwB,GAAc,GAAKC,GAAY,EAAG,CACpC,GAAI7yC,KAAKsb,SAASo6B,kBAChB11C,KAAKsb,SAAS8E,QACdpgB,KAAKsb,SAASo6B,kBAAkB9C,EAAYC,QACvC,GAAI7yC,KAAKsb,SAASq6B,gBAAiB,CAExC,IAAIphC,EAAQvU,KAAKsb,SAASq6B,kBAC1BphC,EAAMqhC,UAAS,GACfrhC,EAAMshC,QAAQ,YAAahD,GAC3Bt+B,EAAMuhC,UAAU,YAAalD,GAC7Br+B,EAAMylB,SAGR,IAAI+b,GAAQ/1C,KAAKsb,SAASnpB,MAAMid,MAAM,QAAU,IAAIlZ,OAAS,EACzD0mB,EAAa5c,KAAKsb,SAAS6J,aAAe4wB,EAC1CC,EAAqBtnC,EAASyiC,IAAMv0B,EACxC5c,KAAKsb,SAAS+J,UAAY2wB,EAAqBh2C,KAAKsb,SAASgH,aAAe0zB,EAAqBh2C,KAAKsb,SAASgH,aAAe,EAAI,QAE/H,GAAItiB,KAAK8uC,UAAW,CACzB,IAAImH,EAAS,CACXzhC,MAAO,CACL28B,IAAKziC,EAASyiC,IAAM,EACpBC,OAAQ1iC,EAAS0iC,OAAS,GAE5Bz8B,IAAK,CACHw8B,IAAKqE,EAAOrE,IAAM,EAClBC,OAAQoE,EAAOpE,OAAS,IAG5BpxC,KAAK8uC,UAAUxwB,UAAU43B,SAASD,GAClCj2C,KAAK8uC,UAAUqH,aAAaznC,EAASyiC,IAAM,GAAG,KAYlD,IAAIxqB,EAAiB,CAAC,CACpBt0B,KAAM,OACNs2B,MAAOmd,EACPl4B,KAAM,OACNgb,KAAMA,GACL,CACDv2B,KAAM,OACNs2B,MAAOmd,EACPl4B,KAAM,OACNgb,KAAMA,KAKFwtB,GACC,SAAS94B,EAAyBC,EAAqBzsB,GAE9D,aAEAA,EAAoBkB,EAAEurB,GAGtBzsB,EAAoBU,EAAE+rB,EAAqB,CACzC,eAAkB,WAAa,YAMjC,IAAI84B,EAAwB,CAC1B7hC,MAAO,SAAe3I,EAAOuD,EAAOkU,GAClC,OAAgC,IAAzBlU,EAAMzL,QAAQkI,IAEvByqC,QAAS,SAAiBzqC,EAAOuD,EAAOkU,GACtC,OAAOlU,EAAMzL,QAAQkI,IAAU,IAkb/BgS,EAAc/sB,EAAoB,KAElC80B,EAAe90B,EAAoB,KAWvC,SAAS6sB,EAAkB3nB,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAI7S,IAAI8tC,EAA2B,WAC7B,SAASA,KAPX,SAAyBx4B,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAQ5G2I,CAAgBje,KAAMu2C,GAEtBv2C,KAAKw2C,QAAS,EANlB,IAAsBx4B,EAAa2C,EAAYC,EAgG7C,OAhGoB5C,EAcPu4B,GAdoB51B,EAcP,CAAC,CACzBluB,IAAK,YACLN,MAAO,SAAmBke,GACpBrQ,KAAKw2C,SAILx2C,KAAKqQ,OAASA,IAEZrQ,KAAKqQ,MACPrQ,KAAKqQ,KAAKomC,cAAa,GAIzBz2C,KAAKqQ,KAAOA,EACZrQ,KAAKqQ,KAAKomC,cAAa,IAIzBz2C,KAAK02C,wBAON,CACDjkD,IAAK,cACLN,MAAO,WACL,IAAI6N,KAAKw2C,OAAT,CAIA,IAAIr4B,EAAKne,KAELA,KAAKqQ,OACPrQ,KAAK02C,qBAKL12C,KAAK22C,iBAAmBjlC,YAAW,WACjCyM,EAAG9N,KAAKomC,cAAa,GACrBt4B,EAAG9N,UAAO5Q,EACV0e,EAAGw4B,sBAAmBl3C,IACrB,OAQN,CACDhN,IAAK,qBACLN,MAAO,WACD6N,KAAK22C,mBACPxjB,aAAanzB,KAAK22C,kBAClB32C,KAAK22C,sBAAmBl3C,KAQ3B,CACDhN,IAAK,OACLN,MAAO,WACL6N,KAAKw2C,QAAS,IAMf,CACD/jD,IAAK,SACLN,MAAO,WACL6N,KAAKw2C,QAAS,OA5F0D74B,EAAkBK,EAAYlrB,UAAW6tB,GAAiBC,GAAajD,EAAkBK,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IAgGrP4+C,EA9FsB,GAiG3B3Q,EAAO90C,EAAoB,KAE3B+0C,EAAgB/0C,EAAoB,IAEpCw5B,EAAex5B,EAAoB,KAEnC8lD,EAAc9lD,EAAoB,KAClC+lD,EAAmC/lD,EAAoB6B,EAAEikD,GAEzDla,EAAuB5rC,EAAoB,KAE3CmY,EAAOnY,EAAoB,KA+Z3BgmD,EAAmBhmD,EAAoB,KAEvCimD,EAAwBjmD,EAAoB,KAE5Cs0C,EAAYt0C,EAAoB,KAIpC,SAASkmD,EAAmBp3C,GAAO,OAMnC,SAA4BA,GAAO,GAAIhM,MAAMW,QAAQqL,GAAM,OAAOD,EAAkBC,GAN1Cq3C,CAAmBr3C,IAI7D,SAA0Bs3C,GAAQ,GAAsB,qBAAXjlD,QAAmD,MAAzBilD,EAAKjlD,OAAO85C,WAA2C,MAAtBmL,EAAK,cAAuB,OAAOtjD,MAAMuN,KAAK+1C,GAJjFC,CAAiBv3C,IAAQqB,EAA4BrB,IAE1H,WAAgC,MAAM,IAAI0V,UAAU,wIAF8E8hC,GAQlI,SAASC,EAAez3C,EAAK1O,GAAK,OAMlC,SAAyB0O,GAAO,GAAIhM,MAAMW,QAAQqL,GAAM,OAAOA,EANtB03C,CAAgB13C,IAIzD,SAA+BA,EAAK1O,GAAK,IAAIgU,EAAY,MAAPtF,EAAc,KAAyB,qBAAX3N,QAA0B2N,EAAI3N,OAAO85C,WAAansC,EAAI,cAAe,GAAU,MAANsF,EAAJ,CAAwB,IAAkDqyC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKzyC,EAAKA,EAAG7T,KAAKuO,KAAQ83C,GAAMH,EAAKryC,EAAG9F,QAAQuB,QAAoB82C,EAAK1jD,KAAKwjD,EAAGplD,QAAYjB,GAAKumD,EAAKvhD,SAAWhF,GAA3DwmD,GAAK,IAAoE,MAAO3/C,GAAO4/C,GAAK,EAAMH,EAAKz/C,EAApK,QAAqL,IAAW2/C,GAAsB,MAAhBxyC,EAAE,QAAoBA,EAAE,SAAzC,QAAmE,GAAIyyC,EAAI,MAAMH,GAAQ,OAAOC,GAJzbG,CAAsBh4C,EAAK1O,IAAM+P,EAA4BrB,EAAK1O,IAEnI,WAA8B,MAAM,IAAIokB,UAAU,6IAFuFuiC,GAQzI,SAASC,EAA2BnmD,EAAGomD,GAAkB,IAAIC,EAAuB,qBAAX/lD,QAA0BN,EAAEM,OAAO85C,WAAap6C,EAAE,cAAe,IAAKqmD,EAAI,CAAE,GAAIpkD,MAAMW,QAAQ5C,KAAOqmD,EAAK/2C,EAA4BtP,KAAOomD,GAAkBpmD,GAAyB,kBAAbA,EAAEuE,OAAqB,CAAM8hD,IAAIrmD,EAAIqmD,GAAI,IAAI9mD,EAAI,EAAO+mD,EAAI,aAAiB,MAAO,CAAEhlD,EAAGglD,EAAGtlD,EAAG,WAAe,OAAIzB,GAAKS,EAAEuE,OAAe,CAAEyK,MAAM,GAAe,CAAEA,MAAM,EAAOxO,MAAOR,EAAET,OAAW+O,EAAG,SAAWi4C,GAAO,MAAMA,GAAQ3lB,EAAG0lB,GAAO,MAAM,IAAI3iC,UAAU,yIAA4I,IAA6Cvd,EAAzCogD,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEnlD,EAAG,WAAe+kD,EAAKA,EAAG3mD,KAAKM,IAAOgB,EAAG,WAAe,IAAI0lD,EAAOL,EAAG54C,OAAsC,OAA9B+4C,EAAmBE,EAAK13C,KAAa03C,GAASp4C,EAAG,SAAWq4C,GAAOF,GAAS,EAAMrgD,EAAMugD,GAAQ/lB,EAAG,WAAe,IAAW4lB,GAAoC,MAAhBH,EAAE,QAAoBA,EAAE,SAAvD,QAAiF,GAAII,EAAQ,MAAMrgD,KAEj+B,SAASkJ,EAA4BtP,EAAGuP,GAAU,GAAKvP,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOgO,EAAkBhO,EAAGuP,GAAS,IAAIvO,EAAIf,OAAOkB,UAAUmB,SAAS5C,KAAKM,GAAGqC,MAAM,GAAI,GAAiE,MAAnD,WAANrB,GAAkBhB,EAAE+N,cAAa/M,EAAIhB,EAAE+N,YAAYjO,MAAgB,QAANkB,GAAqB,QAANA,EAAoBiB,MAAMuN,KAAKxP,GAAc,cAANgB,GAAqB,2CAA2CyO,KAAKzO,GAAWgN,EAAkBhO,EAAGuP,QAAzG,GAE7S,SAASvB,EAAkBC,EAAKC,IAAkB,MAAPA,GAAeA,EAAMD,EAAI1J,UAAQ2J,EAAMD,EAAI1J,QAAQ,IAAK,IAAIhF,EAAI,EAAG4O,EAAO,IAAIlM,MAAMiM,GAAM3O,EAAI2O,EAAK3O,IAAO4O,EAAK5O,GAAK0O,EAAI1O,GAAM,OAAO4O,EAEhL,SAASgsC,EAAQr0C,GAAkC,OAAOq0C,EAAU,mBAAqB75C,QAAU,iBAAmBA,OAAO85C,SAAW,SAAUt0C,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxF,QAAUwF,EAAIiI,cAAgBzN,QAAUwF,IAAQxF,OAAOa,UAAY,gBAAkB2E,IAAgBA,GAIzU,SAAS8gD,EAAsBviD,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IA0BjT,IAAI+vC,EAAoB,WACtB,SAASA,EAAKv8B,EAAQw8B,IA7BxB,SAA6B16B,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCA8BhHojC,CAAoB14C,KAAMw4C,GAG1Bx4C,KAAKic,OAASA,EACdjc,KAAKke,IAAM,GACXle,KAAK24C,UAAW,EAEZF,GAAUA,aAAkB7mD,QAC9BoO,KAAK44C,SAASH,EAAOtU,MAAOsU,EAAOI,eAE/B,UAAWJ,GACbz4C,KAAKu6B,SAASke,EAAOtmD,MAAOsmD,EAAO10C,MAGjC,kBAAmB00C,GACrBz4C,KAAK84C,iBAAiBL,EAAOM,iBAG/B/4C,KAAK44C,SAAS,IACd54C,KAAKu6B,SAAS,OAGhBv6B,KAAKg5C,yBAA0B,EAAG/vC,EAAKgqB,UAAUjzB,KAAKi5C,eAAevmD,KAAKsN,MAAOw4C,EAAK1lD,UAAUm1B,mBAChGjoB,KAAKk5C,yBAA0B,EAAGjwC,EAAKgqB,UAAUjzB,KAAKm5C,eAAezmD,KAAKsN,MAAOw4C,EAAK1lD,UAAUm1B,mBAEhGjoB,KAAKo5C,cAAgBp5C,KAAKq5C,sBAnD9B,IAA0Br7B,EAAa2C,EAAYC,EA65IjD,OA75IwB5C,EAsDPw6B,GAtDoB73B,EAsDd,CAAC,CACtBluB,IAAK,sBACLN,MAAO,WACL,OAAO6N,KAAKic,QAAUjc,KAAKic,OAAOre,SAAWoC,KAAKic,OAAOre,QAAQ07C,iBAAmBt5C,KAAKic,OAAOre,QAAQ07C,iBAAmBC,IAO5H,CACD9mD,IAAK,qBACLN,MAAO,WAML,GALA6N,KAAK0nB,SAAW,CACdyc,OAAO,EACPhyC,OAAO,GAGL6N,KAAKic,SACPjc,KAAK0nB,SAASyc,MAAqC,SAA7BnkC,KAAKic,OAAOre,QAAQvL,KAC1C2N,KAAK0nB,SAASv1B,MAAqC,SAA7B6N,KAAKic,OAAOre,QAAQvL,MAER,SAA7B2N,KAAKic,OAAOre,QAAQvL,MAAgD,SAA7B2N,KAAKic,OAAOre,QAAQvL,OAA8D,oBAAnC2N,KAAKic,OAAOre,QAAQ+pB,YAA2B,CACxI,IAAImT,EAAW96B,KAAK86B,SAASpoC,KAAKsN,MAC9B0nB,EAAW1nB,KAAKic,OAAOre,QAAQ+pB,WAAW,CAC5Cwc,MAAOnkC,KAAKmkC,MAEZ,YACE,OAAOrJ,KAGTpW,KAAM1kB,KAAKw5C,YAGW,mBAAb9xB,GACT1nB,KAAK0nB,SAASyc,MAAQzc,EACtB1nB,KAAK0nB,SAASv1B,MAAQu1B,GACS,WAAtBokB,EAAQpkB,IAAuC,OAAbA,GACb,mBAAnBA,EAASyc,QAAqBnkC,KAAK0nB,SAASyc,MAAQzc,EAASyc,OAC1C,mBAAnBzc,EAASv1B,QAAqB6N,KAAK0nB,SAASv1B,MAAQu1B,EAASv1B,SAExE6F,QAAQC,MAAM,gDAAiD,gBAAiByvB,EAAU,IAAK,2EAC/F1nB,KAAK0nB,SAASyc,OAAQ,EACtBnkC,KAAK0nB,SAASv1B,OAAQ,MAW7B,CACDM,IAAK,UACLN,MAAO,WAIL,IAHA,IAAIke,EAAOrQ,KACP0kB,EAAO,GAEJrU,GAAM,CACX,IAAI8zB,EAAQ9zB,EAAKmY,eAEH/oB,IAAV0kC,GACFzf,EAAK+0B,QAAQtV,GAGf9zB,EAAOA,EAAKtD,OAGd,OAAO2X,IAOR,CACDjyB,IAAK,kBACLN,MAAO,WAIL,IAHA,IAAIke,EAAOrQ,KACP05C,EAAe,GAEZrpC,GACDA,EAAKtD,QACP2sC,EAAaD,QAAQppC,EAAKspC,YAG5BtpC,EAAOA,EAAKtD,OAGd,OAAO2sC,IAOR,CACDjnD,IAAK,UACLN,MAAO,WACL,OAAQ6N,KAAK+M,OACU,UAArB/M,KAAK+M,OAAOhJ,KAAmB/D,KAAKmkC,MAAQnkC,KAAK0D,WAD7BjE,IAQvB,CACDhN,IAAK,iBACLN,MAAO,SAAwBuyB,GAC7B,GAAKA,EAAL,CAIA,GAAoB,IAAhBA,EAAKxuB,OACP,OAAO8J,KAGT,GAAI0kB,EAAKxuB,QAAU8J,KAAK45C,QAAU55C,KAAK45C,OAAO1jD,OAC5C,IAAK,IAAIhF,EAAI,EAAGA,EAAI8O,KAAK45C,OAAO1jD,SAAUhF,EACxC,GAAI,GAAKwzB,EAAK,KAAO,GAAK1kB,KAAK45C,OAAO1oD,GAAGs3B,UACvC,OAAOxoB,KAAK45C,OAAO1oD,GAAG2oD,eAAen1B,EAAK1wB,MAAM,OAYvD,CACDvB,IAAK,yBACLN,MAAO,SAAgCunD,GACrC,GAAKA,EAAL,CAMA,IAFA,IAAIrpC,EAAOrQ,KAEF9O,EAAI,EAAGA,EAAIwoD,EAAaxjD,QAAUma,EAAMnf,IAAK,CACpD,IAAI4oD,EAAaJ,EAAaxoD,GAC9Bmf,EAAOA,EAAKupC,OAAOE,GAGrB,OAAOzpC,KASR,CACD5d,IAAK,YACLN,MAAO,WACL,MAAO,CACLA,MAAO6N,KAAK86B,WACZpW,KAAM1kB,KAAKw5C,aASd,CACD/mD,IAAK,WACLN,MAAO,SAAkB4nD,GAyBvB,IAxBA,IAAIr1B,GAAO,EAAGzb,EAAKm7B,WAAW2V,GAC1B1pC,EAAOrQ,KAEPyjC,EAAQ,WACV,IAAIxZ,EAAOvF,EAAK0T,QAEhB,GAAoB,kBAATnO,EAAmB,CAC5B,GAAkB,UAAd5Z,EAAKtM,KACP,MAAM,IAAInI,MAAM,kCAAoCquB,EAAO,sBAG7D5Z,EAAOA,EAAKupC,OAAO3vB,OACd,CAEL,GAAkB,WAAd5Z,EAAKtM,KACP,MAAM,IAAInI,MAAM,yBAA2BquB,EAAO,uBAGpD5Z,EAAOA,EAAKupC,OAAOjkD,QAAO,SAAUqkD,GAClC,OAAOA,EAAM7V,QAAUla,KACtB,KAIA5Z,GAAQqU,EAAKxuB,OAAS,GAC3ButC,IAGF,OAAOpzB,IAQR,CACD5d,IAAK,cACLN,MAAO,WAIL,IAHA,IAAI8nD,EAAU,GACVltC,EAAS/M,KAAK+M,OAEXA,GACLktC,EAAQR,QAAQ1sC,GAChBA,EAASA,EAAOA,OAGlB,OAAOktC,IAWR,CACDxnD,IAAK,WACLN,MAAO,SAAkB8F,EAAO+hD,GAC9Bh6C,KAAK/H,MAAQA,EACb+H,KAAKk6C,WAAaF,EAEdh6C,KAAKke,KAAOle,KAAKke,IAAI4kB,IACvB9iC,KAAKm6C,gBAOR,CACD1nD,IAAK,cACLN,MAAO,WACL,IAAI+xB,EAAQlkB,KAER/H,EAAQ+H,KAAKo6C,YAAcp6C,KAAKq6C,YAAcr6C,KAAK/H,MACnDqiD,EAAUt6C,KAAKke,IAAIo8B,QAEvB,GAAIriD,GAAS+H,KAAKke,KAAOle,KAAKke,IAAI4kB,GAAI,EACpC,EAAG75B,EAAKwZ,cAAcziB,KAAKke,IAAI4kB,GAAI,+BAE9BwX,IACHA,EAAU/vC,SAASiJ,cAAc,MACjCxT,KAAKke,IAAIo8B,QAAUA,EACnBt6C,KAAKke,IAAIq8B,QAAQp5B,WAAW5N,YAAY+mC,IAG1C,IAAIn7B,EAAS5U,SAASiJ,cAAc,UACpC2L,EAAOpb,KAAO,SACdob,EAAOrV,UAAY,4CAEnB,IAAIoY,EAAU,WACRgC,EAAMhG,IAAIs8B,aACZt2B,EAAMhG,IAAIs8B,YAAYt4B,WAKtBya,EAAY,kBACPzY,EAAMhG,IAAIs8B,aAGfC,EAAc,SAAqB7d,GACrC,IAAI5b,EAAQkD,EAAMjI,OAAO+E,MACzBkD,EAAMhG,IAAIs8B,aAAc,EAAG9d,EAA+Cjb,GAAGtC,EAAQ+E,EAAMjI,OAAOy+B,iBAAkB/d,EAAWC,GAC/H,IAEI+d,EAAax7B,EAAOkC,wBAEpBnG,EADY8F,EAAMK,wBACG3F,MAAQi/B,EAAW5vB,EAAI6vB,IAAsB,mBAAqB,kBACvFC,EAAUtwC,SAASiJ,cAAc,OACrCqnC,EAAQ/wC,UAAY,sBAAwBoR,EAC5C2/B,EAAQtnC,YAAYhJ,SAASuV,eAAe7nB,EAAMiZ,UAElDgT,EAAMhG,IAAIs8B,YAAYjnC,YAAYsnC,IAGpC17B,EAAOie,YAAc,WACdlZ,EAAMhG,IAAIs8B,aACbC,GAAY,IAIhBt7B,EAAO27B,QAAU,WACf54B,IACAu4B,GAAY,IAGdt7B,EAAO2xB,OAAS,WACd5uB,KAKF,IAAI83B,EAAQh6C,KAAKk6C,WAcjB,IAZIF,IACF76B,EAAOG,QAAU,WACf06B,EAAMe,cAAc3kD,SAAQ,SAAU2W,GACpCA,EAAOiuC,QAAO,MAEhBhB,EAAMiB,UAAS,WACbjB,EAAM55B,aAMLk6B,EAAQ1mB,YACb0mB,EAAQn4B,YAAYm4B,EAAQ1mB,YAG9B0mB,EAAQ/mC,YAAY4L,QAEhBnf,KAAKke,IAAI4kB,KACX,EAAG75B,EAAKoZ,iBAAiBriB,KAAKke,IAAI4kB,GAAI,+BAGpCwX,IACFt6C,KAAKke,IAAIo8B,QAAQn5B,WAAWgB,YAAYniB,KAAKke,IAAIo8B,gBAC1Ct6C,KAAKke,IAAIo8B,WAUrB,CACD7nD,IAAK,WACLN,MAAO,WACL,GAAI6N,KAAK+M,OAAQ,CACf,IAAIrJ,EAAQ1D,KAAK+M,OAAO6sC,OAAOj2C,QAAQ3D,MACvC,OAAkB,IAAX0D,EAAeA,EAAQ,KAE9B,OAAQ,IAQX,CACDjR,IAAK,YACLN,MAAO,SAAmB4a,GACxB/M,KAAK+M,OAASA,IAQf,CACDta,IAAK,WACLN,MAAO,SAAkBgyC,EAAO0U,GAC9B74C,KAAKmkC,MAAQA,EACbnkC,KAAKk7C,cAAgB/W,EACrBnkC,KAAK64C,eAAkC,IAAlBA,IAOtB,CACDpmD,IAAK,WACLN,MAAO,WAKL,YAJmBsN,IAAfO,KAAKmkC,OACPnkC,KAAKm7C,eAGAn7C,KAAKmkC,QASb,CACD1xC,IAAK,WACLN,MAAO,SAAkBA,EAAO4R,GAC9B,IAAIq3C,EAAYpB,EACZ9oD,EAAG2d,EAEHwsC,EAAiBr7C,KAAK45C,OAG1B,GAFA55C,KAAK+D,KAAO/D,KAAKs7C,SAASnpD,GAEtB4R,GAAQA,IAAS/D,KAAK+D,KAAM,CAC9B,GAAa,WAATA,GAAmC,SAAd/D,KAAK+D,KAG5B,MAAM,IAAInI,MAAM,6CAAoDoE,KAAK+D,KAAO,2BAA6BA,EAAO,KAFpH/D,KAAK+D,KAAOA,EAMhB,GAAkB,UAAd/D,KAAK+D,KAAkB,CAMzB,IAJK/D,KAAK45C,SACR55C,KAAK45C,OAAS,IAGX1oD,EAAI,EAAGA,EAAIiB,EAAM+D,OAAQhF,IAG5B,QAAmBuO,KAFnB27C,EAAajpD,EAAMjB,OAEekqD,aAAsB1nD,UACtD,GAAIxC,EAAI8O,KAAK45C,OAAO1jD,QAElB8jD,EAAQh6C,KAAK45C,OAAO1oD,IACd2nD,eAAgB,EACtBmB,EAAMt2C,MAAQxS,EACd8oD,EAAMzf,SAAS6gB,OACV,CAELpB,EAAQ,IAAIxB,EAAKx4C,KAAKic,OAAQ,CAC5B9pB,MAAOipD,IAET,IAAIG,EAAUrqD,EAAI8O,KAAKq5C,sBACvBr5C,KAAKuT,YAAYymC,EAAOuB,GAlChB,GAyCd,IAAK1sC,EAAI7O,KAAK45C,OAAO1jD,OAAQ2Y,GAAK1c,EAAM+D,OAAQ2Y,IAC9C7O,KAAKmiB,YAAYniB,KAAK45C,OAAO/qC,IA1CjB,QA4CT,GAAkB,WAAd7O,KAAK+D,KAAmB,CAQjC,IANK/D,KAAK45C,SACR55C,KAAK45C,OAAS,IAKX/qC,EAAI7O,KAAK45C,OAAO1jD,OAAS,EAAG2Y,GAAK,EAAGA,IAClC2sC,EAAoBrpD,EAAO6N,KAAK45C,OAAO/qC,GAAGs1B,QAC7CnkC,KAAKmiB,YAAYniB,KAAK45C,OAAO/qC,IAtDnB,GA4Dd,IAAK,IAAI4sC,KAFTvqD,EAAI,EAEmBiB,EACrB,GAAIqpD,EAAoBrpD,EAAOspD,GAAa,CAG1C,QAAmBh8C,KAFnB27C,EAAajpD,EAAMspD,OAEeL,aAAsB1nD,UAAW,CACjE,IAAIgoD,EAAS17C,KAAK27C,oBAAoBF,GAEtC,GAAIC,EAEFA,EAAO9C,SAAS6C,GAAY,GAE5BC,EAAOnhB,SAAS6gB,OACX,CAEL,IAAIQ,EAAW,IAAIpD,EAAKx4C,KAAKic,OAAQ,CACnCkoB,MAAOsX,EACPtpD,MAAOipD,IAGLS,EAAW3qD,EAAI8O,KAAKq5C,sBAExBr5C,KAAKuT,YAAYqoC,EAAUC,GAjFrB,IAqFV3qD,IAIJ8O,KAAK7N,MAAQ,IAE8B,IAAvC6N,KAAKic,OAAOre,QAAQyrC,gBAEtBrpC,KAAKg4B,KAAK,GAAI,OADM,QAKtBh4B,KAAK87C,oBACE97C,KAAK+7C,cACL/7C,KAAK8/B,gBACL9/B,KAAK24C,gBACL34C,KAAK45C,OACZ55C,KAAK7N,MAAQA,EAKXyB,MAAMW,QAAQ8mD,KAAoBznD,MAAMW,QAAQyL,KAAK45C,SACvD55C,KAAKg8C,cAGPh8C,KAAKi8C,UAAU,CACbC,eAAe,IAEjBl8C,KAAKm8C,cAAgBn8C,KAAK7N,QAQ3B,CACDM,IAAK,mBACLN,MAAO,SAA0B4mD,GAC/B,IAAIqC,EAAYpB,EAAOuB,EACnBrqD,EAAG2d,EAEHwsC,EAAiBr7C,KAAK45C,OAG1B,GAFA55C,KAAK+D,KAAOg1C,EAAch1C,KAEC,UAAvBg1C,EAAch1C,KAAkB,CAMlC,IAJK/D,KAAK45C,SACR55C,KAAK45C,OAAS,IAGX1oD,EAAI,EAAGA,EAAI6nD,EAAca,OAAO1jD,OAAQhF,SAGxBuO,KAFnB27C,EAAarC,EAAca,OAAO1oD,KAEAkqD,aAAsB1nD,WAClDxC,EAAI8O,KAAK45C,OAAO1jD,SAElB8jD,EAAQh6C,KAAK45C,OAAO1oD,IACd2nD,eAAgB,EACtBmB,EAAMt2C,MAAQxS,EACd8oD,EAAMlB,iBAAiBsC,KAGvBpB,EAAQ,IAAIxB,EAAKx4C,KAAKic,OAAQ,CAC5B88B,cAAeqC,IAEjBG,EAAUrqD,EAAI8O,KAAKq5C,sBACnBr5C,KAAKuT,YAAYymC,EAAOuB,GA1Bb,KAiCjB,IAAK1sC,EAAI7O,KAAK45C,OAAO1jD,OAAQ2Y,GAAKkqC,EAAca,OAAO1jD,OAAQ2Y,IAC7D7O,KAAKmiB,YAAYniB,KAAK45C,OAAO/qC,IAlCd,QAoCZ,GAA2B,WAAvBkqC,EAAch1C,KAAmB,CAM1C,IAJK/D,KAAK45C,SACR55C,KAAK45C,OAAS,IAGX1oD,EAAI,EAAGA,EAAI6nD,EAAca,OAAO1jD,OAAQhF,SAGxBuO,KAFnB27C,EAAarC,EAAca,OAAO1oD,KAEAkqD,aAAsB1nD,WAClDxC,EAAI8O,KAAK45C,OAAO1jD,eAElB8jD,EAAQh6C,KAAK45C,OAAO1oD,IACPwS,MACbs2C,EAAMpB,SAASwC,EAAWjX,OAAO,GACjC6V,EAAMlB,iBAAiBsC,EAAWjpD,SAGlC6nD,EAAQ,IAAIxB,EAAKx4C,KAAKic,OAAQ,CAC5BkoB,MAAOiX,EAAWjX,MAClB4U,cAAeqC,EAAWjpD,QAE5BopD,EAAUrqD,EAAI8O,KAAKq5C,sBACnBr5C,KAAKuT,YAAYymC,EAAOuB,GA3Db,KAkEjB,IAAK1sC,EAAI7O,KAAK45C,OAAO1jD,OAAQ2Y,GAAKkqC,EAAca,OAAO1jD,OAAQ2Y,IAC7D7O,KAAKmiB,YAAYniB,KAAK45C,OAAO/qC,IAnEd,QAuEjB7O,KAAK87C,oBACE97C,KAAK+7C,cACL/7C,KAAK8/B,gBACL9/B,KAAK24C,gBACL34C,KAAK45C,OACZ55C,KAAK7N,MAAQ4mD,EAAc5mD,MAKzByB,MAAMW,QAAQ8mD,KAAoBznD,MAAMW,QAAQyL,KAAK45C,SACvD55C,KAAKg8C,cAGPh8C,KAAKi8C,UAAU,CACbC,eAAe,IAEjBl8C,KAAKm8C,cAAgBn8C,KAAK7N,QAM3B,CACDM,IAAK,cACLN,MAAO,WACL,GAAI6N,KAAKke,KAAOle,KAAKke,IAAI4kB,IAAM9iC,KAAKke,IAAI4kB,GAAG3hB,WAAY,CACrD,IAAIi7B,EAAYp8C,KAAKq8C,iBAErBr8C,KAAKs8C,WAELt8C,KAAKu8C,aAAaH,QAElBp8C,KAAKs8C,aAQR,CACD7pD,IAAK,WACLN,MAAO,WACL,GAAkB,UAAd6N,KAAK+D,KAAkB,CACzB,IAAInE,EAAM,GAIV,OAHAI,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5Bp6C,EAAI7L,KAAKimD,EAAMlf,eAEVl7B,EACF,GAAkB,WAAdI,KAAK+D,KAAmB,CACjC,IAAItM,EAAM,GAIV,OAHAuI,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BviD,EAAIuiD,EAAMwC,YAAcxC,EAAMlf,cAEzBrjC,EAMP,YAJmBgI,IAAfO,KAAK7N,OACP6N,KAAKy8C,eAGAz8C,KAAK7N,QAQf,CACDM,IAAK,mBACLN,MAAO,WACL,MAAkB,UAAd6N,KAAK+D,KACA,CACLA,KAAM/D,KAAK+D,KACX61C,OAAQ55C,KAAK45C,OAAO17C,KAAI,SAAU87C,GAChC,OAAOA,EAAM0C,uBAGM,WAAd18C,KAAK+D,KACP,CACLA,KAAM/D,KAAK+D,KACX61C,OAAQ55C,KAAK45C,OAAO17C,KAAI,SAAU87C,GAChC,MAAO,CACL7V,MAAO6V,EAAMwC,WACbrqD,MAAO6nD,EAAM0C,8BAKAj9C,IAAfO,KAAK7N,OACP6N,KAAKy8C,eAGA,CACL14C,KAAM/D,KAAK+D,KACX5R,MAAO6N,KAAK7N,UASjB,CACDM,IAAK,WACLN,MAAO,WACL,OAAO6N,KAAK+M,OAAS/M,KAAK+M,OAAO4vC,WAAa,EAAI,IAOnD,CACDlqD,IAAK,cACLN,MAAO,WACL,IAAIuyB,EAAO1kB,KAAK+M,OAAS/M,KAAK+M,OAAO6vC,cAAgB,GAErD,OADAl4B,EAAK3wB,KAAKiM,MACH0kB,IASR,CACDjyB,IAAK,QACLN,MAAO,WACL,IAAI0L,EAAQ,IAAI26C,EAAKx4C,KAAKic,QAY1B,GAXApe,EAAMkG,KAAO/D,KAAK+D,KAClBlG,EAAMsmC,MAAQnkC,KAAKmkC,MACnBtmC,EAAMg/C,eAAiB78C,KAAK68C,eAC5Bh/C,EAAMg7C,cAAgB74C,KAAK64C,cAC3Bh7C,EAAMq9C,cAAgBl7C,KAAKk7C,cAC3Br9C,EAAM1L,MAAQ6N,KAAK7N,MACnB0L,EAAMi/C,eAAiB98C,KAAK88C,eAC5Bj/C,EAAMs+C,cAAgBn8C,KAAKm8C,cAC3Bt+C,EAAM86C,SAAW34C,KAAK24C,SACtB96C,EAAMu7C,cAAgBp5C,KAAKo5C,cAEvBp5C,KAAK45C,OAAQ,CAEf,IAAImD,EAAc,GAClB/8C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5B,IAAIgD,EAAahD,EAAMn8C,QACvBm/C,EAAWC,UAAUp/C,GACrBk/C,EAAYhpD,KAAKipD,MAEnBn/C,EAAM+7C,OAASmD,OAGfl/C,EAAM+7C,YAASn6C,EAGjB,OAAO5B,IAQR,CACDpL,IAAK,SACLN,MAAO,SAAgB+qD,GAChBl9C,KAAK45C,SAKV55C,KAAK24C,UAAW,EAEZ34C,KAAKke,IAAI88B,SACXh7C,KAAKke,IAAI88B,OAAOlxC,UAAY,yCAG9B9J,KAAKm9C,cAEW,IAAZD,GACFl9C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMgB,OAAOkC,MAKjBl9C,KAAKi8C,UAAU,CACbiB,SAAS,OASZ,CACDzqD,IAAK,WACLN,MAAO,SAAkB+qD,GAClBl9C,KAAK45C,SAIV55C,KAAK87C,cAEW,IAAZoB,GACFl9C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMpE,SAASsH,MAKfl9C,KAAKke,IAAI88B,SACXh7C,KAAKke,IAAI88B,OAAOlxC,UAAY,0CAG9B9J,KAAK24C,UAAW,EAEhB34C,KAAKi8C,UAAU,CACbiB,SAAS,OAOZ,CACDzqD,IAAK,aACLN,MAAO,WAGL,GAFa6N,KAAK45C,QAMb55C,KAAK24C,SAAV,CAIA,IACIyE,EADAta,EAAK9iC,KAAKke,IAAI4kB,GAEd1e,EAAQ0e,EAAKA,EAAG3hB,gBAAa1hB,EAEjC,GAAI2kB,EAAO,CAET,IAAI23B,EAAS/7C,KAAKq9C,eAEbtB,EAAO56B,cACVi8B,EAASta,EAAGwa,aAGVl5B,EAAM7Y,aAAawwC,EAAQqB,GAE3Bh5B,EAAM7Q,YAAYwoC,IAKtB,IAAIwB,EAAOloD,KAAK0f,IAAI/U,KAAK45C,OAAO1jD,OAAQ8J,KAAKo5C,eAC7CgE,EAASp9C,KAAKw9C,aAEd,IAAK,IAAItsD,EAAI,EAAGA,EAAIqsD,EAAMrsD,IAAK,CAC7B,IAAI8oD,EAAQh6C,KAAK45C,OAAO1oD,GAEnB8oD,EAAMyD,SAASt8B,YAClBiD,EAAM7Y,aAAayuC,EAAMyD,SAAUL,GAGrCpD,EAAMmD,aAIR,IAAIrd,EAAW9/B,KAAK09C,iBACpBN,EAASp9C,KAAKw9C,aAET1d,EAAS3e,YACZiD,EAAM7Y,aAAau0B,EAAUsd,GAG/Bp9C,KAAK8/B,SAASmc,gBAGjB,CACDxpD,IAAK,aACLN,MAAO,WACL,OAAI6N,KAAK8/B,UAAY9/B,KAAK8/B,SAAS2d,SAASt8B,WACnCnhB,KAAK8/B,SAAS2d,SAGnBz9C,KAAK+7C,QAAU/7C,KAAK+7C,OAAO0B,SAASt8B,WAC/BnhB,KAAK+7C,OAAO0B,cADrB,IASD,CACDhrD,IAAK,OACLN,MAAO,SAAcyL,GACnB,IAAIklC,EAAK9iC,KAAKke,IAAI4kB,GACd1e,EAAQ0e,EAAKA,EAAG3hB,gBAAa1hB,EAE7B2kB,GACFA,EAAMjC,YAAY2gB,GAGhB9iC,KAAKke,IAAIs8B,aACXx6C,KAAKke,IAAIs8B,YAAYt4B,UAGvBliB,KAAK87C,WAAWl+C,KAOjB,CACDnL,IAAK,aACLN,MAAO,SAAoByL,GAGzB,GAFaoC,KAAK45C,QAMb55C,KAAK24C,SAAV,CAKA,IAAIoD,EAAS/7C,KAAKq9C,eAEdtB,EAAO56B,YACT46B,EAAO56B,WAAWgB,YAAY45B,GAIhC/7C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMv6B,UAGR,IAAIqgB,EAAW9/B,KAAK09C,iBAEhB5d,EAAS3e,YACX2e,EAAS3e,WAAWgB,YAAY2d,GAI7BliC,IAAWA,EAAQ+/C,qBACtB39C,KAAKo5C,cAAgBp5C,KAAKq5C,0BAO7B,CACD5mD,IAAK,sBACLN,MAAO,WACL,GAAI6N,KAAKke,IAAIimB,OAASnkC,KAAKic,QAAUjc,KAAKic,OAAOre,SAAsD,oBAApCoC,KAAKic,OAAOre,QAAQggD,aAA8B59C,KAAKke,IAAIuM,KAAM,EAClI,EAAGxhB,EAAK40C,qBAAqB79C,KAAKke,IAAIuM,MACtC,IAAIqQ,EAAW96B,KAAK86B,SAASpoC,KAAKsN,MAC9B89C,EAAa99C,KAAKic,OAAOre,QAAQggD,YAAY,CAC/Cl5B,KAAM1kB,KAAKw5C,UACXrV,MAAOnkC,KAAKmkC,MAEZ,YACE,OAAOrJ,QAGL,IACN,EAAG7xB,EAAKwZ,cAAcziB,KAAKke,IAAIuM,KAAM,qBAAuBqzB,MAG/D,CACDrrD,IAAK,qCACLN,MAAO,WAGL,GAFA6N,KAAK+9C,sBAEDnqD,MAAMW,QAAQyL,KAAK45C,QACrB,IAAK,IAAI1oD,EAAI,EAAGA,EAAI8O,KAAK45C,OAAO1jD,OAAQhF,IACtC8O,KAAK45C,OAAO1oD,GAAG8sD,uCAQpB,CACDvrD,IAAK,WACLN,MAAO,WAGL,IAFA,IAAIkd,EAAcrP,KAAK+M,OAEhBsC,GACAA,EAAYspC,UACftpC,EAAY2rC,SAGd3rC,EAAcA,EAAYtC,SAa7B,CACDta,IAAK,cACLN,MAAO,SAAqBke,EAAMkrC,EAASU,GACzC,GAAIj8C,KAAKi+C,aAAc,CAgBrB,GAdA5tC,EAAK4sC,UAAUj9C,MACfqQ,EAAKwoC,cAA8B,WAAd74C,KAAK+D,KAER,UAAd/D,KAAK+D,OACPsM,EAAK3M,MAAQ1D,KAAK45C,OAAO1jD,QAGT,WAAd8J,KAAK+D,WAAoCtE,IAAf4Q,EAAK8zB,OAEjC9zB,EAAKuoC,SAAS,IAGhB54C,KAAK45C,OAAO7lD,KAAKsc,GAEbrQ,KAAK24C,WAAwB,IAAZ4C,EAAmB,CAEtC,IAAI2C,EAAQ7tC,EAAKotC,SAEbL,EAASp9C,KAAKw9C,aAEdp5B,EAAQg5B,EAASA,EAAOj8B,gBAAa1hB,EAErC29C,GAAUh5B,GACZA,EAAM7Y,aAAa2yC,EAAOd,GAG5B/sC,EAAK8sC,aACLn9C,KAAKo5C,iBAGW,IAAd6C,IACFj8C,KAAKi8C,UAAU,CACbC,eAAe,IAEjB7rC,EAAK4rC,UAAU,CACbiB,SAAS,QAehB,CACDzqD,IAAK,aACLN,MAAO,SAAoBke,EAAM8tC,EAAYlC,GAC3C,GAAIj8C,KAAKi+C,aAAc,CAGrB,IACIG,EADA/5B,EAAQrkB,KAAKke,IAAI4kB,GAAK9iC,KAAKke,IAAI4kB,GAAG3hB,gBAAa1hB,EAanD,GAVI4kB,KACF+5B,EAAS7zC,SAASiJ,cAAc,OACzBmF,MAAM8C,OAAS4I,EAAM/B,aAAe,KAC3C+B,EAAM9Q,YAAY6qC,IAGhB/tC,EAAKtD,QACPsD,EAAKtD,OAAOoV,YAAY9R,GAGtB8tC,aAAsBE,IAAeF,EAEvC,GAAIn+C,KAAK45C,OAAO1jD,OAAS,EAAI8J,KAAKo5C,cAAe,CAC/C,IAAIkF,EAAkBt+C,KAAK45C,OAAO55C,KAAKo5C,cAAgB,GACvDp5C,KAAKuL,aAAa8E,EAAMiuC,EAAiBrC,QAGzCj8C,KAAKuT,YAAYlD,GADH,EACkB4rC,QAGlCj8C,KAAKuL,aAAa8E,EAAM8tC,EAAYlC,GAGlC53B,GAAS+5B,GACX/5B,EAAMlC,YAAYi8B,MAcvB,CACD3rD,IAAK,eACLN,MAAO,SAAsBke,EAAM8tC,EAAYlC,GAC7C,GAAIj8C,KAAKi+C,aAAc,CAOrB,GANAj+C,KAAKo5C,gBAEa,WAAdp5C,KAAK+D,WAAoCtE,IAAf4Q,EAAK8zB,OACjC9zB,EAAKuoC,SAAS,IAGZuF,IAAen+C,KAAK+7C,OAGtB1rC,EAAK4sC,UAAUj9C,MACfqQ,EAAKwoC,cAA8B,WAAd74C,KAAK+D,KAC1B/D,KAAK45C,OAAO7lD,KAAKsc,OACZ,CAEL,IAAI3M,EAAQ1D,KAAK45C,OAAOj2C,QAAQw6C,GAEhC,IAAe,IAAXz6C,EACF,MAAM,IAAI9H,MAAM,kBAIlByU,EAAK4sC,UAAUj9C,MACfqQ,EAAKwoC,cAA8B,WAAd74C,KAAK+D,KAC1B/D,KAAK45C,OAAOh2C,OAAOF,EAAO,EAAG2M,GAG/B,GAAIrQ,KAAK24C,SAAU,CAEjB,IAAIuF,EAAQ7tC,EAAKotC,SACbL,EAASe,EAAWV,SACpBr5B,EAAQg5B,EAASA,EAAOj8B,gBAAa1hB,EAErC29C,GAAUh5B,GACZA,EAAM7Y,aAAa2yC,EAAOd,GAG5B/sC,EAAK8sC,aACLn9C,KAAKm9C,cAGW,IAAdlB,IACFj8C,KAAKi8C,UAAU,CACbC,eAAe,IAEjB7rC,EAAK4rC,UAAU,CACbiB,SAAS,QAYhB,CACDzqD,IAAK,cACLN,MAAO,SAAqBke,EAAMkuC,GAChC,GAAIv+C,KAAKi+C,aAAc,CACrB,IAAIv6C,EAAQ1D,KAAK45C,OAAOj2C,QAAQ46C,GAC5BJ,EAAan+C,KAAK45C,OAAOl2C,EAAQ,GAEjCy6C,EACFn+C,KAAKuL,aAAa8E,EAAM8tC,GAExBn+C,KAAKuT,YAAYlD,MAatB,CACD5d,IAAK,SACLN,MAAO,SAAgBgZ,EAAMqzC,GACtB5qD,MAAMW,QAAQiqD,KACjBA,EAAU,IAIZ,IAAItkB,EAAS/uB,EAAOA,EAAKpB,mBAAgBtK,EAiDzC,cA/COO,KAAKy+C,mBACLz+C,KAAK0+C,iBAEOj/C,IAAfO,KAAKmkC,OAAuBqa,EAAQtoD,QAAU8J,KAAK2+C,sBAItC,IAHH3pC,OAAOhV,KAAKmkC,OAAOp6B,cACjBpG,QAAQu2B,KAGpBl6B,KAAKy+C,aAAc,EACnBD,EAAQzqD,KAAK,CACXsc,KAAMrQ,KACN4sC,KAAM,WAKV5sC,KAAK4+C,mBAIH5+C,KAAKi+C,aAGHj+C,KAAK45C,QACP55C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAM9f,OAAO/uB,EAAMqzC,WAKJ/+C,IAAfO,KAAK7N,OAAuBqsD,EAAQtoD,QAAU8J,KAAK2+C,sBAItC,IAHH3pC,OAAOhV,KAAK7N,OAAO4X,cACjBpG,QAAQu2B,KAGpBl6B,KAAK0+C,aAAc,EACnBF,EAAQzqD,KAAK,CACXsc,KAAMrQ,KACN4sC,KAAM,WAKV5sC,KAAK6+C,mBAIFL,IAQR,CACD/rD,IAAK,WACLN,MAAO,SAAkB8Z,GACvBjM,KAAK8+C,mBAED9+C,KAAKke,IAAI4kB,IAAM9iC,KAAKke,IAAI4kB,GAAG3hB,YAC7BnhB,KAAKic,OAAOg/B,SAASj7C,KAAKke,IAAI4kB,GAAGic,UAAW9yC,KAO/C,CACDxZ,IAAK,mBACLN,MAAO,WAIL,IAHA,IAAIke,EAAOrQ,KAGJqQ,GAAQA,EAAKtD,QAAQ,CAI1B,IAFA,IAAIrJ,EAA6B,UAArB2M,EAAKtD,OAAOhJ,KAAmBsM,EAAK3M,MAAQ2M,EAAKtD,OAAO6sC,OAAOj2C,QAAQ0M,GAE5EA,EAAKtD,OAAOqsC,cAAgB11C,EAAQ,GACzC2M,EAAKtD,OAAOqsC,eAAiBp5C,KAAKq5C,sBAIpChpC,EAAKtD,OAAOiuC,QAXA,GAYZ3qC,EAAOA,EAAKtD,UAUf,CACDta,IAAK,QACLN,MAAO,SAAe6sD,GAGpB,GAFAxG,EAAKyG,aAAeD,EAEhBh/C,KAAKke,IAAI4kB,IAAM9iC,KAAKke,IAAI4kB,GAAG3hB,WAAY,CACzC,IAAIjD,EAAMle,KAAKke,IAEf,OAAQ8gC,GACN,IAAK,OACC9gC,EAAIqgB,KACNrgB,EAAIqgB,KAAKne,QAETlC,EAAIO,KAAK2B,QAGX,MAEF,IAAK,OACHlC,EAAIO,KAAK2B,QACT,MAEF,IAAK,SACCpgB,KAAKi+C,aACP//B,EAAI88B,OAAO56B,QACFlC,EAAIimB,OAASnkC,KAAK64C,eAC3B36B,EAAIimB,MAAM/jB,SACV,EAAGnX,EAAKi2C,uBAAuBhhC,EAAIimB,QAC1BjmB,EAAI/rB,QAAU6N,KAAKi+C,cAC5B//B,EAAI/rB,MAAMiuB,SACV,EAAGnX,EAAKi2C,uBAAuBhhC,EAAI/rB,QAEnC+rB,EAAIO,KAAK2B,QAGX,MAEF,IAAK,QACClC,EAAIimB,OAASnkC,KAAK64C,eACpB36B,EAAIimB,MAAM/jB,SACV,EAAGnX,EAAKi2C,uBAAuBhhC,EAAIimB,QAC1BjmB,EAAI/rB,QAAU6N,KAAKi+C,cAC5B//B,EAAI/rB,MAAMiuB,SACV,EAAGnX,EAAKi2C,uBAAuBhhC,EAAI/rB,QAC1B6N,KAAKi+C,aACd//B,EAAI88B,OAAO56B,QAEXlC,EAAIO,KAAK2B,QAGX,MAEF,IAAK,QACL,QACMlC,EAAI8b,OAEN9b,EAAI8b,OAAO5Z,QACFlC,EAAI/rB,QAAU6N,KAAKi+C,cAC5B//B,EAAI/rB,MAAMiuB,SACV,EAAGnX,EAAKi2C,uBAAuBhhC,EAAI/rB,QAC1B+rB,EAAIimB,OAASnkC,KAAK64C,eAC3B36B,EAAIimB,MAAM/jB,SACV,EAAGnX,EAAKi2C,uBAAuBhhC,EAAIimB,QAC1BnkC,KAAKi+C,aACd//B,EAAI88B,OAAO56B,QAEXlC,EAAIO,KAAK2B,YAclB,CACD3tB,IAAK,eACLN,MAAO,SAAsBke,GAC3B,GAAIrQ,OAASqQ,EACX,OAAO,EAGT,IAAIupC,EAAS55C,KAAK45C,OAElB,GAAIA,EAEF,IAAK,IAAI1oD,EAAI,EAAGqsD,EAAO3D,EAAO1jD,OAAQhF,EAAIqsD,EAAMrsD,IAC9C,GAAI0oD,EAAO1oD,GAAGiuD,aAAa9uC,GACzB,OAAO,EAKb,OAAO,IAYR,CACD5d,IAAK,cACLN,MAAO,SAAqBke,EAAM4rC,GAChC,GAAIj8C,KAAK45C,OAAQ,CACf,IAAIl2C,EAAQ1D,KAAK45C,OAAOj2C,QAAQ0M,GAEhC,IAAe,IAAX3M,EAAc,CACZA,EAAQ1D,KAAKo5C,eAAiBp5C,KAAK24C,UACrC34C,KAAKo5C,gBAGP/oC,EAAKoP,cAEEpP,EAAKouC,mBACLpuC,EAAKquC,YACZ,IAAIU,EAAcp/C,KAAK45C,OAAOh2C,OAAOF,EAAO,GAAG,GAS/C,OARA07C,EAAYryC,OAAS,MAEH,IAAdkvC,GACFj8C,KAAKi8C,UAAU,CACbC,eAAe,IAIZkD,MAcZ,CACD3sD,IAAK,UACLN,MAAO,SAAiBke,GACtBrQ,KAAKmiB,YAAY9R,KAOlB,CACD5d,IAAK,aACLN,MAAO,SAAoBktD,GACzB,IAAIC,EAAUt/C,KAAK+D,KAEnB,GAAIu7C,IAAYD,EAAhB,CAKA,GAAiB,WAAZA,GAAoC,SAAZA,GAAoC,WAAZC,GAAoC,SAAZA,EAGtE,CAEL,IAAIlD,EAAYp8C,KAAKq8C,iBAGrBr8C,KAAKs8C,WAELt8C,KAAK+D,KAAOs7C,EAEI,WAAZA,GACGr/C,KAAK45C,SACR55C,KAAK45C,OAAS,IAGhB55C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMsC,kBACCtC,EAAMt2C,MACbs2C,EAAMnB,eAAgB,OAEFp5C,IAAhBu6C,EAAM7V,QACR6V,EAAM7V,MAAQ,OAIF,WAAZmb,GAAoC,SAAZA,IAC1Bt/C,KAAK24C,UAAW,IAEG,UAAZ0G,GACJr/C,KAAK45C,SACR55C,KAAK45C,OAAS,IAGhB55C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,EAAOt2C,GACnCs2C,EAAMsC,WACNtC,EAAMnB,eAAgB,EACtBmB,EAAMt2C,MAAQA,KAGA,WAAZ47C,GAAoC,SAAZA,IAC1Bt/C,KAAK24C,UAAW,IAGlB34C,KAAK24C,UAAW,EAGlB34C,KAAKu8C,aAAaH,QA9ClBp8C,KAAK+D,KAAOs7C,EAiDE,SAAZA,GAAkC,WAAZA,IAGtBr/C,KAAK7N,MADS,WAAZktD,EACWrqC,OAAOhV,KAAK7N,QAEZ,EAAG8W,EAAKq7B,aAAatvB,OAAOhV,KAAK7N,QAGhD6N,KAAKogB,SAGPpgB,KAAKi8C,UAAU,CACbC,eAAe,OAQlB,CACDzpD,IAAK,YACLN,MAAO,SAAmBm1B,GACxB,IAAIp2B,EAEJ,GAAkB,UAAd8O,KAAK+D,KAAkB,CACzB,IAAKnQ,MAAMW,QAAQ+yB,GACjB,OAAO,EAGT,GAAItnB,KAAK45C,OAAO1jD,SAAWoxB,EAAKpxB,OAC9B,OAAO,EAGT,IAAKhF,EAAI,EAAGA,EAAI8O,KAAK45C,OAAO1jD,OAAQhF,IAClC,IAAK8O,KAAK45C,OAAO1oD,GAAGquD,UAAUj4B,EAAKp2B,IACjC,OAAO,OAGN,GAAkB,WAAd8O,KAAK+D,KAAmB,CACjC,GAAsB,WAAlB+nC,EAAQxkB,KAAuBA,EACjC,OAAO,EAIT,IAAI1J,EAAQhsB,OAAO6C,KAAK6yB,GAExB,GAAItnB,KAAK45C,OAAO1jD,SAAW0nB,EAAM1nB,OAC/B,OAAO,EAGT,IAAKhF,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CACjC,IAAI8oD,EAAQh6C,KAAK45C,OAAO1oD,GAExB,GAAI8oD,EAAM7V,QAAUvmB,EAAM1sB,KAAO8oD,EAAMuF,UAAUj4B,EAAK0yB,EAAM7V,QAC1D,OAAO,QAIX,GAAInkC,KAAK7N,QAAUm1B,EACjB,OAAO,EAIX,OAAO,IAOR,CACD70B,IAAK,eACLN,MAAO,WAaL,GAZA6N,KAAKw/C,mBAEDx/C,KAAKke,IAAI/rB,OAAuB,UAAd6N,KAAK+D,MAAkC,WAAd/D,KAAK+D,OAClD/D,KAAK88C,gBAAiB,EAAG7zC,EAAK8d,cAAc/mB,KAAKke,IAAI/rB,OAEzB,KAAxB6N,KAAK88C,gBAAsD,KAA7B98C,KAAKke,IAAI/rB,MAAMib,YAG/CpN,KAAKke,IAAI/rB,MAAM8a,YAAc,UAILxN,IAAxBO,KAAK88C,eACP,IAEE,IAAI3qD,EAEJ,GAAkB,WAAd6N,KAAK+D,KACP5R,EAAQ6N,KAAKy/C,cAAcz/C,KAAK88C,oBAC3B,CACL,IAAIrtC,EAAMzP,KAAKy/C,cAAcz/C,KAAK88C,gBAElC3qD,GAAQ,EAAG8W,EAAKq7B,aAAa70B,GAG3Btd,IAAU6N,KAAK7N,QACjB6N,KAAK7N,MAAQA,EAEb6N,KAAKg5C,2BAEP,MAAOjhD,GAEPiI,KAAK0/C,gBAAe,EAAG9Z,EAAoBnlB,IAAI,6BAUpD,CACDhuB,IAAK,iBACLN,MAAO,SAAwB+e,GAC7BlR,KAAKq6C,WAAa,CAChBnpC,QAASA,GAEXlR,KAAKm6C,gBAEN,CACD1nD,IAAK,mBACLN,MAAO,WACD6N,KAAKq6C,aACPr6C,KAAKq6C,WAAa,KAClBr6C,KAAKm6C,iBASR,CACD1nD,IAAK,iBACLN,MAAO,SAAwB+e,GAC7BlR,KAAKo6C,WAAa,CAChBlpC,QAASA,GAEXlR,KAAKm6C,gBAEN,CACD1nD,IAAK,mBACLN,MAAO,WACD6N,KAAKo6C,aACPp6C,KAAKo6C,WAAa,KAClBp6C,KAAKm6C,iBAQR,CACD1nD,IAAK,iBACLN,MAAO,WAGL,IAAIwtD,EAAe3/C,KAAKic,OAAO2jC,kBAE/B,GAAID,EAAaprC,MAAO,CACtB,IAAIsrC,GAAW,EAAG52C,EAAK62C,UAAU9qC,OAAOhV,KAAK7N,OAAQ6iB,OAAOhV,KAAKm8C,gBACjEwD,EAAaprC,MAAMwrC,YAAcF,EAASrrC,MAC1CmrC,EAAaprC,MAAMyrC,UAAYH,EAASlrC,IAG1C,IAAIsrC,EAAejgD,KAAKic,OAAO2jC,kBAE/B,GAAIK,EAAa1rC,MAAO,CACtB,IAAI2rC,GAAW,EAAGj3C,EAAK62C,UAAU9qC,OAAOhV,KAAKm8C,eAAgBnnC,OAAOhV,KAAK7N,QACzE8tD,EAAa1rC,MAAMwrC,YAAcG,EAAS1rC,MAC1CyrC,EAAa1rC,MAAMyrC,UAAYE,EAASvrC,IAG1C3U,KAAKic,OAAOkkC,UAAU,YAAa,CACjCz7B,KAAM1kB,KAAKogD,kBACXC,SAAUrgD,KAAKm8C,cACfmE,SAAUtgD,KAAK7N,MACfwtD,aAAcA,EACdM,aAAcA,IAGhBjgD,KAAKm8C,cAAgBn8C,KAAK7N,QAO3B,CACDM,IAAK,iBACLN,MAAO,WAGL,IAAIwtD,EAAe3/C,KAAKic,OAAO2jC,kBAC3B3oC,EAAWjX,KAAKk7C,eAAiB,GAErC,GAAIyE,EAAaprC,MAAO,CACtB,IAAIsrC,GAAW,EAAG52C,EAAK62C,UAAU9/C,KAAKmkC,MAAOltB,GAC7C0oC,EAAaprC,MAAMwrC,YAAcF,EAASrrC,MAC1CmrC,EAAaprC,MAAMyrC,UAAYH,EAASlrC,IAG1C,IAAIsrC,EAAejgD,KAAKic,OAAO2jC,kBAE/B,GAAIK,EAAa1rC,MAAO,CACtB,IAAI2rC,GAAW,EAAGj3C,EAAK62C,UAAU7oC,EAAUjX,KAAKmkC,OAChD8b,EAAa1rC,MAAMwrC,YAAcG,EAAS1rC,MAC1CyrC,EAAa1rC,MAAMyrC,UAAYE,EAASvrC,IAG1C3U,KAAKic,OAAOkkC,UAAU,YAAa,CACjCI,WAAYvgD,KAAK+M,OAAOqzC,kBACxB18C,MAAO1D,KAAK25C,WACZ0G,SAAUrgD,KAAKk7C,cACfoF,SAAUtgD,KAAKmkC,MACfwb,aAAcA,EACdM,aAAcA,IAGhBjgD,KAAKk7C,cAAgBl7C,KAAKmkC,QAU3B,CACD1xC,IAAK,kBACLN,MAAO,WACL,IAAIquD,EAAWxgD,KAAKke,IAAI/rB,MAExB,GAAIquD,EAAU,CACZ,IAAIC,EAAa,CAAC,oBAEdtuD,EAAQ6N,KAAK7N,MACbuuD,EAA0B,SAAd1gD,KAAK+D,MAAkB,EAAGkF,EAAK03C,SAASxuD,GAAS6N,KAAK+D,KAClE68C,EAA2B,WAAdF,IAA0B,EAAGz3C,EAAK43C,OAAO1uD,GAyB1D,GAxBAsuD,EAAW1sD,KAAK,cAAgB2sD,GAE5BE,GACFH,EAAW1sD,KAAK,kBAImB,KAAvBihB,OAAOhV,KAAK7N,QAA+B,UAAd6N,KAAK+D,MAAkC,WAAd/D,KAAK+D,MAGvE08C,EAAW1sD,KAAK,oBAIdiM,KAAK8gD,mBACPL,EAAW1sD,KAAK,+BAGdiM,KAAK0+C,aACP+B,EAAW1sD,KAAK,wBAGlBysD,EAAS12C,UAAY22C,EAAWr+C,KAAK,KAEnB,UAAds+C,GAAuC,WAAdA,EAAwB,CACnD,IAAI9vC,EAAQ5Q,KAAK45C,OAAS55C,KAAK45C,OAAO1jD,OAAS,EAC/CsqD,EAASphC,MAAQpf,KAAK+D,KAAO,eAAiB6M,EAAQ,cAC7CgwC,GAAc5gD,KAAK0nB,SAASv1B,MACrCquD,EAASphC,OAAQ,EAAGwmB,EAAoBnlB,IAAI,WAE5C+/B,EAASphC,MAAQ,GAyBnB,GArBkB,YAAdshC,GAA2B1gD,KAAK0nB,SAASv1B,OACtC6N,KAAKke,IAAI6iC,WACZ/gD,KAAKke,IAAI6iC,SAAWx2C,SAASiJ,cAAc,SAC3CxT,KAAKke,IAAI6iC,SAASh9C,KAAO,WACzB/D,KAAKke,IAAI8iC,WAAaz2C,SAASiJ,cAAc,MAC7CxT,KAAKke,IAAI8iC,WAAWl3C,UAAY,kBAChC9J,KAAKke,IAAI8iC,WAAWztC,YAAYvT,KAAKke,IAAI6iC,UACzC/gD,KAAKke,IAAIq8B,QAAQp5B,WAAW5V,aAAavL,KAAKke,IAAI8iC,WAAYhhD,KAAKke,IAAIq8B,UAGzEv6C,KAAKke,IAAI6iC,SAASE,QAAUjhD,KAAK7N,OAG7B6N,KAAKke,IAAI8iC,aACXhhD,KAAKke,IAAI8iC,WAAW7/B,WAAWgB,YAAYniB,KAAKke,IAAI8iC,mBAC7ChhD,KAAKke,IAAI8iC,kBACThhD,KAAKke,IAAI6iC,UAKhB/gD,KAAA,MAAgBA,KAAK0nB,SAASv1B,MAAO,CACvC,IAAK6N,KAAKke,IAAI8b,OAAQ,CACpBh6B,KAAKke,IAAI8b,OAASzvB,SAASiJ,cAAc,UACzCxT,KAAK7H,GAAK6H,KAAKmkC,MAAQ,KAAM,IAAIrtB,MAAOoqC,qBACxClhD,KAAKke,IAAI8b,OAAO7hC,GAAK6H,KAAK7H,GAC1B6H,KAAKke,IAAI8b,OAAOvoC,KAAOuO,KAAKke,IAAI8b,OAAO7hC,GAEvC,IAAIgpD,EAAgB52C,SAASiJ,cAAc,UAC3C2tC,EAAchvD,MAAQ,GACtBgvD,EAAcl0C,YAAc,KAC5BjN,KAAKke,IAAI8b,OAAOzmB,YAAY4tC,GAE5BnhD,KAAKohD,qBAELphD,KAAKke,IAAImjC,SAAW92C,SAASiJ,cAAc,MAC3CxT,KAAKke,IAAImjC,SAASv3C,UAAY,kBAC9B9J,KAAKke,IAAImjC,SAAS9tC,YAAYvT,KAAKke,IAAI8b,QACvCh6B,KAAKke,IAAIq8B,QAAQp5B,WAAW5V,aAAavL,KAAKke,IAAImjC,SAAUrhD,KAAKke,IAAIq8B,SAIvEv6C,KAAKke,IAAI8b,OAAO7nC,OAA8C,IAAtC6N,KAAA,KAAa2D,QAAQ3D,KAAK7N,OAAgB6N,KAAK7N,MAAQ,IAI3E6N,KAAKkpB,QAAWsyB,EAAoBx7C,KAAKkpB,OAAQ,UAAasyB,EAAoBx7C,KAAKkpB,OAAQ,UAAasyB,EAAoBx7C,KAAKkpB,OAAQ,gBAKxIlpB,KAAKshD,gBAJZthD,KAAKshD,eAAiBthD,KAAKke,IAAIq8B,QAAQntC,UACvCpN,KAAKke,IAAIq8B,QAAQ5hC,MAAM4oC,WAAa,SACpCvhD,KAAKke,IAAIq8B,QAAQttC,YAAc,SAM7BjN,KAAKke,IAAImjC,WACXrhD,KAAKke,IAAImjC,SAASlgC,WAAWgB,YAAYniB,KAAKke,IAAImjC,iBAC3CrhD,KAAKke,IAAImjC,gBACTrhD,KAAKke,IAAI8b,OAChBh6B,KAAKke,IAAIq8B,QAAQntC,UAAYpN,KAAKshD,eAClCthD,KAAKke,IAAIq8B,QAAQ5hC,MAAM4oC,WAAa,UAC7BvhD,KAAKshD,eACZthD,KAAKke,IAAIq8B,QAAQhnC,YAAYvT,KAAKke,IAAI/rB,QA+B1C,GA1BI6N,KAAKic,OAAOre,QAAQ4jD,aAAgC,kBAAVrvD,IAAsB,EAAG8W,EAAKw4C,cAActvD,IACnF6N,KAAKke,IAAItC,QACZ5b,KAAKke,IAAItC,MAAQrR,SAASiJ,cAAc,OACxCxT,KAAKke,IAAItC,MAAM9R,UAAY,mBAC3B9J,KAAKke,IAAIwjC,QAAUn3C,SAASiJ,cAAc,MAC1CxT,KAAKke,IAAIwjC,QAAQ53C,UAAY,kBAC7B9J,KAAKke,IAAIwjC,QAAQnuC,YAAYvT,KAAKke,IAAItC,OACtC5b,KAAKke,IAAIq8B,QAAQp5B,WAAW5V,aAAavL,KAAKke,IAAIwjC,QAAS1hD,KAAKke,IAAIq8B,WAItE,EAAGtxC,EAAKwZ,cAAcziB,KAAKke,IAAI/rB,MAAO,0BAEjC6N,KAAK0nB,SAASv1B,OAGjB,EAAG8W,EAAKoZ,iBAAiBriB,KAAKke,IAAItC,MAAO,8BAFzC,EAAG3S,EAAKwZ,cAAcziB,KAAKke,IAAItC,MAAO,6BAKxC5b,KAAKke,IAAItC,MAAMjD,MAAMoyB,gBAAkB54C,GAGvC6N,KAAK2hD,kBAIH3hD,KAAK4hD,oBAAqB,CACvB5hD,KAAKke,IAAI2jC,OACZ7hD,KAAKke,IAAI2jC,KAAOt3C,SAASiJ,cAAc,OACvCxT,KAAKke,IAAI2jC,KAAK/3C,UAAY,kBAC1B9J,KAAKke,IAAI/rB,MAAMgvB,WAAW5N,YAAYvT,KAAKke,IAAI2jC,OAGjD,IAAIziC,EAAQ,KAUZ,GARmD,oBAAxCpf,KAAKic,OAAOre,QAAQkkD,kBAC7B1iC,EAAQpf,KAAKic,OAAOre,QAAQkkD,gBAAgB,CAC1C3d,MAAOnkC,KAAKmkC,MACZhyC,MAAO6N,KAAK7N,MACZuyB,KAAM1kB,KAAKw5C,aAIVp6B,EAEE,CACL,KAAOpf,KAAKke,IAAI2jC,KAAKjuB,YACnB5zB,KAAKke,IAAI2jC,KAAK1/B,YAAYniB,KAAKke,IAAI2jC,KAAKjuB,YAG1C5zB,KAAKke,IAAI2jC,KAAKtuC,YAAYhJ,SAASuV,eAAeV,SANlDpf,KAAKke,IAAI2jC,KAAK50C,YAAc,IAAI6J,KAAK3kB,GAAO4vD,cAS9C/hD,KAAKke,IAAI2jC,KAAKziC,MAAQ,IAAItI,KAAK3kB,GAAO8B,gBAGlC+L,KAAKke,IAAI2jC,OACX7hD,KAAKke,IAAI2jC,KAAK1gC,WAAWgB,YAAYniB,KAAKke,IAAI2jC,aACvC7hD,KAAKke,IAAI2jC,OAKpB,EAAG54C,EAAK+4C,iBAAiBxB,GAEzBxgD,KAAKiiD,uBAGR,CACDxvD,IAAK,qBACLN,MAAO,WACL,GAAK6N,KAAA,MAAiBA,KAAKke,IAAI8b,OAA/B,CAKAh6B,KAAKke,IAAI8b,OAAO5sB,UAAY,GAE5B,IAAK,IAAIlc,EAAI,EAAGA,EAAI8O,KAAA,KAAa9J,OAAQhF,IAAK,CAC5C,IAAI42B,EAASvd,SAASiJ,cAAc,UACpCsU,EAAO31B,MAAQ6N,KAAA,KAAa9O,GAC5B42B,EAAO7a,YAAcjN,KAAA,KAAa9O,GAClC8O,KAAKke,IAAI8b,OAAOzmB,YAAYuU,OAG/B,CACDr1B,IAAK,kBACLN,MAAO,WACD6N,KAAKke,IAAItC,QACX5b,KAAKke,IAAIwjC,QAAQvgC,WAAWgB,YAAYniB,KAAKke,IAAIwjC,gBAC1C1hD,KAAKke,IAAIwjC,eACT1hD,KAAKke,IAAItC,OAChB,EAAG3S,EAAKoZ,iBAAiBriB,KAAKke,IAAI/rB,MAAO,6BAW5C,CACDM,IAAK,kBACLN,MAAO,WACL,IAAI+vD,EAAWliD,KAAKke,IAAIimB,MAExB,GAAI+d,EAAU,CACZ,IAAIC,GAAU,EAAGl5C,EAAKm5C,kBAAkBpiD,KAAKkpB,OAAQlpB,KAAKic,OAAOre,QAAQsM,UAErEi4C,IACFD,EAAS9iC,MAAQ+iC,GAIkB,KAAvBntC,OAAOhV,KAAKmkC,QAAiBnkC,KAAK+M,QAA+B,UAArB/M,KAAK+M,OAAOhJ,MAGpE,EAAGkF,EAAKwZ,cAAcy/B,EAAU,qBAEhC,EAAGj5C,EAAKoZ,iBAAiB6/B,EAAU,oBAIjCliD,KAAKqiD,mBACP,EAAGp5C,EAAKwZ,cAAcy/B,EAAU,gCAEhC,EAAGj5C,EAAKoZ,iBAAiB6/B,EAAU,+BAGjCliD,KAAKy+C,aACP,EAAGx1C,EAAKwZ,cAAcy/B,EAAU,yBAEhC,EAAGj5C,EAAKoZ,iBAAiB6/B,EAAU,yBAIrC,EAAGj5C,EAAK+4C,iBAAiBE,MAU5B,CACDzvD,IAAK,eACLN,MAAO,SAAsBmwD,GAa3B,GAZAtiD,KAAKuiD,mBAEDviD,KAAKke,IAAIimB,OAASnkC,KAAK64C,gBACzB74C,KAAK68C,gBAAiB,EAAG5zC,EAAK8d,cAAc/mB,KAAKke,IAAIimB,OAEzB,KAAxBnkC,KAAK68C,gBAAsD,KAA7B78C,KAAKke,IAAIimB,MAAM/2B,YAG/CpN,KAAKke,IAAIimB,MAAMl3B,YAAc,UAILxN,IAAxBO,KAAK68C,eACP,IACE,IAAI1Y,EAAQnkC,KAAKy/C,cAAcz/C,KAAK68C,gBAEhC2F,EAAqBxiD,KAAK+M,OAAO01C,cAAcziD,OACM,IAAvCwiD,EAAmB7+C,QAAQwgC,GASvCme,GAEFne,GAAQ,EAAGl7B,EAAKy5C,gBAAgBve,EAAOqe,MAEzBxiD,KAAKmkC,QACjBnkC,KAAKmkC,MAAQA,EAEbnkC,KAAKk5C,2BAGPl5C,KAAK2iD,gBAAe,EAAG/c,EAAoBnlB,IAAI,wBAhB7C0jB,IAAUnkC,KAAKmkC,QACjBnkC,KAAKmkC,MAAQA,EAEbnkC,KAAKk5C,2BAgBT,MAAOnhD,GAEPiI,KAAK2iD,gBAAe,EAAG/c,EAAoBnlB,IAAI,6BAUpD,CACDhuB,IAAK,oBACLN,MAAO,WAEL,GAAK6N,KAAKkpB,aAAqCzpB,IAA3BO,KAAKkpB,OAAL,UAAwClpB,KAAKi+C,aAAjE,CAKA,IAAI2E,EAAe5iD,KAAKke,IAAI8b,OAASh6B,KAAKke,IAAI8b,OAASh6B,KAAKke,IAAI/rB,MAE3DywD,IAID5iD,KAAK7N,QAAU6N,KAAKkpB,OAAL,SACjB05B,EAAaxjC,OAAQ,EAAGwmB,EAAoBnlB,IAAI,YAChD,EAAGxX,EAAKwZ,cAAcmgC,EAAc,0BACpC,EAAG35C,EAAKoZ,iBAAiBugC,EAAc,+BAEvCA,EAAaloB,gBAAgB,UAC7B,EAAGzxB,EAAKoZ,iBAAiBugC,EAAc,0BACvC,EAAG35C,EAAKwZ,cAAcmgC,EAAc,kCAQvC,CACDnwD,IAAK,oBACLN,MAAO,WACL,GAA0B,kBAAf6N,KAAK7N,MACd,OAAO,EAGT,IAAI0wD,EAAe7iD,KAAKic,OAAOre,QAAQilD,aAEvC,GAA4B,oBAAjBA,EAA6B,CACtC,IAAItnB,EAASsnB,EAAa,CACxB1e,MAAOnkC,KAAKmkC,MACZhyC,MAAO6N,KAAK7N,MACZuyB,KAAM1kB,KAAKw5C,YAGb,MAAsB,mBAAXje,EACFA,GAEA,EAAGtyB,EAAK65C,aAAa9iD,KAAKmkC,MAAOnkC,KAAK7N,OAE1C,OAAqB,IAAjB0wD,IACF,EAAG55C,EAAK65C,aAAa9iD,KAAKmkC,MAAOnkC,KAAK7N,SAShD,CACDM,IAAK,WACLN,MAAO,WAIL6N,KAAKke,IAAM,KAQZ,CACDzrB,IAAK,SACLN,MAAO,WACL,IAAI+rB,EAAMle,KAAKke,IAEf,GAAIA,EAAI4kB,GACN,OAAO5kB,EAAI4kB,GASb,GANA9iC,KAAK+iD,qBAGL7kC,EAAI4kB,GAAKv4B,SAASiJ,cAAc,MAChC0K,EAAI4kB,GAAGzyB,KAAOrQ,KAEmB,SAA7BA,KAAKic,OAAOre,QAAQvL,KAAiB,CAEvC,IAAI2wD,EAASz4C,SAASiJ,cAAc,MAEpC,GAAIxT,KAAK0nB,SAASyc,OAEZnkC,KAAK+M,OAAQ,CACf,IAAIk2C,EAAU14C,SAASiJ,cAAc,UACrCyvC,EAAQl/C,KAAO,SACfma,EAAIqgB,KAAO0kB,EACXA,EAAQn5C,UAAY,wCACpBm5C,EAAQ7jC,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAC3CuiC,EAAOzvC,YAAY0vC,GAIvB/kC,EAAI4kB,GAAGvvB,YAAYyvC,GAEnB,IAAIE,EAAS34C,SAASiJ,cAAc,MAChCiL,EAAOlU,SAASiJ,cAAc,UAClCiL,EAAK1a,KAAO,SACZma,EAAIO,KAAOA,EACXA,EAAK3U,UAAY,kDACjB2U,EAAKW,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eACxCyiC,EAAO3vC,YAAY2K,EAAIO,MACvBP,EAAI4kB,GAAGvvB,YAAY2vC,GAIrB,IAAIC,EAAU54C,SAASiJ,cAAc,MAOrC,OANA0K,EAAI4kB,GAAGvvB,YAAY4vC,GACnBjlC,EAAIuM,KAAOzqB,KAAKojD,iBAChBD,EAAQ5vC,YAAY2K,EAAIuM,MACxBzqB,KAAKi8C,UAAU,CACbC,eAAe,IAEVh+B,EAAI4kB,KAOZ,CACDrwC,IAAK,YACLN,MAAO,WACL,OAAO6N,KAAKke,KAAOle,KAAKke,IAAI4kB,IAAM9iC,KAAKke,IAAI4kB,GAAG3hB,aAAc,IAS7D,CACD1uB,IAAK,iBACLN,MAAO,SAAwBke,GAG7B,IAFA,IAAI1d,EAAIqN,KAAK+M,OAENpa,GAAG,CACR,GAAIA,IAAM0d,EACR,OAAO,EAGT1d,EAAIA,EAAEoa,OAGR,OAAO,IAQR,CACDta,IAAK,kBACLN,MAAO,WACL,OAAOoY,SAASiJ,cAAc,SAQ/B,CACD/gB,IAAK,eACLN,MAAO,SAAsB8b,GACvBjO,KAAKke,IAAI4kB,KACP70B,GACF,EAAGhF,EAAKwZ,cAAcziB,KAAKke,IAAI4kB,GAAI,yBAEnC,EAAG75B,EAAKoZ,iBAAiBriB,KAAKke,IAAI4kB,GAAI,wBAGpC9iC,KAAK+7C,QACP/7C,KAAK+7C,OAAOtF,aAAaxoC,GAGvBjO,KAAK45C,QACP55C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMvD,aAAaxoC,SAW1B,CACDxb,IAAK,cACLN,MAAO,SAAqBijC,EAAUiuB,GACpCrjD,KAAKo1B,SAAWA,EAEZp1B,KAAKke,IAAI4kB,KACP1N,GACF,EAAGnsB,EAAKwZ,cAAcziB,KAAKke,IAAI4kB,GAAI,wBAEnC,EAAG75B,EAAKoZ,iBAAiBriB,KAAKke,IAAI4kB,GAAI,uBAGpCugB,GACF,EAAGp6C,EAAKwZ,cAAcziB,KAAKke,IAAI4kB,GAAI,qBAEnC,EAAG75B,EAAKoZ,iBAAiBriB,KAAKke,IAAI4kB,GAAI,oBAGpC9iC,KAAK+7C,QACP/7C,KAAK+7C,OAAOrlB,YAAYtB,GAGtBp1B,KAAK8/B,UACP9/B,KAAK8/B,SAASpJ,YAAYtB,GAGxBp1B,KAAK45C,QACP55C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMtjB,YAAYtB,SAWzB,CACD3iC,IAAK,cACLN,MAAO,SAAqBA,GAC1B6N,KAAK7N,MAAQA,EACb6N,KAAKm8C,cAAgBhqD,EACrB6N,KAAKq6C,gBAAa56C,EAClBO,KAAKi8C,cAON,CACDxpD,IAAK,cACLN,MAAO,SAAqBgyC,GAC1BnkC,KAAKmkC,MAAQA,EACbnkC,KAAKk7C,cAAgB/W,EACrBnkC,KAAKo6C,gBAAa36C,EAClBO,KAAKi8C,cAaN,CACDxpD,IAAK,YACLN,MAAO,SAAmByL,GAExB,IAAI0lD,EAAUtjD,KAAKke,IAAIuM,KAEnB64B,IACFA,EAAQ3qC,MAAM4qC,WAA+B,GAAlBvjD,KAAK28C,WAAkB,MAIpD,IAAIuF,EAAWliD,KAAKke,IAAIimB,MAExB,GAAI+d,EAAU,CAYZ,IAAIsB,EAEJ,GAbIxjD,KAAK64C,eAEPqJ,EAASuB,gBAAkBzjD,KAAK0nB,SAASyc,MACzC+d,EAAShsB,YAAa,EACtBgsB,EAASp4C,UAAY,qBAGrBo4C,EAASuB,iBAAkB,EAC3BvB,EAASp4C,UAAY,4BAKJrK,IAAfO,KAAK0D,MACP8/C,EAAYxjD,KAAK0D,WACZ,QAAmBjE,IAAfO,KAAKmkC,MACdqf,EAAYxjD,KAAKmkC,UACZ,CACL,IAAIjb,EAASlpB,KAAKic,OAAOre,QAAQsrB,OAASsvB,EAAKkL,YAAY1jD,KAAKic,OAAOre,QAAQsrB,OAAQlpB,KAAKic,OAAOre,QAAQurB,YAAc,GAAInpB,KAAKw5C,gBAAa/5C,EAG7I+jD,EADEt6B,GAAUA,EAAO9J,MACP8J,EAAO9J,MACVpf,KAAKi+C,aACFj+C,KAAK+D,KAEL,GAIhB,IAAI4/C,EAAe3jD,KAAK4jD,YAAYJ,GAEhCj5C,SAAS8b,gBAAkB67B,GAAYyB,IAAiB3jD,KAAKy/C,eAAc,EAAGx2C,EAAK8d,cAAcm7B,MAInGA,EAAS90C,UAAYu2C,GAGvB3jD,KAAK6jD,gBAEL7jD,KAAKohD,qBAIP,IAAIZ,EAAWxgD,KAAKke,IAAI/rB,MAExB,GAAIquD,EACF,GAAkB,UAAdxgD,KAAK+D,MAAkC,WAAd/D,KAAK+D,KAChC/D,KAAK8jD,qBACA,CACL,IAAIC,EAAe/jD,KAAK4jD,YAAY5jD,KAAK7N,OAErCoY,SAAS8b,gBAAkBm6B,GAAYuD,IAAiB/jD,KAAKy/C,eAAc,EAAGx2C,EAAK8d,cAAcy5B,MAInGA,EAASpzC,UAAY22C,GAM3B,IAAIjhB,EAAK9iC,KAAKke,IAAI4kB,GAEdA,IACgB,UAAd9iC,KAAK+D,MAAkC,WAAd/D,KAAK+D,OAChC,EAAGkF,EAAKwZ,cAAcqgB,EAAI,yBAEtB9iC,KAAK24C,WACP,EAAG1vC,EAAKwZ,cAAcqgB,EAAI,wBAC1B,EAAG75B,EAAKoZ,iBAAiBygB,EAAI,2BAE7B,EAAG75B,EAAKwZ,cAAcqgB,EAAI,yBAC1B,EAAG75B,EAAKoZ,iBAAiBygB,EAAI,2BAG/B,EAAG75B,EAAKoZ,iBAAiBygB,EAAI,0BAC7B,EAAG75B,EAAKoZ,iBAAiBygB,EAAI,wBAC7B,EAAG75B,EAAKoZ,iBAAiBygB,EAAI,0BAKjC9iC,KAAK4+C,kBAEL5+C,KAAK6+C,kBAGDjhD,IAAqC,IAA1BA,EAAQs+C,eAErBl8C,KAAKgkD,oBAIHpmD,IAA+B,IAApBA,EAAQs/C,SACjBl9C,KAAK45C,QACP55C,KAAK45C,OAAOxjD,SAAQ,SAAU4jD,GAC5BA,EAAMiC,UAAUr+C,MAMlBoC,KAAK/H,OACP+H,KAAKm6C,cAIHn6C,KAAK+7C,QACP/7C,KAAK+7C,OAAOE,YAIVj8C,KAAK8/B,UACP9/B,KAAK8/B,SAASmc,YAIhBj8C,KAAK+9C,wBAON,CACDtrD,IAAK,gBACLN,MAAO,WAED6N,KAAKic,QAAUjc,KAAKic,OAAOre,UAE7BoC,KAAKkpB,OAASlpB,KAAKic,OAAOre,QAAQsrB,OAChCsvB,EAAKkL,YAAY1jD,KAAKic,OAAOre,QAAQsrB,OAAQlpB,KAAKic,OAAOre,QAAQurB,YAAc,GAAInpB,KAAKw5C,WAAa,KAEnGx5C,KAAKkpB,OACPlpB,KAAA,KAAew4C,EAAKyL,UAAUjkD,KAAKkpB,eAE5BlpB,KAAA,QAWZ,CACDvN,IAAK,oBACLN,MAAO,WACL,IAAIquD,EAAWxgD,KAAKke,IAAI/rB,MACpBynD,EAAS55C,KAAK45C,OAEd4G,GAAY5G,IACI,UAAd55C,KAAK+D,KACP61C,EAAOxjD,SAAQ,SAAU4jD,EAAOt2C,GAC9Bs2C,EAAMt2C,MAAQA,EACd,IAAI+3C,EAAazB,EAAM97B,IAAIimB,MAEvBsX,IACFA,EAAWxuC,YAAcvJ,MAGN,WAAd1D,KAAK+D,MACd61C,EAAOxjD,SAAQ,SAAU4jD,QACHv6C,IAAhBu6C,EAAMt2C,eACDs2C,EAAMt2C,WAEOjE,IAAhBu6C,EAAM7V,QACR6V,EAAM7V,MAAQ,WAYzB,CACD1xC,IAAK,kBACLN,MAAO,WACL,IAAIquD,EAuBJ,MArBkB,UAAdxgD,KAAK+D,MACPy8C,EAAWj2C,SAASiJ,cAAc,QACzBvG,YAAc,QACA,WAAdjN,KAAK+D,MACdy8C,EAAWj2C,SAASiJ,cAAc,QACzBvG,YAAc,SAElBjN,KAAK0nB,SAASv1B,QAAS,EAAG8W,EAAK43C,OAAO7gD,KAAK7N,SAE9CquD,EAAWj2C,SAASiJ,cAAc,MACzB+7B,KAAOvvC,KAAK7N,MACrBquD,EAASpzC,UAAYpN,KAAK4jD,YAAY5jD,KAAK7N,UAG3CquD,EAAWj2C,SAASiJ,cAAc,QACzBiwC,gBAAkBzjD,KAAK0nB,SAASv1B,MACzCquD,EAAStqB,YAAa,EACtBsqB,EAASpzC,UAAYpN,KAAK4jD,YAAY5jD,KAAK7N,QAIxCquD,IAQR,CACD/tD,IAAK,yBACLN,MAAO,WAEL,IAAI6oD,EAASzwC,SAASiJ,cAAc,UAWpC,OAVAwnC,EAAOj3C,KAAO,SAEV/D,KAAKi+C,cACPjD,EAAOlxC,UAAY9J,KAAK24C,SAAW,wCAA0C,yCAC7EqC,EAAO57B,OAAQ,EAAGwmB,EAAoBnlB,IAAI,iBAE1Cu6B,EAAOlxC,UAAY,yCACnBkxC,EAAO57B,MAAQ,IAGV47B,IAQR,CACDvoD,IAAK,iBACLN,MAAO,WACL,IAAI+rB,EAAMle,KAAKke,IACXolC,EAAU/4C,SAASiJ,cAAc,SACjC6Q,EAAQ9Z,SAASiJ,cAAc,SACnC8vC,EAAQ3qC,MAAMurC,eAAiB,WAE/BZ,EAAQx5C,UAAY,oBACpBw5C,EAAQ/vC,YAAY8Q,GACpB,IAAIye,EAAKv4B,SAASiJ,cAAc,MAChC6Q,EAAM9Q,YAAYuvB,GAElB,IAAIqhB,EAAW55C,SAASiJ,cAAc,MACtC2wC,EAASr6C,UAAY,kBACrBg5B,EAAGvvB,YAAY4wC,GACfjmC,EAAI88B,OAASh7C,KAAKokD,yBAClBD,EAAS5wC,YAAY2K,EAAI88B,QACzB98B,EAAIimC,SAAWA,EAEf,IAAIhB,EAAU54C,SAASiJ,cAAc,MACrC2vC,EAAQr5C,UAAY,kBACpBg5B,EAAGvvB,YAAY4vC,GACfjlC,EAAIimB,MAAQnkC,KAAKqkD,kBACjBlB,EAAQ5vC,YAAY2K,EAAIimB,OACxBjmB,EAAIilC,QAAUA,EAEd,IAAImB,EAAc/5C,SAASiJ,cAAc,MACzC8wC,EAAYx6C,UAAY,kBACxBg5B,EAAGvvB,YAAY+wC,GAEG,WAAdtkD,KAAK+D,MAAmC,UAAd/D,KAAK+D,OACjCugD,EAAY/wC,YAAYhJ,SAASuV,eAAe,MAChDwkC,EAAYx6C,UAAY,wBAG1BoU,EAAIomC,YAAcA,EAElB,IAAI/J,EAAUhwC,SAASiJ,cAAc,MAMrC,OALA+mC,EAAQzwC,UAAY,kBACpBg5B,EAAGvvB,YAAYgnC,GACfr8B,EAAI/rB,MAAQ6N,KAAKukD,kBACjBhK,EAAQhnC,YAAY2K,EAAI/rB,OACxB+rB,EAAIq8B,QAAUA,EACP+I,IAOR,CACD7wD,IAAK,UACLN,MAAO,SAAiBotB,GACtB,IAAIxb,EAAOwb,EAAMxb,KACb/N,EAASupB,EAAMvpB,QAAUupB,EAAMilC,WAC/BtmC,EAAMle,KAAKke,IACX7N,EAAOrQ,KAEPykD,EAAazkD,KAAKi+C,aAatB,GATIjoD,IAAWkoB,EAAIqgB,MAAQvoC,IAAWkoB,EAAIO,OAC3B,cAAT1a,EACF/D,KAAKic,OAAOyoC,YAAYz2C,UAAUjO,MAChB,aAAT+D,GACT/D,KAAKic,OAAOyoC,YAAYC,eAKf,UAAT5gD,GAAoB/N,IAAWkoB,EAAIO,KAAM,CAC3C,IAAIimC,EAAcr0C,EAAK4L,OAAOyoC,YAC9BA,EAAYz2C,UAAUoC,GACtBq0C,EAAYE,QACZ,EAAG37C,EAAKwZ,cAAcvE,EAAIO,KAAM,uBAChCze,KAAK6kD,gBAAgB3mC,EAAIO,MAAM,YAC7B,EAAGxV,EAAKoZ,iBAAiBnE,EAAIO,KAAM,uBACnCimC,EAAYI,SACZJ,EAAYC,iBAKhB,GAAa,UAAT5gD,GACE/N,IAAWkoB,EAAI88B,QACbyJ,EAAY,CACd,IAAIvH,EAAU39B,EAAMizB,QAEpBxyC,KAAK+kD,UAAU7H,GAKR,UAATn5C,GAAqBwb,EAAMvpB,SAAWqa,EAAK6N,IAAIwjC,SAAWniC,EAAMvpB,SAAWqa,EAAK6N,IAAItC,QAAU5b,KAAK0nB,SAASv1B,OAC9G6N,KAAKglD,mBAIM,WAATjhD,GAAqB/N,IAAWkoB,EAAI6iC,WACtC/gD,KAAKke,IAAI/rB,MAAM8a,YAAc+H,QAAQhV,KAAK7N,OAE1C6N,KAAKy8C,eAELz8C,KAAKiiD,qBAIM,WAATl+C,GAAqB/N,IAAWkoB,EAAI8b,SACtCh6B,KAAKke,IAAI/rB,MAAMib,UAAYpN,KAAK4jD,YAAY1lC,EAAI8b,OAAO7nC,OAEvD6N,KAAKy8C,eAELz8C,KAAK6+C,mBAIP,IAAI2B,EAAWtiC,EAAI/rB,MAEnB,GAAI6D,IAAWwqD,EAEb,OAAQz8C,GACN,IAAK,OACL,IAAK,SAED/D,KAAKy8C,eAELz8C,KAAKw/C,mBAELx/C,KAAK6+C,kBAEL,IAAIkF,EAAe/jD,KAAK4jD,YAAY5jD,KAAK7N,OAErC4xD,IAAiB/jD,KAAKy/C,eAAc,EAAGx2C,EAAK8d,cAAcy5B,MAG5DA,EAASpzC,UAAY22C,GAGvB,MAGJ,IAAK,QAEH/jD,KAAKy8C,eAELz8C,KAAK6+C,kBAEL,MAEF,IAAK,UACL,IAAK,YAEH7+C,KAAKic,OAAOqC,UAAYte,KAAKic,OAAO2jC,kBACpC,MAEF,IAAK,QACCrgC,EAAMizB,SAAWxyC,KAAK0nB,SAASv1B,QAE7B,EAAG8W,EAAK43C,OAAO7gD,KAAK7N,SACtBotB,EAAMC,iBACNtf,OAAO8T,KAAKhU,KAAK7N,MAAO,SAAU,eAItC,MAEF,IAAK,QAEH6N,KAAKy8C,eAELz8C,KAAK6+C,kBAEL,MAEF,IAAK,MACL,IAAK,QACHntC,YAAW,WACTrB,EAAKosC,eAELpsC,EAAKwuC,oBACJ,GAMT,IAAIqD,EAAWhkC,EAAIimB,MAEnB,GAAInuC,IAAWksD,EACb,OAAQn+C,GACN,IAAK,OAED/D,KAAKm7C,cAAa,GAElBn7C,KAAK4+C,kBAEL,IAAI+E,EAAe3jD,KAAK4jD,YAAY5jD,KAAKmkC,OAErCwf,IAAiB3jD,KAAKy/C,eAAc,EAAGx2C,EAAK8d,cAAcm7B,MAG5DA,EAAS90C,UAAYu2C,GAGvB,MAGJ,IAAK,QACH3jD,KAAKm7C,eAELn7C,KAAK6jD,gBAEL7jD,KAAK4+C,kBAEL5+C,KAAK6+C,kBAEL,MAEF,IAAK,UACL,IAAK,YACH7+C,KAAKic,OAAOqC,UAAYte,KAAKic,OAAO2jC,kBACpC,MAEF,IAAK,QACH5/C,KAAKm7C,eAELn7C,KAAK4+C,kBAEL,MAEF,IAAK,MACL,IAAK,QACHltC,YAAW,WACTrB,EAAK8qC,eAEL9qC,EAAKuuC,oBACJ,GAOT,IAAI0E,EAAUplC,EAAIuM,KAEd64B,GAAWttD,IAAWstD,EAAQniC,YAAuB,UAATpd,IAAqBwb,EAAM0lC,iBAC5CxlD,IAAlB8f,EAAM2lC,QAAwB3lC,EAAM2lC,QAAkC,IAAvBllD,KAAK28C,WAAa,GAAUp9B,EAAM4lC,OAAQ,EAAGl8C,EAAKm8C,iBAAiBlnC,EAAIomC,eAErHG,EAENvC,KACF,EAAGj5C,EAAKo8C,yBAAyBnD,GACjCA,EAAS9hC,SAGPogC,IAAaxgD,KAAA,QACf,EAAGiJ,EAAKo8C,yBAAyB7E,GACjCA,EAASpgC,WAKVpqB,IAAWkoB,EAAIimC,UAAaM,IAAczuD,IAAWkoB,EAAIilC,SAAWntD,IAAWkoB,EAAIomC,aAAyB,UAATvgD,GAAqBwb,EAAM0lC,UAC7H/C,KACF,EAAGj5C,EAAKo8C,yBAAyBnD,GACjCA,EAAS9hC,SAIA,YAATrc,GACF/D,KAAK4X,UAAU2H,GAI0B,oBAAhCvf,KAAKic,OAAOre,QAAQ0nD,SAC7BtlD,KAAK8lB,SAASvG,KAajB,CACD9sB,IAAK,WACLN,MAAO,SAAkBotB,GACvB,IAAIphB,EAAUohB,EAAMvpB,OAChBuvD,EAAUpnD,IAAY6B,KAAKke,IAAIimB,MAC/BqhB,EAAUrnD,IAAY6B,KAAKke,IAAI/rB,OAASgM,IAAY6B,KAAKke,IAAI6iC,UAAY5iD,IAAY6B,KAAKke,IAAI8b,OAElG,GAAIurB,GAAWC,EAAS,CACtB,IAAI9kD,EAAO,CACTyjC,MAAOnkC,KAAKw8C,WACZ93B,KAAM1kB,KAAKw5C,WAGTgM,IAAYxlD,KAAKi+C,eACnBv9C,EAAKvO,MAAQ6N,KAAK86B,YAGpB96B,KAAKic,OAAOre,QAAQ0nD,QAAQ5kD,EAAM6e,MAQrC,CACD9sB,IAAK,YACLN,MAAO,SAAmBotB,GACxB,IAMIkmC,EAAUC,EAAUC,EAASC,EAE7BjG,EACAkG,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAhBAvjC,EAAStD,EAAMuD,OAASvD,EAAMyG,QAC9BhwB,EAASupB,EAAMvpB,QAAUupB,EAAMilC,WAC/BhS,EAAUjzB,EAAMizB,QAChBvvB,EAAW1D,EAAM0D,SACjBojC,EAAS9mC,EAAM8mC,OACftjC,GAAU,EAEV2E,EAAwC,SAA7B1nB,KAAKic,OAAOre,QAAQvL,KAU/Bi0D,EAAgBtmD,KAAKic,OAAOmqC,eAAeD,MAAMjwD,OAAS,EAAI8J,KAAKic,OAAOmqC,eAAeD,MAAQ,CAACnmD,MAClGumD,EAAYD,EAAc,GAC1BE,EAAWF,EAAcA,EAAcpwD,OAAS,GAEpD,GAAe,KAAX2sB,GAEF,GAAI7sB,IAAWgK,KAAKke,IAAI/rB,MACjB6N,KAAK0nB,SAASv1B,QAASotB,EAAMizB,UAC5B,EAAGvpC,EAAK43C,OAAO7gD,KAAK7N,SACtB+N,OAAO8T,KAAKhU,KAAK7N,MAAO,SAAU,cAClC4wB,GAAU,QAGT,GAAI/sB,IAAWgK,KAAKke,IAAI88B,QACZh7C,KAAKi+C,aAEN,CACd,IAAIf,EAAU39B,EAAMizB,QAEpBxyC,KAAK+kD,UAAU7H,GAEflnD,EAAOoqB,QACP2C,GAAU,QAGT,GAAe,KAAXF,EAEL2vB,GAAW9qB,IAEb8wB,EAAKiO,YAAYH,GACjBvjC,GAAU,QAEP,GAAe,KAAXF,EAEL2vB,IAEFxyC,KAAK+kD,UAAU9hC,GAGfjtB,EAAOoqB,QAEP2C,GAAU,QAEP,GAAe,KAAXF,GAAiB6E,EAEtB8qB,IAEFxyC,KAAK6kD,gBAAgB7uD,GACrB+sB,GAAU,QAEP,GAAe,KAAXF,GAAiB6E,EAEtB8qB,IAEFgG,EAAKkO,SAASJ,GACdvjC,GAAU,QAEP,GAAe,KAAXF,GAAiB6E,EAEtB8qB,IAAYvvB,GAEdjjB,KAAK2mD,kBAEL5jC,GAAU,GACDyvB,GAAWvvB,IAEpBjjB,KAAK4mD,iBAEL7jC,GAAU,QAEP,GAAe,KAAXF,GAET,GAAIwjC,EAAQ,CAGV,IAAIQ,EAAU7mD,KAAK8mD,YAEfD,GACFA,EAAQzmC,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,IAG1D+sB,GAAU,QAEP,GAAe,KAAXF,GAET,GAAIwjC,EAAQ,CAGV,IAAIW,EAAWhnD,KAAKinD,aAEhBD,GACFA,EAAS5mC,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,IAG3D+sB,GAAU,QAEP,GAAe,KAAXF,GAET,GAAIwjC,IAAWpjC,EAAU,CAGvB,IAAIikC,EAAclnD,KAAKmnD,iBAAiBnxD,GAEpCkxD,GACFlnD,KAAKogB,MAAMpgB,KAAK+mD,gBAAgBG,IAGlCnkC,GAAU,OACL,GAAIsjC,GAAUpjC,GAAYyE,EAAU,CAEzC,GAAI8+B,EAAS7N,SAAU,CACrB,IAAIyO,EAAYZ,EAASnJ,eACzBsI,EAAUyB,EAAYA,EAAU9J,iBAAc79C,OAG9CkmD,EADUa,EAAS/I,SACLH,YAGhB,GAAIqI,EAAS,CACXD,EAAWlN,EAAK6O,kBAAkB1B,GAClCC,EAAWD,EAAQrI,YACnB,IAAIgK,EAAY9O,EAAK6O,kBAAkBzB,GAEnCF,GAAYA,aAAoBrH,GAAkD,IAAlCmI,EAASz5C,OAAO6sC,OAAO1jD,QAAiBoxD,GAAaA,EAAUv6C,SACjH4yC,EAAe3/C,KAAKic,OAAO2jC,kBAE3BiG,GADAC,EAAYS,EAAUx5C,QACE6sC,OAAO4M,EAAS7M,WAAa,IAAMmM,EAAU/J,OACrEgK,EAAeQ,EAAU5M,WACzBqM,EAAesB,EAAU3N,WACzBsM,EAAoBH,EAAU1F,kBAC9B8F,EAAoBoB,EAAUv6C,OAAOqzC,kBACrCkG,EAAclwD,SAAQ,SAAUia,GAC9Bi3C,EAAUv6C,OAAOw6C,WAAWl3C,EAAMi3C,MAEpCtnD,KAAKogB,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,IAErDgK,KAAKic,OAAOkkC,UAAU,YAAa,CACjCvvC,MAAO01C,EAAcpwD,OACrBsxD,WAAYlB,EAAcpoD,IAAIs+C,GAC9BiL,cAAe3B,EAAU1F,kBACzBsH,cAAenB,EAAUx5C,OAAOqzC,kBAChCuH,SAAU9B,EAAYlM,WACtBiO,SAAUrB,EAAU5M,WACpBoM,aAAcA,EACdC,aAAcA,EACdC,kBAAmBA,EACnBC,kBAAmBA,EACnBvG,aAAcA,EACdM,aAAcjgD,KAAKic,OAAO2jC,4BAK7B,GAAe,KAAX/8B,EAELwjC,IAAWpjC,IAGbwiC,EAAWzlD,KAAK6nD,mBAGd7nD,KAAKic,OAAOge,UAAS,GACrBwrB,EAASrlC,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,KAG3D+sB,GAAU,IACAsjC,GAAU7T,GAAWvvB,GAAYyE,IAG3C+9B,EAAWzlD,KAAK6nD,oBAGdzB,EAAiBpmD,KAAKic,OAAOmqC,gBACd5xC,MAAQ4xC,EAAe5xC,OAASxU,KAC/ComD,EAAezxC,IAAM8wC,EACrBU,EAAQnmD,KAAKic,OAAO6rC,mBAAmB1B,EAAe5xC,MAAO4xC,EAAezxC,KAC5E3U,KAAKic,OAAO+d,OAAOmsB,GACnBV,EAASrlC,MAAM,UAGjB2C,GAAU,GACDsjC,GAAUpjC,GAAYyE,KAG/B+9B,EAAWc,EAAUsB,kBAELpC,EAAS14C,SACvB4yC,EAAe3/C,KAAKic,OAAO2jC,kBAE3BiG,GADAC,EAAYS,EAAUx5C,QACE6sC,OAAO4M,EAAS7M,WAAa,IAAMmM,EAAU/J,OACrEgK,EAAeQ,EAAU5M,WACzBqM,EAAeP,EAAS9L,WACxBsM,EAAoBH,EAAU1F,kBAC9B8F,EAAoBT,EAAS14C,OAAOqzC,kBACpCkG,EAAclwD,SAAQ,SAAUia,GAC9Bo1C,EAAS14C,OAAOw6C,WAAWl3C,EAAMo1C,MAEnCzlD,KAAKogB,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,IAErDgK,KAAKic,OAAOkkC,UAAU,YAAa,CACjCvvC,MAAO01C,EAAcpwD,OACrBsxD,WAAYlB,EAAcpoD,IAAIs+C,GAC9BiL,cAAe3B,EAAU1F,kBACzBsH,cAAenB,EAAUx5C,OAAOqzC,kBAChCuH,SAAU9B,EAAYlM,WACtBiO,SAAUrB,EAAU5M,WACpBoM,aAAcA,EACdC,aAAcA,EACdC,kBAAmBA,EACnBC,kBAAmBA,EACnBvG,aAAcA,EACdM,aAAcjgD,KAAKic,OAAO2jC,qBAI9B78B,GAAU,QAEP,GAAe,KAAXF,GAET,GAAIwjC,IAAWpjC,EAAU,CAGvB,IAAI8kC,EAAc/nD,KAAKgoD,aAAahyD,GAEhC+xD,GACF/nD,KAAKogB,MAAMpgB,KAAK+mD,gBAAgBgB,IAGlChlC,GAAU,OACL,GAAIsjC,GAAUpjC,GAAYyE,EAAU,CAEzC,IAEIugC,EAFO1B,EAAU9I,SAEFyK,gBAEfD,IACFxC,EAAWjN,EAAK6O,kBAAkBY,KAElBxC,EAAS14C,SAAW04C,EAAS0C,cAC3CxI,EAAe3/C,KAAKic,OAAO2jC,kBAE3BiG,GADAC,EAAYS,EAAUx5C,QACE6sC,OAAO4M,EAAS7M,WAAa,IAAMmM,EAAU/J,OACrEgK,EAAeQ,EAAU5M,WACzBqM,EAAeP,EAAS9L,WACxBsM,EAAoBH,EAAU1F,kBAC9B8F,EAAoBT,EAAS14C,OAAOqzC,kBACpCkG,EAAclwD,SAAQ,SAAUia,GAC9Bo1C,EAAS14C,OAAOw6C,WAAWl3C,EAAMo1C,MAEnCzlD,KAAKogB,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,IAErDgK,KAAKic,OAAOkkC,UAAU,YAAa,CACjCvvC,MAAO01C,EAAcpwD,OACrBsxD,WAAYlB,EAAcpoD,IAAIs+C,GAC9BiL,cAAe3B,EAAU1F,kBACzBsH,cAAenB,EAAUx5C,OAAOqzC,kBAChCuH,SAAU9B,EAAYlM,WACtBiO,SAAUrB,EAAU5M,WACpBoM,aAAcA,EACdC,aAAcA,EACdC,kBAAmBA,EACnBC,kBAAmBA,EACnBvG,aAAcA,EACdM,aAAcjgD,KAAKic,OAAO2jC,2BAK7B,GAAe,KAAX/8B,EAET,GAAIwjC,IAAWpjC,GAGbyiC,EAAW1lD,KAAKooD,eAGdpoD,KAAKic,OAAOge,UAAS,GACrByrB,EAAStlC,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,KAG3D+sB,GAAU,OACL,IAAKsjC,GAAU7T,GAAWvvB,GAAYyE,GAG3Cg+B,EAAW1lD,KAAKooD,gBAGdhC,EAAiBpmD,KAAKic,OAAOmqC,gBACd5xC,MAAQ4xC,EAAe5xC,OAASxU,KAC/ComD,EAAezxC,IAAM+wC,EACrBS,EAAQnmD,KAAKic,OAAO6rC,mBAAmB1B,EAAe5xC,MAAO4xC,EAAezxC,KAC5E3U,KAAKic,OAAO+d,OAAOmsB,GACnBT,EAAStlC,MAAM,UAGjB2C,GAAU,OACL,GAAIsjC,GAAUpjC,GAAYyE,EAAU,EAIvCg+B,EADEc,EAAS7N,SACA6N,EAASzK,OAASyK,EAASzK,OAAOqM,iBAAc3oD,EAEhD+mD,EAAS4B,eAIL1C,EAASyC,cACxBzC,EAAWA,EAAS34C,OAAO+yB,UAGzB4lB,GAAYA,aAAoBrH,IAClCqH,EAAWc,GAGb,IAAI6B,EAAa3C,IAAaA,EAAS0C,aAAe1C,EAAS34C,OAAOgvC,QAElEsM,GAAcA,EAAWt7C,SAC3B4yC,EAAe3/C,KAAKic,OAAO2jC,kBAE3BiG,GADAC,EAAYS,EAAUx5C,QACE6sC,OAAO4M,EAAS7M,WAAa,IAAMmM,EAAU/J,OACrEgK,EAAeQ,EAAU5M,WACzBqM,EAAeqC,EAAW1O,WAC1BsM,EAAoBH,EAAU1F,kBAC9B8F,EAAoBmC,EAAWt7C,OAAOqzC,kBACtCkG,EAAclwD,SAAQ,SAAUia,GAC9Bg4C,EAAWt7C,OAAOw6C,WAAWl3C,EAAMg4C,MAErCroD,KAAKogB,MAAMo4B,EAAKyG,cAAgBj/C,KAAK+mD,gBAAgB/wD,IAErDgK,KAAKic,OAAOkkC,UAAU,YAAa,CACjCvvC,MAAO01C,EAAcpwD,OACrBsxD,WAAYlB,EAAcpoD,IAAIs+C,GAC9BiL,cAAe3B,EAAU1F,kBACzBsH,cAAenB,EAAUx5C,OAAOqzC,kBAChC6F,kBAAmBA,EACnBC,kBAAmBA,EACnBH,aAAcA,EACdC,aAAcA,EACd2B,SAAU9B,EAAYlM,WACtBiO,SAAUrB,EAAU5M,WACpBgG,aAAcA,EACdM,aAAcjgD,KAAKic,OAAO2jC,qBAI9B78B,GAAU,EAIVA,IACFxD,EAAMC,iBACND,EAAM4D,qBAST,CACD1wB,IAAK,YACLN,MAAO,SAAmB+qD,GACxB,IAAI94B,EACApD,EACAqE,EAEA63B,IAKF73B,GADArE,GAFAoD,EAAQpkB,KAAKke,IAAI4kB,GAAG3hB,YAENA,YACIkE,UAClBrE,EAAMmB,YAAYiC,IAGhBpkB,KAAK24C,SACP34C,KAAK41C,SAASsH,GAEdl9C,KAAKg7C,OAAOkC,GAGVA,IAEFl8B,EAAMzN,YAAY6Q,GAClBpD,EAAMqE,UAAYA,KAQrB,CACD5yB,IAAK,mBACLN,MAAO,WACL,GAAiD,oBAAtC6N,KAAKic,OAAOre,QAAQ0qD,eAAgCtoD,KAAKke,IAAItC,MAAO,CAC7E,IAAIvL,EAAOrQ,KAEXqQ,EAAKsxC,kBAELtxC,EAAK4rC,YACL,IAAIsM,GAAc,EAAG7rB,EAA+Cjb,GAAGzhB,KAAKke,IAAItC,MAAO5b,KAAKic,OAAOy+B,kBACnG16C,KAAKic,OAAOre,QAAQ0qD,cAAcC,EAAavoD,KAAK7N,OAAO,SAAkBA,GACtD,kBAAVA,GAAsBA,IAAUke,EAAKle,QAE9Cke,EAAKsxC,kBAELtxC,EAAKle,MAAQA,EACbke,EAAK4rC,YAEL5rC,EAAK2oC,iCAWZ,CACDvmD,IAAK,gBACLN,MAAO,SAAuBq2D,GAC5B,MAAkB,WAAdxoD,KAAK+D,KACA/D,KAAK45C,OAAOjkD,QAAO,SAAUqkD,GAClC,OAAOA,IAAUwO,KAChBtqD,KAAI,SAAU87C,GACf,OAAOA,EAAM7V,SAIV,KAUR,CACD1xC,IAAK,kBACLN,MAAO,SAAyBgyC,EAAOhyC,EAAO4R,GAC5C,IAAI47C,EAAe3/C,KAAKic,OAAO2jC,kBAC3BjvC,EAAU,IAAI6nC,EAAKx4C,KAAKic,OAAQ,CAClCkoB,WAAiB1kC,IAAV0kC,EAAsBA,EAAQ,GACrChyC,WAAiBsN,IAAVtN,EAAsBA,EAAQ,GACrC4R,KAAMA,IAER4M,EAAQqqC,QAAO,GACf,IAAIyN,EAAazoD,KAAKogD,kBACtBpgD,KAAK+M,OAAOxB,aAAaoF,EAAS3Q,MAClCA,KAAKic,OAAOyoC,YAAYC,cACxBh0C,EAAQyP,MAAM,SACd,IAAI6/B,EAAejgD,KAAKic,OAAO2jC,kBAE/B5/C,KAAKic,OAAOkkC,UAAU,oBAAqB,CACzCgG,MAAO,CAACx1C,GACR85B,MAAO,CAAC95B,EAAQyvC,mBAChBqI,WAAYA,EACZlI,WAAYvgD,KAAK+M,OAAOqzC,kBACxBT,aAAcA,EACdM,aAAcA,MAWjB,CACDxtD,IAAK,iBACLN,MAAO,SAAwBgyC,EAAOhyC,EAAO4R,GAC3C,IAAI47C,EAAe3/C,KAAKic,OAAO2jC,kBAC3BjvC,EAAU,IAAI6nC,EAAKx4C,KAAKic,OAAQ,CAClCkoB,WAAiB1kC,IAAV0kC,EAAsBA,EAAQ,GACrChyC,WAAiBsN,IAAVtN,EAAsBA,EAAQ,GACrC4R,KAAMA,IAER4M,EAAQqqC,QAAO,GACfh7C,KAAK+M,OAAO27C,YAAY/3C,EAAS3Q,MACjCA,KAAKic,OAAOyoC,YAAYC,cACxBh0C,EAAQyP,MAAM,SACd,IAAI6/B,EAAejgD,KAAKic,OAAO2jC,kBAE/B5/C,KAAKic,OAAOkkC,UAAU,mBAAoB,CACxCgG,MAAO,CAACx1C,GACR85B,MAAO,CAAC95B,EAAQyvC,mBAChBuI,UAAW3oD,KAAKogD,kBAChBG,WAAYvgD,KAAK+M,OAAOqzC,kBACxBT,aAAcA,EACdM,aAAcA,MAWjB,CACDxtD,IAAK,YACLN,MAAO,SAAmBgyC,EAAOhyC,EAAO4R,GACtC,IAAI47C,EAAe3/C,KAAKic,OAAO2jC,kBAC3BjvC,EAAU,IAAI6nC,EAAKx4C,KAAKic,OAAQ,CAClCkoB,WAAiB1kC,IAAV0kC,EAAsBA,EAAQ,GACrChyC,WAAiBsN,IAAVtN,EAAsBA,EAAQ,GACrC4R,KAAMA,IAER4M,EAAQqqC,QAAO,GACfh7C,KAAK+M,OAAOwG,YAAY5C,GACxB3Q,KAAKic,OAAOyoC,YAAYC,cACxBh0C,EAAQyP,MAAM,SACd,IAAI6/B,EAAejgD,KAAKic,OAAO2jC,kBAE/B5/C,KAAKic,OAAOkkC,UAAU,cAAe,CACnCgG,MAAO,CAACx1C,GACR85B,MAAO,CAAC95B,EAAQyvC,mBAChBG,WAAYvgD,KAAK+M,OAAOqzC,kBACxBT,aAAcA,EACdM,aAAcA,MASjB,CACDxtD,IAAK,gBACLN,MAAO,SAAuBktD,GAC5B,IAAIC,EAAUt/C,KAAK+D,KAEnB,GAAIs7C,IAAYC,EAAS,CACvB,IAAIK,EAAe3/C,KAAKic,OAAO2jC,kBAC/B5/C,KAAK4oD,WAAWvJ,GAChB,IAAIY,EAAejgD,KAAKic,OAAO2jC,kBAE/B5/C,KAAKic,OAAOkkC,UAAU,aAAc,CAClCz7B,KAAM1kB,KAAKogD,kBACXd,QAASA,EACTD,QAASA,EACTM,aAAcA,EACdM,aAAcA,OAenB,CACDxtD,IAAK,OACLN,MAAO,SAAcuyB,EAAMsS,GACzB,IAAI6xB,IAAgB5yD,UAAUC,OAAS,QAAsBuJ,IAAjBxJ,UAAU,KAAmBA,UAAU,GAMnF,GAJoB,kBAATyuB,IACTA,GAAO,EAAGzb,EAAKm7B,WAAW1f,IAGvB1kB,KAAKi+C,aAAV,CAIAj+C,KAAK87C,aAGL,IAAIgN,EAAY9oD,KAAK45C,OACrB55C,KAAK45C,OAAS55C,KAAK45C,OAAO37C,SAE1B,IAAI8qD,EAAsB,SAAd/xB,GAAwB,EAAI,EAEtB,WAAdh3B,KAAK+D,KACP/D,KAAK45C,OAAO5hB,MAAK,SAAUlyB,EAAGC,GAC5B,OAAOgjD,EAAQlS,IAAsB/wC,EAAEq+B,MAAOp+B,EAAEo+B,UAIlDnkC,KAAK45C,OAAO5hB,MAAK,SAAUlyB,EAAGC,GAC5B,IAAIijD,EAAQljD,EAAEmjD,eAAevkC,GACzBwkC,EAAQnjD,EAAEkjD,eAAevkC,GAE7B,IAAKskC,EACH,OAAOD,EAGT,IAAKG,EACH,OAAQH,EAGV,IAAII,EAASH,EAAM72D,MACfi3D,EAASF,EAAM/2D,MAEnB,MAAsB,kBAAXg3D,GAAyC,kBAAXC,EAEhCD,EAASC,EAASL,EAAQI,EAASC,GAAUL,EAAQ,EAGvDA,EAAQlS,IAAsBsS,EAAQC,MAKjDppD,KAAKgkD,oBAELhkD,KAAKm9C,cAEiB,IAAlB0L,GACF7oD,KAAKic,OAAOkkC,UAAU,OAAQ,CAC5Bz7B,KAAM1kB,KAAKogD,kBACX0I,UAAWA,EACXO,UAAWrpD,KAAK45C,YASrB,CACDnnD,IAAK,SACLN,MAAO,SAAgBmuD,GACrB,IAAID,EAAWrgD,KAAK08C,mBACpB18C,KAAKu6B,SAAS+lB,GAEdtgD,KAAKic,OAAOkkC,UAAU,YAAa,CACjCz7B,KAAM1kB,KAAKogD,kBACXC,SAAUA,EACVC,SAAUtgD,KAAK08C,uBAWlB,CACDjqD,IAAK,iBACLN,MAAO,WACL,IACIm3D,EADAllC,EAAQpkB,KAAKke,IAAI4kB,GAAK9iC,KAAKke,IAAI4kB,GAAG3hB,gBAAa1hB,EAS/C29C,GALFkM,EADEtpD,KAAK24C,SACE34C,KAAKq9C,eAELr9C,KAAKy9C,WAGO6L,EAAOnoC,WAAamoC,EAAOhM,iBAAc79C,EAIhE,OAHAO,KAAKyf,KAAK,CACRk+B,oBAAoB,IAEf,CACLv5B,MAAOA,EACPg5B,OAAQA,KAUX,CACD3qD,IAAK,eACLN,MAAO,SAAsBiqD,GACvBA,EAAUh4B,QACRg4B,EAAUgB,OACZhB,EAAUh4B,MAAM7Y,aAAavL,KAAKy9C,SAAUrB,EAAUgB,QAEtDhB,EAAUh4B,MAAM7Q,YAAYvT,KAAKy9C,WAIjCz9C,KAAK24C,UACP34C,KAAKm9C,eASR,CACD1qD,IAAK,YACLN,MAAO,SAAmBqpC,GACxB,GAAKx7B,KAAKi+C,aAAV,CAIAj+C,KAAK87C,aAEL,IACE,IAAIyN,EAAmBvpD,KAAK08C,mBAExB2D,EAAWrgD,KAAK86B,WAChBwlB,EAAWtgD,KAAKic,OAAOre,QAAQ8mC,aAAa2b,EAAU7kB,GAC1Dx7B,KAAKu6B,SAAS+lB,GACd,IAAIkJ,EAAmBxpD,KAAK08C,mBAE5B18C,KAAKic,OAAOkkC,UAAU,YAAa,CACjCz7B,KAAM1kB,KAAKogD,kBACXC,SAAUkJ,EACVjJ,SAAUkJ,IAGZxpD,KAAKm9C,aACL,MAAOplD,GACPiI,KAAKm9C,aAELn9C,KAAKic,OAAO8M,SAAShxB,OAOxB,CACDtF,IAAK,UACLN,MAAO,WACL6N,KAAKic,OAAO5L,KAAKyrC,aACjB97C,KAAK87C,aAEL,IACE,IAAIyN,EAAmBvpD,KAAKic,OAAO5L,KAAKqsC,mBAExC18C,KAAKic,OAAOwtC,SAASzpD,MAErB,IAAIwpD,EAAmBxpD,KAAKic,OAAO5L,KAAKqsC,mBAExC18C,KAAKic,OAAOkkC,UAAU,YAAa,CACjCz7B,KAAM1kB,KAAKic,OAAO5L,KAAK+vC,kBACvBC,SAAUkJ,EACVjJ,SAAUkJ,IAEZ,MAAOzxD,GACPiI,KAAKic,OAAO8M,SAAShxB,GAbvB,QAeEiI,KAAKi8C,UAAU,CACbiB,SAAS,IAEXl9C,KAAKm9C,gBASR,CACD1qD,IAAK,iBACLN,MAAO,SAAwBuyB,GAI7B,IAHA,IAAIxzB,EAAI,EACJ8oD,EAAQh6C,KAELg6C,GAAS9oD,EAAIwzB,EAAKxuB,QACvB8jD,EAAQA,EAAM2B,oBAAoBj3B,EAAKxzB,IACvCA,IAGF,OAAO8oD,IAQR,CACDvnD,IAAK,sBACLN,MAAO,SAA6B83B,GAClC,GAAkB,WAAdjqB,KAAK+D,KAIT,OAAO/D,KAAK45C,OAAOp1B,MAAK,SAAUw1B,GAChC,OAAOA,EAAM7V,QAAUla,OAQ1B,CACDx3B,IAAK,eACLN,MAAO,WAML,OALK6N,KAAK+7C,SACR/7C,KAAK+7C,OAAS,IAAIsC,EAAWr+C,KAAKic,QAClCjc,KAAK+7C,OAAOkB,UAAUj9C,OAGjBA,KAAK+7C,OAAO0B,WAOpB,CACDhrD,IAAK,iBACLN,MAAO,WAKL,OAJK6N,KAAK8/B,WACR9/B,KAAK8/B,SAAW,IAAI4pB,EAAa1pD,KAAKic,OAAQjc,OAGzCA,KAAK8/B,SAAS2d,WAOtB,CACDhrD,IAAK,cACLN,MAAO,WACL,IAAIuR,EAAQ1D,KAAK+M,OAAO6sC,OAAOj2C,QAAQ3D,MACvC,OAAOA,KAAK+M,OAAO6sC,OAAOl2C,EAAQ,IAAM1D,KAAK+M,OAAOgvC,SAOrD,CACDtpD,IAAK,gBACLN,MAAO,WACL,IAAIszD,EAAW,KACXvnC,EAAMle,KAAKy9C,SAEf,GAAIv/B,GAAOA,EAAIiD,WAAY,CAEzB,IAAI8mC,EAAU/pC,EAEd,GACE+pC,EAAUA,EAAQC,gBAClBzC,EAAWjN,EAAK6O,kBAAkBY,SAC3BA,GAAWxC,GAAYA,aAAoBpH,IAAeoH,EAAS0C,aAG9E,OAAO1C,IAQR,CACDhzD,IAAK,YACLN,MAAO,WACL,IAAIuzD,EAAW,KACXxnC,EAAMle,KAAKy9C,SAEf,GAAIv/B,GAAOA,EAAIiD,WAAY,CAEzB,IAAIwkC,EAAUznC,EAEd,GACEynC,EAAUA,EAAQrI,YAClBoI,EAAWlN,EAAK6O,kBAAkB1B,SAC3BA,GAAWD,GAAYA,aAAoBrH,IAAeqH,EAASyC,aAG9E,OAAOzC,IAQR,CACDjzD,IAAK,aACLN,MAAO,WACL,IAAIo0D,EAAY,KACZroC,EAAMle,KAAKy9C,SAEf,GAAIv/B,GAAOA,EAAIiD,WAAY,CACzB,IAAIwoC,EAAWzrC,EAAIiD,WAAWyS,WAC9B2yB,EAAY/N,EAAK6O,kBAAkBsC,GAGrC,OAAOpD,IAQR,CACD9zD,IAAK,YACLN,MAAO,WACL,IAAIq0D,EAAW,KACXtoC,EAAMle,KAAKy9C,SAEf,GAAIv/B,GAAOA,EAAIiD,WAAY,CACzB,IAAIyoC,EAAU1rC,EAAIiD,WAAW0oC,UAG7B,IAFArD,EAAWhO,EAAK6O,kBAAkBuC,GAE3BA,GAAWpD,IAAaA,EAAS2B,aACtCyB,EAAUA,EAAQ1B,gBAClB1B,EAAWhO,EAAK6O,kBAAkBuC,GAItC,OAAOpD,IASR,CACD/zD,IAAK,mBACLN,MAAO,SAA0By6C,GAC/B,IAAI1uB,EAAMle,KAAKke,IAEf,OAAQ0uB,GACN,KAAK1uB,EAAI/rB,MACP,GAAI6N,KAAK64C,cACP,OAAO36B,EAAIimB,MAKf,KAAKjmB,EAAIimB,MACP,GAAInkC,KAAKi+C,aACP,OAAO//B,EAAI88B,OAKf,KAAK98B,EAAI88B,OACP,OAAO98B,EAAIO,KAEb,KAAKP,EAAIO,KACP,GAAIP,EAAIqgB,KACN,OAAOrgB,EAAIqgB,KAKf,QACE,OAAO,QAUZ,CACD9rC,IAAK,eACLN,MAAO,SAAsBy6C,GAC3B,IAAI1uB,EAAMle,KAAKke,IAEf,OAAQ0uB,GACN,KAAK1uB,EAAIqgB,KACP,OAAOrgB,EAAIO,KAEb,KAAKP,EAAIO,KACP,GAAIze,KAAKi+C,aACP,OAAO//B,EAAI88B,OAKf,KAAK98B,EAAI88B,OACP,GAAIh7C,KAAK64C,cACP,OAAO36B,EAAIimB,MAKf,KAAKjmB,EAAIimB,MACP,IAAKnkC,KAAKi+C,aACR,OAAO//B,EAAI/rB,MAKf,QACE,OAAO,QAYZ,CACDM,IAAK,kBACLN,MAAO,SAAyBgM,GAC9B,IAAIyzC,EAAS5xC,KAEb,OAAOpO,OAAO6C,KAAKuL,KAAKke,KAAKsG,MAAK,SAAU/yB,GAC1C,OAAOmgD,EAAO1zB,IAAIzsB,KAAU0M,OAU/B,CACD1L,IAAK,aACLN,MAAO,WACL,MAAqB,UAAd6N,KAAK+D,MAAkC,WAAd/D,KAAK+D,OAEtC,CACDtR,IAAK,eACLN,MAAO,SAAsBssB,EAAMs9B,GACjC,IAAI1rC,EAAOrQ,KACP8pD,EAAYz5C,EAAK4L,OAAOre,QAAQksD,UACpC,GAAiB,MAAbA,EAAJ,CAEIA,EAAU5zD,QAEZuoB,EAAK1qB,KAAK,CACRgQ,KAAM,cAIV,IAAIgmD,EAAa,SAAoBt4D,EAAMmc,GACzCyC,EAAK25C,UAAUv4D,EAAMmc,IAGnBq8C,EAAa,SAAoBx4D,EAAMmc,GACzCyC,EAAKs2C,gBAAgBl1D,EAAMmc,IAG7Bk8C,EAAU1zD,SAAQ,SAAU8zD,GAC1BzrC,EAAK1qB,KAAK,CACRoX,KAAM++C,EAAS/+C,KACfrB,UAAWogD,EAASpgD,WAAa,yBACjCsV,MAAO8qC,EAAS9qC,MAChBC,MAAO08B,EAASgO,EAAWr3D,KAAKsN,KAAMkqD,EAAS/lB,MAAO+lB,EAAS/3D,OAAS83D,EAAWv3D,KAAKsN,KAAMkqD,EAAS/lB,MAAO+lB,EAAS/3D,eAY5H,CACDM,IAAK,kBACLN,MAAO,SAAyBisB,EAAQG,GACtC,IAAIlO,EAAOrQ,KACP8d,EAAQ,GAgFZ,GA9EI9d,KAAK0nB,SAASv1B,OAChB2rB,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,QACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,aAClC3W,UAAW,mBAAqB9J,KAAK+D,KACrC2b,QAAS,CAAC,CACRvU,MAAM,EAAGy6B,EAAoBnlB,IAAI,QACjC3W,UAAW,wBAAwC,SAAd9J,KAAK+D,KAAkB,uBAAyB,IACrFqb,OAAO,EAAGwmB,EAAoBnlB,IAAI,YAClCpB,MAAO,WACLhP,EAAK85C,cAAc,UAEpB,CACDh/C,MAAM,EAAGy6B,EAAoBnlB,IAAI,SACjC3W,UAAW,yBAAyC,UAAd9J,KAAK+D,KAAmB,uBAAyB,IACvFqb,OAAO,EAAGwmB,EAAoBnlB,IAAI,aAClCpB,MAAO,WACLhP,EAAK85C,cAAc,WAEpB,CACDh/C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,0BAA0C,WAAd9J,KAAK+D,KAAoB,uBAAyB,IACzFqb,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAK85C,cAAc,YAEpB,CACDh/C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,0BAA0C,WAAd9J,KAAK+D,KAAoB,uBAAyB,IACzFqb,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAK85C,cAAc,eAMvBnqD,KAAKi+C,eACHj+C,KAAKic,OAAOre,QAAQsoC,YACtBpoB,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,QACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,YAAa,CAC7C1c,KAAM/D,KAAK+D,OAEb+F,UAAW,sBACXuV,MAAO,WACLhP,EAAK8W,mBAKPnnB,KAAKic,OAAOre,QAAQuoC,iBACtBroB,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,aACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,iBAAkB,CAClD1c,KAAM/D,KAAK+D,OAEb+F,UAAW,uBACXuV,MAAO,WACLhP,EAAK6W,wBAKPlnB,KAAK+M,QACP+Q,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,WACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,eAAgB,CAChD1c,KAAM/D,KAAK+D,OAEb+F,UAAW,qBACXuV,MAAO,WACLhP,EAAKuwB,cAMT5gC,KAAK+M,QAAU/M,KAAK+M,OAAOkxC,aAAc,CACvCngC,EAAM5nB,QAER4nB,EAAM/pB,KAAK,CACTgQ,KAAM,cAKV,IAAI61C,EAASvpC,EAAKtD,OAAO6sC,OAEzB,GAAIvpC,IAASupC,EAAOA,EAAO1jD,OAAS,GAAI,CACtC,IAAIk0D,EAAgB,CAAC,CACnBj/C,MAAM,EAAGy6B,EAAoBnlB,IAAI,QACjC3W,UAAW,uBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,YAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,GAAI,UAExB,CACD7+C,MAAM,EAAGy6B,EAAoBnlB,IAAI,SACjC3W,UAAW,wBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,aAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,MAEpB,CACD7+C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,yBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,MAEpB,CACD7+C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,yBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,GAAI,aAG3B35C,EAAKg6C,aAAaD,GAAe,GACjCtsC,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,cACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,eAClCR,cAAc,EAAG2lB,EAAoBnlB,IAAI,sBACzC3W,UAAW,oBACXuV,MAAO,WACLhP,EAAK25C,UAAU,GAAI,GAAI,SAEzBtqC,QAAS0qC,IAKb,IAAIE,EAAgB,CAAC,CACnBn/C,MAAM,EAAGy6B,EAAoBnlB,IAAI,QACjC3W,UAAW,uBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,YAClCpB,MAAO,WACLhP,EAAKs2C,gBAAgB,GAAI,GAAI,UAE9B,CACDx7C,MAAM,EAAGy6B,EAAoBnlB,IAAI,SACjC3W,UAAW,wBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,aAClCpB,MAAO,WACLhP,EAAKs2C,gBAAgB,GAAI,MAE1B,CACDx7C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,yBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAKs2C,gBAAgB,GAAI,MAE1B,CACDx7C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,yBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAKs2C,gBAAgB,GAAI,GAAI,aAGjCt2C,EAAKg6C,aAAaC,GAAe,GACjCxsC,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,eAClCR,cAAc,EAAG2lB,EAAoBnlB,IAAI,aACzC3W,UAAW,oBACXuV,MAAO,WACLhP,EAAKs2C,gBAAgB,GAAI,GAAI,SAE/BjnC,QAAS4qC,IAGPtqD,KAAK0nB,SAASyc,QAEhBrmB,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,iBACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,kBAClC3W,UAAW,uBACXuV,MAAO,WACLm5B,EAAKiO,YAAYp2C,MAIrByN,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,cACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,eAClC3W,UAAW,oBACXuV,MAAO,WACLm5B,EAAKkO,SAASr2C,OAMtB,GAAIrQ,KAAKic,OAAOre,QAAQ2sD,aAAc,CACpC,IAAI7lC,EAAOrU,EAAKmpC,UAChB17B,EAAQ9d,KAAKic,OAAOre,QAAQ2sD,aAAazsC,EAAO,CAC9C/Z,KAAM,SACN2gB,KAAMA,EACN+lB,MAAO,CAAC/lB,KAID,IAAI7G,EAA6BkN,EAAEjN,EAAO,CACnD1M,MAAOmN,IAEJyM,KAAK5M,EAAQpe,KAAKic,OAAOy+B,oBAM/B,CACDjoD,IAAK,gBACLN,MAAO,WACL,IAAIke,EAAOrQ,KACPuM,EAAYvM,KAAKic,OAAOre,QAAQmrC,aAAe3D,EAAoC4D,GACnF1hB,EAAOtnB,KAAK86B,YAShB,EAAGgc,EAAiB3vB,eAAe5a,EAAW+a,GAP9C,SAAgB2hB,GACd,IAAIvkB,EAAOukB,EAASvkB,KAChB8lC,GAAY,EAAGvhD,EAAKm7B,WAAW1f,GACnCrU,EAAK44B,SAAWA,EAChB54B,EAAK2nB,KAAKwyB,EAAWvhB,EAASjS,aAG4B3mB,EAAK44B,YAMlE,CACDx2C,IAAK,qBACLN,MAAO,WACL,IAAIggD,EAASnyC,KAETyqD,EAAuBzqD,KAAKic,OAAOre,QACnCmrC,EAAc0hB,EAAqB1hB,YACnChF,EAAc0mB,EAAqB1mB,YACnCW,EAAe+lB,EAAqB/lB,aACpC8E,EAAmBihB,EAAqBjhB,iBACxCliB,EAAOtnB,KAAK86B,YAEhB,EAAGic,EAAsB7vB,oBAAoB,CAC3C3a,UAAWw8B,GAAe3D,EAAoC4D,GAC9D1hB,KAAMA,EACNkiB,iBAAkBA,EAElBzF,YAAaA,EACbW,aAAcA,EACd+E,YAAa,SAAqBjO,GAChC2W,EAAO1R,UAAUjF,QAWtB,CACD/oC,IAAK,WACLN,MAAO,SAAkBA,GACvB,OAAIA,aAAiByB,MACZ,QAGLzB,aAAiBP,OACZ,SAGY,kBAAVO,GAA6D,kBAAhC,EAAG8W,EAAKq7B,aAAanyC,GACpD,SAGF,SASR,CACDM,IAAK,cACLN,MAAO,SAAqBgZ,GAC1B,GAAoB,kBAATA,EACT,OAAO6J,OAAO7J,GAEd,IAAIu/C,EAAc11C,OAAO7J,GAAM5B,QAAQ,KAAM,SAC5CA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,QAAS,WAC7DA,QAAQ,KAAM,UACdA,QAAQ,KAAM,UAEX+d,EAAOxZ,KAAKC,UAAU28C,GACtBz4C,EAAOqV,EAAKplB,UAAU,EAAGolB,EAAKpxB,OAAS,GAM3C,OAJ0C,IAAtC8J,KAAKic,OAAOre,QAAQosC,gBACtB/3B,GAAO,EAAGhJ,EAAKghC,oBAAoBh4B,IAG9BA,IAUV,CACDxf,IAAK,gBACLN,MAAO,SAAuBw4D,GAC5B,IAAIrjC,EAAO,IAAMtnB,KAAK4qD,YAAYD,GAAe,IAEjD,OADkB,EAAG1hD,EAAKkI,OAAOmW,GACd/d,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,iBAAkB,KAAKA,QAAQ,SAAU,OAYjH,CACD9W,IAAK,cACLN,MAAO,SAAqBgZ,GAK1B,IAHA,IAAI0/C,EAAU,GACV35D,EAAI,EAEDA,EAAIia,EAAKjV,QAAQ,CACtB,IAAI3E,EAAI4Z,EAAK2/C,OAAO55D,GAEV,OAANK,EACFs5D,GAAW,MACI,OAANt5D,GACTs5D,GAAWt5D,EACXL,IAGU,MAFVK,EAAI4Z,EAAK2/C,OAAO55D,MAE6B,IAA7B,aAAayS,QAAQpS,KACnCs5D,GAAW,MAGbA,GAAWt5D,GAEXs5D,GADe,MAANt5D,EACE,MAEAA,EAGbL,IAGF,OAAO25D,IAOR,CACDp4D,IAAK,iBACLN,MAAO,WACL,IACI6a,EADA4D,EAAQ5Q,KAAK45C,OAAS55C,KAAK45C,OAAO1jD,OAAS,EAG/C,GAAkB,WAAd8J,KAAK+D,MAAmC,UAAd/D,KAAK+D,KAAkB,CACnD,GAAI/D,KAAKic,OAAOre,QAAQmtD,WACtB,IACE,IAAIjwB,EAAW96B,KAAK86B,SAASpoC,KAAKsN,MAClCgN,EAAWhN,KAAKic,OAAOre,QAAQmtD,WAAW,CACxCrmC,KAAM1kB,KAAKw5C,UACXwR,KAAMp6C,EACN7M,KAAM/D,KAAK+D,KAEX,YACE,OAAO+2B,OAIX,MAAO/iC,GACPC,QAAQC,MAAM,iCAAkCF,GAIpDiI,KAAKke,IAAI/rB,MAAM8a,YAA4B,WAAdjN,KAAK+D,KAAoB,KAAOiJ,GAAY4D,GAAS,IAAM,KAAO5D,GAAY4D,GAAS,OAQvH,CACDne,IAAK,4BACLN,MAAO,WAKD,IAAIjB,EAJR,GAAI8O,KAAK24C,WACP34C,KAAK8jD,iBAEe,cAAhB9jD,KAAK45C,QAGP,IAAK1oD,KAAK8O,KAAK45C,OACb55C,KAAK45C,OAAO1oD,GAAG+5D,iCAt5IuD1S,EAAsBv6B,EAAYlrB,UAAW6tB,GAAiBC,GAAa23B,EAAsBv6B,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IA65IjQ6gD,EAr4Ie,GAw4IxBA,EAAK1lD,UAAUm1B,kBAAoB,IAEnCuwB,EAAK1lD,UAAU6rD,mBAAqB,IAEpC,IAAIpF,EAA6B,IAqnBjC,SAAS6G,EAAgB/vC,GACvB,OAAOA,EAAK+vC,kBAId,SAAS5D,EAASnsC,GAChB,OAAOA,EAAKmsC,WAGd,SAAShB,EAAoB5oD,EAAQH,GACnC,OAAOb,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQH,GA7nBtD+lD,EAAKyG,kBAAex/C,EAMpB+4C,EAAKxe,OAAS,SAAUkxB,GACtBx5C,YAAW,YACT,EAAGzI,EAAKi2C,uBAAuBgM,KAC9B,IASL1S,EAAK2S,YAAc,SAAUhF,EAAO5mC,GAClC,IAAK3rB,MAAMW,QAAQ4xD,GACjB,OAAO3N,EAAK2S,YAAY,CAAChF,GAAQ5mC,GAGnC,GAAqB,IAAjB4mC,EAAMjwD,OAAV,CAIA,IAAIqwD,EAAYJ,EAAM,GAClBK,EAAWL,EAAMA,EAAMjwD,OAAS,GAChC6W,EAASw5C,EAAUx5C,OACnBq+C,EAAc5S,EAAK6O,kBAAkB9nC,EAAMvpB,QAC3CimB,EAASsqC,EAAUtqC,OAGnBovC,GAAU,EAAGpiD,EAAKqiD,gBAAgBF,EAAYltC,IAAI4kB,KAAM,EAAG75B,EAAKqiD,gBAAgB/E,EAAUroC,IAAI4kB,IAE7F7mB,EAAOsvC,YACVtvC,EAAOsvC,WAAY,EAAGtiD,EAAKgI,kBAAkBsO,EAAMmL,KAAM,aAAa,SAAUnL,GAC9Ei5B,EAAKgT,OAAOrF,EAAO5mC,OAIlBtD,EAAOwvC,UACVxvC,EAAOwvC,SAAU,EAAGxiD,EAAKgI,kBAAkBsO,EAAMmL,KAAM,WAAW,SAAUnL,GAC1Ei5B,EAAKkT,UAAUvF,EAAO5mC,OAI1BtD,EAAOyoC,YAAYE,OACnB3oC,EAAOsiB,KAAO,CACZotB,UAAWphD,SAAS6b,KAAKzN,MAAMizC,OAC/BjM,aAAc1jC,EAAO2jC,kBACrBiM,SAAU1F,EAAMjoD,IAAIkiD,GACpB0F,UAAW/4C,EACX84C,YAAa94C,EAAO6sC,OAAO4M,EAAS7M,WAAa,IAAM5sC,EAAOgvC,OAC9DkK,kBAAmBl5C,EAAOqzC,kBAC1B2F,aAAcQ,EAAU5M,WACxBmS,OAAQvsC,EAAM4lC,MACdkG,QAASA,EACTU,MAAOxF,EAAU5J,YAEnBpyC,SAAS6b,KAAKzN,MAAMizC,OAAS,OAC7BrsC,EAAMC,mBASRg5B,EAAKgT,OAAS,SAAUrF,EAAO5mC,GAC7B,IAAK3rB,MAAMW,QAAQ4xD,GACjB,OAAO3N,EAAKgT,OAAO,CAACrF,GAAQ5mC,GAG9B,GAAqB,IAAjB4mC,EAAMjwD,OAAV,CAKA,IAGI81D,EAAQC,EAAQC,EAASC,EAAQC,EACjCC,EAAUC,EACVC,EAASC,EAAUC,EAAYC,EAL/BzwC,EAASkqC,EAAM,GAAGlqC,OAClB0wC,EAASptC,EAAMqtC,MAAQ3wC,EAAOsiB,KAAK8sB,QACnCS,EAASvsC,EAAM4lC,MAIf0H,GAAQ,EAGRtG,EAAYJ,EAAM,GAClB2G,EAASvG,EAAUroC,IAAI4kB,GACvBiqB,GAAU,EAAG9jD,EAAKqiD,gBAAgBwB,GAClCE,EAAaF,EAAOjrC,aAExB,GAAI8qC,EAASI,EAAS,CAEpBf,EAASc,EAET,GACEd,EAASA,EAAO9D,gBAChBmE,EAAW7T,EAAK6O,kBAAkB2E,GAClCO,EAAUP,GAAS,EAAG/iD,EAAKqiD,gBAAgBU,GAAU,QAC9CA,GAAUW,EAASJ,GAExBF,IAAaA,EAASt/C,SACxBs/C,OAAW5sD,GAGR4sD,IAGHL,GADAI,EAASU,EAAO3rC,WAAWyS,YACTw4B,EAAO9O,iBAAc79C,GACvC4sD,EAAW7T,EAAK6O,kBAAkB2E,MAEjBzF,IACf8F,OAAW5sD,IAIX4sD,GAAYA,EAASlE,aAKnBwE,GAFJJ,GADAP,EAASK,EAASnuC,IAAI4kB,KACH,EAAG75B,EAAKqiD,gBAAgBU,GAAU,GAE9BgB,IACrBX,OAAW5sD,IAIX4sD,IAA8C,IAAjCpwC,EAAOre,QAAQqvD,eAA2BZ,EAASt/C,SAAWo5C,EAAM,GAAGp5C,SACtFo5C,EAAM/vD,SAAQ,SAAUia,GACtBg8C,EAASt/C,OAAOw6C,WAAWl3C,EAAMg8C,MAEnCQ,GAAQ,OAEL,CAEL,IAAIrG,EAAWL,EAAMA,EAAMjwD,OAAS,GAIpC,GAFAg2D,GADAC,EAAS3F,EAAS7N,UAAY6N,EAASzK,OAASyK,EAASzK,OAAO0B,SAAW+I,EAAStoC,IAAI4kB,IACrEqpB,EAAO7O,iBAAc79C,EAE3B,CACX+sD,GAAW,EAAGvjD,EAAKqiD,gBAAgBY,GACnCD,EAASC,EAET,GACEI,EAAW9T,EAAK6O,kBAAkB4E,GAE9BA,IACFQ,EAAaR,EAAO3O,aAAc,EAAGr0C,EAAKqiD,gBAAgBW,EAAO3O,aAAe,EAChFoP,EAAaT,EAASQ,EAAaD,EAAW,EAE1CF,GAAYA,EAASv/C,OAAO6sC,OAAO1jD,SAAWiwD,EAAMjwD,QAAUo2D,EAASv/C,OAAO6sC,OAAOuM,EAAMjwD,OAAS,KAAOswD,IAG7GuG,GAAW,IAGbd,EAASA,EAAO3O,mBAEX2O,GAAUU,EAASI,EAAUL,GAEtC,GAAIJ,GAAYA,EAASv/C,OAAQ,CAE/B,IAAImgD,EAAQpB,EAAS7vC,EAAOsiB,KAAKutB,OAC7BqB,EAAY93D,KAAK+3D,MAAMF,EAAQ,GAAK,GACpCnB,EAAQ9vC,EAAOsiB,KAAKwtB,MAAQoB,EAE5BE,EAAYf,EAAS3P,WAKzB,IAFAqP,EAASM,EAASpuC,IAAI4kB,IAAMwpB,EAASpuC,IAAI4kB,GAAGolB,gBAErCmF,EAAYtB,GAASC,GAAQ,CAMlC,GALAK,EAAW7T,EAAK6O,kBAAkB2E,GACd7F,EAAMzgC,MAAK,SAAUrV,GACvC,OAAOA,IAASg8C,GAAYA,EAASiB,eAAej9C,WAI/C,MAAIg8C,aAAoBhO,GAc7B,MAbA,IAAIzE,EAASyS,EAASt/C,OAAO6sC,OAE7B,GAAIA,EAAO1jD,SAAWiwD,EAAMjwD,QAAU0jD,EAAOuM,EAAMjwD,OAAS,KAAOswD,EAQjE,MAFA6G,GADAf,EAAW9T,EAAK6O,kBAAkB2E,IACbrP,WAQzBqP,EAASA,EAAO9D,gBAGdoE,aAAoBjO,IAAeiO,EAASnE,aAAemE,EAASv/C,OAAO+yB,SAASqoB,cACtFmE,EAAWA,EAASlE,aAIlBkE,KAA8C,IAAjCrwC,EAAOre,QAAQqvD,eAA2BX,EAASv/C,SAAWo5C,EAAM,GAAGp5C,SAAWu/C,EAASpuC,IAAI4kB,IAAMwpB,EAASpuC,IAAI4kB,KAAOqpB,EAAO7O,cAC/I6I,EAAM/vD,SAAQ,SAAUia,GACtBi8C,EAASv/C,OAAOw6C,WAAWl3C,EAAMi8C,MAEnCO,GAAQ,KAMZA,IAEF5wC,EAAOsiB,KAAKutB,OAASA,EACrB7vC,EAAOsiB,KAAKwtB,MAAQxF,EAAU5J,YAIhC1gC,EAAOsxC,gBAAgBZ,GACvBptC,EAAMC,mBASRg5B,EAAKkT,UAAY,SAAUvF,EAAO5mC,GAChC,IAAK3rB,MAAMW,QAAQ4xD,GACjB,OAAO3N,EAAKgT,OAAO,CAACrF,GAAQ5mC,GAG9B,GAAqB,IAAjB4mC,EAAMjwD,OAAV,CAIA,IAAIqwD,EAAYJ,EAAM,GAClBlqC,EAASsqC,EAAUtqC,OAEnBsqC,GAAaA,EAAUroC,IAAIO,MAC7B8nC,EAAUroC,IAAIO,KAAK2B,QAGrB,IAAIqnC,EAAgBxrC,EAAOsiB,KAAKunB,UAAU1F,kBACtCsH,EAAgBnB,EAAUx5C,OAAOqzC,kBACjCoN,EAAavxC,EAAOsiB,KAAKunB,YAAcS,EAAUx5C,OACjD46C,EAAW1rC,EAAOsiB,KAAKsnB,YAAYlM,WACnCiO,EAAWrB,EAAU5M,WACrBsM,EAAoBhqC,EAAOsiB,KAAK0nB,kBAChCF,EAAe9pC,EAAOsiB,KAAKwnB,aAC3BC,EAAewH,GAAczH,EAAe6B,EAAWA,EAAWzB,EAAMjwD,OAAS0xD,EAEhF4F,GAAczH,IAAiB6B,GAElC3rC,EAAOkkC,UAAU,YAAa,CAC5BvvC,MAAOu1C,EAAMjwD,OACbsxD,WAAYrB,EAAMjoD,IAAIs+C,GACtBiL,cAAeA,EACfC,cAAeA,EACfC,SAAUA,EACVC,SAAUA,EACV7B,aAAcA,EACdC,aAAcA,EACdC,kBAAmBA,EACnBC,kBAAmB,KAEnBvG,aAAc1jC,EAAOsiB,KAAKohB,aAC1BM,aAAchkC,EAAO2jC,oBAIzBr1C,SAAS6b,KAAKzN,MAAMizC,OAAS3vC,EAAOsiB,KAAKotB,UACzC1vC,EAAOyoC,YAAYI,SACnBqB,EAAM/vD,SAAQ,SAAUia,GACtBA,EAAK4rC,YAED18B,EAAMvpB,SAAWqa,EAAK6N,IAAIqgB,MAAQhf,EAAMvpB,SAAWqa,EAAK6N,IAAIO,MAC9DxC,EAAOyoC,YAAYC,wBAGhB1oC,EAAOsiB,KAEVtiB,EAAOsvC,aACT,EAAGtiD,EAAKkd,qBAAqB5G,EAAMmL,KAAM,YAAazO,EAAOsvC,kBACtDtvC,EAAOsvC,WAGZtvC,EAAOwvC,WACT,EAAGxiD,EAAKkd,qBAAqB5G,EAAMmL,KAAM,UAAWzO,EAAOwvC,gBACpDxvC,EAAOwvC,SAIhBxvC,EAAOwxC,iBACPluC,EAAMC,mBAWRg5B,EAAKyL,UAAY,SAAU/6B,GACzB,GAAIA,EAAM,KACR,OAAOA,EAAM,KAGf,IAAIwkC,EAAYxkC,EAAOykC,OAASzkC,EAAO0kC,OAAS1kC,EAAO2kC,MAEvD,GAAIH,EAAW,CACb,IAAIt+C,EAAQs+C,EAAU/3D,QAAO,SAAUm4D,GACrC,OAAOA,EAAK,QAGd,GAAI1+C,EAAMlZ,OAAS,EACjB,OAAOkZ,EAAM,GAAN,KAIX,OAAO,MAaTopC,EAAKkL,YAAc,SAAUqK,EAAgB5kC,EAAYzE,GAMvD,IALA,IAAIspC,EAAgB/3D,UAAUC,OAAS,QAAsBuJ,IAAjBxJ,UAAU,GAAmBA,UAAU,GAAK83D,EACpFE,EAAWvpC,EAAK1wB,MAAM,EAAG0wB,EAAKxuB,QAC9Bg4D,EAAUxpC,EAAK,GACfypC,EAAkB,CAACH,GAEd9oD,EAAK,EAAGuyC,EAAO,CAACuW,EAAcL,MAAOK,EAAcJ,MAAOI,EAAcH,OAAQ3oD,EAAKuyC,EAAKvhD,OAAQgP,IAAM,CAC/G,IAAIkpD,EAAa3W,EAAKvyC,GAElBtR,MAAMW,QAAQ65D,KAChBD,EAAkBA,EAAgBlwD,OAAOmwD,IAI7C,IACIC,EADAC,EAAYxW,EAA2BqW,GAG3C,IACE,IAAKG,EAAUr7D,MAAOo7D,EAAQC,EAAU37D,KAAKgO,MAAO,CAClD,IAAIuoB,EAASmlC,EAAMl8D,MAGnB,GAAI,SAFJ67D,EAAgB9kC,IAE6C,kBAAvB8kC,EAAcO,KAAmB,CACrE,IAAIC,EAEAr0C,EAAM6zC,EAAcO,KAExB,GAAIp0C,KAAOgP,EACT6kC,EAAgB7kC,EAAWhP,OACtB,KAAIA,EAAIs0C,WAAW,MAsBnB,IAA0G,KAAhE,QAApCD,EAAar0C,EAAI/K,MAAM,eAAoC,IAAfo/C,OAAwB,EAASA,EAAWt4D,QAAe,CAClH,IAAIw4D,EAAav0C,EAAIhY,MAAM,MACvBwsD,EAActX,EAAeqX,EAAY,GACzCE,EAAYD,EAAY,GACxBE,EAAeF,EAAY,GAE/B,GAAIC,KAAazlC,EAAY,CAC3B,IAAI2lC,EAAmB3lC,EAAWylC,GAC9BG,EAAY,CACdR,KAAM,KAAKtwD,OAAO4wD,IAEhBG,EAAc,GAOlB,OANAA,EAAYj7D,KAAKm6D,GAEbD,EAAS/3D,OAAS,GACpB84D,EAAYj7D,KAAK+B,MAAMk5D,EAAahY,EAAmBiX,IAGlDzV,EAAKkL,YAAYoL,EAAkB3lC,EAAY6lC,EAAaD,GAEnE,MAAMnzD,MAAM,+BAA+BqC,OAAOkc,IAGpD,MAAMve,MAAM,+BAA+BqC,OAAOkc,IA5ClD,IAAI80C,EAAU90C,EAAIjY,UAAU,GAAGC,MAAM,KACrC6rD,EAAgBD,EAEhB,IACImB,EADAC,EAAarX,EAA2BmX,GAG5C,IACE,IAAKE,EAAWl8D,MAAOi8D,EAASC,EAAWx8D,KAAKgO,MAAO,CACrD,IAAIyuD,EAAUF,EAAO/8D,MAErB,KAAIi9D,KAAWpB,GAGb,MAAMpyD,MAAM,+BAA+BqC,OAAOkc,IAFlD6zC,EAAgBA,EAAcoB,IAKlC,MAAOr3D,GACPo3D,EAAWlvD,EAAElI,GAXf,QAaEo3D,EAAW58B,MA+BjB,QAAgB9yB,IAAZyuD,EACF,OAAOF,EAGT,GAAuB,kBAAZE,GAuBX,GAAuB,kBAAZA,GAAyD,WAAjCpiB,EAAQkiB,EAAclwC,QAA+C,OAAxBkwC,EAAclwC,MAE5F,OADAkwC,EAAgBA,EAAclwC,MACvB06B,EAAKkL,YAAYqK,EAAgB5kC,EAAY8kC,EAAUD,OAzBhE,CACE,GAA0C,WAAtCliB,EAAQkiB,EAAcqB,aAAyD,OAA7BrB,EAAcqB,YAAuBnB,KAAWF,EAAcqB,WAElH,OADArB,EAAgBA,EAAcqB,WAAWnB,GAClC1V,EAAKkL,YAAYqK,EAAgB5kC,EAAY8kC,EAAUD,GAGhE,GAAiD,WAA7CliB,EAAQkiB,EAAcsB,oBAAuE,OAApCtB,EAAcsB,kBACzE,IAAK,IAAIrlC,KAAQ+jC,EAAcsB,kBAC7B,GAAIpB,EAAQ9+C,MAAM6a,GAEhB,OADA+jC,EAAgBA,EAAcsB,kBAAkBrlC,GACzCuuB,EAAKkL,YAAYqK,EAAgB5kC,EAAY8kC,EAAUD,GAKpE,GAAoD,WAAhDliB,EAAQkiB,EAAcuB,sBAExB,OADAvB,EAAgBA,EAAcuB,qBACvB/W,EAAKkL,YAAYqK,EAAgB5kC,EAAY8kC,EAAUD,KAWpE,MAAOj2D,GACPu2D,EAAUruD,EAAElI,GAhGd,QAkGEu2D,EAAU/7B,IAGZ,OAAO,MAQTimB,EAAKkO,SAAW,SAAUP,GACxB,IAAKvyD,MAAMW,QAAQ4xD,GACjB,OAAO3N,EAAKkO,SAAS,CAACP,IAGxB,GAAIA,GAASA,EAAMjwD,OAAS,EAAG,CAC7B,IAAIqwD,EAAYJ,EAAM,GAClBp5C,EAASw5C,EAAUx5C,OACnBkP,EAASsqC,EAAUtqC,OACnBuzC,EAAajJ,EAAU5M,WAC3B19B,EAAOyoC,YAAYC,cAEnB,IAAIhF,EAAe1jC,EAAO2jC,kBAC1BpH,EAAKiX,UAAUtJ,GACf,IAAIlG,EAAehkC,EAAO2jC,kBAEtBnV,EAAQ0b,EAAMjoD,IAAIkiD,GAEtB+F,EAAM/vD,SAAQ,SAAUia,GACtBA,EAAKtD,OAAO2iD,QAAQr/C,MAGtB4L,EAAOkkC,UAAU,cAAe,CAC9BgG,MAAOA,EACP1b,MAAOA,EACP8V,WAAYxzC,EAAOqzC,kBACnB18C,MAAO8rD,EACP7P,aAAcA,EACdM,aAAcA,MAWpBzH,EAAKiO,YAAc,SAAUN,GAC3B,IAAKvyD,MAAMW,QAAQ4xD,GACjB,OAAO3N,EAAKiO,YAAY,CAACN,IAG3B,GAAIA,GAASA,EAAMjwD,OAAS,EAAG,CAC7B,IAAIswD,EAAWL,EAAMA,EAAMjwD,OAAS,GAChC6W,EAASy5C,EAASz5C,OAClBkP,EAASuqC,EAASvqC,OACtBA,EAAOge,SAAShe,EAAOmqC,eAAeD,OAEtC,IAAIxG,EAAe1jC,EAAO2jC,kBACtBrB,EAAYiI,EACZmJ,EAASxJ,EAAMjoD,KAAI,SAAUmS,GAC/B,IAAIxS,EAAQwS,EAAKxS,QAEjB,GAAyB,WAArBwS,EAAKtD,OAAOhJ,KAAmB,CACjC,IAAIy+C,EAAqBnyC,EAAKtD,OAAO01C,gBACrC5kD,EAAMsmC,OAAQ,EAAGl7B,EAAKy5C,gBAAgBryC,EAAK8zB,MAAOqe,GAKpD,OAFAz1C,EAAO27C,YAAY7qD,EAAO0gD,GAC1BA,EAAY1gD,EACLA,KAGY,IAAjBsoD,EAAMjwD,OACsB,WAA1By5D,EAAO,GAAG5iD,OAAOhJ,MAGnB4rD,EAAO,GAAGzxC,IAAIimB,MAAM/2B,UAAY+4C,EAAM,GAAGvC,YAAYuC,EAAM,GAAGhiB,OAC9DwrB,EAAO,GAAGvvC,MAAM,UAEhBuvC,EAAO,GAAGvvC,QAGZnE,EAAO+d,OAAO21B,GAGhB,IAAI1P,EAAehkC,EAAO2jC,kBAE1B3jC,EAAOkkC,UAAU,iBAAkB,CACjC1V,MAAO0b,EAAMjoD,IAAIkiD,GACjBwP,WAAYD,EAAOzxD,IAAIkiD,GACvBuI,UAAWnC,EAASpG,kBACpBG,WAAYxzC,EAAOqzC,kBACnBT,aAAcA,EACdM,aAAcA,MAYpBzH,EAAK6O,kBAAoB,SAAUrxD,GACjC,KAAOA,GAAQ,CACb,GAAIA,EAAOqa,KACT,OAAOra,EAAOqa,KAGhBra,EAASA,EAAOmrB,aAYpBq3B,EAAKqX,oBAAsB,SAAU75D,GACnC,IAAIqa,EAAOmoC,EAAK6O,kBAAkBrxD,GAElC,GAAIqa,EAGF,IAFA,IAAItD,EAAS/W,GAAUA,EAAOmrB,WAEvBpU,GAAQ,CACb,GAAIA,IAAWsD,EAAK6N,IAAItC,MACtB,OAAO,EAGT7O,EAASA,EAAOoU,WAIpB,OAAO,GASTq3B,EAAKiX,UAAY,SAAUtJ,GACzB,GAAKvyD,MAAMW,QAAQ4xD,GAAnB,CAKA,IAAII,EAAYJ,EAAM,GAClBp5C,EAASw5C,EAAUx5C,OACnByiD,EAAajJ,EAAU5M,WAEvB5sC,EAAO6sC,OAAO4V,EAAarJ,EAAMjwD,QACnC6W,EAAO6sC,OAAO4V,EAAarJ,EAAMjwD,QAAQkqB,QAChCrT,EAAO6sC,OAAO4V,EAAa,GACpCziD,EAAO6sC,OAAO4V,EAAa,GAAGpvC,QAE9BrT,EAAOqT,aAbPo4B,EAAKiX,UAAU,CAACtJ,KAiCpB,IAAI9H,EA/9KJ,SAA2B7F,GAQzB,SAAS6F,EAAWpiC,GAElBjc,KAAKic,OAASA,EACdjc,KAAKke,IAAM,GAwOb,OArOAmgC,EAAWvrD,UAAY,IAAI0lD,EAM3B6F,EAAWvrD,UAAU2qD,OAAS,WAE5B,IAAIv/B,EAAMle,KAAKke,IAEf,GAAIA,EAAI4kB,GACN,OAAO5kB,EAAI4kB,GAGb9iC,KAAK+iD,qBAGL,IAAI+M,EAAWvlD,SAASiJ,cAAc,MAKtC,GAJAs8C,EAAShmD,UAAY,oBACrBgmD,EAASz/C,KAAOrQ,KAChBke,EAAI4kB,GAAKgtB,EAEwB,SAA7B9vD,KAAKic,OAAOre,QAAQvL,KAAiB,CAEvC6rB,EAAI8kC,OAASz4C,SAASiJ,cAAc,MAEpC,IAAI0vC,EAAS34C,SAASiJ,cAAc,MACpC0K,EAAIglC,OAASA,EACb,IAAIzkC,EAAOlU,SAASiJ,cAAc,UAClCiL,EAAK1a,KAAO,SACZ0a,EAAK3U,UAAY,kDACjB2U,EAAKW,MAAQ,0CACblB,EAAIO,KAAOA,EACXykC,EAAO3vC,YAAY2K,EAAIO,MAIzB,IAAIsxC,EAAWxlD,SAASiJ,cAAc,MAClCw8C,EAAUzlD,SAASiJ,cAAc,OAOrC,OANAw8C,EAAQz8C,YAAYhJ,SAASuV,eAAe,KAAM,EAAG8lB,EAAoBnlB,IAAI,SAAW,MACxFuvC,EAAQlmD,UAAY,sBACpBimD,EAASx8C,YAAYy8C,GACrB9xC,EAAI+xC,GAAKF,EACT7xC,EAAI/S,KAAO6kD,EACXhwD,KAAKi8C,YACE6T,GAQTzR,EAAWvrD,UAAU0mD,QAAU,WAC7B,OAAO,MAQT6E,EAAWvrD,UAAU6mD,SAAW,WAC9B,OAAO,MAOT0E,EAAWvrD,UAAUmpD,UAAY,SAAUr+C,GACzC,IAAIsgB,EAAMle,KAAKke,IACX6xC,EAAW7xC,EAAI+xC,GAEfF,IACFA,EAASp3C,MAAMqB,YAAgC,GAAlBha,KAAK28C,WAAkB,GAAK,MAG3D,IAAIqT,EAAU9xC,EAAI/S,KAEd6kD,IACFA,EAAQp8B,WAAW8U,UAAY,KAAM,EAAG9C,EAAoBnlB,IAAI,SAAW,IAAMzgB,KAAK+M,OAAOhJ,KAAO,KAKtG,IAAI+rD,EAAW5xC,EAAI4kB,GAEd9iC,KAAKmoD,YAaHjqC,EAAI4kB,GAAGlP,aACN1V,EAAI8kC,QACN8M,EAASv8C,YAAY2K,EAAI8kC,QAGvB9kC,EAAIglC,QACN4M,EAASv8C,YAAY2K,EAAIglC,QAG3B4M,EAASv8C,YAAYw8C,IArBnB7xC,EAAI4kB,GAAGlP,aACL1V,EAAI8kC,QACN8M,EAAS3tC,YAAYjE,EAAI8kC,QAGvB9kC,EAAIglC,QACN4M,EAAS3tC,YAAYjE,EAAIglC,QAG3B4M,EAAS3tC,YAAY4tC,KAuB3B1R,EAAWvrD,UAAUq1D,UAAY,WAC/B,OAAqC,IAA9BnoD,KAAK+M,OAAO6sC,OAAO1jD,QAU5BmoD,EAAWvrD,UAAU+xD,gBAAkB,SAAUzmC,EAAQG,GACvD,IAAIlO,EAAOrQ,KACPoqD,EAAgB,CAAC,CACnBj/C,MAAM,EAAGy6B,EAAoBnlB,IAAI,QACjC3W,UAAW,uBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,YAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,GAAI,UAExB,CACD7+C,MAAM,EAAGy6B,EAAoBnlB,IAAI,SACjC3W,UAAW,wBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,aAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,MAEpB,CACD7+C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,yBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,MAEpB,CACD7+C,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjC3W,UAAW,yBACXsV,OAAO,EAAGwmB,EAAoBnlB,IAAI,cAClCpB,MAAO,WACLhP,EAAK25C,UAAU,GAAI,GAAI,aAG3B35C,EAAKg6C,aAAaD,GAAe,GACjC,IAAItsC,EAAQ,CACZ,CACE3S,MAAM,EAAGy6B,EAAoBnlB,IAAI,cACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,mBAClCR,cAAc,EAAG2lB,EAAoBnlB,IAAI,sBACzC3W,UAAW,oBACXuV,MAAO,WACLhP,EAAK25C,UAAU,GAAI,GAAI,SAEzBtqC,QAAS0qC,IAGX,GAAIpqD,KAAKic,OAAOre,QAAQ2sD,aAAc,CACpC,IAAI7lC,EAAOrU,EAAKtD,OAAOysC,UACvB17B,EAAQ9d,KAAKic,OAAOre,QAAQ2sD,aAAazsC,EAAO,CAC9C/Z,KAAM,SACN2gB,KAAMA,EACN+lB,MAAO,CAAC/lB,KAID,IAAI7G,EAA6BkN,EAAEjN,EAAO,CACnD1M,MAAOmN,IAEJyM,KAAK5M,EAAQpe,KAAKic,OAAOy+B,mBAQhC2D,EAAWvrD,UAAUwyD,QAAU,SAAU/lC,GACvC,IAAIxb,EAAOwb,EAAMxb,KACb/N,EAASupB,EAAMvpB,QAAUupB,EAAMilC,WAC/BtmC,EAAMle,KAAKke,IAaf,GATIloB,IAFOkoB,EAAIO,OAGA,cAAT1a,EACF/D,KAAKic,OAAOyoC,YAAYz2C,UAAUjO,KAAK+M,QACrB,aAAThJ,GACT/D,KAAKic,OAAOyoC,YAAYC,eAKf,UAAT5gD,GAAoB/N,IAAWkoB,EAAIO,KAAM,CAC3C,IAAIimC,EAAc1kD,KAAKic,OAAOyoC,YAC9BA,EAAYz2C,UAAUjO,KAAK+M,QAC3B23C,EAAYE,QACZ,EAAG37C,EAAKwZ,cAAcvE,EAAIO,KAAM,uBAChCze,KAAK6kD,gBAAgB3mC,EAAIO,MAAM,YAC7B,EAAGxV,EAAKoZ,iBAAiBnE,EAAIO,KAAM,uBACnCimC,EAAYI,SACZJ,EAAYC,iBAIH,YAAT5gD,GACF/D,KAAK4X,UAAU2H,IAIZ8+B,EA4uKQ6R,CAAkB1X,GAC/BkR,EAluKJ,SAA6BlR,GAS3B,SAASkR,EAAaztC,EAAQlP,GAE5B/M,KAAKic,OAASA,EACdjc,KAAK+M,OAASA,EACd/M,KAAKke,IAAM,GAqIb,OAlIAwrC,EAAa52D,UAAY,IAAI0lD,EAM7BkR,EAAa52D,UAAU2qD,OAAS,WAC9B,GAAIz9C,KAAKke,IAAI4kB,GACX,OAAO9iC,KAAKke,IAAI4kB,GAMlB,GAHA9iC,KAAK+iD,sBAGA/iD,KAAKke,IAAI4kB,GAAI,CAChB,IAAI3kB,EAAKne,KACL+M,EAAS/M,KAAK+M,OACdojD,EAAiB5lD,SAASiJ,cAAc,KAC5C28C,EAAe58C,YAAYhJ,SAASuV,gBAAe,EAAG8lB,EAAoBnlB,IAAI,cAC9E0vC,EAAe5gB,KAAO,IAEtB4gB,EAAe7wC,QAAU,SAAUC,GAMjC,OAJAxS,EAAOqsC,cAAgB/jD,KAAK29B,MAAMjmB,EAAOqsC,cAAgBrsC,EAAOssC,sBAAwB,GAAKtsC,EAAOssC,sBACpGl7B,EAAG89B,YACHlvC,EAAOowC,aACP59B,EAAMC,kBACC,GAGT,IAAI4wC,EAAgB7lD,SAASiJ,cAAc,KAC3C48C,EAAc78C,YAAYhJ,SAASuV,gBAAe,EAAG8lB,EAAoBnlB,IAAI,aAC7E2vC,EAAc7gB,KAAO,IAErB6gB,EAAc9wC,QAAU,SAAUC,GAMhC,OAJAxS,EAAOqsC,cAAgBrhB,IACvB5Z,EAAG89B,YACHlvC,EAAOowC,aACP59B,EAAMC,kBACC,GAGT,IAAI6wC,EAAe9lD,SAASiJ,cAAc,OACtC88C,EAAW/lD,SAASuV,eAAe9f,KAAKuwD,oBAC5CF,EAAavmD,UAAY,uBACzBumD,EAAa98C,YAAY+8C,GACzBD,EAAa98C,YAAY48C,GACzBE,EAAa98C,YAAYhJ,SAASuV,eAAe,OACjDuwC,EAAa98C,YAAY68C,GACzBC,EAAa98C,YAAYhJ,SAASuV,eAAe,OACjD,IAAI0wC,EAAajmD,SAASiJ,cAAc,MACxCg9C,EAAWj9C,YAAY88C,GACvB,IAAII,EAASlmD,SAASiJ,cAAc,MAEH,SAA7BxT,KAAKic,OAAOre,QAAQvL,OACtBo+D,EAAOl9C,YAAYhJ,SAASiJ,cAAc,OAC1Ci9C,EAAOl9C,YAAYhJ,SAASiJ,cAAc,QAG5Ci9C,EAAOl9C,YAAYi9C,GACnBC,EAAO3mD,UAAY,uBACnB9J,KAAKke,IAAI4kB,GAAK2tB,EACdzwD,KAAKke,IAAImyC,aAAeA,EACxBrwD,KAAKke,IAAIoyC,SAAWA,EAItB,OADAtwD,KAAKi8C,YACEj8C,KAAKke,IAAI4kB,IAOlB4mB,EAAa52D,UAAUmpD,UAAY,SAAUr+C,GAC3C,GAAIoC,KAAKmoD,YAAa,CAIpB,GAFAnoD,KAAKke,IAAI4kB,GAAGzyB,KAAOrQ,KAAK+M,OAAO6sC,OAAO55C,KAAK+M,OAAOqsC,gBAE7Cp5C,KAAKke,IAAI4kB,GAAG3hB,WAAY,CAC3B,IAAIi8B,EAASp9C,KAAK+M,OAAOywC,aAErBJ,GACFA,EAAOj8B,WAAW5V,aAAavL,KAAKke,IAAI4kB,GAAIsa,GAKhDp9C,KAAKke,IAAIoyC,SAAS5nB,UAAY1oC,KAAKuwD,mBAEnCvwD,KAAKke,IAAImyC,aAAa13C,MAAM4qC,WAAqC,IAAvBvjD,KAAK28C,WAAa,GAAU,UAElE38C,KAAKke,IAAI4kB,IAAM9iC,KAAKke,IAAI4kB,GAAG3hB,YAC7BnhB,KAAKke,IAAI4kB,GAAG3hB,WAAWgB,YAAYniB,KAAKke,IAAI4kB,KAKlD4mB,EAAa52D,UAAUy9D,iBAAmB,WACxC,OAAO,EAAG3qB,EAAoBnlB,IAAI,iBAAkB,CAClD24B,cAAep5C,KAAK+M,OAAOqsC,cAC3BsX,YAAa1wD,KAAK+M,OAAO6sC,OAAO1jD,SAC7B,KAUPwzD,EAAa52D,UAAUq1D,UAAY,WACjC,OAAOnoD,KAAK+M,OAAO4rC,UAAY34C,KAAK+M,OAAO6sC,OAAO1jD,OAAS8J,KAAK+M,OAAOqsC,eAQzEsQ,EAAa52D,UAAUwyD,QAAU,SAAU/lC,GAG5B,YAFFA,EAAMxb,MAGf/D,KAAK4X,UAAU2H,IAIZmqC,EAglKUiH,CAAoBnY,GAMvC,SAASoY,EAA6B56D,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAWxT,IAAIooD,EAA2B,WAC7B,SAASA,EAAY50C,GAQnB,SAAS60C,EAASpsC,GAChB,OAAOzI,EAAO5L,KAAK0gD,uBAAuBrsC,IAvBhD,SAAoC3G,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAevH07C,CAA2BhxD,KAAM6wD,GAEjC7wD,KAAKic,OAASA,EACdjc,KAAK+a,QAAU,GACf/a,KAAK0D,OAAS,EACd1D,KAAK8mB,QAOL9mB,KAAKixD,QAAU,CACbC,UAAW,CACT3vB,KAAM,SAAckX,GACDqY,EAASrY,EAAO8H,YACX3G,OAAOnB,EAAO/0C,OAC/BytD,YAAY1Y,EAAO4H,WAE1BjhB,KAAM,SAAcqZ,GACDqY,EAASrY,EAAO8H,YACX3G,OAAOnB,EAAO/0C,OAC/BytD,YAAY1Y,EAAO6H,YAG5B8Q,UAAW,CACT7vB,KAAM,SAAckX,GAClBqY,EAASrY,EAAO/zB,MAAM2sC,YAAY5Y,EAAO4H,WAE3CjhB,KAAM,SAAcqZ,GAClBqY,EAASrY,EAAO/zB,MAAM2sC,YAAY5Y,EAAO6H,YAG7CsI,WAAY,CACVrnB,KAAM,SAAckX,GAClBqY,EAASrY,EAAO/zB,MAAMkkC,WAAWnQ,EAAO6G,UAE1ClgB,KAAM,SAAcqZ,GAClBqY,EAASrY,EAAO/zB,MAAMkkC,WAAWnQ,EAAO4G,WAG5CiS,YAAa,CACX/vB,KAAM,SAAckX,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YACjC9H,EAAOhO,MAAMvsC,IAAI4yD,GAAU16D,SAAQ,SAAUia,GAC3C8Q,EAAWgB,YAAY9R,OAG3B+uB,KAAM,SAAcqZ,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YACjC9H,EAAO0N,MAAM/vD,SAAQ,SAAUia,GAC7B8Q,EAAW5N,YAAYlD,QAI7BkhD,kBAAmB,CACjBhwB,KAAM,SAAckX,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YACjC9H,EAAOhO,MAAMvsC,IAAI4yD,GAAU16D,SAAQ,SAAUia,GAC3C8Q,EAAWgB,YAAY9R,OAG3B+uB,KAAM,SAAcqZ,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YAC7BpC,EAAa2S,EAASrY,EAAOgQ,YACjChQ,EAAO0N,MAAM/vD,SAAQ,SAAUia,GAC7B8Q,EAAW5V,aAAa8E,EAAM8tC,QAIpCqT,iBAAkB,CAChBjwB,KAAM,SAAckX,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YACjC9H,EAAOhO,MAAMvsC,IAAI4yD,GAAU16D,SAAQ,SAAUia,GAC3C8Q,EAAWgB,YAAY9R,OAG3B+uB,KAAM,SAAcqZ,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YAC7BhC,EAAYuS,EAASrY,EAAOkQ,WAChClQ,EAAO0N,MAAM/vD,SAAQ,SAAUia,GAC7B8Q,EAAWunC,YAAYr4C,EAAMkuC,GAC7BA,EAAYluC,OAIlBohD,YAAa,CACXlwB,KAAM,SAAckX,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YAC7BpC,EAAah9B,EAAWy4B,OAAOnB,EAAO/0C,QAAUyd,EAAW46B,OAC/DtD,EAAO0N,MAAM/vD,SAAQ,SAAUia,GAC7B8Q,EAAW5V,aAAa8E,EAAM8tC,OAGlC/e,KAAM,SAAcqZ,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YACjC9H,EAAOhO,MAAMvsC,IAAI4yD,GAAU16D,SAAQ,SAAUia,GAC3C8Q,EAAWgB,YAAY9R,QAI7BqhD,eAAgB,CACdnwB,KAAM,SAAckX,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YACjC9H,EAAOmX,WAAW1xD,IAAI4yD,GAAU16D,SAAQ,SAAUia,GAChD8Q,EAAWgB,YAAY9R,OAG3B+uB,KAAM,SAAcqZ,GAClB,IAAIt3B,EAAa2vC,EAASrY,EAAO8H,YAC7BhC,EAAYuS,EAASrY,EAAOkQ,WACpBlQ,EAAOhO,MAAMvsC,IAAI4yD,GACvB16D,SAAQ,SAAUia,GACtB,IAAIxS,EAAQwS,EAAKxS,QAEjB,GAAwB,WAApBsjB,EAAWpd,KAAmB,CAChC,IAAIy+C,EAAqBrhC,EAAWshC,gBACpC5kD,EAAMsmC,OAAQ,EAAGl7B,EAAKy5C,gBAAgBryC,EAAK8zB,MAAOqe,GAGpDrhC,EAAWunC,YAAY7qD,EAAO0gD,GAC9BA,EAAY1gD,OAIlB8zD,UAAW,CACTpwB,KAAM,SAAckX,GAClB,IAAImZ,EAAgBd,EAASrY,EAAOgP,eAChCoK,EAAgBf,EAASrY,EAAOiP,eAChCoK,EAAgBF,EAAchY,OAAOnB,EAAOkP,WAAaiK,EAAc7V,OAE/D8V,EAAcjY,OAAO5lD,MAAMykD,EAAOmP,SAAUnP,EAAOmP,SAAWnP,EAAO7nC,OAC3Exa,SAAQ,SAAUia,EAAM3M,GAC5B2M,EAAK8zB,MAAQsU,EAAO+O,WAAW9jD,GAC/BkuD,EAAcrK,WAAWl3C,EAAMyhD,MAIA,OAA7BrZ,EAAOyN,oBACTzN,EAAOyN,kBAAoB2L,EAAczR,oBAG7ChhB,KAAM,SAAcqZ,GAClB,IAAImZ,EAAgBd,EAASrY,EAAOwN,mBAChC4L,EAAgBf,EAASrY,EAAOyN,mBAChC6L,EAAgBF,EAAcjY,OAAOnB,EAAOuN,eAAiB6L,EAAc9V,OAEnE6V,EAAchY,OAAO5lD,MAAMykD,EAAOsN,aAActN,EAAOsN,aAAetN,EAAO7nC,OACnFxa,SAAQ,SAAUia,EAAM3M,GAC5B2M,EAAK8zB,MAAQsU,EAAO+O,WAAW9jD,GAC/BmuD,EAActK,WAAWl3C,EAAM0hD,QAIrC/5B,KAAM,CACJuJ,KAAM,SAAckX,GAClB,IAAIpoC,EAAOygD,EAASrY,EAAO/zB,MAC3BrU,EAAKyrC,aACLzrC,EAAKupC,OAASnB,EAAOqQ,UACrBz4C,EAAK4rC,UAAU,CACbC,eAAe,IAEjB7rC,EAAK8sC,cAEP/d,KAAM,SAAcqZ,GAClB,IAAIpoC,EAAOygD,EAASrY,EAAO/zB,MAC3BrU,EAAKyrC,aACLzrC,EAAKupC,OAASnB,EAAO4Q,UACrBh5C,EAAK4rC,UAAU,CACbC,eAAe,IAEjB7rC,EAAK8sC,eAGT1c,UAAW,CACTc,KAAM,SAAckX,GAClBqY,EAASrY,EAAO/zB,MAAMo0B,iBAAiBL,EAAO4H,WAEhDjhB,KAAM,SAAcqZ,GAClBqY,EAASrY,EAAO/zB,MAAMo0B,iBAAiBL,EAAO6H,aA9LxD,IAAiCtiC,EAAa2C,EAAYC,EA0VxD,OA1V+B5C,EA2MP6yC,GA3MoBlwC,EA2MP,CAAC,CACpCluB,IAAK,WACLN,MAAO,cAaN,CACDM,IAAK,MACLN,MAAO,SAAa2R,EAAQ20C,GAC1Bz4C,KAAK0D,QACL1D,KAAK+a,QAAQ/a,KAAK0D,OAAS,CACzBI,OAAQA,EACR20C,OAAQA,EACR5hC,UAAW,IAAIC,MAGb9W,KAAK0D,MAAQ1D,KAAK+a,QAAQ7kB,OAAS,GACrC8J,KAAK+a,QAAQnX,OAAO5D,KAAK0D,MAAQ,EAAG1D,KAAK+a,QAAQ7kB,OAAS8J,KAAK0D,MAAQ,GAIzE1D,KAAKoa,aAMN,CACD3nB,IAAK,QACLN,MAAO,WACL6N,KAAK+a,QAAU,GACf/a,KAAK0D,OAAS,EAEd1D,KAAKoa,aAON,CACD3nB,IAAK,UACLN,MAAO,WACL,OAAO6N,KAAK0D,OAAS,IAOtB,CACDjR,IAAK,UACLN,MAAO,WACL,OAAO6N,KAAK0D,MAAQ1D,KAAK+a,QAAQ7kB,OAAS,IAM3C,CACDzD,IAAK,OACLN,MAAO,WACL,GAAI6N,KAAK0lC,UAAW,CAClB,IAAIjuC,EAAMuI,KAAK+a,QAAQ/a,KAAK0D,OAE5B,GAAIjM,EAAK,CACP,IAAIqM,EAAS9D,KAAKixD,QAAQx5D,EAAIqM,QAE9B,GAAIA,GAAUA,EAAOy9B,MAGnB,GAFAz9B,EAAOy9B,KAAK9pC,EAAIghD,QAEZhhD,EAAIghD,OAAOkH,aACb,IACE3/C,KAAKic,OAAO+1C,gBAAgBv6D,EAAIghD,OAAOkH,cACvC,MAAO5nD,GACPC,QAAQC,MAAMF,SAIlBC,QAAQC,MAAM,IAAI2D,MAAM,mBAAqBnE,EAAIqM,OAAS,MAI9D9D,KAAK0D,QAEL1D,KAAKoa,cAOR,CACD3nB,IAAK,OACLN,MAAO,WACL,GAAI6N,KAAK2lC,UAAW,CAClB3lC,KAAK0D,QACL,IAAIjM,EAAMuI,KAAK+a,QAAQ/a,KAAK0D,OAE5B,GAAIjM,EAAK,CACP,IAAIqM,EAAS9D,KAAKixD,QAAQx5D,EAAIqM,QAE9B,GAAIA,GAAUA,EAAOs7B,MAGnB,GAFAt7B,EAAOs7B,KAAK3nC,EAAIghD,QAEZhhD,EAAIghD,OAAOwH,aACb,IACEjgD,KAAKic,OAAO+1C,gBAAgBv6D,EAAIghD,OAAOwH,cACvC,MAAOloD,GACPC,QAAQC,MAAMF,SAIlBC,QAAQC,MAAM,IAAI2D,MAAM,mBAAqBnE,EAAIqM,OAAS,MAK9D9D,KAAKoa,cAOR,CACD3nB,IAAK,UACLN,MAAO,WACL6N,KAAKic,OAAS,KACdjc,KAAK+a,QAAU,GACf/a,KAAK0D,OAAS,OAtVqEktD,EAA6B5yC,EAAYlrB,UAAW6tB,GAAiBC,GAAagwC,EAA6B5yC,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IA0VtRk5D,EAjVsB,GAwV/B,SAASoB,EAA2Bj8D,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAatT,IAAIypD,EAAyB,WAC3B,SAASA,EAAUj2C,EAAQ1P,IAhB7B,SAAkCwR,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAiBrH68C,CAAyBnyD,KAAMkyD,GAE/B,IAAIE,EAAYpyD,KAChBA,KAAKic,OAASA,EACdjc,KAAKqyD,aAAU5yD,EACfO,KAAKsyD,MAAQ,IAEbtyD,KAAKuyD,cAAW9yD,EAChBO,KAAKw+C,QAAU,KACfx+C,KAAKke,IAAM,GACXle,KAAKke,IAAI3R,UAAYA,EACrB,IAAIimD,EAAUjoD,SAASiJ,cAAc,OACrCxT,KAAKke,IAAIs0C,QAAUA,EACnBA,EAAQ1oD,UAAY,oBACpByC,EAAUgH,YAAYi/C,GACtB,IAAIhU,EAAUj0C,SAASiJ,cAAc,OACrCxT,KAAKke,IAAIsgC,QAAUA,EACnBA,EAAQ10C,UAAY,qBACpB0oD,EAAQj/C,YAAYirC,GACpB,IAAIiU,EAAWloD,SAASiJ,cAAc,OACtCxT,KAAKke,IAAI7H,MAAQo8C,EACjBA,EAAS3oD,UAAY,mBACrB2oD,EAASrzC,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eAC5C+xC,EAAQj/C,YAAYk/C,GACpB,IAAIC,EAAgBnoD,SAASiJ,cAAc,UAC3Ck/C,EAAc3uD,KAAO,SACrB2uD,EAAc5oD,UAAY,qBAC1B2oD,EAASl/C,YAAYm/C,GACrB,IAAIx4B,EAAS3vB,SAASiJ,cAAc,SACpC0mB,EAAOn2B,KAAO,OACd/D,KAAKke,IAAIgc,OAASA,EAElBA,EAAO6T,QAAU,SAAUxuB,GACzB6yC,EAAUO,iBAAiBpzC,IAG7B2a,EAAOwW,SAAW,SAAUnxB,GAE1B6yC,EAAUQ,aAGZ14B,EAAOgV,UAAY,SAAU3vB,GAC3B6yC,EAAUjjB,WAAW5vB,IAGvB2a,EAAO24B,QAAU,SAAUtzC,GACzB6yC,EAAUrsC,SAASxG,IAGrBmzC,EAAcpzC,QAAU,SAAUC,GAChC2a,EAAOF,UAITy4B,EAASl/C,YAAY2mB,GACrB,IAAI44B,EAAavoD,SAASiJ,cAAc,UACxCs/C,EAAW/uD,KAAO,SAClB+uD,EAAW1zC,OAAQ,EAAGwmB,EAAoBnlB,IAAI,yBAC9CqyC,EAAWhpD,UAAY,kBAEvBgpD,EAAWxzC,QAAU,WACnB8yC,EAAUhzD,QAGZqzD,EAASl/C,YAAYu/C,GACrB,IAAIC,EAAiBxoD,SAASiJ,cAAc,UAC5Cu/C,EAAehvD,KAAO,SACtBgvD,EAAe3zC,OAAQ,EAAGwmB,EAAoBnlB,IAAI,6BAClDsyC,EAAejpD,UAAY,sBAE3BipD,EAAezzC,QAAU,WACvB8yC,EAAUn7C,YAGZw7C,EAASl/C,YAAYw/C,GAvFzB,IAA+B/0C,EAAa2C,EAAYC,EA8WtD,OA9W6B5C,EAgGPk0C,GAhGoBvxC,EAgGT,CAAC,CAChCluB,IAAK,OACLN,MAAO,SAAciuB,GACnB,GAAIpgB,KAAKw+C,QAAS,CAChB,IAAI96C,EAA6B,OAArB1D,KAAKgzD,YAAuBhzD,KAAKgzD,YAAc,EAAI,EAE3DtvD,EAAQ1D,KAAKw+C,QAAQtoD,OAAS,IAChCwN,EAAQ,GAGV1D,KAAKizD,iBAAiBvvD,EAAO0c,MAShC,CACD3tB,IAAK,WACLN,MAAO,SAAkBiuB,GACvB,GAAIpgB,KAAKw+C,QAAS,CAChB,IAAI1pC,EAAM9U,KAAKw+C,QAAQtoD,OAAS,EAC5BwN,EAA6B,OAArB1D,KAAKgzD,YAAuBhzD,KAAKgzD,YAAc,EAAIl+C,EAE3DpR,EAAQ,IACVA,EAAQoR,GAGV9U,KAAKizD,iBAAiBvvD,EAAO0c,MAWhC,CACD3tB,IAAK,mBACLN,MAAO,SAA0BuR,EAAO0c,GAEtC,GAAIpgB,KAAKkzD,aAAc,CACrB,IAAIzN,EAAWzlD,KAAKkzD,aAAa7iD,KAGhB,UAFFrQ,KAAKkzD,aAAatmB,YAGxB6Y,EAASpD,yBAEToD,EAAS3E,kBAGlB2E,EAASxJ,YAGX,IAAKj8C,KAAKw+C,UAAYx+C,KAAKw+C,QAAQ96C,GAIjC,OAFA1D,KAAKgzD,iBAAcvzD,OACnBO,KAAKkzD,kBAAezzD,GAItBO,KAAKgzD,YAActvD,EAEnB,IAAI2M,EAAOrQ,KAAKw+C,QAAQx+C,KAAKgzD,aAAa3iD,KACtCu8B,EAAO5sC,KAAKw+C,QAAQx+C,KAAKgzD,aAAapmB,KAE7B,UAATA,EACFv8B,EAAKgyC,mBAAoB,EAEzBhyC,EAAKywC,mBAAoB,EAG3B9gD,KAAKkzD,aAAelzD,KAAKw+C,QAAQx+C,KAAKgzD,aACtC3iD,EAAK4rC,YAEL5rC,EAAK4qC,UAAS,WACR76B,GACF/P,EAAK+P,MAAMwsB,QAShB,CACDn6C,IAAK,cACLN,MAAO,gBACgBsN,IAAjBO,KAAKqyD,UACPl/B,aAAanzB,KAAKqyD,gBACXryD,KAAKqyD,WAUf,CACD5/D,IAAK,mBACLN,MAAO,SAA0BotB,GAG/Bvf,KAAKmzD,cAEL,IAAIf,EAAYpyD,KAChBA,KAAKqyD,QAAU3gD,YAAW,SAAU6N,GAClC6yC,EAAUQ,cACT5yD,KAAKsyD,SAUT,CACD7/D,IAAK,YACLN,MAAO,SAAmBihE,GACxBpzD,KAAKmzD,cAEL,IAAIhhE,EAAQ6N,KAAKke,IAAIgc,OAAO/nC,MACxBgZ,EAAOhZ,EAAM+D,OAAS,EAAI/D,OAAQsN,EAEtC,GAAI0L,IAASnL,KAAKuyD,UAAYa,EAAa,CAEzCpzD,KAAKuyD,SAAWpnD,EAChBnL,KAAKw+C,QAAUx+C,KAAKic,OAAOie,OAAO/uB,GAClC,IAAIwzC,EAAqB3+C,KAAKw+C,QAAQ,GAAKx+C,KAAKw+C,QAAQ,GAAGnuC,KAAKsuC,mBAAqB5mB,IAEjFs7B,EAAoB,EAExB,GAAIrzD,KAAKkzD,aACP,IAAK,IAAIhiE,EAAI,EAAGA,EAAI8O,KAAKw+C,QAAQtoD,OAAQhF,IACvC,GAAI8O,KAAKw+C,QAAQttD,GAAGmf,OAASrQ,KAAKkzD,aAAa7iD,KAAM,CACnDgjD,EAAoBniE,EACpB,MAQN,GAHA8O,KAAKizD,iBAAiBI,GAAmB,QAG5B5zD,IAAT0L,EAAoB,CACtB,IAAImoD,EAActzD,KAAKw+C,QAAQtoD,OAG7B8J,KAAKke,IAAIsgC,QAAQvxC,YADC,IAAhBqmD,EAC6B,gBACN,IAAhBA,EACsB,cACtBA,EAAc3U,EACQA,EAAqB,eAErB2U,EAAc,mBAG/CtzD,KAAKke,IAAIsgC,QAAQvxC,YAAc,MAUpC,CACDxa,IAAK,aACLN,MAAO,SAAoBotB,GACzB,IAAIsD,EAAStD,EAAMuD,MAEJ,KAAXD,GAEF7iB,KAAKke,IAAIgc,OAAO/nC,MAAQ,GAExB6N,KAAK4yD,YAELrzC,EAAMC,iBACND,EAAM4D,mBACc,KAAXN,IAELtD,EAAMizB,QAERxyC,KAAK4yD,WAAU,GACNrzC,EAAM0D,SAEfjjB,KAAKiX,WAGLjX,KAAKZ,OAGPmgB,EAAMC,iBACND,EAAM4D,qBAST,CACD1wB,IAAK,WACLN,MAAO,SAAkBotB,GACvB,IAAIsD,EAAStD,EAAMyG,QAEJ,KAAXnD,GAA4B,KAAXA,GAEnB7iB,KAAK2yD,iBAAiBpzC,KAQzB,CACD9sB,IAAK,QACLN,MAAO,WACL6N,KAAKke,IAAIgc,OAAO/nC,MAAQ,GAExB6N,KAAK4yD,cAMN,CACDngE,IAAK,cACLN,MAAO,WACL6N,KAAK4yD,WAAU,KAOhB,CACDngE,IAAK,UACLN,MAAO,WACL,MAAiC,KAA1B6N,KAAKke,IAAIgc,OAAO/nC,QAMxB,CACDM,IAAK,UACLN,MAAO,WACL6N,KAAKic,OAAS,KACdjc,KAAKke,IAAI3R,UAAU4V,YAAYniB,KAAKke,IAAIs0C,SACxCxyD,KAAKke,IAAM,KACXle,KAAKw+C,QAAU,KACfx+C,KAAKkzD,aAAe,KAEpBlzD,KAAKmzD,mBA1W4ElB,EAA2Bj0C,EAAYlrB,UAAW6tB,GAAiBC,GAAaqxC,EAA2Bj0C,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IA8WhRu6D,EAnWoB,GA0W7B,SAASqB,EAA0Bv9D,EAAQ4nB,GAAS,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CAAE,IAAIuX,EAAamV,EAAM1sB,GAAIuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EAAO2W,EAAW/Q,cAAe,EAAU,UAAW+Q,IAAYA,EAAW9Q,UAAW,GAAM/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAcrT,IAAI+qD,EAAwB,WAC1B,SAASA,EAASjnD,EAAWhZ,IAjB/B,SAAiCwqB,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI1I,UAAU,qCAkBpHm+C,CAAwBzzD,KAAMwzD,GAE1BjnD,IACFvM,KAAKzM,KAAOA,EACZyM,KAAK0kB,KAAOna,SAASiJ,cAAc,OACnCxT,KAAK0kB,KAAK5a,UAAY,sBACtB9J,KAAK0kB,KAAKpX,aAAa,WAAY,GACnCtN,KAAK0zD,oBAAqB,EAC1BnnD,EAAUgH,YAAYvT,KAAK0kB,MAC3B1kB,KAAKw5B,SAvBX,IAA8Bxb,EAAa2C,EAAYC,EA6JrD,OA7J4B5C,EA+BPw1C,GA/BoB7yC,EA+BV,CAAC,CAC9BluB,IAAK,QACLN,MAAO,WACL6N,KAAK0kB,KAAKzX,aAAc,EAAG24B,EAAoBnlB,IAAI,gBAQpD,CACDhuB,IAAK,UACLN,MAAO,SAAiBwhE,GACtB,IAAIx1C,EAAKne,KAuDT,SAAS4zD,EAAgBD,GACvBx1C,EAAGu1C,oBAAqB,GACxB,EAAGzqD,EAAKwZ,cAActE,EAAGuG,KAAM,YAC/BvG,EAAGuG,KAAK/L,MAAM+C,MAAQyC,EAAGuG,KAAKvD,WAAWE,wBAAwB3F,MAAQ,GAAK,KAE9EyC,EAAGuG,KAAKosB,OAAS,WACf,GAAI3yB,EAAGu1C,mBAGL,OAFAv1C,EAAGu1C,oBAAqB,OACxBv1C,EAAGuG,KAAKtE,SAIV,EAAGnX,EAAKoZ,iBAAiBlE,EAAGuG,KAAM,YAClCvG,EAAGuG,KAAKosB,YAASrxC,EACjB0e,EAAGuG,KAAK/L,MAAM+C,MAAQ,GACtByC,EAAG01C,QAAQF,IAIf,SAASG,EAAgBC,GACnB/zD,KAAKg0D,mBACPh0D,KAAKg0D,kBAAkBD,GAI3B,SAASE,EAAwBF,EAASz1C,GACpCte,KAAKk0D,qBACPl0D,KAAKk0D,oBAAoBH,EAASz1C,GAjFtCte,KAAK0kB,KAAKzX,YAAc,GAEpB0mD,GAAYA,EAASz9D,QACvBy9D,EAASv9D,SAAQ,SAAU29D,EAASv/B,GAClC,IACI2/B,EADAC,EAAS7pD,SAASiJ,cAAc,QA+BpC,GA7BA4gD,EAAOtqD,UAAY,8BACnBsqD,EAAO5uC,UAAYuuC,EAAQtiE,KAC3B2iE,EAAO90C,QAAUw0C,EAAgBphE,KAAKyrB,EAAI41C,GAC1C51C,EAAGuG,KAAKnR,YAAY6gD,GAEhBL,EAAQl5C,SAAS3kB,UACnBi+D,EAAQ5pD,SAASiJ,cAAc,SACzB1J,UAAY,gCAClBqqD,EAAMlnD,YAAc,SAEpBknD,EAAM70C,QAAU,WACdnB,EAAGu1C,oBAAqB,EACxB,IAAI51C,EAAQ,GACZi2C,EAAQl5C,SAASzkB,SAAQ,SAAU4jD,GACjCl8B,EAAM/pB,KAAK,CACToX,KAAM6uC,EAAMvoD,KACZqY,UAAW,yBAA2B6pD,EAASn/B,EAAM,GAAK,GAAKm/B,EAASn/B,EAAM,GAAG/iC,OAASuoD,EAAMvoD,KAAO,uBAAyB,IAChI4tB,MAAO40C,EAAwBvhE,KAAKyrB,EAAI41C,EAAS/Z,EAAMvoD,WAGhD,IAAIosB,EAA6BkN,EAAEjN,EAAO,CACnDU,aAAa,IAEVwM,KAAKmpC,EAAOh2C,EAAG5qB,MAAM,IAG5B4qB,EAAGuG,KAAKnR,YAAY4gD,IAGlB3/B,IAAQm/B,EAASz9D,OAAS,EAAG,CAC/B,IAAIm+D,GAAeF,GAASC,GAAQ/yC,wBAAwBoS,MAM5D,GAJItV,EAAGuG,KAAK4vC,YAAcD,IACxBl2C,EAAGuG,KAAK6vC,WAAaF,GAGnBl2C,EAAGuG,KAAK6vC,WAAY,CACtB,IAAIC,EAAajqD,SAASiJ,cAAc,QACxCghD,EAAW1qD,UAAY,mCACvB0qD,EAAWp1C,MAAQ,gBACnBo1C,EAAWvnD,YAAc,MACzBunD,EAAWl1C,QAAUs0C,EAAgBlhE,KAAKyrB,EAAIw1C,GAC9Cx1C,EAAGuG,KAAKnZ,aAAaipD,EAAYr2C,EAAGuG,KAAKkP,mBA0ClD,CACDnhC,IAAK,oBACLN,MAAO,SAA2B8Z,GACR,oBAAbA,IACTjM,KAAKg0D,kBAAoB/nD,KAQ5B,CACDxZ,IAAK,4BACLN,MAAO,SAAmC8Z,GAChB,oBAAbA,IACTjM,KAAKk0D,oBAAsBjoD,QAxJmDsnD,EAA0Bv1C,EAAYlrB,UAAW6tB,GAAiBC,GAAa2yC,EAA0Bv1C,EAAa4C,GAAchvB,OAAOC,eAAemsB,EAAa,YAAa,CAAErmB,UAAU,IA6J7Q67D,EAjJmB,GAoJxBiB,EAAiB3jE,EAAoB,IACrC4jE,EAAsC5jE,EAAoB6B,EAAE8hE,GAkB5DE,EAAW,CAQfA,OAAkB,SAAUpoD,EAAW3O,GACrC,IAAK2O,EACH,MAAM,IAAI3Q,MAAM,kCAGlBoE,KAAKuM,UAAYA,EACjBvM,KAAKke,IAAM,GACXle,KAAK0kD,YAAc,IAAInO,EACvBv2C,KAAKse,eAAY7e,EAEjBO,KAAKomD,eAAiB,CACpBD,MAAO,IAETnmD,KAAK4pB,eAAiB,KAEtB5pB,KAAKk0C,mBAAqB,EAC1Bl0C,KAAK40D,WAAa,GAClB50D,KAAKgvC,sBAAmBvvC,EACxBO,KAAKqQ,KAAO,KACZrQ,KAAK60D,YAAc,KAEnB70D,KAAK80D,YAAYl3D,GAEbA,EAAQm4B,eACV/1B,KAAK+1B,aA78NT,SAAsBzS,IACpBA,EAASA,GAAU,IACZ3tB,OAAS2tB,EAAO3tB,QAAU,QACjC2tB,EAAOyxC,QAAUzxC,EAAOyxC,SAAW,UACnCzxC,EAAO0xC,YAAc1xC,EAAO0xC,aAAe,CAAC,GAAI,GAAI,GAEpD1xC,EAAO2xC,cAAgB3xC,EAAO2xC,gBAAiB,EAE/C,IAAI14C,EAAW,GACXD,EAAa,GACbk2C,EAAUjoD,SAASiJ,cAAc,OACrCg/C,EAAQ75C,MAAMuC,SAAW,WACzBs3C,EAAQ75C,MAAMu8C,QAAU,IACxB1C,EAAQ75C,MAAMwD,OAAS,IACvBq2C,EAAQ75C,MAAMuD,OAAS,IACvBs2C,EAAQ75C,MAAMC,QAAU,IACxB,IAIIu8C,EACAC,EALAC,EAAW9qD,SAASiJ,cAAc,OA+GtC,SAAS8hD,EAAwBC,GAC/B,IAAIhhD,EAAO+J,EAEP/T,SAASirD,cAEXjhD,EAAQhK,SAASirD,eAEXC,mBAAmBF,GAEzBhhD,EAAMqhC,UAAS,IAEft3B,EAAYpe,OAAO8hB,gBAET0zC,kBAEVp3C,EAAUq3C,SAASphD,IACVhK,SAAS+T,aAElB/J,EAAQhK,SAAS6b,KAAKuvB,mBAEhBigB,kBAAkBL,GAExBhhD,EAAMqhC,UAAS,GAEfrhC,EAAMylB,UAIV,SAAS67B,EAAsB1qD,GAmB7B,YAlBe1L,IAAX01D,KAEFA,EAAS5qD,SAASiJ,cAAc,SACzBmF,MAAM4oC,WAAa,SAC1B4T,EAAOx8C,MAAMuC,SAAW,QACxBi6C,EAAOx8C,MAAMu8C,QAAU,IACvBC,EAAOx8C,MAAMuD,OAAS,IACtBi5C,EAAOx8C,MAAMC,QAAU,IACvBu8C,EAAOx8C,MAAMwD,OAAS,IACtBg5C,EAAOx8C,MAAM6C,KAAO,IACpB25C,EAAOx8C,MAAMqE,WAAa,MAC1Bm4C,EAAOx8C,MAAM4D,SAAWA,EACxB44C,EAAOx8C,MAAM2D,WAAaA,EAC1B64C,EAAOx8C,MAAM+D,WAAa,SAC1BnS,SAAS6b,KAAK7S,YAAY4hD,IAG5BA,EAAOloD,YAAc9B,EACdgqD,EAAO9zC,wBAAwBoS,MA7JxC4hC,EAASvrD,UAAY,wBACrBurD,EAAS18C,MAAMuC,SAAW,WAC1Bm6C,EAAS18C,MAAM4oC,WAAa,SA8J5B,IAAIuU,EAAK,CACPC,YAAa,aAEbC,UAAW,aAEXC,QAAS,aAETC,MAAO,aAEPC,UAAW,EACXv4D,QAAS,GACTO,QAAS,KACTi4D,YAAa,KACbC,aAAc,KACd7D,QAASA,EAETxnC,KAAM,SAAc7sB,EAASuQ,EAAU9Q,GACrC,IAAIsmB,EAAQlkB,KAEZA,KAAKm2D,UAAYznD,EACjB1O,KAAKwyD,QAAQ3/B,SAET7yB,KAAKo2D,cACPp2D,KAAKo2D,YAAYvjC,SACjB7yB,KAAKo2D,YAAc,MAGJ,KAAb75C,IACFA,EAAWrc,OAAOo2D,iBAAiBn4D,GAASo4D,iBAAiB,cAG5C,KAAfj6C,IACFA,EAAapc,OAAOo2D,iBAAiBn4D,GAASo4D,iBAAiB,gBAGjElB,EAAS18C,MAAM4qC,WAAa,IAC5B8R,EAAS18C,MAAM69C,UAAYr4D,EAAQkjB,wBAAwB5F,OAAS,KACpEzb,KAAKpC,QAAUA,EAAQM,IAAI8W,QAEvBhV,KAAK7B,UAAYA,IACnB6B,KAAK7B,QAAUA,EACf6B,KAAKq2D,aAAe,CAClBI,OAAQz2D,KAAK7B,QAAQwa,MAAM89C,OAC3Bv7C,SAAUlb,KAAK7B,QAAQwa,MAAMuC,SAC7B6vB,gBAAiB/qC,KAAK7B,QAAQwa,MAAMoyB,gBACpC2rB,YAAa12D,KAAK7B,QAAQwa,MAAM+9C,cAIpC12D,KAAK7B,QAAQwa,MAAM89C,OAAS,EAC5Bz2D,KAAK7B,QAAQwa,MAAMuC,SAAW,WAC9Blb,KAAK7B,QAAQwa,MAAMoyB,gBAAkB,cACrC/qC,KAAK7B,QAAQwa,MAAM+9C,YAAc,cACjC12D,KAAKo2D,YAAcj4D,EAAQw4D,YAC3B32D,KAAKo2D,YAAYtsD,UAAY,oBAC7B9J,KAAKo2D,YAAYz9C,MAAM89C,OAAS,EAChCz2D,KAAKo2D,YAAYz9C,MAAMuC,SAAW,WAElClb,KAAKo2D,YAAYtb,QAAU,WACzB52B,EAAM/lB,QAAQiiB,SAGZpgB,KAAK7B,QAAQ8S,mBACfjR,KAAK7B,QAAQgoB,oBAAoB,UAAWywC,GAC5C52D,KAAK7B,QAAQ8S,iBAAiB,UAAW2lD,GAAgB,GACzD52D,KAAK7B,QAAQgoB,oBAAoB,OAAQ0wC,GACzC72D,KAAK7B,QAAQ8S,iBAAiB,OAAQ4lD,GAAe,IAGvDrE,EAAQj/C,YAAYvT,KAAKo2D,aACzB5D,EAAQj/C,YAAY8hD,GACpBl3D,EAAQ6L,cAAcuJ,YAAYi/C,GAClCxyD,KAAK82D,QAAQ34D,IAEfiqB,QAAS,SAAiBjd,GACxBnL,KAAK7B,QAAQqnB,UAAYra,GAE3Bmd,QAAS,WACP,OAAOtoB,KAAK7B,QAAQqnB,WAEtBuxC,aAAc,WACZ/2D,KAAKwyD,QAAQ3/B,SAET7yB,KAAKo2D,cACPp2D,KAAKo2D,YAAYvjC,SACjB7yB,KAAKo2D,YAAc,KACnBY,EAAmBv3C,OACnBzf,KAAK7B,QAAQwa,MAAM89C,OAASz2D,KAAKq2D,aAAaI,OAC9Cz2D,KAAK7B,QAAQwa,MAAMuC,SAAWlb,KAAKq2D,aAAan7C,SAChDlb,KAAK7B,QAAQwa,MAAMoyB,gBAAkB/qC,KAAKq2D,aAAatrB,gBACvD/qC,KAAK7B,QAAQwa,MAAM+9C,YAAc12D,KAAKq2D,aAAaK,cAGvDI,QAAS,SAAiB34D,GACxB,IAAIgN,EAAOhN,EAAQqnB,UACnBra,EAAOA,EAAK5B,QAAQ,KAAM,IAC1B,IAAI0tD,EAAgBj3D,KAAKpC,QAAQ1H,OAE7B2V,EAAQV,EAAKjJ,UAAUlC,KAAKm2D,WAChCf,EAAWjqD,EAAKjJ,UAAU,EAAGlC,KAAKm2D,WAElC,IAAK,IAAIjlE,EAAI,EAAGA,EAAI+lE,EAAe/lE,IAAK,CACtC,IAAI2jC,EAAM70B,KAAKpC,QAAQ1M,GAEvB,IAAKoyB,EAAO2xC,eAAoE,IAAnDpgC,EAAI9qB,cAAcpG,QAAQkI,EAAM9B,gBAAwBuZ,EAAO2xC,eAAwC,IAAvBpgC,EAAIlxB,QAAQkI,GAAc,CAErI7L,KAAKo2D,YAAY5wC,UAAY4vC,EAAWvpD,EAAQgpB,EAAI3yB,UAAU2J,EAAM3V,QACpE8J,KAAKo2D,YAAYc,cAAgB9B,EAAWvgC,EAC5C,OAKJwgC,EAAS18C,MAAM6C,KAAOq6C,EAAsBT,GAAY,KACxD4B,EAAmBjtC,QAAQle,EAAO7L,KAAKpC,SACvCoC,KAAKo2D,YAAYz9C,MAAM+C,MAAQm6C,EAAsB71D,KAAKo2D,YAAY5wC,WAAa,GAAK,KAClC,WAA9B6vC,EAAS18C,MAAM4oC,aAGrCvhD,KAAKo2D,YAAYz9C,MAAM+C,MAAQm6C,EAAsB71D,KAAKo2D,YAAY5wC,WAAa6vC,EAAS5uB,YAAc,QAI5GuwB,EArR2B,SAAkCpqB,EAAMkpB,GACrE,IAAI/f,EAAO,GACPohB,EAAK,EACLxP,GAAY,EAEZyP,EAAc,WAChBp3D,KAAK2Y,MAAMoyB,gBAAkB,QAG3BssB,EAAa,WACfr3D,KAAK2Y,MAAMoyB,gBAAkB,IAG3BusB,EAAc,WAChBtkE,EAAEysB,OACFzsB,EAAEukE,iBAAiBv3D,KAAKw3D,OAAQxkE,EAAE8iE,KAGhC9iE,EAAI,CACN8iE,GAAIA,EACJr2C,KAAM,WACJmtB,EAAKj0B,MAAM4oC,WAAa,UAE1Bx3B,QAAS,SAAiBle,EAAO5M,GAC/B2tC,EAAKj0B,MAAM4oC,WAAa,SACxB4V,EAAK,EACLvqB,EAAK3/B,YAAc,GACnB,IAAIwqD,EAAMv3D,OAAO+7B,aAAe1xB,SAASmtD,gBAAgBp1C,aACrD8Q,EAAOwZ,EAAKzrB,WAAWE,wBACvBs2C,EAAgBvkC,EAAK7X,IAAM,EAE3Bq8C,EAAmBH,EAAMrkC,EAAK1R,OAAS,EAE3Cq0B,EAAO,GACP,IAAI8hB,EAAoC,oBAAlBv0C,EAAO3tB,OAAwB2tB,EAAO3tB,OAAS0gD,EAAsB/yB,EAAO3tB,QAC9FmiE,EAAYD,EAAgB54D,EAAMtJ,QAAO,SAAUyZ,GACrD,OAAOyoD,EAASv0C,EAAO2xC,cAAgBppD,EAAQA,EAAM9B,cAAeuZ,EAAO2xC,cAAgB7lD,EAAQA,EAAMrF,cAAeuZ,MAD/F,GAoBP,KAjBpByyB,EAAO+hB,EAAS55D,KAAI,SAAUizC,GAC5B,IAAI4mB,EAASxtD,SAASiJ,cAAc,OACpCukD,EAAOjuD,UAAY,OAEnBiuD,EAAO36B,YAAcg6B,EACrBW,EAAO16B,WAAag6B,EACpBU,EAAOnnB,YAAc0mB,EACrBS,EAAOP,OAASrmB,EAChB4mB,EAAO9qD,YAAc,GACrB8qD,EAAOxkD,YAAYhJ,SAASuV,eAAeqxB,EAAIjvC,UAAU,EAAG2J,EAAM3V,UAClE,IAAI6P,EAAIwE,SAASiJ,cAAc,KAI/B,OAHAzN,EAAEwN,YAAYhJ,SAASuV,eAAeqxB,EAAIjvC,UAAU2J,EAAM3V,UAC1D6hE,EAAOxkD,YAAYxN,GACnB6mC,EAAKr5B,YAAYwkD,GACVA,MAGA7hE,SAIW,IAAhB6/C,EAAK7/C,SAAiB2V,EAAM9B,gBAAkBgsC,EAAK,GAAGyhB,OAAOztD,gBAAkBuZ,EAAO2xC,eAAiBppD,IAAUkqC,EAAK,GAAGyhB,QAAUl0C,EAAO2xC,gBAI1Ilf,EAAK7/C,OAAS,IAClBlD,EAAEib,UAAU,GAER0pD,EAAmC,EAAnBC,GAElBhrB,EAAKj0B,MAAM+H,UAAYi3C,EAAgB,KAEvC/qB,EAAKj0B,MAAM4C,IAAM,GACjBqxB,EAAKj0B,MAAM+I,OAAS,SAEpBkrB,EAAKj0B,MAAM4C,IAAM,OACjBqxB,EAAKj0B,MAAM+I,OAAS,GACpBkrB,EAAKj0B,MAAM+H,UAAYk3C,EAAmB,MAG5ChrB,EAAKj0B,MAAM4oC,WAAa,aAE1BtzC,UAAW,SAAmBvK,IACV,IAAdikD,GAAmB5R,EAAK4R,KAC1B5R,EAAK4R,GAAU79C,UAAY,QAG7BisC,EAAKryC,GAAOoG,UAAY,aACxB69C,EAAWjkD,GAEbs0D,KAAM,SAAc3f,GAElB,MAA8B,WAA1BzL,EAAKj0B,MAAM4oC,WAAgC,IAE3C4V,EAAK9e,KAAU,GAAK8e,EAAK9e,IAAStC,EAAK7/C,SAE3CihE,GAAM9e,EACNrlD,EAAEib,UAAUkpD,IAH8CphB,EAAKohB,GAAIK,SAMrED,iBAAkB,cAGpB,OAAOvkE,EAgLgBilE,CAAyB5C,EAAUS,GAExDc,EAAiB,SAAU32D,GAG7B,IAAI+lB,GADJ/lB,EAAIA,GAAKC,OAAOqf,OACAyG,QAChB,GAAwB,MAApBhmB,KAAKo2D,aAEO,KAAZpwC,GAKY,KAAZA,EAAJ,CAKA,GAAgB,KAAZA,EAMF,OAJA8vC,EAAGiB,eACHjB,EAAG33D,QAAQiiB,QACXngB,EAAEuf,sBACFvf,EAAEkjB,kBAIJ,IAAIhY,EAAOnL,KAAK7B,QAAQqnB,UAGxB,GAFAra,EAAOA,EAAK5B,QAAQ,KAAM,IAEtB+Z,EAAO0xC,YAAYrxD,QAAQqiB,IAAY,EAuBzC,OArBgB,IAAZA,GACwC,IAAtChmB,KAAKo2D,YAAY5wC,UAAUtvB,QAC7B4/D,EAAGI,aAIHl2D,KAAKo2D,YAAY5wC,UAAUtvB,OAAS,GAElC8J,KAAK7B,QAAQqnB,YAAcxlB,KAAKo2D,YAAYc,gBAC9Cl3D,KAAK7B,QAAQqnB,UAAYxlB,KAAKo2D,YAAYc,cAC1CpB,EAAGiB,eACHzB,EAAwBt1D,KAAK7B,SAEb,IAAZ6nB,IACF8vC,EAAG33D,QAAQiiB,QACXngB,EAAEuf,iBACFvf,EAAEkjB,qBAQV,GAAgB,KAAZ6C,EAAJ,CA0BA,GAAgB,KAAZA,EAAgB,CAElB,IAAIna,EAAQV,EAAKjJ,UAAUlC,KAAKm2D,WAC5B7kE,EAAI0lE,EAAmBgB,KAAK,GAUhC,MARU,KAAN1mE,GACFwkE,EAAGC,cAGL/1D,KAAKo2D,YAAY5wC,UAAY4vC,EAAWvpD,EAAQva,EAAE4Q,UAAU2J,EAAM3V,QAClE8J,KAAKo2D,YAAYc,cAAgB9B,EAAW9jE,EAC5C2O,EAAEuf,sBACFvf,EAAEkjB,kBAIJ,GAAgB,KAAZ6C,EAAgB,CAElB,IAAIkyC,EAAS/sD,EAAKjJ,UAAUlC,KAAKm2D,WAE7BgC,EAAKnB,EAAmBgB,MAAM,GAEvB,KAAPG,GACFrC,EAAGE,YAGLh2D,KAAKo2D,YAAY5wC,UAAY4vC,EAAW8C,EAASC,EAAGj2D,UAAUg2D,EAAOhiE,QACrE8J,KAAKo2D,YAAYc,cAAgB9B,EAAW+C,EAC5Cl4D,EAAEuf,iBACFvf,EAAEkjB,wBArDF,GAA0C,IAAtCnjB,KAAKo2D,YAAY5wC,UAAUtvB,OAE7B4/D,EAAGG,cACE,CACL,IAAImC,EAAkD,WAA9B/C,EAAS18C,MAAM4oC,WAGvC,GAFAyV,EAAmBv3C,OAEf24C,EAIF,OAHAtC,EAAGiB,eACHjB,EAAG33D,QAAQiiB,aACX01C,EAAGG,UAILj2D,KAAK7B,QAAQqnB,UAAYxlB,KAAKo2D,YAAYc,cAC1CpB,EAAGiB,eACHzB,EAAwBt1D,KAAK7B,SAC7B8B,EAAEuf,iBACFvf,EAAEkjB,qBAqCNzwB,KAAKojE,GAEHe,EAAgB,SAAuB52D,GACzC61D,EAAGiB,gBAYL,OATAC,EAAmBO,iBAAmB,SAAUpsD,EAAM2qD,GACpDA,EAAG33D,QAAQqnB,UAAYswC,EAAGM,YAAY5wC,UAAY4vC,EAAWjqD,EAC7D2qD,EAAGiB,eACH72D,OAAOwR,YAAW,WAChBokD,EAAG33D,QAAQiiB,QACXk1C,EAAwBQ,EAAG33D,WAC1B,IAGE23D,EAiiNe//B,CAAan4B,EAAQm4B,eAGvC/1B,KAAKpC,QAAQmd,SAAiC,SAAtB/a,KAAKpC,QAAQvL,OACvC2N,KAAK+a,QAAU,IAAI81C,EAAY7wD,OAGjCA,KAAKq4D,eAELr4D,KAAKs4D,gBAOP3D,QAAmB,WACb30D,KAAKghB,OAAShhB,KAAKuM,WAAavM,KAAKghB,MAAMG,aAAenhB,KAAKuM,YACjEvM,KAAKuM,UAAU4V,YAAYniB,KAAKghB,OAChChhB,KAAKghB,MAAQ,MAGfhhB,KAAKuM,UAAY,KACjBvM,KAAKke,IAAM,KACXle,KAAK8mB,QACL9mB,KAAKqQ,KAAO,KACZrQ,KAAK60D,YAAc,KACnB70D,KAAKse,UAAY,KACjBte,KAAKomD,eAAiB,KACtBpmD,KAAK40D,WAAa,KAClB50D,KAAK4pB,eAAiB,KACtB5pB,KAAKwmC,mBAAqB,KAEtBxmC,KAAK+a,UACP/a,KAAK+a,QAAQmH,UACbliB,KAAK+a,QAAU,MAGb/a,KAAKoyD,YACPpyD,KAAKoyD,UAAUlwC,UACfliB,KAAKoyD,UAAY,MAGfpyD,KAAK8nC,eACP9nC,KAAK8nC,aAAa5lB,UAClBliB,KAAK8nC,aAAe,MAItB9nC,KAAK2mC,kBAAkBzkB,WASzByyC,YAAuB,SAAU/2D,GAC/B,IAAIsmB,EAAQlkB,KAEZA,KAAKpC,QAAU,CACbs8B,QAAQ,EACRnf,SAAS,EACT1oB,KAAM,OACNZ,UAAMgO,EAENypB,OAAQ,KACRC,WAAY,KACZ4M,aAAc,KACdwiC,eAAe,EACftyB,aAAa,EACbgnB,eAAe,EACfuL,kBAAmB,KACnBhX,aAAa,EACb8G,cAAe,SAAuBv7C,EAAQ6O,EAAOxB,GACnD,GAAKs6C,IAA2B,CAG9B,IAEIn5C,EAAMxO,EAAOsU,wBAAwB9F,IAErCk9C,GADe,EAAGxvD,EAAKyvD,WAAW3rD,GAAQkvB,YACf1gB,EAJZ,KAIkCA,EAJlC,IAKnB,IAAKm5C,IAAL,CAA+B,CAC7B3nD,OAAQA,EACR6O,MAAOA,EACP+8C,MAAOF,EAAY,MAAQ,SAC3BG,OAAQ,SAAgBh9C,GACtB,IACIi9C,EAAgB,IADRj9C,EAAMk9C,KAAK,GACCl9C,EAAMi9C,IAAIxoC,OAAO,EAAG,GAC1CzU,EAAMi9C,IAERz+C,EAASy+C,MAEV7tC,YAEHhzB,QAAQmd,KAAK,+KAGjB0tC,cAAc,EACdf,gBAAiB,KACjB/d,YAAa8B,EAA+B7zC,EAC5C0yC,aAAcmB,EAAgCO,EAC9Ckf,QAAS,KACTpf,YAAY,EACZC,iBAAiB,GAGfvoC,IACFhM,OAAO6C,KAAKmJ,GAASxH,SAAQ,SAAU6zB,GACrC/F,EAAMtmB,QAAQqsB,GAAQrsB,EAAQqsB,MAGH,MAAzBrsB,EAAQqvD,eAA2C,MAAlBrvD,EAAQsrB,SAC3ClpB,KAAKpC,QAAQqvD,eAAgB,IAKjCjtD,KAAKipB,UAAUjpB,KAAKpC,QAAQsrB,OAAQlpB,KAAKpC,QAAQurB,YAEjDnpB,KAAKwmC,oBAAqB,EAAGv9B,EAAKgqB,UAAUjzB,KAAKivC,kBAAkBv8C,KAAKsN,MAAOA,KAAKioB,mBAEhFrqB,EAAQ46D,mBACVx4D,KAAKw4D,kBAAkB56D,EAAQ46D,oBAGjC,EAAG5yB,EAAuBU,IAAItmC,KAAKpC,QAAQoN,YAC3C,EAAG46B,EAAsBW,IAAIvmC,KAAKpC,QAAQsM,WAU5CyqD,IAAe,SAAUrtC,GAEvB,GAAIA,aAAgB5zB,eAAqB+L,IAAT6nB,EAC9BtnB,KAAK8mB,YACA,CACL9mB,KAAKqJ,QAAQ8Y,YAAYniB,KAAKokB,OAG9B,IAAIq0B,EAAS,CACXtU,MAAOnkC,KAAKpC,QAAQnM,KACpBU,MAAOm1B,GAELjX,EAAO,IAAImoC,EAAKx4C,KAAMy4C,GAE1Bz4C,KAAKypD,SAASp5C,GAGdrQ,KAAKivC,oBAILjvC,KAAKqQ,KAAK2qC,QADI,GAEdh7C,KAAKqJ,QAAQkK,YAAYvT,KAAKokB,OAI5BpkB,KAAK+a,SACP/a,KAAK+a,QAAQ+L,QAIX9mB,KAAKoyD,WACPpyD,KAAKoyD,UAAUtrC,SAWnB6tC,OAAkB,SAAUrtC,GAE1B,IAAItnB,KAAKqQ,KAAKkvC,UAAUj4B,GAAxB,CAIA,IAAIhJ,EAAYte,KAAKgiB,eAerB,GAbAhiB,KAAK6xC,kBAAmB,EAExB7xC,KAAKqQ,KAAK+oB,OAAO9R,GACjBtnB,KAAK6xC,kBAAmB,EAExB7xC,KAAKivC,oBAGDjvC,KAAKoyD,YAAcpyD,KAAKoyD,UAAU2G,WACpC/4D,KAAKoyD,UAAUgB,cAIb90C,GAAaA,EAAU9J,OAAS8J,EAAU3J,IAAK,CAGjD,IAAIlG,EAAYzO,KAAKqQ,KAAKwpC,eAAev7B,EAAU9J,MAAMkQ,MACrDmiC,EAAU7mD,KAAKqQ,KAAKwpC,eAAev7B,EAAU3J,IAAI+P,MAEjDjW,GAAao4C,EACf7mD,KAAKgjB,aAAa1E,EAAU9J,MAAO8J,EAAU3J,KAE7C3U,KAAKgjB,aAAa,GAAI,SAGxBhjB,KAAKgjB,aAAa,GAAI,MAS1B2xC,IAAe,WAEb,OAAI30D,KAAKqQ,KACArQ,KAAKqQ,KAAKyqB,gBAEjB,GASJ65B,QAAmB,WACjB,OAAO7mD,KAAKC,UAAU/N,KAAKjO,QAS7B4iE,QAAmB,SAAUtsC,GAC3B,IACEroB,KAAKmoB,KAAI,EAAGlf,EAAKkI,OAAOkX,IACxB,MAAOtwB,GAEP,IAAIihE,GAAmB,EAAG/vD,EAAKgwD,eAAe5wC,GAE9CroB,KAAKmoB,KAAI,EAAGlf,EAAKkI,OAAO6nD,MAU5BrE,WAAsB,SAAUtsC,GAC9B,IACEroB,KAAKo5B,QAAO,EAAGnwB,EAAKkI,OAAOkX,IAC3B,MAAOtwB,GAEP,IAAImhE,GAAiB,EAAGjwD,EAAKgwD,eAAe5wC,GAE5CroB,KAAKo5B,QAAO,EAAGnwB,EAAKkI,OAAO+nD,MAS/BvE,QAAmB,SAAUljE,GAC3BuO,KAAKpC,QAAQnM,KAAOA,EAEhBuO,KAAKqQ,MACPrQ,KAAKqQ,KAAK8gD,YAAYnxD,KAAKpC,QAAQnM,OASvCkjE,QAAmB,WACjB,OAAO30D,KAAKpC,QAAQnM,MAWtBkjE,MAAiB,WACf,IAAIt+C,EAAQrW,KAAKm5D,kBAAkB5kC,cAAc,0BAE7Cle,EACFA,EAAM+J,QACGpgB,KAAKqQ,KAAK6N,IAAI88B,OACvBh7C,KAAKqQ,KAAK6N,IAAI88B,OAAO56B,QACZpgB,KAAKqQ,KAAK6N,IAAIO,KACvBze,KAAKqQ,KAAK6N,IAAIO,KAAK2B,SAGnB/J,EAAQrW,KAAKghB,MAAMuT,cAAc,YAG/Ble,EAAM+J,SASZu0C,MAAiB,WACX30D,KAAKqQ,OACPrQ,KAAKqQ,KAAKoP,cACHzf,KAAKqQ,MAGVrQ,KAAKo5D,UACPp5D,KAAKo5D,SAAS5/B,SAUlBm7B,SAAoB,SAAUtkD,GAC5BrQ,KAAK8mB,QACL9mB,KAAKqQ,KAAOA,EACZA,EAAK4sC,UAAU,MACf5sC,EAAKuoC,SAAS54C,KAAKwoB,WAAW,UACvBnY,EAAK3M,MAEZ1D,KAAKqkB,MAAM9Q,YAAYlD,EAAKotC,WAgB9BkX,OAAkB,SAAUxpD,GAC1B,IAAIqzC,EAWJ,OATIx+C,KAAKqQ,MACPrQ,KAAKqJ,QAAQ8Y,YAAYniB,KAAKokB,OAE9Bo6B,EAAUx+C,KAAKqQ,KAAK6pB,OAAO/uB,GAC3BnL,KAAKqJ,QAAQkK,YAAYvT,KAAKokB,QAE9Bo6B,EAAU,GAGLA,GAOTmW,UAAqB,WACf30D,KAAKqQ,OACPrQ,KAAKqJ,QAAQ8Y,YAAYniB,KAAKokB,OAE9BpkB,KAAKqQ,KAAK2qC,SACVh7C,KAAKqJ,QAAQkK,YAAYvT,KAAKokB,SAQlCuwC,YAAuB,WACjB30D,KAAKqQ,OACPrQ,KAAKqJ,QAAQ8Y,YAAYniB,KAAKokB,OAE9BpkB,KAAKqQ,KAAKulC,WACV51C,KAAKqJ,QAAQkK,YAAYvT,KAAKokB,SAmBlCuwC,UAAqB,SAAU7wD,EAAQ20C,GAEjCz4C,KAAK+a,SACP/a,KAAK+a,QAAQ1Q,IAAIvG,EAAQ20C,GAG3Bz4C,KAAK+pC,aAUP4qB,UAAqB,WACnB,IAAI30D,KAAK6xC,iBAAT,CASA,GAJA7xC,KAAKse,UAAYte,KAAK4/C,kBAEtB5/C,KAAKwmC,qBAEDxmC,KAAKo5D,SAAU,CACjB,IAAIC,EAAer5D,KAAKqQ,MAAQrQ,KAAKse,UAAYte,KAAKqQ,KAAK0gD,uBAAuB/wD,KAAKse,UAAUoG,MAAQ1kB,KAAKomD,eAAiBpmD,KAAKomD,eAAeD,MAAM,QAAK1mD,EAE1J45D,EACFr5D,KAAKs5D,gBAAgBD,EAAazc,eAElC58C,KAAKo5D,SAAS5/B,QAKlB,GAAIx5B,KAAKpC,QAAQwc,SACf,IACEpa,KAAKpC,QAAQwc,WACb,MAAOriB,GACPC,QAAQC,MAAM,+BAAgCF,GAKlD,GAAIiI,KAAKpC,QAAQgqB,aACf,IACE5nB,KAAKpC,QAAQgqB,aAAa5nB,KAAKjO,OAC/B,MAAOgG,GACPC,QAAQC,MAAM,mCAAoCF,GAKtD,GAAIiI,KAAKpC,QAAQkrC,aACf,IACE9oC,KAAKpC,QAAQkrC,aAAa9oC,KAAKsoB,WAC/B,MAAOvwB,GACPC,QAAQC,MAAM,mCAAoCF,GAUtD,GALIiI,KAAKpC,QAAQggD,aACf59C,KAAKqQ,KAAK2tC,qCAIRh+C,KAAKpC,QAAQmtD,YAAc/qD,KAAKqQ,KAAKupC,OACvC,IACE55C,KAAKqQ,KAAK46C,4BACV,MAAOlzD,GACPC,QAAQC,MAAM,iCAAkCF,MAUtD48D,SAAoB,WAClB,IAAI/iB,EAAS5xC,KAETzM,EAAOyM,KAAKqQ,KAEhB,GAAK9c,EAAL,CAKA,IAAI+zB,EAAO/zB,EAAKunC,WAEZiZ,EAAe,GAEf/zC,KAAK4pB,iBACK5pB,KAAK4pB,eAAetC,KAI9BysB,EAAe/zC,KAAK4pB,eAAe5F,OAAO9lB,KAAI,SAAUjG,GACtD,OAAO,EAAGgR,EAAKgrC,oBAAoBh8C,MAClCiG,KAAI,SAAkBjG,GACvB,MAAO,CACLoY,KAAM9c,EAAKu9D,SAAS74D,EAAMqsB,UAC1BrsB,MAAOA,EACP8L,KAAM,iBAEPpO,QAAO,SAAiBm4D,GACzB,OAAqB,MAAdA,EAAMz9C,UAMnB,IACErQ,KAAKk0C,qBACL,IAAI/1B,EAAKne,KACLm0C,EAAMn0C,KAAKk0C,mBACf,OAAOl0C,KAAKu5D,gBAAgBjyC,GAAMzmB,MAAK,SAAU+zC,GAE/C,GAAIT,IAAQh2B,EAAG+1B,mBAAoB,CACjC,IAAI0gB,EAAa,GAAG32D,OAAO81C,EAAca,GAA0B,IAEnEz2B,EAAGq7C,wBAAwB5E,GAEqB,oBAArChjB,EAAOh0C,QAAQi3C,oBAAoC,EAAG5rC,EAAK6rC,0BAA0B8f,EAAYhjB,EAAO5C,mBACjH4C,EAAOh0C,QAAQi3C,kBAAkBxjD,KAAKugD,EAAQgjB,GAGhDhjB,EAAO5C,iBAAmB4lB,EAG5B,OAAOhjB,EAAO5C,oBAEhB,MAAOj3C,GACP,OAAO6I,QAAQN,OAAOvI,MAI1B48D,kBAA6B,WAC3B30D,KAAK8pB,WAAL,OAAyB,SAAU/xB,GACjCC,QAAQC,MAAM,4BAA6BF,OAI/C48D,wBAAmC,SAAUC,GAEvC50D,KAAK40D,YACP50D,KAAK40D,WAAWx+D,SAAQ,SAAUia,GAChCA,EAAKopD,SAAS,SAKlB,IAAIC,EAAc9E,EAAW11D,QAAO,SAAUF,EAAK8uD,GACjD,OAAOA,EAAMz9C,KAAK0qC,cAAcplD,QAAO,SAAUoX,GAC/C,OAAQ/N,EAAI0mB,MAAK,SAAUi0C,GACzB,OAAOA,EAAK,KAAO5sD,QAEpB7O,KAAI,SAAU6O,GACf,MAAO,CAACA,EAAQ+gD,EAAMz9C,SACrBpS,OAAOe,KACT,IACHgB,KAAK40D,WAAa8E,EAAYx7D,KAAI,SAAUy7D,GAC1C,MAAO,CACLtpD,KAAMspD,EAAK,GACX3f,MAAO2f,EAAK,GACZ1hE,MAAO,CACLiZ,QAA0B,WAAjByoD,EAAK,GAAG51D,MAAoB,EAAG6hC,EAAoBnlB,IAAI,8BAC9D,EAAGmlB,EAAoBnlB,IAAI,6BAIhCxiB,OAAO22D,GAAY12D,KAAI,SAAkB4vD,GAE1C,OADAA,EAAMz9C,KAAKopD,SAAS3L,EAAM71D,MAAO61D,EAAM9T,OAChC8T,EAAMz9C,SAUjBskD,gBAA2B,SAAUrtC,GACnC,IACE,GAAItnB,KAAKpC,QAAQw2C,WAAY,CAC3B,IAAI7gD,EAAOyM,KAAKqQ,KACZgkC,EAAwBr0C,KAAKpC,QAAQw2C,WAAW9sB,GAEpD,QADoB,EAAGre,EAAKqrC,WAAWD,GAAyBA,EAAwBzzC,QAAQP,QAAQg0C,IACnFxzC,MAAK,SAAU0zC,GAClC,OAAI3gD,MAAMW,QAAQggD,GACTA,EAA2B5+C,QAAO,SAAUsC,GACjD,IAAIu8C,GAAQ,EAAGvrC,EAAKwrC,wBAAwBx8C,GAM5C,OAJKu8C,GACHx8C,QAAQmd,KAAK,8HAAyIld,GAGjJu8C,KACNt2C,KAAI,SAAUjG,GACf,IAAIoY,EAEJ,IACEA,EAAOpY,GAASA,EAAMysB,KAAOnxB,EAAKsmD,eAAe5hD,EAAMysB,MAAQ,KAC/D,MAAO3sB,IAOT,OAJKsY,GACHrY,QAAQmd,KAAK,mDAAoDld,EAAMysB,KAAM,SAAUzsB,GAGlF,CACLoY,KAAMA,EACNpY,MAAOA,EACP8L,KAAM,uBAEPpO,QAAO,SAAUm4D,GAClB,OAAOA,GAASA,EAAMz9C,MAAQy9C,EAAM71D,OAAS61D,EAAM71D,MAAMiZ,WAGpD,SAIb,MAAOnZ,GACP,OAAO6I,QAAQN,OAAOvI,GAGxB,OAAO6I,QAAQP,QAAQ,OAOzBs0D,QAAmB,WACb30D,KAAKqQ,MACPrQ,KAAKqQ,KAAK4rC,UAAU,CAClBiB,SAAS,KAWfyX,gBAA2B,SAAUhI,GACnC,IAAIxuC,EAAKne,KACLqJ,EAAUrJ,KAAKm5D,kBACf59C,GAAM,EAAGtS,EAAKqiD,gBAAgBjiD,GAC9BoS,EAASpS,EAAQiZ,aACjBZ,EAASnG,EAAME,EAIfkxC,EAASpxC,EAHA,IAGgBlS,EAAQgc,UAAY,EAC/CrlB,KAAK45D,gBAAkBr+C,EAJZ,GAI2BoxC,GAAU,EACvCA,EAASjrC,EALP,IAK0BjG,EAASpS,EAAQgc,UAAYhc,EAAQ8b,aAC1EnlB,KAAK45D,gBAAkBl4C,EANZ,GAM8BirC,GAAU,EAEnD3sD,KAAK45D,oBAAiBn6D,EAGpBO,KAAK45D,eACF55D,KAAK65D,kBACR75D,KAAK65D,gBAAkBC,aAAY,WAC7B37C,EAAGy7C,eACLvwD,EAAQgc,WAAalH,EAAGy7C,eAExBz7C,EAAGsvC,mBAhBI,KAqBbztD,KAAKytD,kBAQTkH,eAA0B,WACpB30D,KAAK65D,kBACP1mC,aAAanzB,KAAK65D,wBACX75D,KAAK65D,iBAGV75D,KAAK45D,uBACA55D,KAAK45D,gBAehBjF,gBAA2B,SAAUr2C,GACnC,GAAKA,EASL,GALI,cAAeA,GAAate,KAAKm5D,oBAEnCn5D,KAAKm5D,kBAAkB9zC,UAAY/G,EAAU+G,WAG3C/G,EAAUmsB,MAAO,CAEnB,IAAItsB,EAAKne,KACLmmD,EAAQ7nC,EAAUmsB,MAAMvsC,KAAI,SAAUwmB,GACxC,OAAOvG,EAAG9N,KAAK0gD,uBAAuBrsC,MAExC1kB,KAAKg6B,OAAOmsB,OACP,CAEL,IAAI91C,EAAOiO,EAAUoG,KAAO1kB,KAAKqQ,KAAK0gD,uBAAuBzyC,EAAUoG,MAAQ,KAC3EnY,EAAY8D,GAAQiO,EAAUy7C,QAAU1pD,EAAK6N,IAAII,EAAUy7C,SAAW,KAE1E,GAAIz7C,EAAU/J,OAAShI,EAAW,CAChC,IAAIgI,EAAQ3iB,OAAO2jB,OAAO,GAAI+I,EAAU/J,MAAO,CAC7ChI,UAAWA,KAEb,EAAGtD,EAAK+wD,oBAAoBzlD,QACnBlE,GAETA,EAAK+P,UAeXu0C,gBAA2B,WAIzB,IAAItkD,EAAOmoC,EAAK6O,kBAAkBrnD,KAAK60D,aACnCA,EAAc70D,KAAK60D,YACnBkF,EAAU1pD,EAAOze,OAAO6C,KAAK4b,EAAK6N,KAAKsG,MAAK,SAAUu1C,GACxD,OAAO1pD,EAAK6N,IAAI67C,KAAalF,KAC1B,KACDtgD,GAAQ,EAAGtL,EAAKgxD,sBAkBpB,OAhBI1lD,GAAsC,QAA7BA,EAAMhI,UAAUS,WAE3BuH,EAAQ,MAGNA,GAASA,EAAMhI,YAAcsoD,IAC/BtgD,EAAQ,MAGNA,UAIKA,EAAMhI,UAGR,CACLmY,KAAMrU,EAAOA,EAAK+vC,kBAAoB,KACtC2Z,QAASA,EACTxlD,MAAOA,EACPk2B,MAAOzqC,KAAKomD,eAAelwD,OAAS,EAAI8J,KAAKomD,eAAeD,MAAMjoD,KAAI,SAAUmS,GAC9E,OAAOA,EAAK+vC,qBACT,KACL/6B,UAAWrlB,KAAKm5D,kBAAoBn5D,KAAKm5D,kBAAkB9zC,UAAY,IAc3EsvC,SAAoB,SAAUp5C,EAAK2+C,GACjC,IAAI7wD,EAAUrJ,KAAKm5D,kBAEnB,GAAI9vD,EAAS,CACX,IAAI4S,EAASjc,KAETic,EAAOk+C,iBACThnC,aAAalX,EAAOk+C,uBACbl+C,EAAOk+C,gBAGZl+C,EAAOi+C,kBACTj+C,EAAOi+C,iBAAgB,UAChBj+C,EAAOi+C,iBAIhB,IAAIz+C,EAASpS,EAAQiZ,aACjBZ,EAASrY,EAAQ8b,aAAe1J,EAChC2+C,EAAiB/kE,KAAK0f,IAAI1f,KAAKyf,IAAIyG,EAAME,EAAS,EAAG,GAAIiG,IAE/C,SAAS24C,IACrB,IAAIh1C,EAAYhc,EAAQgc,UACpBi1C,EAAOF,EAAiB/0C,EAExBhwB,KAAKg+B,IAAIinC,GAAQ,GACnBjxD,EAAQgc,WAAai1C,EAAO,EAC5Br+C,EAAOi+C,gBAAkBA,EACzBj+C,EAAOk+C,eAAiBzoD,WAAW2oD,EAAS,MAGxCH,GACFA,GAAgB,GAGlB7wD,EAAQgc,UAAY+0C,SACbn+C,EAAOk+C,sBACPl+C,EAAOi+C,iBAIlBG,QAEIH,GACFA,GAAgB,IAUtBvF,aAAwB,WAEtB30D,KAAKghB,MAAQzW,SAASiJ,cAAc,OACpCxT,KAAKghB,MAAMlX,UAAY,8BAAgC9J,KAAKpC,QAAQvL,KAEpE2N,KAAKuM,UAAUgH,YAAYvT,KAAKghB,OAChChhB,KAAKu6D,aAAehwD,SAASiJ,cAAc,OAC3CxT,KAAKu6D,aAAazwD,UAAY,mBAE9B,IAAImS,EAASjc,KAEb,SAASslD,EAAQ/lC,GAGXtD,EAAO6J,UACT7J,EAAO6J,SAASvG,GAKpB,IAAImnB,EAAqB,CACvB1wC,OAAQgK,KAAKghB,MACbxH,QAASxZ,KAAKpC,QAAQ4b,SAAW,KACjCC,OAAQzZ,KAAKpC,QAAQ6b,QAAU,MAkCjC,GAhCAzZ,KAAK2mC,kBAAoB,IAAI/gB,EAA+BghB,EAAEF,GAE9D1mC,KAAKghB,MAAM1B,QAAU,SAAUC,GAC7B,IAAIvpB,EAASupB,EAAMvpB,OAEnBsvD,EAAQ/lC,GAGgB,WAApBvpB,EAAOgX,UACTuS,EAAMC,kBAIVxf,KAAKghB,MAAM+sB,QAAUuX,EACrBtlD,KAAKghB,MAAM0vB,SAAW4U,EACtBtlD,KAAKghB,MAAMkuB,UAAYoW,EACvBtlD,KAAKghB,MAAM6xC,QAAUvN,EACrBtlD,KAAKghB,MAAMw5C,MAAQlV,EACnBtlD,KAAKghB,MAAMy5C,QAAUnV,EACrBtlD,KAAKghB,MAAM4vB,YAAc0U,EACzBtlD,KAAKghB,MAAM05C,UAAYpV,EACvBtlD,KAAKghB,MAAMoc,YAAckoB,EACzBtlD,KAAKghB,MAAMqc,WAAaioB,GAIxB,EAAGr8C,EAAKgI,kBAAkBjR,KAAKghB,MAAO,QAASskC,GAAS,IACxD,EAAGr8C,EAAKgI,kBAAkBjR,KAAKghB,MAAO,OAAQskC,GAAS,GACvDtlD,KAAKghB,MAAM25C,UAAYrV,EAEvBtlD,KAAKghB,MAAM45C,WAAatV,EAEpBtlD,KAAKpC,QAAQqoC,YAAa,EAC5B,EAAGh9B,EAAKwZ,cAAcziB,KAAKu6D,aAAc,qBAEzCv6D,KAAKye,KAAOlU,SAASiJ,cAAc,OACnCxT,KAAKye,KAAK3U,UAAY,kBACtB9J,KAAKghB,MAAMzN,YAAYvT,KAAKye,MAE5B,IAAIqgB,EAAYv0B,SAASiJ,cAAc,UACvCsrB,EAAU/6B,KAAO,SACjB+6B,EAAUh1B,UAAY,wBACtBg1B,EAAU1f,OAAQ,EAAGwmB,EAAoBnlB,IAAI,aAE7Cqe,EAAUxf,QAAU,WAClBrD,EAAO6iB,aAGT9+B,KAAKye,KAAKlL,YAAYurB,GAEtB,IAAIX,EAAc5zB,SAASiJ,cAAc,UAWzC,GAVA2qB,EAAYp6B,KAAO,SACnBo6B,EAAY/e,OAAQ,EAAGwmB,EAAoBnlB,IAAI,eAC/C0d,EAAYr0B,UAAY,0BAExBq0B,EAAY7e,QAAU,WACpBrD,EAAOkiB,eAGTn+B,KAAKye,KAAKlL,YAAY4qB,GAElBn+B,KAAKpC,QAAQsoC,WAAY,CAC3B,IAAIlO,EAAOztB,SAASiJ,cAAc,UAClCwkB,EAAKj0B,KAAO,SACZi0B,EAAKluB,UAAY,kBACjBkuB,EAAK5Y,OAAQ,EAAGwmB,EAAoBnlB,IAAI,kBAExCuX,EAAK1Y,QAAU,WACbrD,EAAO5L,KAAK8W,iBAGdnnB,KAAKye,KAAKlL,YAAYykB,GAIxB,GAAIh4B,KAAKpC,QAAQuoC,gBAAiB,CAChC,IAAI1F,EAAYl2B,SAASiJ,cAAc,UACvCitB,EAAU18B,KAAO,SACjB08B,EAAUrhB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,uBAC7CggB,EAAU32B,UAAY,uBAEtB22B,EAAUnhB,QAAU,WAClBrD,EAAO5L,KAAK6W,sBAGdlnB,KAAKye,KAAKlL,YAAYktB,GAIxB,GAAIzgC,KAAK+a,QAAS,CAEhB,IAAIwmB,EAAOh3B,SAASiJ,cAAc,UAClC+tB,EAAKx9B,KAAO,SACZw9B,EAAKz3B,UAAY,uCACjBy3B,EAAKniB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAExC8gB,EAAKjiB,QAAU,WACbrD,EAAO4+C,WAGT76D,KAAKye,KAAKlL,YAAYguB,GACtBvhC,KAAKke,IAAIqjB,KAAOA,EAEhB,IAAInC,EAAO70B,SAASiJ,cAAc,UAClC4rB,EAAKr7B,KAAO,SACZq7B,EAAKt1B,UAAY,kBACjBs1B,EAAKhgB,OAAQ,EAAGwmB,EAAoBnlB,IAAI,QAExC2e,EAAK9f,QAAU,WACbrD,EAAO6+C,WAGT96D,KAAKye,KAAKlL,YAAY6rB,GACtBp/B,KAAKke,IAAIkhB,KAAOA,EAEhBp/B,KAAK+a,QAAQX,SAAW,WACtBmnB,EAAKvoB,UAAYiD,EAAOlB,QAAQ2qB,UAChCtG,EAAKpmB,UAAYiD,EAAOlB,QAAQ4qB,WAGlC3lC,KAAK+a,QAAQX,WAIf,GAAIpa,KAAKpC,SAAWoC,KAAKpC,QAAQiqB,OAAS7nB,KAAKpC,QAAQiqB,MAAM3xB,OAAQ,CACnE,IAAIioB,EAAKne,KACTA,KAAK8nC,aAAe,IAAIxd,EAA+BS,EAAE/qB,KAAKye,KAAMze,KAAKpC,QAAQiqB,MAAO7nB,KAAKpC,QAAQvL,MAAM,SAAkBA,GAE3H,IACE8rB,EAAG+J,QAAQ71B,GACX8rB,EAAG2pB,aAAa1nB,QAChB,MAAOroB,GACPomB,EAAG4K,SAAShxB,OAMdiI,KAAKpC,QAAQs8B,SACfl6B,KAAKoyD,UAAY,IAAIF,EAAUlyD,KAAMA,KAAKye,OAI1Cze,KAAKpC,QAAQ26D,gBAEfv4D,KAAK+6D,OAASxwD,SAASiJ,cAAc,OACrCxT,KAAK+6D,OAAOjxD,UAAY,0CACxB9J,KAAKghB,MAAMzN,YAAYvT,KAAK+6D,QAC5B/6D,KAAKo5D,SAAW,IAAI5F,EAASxzD,KAAK+6D,OAAQ/6D,KAAK06C,kBAC/C16C,KAAKo5D,SAAS4B,kBAAkBh7D,KAAKi7D,2BAA2BvoE,KAAKsN,OACrEA,KAAKo5D,SAAS8B,0BAA0Bl7D,KAAKm7D,4BAA4BzoE,KAAKsN,SASlF20D,QAAmB,WACb30D,KAAK+a,UAEP/a,KAAK+a,QAAQwmB,OAEbvhC,KAAK+pC,cAST4qB,QAAmB,WACb30D,KAAK+a,UAEP/a,KAAK+a,QAAQqkB,OAEbp/B,KAAK+pC,cAUT4qB,SAAoB,SAAUp1C,GAE5B,IAAIi5B,EAAKqX,oBAAoBtwC,EAAMvpB,QAAnC,CAIA,IAAIqa,EAAOmoC,EAAK6O,kBAAkB9nC,EAAMvpB,QAsBxC,GApBmB,YAAfupB,EAAMxb,MACR/D,KAAKmvC,WAAW5vB,GAGdlP,GAAuB,UAAfkP,EAAMxb,OAChB/D,KAAK60D,YAAct1C,EAAMvpB,OAErBgK,KAAKpC,QAAQm4B,cAAsD,UAAtC/1B,KAAKpC,QAAQm4B,aAAag/B,SACzD/0D,KAAKo7D,kBAAkB77C,EAAMvpB,SAId,cAAfupB,EAAMxb,MACR/D,KAAKq7D,mBAAmB97C,GAGP,cAAfA,EAAMxb,MAAuC,YAAfwb,EAAMxb,MAAqC,UAAfwb,EAAMxb,MAClE/D,KAAKs7D,oBAAoB/7C,GAGvBlP,GAAQrQ,KAAKpC,SAAWoC,KAAKpC,QAAQ26D,eAAiBloD,IAAwB,YAAfkP,EAAMxb,MAAqC,cAAfwb,EAAMxb,MAAuB,CAE1H,IAAIoa,EAAKne,KACT0R,YAAW,WACTyM,EAAGm7C,gBAAgBjpD,EAAKusC,kBAI5B,GAAIvsC,GAAQA,EAAK+kB,SAAU,CACzB,GAAmB,UAAf7V,EAAMxb,KAAkB,CAC1B,GAAIwb,EAAMvpB,SAAWqa,EAAK6N,IAAIO,KAG5B,YAFAze,KAAK6kD,gBAAgBtlC,EAAMvpB,QAMxBupB,EAAM0lC,UACTjlD,KAAKi6B,WAIU,cAAf1a,EAAMxb,MAERy0C,EAAK2S,YAAYnrD,KAAKomD,eAAeD,MAAO5mC,OAI3B,cAAfA,EAAMxb,OAAwB,EAAGkF,EAAKsyD,eAAeh8C,EAAMvpB,OAAQgK,KAAKqJ,WAC1ErJ,KAAKi6B,WAED5pB,GAAQkP,EAAMvpB,SAAWqa,EAAK6N,IAAIqgB,KAEpCia,EAAK2S,YAAY96C,EAAMkP,KACblP,GAAQkP,EAAMvpB,SAAWqa,EAAK6N,IAAIimB,OAAS5kB,EAAMvpB,SAAWqa,EAAK6N,IAAI/rB,OAASotB,EAAMvpB,SAAWqa,EAAK6N,IAAI8b,SAElHh6B,KAAKw7D,oBAAoBj8C,IAK3BlP,GACFA,EAAKi1C,QAAQ/lC,KAUjBo1C,gBAA2B,SAAU8G,GACnC,GAAIA,GAAaA,EAAUvlE,OAAQ,EACjC,EAAG+S,EAAKoZ,iBAAiBriB,KAAK+6D,OAAQ,iBACtC,IAAIpH,EAAW,GACf8H,EAAUrlE,SAAQ,SAAUia,GAC1B,IAAI0jD,EAAU,CACZtiE,KAAM+2B,EAAQnY,GACdA,KAAMA,EACNwK,SAAU,IAGRxK,EAAKupC,QAAUvpC,EAAKupC,OAAO1jD,QAC7Bma,EAAKupC,OAAOxjD,SAAQ,SAAUslE,GAC5B3H,EAAQl5C,SAAS9mB,KAAK,CACpBtC,KAAM+2B,EAAQkzC,GACdrrD,KAAMqrD,OAKZ/H,EAAS5/D,KAAKggE,MAEhB/zD,KAAKo5D,SAASvF,QAAQF,QAEtB,EAAG1qD,EAAKwZ,cAAcziB,KAAK+6D,OAAQ,iBAGrC,SAASvyC,EAAQnY,GACf,OAAOA,EAAKtD,OAA8B,UAArBsD,EAAKtD,OAAOhJ,KAAmBsM,EAAK3M,MAAQ2M,EAAK8zB,MAAQ9zB,EAAK8zB,OAAS9zB,EAAKtM,OAUrG4wD,2BAAsC,SAAUZ,GAC1CA,GAAWA,EAAQ1jD,OACrB0jD,EAAQ1jD,KAAKsrD,WACb5H,EAAQ1jD,KAAK+P,UAWjBu0C,4BAAuC,SAAUZ,EAASz1C,GACxD,GAAIy1C,GAAWA,EAAQl5C,SAAS3kB,OAAQ,CACtC,IAAI0lE,EAAe7H,EAAQl5C,SAAS2J,MAAK,SAAU/sB,GACjD,OAAOA,EAAIhG,OAAS6sB,KAGlBs9C,GAAgBA,EAAavrD,OAC/BrQ,KAAKs5D,gBAAgBsC,EAAavrD,KAAKusC,eAEvCgf,EAAavrD,KAAKsrD,WAClBC,EAAavrD,KAAK+P,WAKxBu0C,mBAA8B,SAAUp1C,GACtCvf,KAAK67D,kBAAoB,CACvBC,cAAev8C,EAAMvpB,OACrB+lE,aAAcx8C,EAAM4lC,MACpB6W,aAAcz8C,EAAMqtC,MACpBqP,aAAc,EACdhX,UAAU,IAId0P,oBAA+B,SAAUp1C,GAClCvf,KAAK67D,mBACR77D,KAAKq7D,mBAAmB97C,GAG1B,IAAI2tC,EAAQ3tC,EAAM4lC,MAAQnlD,KAAK67D,kBAAkBE,aAC7CG,EAAQ38C,EAAMqtC,MAAQ5sD,KAAK67D,kBAAkBG,aAKjD,OAJAh8D,KAAK67D,kBAAkBI,aAAe5mE,KAAK8mE,KAAKjP,EAAQA,EAAQgP,EAAQA,GACxEl8D,KAAK67D,kBAAkB5W,SAAWjlD,KAAK67D,kBAAkB5W,UAAYjlD,KAAK67D,kBAAkBI,aAAe,GAC3G18C,EAAM08C,aAAej8D,KAAK67D,kBAAkBI,aAC5C18C,EAAM0lC,SAAWjlD,KAAK67D,kBAAkB5W,SACjC1lC,EAAM08C,cASftH,oBAA+B,SAAUp1C,GACvC,IAAIlP,EAAOmoC,EAAK6O,kBAAkB9nC,EAAMvpB,QAExC,GAA0B,SAAtBgK,KAAKpC,QAAQvL,WAA+CoN,IAA5BO,KAAKpC,QAAQ+pB,WAAjD,CAMA3nB,KAAKomD,eAAiB,CACpB5xC,MAAOnE,GAAQ,KACfsE,IAAK,KACLwxC,MAAO,IAGTnmD,KAAKq7D,mBAAmB97C,GAExB,IAAItD,EAASjc,KAERA,KAAKurD,YACRvrD,KAAKurD,WAAY,EAAGtiD,EAAKgI,kBAAkBsO,EAAMmL,KAAM,aAAa,SAAUnL,GAC5EtD,EAAOmgD,eAAe78C,OAIrBvf,KAAKyrD,UACRzrD,KAAKyrD,SAAU,EAAGxiD,EAAKgI,kBAAkBsO,EAAMmL,KAAM,WAAW,SAAUnL,GACxEtD,EAAOogD,kBAAkB98C,OAI7BA,EAAMC,mBASRm1C,eAA0B,SAAUp1C,GAKlC,GAJAA,EAAMC,iBAENxf,KAAKs7D,oBAAoB/7C,GAEpBA,EAAM0lC,SAAX,CAIA,IAAI50C,EAAOmoC,EAAK6O,kBAAkB9nC,EAAMvpB,QAEpCqa,IAC+B,MAA7BrQ,KAAKomD,eAAe5xC,QACtBxU,KAAKomD,eAAe5xC,MAAQnE,GAG9BrQ,KAAKomD,eAAezxC,IAAMtE,GAI5BrQ,KAAKi6B,WAEL,IAAIzlB,EAAQxU,KAAKomD,eAAe5xC,MAC5BG,EAAM3U,KAAKomD,eAAezxC,KAAO3U,KAAKomD,eAAe5xC,MAEzD,GAAIA,GAASG,EAAK,CAIhB,GAFA3U,KAAKomD,eAAeD,MAAQnmD,KAAK8nD,mBAAmBtzC,EAAOG,GAEvD3U,KAAKomD,eAAeD,OAASnmD,KAAKomD,eAAeD,MAAMjwD,OAAQ,CACjE,IAAIqwD,EAAYvmD,KAAKomD,eAAeD,MAAM,GAEtCnmD,KAAKomD,eAAe5xC,QAAU+xC,GAAavmD,KAAKomD,eAAe5xC,MAAM84C,eAAe/G,GACtFvmD,KAAKomD,eAAepvB,UAAY,OAEhCh3B,KAAKomD,eAAepvB,UAAY,KAIpCh3B,KAAKg6B,OAAOh6B,KAAKomD,eAAeD,UAUpCwO,kBAA6B,SAAUp1C,GAErC,IAAIgnC,EAAYvmD,KAAKomD,eAAeD,MAAM,GAEtCI,GAAaA,EAAUroC,IAAIO,MAC7B8nC,EAAUroC,IAAIO,KAAK2B,QAGrBpgB,KAAKomD,eAAe5xC,MAAQ,KAC5BxU,KAAKomD,eAAezxC,IAAM,KAEtB3U,KAAKurD,aACP,EAAGtiD,EAAKkd,qBAAqB5G,EAAMmL,KAAM,YAAa1qB,KAAKurD,kBACpDvrD,KAAKurD,WAGVvrD,KAAKyrD,WACP,EAAGxiD,EAAKkd,qBAAqB5G,EAAMmL,KAAM,UAAW1qB,KAAKyrD,gBAClDzrD,KAAKyrD,UAUhBkJ,SAAoB,SAAU2H,GAC5B,IAAIC,IAAqBv8D,KAAKomD,eAAeD,MAAMjwD,OACnD8J,KAAKomD,eAAeD,MAAM/vD,SAAQ,SAAUia,GAC1CA,EAAKqmB,aAAY,MAEnB12B,KAAKomD,eAAeD,MAAQ,GAExBmW,IACFt8D,KAAKomD,eAAe5xC,MAAQ,KAC5BxU,KAAKomD,eAAezxC,IAAM,MAGxB4nD,GACEv8D,KAAKozC,0BACPpzC,KAAKozC,4BAUXuhB,OAAkB,SAAUxO,GAC1B,IAAKvyD,MAAMW,QAAQ4xD,GACjB,OAAOnmD,KAAKg6B,OAAO,CAACmsB,IAGtB,GAAIA,EAAO,CACTnmD,KAAKi6B,WACLj6B,KAAKomD,eAAeD,MAAQA,EAAMnyD,MAAM,GACxC,IAAIsiC,EAAQ6vB,EAAM,GAMlB,GALAA,EAAM/vD,SAAQ,SAAUia,GACtBA,EAAKyuC,mBACLzuC,EAAKqmB,aAAY,EAAMrmB,IAASimB,MAG9Bt2B,KAAKozC,yBAA0B,CACjC,IAAI90B,EAAYte,KAAKgiB,eAErBhiB,KAAKozC,yBAAyB90B,EAAU9J,MAAO8J,EAAU3J,QAe/DggD,mBAA8B,SAAUngD,EAAOG,GAK7C,IAJA,IAAI6nD,EAAYhoD,EAAMooC,cAClB6f,EAAU9nD,EAAIioC,cACd1rD,EAAI,EAEDA,EAAIsrE,EAAUtmE,QAAUsmE,EAAUtrE,KAAOurE,EAAQvrE,IACtDA,IAGF,IAAIqC,EAAOipE,EAAUtrE,EAAI,GACrBwrE,EAAaF,EAAUtrE,GACvByrE,EAAWF,EAAQvrE,GAevB,GAbKwrE,GAAeC,IACdppE,EAAKwZ,QAEP2vD,EAAanpE,EACbopE,EAAWppE,EACXA,EAAOA,EAAKwZ,SAGZ2vD,EAAanpE,EAAKqmD,OAAO,GACzB+iB,EAAWppE,EAAKqmD,OAAOrmD,EAAKqmD,OAAO1jD,OAAS,KAI5C3C,GAAQmpE,GAAcC,EAAU,CAClC,IAAI/pB,EAAar/C,EAAKqmD,OAAOj2C,QAAQ+4D,GACjC7pB,EAAWt/C,EAAKqmD,OAAOj2C,QAAQg5D,GAC/BnN,EAAan6D,KAAK0f,IAAI69B,EAAYC,GAClCpiC,EAAYpb,KAAKyf,IAAI89B,EAAYC,GACrC,OAAOt/C,EAAKqmD,OAAO5lD,MAAMw7D,EAAY/+C,EAAY,GAEjD,MAAO,IAUXkkD,kBAA6B,SAAUx2D,GACrC,IAAIkS,EAAOmoC,EAAK6O,kBAAkBlpD,GAC9By+D,EAAkB,GAItB,GAHIz+D,EAAQ2L,UAAUnG,QAAQ,qBAAuB,IAAGi5D,EAAkB,SACtEz+D,EAAQ2L,UAAUnG,QAAQ,qBAAuB,IAAGi5D,EAAkB,SAElD,KAApBA,EAAJ,CAKA,IAAIppE,EAAOwM,KACX0R,YAAW,WACT,GAAIrB,IAA+C,UAAtC7c,EAAKoK,QAAQm4B,aAAag/B,SAAuB52D,EAAQqnB,UAAUtvB,OAAS,GAAI,CAC3F,IAAIqlC,EAAS/nC,EAAKoK,QAAQm4B,aAAa8mC,WAAW1+D,EAAQqnB,UAAWnV,EAAKmpC,UAAWojB,EAAiBvsD,EAAK4L,QAE5F,OAAXsf,EACF/nC,EAAKuiC,aAAaghC,eACc,oBAAhBx7B,EAAO16B,KAEvB06B,EAAO16B,MAAK,SAAUpJ,GACR,OAARA,EACFjE,EAAKuiC,aAAaghC,eACTt/D,EAAImG,QACbpK,EAAKuiC,aAAa/K,KAAK7sB,EAAS1G,EAAI0+D,UAAW1+D,EAAImG,SAEnDpK,EAAKuiC,aAAa/K,KAAK7sB,EAAS,EAAG1G,MANvC,OAQY,SAAUM,GACpBC,QAAQC,MAAMF,MAIZwjC,EAAO39B,QACTpK,EAAKuiC,aAAa/K,KAAK7sB,EAASo9B,EAAO46B,UAAW56B,EAAO39B,SAEzDpK,EAAKuiC,aAAa/K,KAAK7sB,EAAS,EAAGo9B,QAIvC/nC,EAAKuiC,aAAaghC,iBAEnB,MASLpC,WAAsB,SAAUp1C,GAC9B,IAAIsD,EAAStD,EAAMuD,OAASvD,EAAMyG,QAC9BqgC,EAAS9mC,EAAM8mC,OACf7T,EAAUjzB,EAAMizB,QAChBsqB,EAAUv9C,EAAMu9C,QAChB75C,EAAW1D,EAAM0D,SACjBF,GAAU,EACVg6C,EAAgB/8D,KAAK60D,YAEzB,GAAe,IAAXhyC,EAAc,CAEhB,IAAI1E,EAAKne,KACT0R,YAAW,WAOLyM,EAAG02C,cAAgBkI,IAErB,EAAG9zD,EAAKi2C,uBAAuB/gC,EAAG02C,eAEnC,GAGD70D,KAAKoyD,YACH5f,GAAsB,KAAX3vB,GAEb7iB,KAAKoyD,UAAUl0C,IAAIgc,OAAO9Z,QAC1BpgB,KAAKoyD,UAAUl0C,IAAIgc,OAAOF,SAC1BjX,GAAU,IACU,MAAXF,GAAkB2vB,GAAsB,KAAX3vB,KAIjCI,EAKHjjB,KAAKoyD,UAAUn7C,UAPL,GAIVjX,KAAKoyD,UAAUhzD,MAJL,GAUZ2jB,GAAU,IAIV/iB,KAAK+a,UACHy3B,IAAYvvB,GAAuB,KAAXJ,GAG1B7iB,KAAK66D,UAEL93C,GAAU,GACDyvB,GAAWvvB,GAAuB,KAAXJ,IAGhC7iB,KAAK86D,UAEL/3C,GAAU,IAIV/iB,KAAKpC,QAAQm4B,eAAiBhT,IAC3ByvB,GAAY6T,GAAWyW,GAAiC,IAArBv9C,EAAM9sB,IAAIyD,QAA2B,IAAX2sB,GAA2B,KAAXA,IAChFE,GAAU,EAEV/iB,KAAKo7D,kBAAkB77C,EAAMvpB,UAI7B+sB,IACFxD,EAAMC,iBACND,EAAM4D,oBASVwxC,aAAwB,WAqBtB,IAAIliB,EApBAzyC,KAAKpC,QAAQ26D,gBACf,EAAGtvD,EAAKwZ,cAAcziB,KAAKu6D,aAAc,eAG3Cv6D,KAAKm5D,kBAAoB5uD,SAASiJ,cAAc,OAChDxT,KAAKm5D,kBAAkBrvD,UAAY,kBACnC9J,KAAKu6D,aAAahnD,YAAYvT,KAAKm5D,mBAMnCn5D,KAAKqJ,QAAUkB,SAASiJ,cAAc,OACtCxT,KAAKqJ,QAAQS,UAAY,wBACzB9J,KAAKm5D,kBAAkB5lD,YAAYvT,KAAKqJ,SACxCrJ,KAAKokB,MAAQ7Z,SAASiJ,cAAc,SACpCxT,KAAKokB,MAAMta,UAAY,kBACvB9J,KAAKqJ,QAAQkK,YAAYvT,KAAKokB,OAI9BpkB,KAAKg9D,gBAAkBzyD,SAASiJ,cAAc,YAEpB,SAAtBxT,KAAKpC,QAAQvL,QACfogD,EAAMloC,SAASiJ,cAAc,QACzBkI,MAAQ,OACZ1b,KAAKg9D,gBAAgBzpD,YAAYk/B,KAGnCA,EAAMloC,SAASiJ,cAAc,QACzBkI,MAAQ,OACZ1b,KAAKg9D,gBAAgBzpD,YAAYk/B,GACjCA,EAAMloC,SAASiJ,cAAc,OAC7BxT,KAAKg9D,gBAAgBzpD,YAAYk/B,GACjCzyC,KAAKokB,MAAM7Q,YAAYvT,KAAKg9D,iBAC5Bh9D,KAAKqkB,MAAQ9Z,SAASiJ,cAAc,SACpCxT,KAAKokB,MAAM7Q,YAAYvT,KAAKqkB,OAC5BrkB,KAAKghB,MAAMzN,YAAYvT,KAAKu6D,eAW9B5F,gBAA2B,SAAUv2C,EAAQG,GAC3C,IAAIT,EAAQ,GACRwoC,EAAgBtmD,KAAKomD,eAAeD,MAAMnyD,QAoB9C,GAlBA8pB,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,iBACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,kBAClC3W,UAAW,uBACXuV,MAAO,WACLm5B,EAAKiO,YAAYH,MAIrBxoC,EAAM/pB,KAAK,CACToX,MAAM,EAAGy6B,EAAoBnlB,IAAI,UACjCrB,OAAO,EAAGwmB,EAAoBnlB,IAAI,eAClC3W,UAAW,oBACXuV,MAAO,WACLm5B,EAAKkO,SAASJ,MAIdtmD,KAAKpC,QAAQ2sD,aAAc,CAC7B,IAAI9f,EAAQ6b,EAAcpoD,KAAI,SAAUmS,GACtC,OAAOA,EAAKmpC,aAEd17B,EAAQ9d,KAAKpC,QAAQ2sD,aAAazsC,EAAO,CACvC/Z,KAAM,WACN2gB,KAAM+lB,EAAM,GACZA,MAAOA,IAIA,IAAI5sB,EAA6BkN,EAAEjN,EAAO,CACnD1M,MAAOmN,IAEJyM,KAAK5M,EAAQpe,KAAK06C,mBAGzBia,eAA0B,WACxB,OAAO30D,KAAKpC,QAAQ48C,aAAex6C,KAAKghB,OAQ1C2zC,aAAwB,WACtB,IAAIr2C,EAAY,CACd9J,MAAO,KACPG,IAAK,MAGP,GAAI3U,KAAKomD,eAAeD,OAASnmD,KAAKomD,eAAeD,MAAMjwD,QACrD8J,KAAKomD,eAAeD,MAAMjwD,OAAQ,CACpC,IAAI+mE,EAAaj9D,KAAKomD,eAAeD,MAAM,GACvC+W,EAAal9D,KAAKomD,eAAeD,MAAMnmD,KAAKomD,eAAeD,MAAMjwD,OAAS,GAExC,SAAlC8J,KAAKomD,eAAepvB,WACtB1Y,EAAU9J,MAAQyoD,EAAWphC,YAC7Bvd,EAAU3J,IAAMuoD,EAAWrhC,cAE3Bvd,EAAU9J,MAAQ0oD,EAAWrhC,YAC7Bvd,EAAU3J,IAAMsoD,EAAWphC,aAKjC,OAAOvd,GAUTq2C,kBAA6B,SAAU1oD,GACb,oBAAbA,IACTjM,KAAKozC,0BAA2B,EAAGnqC,EAAKgqB,UAAUhnB,EAAUjM,KAAKioB,qBAarE0sC,aAAwB,SAAUngD,EAAOG,GAEnCH,GAASA,EAAM0J,KAAO1J,EAAMD,QAC9Bvc,QAAQmd,KAAK,8IACbnV,KAAKgyD,gBAAgBx9C,IAGvB,IAAI2xC,EAAQnmD,KAAKm9D,yBAAyB3oD,EAAOG,GAEjDwxC,EAAM/vD,SAAQ,SAAUia,GACtBA,EAAKsrD,cAEP37D,KAAKg6B,OAAOmsB,IAWdwO,yBAAoC,SAAUngD,EAAOG,GACnD,IAAIlG,EAAWo4C,EAEXryC,GAASA,EAAMkQ,OACjBjW,EAAYzO,KAAKqQ,KAAKwpC,eAAerlC,EAAMkQ,MAEvC/P,GAAOA,EAAI+P,OACbmiC,EAAU7mD,KAAKqQ,KAAKwpC,eAAellC,EAAI+P,QAI3C,IAAIyhC,EAAQ,GAEZ,GAAI13C,aAAqB+pC,EACvB,GAAIqO,aAAmBrO,GAAQqO,IAAYp4C,EACzC,GAAIA,EAAU1B,SAAW85C,EAAQ95C,OAAQ,CACnC0B,EAAUkrC,WAAakN,EAAQlN,YACjCnlC,EAAQ/F,EACRkG,EAAMkyC,IAENryC,EAAQqyC,EACRlyC,EAAMlG,GAGR,IAAIyI,EAAU1C,EACd2xC,EAAMpyD,KAAKmjB,GAEX,GACEA,EAAUA,EAAQomC,cAClB6I,EAAMpyD,KAAKmjB,SACJA,GAAWA,IAAYvC,QAEhCwxC,EAAQnmD,KAAK8nD,mBAAmBr5C,EAAWo4C,QAG7CV,EAAMpyD,KAAK0a,GAIf,OAAO03C,GAGTwO,gBAA2B,SAAUngD,EAAOG,GAC1C,IAAIwxC,EAAQnmD,KAAKm9D,yBAAyB3oD,EAAOG,GAE7CyoD,EAAoB,GAIxB,OAHAjX,EAAM/vD,SAAQ,SAAUia,GACtB+sD,EAAkBrpE,KAAKsc,EAAKwrB,gBAEvBuhC,IAIL12C,EAAiB,CAAC,CACpBr0B,KAAM,OACNs2B,MAAOgsC,EACP/mD,KAAM,QACL,CACDvb,KAAM,OACNs2B,MAAOgsC,EACP/mD,KAAM,QACL,CACDvb,KAAM,OACNs2B,MAAOgsC,EACP/mD,KAAM,UAKFyvD,IACC,SAAS//C,EAAyBtsB,EAASF,GAElDE,EAAQi2B,cAAgB,WACtB,IACE,OAAOn2B,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,4BAA0D,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAApH,KAClC,MAAOlI,OAMLulE,GACC,SAAShgD,EAAyBtsB,EAASF,GAElDE,EAAQ49C,EAAI,WACV,IACE99C,EAAoB,KACpB,MAAOiH,GACPC,QAAQC,MAAMF,MAMZwlE,IACC,SAASjgD,EAAyBC,EAAqBzsB,GAE9D,aACAA,EAAoBkB,EAAEurB,GACDzsB,EAAoBU,EAAE+rB,EAAqB,CACzC,aAAgB,WAAa,UAC7B,iBAAoB,WAAa,UACjC,MAAS,WAAa,UACtB,mBAAsB,WAAa,WACnC,SAAY,WAAa,WACzB,SAAY,WAAa,UACzB,mBAAsB,WAAa,UACnC,OAAU,WAAa,UACvB,eAAkB,WAAa,WAC/B,WAAc,WAAa,WAC3B,IAAO,WAAa,WACpB,gBAAmB,WAAa,UAChC,eAAkB,WAAa,UAC/B,cAAiB,WAAa,WAC9B,YAAe,WAAa,WAC5B,oBAAuB,WAAa,UACpC,aAAgB,WAAa,UAC7B,kBAAqB,WAAa,UAClC,2BAA8B,WAAa,UAC3C,mBAAsB,WAAa,UACnC,aAAgB,WAAa,UAC7B,mBAAsB,WAAa,UACnC,QAAW,WAAa,UACxB,UAAa,WAAa,UAC1B,cAAiB,WAAa,UAC9B,mBAAsB,WAAa,UACnC,WAAc,WAAa,UAC3B,QAAW,WAAa,UACxB,UAAa,WAAa,UAC1B,UAAa,WAAa,UAC1B,SAAY,WAAa,WACzB,UAAa,WAAa,UAC1B,YAAe,WAAa,WAC5B,MAAS,WAAa,UACtB,aAAgB,WAAa,WAC7B,uBAA0B,WAAa,UACvC,yBAA4B,WAAa,WACzC,gBAAmB,WAAa,WAChC,iBAAoB,WAAa,WACjC,MAAS,WAAa,UACtB,UAAa,WAAa,UAC1B,YAAe,WAAa,WAC5B,oBAAuB,WAAa,UACpC,gBAAmB,WAAa,UAChC,oBAAuB,WAAa,UACpC,sCAAyC,WAAa,UACtD,sBAAyB,WAAa,UACtC,wBAA2B,WAAa,UACxC,aAAgB,WAAa,UAC7B,mBAAsB,WAAa,UACnC,KAAQ,WAAa,WACrB,eAAkB,WAAa,WAC/B,cAAiB,WAAa,UAC9B,gBAAmB,WAAa,UAChC,SAAY,WAAa,UACzB,cAAiB,WAAa,UAC9B,SAAY,WAAa,YAEmBzsB,EAAoB,KAAlE,IAEI0sE,EAAuD1sE,EAAoB,KAC3E2sE,EAA4E3sE,EAAoB6B,EAAE6qE,GAClGE,EAA0C5sE,EAAoB,KAC9D6sE,EAA+D7sE,EAAoB6B,EAAE+qE,GACrFE,EAAyD9sE,EAAoB,KAC7E+sE,EAA+C/sE,EAAoB,IACnEgtE,EAAqChtE,EAAoB,KAGlF,SAASg7C,EAAQr0C,GAAkC,OAAOq0C,EAAU,mBAAqB75C,QAAU,iBAAmBA,OAAO85C,SAAW,SAAUt0C,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBxF,QAAUwF,EAAIiI,cAAgBzN,QAAUwF,IAAQxF,OAAOa,UAAY,gBAAkB2E,IAAgBA,GAiBzU,SAAS0Z,EAAM4sD,GACb,IACE,OAAOjwD,KAAKqD,MAAM4sD,GAClB,MAAOhmE,GAIP,MAFA+xB,EAASi0C,GAEHhmE,GAQV,SAASkhE,EAAc8E,GACrB,IACE,OAAOJ,IAAkDI,GACzD,MAAOhmE,GAEP,OAAOgmE,GAUX,SAAS9zB,EACT9+B,GACE,OAEEA,EAAK5B,QAAQ,oBAAoB,SAAUhY,GACzC,MAAO,OAAS,OAASA,EAAEysE,WAAW,GAAG/pE,SAAS,KAAKD,OAAO,MAYpE,SAAS81B,EAASi0C,GACsD,qBAA3DH,EACTA,EAAuDzsD,MAAM4sD,GAE7DjwD,KAAKqD,MAAM4sD,GAUf,SAAS1yD,EAAOvF,EAAGC,GACjB,IAAK,IAAIkkB,KAAQlkB,EACXhT,GAAegT,EAAGkkB,KACpBnkB,EAAEmkB,GAAQlkB,EAAEkkB,IAIhB,OAAOnkB,EAQT,SAASghB,EAAMhhB,GACb,IAAK,IAAImkB,KAAQnkB,EACX/S,GAAe+S,EAAGmkB,WACbnkB,EAAEmkB,GAIb,OAAOnkB,EAQT,SAAS66C,EAAQ/tD,GACf,OAAe,OAAXA,EACK,YAGM6M,IAAX7M,EACK,YAGLA,aAAkB6hB,QAA4B,kBAAX7hB,EAC9B,SAGLA,aAAkBoiB,QAA4B,kBAAXpiB,EAC9B,SAGLA,aAAkBs5C,SAA6B,mBAAXt5C,EAC/B,UAGLA,aAAkBuX,OACb,SAGL5V,EAAQ3B,GACH,QAGF,SAQT,IAAIqrE,EAAa,mBACjB,SAASpd,EAAM11C,GACb,OAAwB,kBAATA,GAAqBA,aAAgB6J,SAAWipD,EAAW78D,KAAK+J,GAQjF,SAAS5W,EAAQkD,GACf,MAA+C,mBAAxC7F,OAAOkB,UAAUmB,SAAS5C,KAAKoG,GASxC,SAASihE,EAAUv6D,GACjB,OAAOA,EAAQ+/D,cAAcC,YAS/B,SAAS/Y,EAAgBxY,GAEvB,OADWA,EAAKvrB,wBACJ7F,KAAOtb,OAAOozB,aAAe/oB,SAASgqD,YAAc,EASlE,SAASjJ,EAAe1e,GAEtB,OADWA,EAAKvrB,wBACJ9F,IAAMrb,OAAOszB,aAAejpB,SAAS8a,WAAa,EAQhE,SAAS5C,EAAamqB,EAAM9iC,GAC1B,IAAIgH,EAAU87B,EAAK9iC,UAAU3H,MAAM,MAEC,IAAhC2O,EAAQnN,QAAQmG,KAClBgH,EAAQ/c,KAAK+V,GAEb8iC,EAAK9iC,UAAYgH,EAAQ1O,KAAK,MAQlC,SAASy7C,EAAoBjR,GAC3BA,EAAK9iC,UAAY,GAQnB,SAASuY,EAAgBuqB,EAAM9iC,GAC7B,IAAIgH,EAAU87B,EAAK9iC,UAAU3H,MAAM,KAC/BuB,EAAQoN,EAAQnN,QAAQmG,IAEb,IAAXpG,IACFoN,EAAQlN,OAAOF,EAAO,GAEtBkpC,EAAK9iC,UAAYgH,EAAQ1O,KAAK,MASlC,SAAS4/C,EAAgBoc,GAGvB,IAFA,IAAIxkB,EAASwkB,EAAW57C,WAEftxB,EAAI,EAAGqsD,EAAO3D,EAAO1jD,OAAQhF,EAAIqsD,EAAMrsD,IAAK,CACnD,IAAI8oD,EAAQJ,EAAO1oD,GAEf8oD,EAAMrhC,OAERqhC,EAAMtf,gBAAgB,SAIxB,IAAI3pB,EAAaipC,EAAMjpC,WAEvB,GAAIA,EACF,IAAK,IAAIlC,EAAIkC,EAAW7a,OAAS,EAAG2Y,GAAK,EAAGA,IAAK,CAC/C,IAAIwvD,EAAYttD,EAAWlC,IAEC,IAAxBwvD,EAAUC,WACZtkB,EAAMtf,gBAAgB2jC,EAAU5sE,MAMtCuwD,EAAgBhI,IAWpB,SAASqL,EAAwBkQ,GAC/B,IAAIhhD,EAAO+J,EAEP/T,SAASirD,eACXjhD,EAAQhK,SAASirD,eAEXC,mBAAmBF,GAEzBhhD,EAAMqhC,UAAS,IAEft3B,EAAYpe,OAAO8hB,gBAET0zC,kBAEVp3C,EAAUq3C,SAASphD,IASvB,SAAS2qC,EAAsBqW,GAK7B,IAAIgJ,EAAKhqD,EAJJghD,GAA8D,QAApCA,EAAuBvoD,UAMlD9M,OAAO8hB,cAAgBzX,SAASirD,eAClCjhD,EAAQhK,SAASirD,eACXC,mBAAmBF,IACzBgJ,EAAMr+D,OAAO8hB,gBACT0zC,kBACJ6I,EAAI5I,SAASphD,IASjB,SAASyN,IACP,GAAI9hB,OAAO8hB,aAAc,CACvB,IAAIu8C,EAAMr+D,OAAO8hB,eAEjB,GAAIu8C,EAAIC,YAAcD,EAAIE,WACxB,OAAOF,EAAIC,WAAW,GAI1B,OAAO,KAQT,SAASx7C,EAAazO,GACpB,GAAIA,GACErU,OAAO8hB,aAAc,CACvB,IAAIu8C,EAAMr+D,OAAO8hB,eACjBu8C,EAAI7I,kBACJ6I,EAAI5I,SAASphD,IAcnB,SAAS0lD,IACP,IAAI1lD,EAAQyN,IAEZ,OAAIzN,GAAS,gBAAiBA,GAAS,cAAeA,GAASA,EAAMmqD,gBAAkBnqD,EAAMmqD,iBAAmBnqD,EAAMoqD,aAC7G,CACL5e,YAAaxrC,EAAMwrC,YACnBC,UAAWzrC,EAAMyrC,UACjBzzC,UAAWgI,EAAMmqD,eAAev9C,YAI7B,KAUT,SAAS64C,EAAmBvhB,GAC1B,GAAIluC,SAASirD,aAAet1D,OAAO8hB,cACjB9hB,OAAO8hB,eAER,CACb,IAAIzN,EAAQhK,SAASirD,cAEhB/c,EAAOlsC,UAAUqnB,YACpB6kB,EAAOlsC,UAAUgH,YAAYhJ,SAASuV,eAAe,KAKvDvL,EAAMqqD,SAASnmB,EAAOlsC,UAAUqnB,WAAY6kB,EAAOsH,aACnDxrC,EAAMsqD,OAAOpmB,EAAOlsC,UAAUqnB,WAAY6kB,EAAOuH,WACjDh9B,EAAazO,IAWnB,SAASwS,EAAa5oB,EAAS2gE,GAkB7B,QAjBuBr/D,IAAXq/D,IAGVA,EAAS,CACPC,MAAO,GACPC,MAAO,WACL,IAAI7zD,EAAOnL,KAAK++D,MAEhB,OADA/+D,KAAK++D,MAAQ,GACN5zD,GAETgd,IAAK,SAAahd,GAChBnL,KAAK++D,MAAQ5zD,KAMfhN,EAAQuqC,UAAW,CAErB,IAAIu2B,EAAeC,EAAsC/gE,EAAQuqC,WAEjE,MAAqB,KAAjBu2B,EACKH,EAAOE,QAAUC,EAGjB,GAKX,GAAI9gE,EAAQghE,gBAAiB,CAI3B,IAHA,IAAI38C,EAAarkB,EAAQqkB,WACrBgD,EAAY,GAEPt0B,EAAI,EAAGqsD,EAAO/6B,EAAWtsB,OAAQhF,EAAIqsD,EAAMrsD,IAAK,CACvD,IAAI8oD,EAAQx3B,EAAWtxB,GAEvB,GAAuB,QAAnB8oD,EAAMhtC,UAAyC,MAAnBgtC,EAAMhtC,SAAkB,CACtD,IAAIoyD,EAAY58C,EAAWtxB,EAAI,GAC3BmuE,EAAWD,EAAYA,EAAUpyD,cAAWvN,EAE5C4/D,GAAyB,QAAbA,GAAmC,MAAbA,GAAiC,OAAbA,IACtC,KAAd75C,IACFA,GAAa,MAGfs5C,EAAOE,SAGTx5C,GAAauB,EAAaizB,EAAO8kB,GACjCA,EAAO32C,IAAI,UACiB,OAAnB6xB,EAAMhtC,UACfwY,GAAas5C,EAAOE,QACpBF,EAAO32C,IAAI,OAEX3C,GAAauB,EAAaizB,EAAO8kB,GAIrC,OAAOt5C,EAIT,MAAO,GAIT,SAAS05C,EAAsC/zD,GAC7C,OAAOA,EAAK5B,QAAQ,oBAAoB,SAAU6F,GAChD,MAAO,KAAKvF,KAAKuF,GAAS,GAAKA,KAUnC,SAASmsD,EAAc3uB,EAAM7/B,GAG3B,IAFA,IAAI9M,EAAI2sC,EAAOA,EAAKzrB,gBAAa1hB,EAE1BQ,GAAG,CACR,GAAIA,IAAM8M,EACR,OAAO,EAGT9M,EAAIA,EAAEkhB,WAGR,OAAO,EAST,SAAS6F,IACP,IAAoB,IAAhBs4C,EAAmB,CACrB,IAAIC,GAAM,EAEV,GAAyB,qBAAdvpD,WAAmD,gCAAtBA,UAAUwpD,QAA2C,CAC3F,IAAIC,EAAKzpD,UAAUkjB,UAGA,MAFV,uBAEFrvB,KAAK41D,KACVF,EAAKG,WAAWv1D,OAAO0tB,KAI3BynC,EAAaC,EAGf,OAAOD,EAQT,IAAIA,GAAc,EAOlB,SAASK,IACP,MAA4B,qBAAd3pD,YAAyE,IAA5CA,UAAUkjB,UAAUv1B,QAAQ,WAYzE,SAASsN,EAAiB9S,EAAS2F,EAAQN,EAAUo8D,GACnD,GAAIzhE,EAAQ8S,iBAUV,YATmBxR,IAAfmgE,IACFA,GAAa,GAGA,eAAX97D,GAA2B67D,MAC7B77D,EAAS,kBAGX3F,EAAQ8S,iBAAiBnN,EAAQN,EAAUo8D,GACpCp8D,EACF,GAAIrF,EAAQ0hE,YAAa,CAE9B,IAAIttC,EAAI,WACN,OAAO/uB,EAASnS,KAAK8M,EAAS+B,OAAOqf,QAIvC,OADAphB,EAAQ0hE,YAAY,KAAO/7D,EAAQyuB,GAC5BA,GAWX,SAASpM,EAAoBhoB,EAAS2F,EAAQN,EAAUo8D,GAClDzhE,EAAQgoB,0BACS1mB,IAAfmgE,IACFA,GAAa,GAGA,eAAX97D,GAA2B67D,MAC7B77D,EAAS,kBAGX3F,EAAQgoB,oBAAoBriB,EAAQN,EAAUo8D,IACrCzhE,EAAQ2hE,aAEjB3hE,EAAQ2hE,YAAY,KAAOh8D,EAAQN,GAUvC,SAASu5B,EAAU6P,EAAM7/B,GAGvB,IAFA,IAAI9M,EAAI2sC,EAAKzrB,WAENlhB,GAAG,CACR,GAAIA,IAAM8M,EACR,OAAO,EAGT9M,EAAIA,EAAEkhB,WAGR,OAAO,EAQT,SAASijB,EAAU2V,GACjB,IAAIr1B,EAAO,GACPxzB,EAAI,EAER,SAAS6uE,IAGP,IAFA,IAAI91C,EAAO,QAEYxqB,IAAhBs6C,EAAS7oD,IAAoB,QAAQkQ,KAAK24C,EAAS7oD,KACxD+4B,GAAQ8vB,EAAS7oD,GACjBA,IAGF,GAAa,KAAT+4B,EACF,MAAM,IAAIruB,MAAM,sDAAwD1K,GAG1E,OAAO+4B,EAGT,SAAS+1C,EAAWrrD,GAGlB,IAFA,IAAIljB,EAAO,QAEYgO,IAAhBs6C,EAAS7oD,IAAoB6oD,EAAS7oD,KAAOyjB,GAClDljB,GAAQsoD,EAAS7oD,GACjBA,IAGF,GAAI6oD,EAAS7oD,KAAOyjB,EAClB,MAAM,IAAI/Y,MAAM,gDAAkD+Y,EAAM,aAG1E,OAAOljB,EAGT,UAAuBgO,IAAhBs6C,EAAS7oD,IACd,GAAoB,MAAhB6oD,EAAS7oD,GACXA,IACAwzB,EAAK3wB,KAAKgsE,SACL,IAAoB,MAAhBhmB,EAAS7oD,GA+BlB,MAAM,IAAI0K,MAAM,4CAA8Cm+C,EAAS7oD,GAAK,cAAgBA,GA5B5F,GAFAA,IAEoB,MAAhB6oD,EAAS7oD,IAA+B,MAAhB6oD,EAAS7oD,GAAY,CAC/C,IAAIyjB,EAAMolC,EAAS7oD,GAInB,GAHAA,IACAwzB,EAAK3wB,KAAKisE,EAAWrrD,IAEjBolC,EAAS7oD,KAAOyjB,EAClB,MAAM,IAAI/Y,MAAM,wDAA2D1K,GAG7EA,QACK,CACL,IAAIwS,EAAQs8D,EAAW,KAAKrtC,OAE5B,GAAqB,IAAjBjvB,EAAMxN,OACR,MAAM,IAAI0F,MAAM,oDAAsD1K,GAIxEwS,EAAkB,MAAVA,EAAgBA,EAAQoK,KAAKqD,MAAMzN,GAC3CghB,EAAK3wB,KAAK2P,GAGZ,GAAoB,MAAhBq2C,EAAS7oD,GACX,MAAM,IAAI0K,MAAM,0DAA4D1K,GAG9EA,IAMJ,OAAOwzB,EAQT,SAASgwB,EAAchwB,GACrB,OAAOA,EAAKxmB,KAAI,SAAUlL,GACxB,MAAiB,kBAANA,EACF,IAAMA,EAAI,IACK,kBAANA,GAAkBA,EAAEoc,MAAM,oBACnC,IAAMpc,EAEN,KAAOA,EAAI,QAEnBoP,KAAK,IAQV,SAAS6xC,EAAmBh8C,GAC1B,GAAsB,SAAlBA,EAAMgoE,SAAsBrsE,MAAMW,QAAQ0D,EAAMixB,QAAS,CAC3D,IAAIg3C,EAAQjoE,EAAMixB,OAElB,GAAIg3C,EAAO,CAKT,IAJAA,EAAQA,EAAMhiE,KAAI,SAAU/L,GAC1B,OAAO2b,KAAKC,UAAU5b,OAGd+D,OAAS,EAAG,CACpB,IAAI+5B,EAAO,CAAC,KAAOiwC,EAAMhqE,OAAS,GAAK,cACvCgqE,EAAQA,EAAMlsE,MAAM,EAAG,IACjBD,KAAKk8B,GAGbh4B,EAAMiZ,QAAU,8BAAgCgvD,EAAM99D,KAAK,OAQ/D,MAJsB,yBAAlBnK,EAAMgoE,UACRhoE,EAAMiZ,QAAU,wCAA0CjZ,EAAMwgD,OAAO0nB,oBAGlEloE,EAQT,SAASq8C,EAAU1hD,GACjB,OAAOA,GAAiC,oBAAhBA,EAAOiO,MAAkD,oBAApBjO,EAAM,MAQrE,SAAS6hD,EAAuB2rB,GAC9B,MAAoC,WAA7Bt0B,EAAQs0B,IAAiCxsE,MAAMW,QAAQ6rE,EAAgB17C,OAA4C,kBAA5B07C,EAAgBlvD,QAShH,SAASmvD,EAAWtzD,EAAQitC,EAAO99B,GACjC,IAAIokD,OAAqB7gE,IAAXyc,EAAuBA,EAAS,EAE9C,OAAO89B,EAAMx+B,KAAO8kD,GAAWvzD,EAAOyO,MAAQw+B,EAAMvmB,MAAQ6sC,GAAWvzD,EAAO0mB,OAASumB,EAAMz+B,IAAM+kD,GAAWvzD,EAAOwO,KAAOy+B,EAAMt4B,OAAS4+C,GAAWvzD,EAAO2U,OAiB/J,SAASuR,EAASf,EAAMquC,EAAMC,GAC5B,IAAInO,EACJ,OAAO,WACL,IAAIoO,EAAUzgE,KACVgB,EAAO/K,UAEPyqE,EAAQ,WACVrO,EAAU,KACLmO,GAAWtuC,EAAKp8B,MAAM2qE,EAASz/D,IAGlC2/D,EAAUH,IAAcnO,EAC5Bl/B,aAAak/B,GACbA,EAAU3gD,WAAWgvD,EAAOH,GACxBI,GAASzuC,EAAKp8B,MAAM2qE,EAASz/D,IAYrC,SAAS8+C,EAAS8gB,EAASC,GAMzB,IALA,IAAIhhE,EAAMghE,EAAQ3qE,OACdse,EAAQ,EACRssD,EAASF,EAAQ1qE,OACjB6qE,EAASF,EAAQ3qE,OAEd2qE,EAAQ/V,OAAOt2C,KAAWosD,EAAQ9V,OAAOt2C,IAAUA,EAAQ3U,GAChE2U,IAGF,KAAOqsD,EAAQ/V,OAAOiW,EAAS,KAAOH,EAAQ9V,OAAOgW,EAAS,IAAMC,EAASvsD,GAASssD,EAAS,GAC7FC,IACAD,IAGF,MAAO,CACLtsD,MAAOA,EACPG,IAAKosD,GAWT,SAASpuB,EAAkBngB,GACzB,IAEIwuC,EACAzsD,EACA0sD,EACAphE,EACAqhE,EANAtuB,EAAa,EACbC,EAAW,EAyCf,MAlCiC,kBAAtBrgB,EAAGlc,gBAA0D,kBAApBkc,EAAGjc,cACrDq8B,EAAapgB,EAAGlc,eAChBu8B,EAAWrgB,EAAGjc,eAEdhC,EAAQhK,SAAS+T,UAAUk3C,gBAEdjhD,EAAMvK,kBAAoBwoB,IACrC3yB,EAAM2yB,EAAGrgC,MAAM+D,OACf8qE,EAAkBxuC,EAAGrgC,MAAMoX,QAAQ,QAAS,OAE5C03D,EAAiBzuC,EAAGmjB,mBACLwrB,eAAe5sD,EAAM6sD,gBAIpCF,EAAW1uC,EAAGmjB,mBACLC,UAAS,GAEdqrB,EAAeI,iBAAiB,aAAcH,IAAa,EAC7DtuB,EAAaC,EAAWhzC,GAExB+yC,GAAcquB,EAAenrB,UAAU,aAAcj2C,GACrD+yC,GAAcouB,EAAgBhtE,MAAM,EAAG4+C,GAAYzwC,MAAM,MAAMjM,OAAS,EAEpE+qE,EAAeI,iBAAiB,WAAYH,IAAa,EAC3DruB,EAAWhzC,GAEXgzC,GAAYouB,EAAeprB,QAAQ,aAAch2C,GACjDgzC,GAAYmuB,EAAgBhtE,MAAM,EAAG6+C,GAAU1wC,MAAM,MAAMjM,OAAS,KAMrE,CACL08C,WAAYA,EACZC,SAAUA,EACVr+B,MAAO8sD,EAAkB1uB,GACzBj+B,IAAK2sD,EAAkBzuB,IAQzB,SAASyuB,EAAkB59D,GACzB,IAAI69D,EAAgB/uC,EAAGrgC,MAAM+P,UAAU,EAAGwB,GAG1C,MAAO,CACLytC,KAHSowB,EAAcnyD,MAAM,QAAU,IAAIlZ,OAAS,EAIpDk7C,OAHQmwB,EAAcrrE,OAASqrE,EAAcC,YAAY,QAe/D,SAAS/rB,EAAoBjjB,EAAI2e,EAAKC,GACpC,IAAIjmC,EAAOqnB,EAAGrgC,OAAS,GAEvB,GAAIg/C,EAAM,GAAKC,EAAS,EAAG,CACzB,IAAI2E,EAAO5qC,EAAKhJ,MAAM,KAAMgvC,GAC5BA,EAAM97C,KAAK0f,IAAIghC,EAAK7/C,OAAQi7C,GAC5BC,EAAS/7C,KAAK0f,IAAIghC,EAAK5E,EAAM,GAAGj7C,OAAQk7C,EAAS,GACjD,IAAIqwB,EAAsB,IAARtwB,EAAYC,EAASA,EAAS,EAEhD,OAAO2E,EAAK/hD,MAAM,EAAGm9C,EAAM,GAAG/uC,KAAK,MAAMlM,OAASurE,EAGpD,OAAQ,EASV,SAASvsB,EAAmB/pC,EAAMs/B,GAChC,IACIi3B,EADAnmC,EAAS,GAGb,IAAKkP,IAAUA,EAAMv0C,OACnB,OAAOqlC,EAGT,IACEmmC,EAAQ7D,EAA6C1sD,MAAMhG,GAC3D,MAAOpT,GACP,OAAOwjC,EAgBT,OAbAkP,EAAMr0C,SAAQ,SAAUsuB,GACtB,IACIi9C,EAAcC,GADJx9B,EAAU1f,IAEpBm9C,EAAUH,EAAMI,SAASH,GAEzBE,GACFtmC,EAAOxnC,KAAK,CACV2wB,KAAMA,EACNxM,KAAM2pD,EAAQpvE,IAAMovE,EAAQpvE,IAAIylB,KAAO2pD,EAAQ1vE,MAAQ0vE,EAAQ1vE,MAAM+lB,KAAO,EAC5Ek5B,OAAQywB,EAAQpvE,IAAMovE,EAAQpvE,IAAI2+C,OAASywB,EAAQ1vE,MAAQ0vE,EAAQ1vE,MAAMi/C,OAAS,OAIjF7V,EAST,SAASqmC,GAAmBl9C,GAC1B,OAAOA,EAAKxmB,KAAI,SAAUlL,GACxB,MAAO,IAAMgiB,OAAOhiB,GAAGuW,QAAQ,KAAM,MAAMA,QAAQ,MAAO,SACzDnH,KAAK,IAWV,SAAS2/D,GAAYnmD,GACnB,IAAIomD,EAAMz3D,SAASiJ,cAAc,OAEjC,OADAwuD,EAAIrpD,MAAMiD,MAAQA,EACXomD,EAAIrpD,MAAMiD,MAAMzZ,MAAM,OAAOC,KAAK,IAAI2H,eAAiB,KAQhE,SAAS03C,GAAa7lC,GACpB,QAASmmD,GAAYnmD,GASvB,SAASwmC,GAAiBl5B,EAAQ+4C,GAChC,IAAK/4C,EACH,MAAO,GAGT,IAAIi5B,EAAU,GAsCd,OApCIj5B,EAAO9J,QACT+iC,GAAWj5B,EAAO9J,OAGhB8J,EAAOg5C,cACL/f,EAAQjsD,OAAS,IACnBisD,GAAW,MAGbA,GAAWj5B,EAAOg5C,aAGhBh5C,EAAM,UACJi5B,EAAQjsD,OAAS,IACnBisD,GAAW,QAGbA,IAAW,EAAG2b,EAAoDr9C,IAAI,eAAWhhB,EAAWwiE,GAAU,KACtG9f,GAAWr0C,KAAKC,UAAUmb,EAAM,QAAa,KAAM,IAGjDt1B,MAAMW,QAAQ20B,EAAOwZ,WAAaxZ,EAAOwZ,SAASxsC,OAAS,IACzDisD,EAAQjsD,OAAS,IACnBisD,GAAW,QAGbA,IAAW,EAAG2b,EAAoDr9C,IAAI,gBAAYhhB,EAAWwiE,GAAU,KACvG/4C,EAAOwZ,SAAStsC,SAAQ,SAAU+rE,EAASz+D,GACzCy+C,GAAWr0C,KAAKC,UAAUo0D,EAAS,KAAM,GAErCz+D,IAAUwlB,EAAOwZ,SAASxsC,OAAS,IACrCisD,GAAW,UAKVA,EAUT,SAASpwD,GAAIa,EAAQ8xB,GAGnB,IAFA,IAAIvyB,EAAQS,EAEH1B,EAAI,EAAGA,EAAIwzB,EAAKxuB,aAAoBuJ,IAAVtN,GAAiC,OAAVA,EAAgBjB,IACxEiB,EAAQA,EAAMuyB,EAAKxzB,IAGrB,OAAOiB,EAST,SAASuwD,GAAejxD,EAAM2wE,GAK5B,IAJA,IAAIC,EAAe5wE,EAAK8X,QAAQ,oBAAqB,IACjD+4D,EAAYD,EACZnxE,EAAI,GAEyC,IAA1CkxE,EAAkBz+D,QAAQ2+D,IAE/BA,EAAYD,YADSnxE,EAAI,EAAI,IAAMA,EAAI,IACE,IACzCA,IAGF,OAAOoxE,EAST,SAAS53B,GAAcpjB,EAAMi7C,GAC3B,IAAIC,EAAW,GAEf,SAASC,EAAoBn7C,EAAMk7C,EAAUE,EAAUH,KACtC3uE,MAAMW,QAAQ+yB,KAAUhoB,GAASgoB,IAEjCi7C,KACbC,EAASE,GAAY,KAAM,GAGzBpjE,GAASgoB,IACX11B,OAAO6C,KAAK6yB,GAAMlxB,SAAQ,SAAU+tC,GAClCs+B,EAAoBn7C,EAAK6c,GAAQq+B,EAAUE,EAAW,IAAMv+B,EAAOo+B,MAKzE,GAAI3uE,MAAMW,QAAQ+yB,GAGhB,IAFA,IAAIxS,EAAMzf,KAAK0f,IAAIuS,EAAKpxB,OA5kCM,KA8kCrBhF,EAAI,EAAGA,EAAI4jB,EAAK5jB,IAEvBuxE,EADWn7C,EAAKp2B,GACUsxE,EAAU,GAAID,QAG1CC,EAAS,KAAM,EAGjB,OAAO5wE,OAAO6C,KAAK+tE,GAAUxqC,OAS/B,SAASA,GAAK/4B,EAAOylB,EAAMsS,GACzB,IAAI2rC,EAAaj+C,GAAiB,MAATA,EAAe0f,EAAU1f,GAAQ,GACtDk+C,EAAqB,SAAd5rC,GAAwB,EAAI,EACnCkS,EAAcjqC,EAAMjL,QAMxB,OALAk1C,EAAYlR,MAAK,SAAUlyB,EAAGC,GAC5B,IAAI88D,EAAS9wE,GAAI+T,EAAG68D,GAChBG,EAAS/wE,GAAIgU,EAAG48D,GACpB,OAAOC,GAAQC,EAASC,EAAS,EAAID,EAASC,GAAU,EAAI,MAEvD55B,EAQT,SAASG,GAAez2C,EAAQokC,GAC9B,IAAI4rC,EAAqB,SAAd5rC,GAAwB,EAAI,EACnC+rC,EAAenxE,OAAO6C,KAAK7B,GAAQolC,MAAK,SAAUlyB,EAAGC,GACvD,OAAO68D,EAAOnF,IAA+D33D,EAAGC,MAE9EqjC,EAAe,GAInB,OAHA25B,EAAa3sE,SAAQ,SAAU+tC,GAC7BiF,EAAajF,GAASvxC,EAAOuxC,MAExBiF,EAUT,SAAS9E,GAAY70B,GACnB,GAAY,KAARA,EACF,MAAO,GAGT,IAAIuzD,EAAQvzD,EAAI1F,cAEhB,GAAc,SAAVi5D,EACF,OAAO,KAGT,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,IAAIC,EAAMxuD,OAAOhF,GAEbyzD,EAAWxD,WAAWjwD,GAE1B,OAAK3a,MAAMmuE,IAASnuE,MAAMouE,GAInBzzD,EAHEwzD,EAYX,SAASngB,GAAY3e,EAAOhyC,GAC1B,MAAwB,kBAAVA,GAAsBA,EAvqCtB,WAuqC2C6C,SAAS7C,IAAUkD,KAAK29B,MAAM7gC,KAAWA,IAAU2C,MAAM,IAAIgiB,KAAK3kB,GAAOgxE,WASpI,SAASt6B,GAAWmiB,GAClB,GAAIA,EAAO,IACT,OAAOA,EAAKoY,UAAY,KAG1B,IAAIC,EAAKrY,EAAO,IAEhB,GAAIqY,EAAK,IACP,OAAOA,EAAGD,QAAQ,GAAK,MAGzB,IAAIE,EAAKD,EAAK,IAEd,GAAIC,EAAK,IACP,OAAOA,EAAGF,QAAQ,GAAK,MAGzB,IAAIG,EAAKD,EAAK,IAEd,OAAIC,EAAK,IACAA,EAAGH,QAAQ,GAAK,OAGhBG,EAAK,KACJH,QAAQ,GAAK,MAUzB,SAASz6B,GAAgBx9B,EAAMq4D,GAC7B,OAAIr4D,EAAKjV,QAAUstE,EACVr4D,EAGFA,EAAKnX,MAAM,EAAGwvE,GAAqB,MAQ5C,SAASlkE,GAASnN,GAChB,MAA0B,WAAnB25C,EAAQ35C,IAAiC,OAAVA,IAAmByB,MAAMW,QAAQpC,GASzE,SAAS4Y,GAAS9L,EAAO6f,GACvB,OAAgC,IAAzB7f,EAAM0E,QAAQmb,GAQvB,SAASg2B,GAAyB2uB,EAASC,GACzC,IAAKA,IAAYD,EACf,OAAO,EAGT,GAAIC,IAAYD,IAAYC,GAAWD,EACrC,OAAO,EAGT,GAAIC,EAAQxtE,SAAWutE,EAAQvtE,OAC7B,OAAO,EAuBT,IApBA,IAAIutC,EAAQ,SAAevyC,GAazB,KAVwB,UAApBuyE,EAAQvyE,GAAG6S,KACN2/D,EAAQl/C,MAAK,SAAUxxB,GAC5B,OAAOA,EAAEklB,OAASurD,EAAQvyE,GAAGgnB,QAGxBwrD,EAAQl/C,MAAK,SAAUxxB,GAC5B,OAAOA,EAAEsxB,WAAam/C,EAAQvyE,GAAGozB,UAAYtxB,EAAE2wE,aAAeF,EAAQvyE,GAAGyyE,eAK3E,MAAO,CACLh6D,GAAG,IAKAzY,EAAI,EAAGA,EAAIuyE,EAAQvtE,SAAUhF,EAAG,CACvC,IAAI0yE,EAAOngC,EAAMvyC,GAEjB,GAAsB,WAAlB46C,EAAQ83B,GAAoB,OAAOA,EAAKj6D,EAG9C,OAAO,EAGT,SAAS5W,GAAeH,EAAQH,GAC9B,OAAOb,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQH,KAKhDoxE,GACC,SAAS5yE,EAAQs1B,EAA0Bz1B,GAElD,IAAI21B,EAEJ,GAAIvmB,OAAO4jE,OAETr9C,EAAgBvmB,OAAO4jE,YAEvB,IAEEr9C,EAAgB31B,EAAoBc,OAAO,WAAkC,IAAIqO,EAAI,IAAIrE,MAAM,uCAAqE,MAA7BqE,EAAE4B,KAAO,mBAA0B5B,EAA/H,KAC3C,MAAOlI,IAIX9G,EAAOD,QAAUy1B,GAIXs9C,IACC,SAAS9yE,GAOhBA,EAAOD,QAAU,SAAS4lD,EAAa9wC,EAAGC,GACzC,aACA,IAeCi+D,EAAQC,EAfLjtD,EAAK,8EACRktD,EAAM,iBACNC,EAAM,iHACNC,EAAM,iBACNC,EAAM,KACNnzE,EAAI,SAAS+B,GAAK,OAAO2jD,EAAY0tB,cAAgB,GAAKrxE,GAAG8W,eAAiB,GAAK9W,GAEnF83B,EAAI75B,EAAE4U,GAAGyD,QAAQ26D,EAAK,KAAO,GAC7B3wC,EAAIriC,EAAE6U,GAAGwD,QAAQ26D,EAAK,KAAO,GAE7BK,EAAKx5C,EAAExhB,QAAQyN,EAAI,UAAUzN,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAIpH,MAAM,MACvEqiE,EAAKjxC,EAAEhqB,QAAQyN,EAAI,UAAUzN,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAIpH,MAAM,MAEvEsiE,EAAKC,SAAS35C,EAAE3b,MAAMg1D,GAAM,KAAsB,IAAdG,EAAGruE,QAAgB60B,EAAE3b,MAAM+0D,IAAQrtD,KAAK3F,MAAM4Z,GAClF45C,EAAKD,SAASnxC,EAAEnkB,MAAMg1D,GAAM,KAAOK,GAAMlxC,EAAEnkB,MAAM+0D,IAAQrtD,KAAK3F,MAAMoiB,IAAM,KAG3E,GAAIoxC,EAAI,CACP,GAAKF,EAAKE,EAAO,OAAQ,EACpB,GAAKF,EAAKE,EAAO,OAAO,EAG9B,IAAI,IAAIC,EAAK,EAAGC,EAAKxvE,KAAKyf,IAAIyvD,EAAGruE,OAAQsuE,EAAGtuE,QAAS0uE,EAAOC,EAAMD,IAAQ,CAKzE,GAHAZ,IAAWO,EAAGK,IAAS,IAAIx1D,MAAMi1D,IAAQ3E,WAAW6E,EAAGK,KAAUL,EAAGK,IAAS,EAC7EX,IAAWO,EAAGI,IAAS,IAAIx1D,MAAMi1D,IAAQ3E,WAAW8E,EAAGI,KAAUJ,EAAGI,IAAS,EAEzE9vE,MAAMkvE,KAAYlvE,MAAMmvE,GAAW,OAAQnvE,MAAMkvE,GAAW,GAAK,EAMrE,UAJgBA,WAAkBC,IACjCD,GAAU,GACVC,GAAU,IAEPD,EAASC,EAAU,OAAQ,EAC/B,GAAID,EAASC,EAAU,OAAO,EAE/B,OAAO,IAMFa,IACC,SAASxnD,EAAyBtsB,IAEzC,SAAUA,GACR,aAEA,SAASuD,EAAQkD,GACf,OAAY,OAARA,GAC6C,mBAAxC7F,OAAOkB,UAAUmB,SAAS5C,KAAKoG,GAM1C,SAAS6H,EAAS7H,GAChB,OAAY,OAARA,GAC6C,oBAAxC7F,OAAOkB,UAAUmB,SAAS5C,KAAKoG,GAM1C,SAASstE,EAAgBzuC,EAAO0uC,GAE9B,GAAI1uC,IAAU0uC,EACZ,OAAO,EAKT,GADgBpzE,OAAOkB,UAAUmB,SAAS5C,KAAKilC,KAC7B1kC,OAAOkB,UAAUmB,SAAS5C,KAAK2zE,GAC/C,OAAO,EAIT,IAAuB,IAAnBzwE,EAAQ+hC,GAAiB,CAE3B,GAAIA,EAAMpgC,SAAW8uE,EAAO9uE,OAC1B,OAAO,EAET,IAAK,IAAIhF,EAAI,EAAGA,EAAIolC,EAAMpgC,OAAQhF,IAChC,IAA6C,IAAzC6zE,EAAgBzuC,EAAMplC,GAAI8zE,EAAO9zE,IACnC,OAAO,EAGX,OAAO,EAET,IAAwB,IAApBoO,EAASg3B,GAAiB,CAE5B,IAAI2uC,EAAW,GACf,IAAK,IAAIxyE,KAAO6jC,EACd,GAAIvjC,eAAe1B,KAAKilC,EAAO7jC,GAAM,CACnC,IAAiD,IAA7CsyE,EAAgBzuC,EAAM7jC,GAAMuyE,EAAOvyE,IACrC,OAAO,EAETwyE,EAASxyE,IAAO,EAKpB,IAAK,IAAIyyE,KAAQF,EACf,GAAIjyE,eAAe1B,KAAK2zE,EAAQE,KACP,IAAnBD,EAASC,GACX,OAAO,EAIb,OAAO,EAET,OAAO,EAGT,SAASC,EAAQ1tE,GAUf,GAAY,KAARA,IAAsB,IAARA,GAAyB,OAARA,EAC/B,OAAO,EACJ,GAAIlD,EAAQkD,IAAuB,IAAfA,EAAIvB,OAE3B,OAAO,EACJ,GAAIoJ,EAAS7H,GAAM,CAEtB,IAAK,IAAIhF,KAAOgF,EAIZ,GAAIA,EAAI1E,eAAeN,GACrB,OAAO,EAGb,OAAO,EAEP,OAAO,EAwBb,IAAI2yE,EAEFA,EADuC,oBAA9BpwD,OAAOliB,UAAUsyE,SACf,SAAS31D,GAClB,OAAOA,EAAI21D,YAGF,SAAS31D,GAClB,OAAOA,EAAIL,MAAM,YAAY,IAKjC,IAAIi2D,EAAc,EAEdC,EAAc,EAQdC,EAAkB,CACpBC,EAAG,SACHx3C,EAAG,MACH/B,EAAG,SACHuB,EAAG,QACHtB,EAAG,SACHuB,EAAG,UACHtB,EAAG,aACHuB,EAAG,OACHtB,EAAG,gBACHuB,EAAG,iBAuCD83C,EAAc,CAChB,IAdY,MAeZ,IAjBa,OAkBb,IAlCc,QAmCd,IAlCc,QAmCd,IAhBe,SAiBf,IAnCe,SAoCf,IAxCiB,WAyCjB,IAjBc,SAkBd,IAzCe,SA0Cf,IArCgB,WAwCdC,EAAqB,CACrB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GAGLC,EAAY,CACZ,KAAK,EACL,MAAM,EACN,MAAM,GAUV,SAASC,EAAM71C,GACX,OAAQA,GAAM,KAAOA,GAAM,KACb,MAAPA,EASX,SAAS81C,KAETA,EAAM/yE,UAAY,CACdob,SAAU,SAAS43D,GACf,IAEItxD,EACAuxD,EACAl6D,EAzBKkkB,EAqBL5mB,EAAS,GAKb,IAJAnJ,KAAKgmE,SAAW,EAIThmE,KAAKgmE,SAAWF,EAAO5vE,QAC1B,IA3BK65B,EA2BO+1C,EAAO9lE,KAAKgmE,YA1BlB,KAAOj2C,GAAM,KACnBA,GAAM,KAAOA,GAAM,KACb,MAAPA,EAyBKvb,EAAQxU,KAAKgmE,SACbD,EAAa/lE,KAAKimE,2BAA2BH,GAC7C38D,EAAOpV,KAAK,CAACgQ,KA5FA,qBA6FA5R,MAAO4zE,EACPvxD,MAAOA,SACjB,QAA2C/U,IAAvCgmE,EAAYK,EAAO9lE,KAAKgmE,WAC/B78D,EAAOpV,KAAK,CAACgQ,KAAM0hE,EAAYK,EAAO9lE,KAAKgmE,WAC/B7zE,MAAO2zE,EAAO9lE,KAAKgmE,UACnBxxD,MAAOxU,KAAKgmE,WACxBhmE,KAAKgmE,gBACF,GAAIJ,EAAME,EAAO9lE,KAAKgmE,WACzBn6D,EAAQ7L,KAAKkmE,eAAeJ,GAC5B38D,EAAOpV,KAAK8X,QACT,GAA8B,MAA1Bi6D,EAAO9lE,KAAKgmE,UAGnBn6D,EAAQ7L,KAAKmmE,iBAAiBL,GAC9B38D,EAAOpV,KAAK8X,QACT,GAA8B,MAA1Bi6D,EAAO9lE,KAAKgmE,UACnBxxD,EAAQxU,KAAKgmE,SACbD,EAAa/lE,KAAKomE,yBAAyBN,GAC3C38D,EAAOpV,KAAK,CAACgQ,KA9GF,mBA+GE5R,MAAO4zE,EACPvxD,MAAOA,SACjB,GAA8B,MAA1BsxD,EAAO9lE,KAAKgmE,UACnBxxD,EAAQxU,KAAKgmE,SACbD,EAAa/lE,KAAKqmE,yBAAyBP,GAC3C38D,EAAOpV,KAAK,CAACgQ,KA1FZ,UA2FY5R,MAAO4zE,EACPvxD,MAAOA,SACjB,GAA8B,MAA1BsxD,EAAO9lE,KAAKgmE,UAAmB,CACtCxxD,EAAQxU,KAAKgmE,SACb,IAAIM,EAAUtmE,KAAKumE,gBAAgBT,GACnC38D,EAAOpV,KAAK,CAACgQ,KAhGZ,UAiGY5R,MAAOm0E,EACP9xD,MAAOA,SACjB,QAAkD/U,IAA9CimE,EAAmBI,EAAO9lE,KAAKgmE,WACtC78D,EAAOpV,KAAKiM,KAAKwmE,iBAAiBV,SAC/B,QAAyCrmE,IAArCkmE,EAAUG,EAAO9lE,KAAKgmE,WAE7BhmE,KAAKgmE,gBACF,GAA8B,MAA1BF,EAAO9lE,KAAKgmE,UACnBxxD,EAAQxU,KAAKgmE,SACbhmE,KAAKgmE,WACyB,MAA1BF,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACL78D,EAAOpV,KAAK,CAACgQ,KA5HnB,MA4HkC5R,MAAO,KAAMqiB,MAAOA,KAEhDrL,EAAOpV,KAAK,CAACgQ,KAjIhB,SAiIkC5R,MAAO,IAAKqiB,MAAOA,QAEnD,IAA8B,MAA1BsxD,EAAO9lE,KAAKgmE,UAShB,CACH,IAAI/tE,EAAQ,IAAI2D,MAAM,qBAAuBkqE,EAAO9lE,KAAKgmE,WAEzD,MADA/tE,EAAMxG,KAAO,aACPwG,EAXNuc,EAAQxU,KAAKgmE,SACbhmE,KAAKgmE,WACyB,MAA1BF,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACL78D,EAAOpV,KAAK,CAACgQ,KAtIpB,KAsIkC5R,MAAO,KAAMqiB,MAAOA,KAE/CrL,EAAOpV,KAAK,CAACgQ,KAzIlB,OAyIkC5R,MAAO,IAAKqiB,MAAOA,IAQ5D,OAAOrL,GAGX88D,2BAA4B,SAASH,GACjC,IAvFY/1C,EAuFRvb,EAAQxU,KAAKgmE,SAEjB,IADAhmE,KAAKgmE,WACEhmE,KAAKgmE,SAAWF,EAAO5vE,UAzFlB65B,EAyFuC+1C,EAAO9lE,KAAKgmE,YAxFrD,KAAOj2C,GAAM,KACnBA,GAAM,KAAOA,GAAM,KACnBA,GAAM,KAAOA,GAAM,KACb,MAAPA,IAsFC/vB,KAAKgmE,WAET,OAAOF,EAAO9xE,MAAMwgB,EAAOxU,KAAKgmE,WAGpCI,yBAA0B,SAASN,GAC/B,IAAItxD,EAAQxU,KAAKgmE,SACjBhmE,KAAKgmE,WAEL,IADA,IAAI9sD,EAAY4sD,EAAO5vE,OACU,MAA1B4vE,EAAO9lE,KAAKgmE,WAAsBhmE,KAAKgmE,SAAW9sD,GAAW,CAEhE,IAAIhC,EAAUlX,KAAKgmE,SACK,OAApBF,EAAO5uD,IAA8C,OAAxB4uD,EAAO5uD,EAAU,IACO,MAAxB4uD,EAAO5uD,EAAU,GAG9CA,IAFAA,GAAW,EAIflX,KAAKgmE,SAAW9uD,EAGpB,OADAlX,KAAKgmE,WACEl4D,KAAKqD,MAAM20D,EAAO9xE,MAAMwgB,EAAOxU,KAAKgmE,YAG/CK,yBAA0B,SAASP,GAC/B,IAAItxD,EAAQxU,KAAKgmE,SACjBhmE,KAAKgmE,WAEL,IADA,IAAI9sD,EAAY4sD,EAAO5vE,OACU,MAA1B4vE,EAAO9lE,KAAKgmE,WAAqBhmE,KAAKgmE,SAAW9sD,GAAW,CAE/D,IAAIhC,EAAUlX,KAAKgmE,SACK,OAApBF,EAAO5uD,IAA8C,OAAxB4uD,EAAO5uD,EAAU,IACO,MAAxB4uD,EAAO5uD,EAAU,GAG9CA,IAFAA,GAAW,EAIflX,KAAKgmE,SAAW9uD,EAIpB,OAFAlX,KAAKgmE,WACSF,EAAO9xE,MAAMwgB,EAAQ,EAAGxU,KAAKgmE,SAAW,GACvCz8D,QAAQ,MAAO,MAGlC28D,eAAgB,SAASJ,GACrB,IAAItxD,EAAQxU,KAAKgmE,SACjBhmE,KAAKgmE,WAEL,IADA,IAAI9sD,EAAY4sD,EAAO5vE,OAChB0vE,EAAME,EAAO9lE,KAAKgmE,YAAchmE,KAAKgmE,SAAW9sD,GACnDlZ,KAAKgmE,WAGT,MAAO,CAACjiE,KA/MC,SA+MiB5R,MADduyE,SAASoB,EAAO9xE,MAAMwgB,EAAOxU,KAAKgmE,WACNxxD,MAAOA,IAGnD2xD,iBAAkB,SAASL,GACvB,IAAItxD,EAAQxU,KAAKgmE,SAEjB,OADAhmE,KAAKgmE,WACyB,MAA1BF,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACE,CAACjiE,KAzMH,SAyMqB5R,MAAO,KAAMqiB,MAAOA,IACb,MAA1BsxD,EAAO9lE,KAAKgmE,WACnBhmE,KAAKgmE,WACE,CAACjiE,KA9MF,UA8MqB5R,MAAO,KAAMqiB,MAAOA,IAExC,CAACzQ,KA1MD,WA0MqB5R,MAAO,IAAKqiB,MAAOA,IAIvDgyD,iBAAkB,SAASV,GACvB,IAAItxD,EAAQxU,KAAKgmE,SACbS,EAAeX,EAAOtxD,GAE1B,OADAxU,KAAKgmE,WACgB,MAAjBS,EAC8B,MAA1BX,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACE,CAACjiE,KA5NX,KA4NyB5R,MAAO,KAAMqiB,MAAOA,IAErC,CAACzQ,KAzNR,MAyNuB5R,MAAO,IAAKqiB,MAAOA,GAEpB,MAAjBiyD,EACuB,MAA1BX,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACE,CAACjiE,KApOV,MAoOyB5R,MAAO,KAAMqiB,MAAOA,IAEpC,CAACzQ,KAxOX,KAwOyB5R,MAAO,IAAKqiB,MAAOA,GAErB,MAAjBiyD,EACuB,MAA1BX,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACE,CAACjiE,KA5OV,MA4OyB5R,MAAO,KAAMqiB,MAAOA,IAEpC,CAACzQ,KAhPX,KAgPyB5R,MAAO,IAAKqiB,MAAOA,GAErB,MAAjBiyD,GACuB,MAA1BX,EAAO9lE,KAAKgmE,WACZhmE,KAAKgmE,WACE,CAACjiE,KAtPX,KAsPyB5R,MAAO,KAAMqiB,MAAOA,SAH3C,GAQX+xD,gBAAiB,SAAST,GACtB9lE,KAAKgmE,WAIL,IAHA,IAEIM,EAFA9xD,EAAQxU,KAAKgmE,SACb9sD,EAAY4sD,EAAO5vE,OAES,MAA1B4vE,EAAO9lE,KAAKgmE,WAAqBhmE,KAAKgmE,SAAW9sD,GAAW,CAE9D,IAAIhC,EAAUlX,KAAKgmE,SACK,OAApBF,EAAO5uD,IAA8C,OAAxB4uD,EAAO5uD,EAAU,IACO,MAAxB4uD,EAAO5uD,EAAU,GAG9CA,IAFAA,GAAW,EAIflX,KAAKgmE,SAAW9uD,EAEpB,IAAIwvD,EAAgBtB,EAASU,EAAO9xE,MAAMwgB,EAAOxU,KAAKgmE,WAUtD,OATAU,EAAgBA,EAAcn9D,QAAQ,MAAO,KAEzC+8D,EADAtmE,KAAK2mE,eAAeD,GACV54D,KAAKqD,MAAMu1D,GAGX54D,KAAKqD,MAAM,IAAOu1D,EAAgB,KAGhD1mE,KAAKgmE,WACEM,GAGXK,eAAgB,SAASD,GAKrB,GAAsB,KAAlBA,EACA,OAAO,EACJ,GANa,MAMK/iE,QAAQ+iE,EAAc,KAAO,EAClD,OAAO,EACJ,GAPY,CAAC,OAAQ,QAAS,QAOb/iE,QAAQ+iE,IAAkB,EAC9C,OAAO,EACJ,KARa,cAQK/iE,QAAQ+iE,EAAc,KAAO,GAQlD,OAAO,EAPP,IAEI,OADA54D,KAAKqD,MAAMu1D,IACJ,EACT,MAAOE,GACL,OAAO,KAQnB,IAAIC,EAAe,GA6BvB,SAASC,KAqWT,SAASC,EAAgBC,GACvBhnE,KAAKgnE,QAAUA,EAwQjB,SAASC,EAAQC,GACflnE,KAAKmnE,aAAeD,EACpBlnE,KAAKonE,cAAgB,CAcjB/zC,IAAK,CAACg0C,MAAOrnE,KAAKsnE,aAAcC,WAAY,CAAC,CAACC,MAAO,CAACnC,MACtDoC,IAAK,CAACJ,MAAOrnE,KAAK0nE,aAAcH,WAAY,CAAC,CAACC,MAAO,CAz+BnC,MA0+BlBG,KAAM,CAACN,MAAOrnE,KAAK4nE,cAAeL,WAAY,CAAC,CAACC,MAAO,CAACnC,MACxDt6D,SAAU,CACNs8D,MAAOrnE,KAAK6nE,kBACZN,WAAY,CAAC,CAACC,MAAO,CAAClC,EAl/Bf,IAm/BK,CAACkC,MAAO,CAr/Bf,MAs/BT,UAAa,CACTH,MAAOrnE,KAAK8nE,kBACZP,WAAY,CAAC,CAACC,MAAO,CAAClC,IAAe,CAACkC,MAAO,CAAClC,MAClDtyC,MAAO,CAACq0C,MAAOrnE,KAAK+nE,eAAgBR,WAAY,CAAC,CAACC,MAAO,CAACnC,MAC1DnvE,OAAQ,CACJmxE,MAAOrnE,KAAKgoE,gBACZT,WAAY,CAAC,CAACC,MAAO,CAAClC,EA1/Bf,EACC,MA0/BZpnE,IAAK,CACDmpE,MAAOrnE,KAAKioE,aACZV,WAAY,CAAC,CAACC,MAAO,CA1/Bb,IA0/B6B,CAACA,MAAO,CA7/BtC,MA8/BX1yD,IAAK,CACDuyD,MAAOrnE,KAAKkoE,aACZX,WAAY,CAAC,CAACC,MAAO,CA3/BP,EACA,MA2/BlB,MAAS,CACLH,MAAOrnE,KAAKmoE,eACZZ,WAAY,CAAC,CAACC,MAAO,CAlgCb,GAkgC4BY,UAAU,KAElD,OAAU,CACRf,MAAOrnE,KAAKqoE,eACZd,WAAY,CAAC,CAACC,MAAO,CAvgCZ,IAugC2B,CAACA,MAAO,CApgClC,MAsgCZc,IAAK,CAACjB,MAAOrnE,KAAKuoE,aAAchB,WAAY,CAAC,CAACC,MAAO,CApgCnC,MAqgClB,YAAe,CACXH,MAAOrnE,KAAKwoE,oBACZjB,WAAY,CAAC,CAACC,MAAO,CAAClC,IAAe,CAACkC,MAAO,CAAClC,MAClDvwD,IAAK,CACDsyD,MAAOrnE,KAAKyoE,aACZlB,WAAY,CAAC,CAACC,MAAO,CA1gCP,EACA,MA0gClB,OAAU,CACRH,MAAOrnE,KAAK0oE,eACZnB,WAAY,CAAC,CAACC,MAAO,CAlhCZ,IAkhC2B,CAACA,MAAO,CA/gClC,MAihCZzjE,KAAM,CAACsjE,MAAOrnE,KAAK2oE,cAAepB,WAAY,CAAC,CAACC,MAAO,CAthC9C,MAuhCT/yE,KAAM,CAAC4yE,MAAOrnE,KAAK4oE,cAAerB,WAAY,CAAC,CAACC,MAAO,CAphC3C,MAqhCZxsC,OAAQ,CAACqsC,MAAOrnE,KAAK6oE,gBAAiBtB,WAAY,CAAC,CAACC,MAAO,CArhC/C,MAshCZxvC,KAAM,CAACqvC,MAAOrnE,KAAK8oE,cAAevB,WAAY,CAAC,CAACC,MAAO,CAjhCrC,EADA,MAmhClB,QAAW,CACTH,MAAOrnE,KAAK+oE,gBACZxB,WAAY,CAAC,CAACC,MAAO,CA1hCZ,IA0hC2B,CAACA,MAAO,CAvhClC,MAyhCZplE,KAAM,CACFilE,MAAOrnE,KAAKgpE,cACZzB,WAAY,CACR,CAACC,MAAO,CAAClC,IACT,CAACkC,MAAO,CA1hCE,MA6hClByB,QAAS,CACL5B,MAAOrnE,KAAKkpE,iBACZ3B,WAAY,CAAC,CAACC,MAAO,CAAClC,EAriCf,MAsiCX,SAAY,CAAC+B,MAAOrnE,KAAKmpE,iBAAkB5B,WAAY,CAAC,CAACC,MAAO,CAxiCvD,MAyiCT,UAAa,CAACH,MAAOrnE,KAAKopE,kBAAmB7B,WAAY,CAAC,CAACC,MAAO,CAziCzD,MA0iCT,UAAa,CAACH,MAAOrnE,KAAKqpE,kBAAmB9B,WAAY,CAAC,CAACC,MAAO,CA1iCzD,MA2iCT,SAAY,CACRH,MAAOrnE,KAAKspE,iBACZ/B,WAAY,CAAC,CAACC,MAAO,CA7iChB,GA6iC4BY,UAAU,MAxtBjDvB,EAAY,IAAY,EACxBA,EAAY,mBAA2B,EACvCA,EAAY,iBAAyB,EACrCA,EAAY,SAAiB,EAC7BA,EAAY,OAAe,EAC3BA,EAAY,MAAc,EAC1BA,EAAY,OAAe,EAC3BA,EAAY,OAAe,EAC3BA,EAAY,QAAgB,EAC5BA,EAAY,OAAe,EAC3BA,EAAY,KAAa,EACzBA,EAAY,GAAW,EACvBA,EAAY,IAAY,EACxBA,EAAY,GAAW,EACvBA,EAAY,GAAW,EACvBA,EAAY,GAAW,EACvBA,EAAY,IAAY,EACxBA,EAAY,IAAY,EACxBA,EAAY,GAAW,EACvBA,EAAY,QAAgB,EAC5BA,EAAY,KAAa,GACzBA,EAAY,OAAe,GAC3BA,EAAY,IAAY,GACxBA,EAAY,IAAY,GACxBA,EAAY,OAAe,GAC3BA,EAAY,SAAiB,GAC7BA,EAAY,OAAe,GAK/BC,EAAOh0E,UAAY,CACfqe,MAAO,SAASo4D,GACZvpE,KAAKwpE,YAAYD,GACjBvpE,KAAK0D,MAAQ,EACb,IAAI+lE,EAAMzpE,KAAKupE,WAAW,GAC1B,GAnWM,QAmWFvpE,KAAK0pE,WAAW,GAAgB,CAChC,IAAIt3E,EAAI4N,KAAK2pE,gBAAgB,GACzB1xE,EAAQ,IAAI2D,MACZ,0BAA4BxJ,EAAE2R,KAAO,YAAc3R,EAAED,OAEzD,MADA8F,EAAMxG,KAAO,cACPwG,EAEV,OAAOwxE,GAGXD,YAAa,SAASD,GAClB,IACIpgE,GADQ,IAAI08D,GACG33D,SAASq7D,GAC5BpgE,EAAOpV,KAAK,CAACgQ,KAhXP,MAgXsB5R,MAAO,GAAIqiB,MAAO+0D,EAAWrzE,SACzD8J,KAAKmJ,OAASA,GAGlBogE,WAAY,SAASK,GACjB,IAAIC,EAAY7pE,KAAK2pE,gBAAgB,GACrC3pE,KAAK8pE,WAGL,IAFA,IAAItuD,EAAOxb,KAAK+pE,IAAIF,GAChBG,EAAehqE,KAAK0pE,WAAW,GAC5BE,EAAM/C,EAAamD,IACtBhqE,KAAK8pE,WACLtuD,EAAOxb,KAAKiqE,IAAID,EAAcxuD,GAC9BwuD,EAAehqE,KAAK0pE,WAAW,GAEnC,OAAOluD,GAGXkuD,WAAY,SAASQ,GACjB,OAAOlqE,KAAKmJ,OAAOnJ,KAAK0D,MAAQwmE,GAAQnmE,MAG5C4lE,gBAAiB,SAASO,GACtB,OAAOlqE,KAAKmJ,OAAOnJ,KAAK0D,MAAQwmE,IAGpCJ,SAAU,WACN9pE,KAAK0D,SAGTqmE,IAAK,SAASl+D,GACZ,IACI4nB,EACA81C,EACJ,OAAQ19D,EAAM9H,MACZ,IAtXS,UAuXP,MAAO,CAACA,KAAM,UAAW5R,MAAO0Z,EAAM1Z,OACxC,IAnZqB,qBAoZnB,MAAO,CAAC4R,KAAM,QAAStS,KAAMoa,EAAM1Z,OACrC,IApZmB,mBAqZjB,IAAIke,EAAO,CAACtM,KAAM,QAAStS,KAAMoa,EAAM1Z,OACvC,GA7XM,WA6XF6N,KAAK0pE,WAAW,GAChB,MAAM,IAAI9tE,MAAM,qDAEpB,OAAOyU,EACT,IApYM,MAsYJ,MAAO,CAACtM,KAAM,gBAAiB8W,SAAU,CADzC4Y,EAAQzzB,KAAKupE,WAAW1C,EAAasD,OAEvC,IA1YO,OAoZL,OARA12C,EAAQ,KAQD,CAAC1vB,KAAM,kBAAmB8W,SAAU,CATpC,CAAC9W,KAAM,YAKV0vB,EAlaK,aA+ZLzzB,KAAK0pE,WAAW,GAGR,CAAC3lE,KAAM,YAEP/D,KAAKoqE,oBAAoBvD,EAAawD,QAGpD,IApZS,SAqZP,OAAOrqE,KAAKiqE,IAAIp+D,EAAM9H,KAAM,CAACA,KAAM,aACrC,IAnZS,SAoZP,OAAO/D,KAAKsqE,wBACd,IA1ZU,UA6ZR,MAAO,CAACvmE,KAAM,aAAc8W,SAAU,CAF/B,CAAC9W,KA3ZA,UA2ZmB8W,SAAU,CAAC,CAAC9W,KAAM,cAC7C0vB,EAAQzzB,KAAKoqE,oBAAoBvD,EAAa0D,WAEhD,IAxZW,WAyZT,MA3aO,WA2aHvqE,KAAK0pE,WAAW,IA7ad,UA6amC1pE,KAAK0pE,WAAW,IACrDj2C,EAAQzzB,KAAKwqE,wBACNxqE,KAAKyqE,gBAAgB,CAAC1mE,KAAM,YAAa0vB,IAha/C,SAiaMzzB,KAAK0pE,WAAW,IAnblB,aAobE1pE,KAAK0pE,WAAW,IACvB1pE,KAAK8pE,WACL9pE,KAAK8pE,WAEE,CAAC/lE,KAAM,aACN8W,SAAU,CAAC,CAAC9W,KAAM,YAF1B0vB,EAAQzzB,KAAKoqE,oBAAoBvD,EAAawD,SAI3CrqE,KAAK0qE,wBACd,IAtbU,UAubR,MAAO,CAAC3mE,KAvbA,WAwbV,IAvbS,SAybP,MAAO,CAACA,KAAM,sBAAuB8W,SAAU,CAD/C0uD,EAAavpE,KAAKupE,WAAW1C,EAAa8D,UAE5C,IAzaQ,SA2aN,IADA,IAAI3pE,EAAO,GAjcJ,WAkcAhB,KAAK0pE,WAAW,IA7bf,YA8bF1pE,KAAK0pE,WAAW,IAClBH,EAAa,CAACxlE,KA/bV,WAgcJ/D,KAAK8pE,YAELP,EAAavpE,KAAKupE,WAAW,GAE/BvoE,EAAKjN,KAAKw1E,GAGZ,OADAvpE,KAAK4qE,OA3cE,UA4cA5pE,EAAK,GACd,QACEhB,KAAK6qE,YAAYh/D,KAIvBo+D,IAAK,SAASa,EAAWtvD,GACvB,IAAIiY,EACJ,OAAOq3C,GACL,IAlcM,MAmcJ,IAAIlB,EAAM/C,EAAakE,IACvB,MAtcK,SAscD/qE,KAAK0pE,WAAW,GAET,CAAC3lE,KAAM,gBAAiB8W,SAAU,CAACW,EAD1CiY,EAAQzzB,KAAKgrE,aAAapB,MAI9B5pE,KAAK8pE,WAEE,CAAC/lE,KAAM,kBAAmB8W,SAAU,CAACW,EAD5CiY,EAAQzzB,KAAKoqE,oBAAoBR,MAEnC,IAxdO,OA0dL,MAAO,CAAC7lE,KA1dH,OA0dmB8W,SAAU,CAACW,EADnCiY,EAAQzzB,KAAKupE,WAAW1C,EAAaoE,QAEvC,IA1dK,KA4dH,MAAO,CAAClnE,KAAM,eAAgB8W,SAAU,CAACW,EADzCiY,EAAQzzB,KAAKupE,WAAW1C,EAAaqE,MAEvC,IA5dM,MA8dJ,MAAO,CAACnnE,KAAM,gBAAiB8W,SAAU,CAACW,EAD1CiY,EAAQzzB,KAAKupE,WAAW1C,EAAasE,OAEvC,IAjdQ,SAqdN,IAHA,IAEI5B,EAFA93E,EAAO+pB,EAAK/pB,KACZuP,EAAO,GA1eJ,WA4eAhB,KAAK0pE,WAAW,IAvef,YAweF1pE,KAAK0pE,WAAW,IAClBH,EAAa,CAACxlE,KAzeV,WA0eJ/D,KAAK8pE,YAELP,EAAavpE,KAAKupE,WAAW,GAhf3B,UAkfAvpE,KAAK0pE,WAAW,IAClB1pE,KAAK4qE,OAnfH,SAqfJ5pE,EAAKjN,KAAKw1E,GAIZ,OAFAvpE,KAAK4qE,OAxfE,UAyfA,CAAC7mE,KAAM,WAAYtS,KAAMA,EAAMopB,SAAU7Z,GAElD,IAzeS,SA0eP,IAAI4vB,EAAY5wB,KAAKupE,WAAW,GAOhC,OANAvpE,KAAK4qE,OA9fI,YAogBF,CAAC7mE,KAAM,mBAAoB8W,SAAU,CAACW,EAJ3CiY,EA/eM,YA8eJzzB,KAAK0pE,WAAW,GACV,CAAC3lE,KAAM,YAEP/D,KAAKoqE,oBAAoBvD,EAAauE,QAEUx6C,IAC5D,IApfU,UAufR,MAAO,CAAC7sB,KAAM,aAAc8W,SAAU,CAFvB,CAAC9W,KArfR,UAqf2B8W,SAAU,CAACW,IAC9Bxb,KAAKoqE,oBAAoBvD,EAAa0D,WAExD,IA9fK,KA+fL,IA1fK,KA2fL,IA/fK,KAggBL,IA9fM,MA+fN,IAhgBK,KAigBL,IA/fM,MAggBJ,OAAOvqE,KAAKqrE,iBAAiB7vD,EAAMsvD,GACrC,IAzfW,WA0fT,IAAIj/D,EAAQ7L,KAAK2pE,gBAAgB,GACjC,MA7gBO,WA6gBH99D,EAAM9H,MA/gBJ,UA+gB2B8H,EAAM9H,MACnC0vB,EAAQzzB,KAAKwqE,wBACNxqE,KAAKyqE,gBAAgBjvD,EAAMiY,KAEtCzzB,KAAK4qE,OApgBA,QAqgBL5qE,KAAK4qE,OAvhBI,YAyhBF,CAAC7mE,KAAM,aAAc8W,SAAU,CAACW,EADvCiY,EAAQzzB,KAAKoqE,oBAAoBvD,EAAawD,SAEhD,QACErqE,KAAK6qE,YAAY7qE,KAAK2pE,gBAAgB,MAI5CiB,OAAQ,SAASU,GACb,GAAItrE,KAAK0pE,WAAW,KAAO4B,EAEpB,CACH,IAAIl5E,EAAI4N,KAAK2pE,gBAAgB,GACzB1xE,EAAQ,IAAI2D,MAAM,YAAc0vE,EAAY,UAAYl5E,EAAE2R,MAE9D,MADA9L,EAAMxG,KAAO,cACPwG,EALN+H,KAAK8pE,YASbe,YAAa,SAASh/D,GAClB,IAAI5T,EAAQ,IAAI2D,MAAM,kBACAiQ,EAAM9H,KAAO,OACb8H,EAAM1Z,MAAQ,KAEpC,MADA8F,EAAMxG,KAAO,cACPwG,GAIVuyE,sBAAuB,WACnB,GAjjBQ,UAijBJxqE,KAAK0pE,WAAW,IAjjBZ,UAijBgC1pE,KAAK0pE,WAAW,GACpD,OAAO1pE,KAAKurE,wBAEZ,IAAIl7D,EAAO,CACPtM,KAAM,QACN5R,MAAO6N,KAAK2pE,gBAAgB,GAAGx3E,OAGnC,OAFA6N,KAAK8pE,WACL9pE,KAAK4qE,OA3jBE,YA4jBAv6D,GAIfo6D,gBAAiB,SAASjvD,EAAMiY,GAC5B,IAAI+3C,EAAY,CAACznE,KAAM,kBAAmB8W,SAAU,CAACW,EAAMiY,IAC3D,MAAmB,UAAfA,EAAM1vB,KACC,CACHA,KAAM,aACN8W,SAAU,CAAC2wD,EAAWxrE,KAAKoqE,oBAAoBvD,EAAawD,QAGzDmB,GAIfD,sBAAuB,WAMnB,IAHA,IAAI9mC,EAAQ,CAAC,KAAM,KAAM,MACrB/gC,EAAQ,EACRsmE,EAAehqE,KAAK0pE,WAAW,GAjlBxB,aAklBJM,GAAiCtmE,EAAQ,GAAG,CAC/C,GAhlBI,UAglBAsmE,EACAtmE,IACA1D,KAAK8pE,eACF,IAjlBF,WAilBME,EAGJ,CACH,IAAI53E,EAAI4N,KAAK0pE,WAAW,GACpBzxE,EAAQ,IAAI2D,MAAM,mCACAxJ,EAAED,MAAQ,IAAMC,EAAE2R,KAAO,KAE/C,MADA9L,EAAMxG,KAAO,cACPwG,EAPNwsC,EAAM/gC,GAAS1D,KAAK2pE,gBAAgB,GAAGx3E,MACvC6N,KAAK8pE,WAQTE,EAAehqE,KAAK0pE,WAAW,GAGnC,OADA1pE,KAAK4qE,OAlmBM,YAmmBJ,CACH7mE,KAAM,QACN8W,SAAU4pB,IAIlB4mC,iBAAkB,SAAS7vD,EAAMiwD,GAE/B,MAAO,CAAC1nE,KAAM,aAActS,KAAMg6E,EAAY5wD,SAAU,CAACW,EAD7Cxb,KAAKupE,WAAW1C,EAAa4E,OAI3CT,aAAc,SAASpB,GACnB,IAAI8B,EAAY1rE,KAAK0pE,WAAW,GAEhC,MADiB,CAlnBI,qBACF,mBAmBZ,QA+lBQ/lE,QAAQ+nE,IAAc,EAC1B1rE,KAAKupE,WAAWK,GA3lBhB,aA4lBA8B,GACP1rE,KAAK4qE,OA7lBE,YA8lBA5qE,KAAK0qE,yBA/lBP,WAgmBEgB,GACP1rE,KAAK4qE,OAjmBA,UAkmBE5qE,KAAKsqE,8BAFT,GAMXF,oBAAqB,SAASR,GAC1B,IAAIn2C,EACJ,GAAIozC,EAAa7mE,KAAK0pE,WAAW,IAAM,GACnCj2C,EAAQ,CAAC1vB,KAAM,iBACZ,GAzmBI,aAymBA/D,KAAK0pE,WAAW,GACvBj2C,EAAQzzB,KAAKupE,WAAWK,QACrB,GA/mBE,WA+mBE5pE,KAAK0pE,WAAW,GACvBj2C,EAAQzzB,KAAKupE,WAAWK,OACrB,IAhnBD,QAgnBK5pE,KAAK0pE,WAAW,GAGpB,CACH,IAAIt3E,EAAI4N,KAAK2pE,gBAAgB,GACzB1xE,EAAQ,IAAI2D,MAAM,mCACAxJ,EAAED,MAAQ,IAAMC,EAAE2R,KAAO,KAE/C,MADA9L,EAAMxG,KAAO,cACPwG,EAPN+H,KAAK4qE,OAjnBH,OAknBFn3C,EAAQzzB,KAAKgrE,aAAapB,GAQ9B,OAAOn2C,GAGXi3C,sBAAuB,WAEnB,IADA,IAAIiB,EAAc,GAlpBP,aAmpBJ3rE,KAAK0pE,WAAW,IAAqB,CACxC,IAAIH,EAAavpE,KAAKupE,WAAW,GAEjC,GADAoC,EAAY53E,KAAKw1E,GAnpBb,UAopBAvpE,KAAK0pE,WAAW,KAChB1pE,KAAK4qE,OArpBL,SAFG,aAwpBC5qE,KAAK0pE,WAAW,IAClB,MAAM,IAAI9tE,MAAM,6BAK1B,OADAoE,KAAK4qE,OA7pBM,YA8pBJ,CAAC7mE,KAAM,kBAAmB8W,SAAU8wD,IAG/CrB,sBAAuB,WAIrB,IAHA,IAEIsB,EAAUC,EAAgBx7D,EAF1By7D,EAAQ,GACRC,EAAkB,CArqBC,qBACF,sBAsqBZ,CAEP,GADAH,EAAW5rE,KAAK2pE,gBAAgB,GAC5BoC,EAAgBpoE,QAAQioE,EAAS7nE,MAAQ,EAC3C,MAAM,IAAInI,MAAM,uCACAgwE,EAAS7nE,MAQ3B,GANA8nE,EAAUD,EAASz5E,MACnB6N,KAAK8pE,WACL9pE,KAAK4qE,OA1qBG,SA4qBRv6D,EAAO,CAACtM,KAAM,eAAgBtS,KAAMo6E,EAAS15E,MADrC6N,KAAKupE,WAAW,IAExBuC,EAAM/3E,KAAKsc,GA9qBH,UA+qBJrQ,KAAK0pE,WAAW,GAClB1pE,KAAK4qE,OAhrBC,cAirBD,GA/qBE,WA+qBE5qE,KAAK0pE,WAAW,GAAmB,CAC5C1pE,KAAK4qE,OAhrBE,UAirBP,OAGJ,MAAO,CAAC7mE,KAAM,kBAAmB8W,SAAUixD,KASjD/E,EAAgBj0E,UAAY,CACxBonC,OAAQ,SAAS7pB,EAAMle,GACnB,OAAO6N,KAAKgsE,MAAM37D,EAAMle,IAG5B65E,MAAO,SAAS37D,EAAMle,GAClB,IAAI09B,EAAS3Y,EAASqkB,EAAQjF,EAAO0uC,EAAQ7gC,EAAO3oB,EAAaywD,EAAW/6E,EAC5E,OAAQmf,EAAKtM,MACX,IAAK,QACH,OAAc,OAAV5R,GAAkBmN,EAASnN,QAEbsN,KADd0kC,EAAQhyC,EAAMke,EAAK5e,OAER,KAEA0yC,EAGR,KACT,IAAK,gBAEH,IADA5I,EAASv7B,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GACjCjB,EAAI,EAAGA,EAAImf,EAAKwK,SAAS3kB,OAAQhF,IAElC,GAAe,QADfqqC,EAASv7B,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI0gB,IAElC,OAAO,KAGf,OAAOA,EACT,IAAK,kBAGH,OAFA/f,EAAOxb,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GAC5B6N,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAIW,GAEvC,IAAK,QACH,IAAKjnB,EAAQpC,GACX,OAAO,KAET,IAAIuR,EAAQ2M,EAAKle,MAQjB,OAPIuR,EAAQ,IACVA,EAAQvR,EAAM+D,OAASwN,QAGVjE,KADf87B,EAASppC,EAAMuR,MAEb63B,EAAS,MAEJA,EACT,IAAK,QACH,IAAKhnC,EAAQpC,GACX,OAAO,KAET,IAAI+5E,EAAc77D,EAAKwK,SAAS7mB,MAAM,GAClCm4E,EAAWnsE,KAAKosE,mBAAmBj6E,EAAM+D,OAAQg2E,GACjD13D,EAAQ23D,EAAS,GACjBE,EAAOF,EAAS,GAChB9zB,EAAO8zB,EAAS,GAEpB,GADA5wC,EAAS,GACL8c,EAAO,EACP,IAAKnnD,EAAIsjB,EAAOtjB,EAAIm7E,EAAMn7E,GAAKmnD,EAC3B9c,EAAOxnC,KAAK5B,EAAMjB,SAGtB,IAAKA,EAAIsjB,EAAOtjB,EAAIm7E,EAAMn7E,GAAKmnD,EAC3B9c,EAAOxnC,KAAK5B,EAAMjB,IAG1B,OAAOqqC,EACT,IAAK,aAEH,IAAI+wC,EAAOtsE,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GACxC,IAAKoC,EAAQ+3E,GACX,OAAO,KAGT,IADAL,EAAY,GACP/6E,EAAI,EAAGA,EAAIo7E,EAAKp2E,OAAQhF,IAEX,QADhBgmB,EAAUlX,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAIyxD,EAAKp7E,MAE1C+6E,EAAUl4E,KAAKmjB,GAGnB,OAAO+0D,EACT,IAAK,kBAGH,IAAK3sE,EADLgtE,EAAOtsE,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,IAElC,OAAO,KAET85E,EAAY,GACZ,IAAIjxC,EAh1BhB,SAAmBvjC,GAGjB,IAFA,IAAIhD,EAAO7C,OAAO6C,KAAKgD,GACnBujC,EAAS,GACJ9pC,EAAI,EAAGA,EAAIuD,EAAKyB,OAAQhF,IAC/B8pC,EAAOjnC,KAAK0D,EAAIhD,EAAKvD,KAEvB,OAAO8pC,EA00BgBuxC,CAAUD,GACvB,IAAKp7E,EAAI,EAAGA,EAAI8pC,EAAO9kC,OAAQhF,IAEb,QADhBgmB,EAAUlX,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAImgB,EAAO9pC,MAE5C+6E,EAAUl4E,KAAKmjB,GAGnB,OAAO+0D,EACT,IAAK,mBAEH,IAAK13E,EADL+3E,EAAOtsE,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,IAElC,OAAO,KAET,IAAI2lE,EAAW,GACX0U,EAAe,GACnB,IAAKt7E,EAAI,EAAGA,EAAIo7E,EAAKp2E,OAAQhF,IAEtBi0E,EADLt1C,EAAU7vB,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAIyxD,EAAKp7E,MAE1C4mE,EAAS/jE,KAAKu4E,EAAKp7E,IAGvB,IAAK,IAAI2d,EAAI,EAAGA,EAAIipD,EAAS5hE,OAAQ2Y,IAEnB,QADhBqI,EAAUlX,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAIi9C,EAASjpD,MAE9C29D,EAAaz4E,KAAKmjB,GAGtB,OAAOs1D,EACT,IAAK,aAGH,OAFAl2C,EAAQt2B,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GACrC6yE,EAAShlE,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GAC/Bke,EAAK5e,MACV,IA3yBD,KA4yBG8pC,EAASwpC,EAAgBzuC,EAAO0uC,GAChC,MACF,IAzyBD,KA0yBGzpC,GAAUwpC,EAAgBzuC,EAAO0uC,GACjC,MACF,IAhzBD,KAizBGzpC,EAASjF,EAAQ0uC,EACjB,MACF,IAjzBA,MAkzBEzpC,EAASjF,GAAS0uC,EAClB,MACF,IArzBD,KAszBGzpC,EAASjF,EAAQ0uC,EACjB,MACF,IAtzBA,MAuzBEzpC,EAASjF,GAAS0uC,EAClB,MACF,QACE,MAAM,IAAIppE,MAAM,uBAAyByU,EAAK5e,MAElD,OAAO8pC,EACT,IA3zBQ,UA4zBN,IAAIkxC,EAAWzsE,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GAC5C,IAAKoC,EAAQk4E,GACX,OAAO,KAET,IAAIC,EAAS,GACb,IAAKx7E,EAAI,EAAGA,EAAIu7E,EAASv2E,OAAQhF,IAE3BqD,EADJ2iB,EAAUu1D,EAASv7E,IAEjBw7E,EAAO34E,KAAK+B,MAAM42E,EAAQx1D,GAE1Bw1D,EAAO34E,KAAKmjB,GAGhB,OAAOw1D,EACT,IAAK,WACH,OAAOv6E,EACT,IAAK,kBACH,GAAc,OAAVA,EACF,OAAO,KAGT,IADA85E,EAAY,GACP/6E,EAAI,EAAGA,EAAImf,EAAKwK,SAAS3kB,OAAQhF,IAClC+6E,EAAUl4E,KAAKiM,KAAKgsE,MAAM37D,EAAKwK,SAAS3pB,GAAIiB,IAEhD,OAAO85E,EACT,IAAK,kBACH,GAAc,OAAV95E,EACF,OAAO,KAGT,IAAI6nD,EACJ,IAFAiyB,EAAY,GAEP/6E,EAAI,EAAGA,EAAImf,EAAKwK,SAAS3kB,OAAQhF,IAEpC+6E,GADAjyB,EAAQ3pC,EAAKwK,SAAS3pB,IACNO,MAAQuO,KAAKgsE,MAAMhyB,EAAM7nD,MAAOA,GAElD,OAAO85E,EACT,IAAK,eAKH,OAHI9G,EADJt1C,EAAU7vB,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,MAEnC09B,EAAU7vB,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,IAEpC09B,EACT,IAAK,gBAGH,OAAuB,IAAnBs1C,EAFJ7uC,EAAQt2B,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,IAG5BmkC,EAEFt2B,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GACtC,IAAK,gBAEH,OAAOgzE,EADP7uC,EAAQt2B,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,IAEvC,IAAK,UACH,OAAOke,EAAKle,MACd,IA33BK,OA63BH,OADAqpB,EAAOxb,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAI1oB,GAC7B6N,KAAKgsE,MAAM37D,EAAKwK,SAAS,GAAIW,GACtC,IAh4BQ,UAi4BN,OAAOrpB,EACT,IAAK,WACH,IAAIw6E,EAAe,GACnB,IAAKz7E,EAAI,EAAGA,EAAImf,EAAKwK,SAAS3kB,OAAQhF,IAClCy7E,EAAa54E,KAAKiM,KAAKgsE,MAAM37D,EAAKwK,SAAS3pB,GAAIiB,IAEnD,OAAO6N,KAAKgnE,QAAQ4F,aAAav8D,EAAK5e,KAAMk7E,GAC9C,IAAK,sBACH,IAAIE,EAAUx8D,EAAKwK,SAAS,GAI5B,OADAgyD,EAAQC,aA34BH,SA44BED,EACT,QACE,MAAM,IAAIjxE,MAAM,sBAAwByU,EAAKtM,QAIrDqoE,mBAAoB,SAASW,EAAab,GACxC,IAAI13D,EAAQ03D,EAAY,GACpBG,EAAOH,EAAY,GACnB7zB,EAAO6zB,EAAY,GACnBC,EAAW,CAAC,KAAM,KAAM,MAC5B,GAAa,OAAT9zB,EACFA,EAAO,OACF,GAAa,IAATA,EAAY,CACrB,IAAIpgD,EAAQ,IAAI2D,MAAM,mCAEtB,MADA3D,EAAMxG,KAAO,eACPwG,EAER,IAAI+0E,EAAoB30B,EAAO,EAgB/B,OAbI7jC,EADU,OAAVA,EACQw4D,EAAoBD,EAAc,EAAI,EAEtC/sE,KAAKitE,cAAcF,EAAav4D,EAAO6jC,GAI/Cg0B,EADS,OAATA,EACOW,GAAqB,EAAID,EAEzB/sE,KAAKitE,cAAcF,EAAaV,EAAMh0B,GAEjD8zB,EAAS,GAAK33D,EACd23D,EAAS,GAAKE,EACdF,EAAS,GAAK9zB,EACP8zB,GAGTc,cAAe,SAASF,EAAaG,EAAa70B,GAS9C,OARI60B,EAAc,GACdA,GAAeH,GACG,IACdG,EAAc70B,EAAO,GAAK,EAAI,GAE3B60B,GAAeH,IACtBG,EAAc70B,EAAO,EAAI00B,EAAc,EAAIA,GAExCG,IAwFfjG,EAAQn0E,UAAY,CAClB85E,aAAc,SAASn7E,EAAMk7E,GAC3B,IAAIQ,EAAgBntE,KAAKonE,cAAc31E,GACvC,QAAsBgO,IAAlB0tE,EACA,MAAM,IAAIvxE,MAAM,qBAAuBnK,EAAO,MAGlD,OADAuO,KAAKotE,cAAc37E,EAAMk7E,EAAcQ,EAAc5F,YAC9C4F,EAAc9F,MAAMh2E,KAAK2O,KAAM2sE,IAGxCS,cAAe,SAAS37E,EAAMuP,EAAMqsE,GAMhC,IAAIC,EAcAC,EACAC,EACAC,EAfJ,GAAIJ,EAAUA,EAAUn3E,OAAS,GAAGkyE,UAChC,GAAIpnE,EAAK9K,OAASm3E,EAAUn3E,OAExB,MADAo3E,EAAkC,IAArBD,EAAUn3E,OAAe,YAAc,aAC9C,IAAI0F,MAAM,kBAAoBnK,EAApB,oBACmB47E,EAAUn3E,OAASo3E,EACtC,iBAAmBtsE,EAAK9K,aAEzC,GAAI8K,EAAK9K,SAAWm3E,EAAUn3E,OAEjC,MADAo3E,EAAkC,IAArBD,EAAUn3E,OAAe,YAAc,aAC9C,IAAI0F,MAAM,kBAAoBnK,EAApB,YACW47E,EAAUn3E,OAASo3E,EAC9B,iBAAmBtsE,EAAK9K,QAK5C,IAAK,IAAIhF,EAAI,EAAGA,EAAIm8E,EAAUn3E,OAAQhF,IAAK,CACvCu8E,GAAc,EACdF,EAAcF,EAAUn8E,GAAGs2E,MAC3BgG,EAAaxtE,KAAK0tE,aAAa1sE,EAAK9P,IACpC,IAAK,IAAI2d,EAAI,EAAGA,EAAI0+D,EAAYr3E,OAAQ2Y,IACpC,GAAI7O,KAAK2tE,aAAaH,EAAYD,EAAY1+D,GAAI7N,EAAK9P,IAAK,CACxDu8E,GAAc,EACd,MAGR,IAAKA,EAAa,CACd,IAAIx+C,EAAWs+C,EACVrvE,KAAI,SAAS0vE,GACV,OAAOrI,EAAgBqI,MAE1BxrE,KAAK,KACV,MAAM,IAAIxG,MAAM,cAAgBnK,EAAhB,yBACwBP,EAAI,GAC5B,eAAiB+9B,EACjB,sBACAs2C,EAAgBiI,GAAc,gBAK1DG,aAAc,SAASE,EAAQ5+C,EAAU6+C,GACrC,GA7mCS,IA6mCL7+C,EACA,OAAO,EAEX,GAxmCkB,IAwmCdA,GAzmCc,IA0mCdA,GA/mCO,IAgnCPA,EA0BA,OAAO4+C,IAAW5+C,EArBlB,GArnCO,IAqnCHA,EACA,OAtnCG,IAsnCI4+C,EACJ,GAvnCA,IAunCIA,EAAuB,CAG9B,IAAIE,EArnCM,IAsnCN9+C,EACF8+C,EAAU1I,EAtnCF,IAunCCp2C,IACT8+C,EAAUzI,GAEZ,IAAK,IAAIp0E,EAAI,EAAGA,EAAI48E,EAAS53E,OAAQhF,IACjC,IAAK8O,KAAK2tE,aACF3tE,KAAK0tE,aAAaI,EAAS58E,IAAK68E,EACfD,EAAS58E,IAC9B,OAAO,EAGf,OAAO,IAMnBw8E,aAAc,SAASj2E,GACnB,OAAQ7F,OAAOkB,UAAUmB,SAAS5C,KAAKoG,IACnC,IAAK,kBACH,OAAO6tE,EACT,IAAK,kBACH,OAAOD,EACT,IAAK,iBACH,OAppCK,EAqpCP,IAAK,mBACH,OAppCO,EAqpCT,IAAK,gBACH,OAppCI,EAqpCN,IAAK,kBAGH,MA9nCK,WA8nCD5tE,EAAIq1E,aAzpCF,EAFA,IAmqChBtE,oBAAqB,SAASmE,GAC1B,OAAwD,IAAjDA,EAAa,GAAGnL,YAAYmL,EAAa,KAGpD7E,kBAAmB,SAAS6E,GACxB,IAAIqB,EAAYrB,EAAa,GACzBsB,EAAStB,EAAa,GAC1B,OAAwE,IAAjEqB,EAAUrqE,QAAQsqE,EAAQD,EAAU93E,OAAS+3E,EAAO/3E,SAG/DgzE,iBAAkB,SAASyD,GAEvB,GADe3sE,KAAK0tE,aAAaf,EAAa,MAC7BrH,EAAa,CAG5B,IAFA,IAAI4I,EAAcvB,EAAa,GAC3BwB,EAAc,GACTj9E,EAAIg9E,EAAYh4E,OAAS,EAAGhF,GAAK,EAAGA,IACzCi9E,GAAeD,EAAYh9E,GAE/B,OAAOi9E,EAEP,IAAIC,EAAgBzB,EAAa,GAAG34E,MAAM,GAE1C,OADAo6E,EAAcnF,UACPmF,GAIb9G,aAAc,SAASqF,GACrB,OAAOt3E,KAAKg+B,IAAIs5C,EAAa,KAG/B/E,cAAe,SAAS+E,GACpB,OAAOt3E,KAAKsyE,KAAKgF,EAAa,KAGlCjF,aAAc,SAASiF,GAGnB,IAFA,IAAIrE,EAAM,EACN+F,EAAa1B,EAAa,GACrBz7E,EAAI,EAAGA,EAAIm9E,EAAWn4E,OAAQhF,IACnCo3E,GAAO+F,EAAWn9E,GAEtB,OAAOo3E,EAAM+F,EAAWn4E,QAG5B2xE,kBAAmB,SAAS8E,GACxB,OAAOA,EAAa,GAAGhpE,QAAQgpE,EAAa,KAAO,GAGvD5E,eAAgB,SAAS4E,GACrB,OAAOt3E,KAAK29B,MAAM25C,EAAa,KAGnC3E,gBAAiB,SAAS2E,GACvB,OAAKrtE,EAASqtE,EAAa,IAKlB/6E,OAAO6C,KAAKk4E,EAAa,IAAIz2E,OAJ7By2E,EAAa,GAAGz2E,QAQ5B+xE,aAAc,SAAS0E,GAKrB,IAJA,IAAI2B,EAAS,GACTpH,EAAclnE,KAAKmnE,aACnBoH,EAAa5B,EAAa,GAC1B//D,EAAW+/D,EAAa,GACnBz7E,EAAI,EAAGA,EAAI0b,EAAS1W,OAAQhF,IACjCo9E,EAAOv6E,KAAKmzE,EAAY8E,MAAMuC,EAAY3hE,EAAS1b,KAEvD,OAAOo9E,GAGTnG,eAAgB,SAASwE,GAEvB,IADA,IAAID,EAAS,GACJx7E,EAAI,EAAGA,EAAIy7E,EAAaz2E,OAAQhF,IAAK,CAC5C,IAAIgmB,EAAUy1D,EAAaz7E,GAC3B,IAAK,IAAIuB,KAAOykB,EACdw1D,EAAOj6E,GAAOykB,EAAQzkB,GAG1B,OAAOi6E,GAGTxE,aAAc,SAASyE,GACrB,GAAIA,EAAa,GAAGz2E,OAAS,EAAG,CAE9B,GADe8J,KAAK0tE,aAAaf,EAAa,GAAG,MAChCtH,EACf,OAAOhwE,KAAKyf,IAAIhf,MAAMT,KAAMs3E,EAAa,IAIzC,IAFA,IAAI//D,EAAW+/D,EAAa,GACxB6B,EAAa5hE,EAAS,GACjB1b,EAAI,EAAGA,EAAI0b,EAAS1W,OAAQhF,IAC7Bs9E,EAAWj2C,cAAc3rB,EAAS1b,IAAM,IACxCs9E,EAAa5hE,EAAS1b,IAG9B,OAAOs9E,EAGP,OAAO,MAIb/F,aAAc,SAASkE,GACrB,GAAIA,EAAa,GAAGz2E,OAAS,EAAG,CAE9B,GADe8J,KAAK0tE,aAAaf,EAAa,GAAG,MAChCtH,EACf,OAAOhwE,KAAK0f,IAAIjf,MAAMT,KAAMs3E,EAAa,IAIzC,IAFA,IAAI//D,EAAW+/D,EAAa,GACxB8B,EAAa7hE,EAAS,GACjB1b,EAAI,EAAGA,EAAI0b,EAAS1W,OAAQhF,IAC7B0b,EAAS1b,GAAGqnC,cAAck2C,GAAc,IACxCA,EAAa7hE,EAAS1b,IAG9B,OAAOu9E,EAGT,OAAO,MAIXlG,aAAc,SAASoE,GAGrB,IAFA,IAAIrE,EAAM,EACNoG,EAAY/B,EAAa,GACpBz7E,EAAI,EAAGA,EAAIw9E,EAAUx4E,OAAQhF,IACpCo3E,GAAOoG,EAAUx9E,GAEnB,OAAOo3E,GAGTK,cAAe,SAASgE,GACpB,OAAQ3sE,KAAK0tE,aAAaf,EAAa,KACrC,KAAKtH,EACH,MAAO,SACT,KAAKC,EACH,MAAO,SACT,KA9yCS,EA+yCP,MAAO,QACT,KA/yCU,EAgzCR,MAAO,SACT,KAhzCW,EAizCT,MAAO,UACT,KAjzCU,EAkzCR,MAAO,SACT,KAlzCQ,EAmzCN,MAAO,SAIfsD,cAAe,SAAS+D,GACpB,OAAO/6E,OAAO6C,KAAKk4E,EAAa,KAGpC9D,gBAAiB,SAAS8D,GAItB,IAHA,IAAIl1E,EAAMk1E,EAAa,GACnBl4E,EAAO7C,OAAO6C,KAAKgD,GACnBujC,EAAS,GACJ9pC,EAAI,EAAGA,EAAIuD,EAAKyB,OAAQhF,IAC7B8pC,EAAOjnC,KAAK0D,EAAIhD,EAAKvD,KAEzB,OAAO8pC,GAGXguC,cAAe,SAAS2D,GACpB,IAAIgC,EAAWhC,EAAa,GAE5B,OADeA,EAAa,GACZvqE,KAAKusE,IAGzBxF,iBAAkB,SAASwD,GACvB,OAh1CW,IAg1CP3sE,KAAK0tE,aAAaf,EAAa,IACxBA,EAAa,GAEb,CAACA,EAAa,KAI7BvD,kBAAmB,SAASuD,GACxB,OAAI3sE,KAAK0tE,aAAaf,EAAa,MAAQrH,EAChCqH,EAAa,GAEb7+D,KAAKC,UAAU4+D,EAAa,KAI3CtD,kBAAmB,SAASsD,GACxB,IACIiC,EADAC,EAAW7uE,KAAK0tE,aAAaf,EAAa,IAE9C,OAAIkC,IAAaxJ,EACNsH,EAAa,GACbkC,IAAavJ,IACpBsJ,GAAkBjC,EAAa,GAC1B73E,MAAM85E,IAIR,KAHQA,GAMnBtF,iBAAkB,SAASqD,GACvB,IAAK,IAAIz7E,EAAI,EAAGA,EAAIy7E,EAAaz2E,OAAQhF,IACrC,GA32CM,IA22CF8O,KAAK0tE,aAAaf,EAAaz7E,IAC/B,OAAOy7E,EAAaz7E,GAG5B,OAAO,MAGX43E,cAAe,SAAS6D,GACpB,IAAIzjC,EAAcyjC,EAAa,GAAG34E,MAAM,GAExC,OADAk1C,EAAYlR,OACLkR,GAGX6/B,gBAAiB,SAAS4D,GACtB,IAAIzjC,EAAcyjC,EAAa,GAAG34E,MAAM,GACxC,GAA2B,IAAvBk1C,EAAYhzC,OACZ,OAAOgzC,EAEX,IAAIg+B,EAAclnE,KAAKmnE,aACnBoH,EAAa5B,EAAa,GAC1BmC,EAAe9uE,KAAK0tE,aACpBxG,EAAY8E,MAAMuC,EAAYrlC,EAAY,KAC9C,GAAI,CAACm8B,EAAaC,GAAa3hE,QAAQmrE,GAAgB,EACnD,MAAM,IAAIlzE,MAAM,aAWpB,IATA,IAAI47B,EAAOx3B,KAQP+uE,EAAY,GACP79E,EAAI,EAAGA,EAAIg4C,EAAYhzC,OAAQhF,IACtC69E,EAAUh7E,KAAK,CAAC7C,EAAGg4C,EAAYh4C,KAEjC69E,EAAU/2C,MAAK,SAASlyB,EAAGC,GACzB,IAAIipE,EAAQ9H,EAAY8E,MAAMuC,EAAYzoE,EAAE,IACxCmpE,EAAQ/H,EAAY8E,MAAMuC,EAAYxoE,EAAE,IAC5C,GAAIyxB,EAAKk2C,aAAasB,KAAWF,EAC7B,MAAM,IAAIlzE,MACN,uBAAyBkzE,EAAe,cACxCt3C,EAAKk2C,aAAasB,IACnB,GAAIx3C,EAAKk2C,aAAauB,KAAWH,EACpC,MAAM,IAAIlzE,MACN,uBAAyBkzE,EAAe,cACxCt3C,EAAKk2C,aAAauB,IAE1B,OAAID,EAAQC,EACH,EACED,EAAQC,GACT,EAKDnpE,EAAE,GAAKC,EAAE,MAIpB,IAAK,IAAI8I,EAAI,EAAGA,EAAIkgE,EAAU74E,OAAQ2Y,IACpCq6B,EAAYr6B,GAAKkgE,EAAUlgE,GAAG,GAEhC,OAAOq6B,GAGXm/B,eAAgB,SAASsE,GAOvB,IANA,IAIIuC,EACAh4D,EALAq3D,EAAa5B,EAAa,GAC1BwC,EAAgBxC,EAAa,GAC7ByC,EAAcpvE,KAAKqvE,kBAAkBd,EAAY,CAAClJ,EAAaC,IAC/DgK,GAAY,IAGPp+E,EAAI,EAAGA,EAAIi+E,EAAcj5E,OAAQhF,KACxCgmB,EAAUk4D,EAAYD,EAAcj+E,KACtBo+E,IACZA,EAAYp4D,EACZg4D,EAAYC,EAAcj+E,IAG9B,OAAOg+E,GAGTxG,eAAgB,SAASiE,GAOvB,IANA,IAII4C,EACAr4D,EALAq3D,EAAa5B,EAAa,GAC1BwC,EAAgBxC,EAAa,GAC7ByC,EAAcpvE,KAAKqvE,kBAAkBd,EAAY,CAAClJ,EAAaC,IAC/DkK,EAAYz3C,IAGP7mC,EAAI,EAAGA,EAAIi+E,EAAcj5E,OAAQhF,KACxCgmB,EAAUk4D,EAAYD,EAAcj+E,KACtBs+E,IACZA,EAAYt4D,EACZq4D,EAAYJ,EAAcj+E,IAG9B,OAAOq+E,GAGTF,kBAAmB,SAASd,EAAYkB,GACtC,IAAIj4C,EAAOx3B,KACPknE,EAAclnE,KAAKmnE,aAUvB,OATc,SAASp8C,GACrB,IAAI7T,EAAUgwD,EAAY8E,MAAMuC,EAAYxjD,GAC5C,GAAI0kD,EAAa9rE,QAAQ6zB,EAAKk2C,aAAax2D,IAAY,EAAG,CACxD,IAAIw4D,EAAM,8BAAgCD,EAChC,cAAgBj4C,EAAKk2C,aAAax2D,GAC5C,MAAM,IAAItb,MAAM8zE,GAElB,OAAOx4D,KA8BblmB,EAAQkd,SAjBR,SAAkB43D,GAEd,OADY,IAAID,GACH33D,SAAS43D,IAgB1B90E,EAAQ64B,QAxBR,SAAiBi8C,GAGf,OAFa,IAAIgB,GACA31D,MAAM20D,IAuBzB90E,EAAQkpC,OAdR,SAAgBtsB,EAAM27D,GAClB,IAAI39C,EAAS,IAAIk7C,EAIbE,EAAU,IAAIC,EACdC,EAAc,IAAIH,EAAgBC,GACtCA,EAAQG,aAAeD,EACvB,IAAI72D,EAAOub,EAAOza,MAAMo4D,GACxB,OAAOrC,EAAYhtC,OAAO7pB,EAAMzC,IAMpC5c,EAAQ+zE,gBAAkBA,EAtoD5B,CAuoDgB/zE,IAKV2+E,GACC,SAASryD,EAAyBtsB,GAEzC,aAGA,IAAI4+E,EAAe,CACjB,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,EAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,MAGJC,EAAS,IAAI7R,aAGjBhtE,EAAQmgB,MAAQ,SAAUhb,EAAQqI,EAAGZ,GACnC,IAAIkkE,EAAW,GACX5pD,EAAO,EACPk5B,EAAS,EACT9hC,EAAM,EACNwgE,EAASlyE,GAAWA,EAAQkyE,QAA2B,oBAAVC,OACjD,MAAO,CACLniE,KAAMoiE,EAAO,IAAI,GACjBlO,SAAUA,GAGZ,SAASkO,EAAOC,EAAKC,GAEnB,IAAItiE,EADJuiE,IAEAjyE,EAAI+xE,EAAK,SACT,IAAIG,EAAOC,IACX,OAAQD,GACN,IAAK,IAAKE,EAAK,OAAQ1iE,GAAO,EAAM,MACpC,IAAK,IAAK0iE,EAAK,QAAS1iE,GAAO,EAAO,MACtC,IAAK,IAAK0iE,EAAK,OAAQ1iE,EAAO,KAAM,MACpC,IAAK,IAAKA,EAAO02B,IAAe,MAChC,IAAK,IAAK12B,EA8Ed,SAAoBqiE,GAClBE,IACA,IAAIvwE,EAAM,GACN1O,EAAI,EACR,GAAiB,KAAbm/E,IAAkB,OAAOzwE,EAG7B,IAFA2wE,MAEa,CACX,IAAIC,EAAUP,EAAM,IAAM/+E,EAC1B0O,EAAI7L,KAAKi8E,EAAOQ,IAChBL,IACA,IAAIC,EAAOC,IACX,GAAY,KAARD,EAAa,MACL,KAARA,GAAaK,IACjBN,IACAj/E,IAEF,OAAO0O,EA/FY8wE,CAAWT,GAAM,MAClC,IAAK,IAAKriE,EAiGd,SAAqBqiE,GACnBE,IACA,IAAI14E,EAAM,GACV,GAAiB,KAAb44E,IAAkB,OAAO54E,EAG7B,IAFA84E,MAEa,CACX,IAAI9rD,EAAMksD,IACO,KAAbN,KAAkBI,IACtB,IAAIh+E,EAAM6xC,IACNssC,EAAUX,EAAM,IAAMY,EAAkBp+E,GAC5Cq+E,EAAOF,EAAS,MAAOnsD,GACvBvmB,EAAI0yE,EAAS,UACbT,IACiB,KAAbE,KAAkBI,IACtBN,IACA14E,EAAIhF,GAAOu9E,EAAOY,GAClBT,IACA,IAAIC,EAAOC,IACX,GAAY,KAARD,EAAa,MACL,KAARA,GAAaK,IACjBN,IAEF,OAAO14E,EAxHYs5E,CAAYd,GAAM,MACnC,QACEM,IACI,cAAc5sE,QAAQysE,IAAS,EACjCxiE,EA8CR,WACE,IAAIojE,EAAS,GACTC,GAAU,EACK,KAAf96E,EAAOmZ,KAAa0hE,GAAUX,KAElCW,GAAyB,KAAf76E,EAAOmZ,GACL+gE,IACAa,IAEO,KAAf/6E,EAAOmZ,KACT0hE,GAAUX,IAAYa,IACtBD,GAAU,GAGO,KAAf96E,EAAOmZ,IAA8B,KAAfnZ,EAAOmZ,KAC/B0hE,GAAUX,IACS,KAAfl6E,EAAOmZ,IAA8B,KAAfnZ,EAAOmZ,KAAa0hE,GAAUX,KACxDW,GAAUE,IACVD,GAAU,GAGZ,IAAI11C,GAAUy1C,EACd,OAAOlB,GAAUmB,IAAY11C,EAAS9mB,OAAO08D,kBAAoB51C,EAAS9mB,OAAO28D,kBACvErB,OAAOiB,GACPz1C,EAtEG81C,GAEPC,IAKN,OAHApzE,EAAI+xE,EAAK,YACTE,IACID,GAAY5gE,EAAMnZ,EAAOD,QAAQo7E,IAC9B1jE,EAGT,SAASuiE,IACPoB,EACE,KAAOjiE,EAAMnZ,EAAOD,QAAQ,CAC1B,OAAQC,EAAOmZ,IACb,IAAK,IAAK8hC,IAAU,MACpB,IAAK,KAAMA,GAAU,EAAG,MACxB,IAAK,KAAMA,EAAS,EAAG,MACvB,IAAK,KAAMA,EAAS,EAAGl5B,IAAQ,MAC/B,QAAS,MAAMq5D,EAEjBjiE,KAIN,SAASg1B,IAGP,IAFA,IACI8rC,EADA3gE,EAAM,GAII,MADZ2gE,EAAOC,MAGY,MAARD,GACTA,EAAOC,OACKT,EACVngE,GAAOmgE,EAAaQ,GACL,KAARA,EACP3gE,GAAO+hE,IAEPf,IAEFhhE,GAAO2gE,EAGX,OAAO3gE,EA4ET,SAAS6gE,EAAK7gE,GACZ,IAAK,IAAIve,EAAE,EAAGA,EAAEue,EAAIvZ,OAAQhF,IACtBm/E,MAAc5gE,EAAIve,IAAIu/E,IAG9B,SAASJ,IACPoB,IACA,IAAIrB,EAAOj6E,EAAOmZ,GAGlB,OAFAA,IACA8hC,IACOg/B,EAGT,SAASG,IACPjhE,IACA8hC,IAGF,SAASogC,IAGP,IAFA,IAAI5gE,EAAQ,EACR/O,EAAO,EACJ+O,KAAS,CACd/O,IAAS,EACT,IAAIuuE,EAAOC,IAAUtmE,cACjBqmE,GAAQ,KAAOA,GAAQ,IACzBvuE,GAAQuuE,EAAKpS,aAAe6R,EAAS,GAC9BO,GAAQ,KAAOA,GAAQ,IAC9BvuE,IAASuuE,EAETK,IAEJ,OAAOz7D,OAAOU,aAAa7T,GAG7B,SAASqvE,IAEP,IADA,IAAIQ,EAAS,GACNv7E,EAAOmZ,IAAQ,KAAOnZ,EAAOmZ,IAAQ,KAC1CoiE,GAAUrB,IAEZ,GAAIqB,EAAOx7E,OAAQ,OAAOw7E,EAC1BD,IACAH,IAGF,SAASpzE,EAAI+xE,EAAKhmD,GAChB6mD,EAAOb,EAAKhmD,EAAM0mD,KAGpB,SAASG,EAAOb,EAAKhmD,EAAMxF,GACzBq9C,EAASmO,GAAOnO,EAASmO,IAAQ,GACjCnO,EAASmO,GAAKhmD,GAAQxF,EAGxB,SAASksD,IACP,MAAO,CACLz4D,KAAMA,EACNk5B,OAAQA,EACR9hC,IAAKA,GAIT,SAASgiE,IACP,MAAM,IAAIK,YAAY,oBAAsBx7E,EAAOmZ,GAAO,wBAA0BA,GAGtF,SAASmhE,IACPF,IACAe,IAGF,SAASG,IACP,GAAIniE,GAAOnZ,EAAOD,OAChB,MAAM,IAAIy7E,YAAY,kCAK5B3gF,EAAQ+c,UAAY,SAAUH,EAAMpP,EAAGZ,GACrC,GAAKg0E,EAAUhkE,GAAf,CACA,IACIikE,EAAOC,EADPC,EAAS,EAET5B,EAA+B,iBAAXvyE,EACJA,EAAQquC,MACRruC,EACpB,cAAeuyE,GACb,IAAK,SACH,IAAItwE,EAAMswE,EAAa,GACT,GACAA,EAAa,EACX,EACA96E,KAAK29B,MAAMm9C,GAC3BA,EAAatwE,GAAO2sC,EAAO3sC,EAAK,KAChCgyE,EAAQhyE,EACRiyE,EAAWjyE,EACX,MACF,IAAK,SACHswE,EAAaA,EAAWn8E,MAAM,EAAG,IACjC69E,EAAQ,EACRC,EAAW,EACX,IAAK,IAAIjjE,EAAE,EAAGA,EAAEshE,EAAWj6E,OAAQ2Y,IAAK,CAEtC,OADWshE,EAAWthE,IAEpB,IAAK,IAAKijE,IAAY,MACtB,IAAK,KAAMA,GAAY,EAAG,MAC1B,IAAK,KAAMA,EAAW,EAAG,MACzB,IAAK,KAAMA,EAAW,EAAGC,IAAU,MACnC,QAAS,MAAM,IAAIn2E,MAAM,6CAE3Bi2E,IAEF,MACF,QACE1B,OAAa1wE,EAGjB,IAAI6nB,EAAO,GACPw6C,EAAW,GACX5pD,EAAO,EACPk5B,EAAS,EACT9hC,EAAM,EACN0iE,EAAMp0E,GAAWA,EAAQo0E,KAAqB,mBAAPC,IAE3C,OAKA,SAASC,EAAWC,EAAOC,EAAKnC,GAE9B,OADA/xE,EAAI+xE,EAAK,gBACMkC,GACb,IAAK,SACL,IAAK,SACL,IAAK,UACHE,EAAI,GAAKF,GAAQ,MACnB,IAAK,SACHE,EAAIC,EAAOH,IAAS,MACtB,IAAK,SACW,OAAVA,EACFE,EAAI,QAC4B,mBAAhBF,EAAM9lC,OACtBgmC,EAAIC,EAAOH,EAAM9lC,WACRz4C,MAAMW,QAAQ49E,GACvB/lC,IACS4lC,EACLG,EAAMzyE,YAAY6yE,kBACpBnmC,IACO+lC,aAAiBF,IACxBO,IACOL,aAAiBM,IACxBD,GAAgB,GAEhBjmC,IAEFA,IAKN,SAASH,IACP,GAAI+lC,EAAMj8E,OAAQ,CAChBm8E,EAAI,KAEJ,IADA,IAAIK,EAAUN,EAAM,EACXlhF,EAAE,EAAGA,EAAEihF,EAAMj8E,OAAQhF,IAAK,CAC7BA,GAAGmhF,EAAI,KACX95D,EAAOm6D,GACP,IAAI5zD,EAAO8yD,EAAUO,EAAMjhF,IAAMihF,EAAMjhF,GAAK,KAE5CghF,EAAWpzD,EAAM4zD,EADHzC,EAAM,IAAM/+E,GAG5BqnB,EAAO65D,GACPC,EAAI,UAEJA,EAAI,MAIR,SAAS9lC,IACP,IAAI93C,EAAO7C,OAAO6C,KAAK09E,GACvB,GAAI19E,EAAKyB,OAAQ,CACfm8E,EAAI,KAEJ,IADA,IAAIM,EAAUP,EAAM,EACXlhF,EAAE,EAAGA,EAAEuD,EAAKyB,OAAQhF,IAAK,CAChC,IAAIuB,EAAMgC,EAAKvD,GACXiB,EAAQggF,EAAM1/E,GAClB,GAAIm/E,EAAUz/E,GAAQ,CAChBjB,GAAGmhF,EAAI,KACX,IAAIzB,EAAUX,EAAM,IAAMY,EAAkBp+E,GAC5C8lB,EAAOo6D,GACPz0E,EAAI0yE,EAAS,OACbyB,EAAIC,EAAO7/E,IACXyL,EAAI0yE,EAAS,UACbyB,EAAI,KACAlC,GAAYkC,EAAI,KACpBH,EAAW//E,EAAOwgF,EAAS/B,IAG/Br4D,EAAO65D,GACPC,EAAI,UAEJA,EAAI,MAIR,SAASG,EAAgBI,GACvB,GAAIT,EAAMnnB,KAAM,CACdqnB,EAAI,KAKJ,IAJA,IAAIM,EAAUP,EAAM,EAChB97C,GAAQ,EACRu8C,EAAUV,EAAMU,UAChB/kB,EAAQ+kB,EAAQzzE,QACZ0uD,EAAMntD,MAAM,CAClB,IAAIme,EAAOgvC,EAAM37D,MACbM,EAAMqsB,EAAK,GACX3sB,IAAQygF,GAAe9zD,EAAK,GAChC,GAAI8yD,EAAUz/E,GAAQ,CACfmkC,GAAO+7C,EAAI,KAChB/7C,GAAQ,EACR,IAAIs6C,EAAUX,EAAM,IAAMY,EAAkBp+E,GAC5C8lB,EAAOo6D,GACPz0E,EAAI0yE,EAAS,OACbyB,EAAIC,EAAO7/E,IACXyL,EAAI0yE,EAAS,UACbyB,EAAI,KACAlC,GAAYkC,EAAI,KACpBH,EAAW//E,EAAOwgF,EAAS/B,GAE7B9iB,EAAQ+kB,EAAQzzE,OAElBmZ,EAAO65D,GACPC,EAAI,UAEJA,EAAI,MA3ERn0E,EAAI+xE,EAAK,YAnCXiC,CAAWtkE,EAAM,EAAG,IACb,CACL0Z,KAAMA,EACNw6C,SAAUA,GAgHZ,SAASuQ,EAAI5iE,GACX2hC,GAAU3hC,EAAIvZ,OACdoZ,GAAOG,EAAIvZ,OACXoxB,GAAQ7X,EAGV,SAAS8I,EAAO65D,GACd,GAAIjC,EAAY,CAId,IAHA7oD,GAAQ,KAAOklB,EAAO4lC,EAAKjC,GAC3Bj4D,IACAk5B,EAAS,EACFghC,KACDL,GACF75D,GAAQ65D,EACR3gC,EAAS0gC,GAET1gC,GAAU0gC,EAEZxiE,GAAOuiE,EAETviE,GAAO,GAIX,SAASpR,EAAI+xE,EAAKhmD,GAChB63C,EAASmO,GAAOnO,EAASmO,IAAQ,GACjCnO,EAASmO,GAAKhmD,GAAQ,CACpB/R,KAAMA,EACNk5B,OAAQA,EACR9hC,IAAKA,GAIT,SAASk9B,EAAO75C,EAAG8c,GACjB,OAAO7b,MAAMjB,EAAI,GAAGyP,KAAKqN,KAK7B,IAAIqjE,EAAc,CAAC,SAAU,SAAU,UAAW,SAAU,UAC5D,SAASlB,EAAUhkE,GACjB,OAAOklE,EAAYnvE,eAAeiK,IAAS,EAI7C,IAAImlE,EAAY,QACZC,EAAQ,QACRC,EAAQ,MACRC,EAAQ,MACRC,EAAQ,MACRC,EAAQ,MACZ,SAASd,EAAO7iE,GAOd,MAAO,KANPA,EAAMA,EAAIlG,QAAQwpE,EAAW,QACnBxpE,QAAQ0pE,EAAO,OACf1pE,QAAQypE,EAAO,OACfzpE,QAAQ2pE,EAAO,OACf3pE,QAAQ4pE,EAAO,OACf5pE,QAAQ6pE,EAAO,QACN,IAIrB,IAAIC,EAAQ,KACRC,EAAQ,MACZ,SAASzC,EAAkBphE,GACzB,OAAOA,EAAIlG,QAAQ8pE,EAAO,MACf9pE,QAAQ+pE,EAAO,QAMtBC,IACC,SAAStiF,EAAQD,GAExB,IAAIwiF,EAAgCC,EAA8BC,GAoBjE,SAAUngF,EAAM4pB,GACb,aAGMs2D,EAA+B,QAGLh0E,KAFlCi0E,EAA2E,oBADhCF,EAMrC,WAQJ,SAASG,EAAOxhF,GACZ,MAAqB,kBAATqmD,KACDrmD,aAAiBqmD,KAGjBrmD,GAA0B,kBAAVA,GAAgD,kBAAnBA,EAAMyhF,SAYlE,SAAS7xE,IACL,IAAIwO,EAAY,GAChB,MAAO,CACHsjE,MAAOtjE,EAAUxc,KAAKrB,KAAK6d,GAC3BwkD,QAAS,SAAS0L,EAASqT,GAUvB,IARA,IAAIC,GAAc,EACdx0D,EAAQ,CACRu0D,OAAQA,EACRt0D,eAAgB,WACZu0D,GAAc,IAIb7iF,EAAI,EAAGA,EAAIqf,EAAUra,OAAQhF,IAClCqf,EAAUrf,GAAGuvE,EAASlhD,GAG1B,OAAOw0D,IAOnB,SAASC,EAAWpnC,GAEhB,MAAiD,SAA1C1sC,OAAOo2D,iBAAiB1pB,GAAMvwB,QAOzC,SAAS43D,EAAMrnC,GACX5sC,KAAK4sC,KAAOA,EAyGhB,SAASsnC,EAAcC,EAAW/iE,GAC9B,OAAO6iE,EAAKG,KAAMD,EAAU,WACvBE,MAAM,gBACNA,MAAOF,EAAU,eAAgB,KACjCG,QAAQ,CACLj4D,QAAS,OACTnB,SAAU,QACVK,IAAK,MACLC,KAAM,MACNC,OAAQ,OACRC,MAAO,OACP+6C,OAAQ,MAEX6d,QAAQH,EAAU,gBAAiB,CAChCnpC,QAAS,GACT5uB,WAAY,UAEf7C,SAAQ,WACA46D,EAAU,gBAAgB,IAC3B/iE,OAxHhB6iE,EAAKG,KAAO,SAAWrnE,EAAQ8D,GACJ,kBAAX9D,IACRA,EAASxC,SAASgqB,cAAcxnB,IAEpC,IAAI6/B,EAAOriC,SAASiJ,cAAc3C,GAAO,OAEzC,OADC9D,GAAUxC,SAAS6b,MAAM7S,YAAYq5B,GAC/B,IAAIqnC,EAAKrnC,IAGpBqnC,EAAKnhF,UAAY,CAGbknD,MAAO,SAAUnpC,GACb,OAAOojE,EAAKG,KAAKp0E,KAAK4sC,KAAM/7B,IAIhCyjE,QAAS,SAASp6D,GAOd,IAAK,IAAI+P,IAJsB,qBAF/B/P,EAASA,GAAU,IAEA8wB,UACf9wB,EAAOvkB,OAAS,iBAAqC,IAAjBukB,EAAO8wB,QAAiB,KAG/C9wB,EACTA,EAAOnnB,eAAek3B,KACtBjqB,KAAK4sC,KAAKj0B,MAAMsR,GAAQ/P,EAAO+P,IAIvC,OAAOjqB,MAIXq0E,MAAO,SAAUA,GAEb,OADAr0E,KAAK4sC,KAAK9iC,WAAa,IAAMuqE,EACtBr0E,MAIXiS,KAAM,SAAU5I,GAOZ,OANKsqE,EAAOtqE,GACRrJ,KAAK4sC,KAAKr5B,YAAalK,GAGvBrJ,KAAK4sC,KAAKx/B,UAAY/D,EAEnBrJ,MAIXuZ,QAAS,SAAStN,GAEd,OADAjM,KAAK4sC,KAAK37B,iBAAiB,QAAShF,GAC7BjM,MAIXkiB,QAAS,WACLliB,KAAK4sC,KAAKzrB,WAAWgB,YAAYniB,KAAK4sC,OAI1CntB,KAAM,WACFzf,KAAK4sC,KAAKj0B,MAAM0D,QAAU,QAI9B2O,KAAM,WACFhrB,KAAK4sC,KAAKj0B,MAAM0D,QAAU,SAI9Bk4D,KAAM,SAAW9iF,EAAMU,GAInB,YAHcsN,IAAVtN,GACA6N,KAAK4sC,KAAKt/B,aAAa7b,EAAMU,GAE1B6N,MAIXw0E,YAAa,SAAWxvC,GAEpB,IADA,IAAI4H,EAAO5sC,KAAK4sC,KACRA,GAAO,CACX,GAAK5H,EAAW,IAAIivC,EAAKrnC,IACrB,OAAO,EAGPA,EAAOA,EAAKzrB,WAGpB,OAAO,GAIXgnC,UAAW,WACP,OAAQ6rB,EAASh0E,KAAK4sC,QA+B9B,IAAI6nC,EAAU,EAqDd,SAASC,EAAa9nC,EAAMunC,GACxB,GAAKA,EAAU,eAAe,GAC1B,OAAOvnC,EAAKoN,MAAM,UACb/nC,KAAMkiE,EAAU,YAAa,WAC7BE,MAAM,cACNA,MAAOF,EAAU,aAAc,KAC/BG,QAASH,EAAU,cAAe,CAC/BQ,aAAc,MACdx4D,OAAQ,EACRvD,QAAS,EACTgzC,OAAQ,UACRnwC,OAAQ,OACRC,MAAO,OACPR,SAAU,WACVK,IAAK,MACLkY,MAAO,MACPlX,SAAU,OACVpB,UAAW,SACXyB,WAAY,OACZR,WAAY,UAEfm4D,KAAK,aAAcJ,EAAU,cAAe,UAKzD,SAASS,EAAmBC,GACxB,OAAO,WACH,OAAOA,IAAUjoC,MAMzB,IAAIkoC,EAAY/yE,IAGZgzE,EAAShzE,IAiIb,OA9HAwI,SAASmtD,gBAAgBzmD,iBAAiB,WAAW,SAAqBsO,GACtE,IAAIy1D,EAAUz1D,EAAMuD,OAASvD,EAAMyG,QAGlB,KAAZgvD,EACDF,EAAU/f,UAIQ,IAAZigB,GACND,EAAOhgB,QAAQx1C,MAoHhB,SAAmB3hB,IAtYE,kBAwYVA,GAAY+1E,EAAO/1E,MAC7BA,EAAU,CAAEyL,QAASzL,IAGzB,IAAIq3E,EAAmBlzE,IACnBmzE,EAAkBnzE,IAClBozE,EAAiBpzE,IACjBqzE,EAAmBrzE,IACnBszE,EAAkBtzE,IAMtB,SAASoyE,EAAYt/C,EAAKl4B,GACtB,IAAIxK,EAAQyL,EAAQi3B,GAIpB,MAHsB,oBAAV1iC,IACRA,EAAQA,EAAOwK,SAEF8C,IAAVtN,EAAsBwK,EAAexK,EAKhD,IAKImjF,EA2BAC,EAhCAnqC,EAAYrW,EAAMriC,KAAKwN,OAAQ,SAC/Bs1E,EAAazgD,EAAMriC,KAAKwN,OAAQ,WAChCu1E,EAAY1gD,EAAMriC,KAAKwN,OAAQ,SAOnC,SAASw1E,EAAY5B,GACjB0B,IAAa/1D,OACb2rB,IAAY3rB,OACZ41D,EAAgBtgB,QAAQugB,EAAOxB,GAInC,SAAS1iE,EAAO0iE,GACPsB,EAAiBrgB,QAAQugB,EAAOxB,IACjC4B,EAAW5B,GAKnB,SAAS6B,EAAc1pE,GACnB,OAAO,WAEH,OADAA,EAASnW,MAAMkK,KAAM/J,WACdq/E,GASf,SAASvgD,EAAOtjC,EAAMqiF,GAClB,IAAMyB,EAAQ,CACV,IAAIpqC,EAvRhB,SAAqBgpC,EAAW/iE,GAC5B,IAAIsK,EAAQy4D,EAAU,QAAS,QACT,kBAAVz4D,IACRA,GAAqB,MAGzB,IAAIvjB,EAAKg8E,EAAU,UAAW,QAAUM,KAwCxC,OAtCWR,EAAKG,KAAMD,EAAU,WAC3BE,MAAM,gBACNA,MAAOF,EAAU,aAAc,KAC/BG,QAAQ,CACLj4D,QAAS,OACTnB,SAAU,QACVu7C,OAAQ,MACRj7C,KAAM,MACND,IAAK,WACLmF,UAAW,MACXtF,UAAW,aACXM,MAAOA,EACP,gBAAiB,4BACjB,iBAAkB,4BAClB,oBAAqB,4BACrB,eAAgB,4BAChB+kB,UAAW,8BAEd6zC,QAAQH,EAAU,cAAe,CAC9B94D,SAAU,OACV0vB,gBAAiB,QACjBnyB,QAAS,OACT+7D,aAAc,SAEjB1iE,KAAMkiE,EAAU,YAChBI,KAAK,KAAMp8E,GACXo8E,KAAK,OAAQ,UACbA,KAAK,kBAAmBJ,EAAU,mBAClCI,KAAK,mBAAoBJ,EAAU,kBAAmBh8E,IACtDohB,SAAQ,SAAUgG,GACI,IAAI00D,EAAK10D,EAAMvpB,QAAQw+E,aAAY,SAAU5nC,GAC5D,MAAO,iBAAiBxrC,KAAKwrC,EAAKA,KAAK9iC,eAGvCsH,OA6OQwkE,CAAWzB,EAAW/iE,GAClCmkE,EAAQ,CACJpqC,MAAOA,EACP0qC,QAAS3B,EAAaC,EAAW/iE,GACjCA,MAAOsjE,EAAWvpC,EAAOgpC,IAE7Bc,EAAiBlgB,QAAQugB,EAAOxB,GAEpC,OAAOyB,EAAM9jF,GAuFjB,OA5QJ,SAAuB6jF,EAAOQ,GAG1B,SAAS7iE,EAAU25B,EAAMngC,GAErB,OADSmgC,EAAK15B,mBAAqB05B,EAAKz5B,uBAAyBy5B,EAAK35B,SAC5D5hB,KAAKu7C,EAAMngC,GAOzB,SAASspE,EAAUnpC,GACf,QACIonC,EAASpnC,IACT35B,EAAQ25B,EAAM,cACdA,EAAKv/B,aAAa,sBAKXu/B,EAAKv/B,aAAa,aACrB4F,EAAQ25B,EAAM,2DAK1B,SAASopC,EAAiBppC,GAEtB,IADA,IAAI9uB,EAAQ8uB,EAAKjiC,qBAAqB,KAC7BzZ,EAAI,EAAGA,EAAI4sB,EAAM5nB,OAAQhF,IAC9B,GAAK6kF,EAASj4D,EAAM5sB,IAChB,OAAO4sB,EAAM5sB,GAgBzB,IAAI+kF,EAIJX,EAAMY,YAAW,WACbD,EAAU1rE,SAAS8b,iBAIvBivD,EAAMa,WAAU,WACZ,GAAKL,IAAc,CACf,IAAIM,EAAYJ,EAAeV,EAAMlqC,aAChCgrC,GACDA,EAAUh2D,YAMtBk1D,EAAM9pC,YAAW,WACRsqC,KAAeG,GAChBA,EAAQ71D,QAEZ61D,EAAU,QAIdlB,EAAOlB,OAAM,SAAsBt0D,GAC/B,GAAKu2D,KAAeR,EAAMntB,YAAc,CACpC,IAAI7xB,EAAQ0/C,EAAeV,EAAMlqC,aAC7Br0B,EAxCZ,SAAyB61B,GAErB,IADA,IAAI9uB,EAAQ8uB,EAAKjiC,qBAAqB,KAC7BzZ,EAAI4sB,EAAM5nB,OAAQhF,KACvB,GAAK6kF,EAASj4D,EAAM5sB,IAChB,OAAO4sB,EAAM5sB,GAoCNmlF,CAAcf,EAAMlqC,cAEpB7rB,EAAM0D,SAAWqT,EAAQvf,KACtBxM,SAAS8b,iBAClB9G,EAAM0D,SAAWlM,EAAOuf,GAAOlW,QAChCb,EAAMC,sBA+KlB82D,CAzEAhB,EAAQ,CAGJlqC,UAAWwpC,EAAkBxpC,GAG7BqqC,UAAWb,EAAkBa,GAG7Bc,YAAa3B,EAAkBY,GAG/BgB,SAAUb,EAAY5gD,EAAMriC,KAAK,KAAM,OAGvCy1D,UAAW,WACP,SAAUotB,GAASnqC,GAAaA,IAAY+c,cAIhDn9B,KAAM,SAAU8oD,GAOZ,OANKoB,EAAgBngB,QAAQugB,EAAOxB,KAChC0B,IAAaxqD,OACbyqD,IACArqC,IAAYpgB,OACZmqD,EAAepgB,QAAQugB,EAAOxB,IAE3B9zE,MAIXoR,MAAOukE,EAAYvkE,GAMnBskE,WAAYC,EAAYD,GAGxBxzD,QAAS,WACLkpB,IAAYlpB,UACZszD,IAAatzD,UACbszD,EAAapqC,EAAYqqC,OAAYh2E,GAQzC7B,QAAS,SAAW64E,GAChB7kF,OAAO6C,KAAKgiF,GAAMv4E,KAAI,SAAUzL,GAC5BmL,EAAQnL,GAAOgkF,EAAKhkF,OAK5By4C,YAAayqC,EAAYV,EAAiBpB,OAG1CqC,WAAYP,EAAYT,EAAgBrB,OAGxCsC,UAAWR,EAAYR,EAAetB,OAGtC6C,YAAaf,EAAYP,EAAiBvB,OAG1CroC,WAAYmqC,EAAYN,EAAgBxB,QAGzBM,EAAUzhF,KAAK,KAAM,SAAS,IAxKrD,SAA4B4iF,EAAOQ,GAC/B,IAAIa,EACAvwD,EAAO,IAAI6tD,EAAK1pE,SAAS6b,MAE7BkvD,EAAMY,YAAW,WAEbS,EAAevwD,EAAKwmB,KAAKj0B,MAAM0C,SAE3By6D,KACA1vD,EAAKkuD,QAAQ,CAAEj5D,SAAU,cAIjCi6D,EAAM9pC,YAAW,WACbplB,EAAKkuD,QAAQ,CAAEj5D,SAAUs7D,OA4J7BC,CAAmBtB,EAAOnB,EAAUzhF,KAAK,KAAM,gBAAgB,IAG/DoiF,EAAUjB,OAAM,WACPM,EAAU,aAAa,IAASmB,EAAMntB,aACvCmtB,EAAMlkE,WAIPkkE,KA3jBZ9B,EAA+B19E,MAAM9E,EAASyiF,GAAiCD,KAChCviF,EAAOD,QAAU0iF,GAPlE,IAykBKmD,IACC,SAAS5lF,GAEKA,EAAOD,QAAoB,WAAW,aAAa,SAASuhC,EAAEtyB,EAAEtN,GAAG,KAAKqN,gBAAgBuyB,GAAG,MAAM,IAAIo/C,YAAY,oDAAoD3xE,KAAKkR,QAAQjR,EAAE,UAAUtN,EAAE,IAAIqN,KAAKowE,KAAKz9E,EAAEqN,KAAKyK,OAAO,IAAI7O,OAAO6O,OAAO8nB,EAAEz/B,UAAU,IAAI8I,OAAO8D,YAAY9D,MAAM,IAAIjK,EAAE,CAAC,KAAI,EAAG,UAAI,EAAG,UAAI,EAAG,KAAI,EAAG,QAAI,GAAImlF,EAAE,CAAC,KAAI,EAAG,UAAI,EAAG,UAAI,GAAI,SAASvlF,EAAE0O,GAAG,OAAOtN,EAAEyO,KAAKnB,GAAG,IAAItN,EAAE,cAAkBM,EAAE,gBAAgB,SAAS6S,EAAE7F,GAAG,OAAO7N,EAAEgP,KAAKnB,GAAG,IAAI7N,EAAE,UAAU,SAASjB,EAAE8O,GAAG,MAAM,MAAMA,GAAG,OAAOA,GAAG,OAAOA,GAAG,OAAOA,EAAE,SAASizB,EAAEjzB,GAAG,MAAM,SAAMA,GAAG,UAAKA,GAAGA,GAAG,UAAK,WAAMA,GAAG,WAAMA,GAAG,WAAMA,EAAE,SAASzO,EAAEyO,GAAG,OAAM,IAAKtO,EAAEsO,GAAG,SAASwhB,EAAExhB,GAAG,OAAM,IAAK62E,EAAE72E,GAAG,SAAS8F,EAAE9F,GAAG,OAAM,IAAKtO,EAAEsO,GAAG,KAAI,IAAK62E,EAAE72E,GAAG,IAAIA,EAAE,SAASA,EAAEA,EAAEtN,GAAsB,OAAO,KAA1BA,EAAEsN,EAAEuhE,YAAY7uE,IAAgBsN,EAAEiC,UAAU,EAAEvP,GAAGsN,EAAEiC,UAAUvP,EAAE,GAAGsN,EAAE,SAASjO,EAAEiO,EAAEtN,GAAG,IAAIP,EAAE6N,EAAE/J,OAAO,IAAI/E,EAAE8O,EAAE7N,EAAE,IAAI,OAAO6N,EAAEtN,EAAE,KAAKxB,EAAE8O,EAAE7N,EAAE,KAAKA,IAAI,OAAO6N,EAAEiC,UAAU,EAAE9P,GAAGO,EAAEsN,EAAEiC,UAAU9P,GAAG,IAAgCmhC,EAAE,CAAC,IAAG,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,EAAG,KAAI,GAAIwjD,EAAE,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAIhxE,EAAE,KAAKwsB,EAAE,KAAK5/B,EAAE,KAAKX,EAAE,KAAKI,EAAE,MAAM4kF,EAAE,CAAC,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAOC,EAAE,CAACC,KAAK,OAAOC,KAAK,OAAOC,MAAM,SAASvoE,EAAE,CAACwoE,KAAK,OAAOC,KAAK,OAAOC,MAAM,SAAShqD,EAAE,GAAGqhB,EAAE,GAAG4oC,EAAE,EAAEC,EAAE,GAAGx/B,EAAE,GAAGy/B,EAA1T,EAA8T,SAASC,IAAIH,IAAIC,EAAElqD,EAAEu9B,OAAO0sB,GAAG,SAASI,IAAID,IAAI,OAAOF,GAAGE,IAAI,SAASE,IAAI,OAAja,IAAwaH,IAAQ,MAAMz/B,GAAG,MAAMA,IAAvb,IAA2by/B,GAA/b,IAAscA,GAA9b,IAAqcA,EAAM,SAASI,IAAIlpC,GAAGqJ,EAAEy/B,EAAjd,EAAqdz/B,EAAE,GAAG1kB,EAAEkkD,IAAIC,EAAxf,EAA4fz/B,EAAEw/B,EAAEE,KAAK,WAAW,GAAG7xE,EAAE2xE,IAAI,MAAMA,EAAE,CAAC,GAAGC,EAAjiB,EAAqiB,MAAMD,GAAG,GAAGx/B,GAAGw/B,EAAEE,KAAK7xE,EAAE2xE,GAAG,MAAM,IAAIllD,EAAE,iCAAiCilD,OAAO,MAAMC,IAAIx/B,GAAGw/B,EAAEE,KAAK,KAAK7xE,EAAE2xE,IAAIx/B,GAAGw/B,EAAEE,IAAI,GAAG,MAAMF,EAAE,CAAC,GAAGx/B,GAAGw/B,EAAEE,KAAK7xE,EAAE2xE,GAAG,MAAM,IAAIllD,EAAE,iCAAiCilD,GAAG,KAAK1xE,EAAE2xE,IAAIx/B,GAAGw/B,EAAEE,IAAI,GAAG,MAAMF,GAAG,MAAMA,EAAE,CAAC,GAAGx/B,GAAGw/B,EAAEE,IAAI,MAAMF,GAAG,MAAMA,IAAIx/B,GAAGw/B,EAAEE,MAAM7xE,EAAE2xE,GAAG,MAAM,IAAIllD,EAAE,iCAAiCilD,GAAG,KAAK1xE,EAAE2xE,IAAIx/B,GAAGw/B,EAAEE,SAAS,OAAOF,GAAG,MAAMlqD,EAAEu9B,OAAO0sB,EAAE,IAAIG,IAAIn5E,EAAEo5E,IAAIp5E,EAAEm5E,GAArb,GAArf,IAAg7BD,IAAQz/B,EAAE,SAASh4C,GAAG,IAAI,IAAItN,EAAE,GAAGP,EAAE,EAAEA,EAAE6N,EAAE/J,OAAO9D,IAAI,CAAC,IAAIJ,EAAEiO,EAAE7N,GAAGO,GAAGugC,EAAElhC,GAAG,IAAIA,EAAE,OAAOW,EAA7E,CAAgFslD,GAAG6/B,KAAzgC,IAA8gCJ,IAAQA,EAAlhC,EAAshCz/B,EAAE,GAAG6/B,KAAK,SAASC,IAAI,MAAM9/B,IAAIA,EAAE,GAAGy/B,EAA5jC,EAAgkCI,KAAK,SAASt5E,EAAEyB,GAAG,IAAG,IAAKtO,EAAEgB,EAAE8kF,KAAI,IAAKX,EAAEnkF,GAAG,CAAC,IAAIA,EAAEoT,EAAE0xE,GAAGrlF,EAAEZ,EAAEimF,GAAGjmF,EAAEiwB,EAAE,IAAIw2B,GAAG,IAAIy/B,EAA/pC,EAAmqCz3E,IAAI,KAAKw3E,IAAIrlF,EAAEqlF,IAAI,GAAG,OAAOA,EAAE,GAAGx3E,SAAI,IAAS82E,EAAEU,GAAGx/B,GAAG,KAAKw/B,EAAEx3E,SAAS,GAAG,MAAMw3E,EAAE,CAACx/B,GAAG,MAAMh4C,IAAI,IAAI,IAAIjO,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,GAAGd,EAAEumF,GAAGxkF,EAAEmO,KAAKlQ,GAAG,MAAM,IAAIqhC,EAAE,4BAA4BilD,EAAEv/B,EAAE/hD,QAAQ+hD,GAAGw/B,EAAEx3E,SAAS,CAAC,GAAG,MAAMw3E,EAAE,MAAM,IAAIllD,EAAE,+BAA+BklD,EAAE,IAAID,GAAGv/B,GAAG,IAAIh4C,SAAcg4C,GAAL++B,EAAES,GAAMT,EAAES,GAAM,MAAMA,EAAE,MAAMA,EAAEx3E,IAAI,GAAG8F,EAAE0xE,KAAK9kF,EAAE,MAAM,IAAI4/B,EAAE,yBAAyBilD,EAAEv/B,EAAE/hD,QAAQ,OAAO+hD,GAAG,SAASh4C,IAAI,IAAI/O,GAAK,WAAW,GAAGK,EAAEkmF,GAAG,IAAIC,EAAhlD,EAAolDnmF,EAAEkmF,IAAI3xE,EAAE2xE,IAAI,MAAMA,GAAGx/B,GAAGw/B,EAAEE,SAAS,WAAW,GAAGxmF,EAAEsmF,IAAIvkD,EAAEukD,GAAG,IAAIC,EAAhpD,EAAopDvmF,EAAEsmF,IAAIvkD,EAAEukD,IAAIx/B,GAAGw/B,EAAEE,SAAS,WAAW,GAAG,MAAMF,GAAG,MAAMlqD,EAAEiqD,EAAE,GAAG,GAAG,MAAMC,GAAG,MAAMlqD,EAAEiqD,EAAE,IAAI,WAAe,IAAJE,EAA/uD,EAAwvD,KAAKD,GAAGx/B,GAAGw/B,EAAEE,IAAI,MAAM,IAAIplD,EAAE,yBAAyB0lB,EAAE,IAAIu/B,EAAEv/B,EAAE/hD,QAApF,QAAoG,IAAIwhF,EAAh1D,EAAo1D,KAAKD,GAAG,OAAOA,GAAGx/B,GAAGw/B,EAAEE,QAAQ,CAAC,IAAID,EAAx3D,EAA43D,KAAKD,IAAI,MAAMA,GAAG,MAAMA,GAAG,MAAMlqD,EAAEiqD,EAAE,KAAKv/B,GAAGw/B,EAAEE,IAAI,MAAMF,GAAG,MAAMlqD,EAAEiqD,EAAE,KAAKv/B,GAAGw/B,EAAEE,IAAI1/B,GAAGw/B,EAAEE,MAA3S,GAA3D,GAA9D,GAAmb,SAASK,IAAI,GAArgE,IAAwgEN,GAAO,MAAMz/B,GAAG,WAAW,GAAniE,IAAsiEy/B,GAAO,MAAMz/B,GAAG,WAAW,GAAzjE,IAA4jEy/B,GAAhkE,IAAukEA,EAAM,WAAW,GAAhlE,IAAmlEA,GAAO,WAAW,MAAM,IAAInlD,EAAE,KAAK0lB,EAAE,gCAAgC,iBAAiBu/B,EAAEv/B,EAAE/hD,QAAnF,QAAmG,GAAG+gF,EAAEh/B,GAAG6/B,QAAQ,CAAC,GAAGjpE,EAAEopC,GAAG,OAAOA,EAAEppC,EAAEopC,GAAG6/B,IAAI,IAAI73E,EAAEg4C,EAAEtlD,EAAEi8C,EAAE14C,OAAO,GAAG+hD,EAAE,GAAG6/B,IAA/wE,IAAmxEJ,GAAO,MAAMz/B,EAAE,OAAOA,EAAE,GAAG6/B,IAAIE,IAAlzE,IAAszEN,GAAO,MAAMz/B,IAAIA,EAAE,GAAG6/B,IAA50E,IAAg1EJ,GAAO,MAAMz/B,IAAIA,EAAE,GAAG6/B,MAAM,IAAIlpC,EAAE,SAAS3uC,EAAEtN,EAAEP,GAAG,OAAO6N,EAAEiC,UAAU,EAAE9P,GAAGO,EAAEsN,EAAEiC,UAAU9P,GAAtD,CAA0Dw8C,EAAE,IAAI3wC,OAAOgC,GAAGtN,GAAh7E,IAAm7E+kF,GAA37E,IAAk8EA,GAAOI,IAAIlpC,GAAG,MAAMkpC,UAAU,IAAIA,IAAx+E,IAA4+EJ,GAAO,MAAMz/B,GAAG,CAAC,IAAIh4C,EAAEg4C,EAAE,GAAG6/B,IAAhgF,IAAogFJ,IAAQz3E,EAAE2uC,EAAE4yB,YAAY,KAAK5yB,EAAEA,EAAE1sC,UAAU,EAAEjC,GAAGg4C,EAAE/1C,UAAU,GAAG+1C,EAAE,GAAG6/B,MAA1hB,QAAwiB,GAAGA,IAAjmF,IAAqmFJ,GAAO,MAAMz/B,EAAE,CAAC,OAAO,GAAG+/B,IAA/nF,IAAmoFN,GAAO,MAAMz/B,EAAE,CAAC,GAAG6/B,IAAtpF,IAA0pFJ,GAAO,MAAMz/B,EAAE,CAACrJ,EAAE3uC,EAAE2uC,EAAE,KAAK,MAAM,GAAG,KAAKqJ,EAAE,CAACrJ,EAAE3uC,EAAE2uC,EAAE,KAAK,WAAW,CAAC,IAAIipC,IAAI,MAAMjpC,EAAE58C,EAAE48C,EAAE,KAAjvF,IAAsvF8oC,GAAO,MAAMz/B,EAAE6/B,IAAIlpC,EAAE58C,EAAE48C,EAAE,UAAUkpC,IAAjwB,QAA6wB,GAAGA,IAAxyF,IAA4yFJ,GAAO,MAAMz/B,EAAE,CAAC,OAAO,CAAC,GAAxzF,IAA2zFy/B,GAAn0F,IAA00FA,IAAQA,EAA90F,EAAk1Fz/B,EAAE,IAAIh6C,OAAOg6C,EAAE,MAAj2F,IAAu2Fy/B,EAAM,MAAM,IAAInlD,EAAE,sBAAsBilD,EAAEv/B,EAAE/hD,QAAQ,GAAG4hF,IAAt6F,IAA06FJ,GAAO,MAAMz/B,EAAE6/B,QAAQ,CAAC,IAAID,IAAI,MAAM,IAAItlD,EAAE,iBAAiBilD,EAAEv/B,EAAE/hD,QAAQ04C,EAAE58C,EAAE48C,EAAE,KAAK,GAAGopC,IAAjgG,IAAqgGN,GAAO,MAAMz/B,EAAE,CAAC,GAAG6/B,IAAxhG,IAA4hGJ,GAAO,MAAMz/B,EAAE,CAACrJ,EAAE3uC,EAAE2uC,EAAE,KAAK,MAAM,GAAG,KAAKqJ,EAAE,CAACrJ,EAAE3uC,EAAE2uC,EAAE,KAAK,WAAW,CAAC,GAAvlG,IAA0lG8oC,GAA9lG,IAAqmGA,GAA7lG,IAAomGA,EAAM,MAAM9oC,EAAE58C,EAAE48C,EAAE,MAAloG,IAAwoG8oC,GAAO,MAAMz/B,EAAE6/B,IAAIlpC,EAAE58C,EAAE48C,EAAE,UAAUkpC,IAAI,OAAO,SAAS73E,GAAG2uC,EAAE,GAAG4oC,EAAE,EAAEC,GAAGlqD,EAAEttB,GAAG6qD,OAAO,GAAG7S,EAAE,GAAGy/B,EAA1sG,EAA8sGI,IAAI,IAAInlF,EAAE+kF,EAAE,GAAGM,IAAID,IAAI,KAAK9/B,EAAE,OAAOrJ,EAAE,GAAGj8C,IAAI+kF,GAAGG,IAAI,CAAC,IAAI,IAAIzlF,EAAE,GAAGO,IAAI+kF,GAAGG,KAAKzlF,GAAGw8C,EAAE58C,EAAE48C,EAAE,KAAKA,EAAE,GAAGopC,IAAID,IAAI,MAAM,MAAM95E,OAAO7L,GAAG6L,OAAO2wC,EAAE,OAAO,MAAM,IAAIrc,EAAE,wBAAwBilD,EAAEv/B,EAAE/hD,SAAhyIvD,KAOtBslF,EAA2B,GAG/B,SAASnnF,EAAoBC,GAE5B,IAAImnF,EAAeD,EAAyBlnF,GAC5C,QAAqB0O,IAAjBy4E,EACH,OAAOA,EAAalnF,QAGrB,IAAIC,EAASgnF,EAAyBlnF,GAAY,CAGjDC,QAAS,IAOV,OAHAosB,EAAoBrsB,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAGpEG,EAAOD,QAmDf,OA5CCF,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAa,OAAOrB,EAAM,SAC1B,WAAa,OAAOA,GAErB,OADAH,EAAoBU,EAAEE,EAAQ,CAAEoU,EAAGpU,IAC5BA,GAORZ,EAAoBU,EAAI,SAASR,EAASmnF,GACzC,IAAI,IAAI1lF,KAAO0lF,EACXrnF,EAAoBa,EAAEwmF,EAAY1lF,KAAS3B,EAAoBa,EAAEX,EAASyB,IAC5Eb,OAAOC,eAAeb,EAASyB,EAAK,CAAEX,YAAY,EAAMC,IAAKomF,EAAW1lF,MAQ3E3B,EAAoBa,EAAI,SAAS8F,EAAKwyB,GAAQ,OAAOr4B,OAAOkB,UAAUC,eAAe1B,KAAKoG,EAAKwyB,IAM/Fn5B,EAAoBkB,EAAI,SAAShB,GACX,qBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAS9BrB,EAAoB,KAvpqBxD,IAREG,EAAOD,QAAUmsB,K,+/XC3Bbi7D,eAAiBllF,oBAAQ,IAKxB,SAASmlF,mBAAmBtzE,MAAkBuzE,iBAA0BnmF,OAAsE,IAA1DomF,aAAyD,uDAA3B,eAIvH,GAAyB,wBAArBD,iBACF,IACEnmF,MAAQ2b,KAAKqD,MAAMhf,OAAS,MAC5B,eACA,OAAO4S,MAIX,GAAyB,iCAArBuzE,iBACF,IACEnmF,MAAQsiB,OAAO+jE,KAAKrmF,SAAW,EAC/B,gBACA,OAAO4S,MAGX,IAAM0zE,UAAY/hF,2CAA0B,CAACqO,MAAM5N,eAAiC,SAAjBohF,aAAA,oKAE9DD,iBAAmBnmF,OAGL,qBAAjBomF,aACE,CACE,GAAM,CACJ,cAAgB,oKACbD,iBAAmBnmF,SAJ5B,oKAUKomF,aAVL,oKAWOD,iBAAmBnmF,SAGzB,CAAE0E,kBAAmBC,iDA6ExB,MA3EyB,wBAArBwhF,mBACFG,UAAUC,oBAAsBvmF,OAGlC,2TAAC,0KAAA2T,EAAA,sDACS6yE,EAAyBhiF,gBAAgBiiF,qBAAzCD,qBADT,KAESL,iBAFT,OAGQ,aAHR,OASQ,wBATR,OAmBQ,wBAnBR,OAwBQ,6BAxBR,MAyBQ,yBAzBR,MA0BQ,yBA1BR,MA2BQ,uBA3BR,MA4BQ,gCA5BR,OAkCQ,oBAlCR,MAmCQ,2BAnCR,MAoCQ,yBApCR,MAqCQ,yBArCR,MAsCQ,eAtCR,MAuCQ,eAvCR,MAwCQ,cAxCR,OA6CQ,oBA7CR,OAsDQ,mBAtDR,iDAIYK,EAAqB,CAC1B50E,KAAM,WACN80E,QAAS1mF,SANhB,gCAUYwmF,EAAqB,CAC1B50E,KAAM,wCAAyC80E,QAAS,CAAEC,aAAc,CAACR,kBAAmBS,cAAe5mF,UAXlH,gCAoBYwmF,EAAqB,CAC1B50E,KAAM,kCAAmC80E,QAAS,CAAEG,YAAa,CAACV,kBAAmBW,QAAS9mF,MAAO+mF,cAAc,MArB1H,gCA6BYP,EAAqB,CAC1B50E,KAAM,kCAAmC80E,QAAS,CAAEG,YAAa,CAACV,kBAAmBW,QAAS9mF,MAAO+mF,cAAc,MA9B1H,gCAyCYP,EAAqB,CAC1B50E,KAAM,oBAAqB80E,QAAQ,oKAAIP,iBAAmBnmF,UA1CjE,cAiDKsmF,UAAUU,aAAaC,mBAAqBjnF,MAAQ,QAAKsN,EAjD9D,kBAkDYk5E,EAAqB,CAC1B50E,KAAM,wCAAyC80E,QAAS,CAAEC,aAAc,CAAC,eAAgB,mBAAoBC,cAAe5mF,UAnDnI,eAuDKsmF,UAAUU,aAAaE,kBAAoBlnF,MAAQ,QAAKsN,EACxDk5E,EAAqB,CACnB50E,KAAM,wCAAyC80E,QAAS,CAAEC,aAAc,CAAC,eAAgB,qBAAsBC,cAAe5mF,MAAQ,QAAKsN,KAzDlJ,kBA2DYk5E,EAAqB,CAC1B50E,KAAM,wCAAyC80E,QAAS,CAAEC,aAAc,CAAC,eAAgB,kBAAmBC,cAAe5mF,UA5DlI,iCAgEYwmF,EAAqB,CAC1B50E,KAAM,wCAAyC80E,QAAS,CAAEC,aAAcP,aAAiC,SAAjBA,aAA0B,CAACD,kBAA3B,8KAAmDC,aAAap2E,MAAM,MAAtE,CAA4Em2E,mBAAqB,CAACA,kBAAmBS,cAAe5mF,UAjEnO,2CAAD,GAuEO,mUACF4S,OADL,IAEE5N,eAAgBshF,YAIb,SAASa,wBAAwBv0E,EAAkBw0E,EAA2BpnF,GACnF,OAAO,mUACF4S,GADL,uKAEGw0E,EAAoBpnF,IAIlB,SAASqnF,mBAAmBz0E,EAAkB5N,GACnD,OAAO,mUACF4N,GADL,IAEE5N,eAAgBT,2CAA0B,CAACqO,EAAM5N,eAAgBA,GAAiB,CAAEN,kBAAmBC,iDACvGS,aAAa,IAKV,IAAMkiF,eAAiB,WAA6F,IAA5F10E,EAA2F,uDAAxEhO,2CAAiB+M,EAAuD,uCAGxH,OAFA9L,QAAQ0I,KAAKoD,GAELA,EAAOC,MACb,IAAK,uBACH,OAAOs0E,mBAAmBtzE,EAAOjB,EAAO+0E,QAAQP,iBAAkBx0E,EAAO+0E,QAAQ1mF,MAAO2R,EAAO+0E,QAAQpgF,eACzG,IAAK,uBACH,OAAO+gF,mBAAmBz0E,EAAOjB,EAAO+0E,SAC1C,IAAK,qCACH,OAAOS,wBAAwBv0E,EAAOjB,EAAO+0E,QAAQa,aAAc51E,EAAO+0E,QAAQ1mF,OACpF,QACE,OAAO4S,K,6BC5Jb,IAAIY,EAAUzS,EAAQ,IAASyS,QAE/B3U,EAAQsB,YAAa,EACrBtB,EAAQ2oF,oBACY,qBAAXz5E,QAA0BA,OAAO05E,qCACpC15E,OAAO05E,qCACP,WACE,GAAyB,IAArB3jF,UAAUC,OACd,MAA4B,kBAAjBD,UAAU,GAAwB0P,EACtCA,EAAQ7P,MAAM,KAAMG,YAGnCjF,EAAQ6oF,iBACY,qBAAX35E,QAA0BA,OAAO45E,6BACpC55E,OAAO45E,6BACP,WACE,OAAO,SAAUC,GACf,OAAOA,K,uFCfF,SAAS/iC,EAAmBp3C,GACzC,OCJa,SAA4BA,GACzC,GAAIhM,MAAMW,QAAQqL,GAAM,OAAO,OAAAo6E,EAAA,GAAiBp6E,GDGzC,CAAkBA,IELZ,SAA0Bs3C,GACvC,GAAsB,qBAAXjlD,QAA0BA,OAAO85C,YAAYn6C,OAAOslD,GAAO,OAAOtjD,MAAMuN,KAAK+1C,GFIvD,CAAgBt3C,IAAQ,OAAAq6E,EAAA,GAA2Br6E,IGLvE,WACb,MAAM,IAAI0V,UAAU,wIHIwE,K,4EIIjF,IAAInkB,EAAE+B,EAAQ,IAAiBP,EAAE,oBAAoBV,QAAQA,OAAOyL,IAAI1K,EAAEL,EAAEV,OAAOyL,IAAI,iBAAiB,MAAMs6E,EAAErlF,EAAEV,OAAOyL,IAAI,gBAAgB,MAAM1L,EAAEW,EAAEV,OAAOyL,IAAI,kBAAkB,MAAMtL,EAAEO,EAAEV,OAAOyL,IAAI,qBAAqB,MAAMo5E,EAAEnkF,EAAEV,OAAOyL,IAAI,kBAAkB,MAAMiM,EAAEhX,EAAEV,OAAOyL,IAAI,kBAAkB,MAAM+jB,EAAE9uB,EAAEV,OAAOyL,IAAI,iBAAiB,MAAMqtB,EAAEp4B,EAAEV,OAAOyL,IAAI,qBAAqB,MAAM61B,EAAE5gC,EAAEV,OAAOyL,IAAI,kBAAkB,MAAMk6E,EAAEjlF,EAAEV,OAAOyL,IAAI,cAAc,MAAMu5E,EAAEtkF,EAAEV,OAAOyL,IAAI,cACxe,MAAMw8E,EAAE,oBAAoBjoF,QAAQA,OAAO85C,SAAS,SAAS0rC,EAAE3xE,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEvU,EAAE,EAAEA,EAAE0E,UAAUC,OAAO3E,IAAIwU,GAAG,WAAWo0E,mBAAmBlkF,UAAU1E,IAAI,MAAM,yBAAyBuU,EAAE,WAAWC,EAAE,iHAC/P,IAAIq0E,EAAE,CAACC,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAcxD,EAAE,GAAG,SAAS/+B,EAAEnyC,EAAEC,EAAExU,GAAGyO,KAAK4d,MAAM9X,EAAE9F,KAAKygE,QAAQ16D,EAAE/F,KAAKy6E,KAAKzD,EAAEh3E,KAAK06E,QAAQnpF,GAAG6oF,EACpN,SAASO,KAA6B,SAASC,EAAE90E,EAAEC,EAAExU,GAAGyO,KAAK4d,MAAM9X,EAAE9F,KAAKygE,QAAQ16D,EAAE/F,KAAKy6E,KAAKzD,EAAEh3E,KAAK06E,QAAQnpF,GAAG6oF,EADsGniC,EAAEnlD,UAAU+nF,iBAAiB,GAAG5iC,EAAEnlD,UAAUgoF,SAAS,SAASh1E,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMlK,MAAM67E,EAAE,KAAKz3E,KAAK06E,QAAQF,gBAAgBx6E,KAAK8F,EAAEC,EAAE,aAAakyC,EAAEnlD,UAAUioF,YAAY,SAASj1E,GAAG9F,KAAK06E,QAAQJ,mBAAmBt6E,KAAK8F,EAAE,gBACnd60E,EAAE7nF,UAAUmlD,EAAEnlD,UAAsF,IAAIikF,EAAE6D,EAAE9nF,UAAU,IAAI6nF,EAAE5D,EAAEr3E,YAAYk7E,EAAEzpF,EAAE4lF,EAAE9+B,EAAEnlD,WAAWikF,EAAEiE,sBAAqB,EAAG,IAAI50C,EAAE,CAAClvB,QAAQ,MAAM+jE,EAAErpF,OAAOkB,UAAUC,eAAemoF,EAAE,CAACzoF,KAAI,EAAG0nB,KAAI,EAAGghE,QAAO,EAAGC,UAAS,GAChS,SAASC,EAAEv1E,EAAEC,EAAExU,GAAG,IAAI0O,EAAEzO,EAAE,GAAGuO,EAAE,KAAK8P,EAAE,KAAK,GAAG,MAAM9J,EAAE,IAAI9F,UAAK,IAAS8F,EAAEoU,MAAMtK,EAAE9J,EAAEoU,UAAK,IAASpU,EAAEtT,MAAMsN,EAAE,GAAGgG,EAAEtT,KAAKsT,EAAEk1E,EAAE5pF,KAAK0U,EAAE9F,KAAKi7E,EAAEnoF,eAAekN,KAAKzO,EAAEyO,GAAG8F,EAAE9F,IAAI,IAAIsyB,EAAEt8B,UAAUC,OAAO,EAAE,GAAG,IAAIq8B,EAAE/gC,EAAEqpB,SAAStpB,OAAO,GAAG,EAAEghC,EAAE,CAAC,IAAI,IAAIW,EAAEt/B,MAAM2+B,GAAGjhC,EAAE,EAAEA,EAAEihC,EAAEjhC,IAAI4hC,EAAE5hC,GAAG2E,UAAU3E,EAAE,GAAGE,EAAEqpB,SAASqY,EAAE,GAAGptB,GAAGA,EAAEe,aAAa,IAAI5G,KAAKsyB,EAAEzsB,EAAEe,kBAAe,IAASrV,EAAEyO,KAAKzO,EAAEyO,GAAGsyB,EAAEtyB,IAAI,MAAM,CAAC3C,SAAStK,EAAE+Q,KAAK+B,EAAErT,IAAIsN,EAAEoa,IAAItK,EAAE+N,MAAMpsB,EAAE8pF,OAAOl1C,EAAElvB,SACxU,SAAS03B,EAAE9oC,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAExI,WAAWtK,EAA0G,IAAIuoF,EAAE,OAAOvzC,EAAE,GAAG,SAASpB,EAAE9gC,EAAEC,EAAExU,EAAE0O,GAAG,GAAG+nC,EAAE9xC,OAAO,CAAC,IAAI1E,EAAEw2C,EAAElX,MAA8D,OAAxDt/B,EAAE+pC,OAAOz1B,EAAEtU,EAAEgqF,UAAUz1E,EAAEvU,EAAE0gC,KAAK3gC,EAAEC,EAAEivE,QAAQxgE,EAAEzO,EAAEof,MAAM,EAASpf,EAAE,MAAM,CAAC+pC,OAAOz1B,EAAE01E,UAAUz1E,EAAEmsB,KAAK3gC,EAAEkvE,QAAQxgE,EAAE2Q,MAAM,GAC5b,SAAS8mE,EAAE5xE,GAAGA,EAAEy1B,OAAO,KAAKz1B,EAAE01E,UAAU,KAAK11E,EAAEosB,KAAK,KAAKpsB,EAAE26D,QAAQ,KAAK36D,EAAE8K,MAAM,EAAE,GAAGo3B,EAAE9xC,QAAQ8xC,EAAEj0C,KAAK+R,GAE2F,SAASgyE,EAAEhyE,EAAEC,EAAExU,GAAG,OAAO,MAAMuU,EAAE,EADlO,SAAS0xE,EAAE1xE,EAAEC,EAAExU,EAAE0O,GAAG,IAAIzO,SAASsU,EAAK,cAActU,GAAG,YAAYA,IAAEsU,EAAE,MAAK,IAAI/F,GAAE,EAAG,GAAG,OAAO+F,EAAE/F,GAAE,OAAQ,OAAOvO,GAAG,IAAK,SAAS,IAAK,SAASuO,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO+F,EAAExI,UAAU,KAAKtK,EAAE,KAAKglF,EAAEj4E,GAAE,GAAI,GAAGA,EAAE,OAAOxO,EAAE0O,EAAE6F,EAAE,KAAKC,EAAE,IAAI4xE,EAAE7xE,EAAE,GAAGC,GAAG,EAAyB,GAAvBhG,EAAE,EAAEgG,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOnS,MAAMW,QAAQuR,GAAG,IAAI,IAAI+J,EAAE,EAAEA,EAAE/J,EAAE5P,OAAO2Z,IAAI,CAAQ,IAAI0iB,EAAExsB,EAAE4xE,EAAfnmF,EAAEsU,EAAE+J,GAAeA,GAAG9P,GAAGy3E,EAAEhmF,EAAE+gC,EAAEhhC,EAAE0O,QAAQ,GAAG,OAAO6F,GAAG,kBAAkBA,EAAEysB,EAAE,KAAiCA,EAAE,oBAA7BA,EAAE2nD,GAAGp0E,EAAEo0E,IAAIp0E,EAAE,eAAsCysB,EAAE,KAAM,oBAAoBA,EAAE,IAAIzsB,EAAEysB,EAAElhC,KAAKyU,GAAG+J,EACpf,IAAIre,EAAEsU,EAAE1G,QAAQuB,MAA6BZ,GAAGy3E,EAA1BhmF,EAAEA,EAAEW,MAAMogC,EAAExsB,EAAE4xE,EAAEnmF,EAAEqe,KAActe,EAAE0O,QAAQ,GAAG,WAAWzO,EAAE,MAAMD,EAAE,GAAGuU,EAAElK,MAAM67E,EAAE,GAAG,oBAAoBlmF,EAAE,qBAAqBK,OAAO6C,KAAKqR,GAAG1D,KAAK,MAAM,IAAI7Q,EAAE,KAAK,OAAOwO,EAAqCy3E,CAAE1xE,EAAE,GAAGC,EAAExU,GAAG,SAASomF,EAAE7xE,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAErT,IAH9I,SAAgBqT,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK,GAAGD,GAAGyD,QAAQ,SAAQ,SAASzD,GAAG,OAAOC,EAAED,MAG+C21E,CAAO31E,EAAErT,KAAKsT,EAAE9R,SAAS,IAAI,SAASynF,EAAE51E,EAAEC,GAAGD,EAAEosB,KAAK7gC,KAAKyU,EAAE26D,QAAQ16D,EAAED,EAAE8K,SACxX,SAAS+qE,EAAG71E,EAAEC,EAAExU,GAAG,IAAI0O,EAAE6F,EAAEy1B,OAAO/pC,EAAEsU,EAAE01E,UAAU11E,EAAEA,EAAEosB,KAAK7gC,KAAKyU,EAAE26D,QAAQ16D,EAAED,EAAE8K,SAAShd,MAAMW,QAAQuR,GAAG81E,EAAE91E,EAAE7F,EAAE1O,GAAE,SAASuU,GAAG,OAAOA,KAAI,MAAMA,IAAI8oC,EAAE9oC,KAAKA,EAJtJ,SAAWA,EAAEC,GAAG,MAAM,CAACzI,SAAStK,EAAE+Q,KAAK+B,EAAE/B,KAAKtR,IAAIsT,EAAEoU,IAAIrU,EAAEqU,IAAIyD,MAAM9X,EAAE8X,MAAM09D,OAAOx1E,EAAEw1E,QAImEzD,CAAE/xE,EAAEtU,IAAIsU,EAAErT,KAAKsT,GAAGA,EAAEtT,MAAMqT,EAAErT,IAAI,IAAI,GAAGqT,EAAErT,KAAK8W,QAAQgyE,EAAE,OAAO,KAAKhqF,IAAI0O,EAAElM,KAAK+R,IAAI,SAAS81E,EAAE91E,EAAEC,EAAExU,EAAE0O,EAAEzO,GAAG,IAAIuO,EAAE,GAAG,MAAMxO,IAAIwO,GAAG,GAAGxO,GAAGgY,QAAQgyE,EAAE,OAAO,KAAkBzD,EAAEhyE,EAAE61E,EAAjB51E,EAAE6gC,EAAE7gC,EAAEhG,EAAEE,EAAEzO,IAAakmF,EAAE3xE,GAAG,IAAI81E,EAAE,CAAC3kE,QAAQ,MAAM,SAAS6gE,IAAI,IAAIjyE,EAAE+1E,EAAE3kE,QAAQ,GAAG,OAAOpR,EAAE,MAAMlK,MAAM67E,EAAE,MAAM,OAAO3xE,EACxa,IAAIg2E,EAAG,CAACC,uBAAuBF,EAAEG,wBAAwB,CAACC,SAAS,MAAMC,kBAAkB91C,EAAE+1C,qBAAqB,CAACjlE,SAAQ,GAAI3B,OAAOpkB,GAAGH,EAAQorF,SAAS,CAACl+E,IAAI,SAAS4H,EAAEC,EAAExU,GAAG,GAAG,MAAMuU,EAAE,OAAOA,EAAE,IAAI7F,EAAE,GAAmB,OAAhB27E,EAAE91E,EAAE7F,EAAE,KAAK8F,EAAExU,GAAU0O,GAAG7J,QAAQ,SAAS0P,EAAEC,EAAExU,GAAG,GAAG,MAAMuU,EAAE,OAAOA,EAAqBgyE,EAAEhyE,EAAE41E,EAAvB31E,EAAE6gC,EAAE,KAAK,KAAK7gC,EAAExU,IAAYmmF,EAAE3xE,IAAI6K,MAAM,SAAS9K,GAAG,OAAOgyE,EAAEhyE,GAAE,WAAW,OAAO,OAAM,OAAOwK,QAAQ,SAASxK,GAAG,IAAIC,EAAE,GAAqC,OAAlC61E,EAAE91E,EAAEC,EAAE,MAAK,SAASD,GAAG,OAAOA,KAAWC,GAAGs2E,KAAK,SAASv2E,GAAG,IAAI8oC,EAAE9oC,GAAG,MAAMlK,MAAM67E,EAAE,MAAM,OAAO3xE,IAC9e9U,EAAQiqB,UAAUg9B,EAAEjnD,EAAQsrF,SAAStqF,EAAEhB,EAAQurF,SAASzF,EAAE9lF,EAAQwrF,cAAc5B,EAAE5pF,EAAQyrF,WAAWrqF,EAAEpB,EAAQ0rF,SAASnpD,EAAEviC,EAAQ2rF,mDAAmDb,EACrL9qF,EAAQ4rF,aAAa,SAAS92E,EAAEC,EAAExU,GAAG,GAAG,OAAOuU,QAAG,IAASA,EAAE,MAAMlK,MAAM67E,EAAE,IAAI3xE,IAAI,IAAI7F,EAAE9O,EAAE,GAAG2U,EAAE8X,OAAOpsB,EAAEsU,EAAErT,IAAIsN,EAAE+F,EAAEqU,IAAItK,EAAE/J,EAAEw1E,OAAO,GAAG,MAAMv1E,EAAE,CAAoE,QAAnE,IAASA,EAAEoU,MAAMpa,EAAEgG,EAAEoU,IAAItK,EAAEu2B,EAAElvB,cAAS,IAASnR,EAAEtT,MAAMjB,EAAE,GAAGuU,EAAEtT,KAAQqT,EAAE/B,MAAM+B,EAAE/B,KAAK8C,aAAa,IAAI0rB,EAAEzsB,EAAE/B,KAAK8C,aAAa,IAAIqsB,KAAKntB,EAAEk1E,EAAE5pF,KAAK0U,EAAEmtB,KAAKgoD,EAAEnoF,eAAemgC,KAAKjzB,EAAEizB,QAAG,IAASntB,EAAEmtB,SAAI,IAASX,EAAEA,EAAEW,GAAGntB,EAAEmtB,IAAI,IAAIA,EAAEj9B,UAAUC,OAAO,EAAE,GAAG,IAAIg9B,EAAEjzB,EAAE4a,SAAStpB,OAAO,GAAG,EAAE2hC,EAAE,CAACX,EAAE3+B,MAAMs/B,GAAG,IAAI,IAAI5hC,EAAE,EAAEA,EAAE4hC,EAAE5hC,IAAIihC,EAAEjhC,GAAG2E,UAAU3E,EAAE,GAAG2O,EAAE4a,SAAS0X,EAAE,MAAM,CAACj1B,SAAStK,EAAE+Q,KAAK+B,EAAE/B,KACxftR,IAAIjB,EAAE2oB,IAAIpa,EAAE6d,MAAM3d,EAAEq7E,OAAOzrE,IAAI7e,EAAQ6rF,cAAc,SAAS/2E,EAAEC,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAACxI,SAASmkB,EAAEq7D,sBAAsB/2E,EAAEg3E,cAAcj3E,EAAEk3E,eAAel3E,EAAEm3E,aAAa,EAAEC,SAAS,KAAKC,SAAS,OAAQD,SAAS,CAAC5/E,SAASqM,EAAEyzE,SAASt3E,GAAUA,EAAEq3E,SAASr3E,GAAG9U,EAAQwiB,cAAc6nE,EAAErqF,EAAQqsF,cAAc,SAASv3E,GAAG,IAAIC,EAAEs1E,EAAE3oF,KAAK,KAAKoT,GAAY,OAATC,EAAEhC,KAAK+B,EAASC,GAAG/U,EAAQssF,UAAU,WAAW,MAAM,CAACpmE,QAAQ,OAAOlmB,EAAQusF,WAAW,SAASz3E,GAAG,MAAM,CAACxI,SAASytB,EAAEjjB,OAAOhC,IAAI9U,EAAQwsF,eAAe5uC,EAC3e59C,EAAQysF,KAAK,SAAS33E,GAAG,MAAM,CAACxI,SAAS25E,EAAEyG,MAAM53E,EAAE63E,SAAS,EAAEC,QAAQ,OAAO5sF,EAAQ6sF,KAAK,SAAS/3E,EAAEC,GAAG,MAAM,CAACzI,SAASs6E,EAAE7zE,KAAK+B,EAAE0B,aAAQ,IAASzB,EAAE,KAAKA,IAAI/U,EAAQ8sF,YAAY,SAASh4E,EAAEC,GAAG,OAAOgyE,IAAI+F,YAAYh4E,EAAEC,IAAI/U,EAAQ+sF,WAAW,SAASj4E,EAAEC,GAAG,OAAOgyE,IAAIgG,WAAWj4E,EAAEC,IAAI/U,EAAQgtF,cAAc,aAAahtF,EAAQitF,UAAU,SAASn4E,EAAEC,GAAG,OAAOgyE,IAAIkG,UAAUn4E,EAAEC,IAAI/U,EAAQktF,oBAAoB,SAASp4E,EAAEC,EAAExU,GAAG,OAAOwmF,IAAImG,oBAAoBp4E,EAAEC,EAAExU,IACtcP,EAAQmtF,gBAAgB,SAASr4E,EAAEC,GAAG,OAAOgyE,IAAIoG,gBAAgBr4E,EAAEC,IAAI/U,EAAQotF,QAAQ,SAASt4E,EAAEC,GAAG,OAAOgyE,IAAIqG,QAAQt4E,EAAEC,IAAI/U,EAAQqtF,WAAW,SAASv4E,EAAEC,EAAExU,GAAG,OAAOwmF,IAAIsG,WAAWv4E,EAAEC,EAAExU,IAAIP,EAAQstF,OAAO,SAASx4E,GAAG,OAAOiyE,IAAIuG,OAAOx4E,IAAI9U,EAAQutF,SAAS,SAASz4E,GAAG,OAAOiyE,IAAIwG,SAASz4E,IAAI9U,EAAQwtF,QAAQ,W,6BCZxS,IAAI7C,EAAGzoF,EAAQ,GAASP,EAAEO,EAAQ,IAAiBlB,EAAEkB,EAAQ,IAAa,SAAS4jF,EAAEhxE,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEvU,EAAE,EAAEA,EAAE0E,UAAUC,OAAO3E,IAAIwU,GAAG,WAAWo0E,mBAAmBlkF,UAAU1E,IAAI,MAAM,yBAAyBuU,EAAE,WAAWC,EAAE,iHAAiH,IAAI41E,EAAG,MAAM//E,MAAMk7E,EAAE,MACxa,SAASgF,EAAGh2E,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,EAAExyB,EAAEmzB,EAAErjB,GAAG,IAAI1e,EAAEyC,MAAMd,UAAUkB,MAAM3C,KAAK4E,UAAU,GAAG,IAAI8P,EAAEjQ,MAAMvE,EAAEJ,GAAG,MAAMG,GAAG0O,KAAKwnB,QAAQl2B,IAAI,IAAImtF,GAAG,EAAGC,EAAG,KAAKC,GAAG,EAAGC,EAAG,KAAKC,EAAG,CAACr3D,QAAQ,SAAS1hB,GAAG24E,GAAG,EAAGC,EAAG54E,IAAI,SAASi9B,EAAGj9B,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,EAAExyB,EAAEmzB,EAAErjB,GAAG4uE,GAAG,EAAGC,EAAG,KAAK5C,EAAGhmF,MAAM+oF,EAAG5oF,WAAmJ,IAAI6oF,EAAG,KAAKC,EAAG,KAAKC,EAAG,KACha,SAASC,EAAGn5E,EAAEC,EAAExU,GAAG,IAAIC,EAAEsU,EAAE/B,MAAM,gBAAgB+B,EAAEi3D,cAAciiB,EAAGztF,GAD6L,SAAYuU,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,EAAExyB,EAAEmzB,EAAErjB,GAA4B,GAAzBkzB,EAAGjtC,MAAMkK,KAAK/J,WAAcwoF,EAAG,CAAC,IAAGA,EAAgC,MAAM7iF,MAAMk7E,EAAE,MAA1C,IAAI3lF,EAAEutF,EAAGD,GAAG,EAAGC,EAAG,KAA8BC,IAAKA,GAAG,EAAGC,EAAGztF,IAC9T+tF,CAAG1tF,EAAEuU,OAAE,EAAOD,GAAGA,EAAEi3D,cAAc,KAAK,IAAIoiB,EAAG,KAAKC,EAAG,GAC5H,SAASC,IAAK,GAAGF,EAAG,IAAI,IAAIr5E,KAAKs5E,EAAG,CAAC,IAAIr5E,EAAEq5E,EAAGt5E,GAAGvU,EAAE4tF,EAAGx7E,QAAQmC,GAAG,MAAM,EAAEvU,GAAG,MAAMqK,MAAMk7E,EAAE,GAAGhxE,IAAI,IAAIw5E,EAAG/tF,GAAG,CAAC,IAAIwU,EAAEw5E,cAAc,MAAM3jF,MAAMk7E,EAAE,GAAGhxE,IAA2B,IAAI,IAAItU,KAA/B8tF,EAAG/tF,GAAGwU,EAAExU,EAAEwU,EAAEy5E,WAA0B,CAAC,IAAIv/E,OAAE,EAAWsyB,EAAEhhC,EAAEC,GAAGuO,EAAEgG,EAAEmtB,EAAE1hC,EAAE,GAAGiuF,EAAG1sF,eAAemgC,GAAG,MAAMt3B,MAAMk7E,EAAE,GAAG5jD,IAAIusD,EAAGvsD,GAAGX,EAAE,IAAI1iB,EAAE0iB,EAAEmtD,wBAAwB,GAAG7vE,EAAE,CAAC,IAAI5P,KAAK4P,EAAEA,EAAE9c,eAAekN,IAAIw/D,EAAG5vD,EAAE5P,GAAGF,EAAEmzB,GAAGjzB,GAAE,OAAQsyB,EAAEotD,kBAAkBlgB,EAAGltC,EAAEotD,iBAAiB5/E,EAAEmzB,GAAGjzB,GAAE,GAAIA,GAAE,EAAG,IAAIA,EAAE,MAAMrE,MAAMk7E,EAAE,GAAGtlF,EAAEsU,OACjc,SAAS25D,EAAG35D,EAAEC,EAAExU,GAAG,GAAGquF,EAAG95E,GAAG,MAAMlK,MAAMk7E,EAAE,IAAIhxE,IAAI85E,EAAG95E,GAAGC,EAAE85E,EAAG/5E,GAAGC,EAAEy5E,WAAWjuF,GAAGuuF,aAAa,IAAIR,EAAG,GAAGG,EAAG,GAAGG,EAAG,GAAGC,EAAG,GAAG,SAASE,EAAGj6E,GAAG,IAASvU,EAALwU,GAAE,EAAK,IAAIxU,KAAKuU,EAAE,GAAGA,EAAE/S,eAAexB,GAAG,CAAC,IAAIC,EAAEsU,EAAEvU,GAAG,IAAI6tF,EAAGrsF,eAAexB,IAAI6tF,EAAG7tF,KAAKC,EAAE,CAAC,GAAG4tF,EAAG7tF,GAAG,MAAMqK,MAAMk7E,EAAE,IAAIvlF,IAAI6tF,EAAG7tF,GAAGC,EAAEuU,GAAE,GAAIA,GAAGs5E,IAAK,IAAIW,IAAK,qBAAqB9/E,QAAQ,qBAAqBA,OAAOqK,UAAU,qBAAqBrK,OAAOqK,SAASiJ,eAAeysE,EAAG,KAAKC,EAAG,KAAKC,EAAG,KAC9a,SAASC,EAAGt6E,GAAG,GAAGA,EAAEi5E,EAAGj5E,GAAG,CAAC,GAAG,oBAAoBm6E,EAAG,MAAMrkF,MAAMk7E,EAAE,MAAM,IAAI/wE,EAAED,EAAEu6E,UAAUt6E,IAAIA,EAAE+4E,EAAG/4E,GAAGk6E,EAAGn6E,EAAEu6E,UAAUv6E,EAAE/B,KAAKgC,KAAK,SAASu6E,EAAGx6E,GAAGo6E,EAAGC,EAAGA,EAAGpsF,KAAK+R,GAAGq6E,EAAG,CAACr6E,GAAGo6E,EAAGp6E,EAAE,SAASy6E,IAAK,GAAGL,EAAG,CAAC,IAAIp6E,EAAEo6E,EAAGn6E,EAAEo6E,EAAoB,GAAjBA,EAAGD,EAAG,KAAKE,EAAGt6E,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAE7P,OAAO4P,IAAIs6E,EAAGr6E,EAAED,KAAK,SAAS06E,EAAG16E,EAAEC,GAAG,OAAOD,EAAEC,GAAG,SAAS06E,EAAG36E,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,OAAO6F,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,SAASygF,KAAM,IAAIC,EAAGH,EAAGI,GAAG,EAAGC,GAAG,EAAG,SAASC,IAAQ,OAAOZ,GAAI,OAAOC,IAAGO,IAAKH,KAC9Z,SAASQ,EAAGj7E,EAAEC,EAAExU,GAAG,GAAGsvF,EAAG,OAAO/6E,EAAEC,EAAExU,GAAGsvF,GAAG,EAAG,IAAI,OAAOF,EAAG76E,EAAEC,EAAExU,GAAlB,QAA6BsvF,GAAG,EAAGC,KAAM,IAAIE,EAAG,8VAA8VC,EAAGrvF,OAAOkB,UAAUC,eAAemuF,EAAG,GAAGC,EAAG,GAE/Q,SAASx3E,EAAE7D,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAGvyB,KAAKohF,gBAAgB,IAAIr7E,GAAG,IAAIA,GAAG,IAAIA,EAAE/F,KAAKqhF,cAAc7vF,EAAEwO,KAAKshF,mBAAmBrhF,EAAED,KAAKuhF,gBAAgBhwF,EAAEyO,KAAK05E,aAAa5zE,EAAE9F,KAAK+D,KAAKgC,EAAE/F,KAAKwhF,YAAYjvD,EAAE,IAAIklD,EAAE,GACxZ,uIAAuIt1E,MAAM,KAAK/L,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe1P,SAAQ,SAAS0P,GAAG,IAAIC,EAAED,EAAE,GAAG2xE,EAAE1xE,GAAG,IAAI4D,EAAE5D,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAAS1P,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAEiE,cAAc,MAAK,MAC9d,CAAC,cAAc,4BAA4B,YAAY,iBAAiB3T,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,wNAAwN3D,MAAM,KAAK/L,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAEiE,cAAc,MAAK,MACzZ,CAAC,UAAU,WAAW,QAAQ,YAAY3T,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,YAAY1P,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQ1P,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,SAAS1P,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAEiE,cAAc,MAAK,MAAM,IAAI03E,EAAG,gBAAgB,SAASC,EAAG57E,GAAG,OAAOA,EAAE,GAAG67E,cAC/X,0jCAA0jCx/E,MAAM,KAAK/L,SAAQ,SAAS0P,GAAG,IAAIC,EAAED,EAAEyD,QAAQk4E,EACzmCC,GAAIjK,EAAE1xE,GAAG,IAAI4D,EAAE5D,EAAE,GAAE,EAAGD,EAAE,MAAK,MAAM,2EAA2E3D,MAAM,KAAK/L,SAAQ,SAAS0P,GAAG,IAAIC,EAAED,EAAEyD,QAAQk4E,EAAGC,GAAIjK,EAAE1xE,GAAG,IAAI4D,EAAE5D,EAAE,GAAE,EAAGD,EAAE,gCAA+B,MAAM,CAAC,WAAW,WAAW,aAAa1P,SAAQ,SAAS0P,GAAG,IAAIC,EAAED,EAAEyD,QAAQk4E,EAAGC,GAAIjK,EAAE1xE,GAAG,IAAI4D,EAAE5D,EAAE,GAAE,EAAGD,EAAE,wCAAuC,MAAM,CAAC,WAAW,eAAe1P,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAEiE,cAAc,MAAK,MACnc0tE,EAAEmK,UAAU,IAAIj4E,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcvT,SAAQ,SAAS0P,GAAG2xE,EAAE3xE,GAAG,IAAI6D,EAAE7D,EAAE,GAAE,EAAGA,EAAEiE,cAAc,MAAK,MAAM,IAAI83E,EAAGlG,EAAGgB,mDACnM,SAASmF,EAAGh8E,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAEw3E,EAAE1kF,eAAegT,GAAG0xE,EAAE1xE,GAAG,MAAW,OAAO9F,EAAE,IAAIA,EAAE8D,MAAKvS,IAAO,EAAEuU,EAAE7P,SAAS,MAAM6P,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYD,EAAEC,EAAExU,EAAEC,GAAG,GAAG,OAAOuU,GAAG,qBAAqBA,GAD4D,SAAYD,EAAEC,EAAExU,EAAEC,GAAG,GAAG,OAAOD,GAAG,IAAIA,EAAEwS,KAAK,OAAM,EAAG,cAAcgC,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGvU,IAAc,OAAOD,GAASA,EAAE6vF,gBAAmD,WAAnCt7E,EAAEA,EAAEiE,cAAc/V,MAAM,EAAE,KAAsB,UAAU8R,GAAE,QAAQ,OAAM,GACnTi8E,CAAGj8E,EAAEC,EAAExU,EAAEC,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOD,EAAE,OAAOA,EAAEwS,MAAM,KAAK,EAAE,OAAOgC,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOjR,MAAMiR,GAAG,KAAK,EAAE,OAAOjR,MAAMiR,IAAI,EAAEA,EAAE,OAAM,EAOrDi8E,CAAGj8E,EAAExU,EAAE0O,EAAEzO,KAAKD,EAAE,MAAMC,GAAG,OAAOyO,EARhM,SAAY6F,GAAG,QAAGm7E,EAAG5vF,KAAK8vF,EAAGr7E,KAAem7E,EAAG5vF,KAAK6vF,EAAGp7E,KAAek7E,EAAG5/E,KAAK0E,GAAUq7E,EAAGr7E,IAAG,GAAGo7E,EAAGp7E,IAAG,GAAS,IAQkFm8E,CAAGl8E,KAAK,OAAOxU,EAAEuU,EAAE40B,gBAAgB30B,GAAGD,EAAEwH,aAAavH,EAAE,GAAGxU,IAAI0O,EAAEshF,gBAAgBz7E,EAAE7F,EAAEy5E,cAAc,OAAOnoF,EAAE,IAAI0O,EAAE8D,MAAQ,GAAGxS,GAAGwU,EAAE9F,EAAEohF,cAAc7vF,EAAEyO,EAAEqhF,mBAAmB,OAAO/vF,EAAEuU,EAAE40B,gBAAgB30B,IAAaxU,EAAE,KAAX0O,EAAEA,EAAE8D,OAAc,IAAI9D,IAAG,IAAK1O,EAAE,GAAG,GAAGA,EAAEC,EAAEsU,EAAEo8E,eAAe1wF,EAAEuU,EAAExU,GAAGuU,EAAEwH,aAAavH,EAAExU,MADtOswF,EAAG9uF,eAAe,4BAA4B8uF,EAAG9F,uBAAuB,CAAC7kE,QAAQ,OAAO2qE,EAAG9uF,eAAe,6BAA6B8uF,EAAG7F,wBAAwB,CAACC,SAAS,OAEla,IAAIkG,EAAG,cAAcnL,EAAE,oBAAoB/kF,QAAQA,OAAOyL,IAAI0kF,GAAGpL,EAAE/kF,OAAOyL,IAAI,iBAAiB,MAAM2kF,GAAGrL,EAAE/kF,OAAOyL,IAAI,gBAAgB,MAAM4kF,GAAGtL,EAAE/kF,OAAOyL,IAAI,kBAAkB,MAAM6kF,GAAGvL,EAAE/kF,OAAOyL,IAAI,qBAAqB,MAAM8kF,GAAGxL,EAAE/kF,OAAOyL,IAAI,kBAAkB,MAAM+kF,GAAGzL,EAAE/kF,OAAOyL,IAAI,kBAAkB,MAAMglF,GAAG1L,EAAE/kF,OAAOyL,IAAI,iBAAiB,MAAMilF,GAAG3L,EAAE/kF,OAAOyL,IAAI,yBAAyB,MAAMklF,GAAG5L,EAAE/kF,OAAOyL,IAAI,qBAAqB,MAAMmlF,GAAG7L,EAAE/kF,OAAOyL,IAAI,kBAAkB,MAAMolF,GAAG9L,EAAE/kF,OAAOyL,IAAI,uBACve,MAAMqlF,GAAG/L,EAAE/kF,OAAOyL,IAAI,cAAc,MAAMslF,GAAGhM,EAAE/kF,OAAOyL,IAAI,cAAc,MAAMulF,GAAGjM,EAAE/kF,OAAOyL,IAAI,eAAe,MAAMwlF,GAAG,oBAAoBjxF,QAAQA,OAAO85C,SAAS,SAASo3C,GAAGr9E,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEo9E,IAAIp9E,EAAEo9E,KAAKp9E,EAAE,eAA0CA,EAAE,KACzR,SAASs9E,GAAGt9E,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE1N,aAAa0N,EAAErU,MAAM,KAAK,GAAG,kBAAkBqU,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKw8E,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,SAAS,KAAKG,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,aAAa,KAAKM,GAAG,MAAM,WAAW,KAAKC,GAAG,MAAM,eAAe,GAAG,kBAAkBh9E,EAAE,OAAOA,EAAExI,UAAU,KAAKolF,GAAG,MAAM,mBAAmB,KAAKD,GAAG,MAAM,mBAAmB,KAAKG,GAAG,IAAI78E,EAAED,EAAEgC,OAAmC,OAA5B/B,EAAEA,EAAE3N,aAAa2N,EAAEtU,MAAM,GAAUqU,EAAE1N,cAAc,KAAK2N,EAAE,cAAcA,EAAE,IACnf,cAAc,KAAKg9E,GAAG,OAAOK,GAAGt9E,EAAE/B,MAAM,KAAKk/E,GAAG,OAAOG,GAAGt9E,EAAEgC,QAAQ,KAAKk7E,GAAG,GAAGl9E,EAAE,IAAIA,EAAE63E,QAAQ73E,EAAE83E,QAAQ,KAAK,OAAOwF,GAAGt9E,GAAG,OAAO,KAAK,SAASu9E,GAAGv9E,GAAG,IAAIC,EAAE,GAAG,EAAE,CAACD,EAAE,OAAOA,EAAE+K,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,IAAItf,EAAE,GAAG,MAAMuU,EAAE,QAAQ,IAAItU,EAAEsU,EAAEw9E,YAAYrjF,EAAE6F,EAAEy9E,aAAahxD,EAAE6wD,GAAGt9E,EAAE/B,MAAMxS,EAAE,KAAKC,IAAID,EAAE6xF,GAAG5xF,EAAEuS,OAAOvS,EAAE+gC,EAAEA,EAAE,GAAGtyB,EAAEsyB,EAAE,QAAQtyB,EAAEujF,SAASj6E,QAAQ44E,EAAG,IAAI,IAAIliF,EAAEwjF,WAAW,IAAIlyF,IAAIghC,EAAE,gBAAgBhhC,EAAE,KAAKA,EAAE,aAAaC,GAAG,WAAW+gC,EAAExsB,GAAGxU,EAAEuU,EAAEA,EAAE49E,aAAa59E,GAAG,OAAOC,EACje,SAAS49E,GAAG79E,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAAI,SAAS89E,GAAG99E,GAAG,IAAIC,EAAED,EAAE/B,KAAK,OAAO+B,EAAEA,EAAEkH,WAAW,UAAUlH,EAAEiE,gBAAgB,aAAahE,GAAG,UAAUA,GAEzN,SAAS89E,GAAG/9E,GAAGA,EAAEg+E,gBAAgBh+E,EAAEg+E,cADvD,SAAYh+E,GAAG,IAAIC,EAAE69E,GAAG99E,GAAG,UAAU,QAAQvU,EAAEK,OAAOiE,yBAAyBiQ,EAAEpG,YAAY5M,UAAUiT,GAAGvU,EAAE,GAAGsU,EAAEC,GAAG,IAAID,EAAE/S,eAAegT,IAAI,qBAAqBxU,GAAG,oBAAoBA,EAAEQ,KAAK,oBAAoBR,EAAE42B,IAAI,CAAC,IAAIloB,EAAE1O,EAAEQ,IAAIwgC,EAAEhhC,EAAE42B,IAAiL,OAA7Kv2B,OAAOC,eAAeiU,EAAEC,EAAE,CAACrO,cAAa,EAAG3F,IAAI,WAAW,OAAOkO,EAAE5O,KAAK2O,OAAOmoB,IAAI,SAASriB,GAAGtU,EAAE,GAAGsU,EAAEysB,EAAElhC,KAAK2O,KAAK8F,MAAMlU,OAAOC,eAAeiU,EAAEC,EAAE,CAACjU,WAAWP,EAAEO,aAAmB,CAACgpC,SAAS,WAAW,OAAOtpC,GAAG+oC,SAAS,SAASz0B,GAAGtU,EAAE,GAAGsU,GAAGi+E,aAAa,WAAWj+E,EAAEg+E,cACxf,YAAYh+E,EAAEC,MAAuDi+E,CAAGl+E,IAAI,SAASm+E,GAAGn+E,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEg+E,cAAc,IAAI/9E,EAAE,OAAM,EAAG,IAAIxU,EAAEwU,EAAE+0B,WAAetpC,EAAE,GAAqD,OAAlDsU,IAAItU,EAAEoyF,GAAG99E,GAAGA,EAAEm7C,QAAQ,OAAO,QAAQn7C,EAAE3T,QAAO2T,EAAEtU,KAAaD,IAAGwU,EAAEw0B,SAASz0B,IAAG,GAAO,SAASo+E,GAAGp+E,EAAEC,GAAG,IAAIxU,EAAEwU,EAAEk7C,QAAQ,OAAOtuD,EAAE,GAAGoT,EAAE,CAACo+E,oBAAe,EAAOxnF,kBAAa,EAAOxK,WAAM,EAAO8uD,QAAQ,MAAM1vD,EAAEA,EAAEuU,EAAEs+E,cAAcC,iBACzY,SAASC,GAAGx+E,EAAEC,GAAG,IAAIxU,EAAE,MAAMwU,EAAEpJ,aAAa,GAAGoJ,EAAEpJ,aAAanL,EAAE,MAAMuU,EAAEk7C,QAAQl7C,EAAEk7C,QAAQl7C,EAAEo+E,eAAe5yF,EAAEoyF,GAAG,MAAM59E,EAAE5T,MAAM4T,EAAE5T,MAAMZ,GAAGuU,EAAEs+E,cAAc,CAACC,eAAe7yF,EAAE+yF,aAAahzF,EAAEizF,WAAW,aAAaz+E,EAAEhC,MAAM,UAAUgC,EAAEhC,KAAK,MAAMgC,EAAEk7C,QAAQ,MAAMl7C,EAAE5T,OAAO,SAASsyF,GAAG3+E,EAAEC,GAAe,OAAZA,EAAEA,EAAEk7C,UAAiB6gC,EAAGh8E,EAAE,UAAUC,GAAE,GACjU,SAAS2+E,GAAG5+E,EAAEC,GAAG0+E,GAAG3+E,EAAEC,GAAG,IAAIxU,EAAEoyF,GAAG59E,EAAE5T,OAAOX,EAAEuU,EAAEhC,KAAK,GAAG,MAAMxS,EAAK,WAAWC,GAAM,IAAID,GAAG,KAAKuU,EAAE3T,OAAO2T,EAAE3T,OAAOZ,KAAEuU,EAAE3T,MAAM,GAAGZ,GAAOuU,EAAE3T,QAAQ,GAAGZ,IAAIuU,EAAE3T,MAAM,GAAGZ,QAAQ,GAAG,WAAWC,GAAG,UAAUA,EAA8B,YAA3BsU,EAAE40B,gBAAgB,SAAgB30B,EAAEhT,eAAe,SAAS4xF,GAAG7+E,EAAEC,EAAEhC,KAAKxS,GAAGwU,EAAEhT,eAAe,iBAAiB4xF,GAAG7+E,EAAEC,EAAEhC,KAAK4/E,GAAG59E,EAAEpJ,eAAe,MAAMoJ,EAAEk7C,SAAS,MAAMl7C,EAAEo+E,iBAAiBr+E,EAAEq+E,iBAAiBp+E,EAAEo+E,gBACnZ,SAASS,GAAG9+E,EAAEC,EAAExU,GAAG,GAAGwU,EAAEhT,eAAe,UAAUgT,EAAEhT,eAAe,gBAAgB,CAAC,IAAIvB,EAAEuU,EAAEhC,KAAK,KAAK,WAAWvS,GAAG,UAAUA,QAAG,IAASuU,EAAE5T,OAAO,OAAO4T,EAAE5T,OAAO,OAAO4T,EAAE,GAAGD,EAAEs+E,cAAcG,aAAahzF,GAAGwU,IAAID,EAAE3T,QAAQ2T,EAAE3T,MAAM4T,GAAGD,EAAEnJ,aAAaoJ,EAAW,MAATxU,EAAEuU,EAAErU,QAAcqU,EAAErU,KAAK,IAAIqU,EAAEq+E,iBAAiBr+E,EAAEs+E,cAAcC,eAAe,KAAK9yF,IAAIuU,EAAErU,KAAKF,GACvV,SAASozF,GAAG7+E,EAAEC,EAAExU,GAAM,WAAWwU,GAAGD,EAAEo4D,cAAc73C,gBAAgBvgB,IAAE,MAAMvU,EAAEuU,EAAEnJ,aAAa,GAAGmJ,EAAEs+E,cAAcG,aAAaz+E,EAAEnJ,eAAe,GAAGpL,IAAIuU,EAAEnJ,aAAa,GAAGpL,IAAwF,SAASszF,GAAG/+E,EAAEC,GAA6D,OAA1DD,EAAEnT,EAAE,CAACkoB,cAAS,GAAQ9U,IAAMA,EAAlI,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApD41E,EAAGS,SAAShmF,QAAQ0P,GAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,MAAYC,EAAiD++E,CAAG/+E,EAAE8U,aAAU/U,EAAE+U,SAAS9U,GAASD,EACjV,SAASi/E,GAAGj/E,EAAEC,EAAExU,EAAEC,GAAe,GAAZsU,EAAEA,EAAElI,QAAWmI,EAAE,CAACA,EAAE,GAAG,IAAI,IAAI9F,EAAE,EAAEA,EAAE1O,EAAE2E,OAAO+J,IAAI8F,EAAE,IAAIxU,EAAE0O,KAAI,EAAG,IAAI1O,EAAE,EAAEA,EAAEuU,EAAE5P,OAAO3E,IAAI0O,EAAE8F,EAAEhT,eAAe,IAAI+S,EAAEvU,GAAGY,OAAO2T,EAAEvU,GAAG6jC,WAAWn1B,IAAI6F,EAAEvU,GAAG6jC,SAASn1B,GAAGA,GAAGzO,IAAIsU,EAAEvU,GAAGggC,iBAAgB,OAAQ,CAAmB,IAAlBhgC,EAAE,GAAGoyF,GAAGpyF,GAAGwU,EAAE,KAAS9F,EAAE,EAAEA,EAAE6F,EAAE5P,OAAO+J,IAAI,CAAC,GAAG6F,EAAE7F,GAAG9N,QAAQZ,EAAiD,OAA9CuU,EAAE7F,GAAGm1B,UAAS,OAAG5jC,IAAIsU,EAAE7F,GAAGsxB,iBAAgB,IAAW,OAAOxrB,GAAGD,EAAE7F,GAAG+Y,WAAWjT,EAAED,EAAE7F,IAAI,OAAO8F,IAAIA,EAAEqvB,UAAS,IACpY,SAAS4vD,GAAGl/E,EAAEC,GAAG,GAAG,MAAMA,EAAE4U,wBAAwB,MAAM/e,MAAMk7E,EAAE,KAAK,OAAOnkF,EAAE,GAAGoT,EAAE,CAAC5T,WAAM,EAAOwK,kBAAa,EAAOke,SAAS,GAAG/U,EAAEs+E,cAAcG,eAAe,SAASU,GAAGn/E,EAAEC,GAAG,IAAIxU,EAAEwU,EAAE5T,MAAM,GAAG,MAAMZ,EAAE,CAA+B,GAA9BA,EAAEwU,EAAE8U,SAAS9U,EAAEA,EAAEpJ,aAAgB,MAAMpL,EAAE,CAAC,GAAG,MAAMwU,EAAE,MAAMnK,MAAMk7E,EAAE,KAAK,GAAGljF,MAAMW,QAAQhD,GAAG,CAAC,KAAK,GAAGA,EAAE2E,QAAQ,MAAM0F,MAAMk7E,EAAE,KAAKvlF,EAAEA,EAAE,GAAGwU,EAAExU,EAAE,MAAMwU,IAAIA,EAAE,IAAIxU,EAAEwU,EAAED,EAAEs+E,cAAc,CAACG,aAAaZ,GAAGpyF,IAC/Y,SAAS2zF,GAAGp/E,EAAEC,GAAG,IAAIxU,EAAEoyF,GAAG59E,EAAE5T,OAAOX,EAAEmyF,GAAG59E,EAAEpJ,cAAc,MAAMpL,KAAIA,EAAE,GAAGA,KAAMuU,EAAE3T,QAAQ2T,EAAE3T,MAAMZ,GAAG,MAAMwU,EAAEpJ,cAAcmJ,EAAEnJ,eAAepL,IAAIuU,EAAEnJ,aAAapL,IAAI,MAAMC,IAAIsU,EAAEnJ,aAAa,GAAGnL,GAAG,SAAS2zF,GAAGr/E,GAAG,IAAIC,EAAED,EAAEmH,YAAYlH,IAAID,EAAEs+E,cAAcG,cAAc,KAAKx+E,GAAG,OAAOA,IAAID,EAAE3T,MAAM4T,GAAG,IAAIq/E,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAGv/E,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAASw/E,GAAGx/E,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAEu/E,GAAGt/E,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,EAC3U,IAAIy/E,GAAGC,GAAG,SAAS1/E,GAAG,MAAM,qBAAqB2/E,OAAOA,MAAMC,wBAAwB,SAAS3/E,EAAExU,EAAEC,EAAEyO,GAAGwlF,MAAMC,yBAAwB,WAAW,OAAO5/E,EAAEC,EAAExU,OAAUuU,EAA5J,EAA+J,SAASA,EAAEC,GAAG,GAAGD,EAAE6/E,eAAeP,IAAQ,cAAct/E,EAAEA,EAAEsH,UAAUrH,MAAM,CAA2F,KAA1Fw/E,GAAGA,IAAIh7E,SAASiJ,cAAc,QAAUpG,UAAU,QAAQrH,EAAEo9D,UAAUlvE,WAAW,SAAa8R,EAAEw/E,GAAG3xD,WAAW9tB,EAAE8tB,YAAY9tB,EAAEqc,YAAYrc,EAAE8tB,YAAY,KAAK7tB,EAAE6tB,YAAY9tB,EAAEyN,YAAYxN,EAAE6tB,gBACjb,SAASgyD,GAAG9/E,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIxU,EAAEuU,EAAE8tB,WAAW,GAAGriC,GAAGA,IAAIuU,EAAE+jD,WAAW,IAAIt4D,EAAEqiF,SAAwB,YAAdriF,EAAEm3C,UAAU3iC,GAAUD,EAAEmH,YAAYlH,EAAE,SAAS8/E,GAAG//E,EAAEC,GAAG,IAAIxU,EAAE,GAAkF,OAA/EA,EAAEuU,EAAEiE,eAAehE,EAAEgE,cAAcxY,EAAE,SAASuU,GAAG,SAASC,EAAExU,EAAE,MAAMuU,GAAG,MAAMC,EAASxU,EAAE,IAAIu0F,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,GAAGC,GAAG,GAC1M,SAASC,GAAGvgF,GAAG,GAAGqgF,GAAGrgF,GAAG,OAAOqgF,GAAGrgF,GAAG,IAAIggF,GAAGhgF,GAAG,OAAOA,EAAE,IAAYvU,EAARwU,EAAE+/E,GAAGhgF,GAAK,IAAIvU,KAAKwU,EAAE,GAAGA,EAAEhT,eAAexB,IAAIA,KAAK60F,GAAG,OAAOD,GAAGrgF,GAAGC,EAAExU,GAAG,OAAOuU,EAA9Xk6E,IAAKoG,GAAG77E,SAASiJ,cAAc,OAAOmF,MAAM,mBAAmBzY,gBAAgB4lF,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBpmF,eAAe4lF,GAAGI,cAAcK,YACxO,IAAIC,GAAGH,GAAG,gBAAgBI,GAAGJ,GAAG,sBAAsBK,GAAGL,GAAG,kBAAkBM,GAAGN,GAAG,iBAAiBpuD,GAAG,sNAAsN91B,MAAM,KAAK+1B,GAAG,IAAK,oBAAoB0uD,QAAQA,QAAQ3U,KAAK,SAAS4U,GAAG/gF,GAAG,IAAIC,EAAEmyB,GAAGnmC,IAAI+T,GAAuC,YAApC,IAASC,IAAIA,EAAE,IAAIksE,IAAI/5C,GAAG/P,IAAIriB,EAAEC,IAAWA,EACpc,SAAS+gF,GAAGhhF,GAAG,IAAIC,EAAED,EAAEvU,EAAEuU,EAAE,GAAGA,EAAEihF,UAAU,KAAKhhF,EAAE29E,QAAQ39E,EAAEA,EAAE29E,WAAW,CAAC59E,EAAEC,EAAE,GAAO,KAAiB,MAArBA,EAAED,GAASkhF,aAAkBz1F,EAAEwU,EAAE29E,QAAQ59E,EAAEC,EAAE29E,aAAa59E,GAAG,OAAO,IAAIC,EAAE8K,IAAItf,EAAE,KAAK,SAAS01F,GAAGnhF,GAAG,GAAG,KAAKA,EAAE+K,IAAI,CAAC,IAAI9K,EAAED,EAAEohF,cAAsE,GAAxD,OAAOnhF,IAAkB,QAAdD,EAAEA,EAAEihF,aAAqBhhF,EAAED,EAAEohF,gBAAmB,OAAOnhF,EAAE,OAAOA,EAAEohF,WAAW,OAAO,KAAK,SAASC,GAAGthF,GAAG,GAAGghF,GAAGhhF,KAAKA,EAAE,MAAMlK,MAAMk7E,EAAE,MAEhK,SAASuQ,GAAGvhF,GAAW,KAARA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAEihF,UAAU,IAAIhhF,EAAE,CAAS,GAAG,QAAXA,EAAE+gF,GAAGhhF,IAAe,MAAMlK,MAAMk7E,EAAE,MAAM,OAAO/wE,IAAID,EAAE,KAAKA,EAAE,IAAI,IAAIvU,EAAEuU,EAAEtU,EAAEuU,IAAI,CAAC,IAAI9F,EAAE1O,EAAEmyF,OAAO,GAAG,OAAOzjF,EAAE,MAAM,IAAIsyB,EAAEtyB,EAAE8mF,UAAU,GAAG,OAAOx0D,EAAE,CAAY,GAAG,QAAd/gC,EAAEyO,EAAEyjF,QAAmB,CAACnyF,EAAEC,EAAE,SAAS,MAAM,GAAGyO,EAAE+5C,QAAQznB,EAAEynB,MAAM,CAAC,IAAIznB,EAAEtyB,EAAE+5C,MAAMznB,GAAG,CAAC,GAAGA,IAAIhhC,EAAE,OAAO61F,GAAGnnF,GAAG6F,EAAE,GAAGysB,IAAI/gC,EAAE,OAAO41F,GAAGnnF,GAAG8F,EAAEwsB,EAAEA,EAAE+0D,QAAQ,MAAM1rF,MAAMk7E,EAAE,MAAO,GAAGvlF,EAAEmyF,SAASlyF,EAAEkyF,OAAOnyF,EAAE0O,EAAEzO,EAAE+gC,MAAM,CAAC,IAAI,IAAIxyB,GAAE,EAAGmzB,EAAEjzB,EAAE+5C,MAAM9mB,GAAG,CAAC,GAAGA,IAAI3hC,EAAE,CAACwO,GAAE,EAAGxO,EAAE0O,EAAEzO,EAAE+gC,EAAE,MAAM,GAAGW,IAAI1hC,EAAE,CAACuO,GAAE,EAAGvO,EAAEyO,EAAE1O,EAAEghC,EAAE,MAAMW,EAAEA,EAAEo0D,QAAQ,IAAIvnF,EAAE,CAAC,IAAImzB,EAAEX,EAAEynB,MAAM9mB,GAAG,CAAC,GAAGA,IAC5f3hC,EAAE,CAACwO,GAAE,EAAGxO,EAAEghC,EAAE/gC,EAAEyO,EAAE,MAAM,GAAGizB,IAAI1hC,EAAE,CAACuO,GAAE,EAAGvO,EAAE+gC,EAAEhhC,EAAE0O,EAAE,MAAMizB,EAAEA,EAAEo0D,QAAQ,IAAIvnF,EAAE,MAAMnE,MAAMk7E,EAAE,OAAQ,GAAGvlF,EAAEw1F,YAAYv1F,EAAE,MAAMoK,MAAMk7E,EAAE,MAAO,GAAG,IAAIvlF,EAAEsf,IAAI,MAAMjV,MAAMk7E,EAAE,MAAM,OAAOvlF,EAAE8uF,UAAUnpE,UAAU3lB,EAAEuU,EAAEC,EAAmBwhF,CAAGzhF,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAE8K,KAAK,IAAI9K,EAAE8K,IAAI,OAAO9K,EAAE,GAAGA,EAAEi0C,MAAMj0C,EAAEi0C,MAAM0pC,OAAO39E,EAAEA,EAAEA,EAAEi0C,UAAU,CAAC,GAAGj0C,IAAID,EAAE,MAAM,MAAMC,EAAEuhF,SAAS,CAAC,IAAIvhF,EAAE29E,QAAQ39E,EAAE29E,SAAS59E,EAAE,OAAO,KAAKC,EAAEA,EAAE29E,OAAO39E,EAAEuhF,QAAQ5D,OAAO39E,EAAE29E,OAAO39E,EAAEA,EAAEuhF,SAAS,OAAO,KAC5c,SAASE,GAAG1hF,EAAEC,GAAG,GAAG,MAAMA,EAAE,MAAMnK,MAAMk7E,EAAE,KAAK,OAAG,MAAMhxE,EAASC,EAAKnS,MAAMW,QAAQuR,GAAOlS,MAAMW,QAAQwR,IAAUD,EAAE/R,KAAK+B,MAAMgQ,EAAEC,GAAGD,IAAEA,EAAE/R,KAAKgS,GAAUD,GAASlS,MAAMW,QAAQwR,GAAG,CAACD,GAAG7H,OAAO8H,GAAG,CAACD,EAAEC,GAAG,SAAS0hF,GAAG3hF,EAAEC,EAAExU,GAAGqC,MAAMW,QAAQuR,GAAGA,EAAE1P,QAAQ2P,EAAExU,GAAGuU,GAAGC,EAAE1U,KAAKE,EAAEuU,GAAG,IAAI4hF,GAAG,KAC/Q,SAASC,GAAG7hF,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAED,EAAE8hF,mBAAmBr2F,EAAEuU,EAAE+hF,mBAAmB,GAAGj0F,MAAMW,QAAQwR,GAAG,IAAI,IAAIvU,EAAE,EAAEA,EAAEuU,EAAE7P,SAAS4P,EAAEgiF,uBAAuBt2F,IAAIytF,EAAGn5E,EAAEC,EAAEvU,GAAGD,EAAEC,SAASuU,GAAGk5E,EAAGn5E,EAAEC,EAAExU,GAAGuU,EAAE8hF,mBAAmB,KAAK9hF,EAAE+hF,mBAAmB,KAAK/hF,EAAEiiF,gBAAgBjiF,EAAEpG,YAAYsoF,QAAQliF,IAAI,SAASmiF,GAAGniF,GAAwC,GAArC,OAAOA,IAAI4hF,GAAGF,GAAGE,GAAG5hF,IAAIA,EAAE4hF,GAAGA,GAAG,KAAQ5hF,EAAE,CAAU,GAAT2hF,GAAG3hF,EAAE6hF,IAAOD,GAAG,MAAM9rF,MAAMk7E,EAAE,KAAK,GAAG6H,EAAG,MAAM74E,EAAE84E,EAAGD,GAAG,EAAGC,EAAG,KAAK94E,GAC9Y,SAASoiF,GAAGpiF,GAA6F,OAA1FA,EAAEA,EAAE9P,QAAQ8P,EAAE0+C,YAAYtkD,QAASioF,0BAA0BriF,EAAEA,EAAEqiF,yBAAgC,IAAIriF,EAAE8tE,SAAS9tE,EAAEqb,WAAWrb,EAAE,SAASsiF,GAAGtiF,GAAG,IAAIk6E,EAAG,OAAM,EAAY,IAAIj6E,GAAbD,EAAE,KAAKA,KAAayE,SAAqG,OAA5FxE,KAAIA,EAAEwE,SAASiJ,cAAc,QAASlG,aAAaxH,EAAE,WAAWC,EAAE,oBAAoBA,EAAED,IAAWC,EAAE,IAAIsiF,GAAG,GAAG,SAASC,GAAGxiF,GAAGA,EAAEyiF,aAAa,KAAKziF,EAAE0iF,YAAY,KAAK1iF,EAAE2iF,WAAW,KAAK3iF,EAAE4iF,UAAUxyF,OAAO,EAAE,GAAGmyF,GAAGnyF,QAAQmyF,GAAGt0F,KAAK+R,GAC5a,SAAS6iF,GAAG7iF,EAAEC,EAAExU,EAAEC,GAAG,GAAG62F,GAAGnyF,OAAO,CAAC,IAAI+J,EAAEooF,GAAGv3D,MAA2E,OAArE7wB,EAAEsoF,aAAaziF,EAAE7F,EAAE2oF,iBAAiBp3F,EAAEyO,EAAEuoF,YAAYziF,EAAE9F,EAAEwoF,WAAWl3F,EAAS0O,EAAE,MAAM,CAACsoF,aAAaziF,EAAE8iF,iBAAiBp3F,EAAEg3F,YAAYziF,EAAE0iF,WAAWl3F,EAAEm3F,UAAU,IAC9M,SAASG,GAAG/iF,GAAG,IAAIC,EAAED,EAAE2iF,WAAWl3F,EAAEwU,EAAE,EAAE,CAAC,IAAIxU,EAAE,CAACuU,EAAE4iF,UAAU30F,KAAKxC,GAAG,MAAM,IAAIC,EAAED,EAAE,GAAG,IAAIC,EAAEqf,IAAIrf,EAAEA,EAAE6uF,UAAUyI,kBAAkB,CAAC,KAAKt3F,EAAEkyF,QAAQlyF,EAAEA,EAAEkyF,OAAOlyF,EAAE,IAAIA,EAAEqf,IAAI,KAAKrf,EAAE6uF,UAAUyI,cAAc,IAAIt3F,EAAE,MAAc,KAARuU,EAAExU,EAAEsf,MAAW,IAAI9K,GAAGD,EAAE4iF,UAAU30F,KAAKxC,GAAGA,EAAEw3F,GAAGv3F,SAASD,GAAG,IAAIA,EAAE,EAAEA,EAAEuU,EAAE4iF,UAAUxyF,OAAO3E,IAAI,CAACwU,EAAED,EAAE4iF,UAAUn3F,GAAG,IAAI0O,EAAEioF,GAAGpiF,EAAE0iF,aAAah3F,EAAEsU,EAAEyiF,aAAa,IAAIh2D,EAAEzsB,EAAE0iF,YAAYzoF,EAAE+F,EAAE8iF,iBAAiB,IAAIr3F,IAAIwO,GAAG,IAAI,IAAI,IAAImzB,EAAE,KAAKrjB,EAAE,EAAEA,EAAEyvE,EAAGppF,OAAO2Z,IAAI,CAAC,IAAI1e,EAAEmuF,EAAGzvE,GAAG1e,IAAIA,EAAEA,EAAEouF,cAAc/tF,EAAEuU,EAAEwsB,EAAEtyB,EAAEF,MAAMmzB,EACpfs0D,GAAGt0D,EAAE/hC,IAAI82F,GAAG/0D,IAAI,SAAS81D,GAAGljF,EAAEC,EAAExU,GAAG,IAAIA,EAAE03F,IAAInjF,GAAG,CAAC,OAAOA,GAAG,IAAK,SAASojF,GAAGnjF,EAAE,UAAS,GAAI,MAAM,IAAK,QAAQ,IAAK,OAAOmjF,GAAGnjF,EAAE,SAAQ,GAAImjF,GAAGnjF,EAAE,QAAO,GAAIxU,EAAE42B,IAAI,OAAO,MAAM52B,EAAE42B,IAAI,QAAQ,MAAM,MAAM,IAAK,SAAS,IAAK,QAAQigE,GAAGtiF,IAAIojF,GAAGnjF,EAAED,GAAE,GAAI,MAAM,IAAK,UAAU,IAAK,SAAS,IAAK,QAAQ,MAAM,SAAS,IAAImyB,GAAGt0B,QAAQmC,IAAImyC,GAAEnyC,EAAEC,GAAGxU,EAAE42B,IAAIriB,EAAE,OACtV,IAAIqjF,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAI1X,IAAI2X,GAAG,IAAI3X,IAAI4X,GAAG,GAAGC,GAAG,0QAA0Q3nF,MAAM,KAAK4nF,GAAG,gHAAgH5nF,MAAM,KAC3X,SAAS6nF,GAAGlkF,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,MAAM,CAACgqF,UAAUnkF,EAAEyiF,aAAaxiF,EAAE6iF,iBAAmB,GAAFr3F,EAAKi3F,YAAYvoF,EAAEsM,UAAU/a,GAC1M,SAAS04F,GAAGpkF,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,IAAK,OAAO0jF,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGQ,OAAOpkF,EAAEqkF,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBR,GAAGO,OAAOpkF,EAAEqkF,YAAY,SAASC,GAAGvkF,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAG,OAAG,OAAOzsB,GAAGA,EAAE0iF,cAAcj2D,GAASzsB,EAAEkkF,GAAGjkF,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAG,OAAOxsB,IAAY,QAARA,EAAEukF,GAAGvkF,KAAaqjF,GAAGrjF,IAAID,IAAEA,EAAE8iF,kBAAkBp3F,EAASsU,GAEhc,SAASykF,GAAGzkF,GAAG,IAAIC,EAAEgjF,GAAGjjF,EAAE9P,QAAQ,GAAG,OAAO+P,EAAE,CAAC,IAAIxU,EAAEu1F,GAAG/gF,GAAG,GAAG,OAAOxU,EAAE,GAAW,MAARwU,EAAExU,EAAEsf,MAAY,GAAW,QAAR9K,EAAEkhF,GAAG11F,IAAoF,OAAvEuU,EAAEmkF,UAAUlkF,OAAE/T,EAAEw4F,yBAAyB1kF,EAAE2kF,UAAS,WAAWpB,GAAG93F,WAAkB,GAAG,IAAIwU,GAAGxU,EAAE8uF,UAAUqK,QAA8D,YAArD5kF,EAAEmkF,UAAU,IAAI14F,EAAEsf,IAAItf,EAAE8uF,UAAUyI,cAAc,MAAahjF,EAAEmkF,UAAU,KAAK,SAASU,GAAG7kF,GAAG,GAAG,OAAOA,EAAEmkF,UAAU,OAAM,EAAG,IAAIlkF,EAAE6kF,GAAG9kF,EAAEyiF,aAAaziF,EAAE8iF,iBAAiB9iF,EAAEyG,UAAUzG,EAAE0iF,aAAa,GAAG,OAAOziF,EAAE,CAAC,IAAIxU,EAAE+4F,GAAGvkF,GAAiC,OAA9B,OAAOxU,GAAG63F,GAAG73F,GAAGuU,EAAEmkF,UAAUlkF,GAAQ,EAAG,OAAM,EAC1e,SAAS8kF,GAAG/kF,EAAEC,EAAExU,GAAGo5F,GAAG7kF,IAAIvU,EAAE44F,OAAOpkF,GAAG,SAAS+kF,KAAK,IAAIxB,IAAG,EAAG,EAAEC,GAAGrzF,QAAQ,CAAC,IAAI4P,EAAEyjF,GAAG,GAAG,GAAG,OAAOzjF,EAAEmkF,UAAU,CAAmB,QAAlBnkF,EAAEwkF,GAAGxkF,EAAEmkF,aAAqBd,GAAGrjF,GAAG,MAAM,IAAIC,EAAE6kF,GAAG9kF,EAAEyiF,aAAaziF,EAAE8iF,iBAAiB9iF,EAAEyG,UAAUzG,EAAE0iF,aAAa,OAAOziF,EAAED,EAAEmkF,UAAUlkF,EAAEwjF,GAAGnxD,QAAQ,OAAOoxD,IAAImB,GAAGnB,MAAMA,GAAG,MAAM,OAAOC,IAAIkB,GAAGlB,MAAMA,GAAG,MAAM,OAAOC,IAAIiB,GAAGjB,MAAMA,GAAG,MAAMC,GAAGvzF,QAAQy0F,IAAIjB,GAAGxzF,QAAQy0F,IAAI,SAASE,GAAGjlF,EAAEC,GAAGD,EAAEmkF,YAAYlkF,IAAID,EAAEmkF,UAAU,KAAKX,KAAKA,IAAG,EAAGt3F,EAAEg5F,0BAA0Bh5F,EAAEi5F,wBAAwBH,MACze,SAASI,GAAGplF,GAAG,SAASC,EAAEA,GAAG,OAAOglF,GAAGhlF,EAAED,GAAG,GAAG,EAAEyjF,GAAGrzF,OAAO,CAAC60F,GAAGxB,GAAG,GAAGzjF,GAAG,IAAI,IAAIvU,EAAE,EAAEA,EAAEg4F,GAAGrzF,OAAO3E,IAAI,CAAC,IAAIC,EAAE+3F,GAAGh4F,GAAGC,EAAEy4F,YAAYnkF,IAAItU,EAAEy4F,UAAU,OAA+F,IAAxF,OAAOT,IAAIuB,GAAGvB,GAAG1jF,GAAG,OAAO2jF,IAAIsB,GAAGtB,GAAG3jF,GAAG,OAAO4jF,IAAIqB,GAAGrB,GAAG5jF,GAAG6jF,GAAGvzF,QAAQ2P,GAAG6jF,GAAGxzF,QAAQ2P,GAAOxU,EAAE,EAAEA,EAAEs4F,GAAG3zF,OAAO3E,KAAIC,EAAEq4F,GAAGt4F,IAAK04F,YAAYnkF,IAAItU,EAAEy4F,UAAU,MAAM,KAAK,EAAEJ,GAAG3zF,QAAiB,QAAR3E,EAAEs4F,GAAG,IAAYI,WAAYM,GAAGh5F,GAAG,OAAOA,EAAE04F,WAAWJ,GAAGzxD,QAC/X,IAAI+yD,GAAG,GAAGC,GAAG,IAAInZ,IAAIoZ,GAAG,IAAIpZ,IAAIqZ,GAAG,CAAC,QAAQ,QAAQ9E,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,YAAY,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UACpf,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAAS4E,GAAGzlF,EAAEC,GAAG,IAAI,IAAIxU,EAAE,EAAEA,EAAEuU,EAAE5P,OAAO3E,GAAG,EAAE,CAAC,IAAIC,EAAEsU,EAAEvU,GAAG0O,EAAE6F,EAAEvU,EAAE,GAAGghC,EAAE,MAAMtyB,EAAE,GAAG0hF,cAAc1hF,EAAEjM,MAAM,IAAIu+B,EAAE,CAACmtD,wBAAwB,CAAC8L,QAAQj5D,EAAEk5D,SAASl5D,EAAE,WAAWutD,aAAa,CAACtuF,GAAGk6F,cAAc3lF,GAAGslF,GAAGljE,IAAI32B,EAAEuU,GAAGqlF,GAAGjjE,IAAI32B,EAAE+gC,GAAG44D,GAAGlrF,GAAGsyB,GACzVg5D,GAAG,6iBAA6iBppF,MAAM,KAAK,GAC3jBopF,GAAG,oRAAoRppF,MAAM,KAAK,GAAGopF,GAAGD,GAAG,GAAG,IAAI,IAAIK,GAAG,qFAAqFxpF,MAAM,KAAKypF,GAAG,EAAEA,GAAGD,GAAGz1F,OAAO01F,KAAKP,GAAGljE,IAAIwjE,GAAGC,IAAI,GAC9b,IAAIC,GAAG75F,EAAE85F,8BAA8BC,GAAG/5F,EAAEw4F,yBAAyBwB,IAAG,EAAG,SAAS/zC,GAAEnyC,EAAEC,GAAGmjF,GAAGnjF,EAAED,GAAE,GAAI,SAASojF,GAAGpjF,EAAEC,EAAExU,GAAG,IAAIC,EAAE65F,GAAGt5F,IAAIgU,GAAG,YAAO,IAASvU,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAEy6F,GAAGv5F,KAAK,KAAKqT,EAAE,EAAED,GAAG,MAAM,KAAK,EAAEtU,EAAE06F,GAAGx5F,KAAK,KAAKqT,EAAE,EAAED,GAAG,MAAM,QAAQtU,EAAE2G,GAAGzF,KAAK,KAAKqT,EAAE,EAAED,GAAGvU,EAAEuU,EAAEmL,iBAAiBlL,EAAEvU,GAAE,GAAIsU,EAAEmL,iBAAiBlL,EAAEvU,GAAE,GAAI,SAASy6F,GAAGnmF,EAAEC,EAAExU,EAAEC,GAAGovF,GAAIF,IAAK,IAAIzgF,EAAE9H,GAAGo6B,EAAEquD,EAAGA,GAAG,EAAG,IAAIH,EAAGxgF,EAAE6F,EAAEC,EAAExU,EAAEC,GAAf,SAA2BovF,EAAGruD,IAAIuuD,KAAM,SAASoL,GAAGpmF,EAAEC,EAAExU,EAAEC,GAAGu6F,GAAGF,GAAG1zF,GAAGzF,KAAK,KAAKoT,EAAEC,EAAExU,EAAEC,IACpc,SAAS2G,GAAG2N,EAAEC,EAAExU,EAAEC,GAAG,GAAGw6F,GAAG,GAAG,EAAEzC,GAAGrzF,SAAS,EAAE4zF,GAAGnmF,QAAQmC,GAAGA,EAAEkkF,GAAG,KAAKlkF,EAAEC,EAAExU,EAAEC,GAAG+3F,GAAGx1F,KAAK+R,OAAO,CAAC,IAAI7F,EAAE2qF,GAAG9kF,EAAEC,EAAExU,EAAEC,GAAG,GAAG,OAAOyO,EAAEiqF,GAAGpkF,EAAEtU,QAAQ,IAAI,EAAEs4F,GAAGnmF,QAAQmC,GAAGA,EAAEkkF,GAAG/pF,EAAE6F,EAAEC,EAAExU,EAAEC,GAAG+3F,GAAGx1F,KAAK+R,QAAQ,IAT9L,SAAYA,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,OAAO8F,GAAG,IAAK,QAAQ,OAAOyjF,GAAGa,GAAGb,GAAG1jF,EAAEC,EAAExU,EAAEC,EAAEyO,IAAG,EAAG,IAAK,YAAY,OAAOwpF,GAAGY,GAAGZ,GAAG3jF,EAAEC,EAAExU,EAAEC,EAAEyO,IAAG,EAAG,IAAK,YAAY,OAAOypF,GAAGW,GAAGX,GAAG5jF,EAAEC,EAAExU,EAAEC,EAAEyO,IAAG,EAAG,IAAK,cAAc,IAAIsyB,EAAEtyB,EAAEmqF,UAAkD,OAAxCT,GAAGxhE,IAAIoK,EAAE83D,GAAGV,GAAG53F,IAAIwgC,IAAI,KAAKzsB,EAAEC,EAAExU,EAAEC,EAAEyO,KAAU,EAAG,IAAK,oBAAoB,OAAOsyB,EAAEtyB,EAAEmqF,UAAUR,GAAGzhE,IAAIoK,EAAE83D,GAAGT,GAAG73F,IAAIwgC,IAAI,KAAKzsB,EAAEC,EAAExU,EAAEC,EAAEyO,KAAI,EAAG,OAAM,EAS7JksF,CAAGlsF,EAAE6F,EAAEC,EAAExU,EAAEC,GAAG,CAAC04F,GAAGpkF,EAAEtU,GAAGsU,EAAE6iF,GAAG7iF,EAAEtU,EAAE,KAAKuU,GAAG,IAAIg7E,EAAG8H,GAAG/iF,GAAV,QAAqBwiF,GAAGxiF,MAClQ,SAAS8kF,GAAG9kF,EAAEC,EAAExU,EAAEC,GAAmB,GAAG,QAAXD,EAAEw3F,GAAVx3F,EAAE22F,GAAG12F,KAAuB,CAAC,IAAIyO,EAAE6mF,GAAGv1F,GAAG,GAAG,OAAO0O,EAAE1O,EAAE,SAAS,CAAC,IAAIghC,EAAEtyB,EAAE4Q,IAAI,GAAG,KAAK0hB,EAAE,CAAS,GAAG,QAAXhhC,EAAE01F,GAAGhnF,IAAe,OAAO1O,EAAEA,EAAE,UAAU,GAAG,IAAIghC,EAAE,CAAC,GAAGtyB,EAAEogF,UAAUqK,QAAQ,OAAO,IAAIzqF,EAAE4Q,IAAI5Q,EAAEogF,UAAUyI,cAAc,KAAKv3F,EAAE,UAAU0O,IAAI1O,IAAIA,EAAE,OAAOuU,EAAE6iF,GAAG7iF,EAAEtU,EAAED,EAAEwU,GAAG,IAAIg7E,EAAG8H,GAAG/iF,GAAV,QAAqBwiF,GAAGxiF,GAAG,OAAO,KACpT,IAAIsmF,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGlrB,aAAY,EAAGmrB,SAAQ,EAAGl8D,MAAK,EAAGm8D,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGhxE,YAAW,EAAGixE,WAAU,EAAG/wE,YAAW,EAAGouB,SAAQ,EAAG+d,OAAM,EAAG6kC,SAAQ,EAAGn2E,SAAQ,EAAGo2E,QAAO,EAAGp3B,QAAO,EAAGq3B,MAAK,EAAGC,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG1oF,EAAEC,EAAExU,GAAG,OAAO,MAAMwU,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGxU,GAAG,kBAAkBwU,GAAG,IAAIA,GAAGqmF,GAAGr5F,eAAe+S,IAAIsmF,GAAGtmF,IAAI,GAAGC,GAAG4sB,OAAO5sB,EAAE,KAC9Z,SAAS0oF,GAAG3oF,EAAEC,GAAa,IAAI,IAAIxU,KAAlBuU,EAAEA,EAAE6S,MAAmB5S,EAAE,GAAGA,EAAEhT,eAAexB,GAAG,CAAC,IAAIC,EAAE,IAAID,EAAEoS,QAAQ,MAAM1D,EAAEuuF,GAAGj9F,EAAEwU,EAAExU,GAAGC,GAAG,UAAUD,IAAIA,EAAE,YAAYC,EAAEsU,EAAE4oF,YAAYn9F,EAAE0O,GAAG6F,EAAEvU,GAAG0O,GADTrO,OAAO6C,KAAK23F,IAAIh2F,SAAQ,SAAS0P,GAAGyoF,GAAGn4F,SAAQ,SAAS2P,GAAGA,EAAEA,EAAED,EAAEglD,OAAO,GAAG62B,cAAc77E,EAAE5D,UAAU,GAAGkqF,GAAGrmF,GAAGqmF,GAAGtmF,SACrG,IAAI6oF,GAAGh8F,EAAE,CAACi8F,UAAS,GAAI,CAACC,MAAK,EAAGviB,MAAK,EAAGwiB,IAAG,EAAGr8C,KAAI,EAAGs8C,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAG54E,OAAM,EAAG64E,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAGl5F,QAAO,EAAGm5F,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG1pF,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG4oF,GAAG7oF,KAAK,MAAMC,EAAE8U,UAAU,MAAM9U,EAAE4U,yBAAyB,MAAM/e,MAAMk7E,EAAE,IAAIhxE,EAAE,KAAK,GAAG,MAAMC,EAAE4U,wBAAwB,CAAC,GAAG,MAAM5U,EAAE8U,SAAS,MAAMjf,MAAMk7E,EAAE,KAAK,GAAK,kBAAkB/wE,EAAE4U,2BAAyB,WAAW5U,EAAE4U,yBAAyB,MAAM/e,MAAMk7E,EAAE,KAAM,GAAG,MAAM/wE,EAAE4S,OAAO,kBAAkB5S,EAAE4S,MAAM,MAAM/c,MAAMk7E,EAAE,GAAG,MAClW,SAAS2Y,GAAG3pF,EAAEC,GAAG,IAAI,IAAID,EAAEnC,QAAQ,KAAK,MAAM,kBAAkBoC,EAAE2pF,GAAG,OAAO5pF,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAAI,IAAI6pF,GAAGvK,GAAQ,SAASwK,GAAG9pF,EAAEC,GAAuD,IAAIxU,EAAEs1F,GAA1D/gF,EAAE,IAAIA,EAAE8tE,UAAU,KAAK9tE,EAAE8tE,SAAS9tE,EAAEA,EAAEo4D,eAA0Bn4D,EAAE85E,EAAG95E,GAAG,IAAI,IAAIvU,EAAE,EAAEA,EAAEuU,EAAE7P,OAAO1E,IAAIw3F,GAAGjjF,EAAEvU,GAAGsU,EAAEvU,GAAG,SAASs+F,MAC5a,SAAS5/B,GAAGnqD,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqByE,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOzE,EAAEugB,eAAevgB,EAAEsgB,KAAK,MAAMrgB,GAAG,OAAOD,EAAEsgB,MAAM,SAAS0pE,GAAGhqF,GAAG,KAAKA,GAAGA,EAAE8tB,YAAY9tB,EAAEA,EAAE8tB,WAAW,OAAO9tB,EAAE,SAASiqF,GAAGjqF,EAAEC,GAAG,IAAwBvU,EAApBD,EAAEu+F,GAAGhqF,GAAO,IAAJA,EAAE,EAAYvU,GAAG,CAAC,GAAG,IAAIA,EAAEqiF,SAAS,CAA0B,GAAzBpiF,EAAEsU,EAAEvU,EAAE0b,YAAY/W,OAAU4P,GAAGC,GAAGvU,GAAGuU,EAAE,MAAM,CAACsK,KAAK9e,EAAEolB,OAAO5Q,EAAED,GAAGA,EAAEtU,EAAEsU,EAAE,CAAC,KAAKvU,GAAG,CAAC,GAAGA,EAAE+rD,YAAY,CAAC/rD,EAAEA,EAAE+rD,YAAY,MAAMx3C,EAAEvU,EAAEA,EAAE4vB,WAAW5vB,OAAE,EAAOA,EAAEu+F,GAAGv+F,IAC3P,SAASy+F,KAAK,IAAI,IAAIlqF,EAAE5F,OAAO6F,EAAEkqD,KAAKlqD,aAAaD,EAAEmqF,mBAAmB,CAAC,IAAI,IAAI1+F,EAAE,kBAAkBwU,EAAEmqF,cAAcC,SAAS5gD,KAAK,MAAM/9C,GAAGD,GAAE,EAAG,IAAGA,EAAyB,MAAMwU,EAAEkqD,IAA/BnqD,EAAEC,EAAEmqF,eAAgC3lF,UAAU,OAAOxE,EAC5Y,SAASqqF,GAAGtqF,GAAG,IAAIC,EAAED,GAAGA,EAAEkH,UAAUlH,EAAEkH,SAASjD,cAAc,OAAOhE,IAAI,UAAUA,IAAI,SAASD,EAAE/B,MAAM,WAAW+B,EAAE/B,MAAM,QAAQ+B,EAAE/B,MAAM,QAAQ+B,EAAE/B,MAAM,aAAa+B,EAAE/B,OAAO,aAAagC,GAAG,SAASD,EAAE29C,iBAAiB,IAAmC4sC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGzqF,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAEgT,UAAU,OAAM,EAC7X,SAASy3E,GAAG1qF,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,kBAAkBC,EAAE8U,UAAU,kBAAkB9U,EAAE8U,UAAU,kBAAkB9U,EAAE4U,yBAAyB,OAAO5U,EAAE4U,yBAAyB,MAAM5U,EAAE4U,wBAAwBC,OAAO,IAAI61E,GAAG,oBAAoB/+E,WAAWA,gBAAW,EAAOg/E,GAAG,oBAAoBv9D,aAAaA,kBAAa,EAAO,SAASw9D,GAAG7qF,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEw3C,YAAY,CAAC,IAAIv3C,EAAED,EAAE8tE,SAAS,GAAG,IAAI7tE,GAAG,IAAIA,EAAE,MAAM,OAAOD,EAClc,SAAS8qF,GAAG9qF,GAAGA,EAAEA,EAAEoiD,gBAAgB,IAAI,IAAIniD,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE8tE,SAAS,CAAC,IAAIriF,EAAEuU,EAAE8H,KAAK,GAFgJ,MAE7Irc,GAFoK,OAE5JA,GAFoJ,OAE5IA,EAAO,CAAC,GAAG,IAAIwU,EAAE,OAAOD,EAAEC,QAF0G,OAEjGxU,GAAQwU,IAAID,EAAEA,EAAEoiD,gBAAgB,OAAO,KAAK,IAAI2oC,GAAGx7F,KAAK4M,SAAShO,SAAS,IAAID,MAAM,GAAG88F,GAAG,2BAA2BD,GAAGE,GAAG,wBAAwBF,GAAGG,GAAG,qBAAqBH,GACvT,SAAS9H,GAAGjjF,GAAG,IAAIC,EAAED,EAAEgrF,IAAI,GAAG/qF,EAAE,OAAOA,EAAE,IAAI,IAAIxU,EAAEuU,EAAEqb,WAAW5vB,GAAG,CAAC,GAAGwU,EAAExU,EAAEy/F,KAAKz/F,EAAEu/F,IAAI,CAAe,GAAdv/F,EAAEwU,EAAEghF,UAAa,OAAOhhF,EAAEi0C,OAAO,OAAOzoD,GAAG,OAAOA,EAAEyoD,MAAM,IAAIl0C,EAAE8qF,GAAG9qF,GAAG,OAAOA,GAAG,CAAC,GAAGvU,EAAEuU,EAAEgrF,IAAI,OAAOv/F,EAAEuU,EAAE8qF,GAAG9qF,GAAG,OAAOC,EAAMxU,GAAJuU,EAAEvU,GAAM4vB,WAAW,OAAO,KAAK,SAASmpE,GAAGxkF,GAAkB,QAAfA,EAAEA,EAAEgrF,KAAKhrF,EAAEkrF,MAAc,IAAIlrF,EAAE+K,KAAK,IAAI/K,EAAE+K,KAAK,KAAK/K,EAAE+K,KAAK,IAAI/K,EAAE+K,IAAI,KAAK/K,EAAE,SAASmrF,GAAGnrF,GAAG,GAAG,IAAIA,EAAE+K,KAAK,IAAI/K,EAAE+K,IAAI,OAAO/K,EAAEu6E,UAAU,MAAMzkF,MAAMk7E,EAAE,KAAM,SAASoa,GAAGprF,GAAG,OAAOA,EAAEirF,KAAK,KAClb,SAASI,GAAGrrF,GAAG,GAAGA,EAAEA,EAAE49E,aAAa59E,GAAG,IAAIA,EAAE+K,KAAK,OAAO/K,GAAI,KAC5D,SAASsrF,GAAGtrF,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEu6E,UAAU,IAAI9uF,EAAE,OAAO,KAAK,IAAIC,EAAEstF,EAAGvtF,GAAG,IAAIC,EAAE,OAAO,KAAKD,EAAEC,EAAEuU,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,gBAAgBvU,GAAGA,EAAEwnB,YAAqBxnB,IAAI,YAAbsU,EAAEA,EAAE/B,OAAuB,UAAU+B,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGtU,EAAE,MAAMsU,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGvU,GAAG,oBAAoBA,EAAE,MAAMqK,MAAMk7E,EAAE,IACjgB/wE,SAASxU,IAAI,OAAOA,EAAE,SAAS8/F,GAAGvrF,EAAEC,EAAExU,IAAMwU,EAAEqrF,GAAGtrF,EAAEvU,EAAE+/F,eAAe5R,wBAAwB35E,OAAIxU,EAAEq2F,mBAAmBJ,GAAGj2F,EAAEq2F,mBAAmB7hF,GAAGxU,EAAEs2F,mBAAmBL,GAAGj2F,EAAEs2F,mBAAmB/hF,IAAG,SAASyrF,GAAGzrF,GAAG,GAAGA,GAAGA,EAAEwrF,eAAe5R,wBAAwB,CAAC,IAAI,IAAI35E,EAAED,EAAE0rF,YAAYjgG,EAAE,GAAGwU,GAAGxU,EAAEwC,KAAKgS,GAAGA,EAAEorF,GAAGprF,GAAG,IAAIA,EAAExU,EAAE2E,OAAO,EAAE6P,KAAKsrF,GAAG9/F,EAAEwU,GAAG,WAAWD,GAAG,IAAIC,EAAE,EAAEA,EAAExU,EAAE2E,OAAO6P,IAAIsrF,GAAG9/F,EAAEwU,GAAG,UAAUD,IACtY,SAAS2rF,GAAG3rF,EAAEC,EAAExU,GAAGuU,GAAGvU,GAAGA,EAAE+/F,eAAe3R,mBAAmB55E,EAAEqrF,GAAGtrF,EAAEvU,EAAE+/F,eAAe3R,qBAAqBpuF,EAAEq2F,mBAAmBJ,GAAGj2F,EAAEq2F,mBAAmB7hF,GAAGxU,EAAEs2F,mBAAmBL,GAAGj2F,EAAEs2F,mBAAmB/hF,IAAI,SAAS4rF,GAAG5rF,GAAGA,GAAGA,EAAEwrF,eAAe3R,kBAAkB8R,GAAG3rF,EAAE0rF,YAAY,KAAK1rF,GAAG,SAAS6rF,GAAG7rF,GAAG2hF,GAAG3hF,EAAEyrF,IAAI,IAAIK,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxU,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIhsF,EAAkBtU,EAAhBuU,EAAE8rF,GAAGtgG,EAAEwU,EAAE7P,OAAS+J,EAAE,UAAU2xF,GAAGA,GAAGz/F,MAAMy/F,GAAG3kF,YAAYslB,EAAEtyB,EAAE/J,OAAO,IAAI4P,EAAE,EAAEA,EAAEvU,GAAGwU,EAAED,KAAK7F,EAAE6F,GAAGA,KAAK,IAAI/F,EAAExO,EAAEuU,EAAE,IAAItU,EAAE,EAAEA,GAAGuO,GAAGgG,EAAExU,EAAEC,KAAKyO,EAAEsyB,EAAE/gC,GAAGA,KAAK,OAAOsgG,GAAG7xF,EAAEjM,MAAM8R,EAAE,EAAEtU,EAAE,EAAEA,OAAE,GAAQ,SAASwgG,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EAClQ,SAAStX,GAAE70E,EAAEC,EAAExU,EAAEC,GAA4F,IAAI,IAAIyO,KAAjGD,KAAKsxF,eAAexrF,EAAE9F,KAAKwxF,YAAYzrF,EAAE/F,KAAKwoF,YAAYj3F,EAAEuU,EAAE9F,KAAKN,YAAYwyF,UAAyBpsF,EAAE/S,eAAekN,MAAM8F,EAAED,EAAE7F,IAAID,KAAKC,GAAG8F,EAAExU,GAAG,WAAW0O,EAAED,KAAKhK,OAAOxE,EAAEwO,KAAKC,GAAG1O,EAAE0O,IAAgI,OAA5HD,KAAKmyF,oBAAoB,MAAM5gG,EAAE6gG,iBAAiB7gG,EAAE6gG,kBAAiB,IAAK7gG,EAAE8gG,aAAaL,GAAGC,GAAGjyF,KAAK8nF,qBAAqBmK,GAAUjyF,KAGrF,SAASsyF,GAAGxsF,EAAEC,EAAExU,EAAEC,GAAG,GAAGwO,KAAKuyF,UAAUr8F,OAAO,CAAC,IAAI+J,EAAED,KAAKuyF,UAAUzhE,MAA2B,OAArB9wB,KAAK3O,KAAK4O,EAAE6F,EAAEC,EAAExU,EAAEC,GAAUyO,EAAE,OAAO,IAAID,KAAK8F,EAAEC,EAAExU,EAAEC,GAC7X,SAASghG,GAAG1sF,GAAG,KAAKA,aAAa9F,MAAM,MAAMpE,MAAMk7E,EAAE,MAAMhxE,EAAE2sF,aAAa,GAAGzyF,KAAKuyF,UAAUr8F,QAAQ8J,KAAKuyF,UAAUx+F,KAAK+R,GAAG,SAASk9B,GAAGl9B,GAAGA,EAAEysF,UAAU,GAAGzsF,EAAE4sF,UAAUJ,GAAGxsF,EAAEkiF,QAAQwK,GAHlL7/F,EAAEgoF,GAAE7nF,UAAU,CAAC0sB,eAAe,WAAWxf,KAAKoyF,kBAAiB,EAAG,IAAItsF,EAAE9F,KAAKwoF,YAAY1iF,IAAIA,EAAE0Z,eAAe1Z,EAAE0Z,iBAAiB,mBAAmB1Z,EAAEusF,cAAcvsF,EAAEusF,aAAY,GAAIryF,KAAKmyF,mBAAmBH,KAAK7uE,gBAAgB,WAAW,IAAIrd,EAAE9F,KAAKwoF,YAAY1iF,IAAIA,EAAEqd,gBAAgBrd,EAAEqd,kBAAkB,mBAAmBrd,EAAE6sF,eAAe7sF,EAAE6sF,cAAa,GAAI3yF,KAAK8nF,qBAAqBkK,KAAKY,QAAQ,WAAW5yF,KAAK+nF,aAAaiK,IAAIjK,aAAakK,GAAGQ,WAAW,WAAW,IACpd1sF,EADwdD,EAAE9F,KAAKN,YAAYwyF,UACze,IAAInsF,KAAKD,EAAE9F,KAAK+F,GAAG,KAAK/F,KAAKwoF,YAAYxoF,KAAKwxF,YAAYxxF,KAAKsxF,eAAe,KAAKtxF,KAAK8nF,qBAAqB9nF,KAAKmyF,mBAAmBF,GAAGjyF,KAAK6nF,mBAAmB7nF,KAAK4nF,mBAAmB,QAAQjN,GAAEuX,UAAU,CAACnuF,KAAK,KAAK/N,OAAO,KAAK+mE,cAAc,WAAW,OAAO,MAAM81B,WAAW,KAAKC,QAAQ,KAAKC,WAAW,KAAKC,UAAU,SAASltF,GAAG,OAAOA,EAAEktF,WAAWl8E,KAAKm8E,OAAOb,iBAAiB,KAAKc,UAAU,MAC9YvY,GAAEtvE,OAAO,SAASvF,GAAG,SAASC,KAAK,SAASxU,IAAI,OAAOC,EAAEsE,MAAMkK,KAAK/J,WAAW,IAAIzE,EAAEwO,KAAK+F,EAAEjT,UAAUtB,EAAEsB,UAAU,IAAImN,EAAE,IAAI8F,EAAmH,OAAjHpT,EAAEsN,EAAE1O,EAAEuB,WAAWvB,EAAEuB,UAAUmN,EAAE1O,EAAEuB,UAAU4M,YAAYnO,EAAEA,EAAE2gG,UAAUv/F,EAAE,GAAGnB,EAAE0gG,UAAUpsF,GAAGvU,EAAE8Z,OAAO7Z,EAAE6Z,OAAO23B,GAAGzxC,GAAUA,GAAGyxC,GAAG23C,IACvE,IAAIwY,GAAGxY,GAAEtvE,OAAO,CAACuC,KAAK,OAAOwlF,GAAGzY,GAAEtvE,OAAO,CAACuC,KAAK,OAAOylF,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGtT,GAAI,qBAAqB9/E,OAAOqzF,GAAG,KAAKvT,GAAI,iBAAiBz1E,WAAWgpF,GAAGhpF,SAASipF,cAClV,IAAIC,GAAGzT,GAAI,cAAc9/E,SAASqzF,GAAGp1E,GAAG6hE,KAAMsT,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIG,GAAG1+E,OAAOU,aAAa,IAAIi+E,GAAG,CAACC,YAAY,CAAClU,wBAAwB,CAAC8L,QAAQ,gBAAgBC,SAAS,wBAAwB3L,aAAa,CAAC,iBAAiB,WAAW,YAAY,UAAU+T,eAAe,CAACnU,wBAAwB,CAAC8L,QAAQ,mBAAmBC,SAAS,2BAA2B3L,aAAa,uDAAuD39E,MAAM,MAAM2xF,iBAAiB,CAACpU,wBAAwB,CAAC8L,QAAQ,qBAC7eC,SAAS,6BAA6B3L,aAAa,yDAAyD39E,MAAM,MAAM4xF,kBAAkB,CAACrU,wBAAwB,CAAC8L,QAAQ,sBAAsBC,SAAS,8BAA8B3L,aAAa,0DAA0D39E,MAAM,OAAO6xF,IAAG,EAChU,SAASC,GAAGnuF,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAIutF,GAAG1vF,QAAQoC,EAAEigB,SAAS,IAAK,UAAU,OAAO,MAAMjgB,EAAEigB,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO,OAAM,EAAG,QAAQ,OAAM,GAAI,SAAShP,GAAGlR,GAAc,MAAM,kBAAjBA,EAAEA,EAAEguE,SAAkC,SAAShuE,EAAEA,EAAE8H,KAAK,KAAK,IAAIsmF,IAAG,EAE1Q,IAAIC,GAAG,CAAC3U,WAAWmU,GAAGpU,cAAc,SAASz5E,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAE,GAAGqzF,GAAGvtF,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIysB,EAAEohE,GAAGG,iBAAiB,MAAM/tF,EAAE,IAAK,iBAAiBwsB,EAAEohE,GAAGE,eAAe,MAAM9tF,EAAE,IAAK,oBAAoBwsB,EAAEohE,GAAGI,kBAAkB,MAAMhuF,EAAEwsB,OAAE,OAAY2hE,GAAGD,GAAGnuF,EAAEvU,KAAKghC,EAAEohE,GAAGE,gBAAgB,YAAY/tF,GAAG,MAAMvU,EAAEy0B,UAAUuM,EAAEohE,GAAGG,kBAClL,OADoMvhE,GAAGpU,IAAI,OAAO5sB,EAAE0wE,SAASiyB,IAAI3hE,IAAIohE,GAAGG,iBAAiBvhE,IAAIohE,GAAGE,gBAAgBK,KAAKj0F,EAAE8xF,OAAYF,GAAG,UAARD,GAAGpgG,GAAkBogG,GAAGz/F,MAAMy/F,GAAG3kF,YAAYinF,IAAG,IAAK3hE,EAAE4gE,GAAGT,UAAUngE,EACzfxsB,EAAExU,EAAEC,GAAGyO,EAAEsyB,EAAE3kB,KAAK3N,EAAW,QAARA,EAAE+W,GAAGzlB,MAAcghC,EAAE3kB,KAAK3N,GAAI0xF,GAAGp/D,GAAGtyB,EAAEsyB,GAAGtyB,EAAE,MAAM6F,EAAE2tF,GAHuM,SAAY3tF,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAOkR,GAAGjR,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAE+c,MAAa,MAAKkxE,IAAG,EAAUN,IAAG,IAAK,YAAY,OAAO5tF,EAAEC,EAAE6H,QAAS8lF,IAAIM,GAAG,KAAKluF,EAAE,QAAQ,OAAO,MAGhYsuF,CAAGtuF,EAAEvU,GAF9E,SAAYuU,EAAEC,GAAG,GAAGmuF,GAAG,MAAM,mBAAmBpuF,IAAIwtF,IAAIW,GAAGnuF,EAAEC,IAAID,EAAEisF,KAAKD,GAAGD,GAAGD,GAAG,KAAKsC,IAAG,EAAGpuF,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAQ,OAAO,KAAK,IAAK,WAAW,KAAKC,EAAEysC,SAASzsC,EAAEsgD,QAAQtgD,EAAE+2D,UAAU/2D,EAAEysC,SAASzsC,EAAEsgD,OAAO,CAAC,GAAGtgD,EAAEqqE,MAAM,EAAErqE,EAAEqqE,KAAKl6E,OAAO,OAAO6P,EAAEqqE,KAAK,GAAGrqE,EAAE+c,MAAM,OAAO9N,OAAOU,aAAa3P,EAAE+c,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAO3E,IAAI,OAAOpY,EAAEk8D,OAAO,KAAKl8D,EAAE6H,KAAK,QAAQ,OAAO,MAEjTymF,CAAGvuF,EAAEvU,MAAKwU,EAAEqtF,GAAGV,UAAUiB,GAAGC,YAAY7tF,EAAExU,EAAEC,IAAKoc,KAAK9H,EAAE6rF,GAAG5rF,IAAIA,EAAE,KAAY,OAAO9F,EAAE8F,EAAE,OAAOA,EAAE9F,EAAE,CAACA,EAAE8F,KAAKuuF,GAAG,CAAC14E,OAAM,EAAGimC,MAAK,EAAG0yC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAGvqB,QAAO,EAAGwqB,UAAS,EAAGngF,OAAM,EAAG2lB,QAAO,EAAGy6D,KAAI,EAAGxpF,MAAK,EAAGypF,MAAK,EAAGC,KAAI,EAAGC,MAAK,GAAI,SAASC,GAAGjvF,GAAG,IAAIC,EAAED,GAAGA,EAAEkH,UAAUlH,EAAEkH,SAASjD,cAAc,MAAM,UAAUhE,IAAIuuF,GAAGxuF,EAAE/B,MAAM,aAAagC,EAC5b,IAAIivF,GAAG,CAACvtE,OAAO,CAACi4D,wBAAwB,CAAC8L,QAAQ,WAAWC,SAAS,mBAAmB3L,aAAa,8DAA8D39E,MAAM,OAAO,SAAS8yF,GAAGnvF,EAAEC,EAAExU,GAA8D,OAA3DuU,EAAE60E,GAAE+X,UAAUsC,GAAGvtE,OAAO3hB,EAAEC,EAAExU,IAAKwS,KAAK,SAASu8E,EAAG/uF,GAAGogG,GAAG7rF,GAAUA,EAAE,IAAIovF,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGtvF,GAAGmiF,GAAGniF,GAAG,SAASuvF,GAAGvvF,GAAe,GAAGm+E,GAATgN,GAAGnrF,IAAY,OAAOA,EAAE,SAASwvF,GAAGxvF,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,EAAE,IAAIwvF,IAAG,EAC9Y,SAASC,KAAKN,KAAKA,GAAGp1B,YAAY,mBAAmB21B,IAAIN,GAAGD,GAAG,MAAM,SAASO,GAAG3vF,GAAG,GAAG,UAAUA,EAAE4zE,cAAc2b,GAAGF,IAAI,GAAGrvF,EAAEmvF,GAAGE,GAAGrvF,EAAEoiF,GAAGpiF,IAAI86E,EAAGqH,GAAGniF,OAAO,CAAC86E,GAAG,EAAG,IAAIJ,EAAG4U,GAAGtvF,GAAV,QAAqB86E,GAAG,EAAGE,MAAO,SAAS4U,GAAG5vF,EAAEC,EAAExU,GAAG,UAAUuU,GAAG0vF,KAAUL,GAAG5jG,GAAR2jG,GAAGnvF,GAAU85D,YAAY,mBAAmB41B,KAAK,SAAS3vF,GAAG0vF,KAAK,SAASG,GAAG7vF,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOuvF,GAAGF,IAAI,SAASS,GAAG9vF,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOuvF,GAAGtvF,GAAG,SAAS8vF,GAAG/vF,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOuvF,GAAGtvF,GAD/Ei6E,IAAKuV,GAAGnN,GAAG,YAAY79E,SAASipF,cAAc,EAAEjpF,SAASipF,eAE1c,IAAIsC,GAAG,CAACtW,WAAWwV,GAAGe,uBAAuBR,GAAGhW,cAAc,SAASz5E,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAE8F,EAAEkrF,GAAGlrF,GAAG7F,OAAOqyB,EAAEtyB,EAAE+M,UAAU/M,EAAE+M,SAASjD,cAAc,GAAG,WAAWwoB,GAAG,UAAUA,GAAG,SAAStyB,EAAE8D,KAAK,IAAIhE,EAAEu1F,QAAQ,GAAGP,GAAG90F,GAAG,GAAGs1F,GAAGx1F,EAAE81F,OAAO,CAAC91F,EAAE41F,GAAG,IAAIziE,EAAEwiE,QAAQnjE,EAAEtyB,EAAE+M,WAAW,UAAUulB,EAAExoB,gBAAgB,aAAa9J,EAAE8D,MAAM,UAAU9D,EAAE8D,QAAQhE,EAAE61F,IAAI,GAAG71F,IAAIA,EAAEA,EAAE+F,EAAEC,IAAI,OAAOkvF,GAAGl1F,EAAExO,EAAEC,GAAG0hC,GAAGA,EAAEptB,EAAE7F,EAAE8F,GAAG,SAASD,IAAIA,EAAE7F,EAAEmkF,gBAAgBt+E,EAAE0+E,YAAY,WAAWvkF,EAAE8D,MAAM4gF,GAAG1kF,EAAE,SAASA,EAAE9N,SAAS6jG,GAAGrb,GAAEtvE,OAAO,CAACqf,KAAK,KAAKopD,OAAO,OACrfmiB,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGxwF,GAAG,IAAIC,EAAE/F,KAAKwoF,YAAY,OAAOziF,EAAEwwF,iBAAiBxwF,EAAEwwF,iBAAiBzwF,MAAIA,EAAEmwF,GAAGnwF,OAAMC,EAAED,GAAM,SAAS0wF,KAAK,OAAOF,GACnM,IAAIG,GAAG,EAAEC,GAAG,EAAEC,IAAG,EAAGC,IAAG,EAAGC,GAAGb,GAAG3qF,OAAO,CAACyrF,QAAQ,KAAKC,QAAQ,KAAKC,QAAQ,KAAKC,QAAQ,KAAK9xC,MAAM,KAAKyH,MAAM,KAAKpa,QAAQ,KAAKvvB,SAAS,KAAKojC,OAAO,KAAKyW,QAAQ,KAAKy5B,iBAAiBC,GAAGr3E,OAAO,KAAK0B,QAAQ,KAAKq2E,cAAc,SAASpxF,GAAG,OAAOA,EAAEoxF,gBAAgBpxF,EAAEqxF,cAAcrxF,EAAE0+C,WAAW1+C,EAAEsxF,UAAUtxF,EAAEqxF,cAAcE,UAAU,SAASvxF,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAEuxF,UAAU,IAAItxF,EAAE0wF,GAAgB,OAAbA,GAAG3wF,EAAEgxF,QAAeH,GAAG,cAAc7wF,EAAE/B,KAAK+B,EAAEgxF,QAAQ/wF,EAAE,GAAG4wF,IAAG,EAAG,IAAIW,UAAU,SAASxxF,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAEwxF,UAC3f,IAAIvxF,EAAE2wF,GAAgB,OAAbA,GAAG5wF,EAAEixF,QAAeH,GAAG,cAAc9wF,EAAE/B,KAAK+B,EAAEixF,QAAQhxF,EAAE,GAAG6wF,IAAG,EAAG,MAAMW,GAAGV,GAAGxrF,OAAO,CAAC++E,UAAU,KAAK1uE,MAAM,KAAKD,OAAO,KAAK+7E,SAAS,KAAKC,mBAAmB,KAAKC,MAAM,KAAKC,MAAM,KAAKC,MAAM,KAAKC,YAAY,KAAKC,UAAU,OAAOC,GAAG,CAACC,WAAW,CAACrY,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAcmY,WAAW,CAACtY,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAcoY,aAAa,CAACvY,iBAAiB,iBAAiBG,aAAa,CAAC,aAAa,gBAAgBqY,aAAa,CAACxY,iBAAiB,iBACjhBG,aAAa,CAAC,aAAa,iBAAiBsY,GAAG,CAAC5Y,WAAWuY,GAAGxY,cAAc,SAASz5E,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,IAAIsyB,EAAE,cAAczsB,GAAG,gBAAgBA,EAAE/F,EAAE,aAAa+F,GAAG,eAAeA,EAAE,GAAGysB,GAAG,KAAO,GAAFtyB,KAAQ1O,EAAE2lG,eAAe3lG,EAAE4lG,eAAep3F,IAAIwyB,EAAE,OAAO,MAAKA,EAAE/gC,EAAE0O,SAAS1O,EAAEA,GAAG+gC,EAAE/gC,EAAE0sE,eAAe3rC,EAAE4rC,aAAa5rC,EAAE8lE,aAAan4F,OAAUH,IAAMA,EAAEgG,EAAgD,QAA9CA,GAAGA,EAAExU,EAAE2lG,eAAe3lG,EAAE6lG,WAAWrO,GAAGhjF,GAAG,QAA8BA,IAAT+gF,GAAG/gF,IAAa,IAAIA,EAAE8K,KAAK,IAAI9K,EAAE8K,OAAI9K,EAAE,OAAWhG,EAAE,KAAK,GAAGA,IAAIgG,EAAE,OAAO,KAAK,GAAG,aAAaD,GAAG,cACzeA,EAAG,IAAI+J,EAAEgnF,GAAO1lG,EAAE4mG,GAAGE,WAAe3mG,EAAEymG,GAAGC,WAAehlG,EAAE,YAAgB,eAAe8S,GAAG,gBAAgBA,IAAE+J,EAAE0nF,GAAGpmG,EAAE4mG,GAAGI,aAAa7mG,EAAEymG,GAAGG,aAAallG,EAAE,WAAgM,GAAtL8S,EAAE,MAAM/F,EAAEwyB,EAAE0+D,GAAGlxF,GAAGwyB,EAAE,MAAMxsB,EAAEwsB,EAAE0+D,GAAGlrF,IAAG5U,EAAE0e,EAAE6iF,UAAUvhG,EAAE4O,EAAExO,EAAEC,IAAKuS,KAAK/Q,EAAE,QAAQ7B,EAAE6E,OAAO8P,EAAE3U,EAAE+lG,cAAc3kE,GAAEhhC,EAAEse,EAAE6iF,UAAUphG,EAAEyU,EAAExU,EAAEC,IAAKuS,KAAK/Q,EAAE,QAAQzB,EAAEyE,OAAOu8B,EAAEhhC,EAAE2lG,cAAcpxF,EAAM9S,EAAE+S,GAANvU,EAAEuO,IAAY/M,EAAE8S,EAAE,CAAa,IAARxU,EAAE0B,EAAE+M,EAAE,EAAM+F,EAAhB+J,EAAEre,EAAkBsU,EAAEA,EAAEqrF,GAAGrrF,GAAG/F,IAAQ,IAAJ+F,EAAE,EAAMC,EAAEzU,EAAEyU,EAAEA,EAAEorF,GAAGprF,GAAGD,IAAI,KAAK,EAAE/F,EAAE+F,GAAG+J,EAAEshF,GAAGthF,GAAG9P,IAAI,KAAK,EAAE+F,EAAE/F,GAAGzO,EAAE6/F,GAAG7/F,GAAGwU,IAAI,KAAK/F,KAAK,CAAC,GAAG8P,IAAIve,GAAGue,IAAIve,EAAEy1F,UAAU,MAAMjhF,EAC3f+J,EAAEshF,GAAGthF,GAAGve,EAAE6/F,GAAG7/F,GAAGue,EAAE,UAAUA,EAAE,KAAS,IAAJve,EAAEue,EAAMA,EAAE,GAAGre,GAAGA,IAAIF,IAAqB,QAAjByO,EAAEvO,EAAEu1F,YAAuBhnF,IAAIzO,IAAQue,EAAE9b,KAAKvC,GAAGA,EAAE2/F,GAAG3/F,GAAG,IAAIA,EAAE,GAAGwB,GAAGA,IAAI1B,IAAqB,QAAjByO,EAAE/M,EAAE+zF,YAAuBhnF,IAAIzO,IAAQE,EAAEuC,KAAKf,GAAGA,EAAEm+F,GAAGn+F,GAAG,IAAIA,EAAE,EAAEA,EAAE6c,EAAE3Z,OAAOlD,IAAIy+F,GAAG5hF,EAAE7c,GAAG,UAAU7B,GAAG,IAAI6B,EAAExB,EAAE0E,OAAO,EAAElD,KAAKy+F,GAAGjgG,EAAEwB,GAAG,WAAWzB,GAAG,OAAO,KAAO,GAAF0O,GAAM,CAAC9O,GAAG,CAACA,EAAEI,KAAqE,IAAI+mG,GAAG,oBAAoB1mG,OAAO89F,GAAG99F,OAAO89F,GAA5G,SAAY5pF,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,GAAoDwyF,GAAG3mG,OAAOkB,UAAUC,eAC7b,SAASylG,GAAG1yF,EAAEC,GAAG,GAAGuyF,GAAGxyF,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIxU,EAAEK,OAAO6C,KAAKqR,GAAGtU,EAAEI,OAAO6C,KAAKsR,GAAG,GAAGxU,EAAE2E,SAAS1E,EAAE0E,OAAO,OAAM,EAAG,IAAI1E,EAAE,EAAEA,EAAED,EAAE2E,OAAO1E,IAAI,IAAI+mG,GAAGlnG,KAAK0U,EAAExU,EAAEC,MAAM8mG,GAAGxyF,EAAEvU,EAAEC,IAAIuU,EAAExU,EAAEC,KAAK,OAAM,EAAG,OAAM,EACpQ,IAAIinG,GAAGzY,GAAI,iBAAiBz1E,UAAU,IAAIA,SAASipF,aAAakF,GAAG,CAAC1+D,OAAO,CAAC0lD,wBAAwB,CAAC8L,QAAQ,WAAWC,SAAS,mBAAmB3L,aAAa,iFAAiF39E,MAAM,OAAOw2F,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC1R,SAASC,GAAGjzF,EAAEC,GAAG,IAAIxU,EAAEwU,EAAE7F,SAAS6F,EAAEA,EAAEwE,SAAS,IAAIxE,EAAE6tE,SAAS7tE,EAAEA,EAAEm4D,cAAc,OAAG46B,IAAI,MAAMH,IAAIA,KAAK1oC,GAAG1+D,GAAU,MAAU,mBAALA,EAAEonG,KAAyBvI,GAAG7+F,GAAGA,EAAE,CAACijB,MAAMjjB,EAAE+kB,eAAe3B,IAAIpjB,EAAEglB,cAAuFhlB,EAAE,CAACynG,YAA3EznG,GAAGA,EAAE2sE,eAAe3sE,EAAE2sE,cAAcC,aAAaj+D,QAAQ8hB,gBAA+Bg3E,WAAWC,aAAa1nG,EAAE0nG,aAAaC,UAAU3nG,EAAE2nG,UAAUC,YAAY5nG,EAAE4nG,aAAqBN,IAAIL,GAAGK,GAAGtnG,GAAG,MAAMsnG,GAAGtnG,GAAEuU,EAAE60E,GAAE+X,UAAUgG,GAAG1+D,OAAO4+D,GAAG9yF,EAAEC,IAAKhC,KAAK,SAAS+B,EAAE9P,OAAO2iG,GAAGhH,GAAG7rF,GAAGA,IAC1d,IAAIszF,GAAG,CAAC5Z,WAAWkZ,GAAGnZ,cAAc,SAASz5E,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAmE,KAAKA,IAArEtyB,EAAEsyB,IAAI/gC,EAAE0O,SAAS1O,EAAEA,EAAE+Y,SAAS,IAAI/Y,EAAEoiF,SAASpiF,EAAEA,EAAE0sE,iBAA0B,CAACp4D,EAAE,CAAC7F,EAAE4mF,GAAG5mF,GAAGsyB,EAAEstD,EAAGwZ,SAAS,IAAI,IAAIt5F,EAAE,EAAEA,EAAEwyB,EAAEr8B,OAAO6J,IAAI,IAAIE,EAAEgpF,IAAI12D,EAAExyB,IAAI,CAACE,GAAE,EAAG,MAAM6F,EAAE7F,GAAE,EAAGsyB,GAAGtyB,EAAE,GAAGsyB,EAAE,OAAO,KAAsB,OAAjBtyB,EAAE8F,EAAEkrF,GAAGlrF,GAAG7F,OAAc4F,GAAG,IAAK,SAAWivF,GAAG90F,IAAI,SAASA,EAAEwjD,mBAAgBk1C,GAAG14F,EAAE24F,GAAG7yF,EAAE8yF,GAAG,MAAK,MAAM,IAAK,OAAOA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAU,OAAOA,IAAG,EAAGC,GAAGxnG,EAAEC,GAAG,IAAK,kBAAkB,GAAGinG,GAAG,MACxf,IAAK,UAAU,IAAK,QAAQ,OAAOM,GAAGxnG,EAAEC,GAAG,OAAO,OAAO8nG,GAAG3e,GAAEtvE,OAAO,CAACkuF,cAAc,KAAKC,YAAY,KAAKC,cAAc,OAAOC,GAAG/e,GAAEtvE,OAAO,CAACsuF,cAAc,SAAS7zF,GAAG,MAAM,kBAAkBA,EAAEA,EAAE6zF,cAAcz5F,OAAOy5F,iBAAiBC,GAAG5D,GAAG3qF,OAAO,CAAC6rF,cAAc,OAAO,SAAS2C,GAAG/zF,GAAG,IAAIC,EAAED,EAAEkgB,QAA+E,MAAvE,aAAalgB,EAAgB,KAAbA,EAAEA,EAAEg0F,WAAgB,KAAK/zF,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EACxY,IAAIi0F,GAAG,CAACC,IAAI,SAASC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAACxuE,EAAE,YAAYuB,EAAE,MAAMC,GAAG,QAAQC,GAAG,QAAQE,GAAG,QAAQvB,GAAG,UAAUC,GAAG,MAAMwB,GAAG,QAAQC,GAAG,WAAW2sE,GAAG,SAASC,GAAG,IAAIC,GAAG,SAASC,GAAG,WAAWC,GAAG,MAAMC,GAAG,OAAOr3B,GAAG,YAAYztB,GAAG,UAAU+kD,GAAG,aAAaC,GAAG,YAAYC,GAAG,SAASC,GAAG,SAASC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAChfC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,MAAMC,IAAI,MAAMC,IAAI,MAAMC,IAAI,UAAUC,IAAI,aAAaC,IAAI,QAAQC,GAAGtG,GAAG3qF,OAAO,CAAC5Y,IAAI,SAASqT,GAAG,GAAGA,EAAErT,IAAI,CAAC,IAAIsT,EAAEg0F,GAAGj0F,EAAErT,MAAMqT,EAAErT,IAAI,GAAG,iBAAiBsT,EAAE,OAAOA,EAAE,MAAM,aAAaD,EAAE/B,KAAc,MAAR+B,EAAE+zF,GAAG/zF,IAAU,QAAQkP,OAAOU,aAAa5P,GAAI,YAAYA,EAAE/B,MAAM,UAAU+B,EAAE/B,KAAK62F,GAAG90F,EAAEkgB,UAAU,eAAe,IAAImqE,SAAS,KAAK39C,QAAQ,KAAKvvB,SAAS,KAAKojC,OAAO,KAAKyW,QAAQ,KAAKtwB,OAAO,KAAKy1B,OAAO,KAAKs0B,iBAAiBC,GAAGsD,SAAS,SAASh0F,GAAG,MAAM,aAC9eA,EAAE/B,KAAK81F,GAAG/zF,GAAG,GAAGkgB,QAAQ,SAASlgB,GAAG,MAAM,YAAYA,EAAE/B,MAAM,UAAU+B,EAAE/B,KAAK+B,EAAEkgB,QAAQ,GAAGlD,MAAM,SAAShd,GAAG,MAAM,aAAaA,EAAE/B,KAAK81F,GAAG/zF,GAAG,YAAYA,EAAE/B,MAAM,UAAU+B,EAAE/B,KAAK+B,EAAEkgB,QAAQ,KAAKu2E,GAAG1F,GAAGxrF,OAAO,CAACmxF,aAAa,OAAOC,GAAGzG,GAAG3qF,OAAO,CAACqxF,QAAQ,KAAKC,cAAc,KAAKljE,eAAe,KAAK4sB,OAAO,KAAKyW,QAAQ,KAAKtqB,QAAQ,KAAKvvB,SAAS,KAAKszE,iBAAiBC,KAAKoG,GAAGjiB,GAAEtvE,OAAO,CAACquE,aAAa,KAAK8f,YAAY,KAAKC,cAAc,OAAOoD,GAAGhG,GAAGxrF,OAAO,CAACyxF,OAAO,SAASh3F,GAAG,MAAM,WAAWA,EAAEA,EAAEg3F,OAAO,gBAClfh3F,GAAGA,EAAEi3F,YAAY,GAAGC,OAAO,SAASl3F,GAAG,MAAM,WAAWA,EAAEA,EAAEk3F,OAAO,gBAAgBl3F,GAAGA,EAAEm3F,YAAY,eAAen3F,GAAGA,EAAEo3F,WAAW,GAAGC,OAAO,KAAKC,UAAU,OAAOC,GAAG,CAAC7d,WAAW2L,GAAG5L,cAAc,SAASz5E,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAEmrF,GAAGr5F,IAAI+T,GAAG,IAAI7F,EAAE,OAAO,KAAK,OAAO6F,GAAG,IAAK,WAAW,GAAG,IAAI+zF,GAAGtoG,GAAG,OAAO,KAAK,IAAK,UAAU,IAAK,QAAQuU,EAAEw2F,GAAG,MAAM,IAAK,OAAO,IAAK,QAAQx2F,EAAE8zF,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIroG,EAAE4tB,OAAO,OAAO,KAAK,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAcrZ,EACniB+wF,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO/wF,EAAEy2F,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAaz2F,EAAE22F,GAAG,MAAM,KAAKjW,GAAG,KAAKC,GAAG,KAAKC,GAAG5gF,EAAEwzF,GAAG,MAAM,KAAK3S,GAAG7gF,EAAE82F,GAAG,MAAM,IAAK,SAAS92F,EAAEkwF,GAAG,MAAM,IAAK,QAAQlwF,EAAE+2F,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ/2F,EAAE4zF,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY5zF,EACzhByxF,GAAG,MAAM,QAAQzxF,EAAE60E,GAA+B,OAANgX,GAAvB5rF,EAAED,EAAE4sF,UAAUzyF,EAAE8F,EAAExU,EAAEC,IAAgBuU,IAAI,GAAGo5E,EAAG,MAAMvjF,MAAMk7E,EAAE,MAAMqI,EAAGvrF,MAAMd,UAAUkB,MAAM3C,KAAK,0HAA0H8Q,MAAM,MAAMk9E,IAAeP,EAAGoS,GAAGnS,EAATuL,GAAetL,EAAGiS,GAAGlR,EAAG,CAACud,kBAAkBD,GAAGE,sBAAsBnF,GAAGoF,kBAAkB1H,GAAG2H,kBAAkBrE,GAAGsE,uBAAuBvJ,KAAK,IAAIwJ,GAAG,GAAGC,IAAI,EAAE,SAAShjB,GAAE90E,GAAG,EAAE83F,KAAK93F,EAAEoR,QAAQymF,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MACtd,SAAS7mB,GAAEjxE,EAAEC,GAAG63F,KAAKD,GAAGC,IAAI93F,EAAEoR,QAAQpR,EAAEoR,QAAQnR,EAAE,IAAI83F,GAAG,GAAGz3D,GAAE,CAAClvB,QAAQ2mF,IAAI5iB,GAAE,CAAC/jE,SAAQ,GAAI4mF,GAAGD,GAAG,SAASE,GAAGj4F,EAAEC,GAAG,IAAIxU,EAAEuU,EAAE/B,KAAK6C,aAAa,IAAIrV,EAAE,OAAOssG,GAAG,IAAIrsG,EAAEsU,EAAEu6E,UAAU,GAAG7uF,GAAGA,EAAEwsG,8CAA8Cj4F,EAAE,OAAOvU,EAAEysG,0CAA0C,IAAS1rE,EAALtyB,EAAE,GAAK,IAAIsyB,KAAKhhC,EAAE0O,EAAEsyB,GAAGxsB,EAAEwsB,GAAoH,OAAjH/gC,KAAIsU,EAAEA,EAAEu6E,WAAY2d,4CAA4Cj4F,EAAED,EAAEm4F,0CAA0Ch+F,GAAUA,EAAE,SAASi7E,GAAEp1E,GAAyB,OAAO,QAA7BA,EAAEA,EAAEY,yBAAmC,IAASZ,EAChf,SAASo4F,KAAKtjB,GAAEK,IAAGL,GAAEx0C,IAAG,SAAS+3D,GAAGr4F,EAAEC,EAAExU,GAAG,GAAG60C,GAAElvB,UAAU2mF,GAAG,MAAMjiG,MAAMk7E,EAAE,MAAMC,GAAE3wC,GAAErgC,GAAGgxE,GAAEkE,GAAE1pF,GAAG,SAAS6sG,GAAGt4F,EAAEC,EAAExU,GAAG,IAAIC,EAAEsU,EAAEu6E,UAAgC,GAAtBv6E,EAAEC,EAAEW,kBAAqB,oBAAoBlV,EAAE6sG,gBAAgB,OAAO9sG,EAAwB,IAAI,IAAI0O,KAA9BzO,EAAEA,EAAE6sG,kBAAiC,KAAKp+F,KAAK6F,GAAG,MAAMlK,MAAMk7E,EAAE,IAAIsM,GAAGr9E,IAAI,UAAU9F,IAAI,OAAOtN,EAAE,GAAGpB,EAAE,GAAGC,GAAG,SAAS8sG,GAAGx4F,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEu6E,YAAYv6E,EAAEy4F,2CAA2CV,GAAGC,GAAG13D,GAAElvB,QAAQ6/D,GAAE3wC,GAAEtgC,GAAGixE,GAAEkE,GAAEA,GAAE/jE,UAAe,EACpb,SAASsnF,GAAG14F,EAAEC,EAAExU,GAAG,IAAIC,EAAEsU,EAAEu6E,UAAU,IAAI7uF,EAAE,MAAMoK,MAAMk7E,EAAE,MAAMvlF,GAAGuU,EAAEs4F,GAAGt4F,EAAEC,EAAE+3F,IAAItsG,EAAE+sG,0CAA0Cz4F,EAAE80E,GAAEK,IAAGL,GAAEx0C,IAAG2wC,GAAE3wC,GAAEtgC,IAAI80E,GAAEK,IAAGlE,GAAEkE,GAAE1pF,GACxJ,IAAIktG,GAAGzsG,EAAEw4F,yBAAyBkU,GAAG1sG,EAAEg5F,0BAA0B2T,GAAG3sG,EAAE4sG,wBAAwBC,GAAG7sG,EAAE8sG,sBAAsBC,GAAG/sG,EAAEgtG,aAAaC,GAAGjtG,EAAEktG,iCAAiCC,GAAGntG,EAAEotG,2BAA2BC,GAAGrtG,EAAE85F,8BAA8BwT,GAAGttG,EAAEi5F,wBAAwBsU,GAAGvtG,EAAEwtG,qBAAqBC,GAAGztG,EAAE0tG,sBAAsBC,GAAG,GAAGC,GAAG5tG,EAAE6tG,qBAAqBC,QAAG,IAASjB,GAAGA,GAAG,aAAakB,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGnB,KAAKoB,GAAG,IAAID,GAAGnB,GAAG,WAAW,OAAOA,KAAKmB,IACvc,SAASE,KAAK,OAAOnB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAM7jG,MAAMk7E,EAAE,OAAQ,SAASupB,GAAGv6F,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOq5F,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAM7jG,MAAMk7E,EAAE,OAAQ,SAASwpB,GAAGx6F,EAAEC,GAAW,OAARD,EAAEu6F,GAAGv6F,GAAU24F,GAAG34F,EAAEC,GAAG,SAASw6F,GAAGz6F,EAAEC,EAAExU,GAAW,OAARuU,EAAEu6F,GAAGv6F,GAAU44F,GAAG54F,EAAEC,EAAExU,GAAG,SAASivG,GAAG16F,GAA8C,OAA3C,OAAOi6F,IAAIA,GAAG,CAACj6F,GAAGk6F,GAAGtB,GAAGS,GAAGsB,KAAKV,GAAGhsG,KAAK+R,GAAU65F,GAAG,SAASe,KAAK,GAAG,OAAOV,GAAG,CAAC,IAAIl6F,EAAEk6F,GAAGA,GAAG,KAAKrB,GAAG74F,GAAG26F,KAC/e,SAASA,KAAK,IAAIR,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIn6F,EAAE,EAAE,IAAI,IAAIC,EAAEg6F,GAAGO,GAAG,IAAG,WAAW,KAAKx6F,EAAEC,EAAE7P,OAAO4P,IAAI,CAAC,IAAIvU,EAAEwU,EAAED,GAAG,GAAGvU,EAAEA,GAAE,SAAU,OAAOA,OAAMwuG,GAAG,KAAK,MAAMxuG,GAAG,MAAM,OAAOwuG,KAAKA,GAAGA,GAAG/rG,MAAM8R,EAAE,IAAI44F,GAAGS,GAAGuB,IAAInvG,EAA3J,QAAsK0uG,IAAG,IAAK,SAASU,GAAG76F,EAAEC,EAAExU,GAAS,OAAO,YAAsC,IAAxB,WAAWuU,EAAEC,EAAE,KAA1CxU,GAAG,IAA6C,IAAMA,EAAE,SAASqvG,GAAG96F,EAAEC,GAAG,GAAGD,GAAGA,EAAEe,aAAyC,IAAI,IAAItV,KAAnCwU,EAAEpT,EAAE,GAAGoT,GAAGD,EAAEA,EAAEe,kBAA4B,IAASd,EAAExU,KAAKwU,EAAExU,GAAGuU,EAAEvU,IAAI,OAAOwU,EAAE,IAAI86F,GAAG,CAAC3pF,QAAQ,MAAM4pF,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,KACle,SAASI,GAAGp7F,GAAG,IAAIC,EAAE86F,GAAG3pF,QAAQ0jE,GAAEimB,IAAI/6F,EAAE/B,KAAKq5E,SAASL,cAAch3E,EAAE,SAASo7F,GAAGr7F,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIvU,EAAEuU,EAAEihF,UAAU,GAAGjhF,EAAEs7F,oBAAoBr7F,EAAED,EAAEs7F,oBAAoBr7F,EAAE,OAAOxU,GAAGA,EAAE6vG,oBAAoBr7F,IAAIxU,EAAE6vG,oBAAoBr7F,OAAQ,MAAG,OAAOxU,GAAGA,EAAE6vG,oBAAoBr7F,GAA+B,MAA7BxU,EAAE6vG,oBAAoBr7F,EAAaD,EAAEA,EAAE49E,QAAQ,SAAS2d,GAAGv7F,EAAEC,GAAG+6F,GAAGh7F,EAAEk7F,GAAGD,GAAG,KAAsB,QAAjBj7F,EAAEA,EAAEg6E,eAAuB,OAAOh6E,EAAEw7F,eAAex7F,EAAEy7F,gBAAgBx7F,IAAIy7F,IAAG,GAAI17F,EAAEw7F,aAAa,MAClc,SAASG,GAAG37F,EAAEC,GAAG,GAAGi7F,KAAKl7F,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAEi7F,GAAGl7F,EAAEC,EAAE,YAAWA,EAAE,CAAC06D,QAAQ36D,EAAE47F,aAAa37F,EAAE3G,KAAK,MAAS,OAAO2hG,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMllG,MAAMk7E,EAAE,MAAMiqB,GAAGh7F,EAAE+6F,GAAGhhB,aAAa,CAACyhB,eAAe,EAAED,aAAav7F,EAAE47F,WAAW,WAAWZ,GAAGA,GAAG3hG,KAAK2G,EAAE,OAAOD,EAAEi3E,cAAc,IAAIvkD,IAAG,EAAG,SAASopE,GAAG97F,GAAGA,EAAE+7F,YAAY,CAACC,UAAUh8F,EAAEohF,cAAc6a,UAAU,KAAKC,OAAO,CAACC,QAAQ,MAAMC,QAAQ,MACzZ,SAASC,GAAGr8F,EAAEC,GAAGD,EAAEA,EAAE+7F,YAAY97F,EAAE87F,cAAc/7F,IAAIC,EAAE87F,YAAY,CAACC,UAAUh8F,EAAEg8F,UAAUC,UAAUj8F,EAAEi8F,UAAUC,OAAOl8F,EAAEk8F,OAAOE,QAAQp8F,EAAEo8F,UAAU,SAASE,GAAGt8F,EAAEC,GAAoF,OAAjFD,EAAE,CAACy7F,eAAez7F,EAAEu8F,eAAet8F,EAAE8K,IAAI,EAAEgoE,QAAQ,KAAK5sE,SAAS,KAAK7M,KAAK,OAAeA,KAAK0G,EAAE,SAASw8F,GAAGx8F,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAE+7F,aAAwB,CAAY,IAAItwG,GAAfuU,EAAEA,EAAEk8F,QAAeC,QAAQ,OAAO1wG,EAAEwU,EAAE3G,KAAK2G,GAAGA,EAAE3G,KAAK7N,EAAE6N,KAAK7N,EAAE6N,KAAK2G,GAAGD,EAAEm8F,QAAQl8F,GACpY,SAASw8F,GAAGz8F,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEihF,UAAU,OAAOx1F,GAAG4wG,GAAG5wG,EAAEuU,GAAiC,QAAdvU,GAAhBuU,EAAEA,EAAE+7F,aAAgBE,YAAoBj8F,EAAEi8F,UAAUh8F,EAAE3G,KAAK2G,EAAEA,EAAE3G,KAAK2G,IAAIA,EAAE3G,KAAK7N,EAAE6N,KAAK7N,EAAE6N,KAAK2G,GAClJ,SAASy8F,GAAG18F,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAE6F,EAAE+7F,YAAYrpE,IAAG,EAAG,IAAIjG,EAAEtyB,EAAE8hG,UAAUhiG,EAAEE,EAAE+hG,OAAOC,QAAQ,GAAG,OAAOliG,EAAE,CAAC,GAAG,OAAOwyB,EAAE,CAAC,IAAIW,EAAEX,EAAEnzB,KAAKmzB,EAAEnzB,KAAKW,EAAEX,KAAKW,EAAEX,KAAK8zB,EAAEX,EAAExyB,EAAEE,EAAE+hG,OAAOC,QAAQ,KAAmB,QAAd/uE,EAAEptB,EAAEihF,aAAqC,QAAhB7zD,EAAEA,EAAE2uE,eAAuB3uE,EAAE6uE,UAAUhiG,IAAI,GAAG,OAAOwyB,EAAE,CAACW,EAAEX,EAAEnzB,KAAK,IAAIyQ,EAAE5P,EAAE6hG,UAAU3wG,EAAE,EAAEG,EAAE,KAAK0B,EAAE,KAAK+3B,EAAE,KAAK,GAAG,OAAOmI,EAAW,IAAR,IAAI0kD,EAAE1kD,IAAI,CAAoB,IAAnBnzB,EAAE63E,EAAE2pB,gBAAoB/vG,EAAE,CAAC,IAAIixG,EAAG,CAAClB,eAAe3pB,EAAE2pB,eAAec,eAAezqB,EAAEyqB,eAAexxF,IAAI+mE,EAAE/mE,IAAIgoE,QAAQjB,EAAEiB,QAAQ5sE,SAAS2rE,EAAE3rE,SAAS7M,KAAK,MAAM,OAAO2rB,GAAG/3B,EAAE+3B,EACnf03E,EAAGnxG,EAAEue,GAAGkb,EAAEA,EAAE3rB,KAAKqjG,EAAG1iG,EAAE5O,IAAIA,EAAE4O,OAAO,CAAC,OAAOgrB,IAAIA,EAAEA,EAAE3rB,KAAK,CAACmiG,eAAe,WAAWc,eAAezqB,EAAEyqB,eAAexxF,IAAI+mE,EAAE/mE,IAAIgoE,QAAQjB,EAAEiB,QAAQ5sE,SAAS2rE,EAAE3rE,SAAS7M,KAAK,OAAOsjG,GAAG3iG,EAAE63E,EAAEyqB,gBAAgBv8F,EAAE,CAAC,IAAIs0E,EAAEt0E,EAAE1T,EAAEwlF,EAAW,OAAT73E,EAAEgG,EAAE08F,EAAGlxG,EAASa,EAAEye,KAAK,KAAK,EAAc,GAAG,oBAAfupE,EAAEhoF,EAAEymF,SAAiC,CAAChpE,EAAEuqE,EAAE/oF,KAAKoxG,EAAG5yF,EAAE9P,GAAG,MAAM+F,EAAE+J,EAAEuqE,EAAE,MAAMt0E,EAAE,KAAK,EAAEs0E,EAAE4M,WAAuB,KAAb5M,EAAE4M,UAAgB,GAAG,KAAK,EAAuD,GAAG,QAA5CjnF,EAAE,oBAAdq6E,EAAEhoF,EAAEymF,SAAgCuB,EAAE/oF,KAAKoxG,EAAG5yF,EAAE9P,GAAGq6E,SAAe,IAASr6E,EAAE,MAAM+F,EAAE+J,EAAEld,EAAE,GAAGkd,EAAE9P,GAAG,MAAM+F,EAAE,KAAK,EAAE0yB,IAAG,GAAI,OAAOo/C,EAAE3rE,WAC5enG,EAAEkhF,WAAW,GAAe,QAAZjnF,EAAEE,EAAEiiG,SAAiBjiG,EAAEiiG,QAAQ,CAACtqB,GAAG73E,EAAEhM,KAAK6jF,IAAa,GAAG,QAAZA,EAAEA,EAAEx4E,OAAkBw4E,IAAI1kD,EAAE,IAAsB,QAAnBnzB,EAAEE,EAAE+hG,OAAOC,SAAiB,MAAWrqB,EAAErlD,EAAEnzB,KAAKW,EAAEX,KAAKW,EAAEX,KAAK8zB,EAAEjzB,EAAE8hG,UAAUxvE,EAAExyB,EAAEE,EAAE+hG,OAAOC,QAAQ,MAAc,OAAOl3E,EAAEz5B,EAAEue,EAAEkb,EAAE3rB,KAAKpM,EAAEiN,EAAE6hG,UAAUxwG,EAAE2O,EAAE8hG,UAAUh3E,EAAE43E,GAAGxxG,GAAG2U,EAAEy7F,eAAepwG,EAAE2U,EAAEohF,cAAcr3E,GACxS,SAAS+yF,GAAG98F,EAAEC,EAAExU,GAA8B,GAA3BuU,EAAEC,EAAEm8F,QAAQn8F,EAAEm8F,QAAQ,KAAQ,OAAOp8F,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAE5P,OAAO6P,IAAI,CAAC,IAAIvU,EAAEsU,EAAEC,GAAG9F,EAAEzO,EAAEya,SAAS,GAAG,OAAOhM,EAAE,CAAyB,GAAxBzO,EAAEya,SAAS,KAAKza,EAAEyO,EAAEA,EAAE1O,EAAK,oBAAoBC,EAAE,MAAMoK,MAAMk7E,EAAE,IAAItlF,IAAIA,EAAEH,KAAK4O,KAAK,IAAI4iG,GAAGhhB,EAAG7F,wBAAwB8mB,IAAI,IAAInnB,EAAG1gE,WAAWw/D,KAAK,SAASsoB,GAAGj9F,EAAEC,EAAExU,EAAEC,GAA8BD,EAAE,QAAXA,EAAEA,EAAEC,EAAtBuU,EAAED,EAAEohF,sBAAmC,IAAS31F,EAAEwU,EAAEpT,EAAE,GAAGoT,EAAExU,GAAGuU,EAAEohF,cAAc31F,EAAE,IAAIuU,EAAEy7F,iBAAiBz7F,EAAE+7F,YAAYC,UAAUvwG,GAC3Z,IAAIyxG,GAAG,CAAC3oB,UAAU,SAASv0E,GAAG,SAAOA,EAAEA,EAAEm9F,sBAAqBnc,GAAGhhF,KAAKA,GAAM00E,gBAAgB,SAAS10E,EAAEC,EAAExU,GAAGuU,EAAEA,EAAEm9F,oBAAoB,IAAIzxG,EAAE0xG,KAAKjjG,EAAE4iG,GAAG5mB,UAAqBh8E,EAAEmiG,GAAd5wG,EAAE2xG,GAAG3xG,EAAEsU,EAAE7F,GAAUA,IAAK44E,QAAQ9yE,OAAE,IAASxU,GAAG,OAAOA,IAAI0O,EAAEgM,SAAS1a,GAAG+wG,GAAGx8F,EAAE7F,GAAGmjG,GAAGt9F,EAAEtU,IAAI+oF,oBAAoB,SAASz0E,EAAEC,EAAExU,GAAGuU,EAAEA,EAAEm9F,oBAAoB,IAAIzxG,EAAE0xG,KAAKjjG,EAAE4iG,GAAG5mB,UAAqBh8E,EAAEmiG,GAAd5wG,EAAE2xG,GAAG3xG,EAAEsU,EAAE7F,GAAUA,IAAK4Q,IAAI,EAAE5Q,EAAE44E,QAAQ9yE,OAAE,IAASxU,GAAG,OAAOA,IAAI0O,EAAEgM,SAAS1a,GAAG+wG,GAAGx8F,EAAE7F,GAAGmjG,GAAGt9F,EAAEtU,IAAI8oF,mBAAmB,SAASx0E,EAAEC,GAAGD,EAAEA,EAAEm9F,oBAAoB,IAAI1xG,EAAE2xG,KAAK1xG,EAAEqxG,GAAG5mB,UACvezqF,EAAE4wG,GAAd7wG,EAAE4xG,GAAG5xG,EAAEuU,EAAEtU,GAAUA,IAAKqf,IAAI,OAAE,IAAS9K,GAAG,OAAOA,IAAIvU,EAAEya,SAASlG,GAAGu8F,GAAGx8F,EAAEtU,GAAG4xG,GAAGt9F,EAAEvU,KAAK,SAAS8xG,GAAGv9F,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,EAAExyB,GAAiB,MAAM,oBAApB+F,EAAEA,EAAEu6E,WAAsCijB,sBAAsBx9F,EAAEw9F,sBAAsB9xG,EAAE+gC,EAAExyB,IAAGgG,EAAEjT,YAAWiT,EAAEjT,UAAUkoF,wBAAsBwd,GAAGjnG,EAAEC,KAAKgnG,GAAGv4F,EAAEsyB,IAC7Q,SAASgxE,GAAGz9F,EAAEC,EAAExU,GAAG,IAAIC,GAAE,EAAGyO,EAAE49F,GAAOtrE,EAAExsB,EAAEY,YAA8W,MAAlW,kBAAkB4rB,GAAG,OAAOA,EAAEA,EAAEkvE,GAAGlvE,IAAItyB,EAAEi7E,GAAEn1E,GAAG+3F,GAAG13D,GAAElvB,QAAyBqb,GAAG/gC,EAAE,QAAtBA,EAAEuU,EAAEa,oBAA4B,IAASpV,GAAGusG,GAAGj4F,EAAE7F,GAAG49F,IAAI93F,EAAE,IAAIA,EAAExU,EAAEghC,GAAGzsB,EAAEohF,cAAc,OAAOnhF,EAAEhB,YAAO,IAASgB,EAAEhB,MAAMgB,EAAEhB,MAAM,KAAKgB,EAAE20E,QAAQsoB,GAAGl9F,EAAEu6E,UAAUt6E,EAAEA,EAAEk9F,oBAAoBn9F,EAAEtU,KAAIsU,EAAEA,EAAEu6E,WAAY2d,4CAA4C/9F,EAAE6F,EAAEm4F,0CAA0C1rE,GAAUxsB,EAC9Z,SAASy9F,GAAG19F,EAAEC,EAAExU,EAAEC,GAAGsU,EAAEC,EAAEhB,MAAM,oBAAoBgB,EAAE09F,2BAA2B19F,EAAE09F,0BAA0BlyG,EAAEC,GAAG,oBAAoBuU,EAAE29F,kCAAkC39F,EAAE29F,iCAAiCnyG,EAAEC,GAAGuU,EAAEhB,QAAQe,GAAGk9F,GAAGzoB,oBAAoBx0E,EAAEA,EAAEhB,MAAM,MAC/P,SAAS4+F,GAAG79F,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAE6F,EAAEu6E,UAAUpgF,EAAE2d,MAAMrsB,EAAE0O,EAAE8E,MAAMe,EAAEohF,cAAcjnF,EAAEw6E,KAAKqoB,GAAGlB,GAAG97F,GAAG,IAAIysB,EAAExsB,EAAEY,YAAY,kBAAkB4rB,GAAG,OAAOA,EAAEtyB,EAAEwgE,QAAQghC,GAAGlvE,IAAIA,EAAE2oD,GAAEn1E,GAAG+3F,GAAG13D,GAAElvB,QAAQjX,EAAEwgE,QAAQs9B,GAAGj4F,EAAEysB,IAAIiwE,GAAG18F,EAAEvU,EAAE0O,EAAEzO,GAAGyO,EAAE8E,MAAMe,EAAEohF,cAA2C,oBAA7B30D,EAAExsB,EAAEiB,4BAAiD+7F,GAAGj9F,EAAEC,EAAEwsB,EAAEhhC,GAAG0O,EAAE8E,MAAMe,EAAEohF,eAAe,oBAAoBnhF,EAAEiB,0BAA0B,oBAAoB/G,EAAE2jG,yBAAyB,oBAAoB3jG,EAAE4jG,2BAA2B,oBAAoB5jG,EAAE6jG,qBACte/9F,EAAE9F,EAAE8E,MAAM,oBAAoB9E,EAAE6jG,oBAAoB7jG,EAAE6jG,qBAAqB,oBAAoB7jG,EAAE4jG,2BAA2B5jG,EAAE4jG,4BAA4B99F,IAAI9F,EAAE8E,OAAOi+F,GAAGzoB,oBAAoBt6E,EAAEA,EAAE8E,MAAM,MAAMy9F,GAAG18F,EAAEvU,EAAE0O,EAAEzO,GAAGyO,EAAE8E,MAAMe,EAAEohF,eAAe,oBAAoBjnF,EAAE8jG,oBAAoBj+F,EAAEkhF,WAAW,GAAG,IAAIgd,GAAGpwG,MAAMW,QAC3T,SAAS0vG,GAAGn+F,EAAEC,EAAExU,GAAW,GAAG,QAAXuU,EAAEvU,EAAE4oB,MAAiB,oBAAoBrU,GAAG,kBAAkBA,EAAE,CAAC,GAAGvU,EAAE+pF,OAAO,CAAY,GAAX/pF,EAAEA,EAAE+pF,OAAY,CAAC,GAAG,IAAI/pF,EAAEsf,IAAI,MAAMjV,MAAMk7E,EAAE,MAAM,IAAItlF,EAAED,EAAE8uF,UAAU,IAAI7uF,EAAE,MAAMoK,MAAMk7E,EAAE,IAAIhxE,IAAI,IAAI7F,EAAE,GAAG6F,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAEoU,KAAK,oBAAoBpU,EAAEoU,KAAKpU,EAAEoU,IAAI+pF,aAAajkG,EAAS8F,EAAEoU,MAAIpU,EAAE,SAASD,GAAG,IAAIC,EAAEvU,EAAEipF,KAAK10E,IAAI+8F,KAAK/8F,EAAEvU,EAAEipF,KAAK,IAAI,OAAO30E,SAASC,EAAE9F,GAAG8F,EAAE9F,GAAG6F,IAAKo+F,WAAWjkG,EAAS8F,GAAE,GAAG,kBAAkBD,EAAE,MAAMlK,MAAMk7E,EAAE,MAAM,IAAIvlF,EAAE+pF,OAAO,MAAM1/E,MAAMk7E,EAAE,IAAIhxE,IAAK,OAAOA,EAChe,SAASq+F,GAAGr+F,EAAEC,GAAG,GAAG,aAAaD,EAAE/B,KAAK,MAAMnI,MAAMk7E,EAAE,GAAG,oBAAoBllF,OAAOkB,UAAUmB,SAAS5C,KAAK0U,GAAG,qBAAqBnU,OAAO6C,KAAKsR,GAAG3D,KAAK,MAAM,IAAI2D,EAAE,KACpK,SAASq+F,GAAGt+F,GAAG,SAASC,EAAEA,EAAExU,GAAG,GAAGuU,EAAE,CAAC,IAAItU,EAAEuU,EAAEs+F,WAAW,OAAO7yG,GAAGA,EAAE8yG,WAAW/yG,EAAEwU,EAAEs+F,WAAW9yG,GAAGwU,EAAEw+F,YAAYx+F,EAAEs+F,WAAW9yG,EAAEA,EAAE+yG,WAAW,KAAK/yG,EAAEy1F,UAAU,GAAG,SAASz1F,EAAEA,EAAEC,GAAG,IAAIsU,EAAE,OAAO,KAAK,KAAK,OAAOtU,GAAGuU,EAAExU,EAAEC,GAAGA,EAAEA,EAAE81F,QAAQ,OAAO,KAAK,SAAS91F,EAAEsU,EAAEC,GAAG,IAAID,EAAE,IAAImsE,IAAI,OAAOlsE,GAAG,OAAOA,EAAEtT,IAAIqT,EAAEqiB,IAAIpiB,EAAEtT,IAAIsT,GAAGD,EAAEqiB,IAAIpiB,EAAErC,MAAMqC,GAAGA,EAAEA,EAAEuhF,QAAQ,OAAOxhF,EAAE,SAAS7F,EAAE6F,EAAEC,GAAsC,OAAnCD,EAAE0+F,GAAG1+F,EAAEC,IAAKrC,MAAM,EAAEoC,EAAEwhF,QAAQ,KAAYxhF,EAAE,SAASysB,EAAExsB,EAAExU,EAAEC,GAAa,OAAVuU,EAAErC,MAAMlS,EAAMsU,EAA4B,QAAjBtU,EAAEuU,EAAEghF,YAA6Bv1F,EAAEA,EAAEkS,OAAQnS,GAAGwU,EAAEihF,UAClf,EAAEz1F,GAAGC,GAAEuU,EAAEihF,UAAU,EAASz1F,GADkaA,EACha,SAASwO,EAAEgG,GAA0C,OAAvCD,GAAG,OAAOC,EAAEghF,YAAYhhF,EAAEihF,UAAU,GAAUjhF,EAAE,SAASmtB,EAAEptB,EAAEC,EAAExU,EAAEC,GAAG,OAAG,OAAOuU,GAAG,IAAIA,EAAE8K,MAAW9K,EAAE0+F,GAAGlzG,EAAEuU,EAAEzT,KAAKb,IAAKkyF,OAAO59E,EAAEC,KAAEA,EAAE9F,EAAE8F,EAAExU,IAAKmyF,OAAO59E,EAASC,GAAE,SAAS8J,EAAE/J,EAAEC,EAAExU,EAAEC,GAAG,OAAG,OAAOuU,GAAGA,EAAE2+F,cAAcnzG,EAAEwS,OAAYvS,EAAEyO,EAAE8F,EAAExU,EAAEqsB,QAASzD,IAAI8pF,GAAGn+F,EAAEC,EAAExU,GAAGC,EAAEkyF,OAAO59E,EAAEtU,KAAEA,EAAEmzG,GAAGpzG,EAAEwS,KAAKxS,EAAEkB,IAAIlB,EAAEqsB,MAAM,KAAK9X,EAAEzT,KAAKb,IAAK2oB,IAAI8pF,GAAGn+F,EAAEC,EAAExU,GAAGC,EAAEkyF,OAAO59E,EAAStU,GAAE,SAASL,EAAE2U,EAAEC,EAAExU,EAAEC,GAAG,OAAG,OAAOuU,GAAG,IAAIA,EAAE8K,KAAK9K,EAAEs6E,UAAUyI,gBAAgBv3F,EAAEu3F,eAAe/iF,EAAEs6E,UAAUukB,iBACterzG,EAAEqzG,iBAAsB7+F,EAAE8+F,GAAGtzG,EAAEuU,EAAEzT,KAAKb,IAAKkyF,OAAO59E,EAAEC,KAAEA,EAAE9F,EAAE8F,EAAExU,EAAEspB,UAAU,KAAM6oE,OAAO59E,EAASC,GAAE,SAASzU,EAAEwU,EAAEC,EAAExU,EAAEC,EAAE+gC,GAAG,OAAG,OAAOxsB,GAAG,IAAIA,EAAE8K,MAAW9K,EAAE++F,GAAGvzG,EAAEuU,EAAEzT,KAAKb,EAAE+gC,IAAKmxD,OAAO59E,EAAEC,KAAEA,EAAE9F,EAAE8F,EAAExU,IAAKmyF,OAAO59E,EAASC,GAAE,SAAS/S,EAAE8S,EAAEC,EAAExU,GAAG,GAAG,kBAAkBwU,GAAG,kBAAkBA,EAAE,OAAOA,EAAE0+F,GAAG,GAAG1+F,EAAED,EAAEzT,KAAKd,IAAKmyF,OAAO59E,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEzI,UAAU,KAAK8kF,GAAG,OAAO7wF,EAAEozG,GAAG5+F,EAAEhC,KAAKgC,EAAEtT,IAAIsT,EAAE6X,MAAM,KAAK9X,EAAEzT,KAAKd,IAAK4oB,IAAI8pF,GAAGn+F,EAAE,KAAKC,GAAGxU,EAAEmyF,OAAO59E,EAAEvU,EAAE,KAAK8wF,GAAG,OAAOt8E,EAAE8+F,GAAG9+F,EAAED,EAAEzT,KAAKd,IAAKmyF,OAAO59E,EAAEC,EAAE,GAAGi+F,GAAGj+F,IACvfo9E,GAAGp9E,GAAG,OAAOA,EAAE++F,GAAG/+F,EAAED,EAAEzT,KAAKd,EAAE,OAAQmyF,OAAO59E,EAAEC,EAAEo+F,GAAGr+F,EAAEC,GAAG,OAAO,KAAK,SAASglB,EAAEjlB,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAE,OAAO8F,EAAEA,EAAEtT,IAAI,KAAK,GAAG,kBAAkBlB,GAAG,kBAAkBA,EAAE,OAAO,OAAO0O,EAAE,KAAKizB,EAAEptB,EAAEC,EAAE,GAAGxU,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+L,UAAU,KAAK8kF,GAAG,OAAO7wF,EAAEkB,MAAMwN,EAAE1O,EAAEwS,OAAOu+E,GAAGhxF,EAAEwU,EAAEC,EAAExU,EAAEqsB,MAAM/C,SAASrpB,EAAEyO,GAAG4P,EAAE/J,EAAEC,EAAExU,EAAEC,GAAG,KAAK,KAAK6wF,GAAG,OAAO9wF,EAAEkB,MAAMwN,EAAE9O,EAAE2U,EAAEC,EAAExU,EAAEC,GAAG,KAAK,GAAGwyG,GAAGzyG,IAAI4xF,GAAG5xF,GAAG,OAAO,OAAO0O,EAAE,KAAK3O,EAAEwU,EAAEC,EAAExU,EAAEC,EAAE,MAAM2yG,GAAGr+F,EAAEvU,GAAG,OAAO,KAAK,SAASqmF,EAAE9xE,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,GAAG,kBAAkBzO,GAAG,kBAAkBA,EAAE,OAC5e0hC,EAAEntB,EADifD,EAClgBA,EAAE/T,IAAIR,IAAI,KAAW,GAAGC,EAAEyO,GAAG,GAAG,kBAAkBzO,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE8L,UAAU,KAAK8kF,GAAG,OAAOt8E,EAAEA,EAAE/T,IAAI,OAAOP,EAAEiB,IAAIlB,EAAEC,EAAEiB,MAAM,KAAKjB,EAAEuS,OAAOu+E,GAAGhxF,EAAEyU,EAAED,EAAEtU,EAAEosB,MAAM/C,SAAS5a,EAAEzO,EAAEiB,KAAKod,EAAE9J,EAAED,EAAEtU,EAAEyO,GAAG,KAAKoiF,GAAG,OAA2ClxF,EAAE4U,EAAtCD,EAAEA,EAAE/T,IAAI,OAAOP,EAAEiB,IAAIlB,EAAEC,EAAEiB,MAAM,KAAWjB,EAAEyO,GAAG,GAAG+jG,GAAGxyG,IAAI2xF,GAAG3xF,GAAG,OAAwBF,EAAEyU,EAAnBD,EAAEA,EAAE/T,IAAIR,IAAI,KAAWC,EAAEyO,EAAE,MAAMkkG,GAAGp+F,EAAEvU,GAAG,OAAO,KAAK,SAASixG,EAAGxiG,EAAEF,EAAEmzB,EAAErjB,GAAG,IAAI,IAAI1e,EAAE,KAAKiB,EAAE,KAAKd,EAAEyO,EAAEwzB,EAAExzB,EAAE,EAAEk3E,EAAE,KAAK,OAAO3lF,GAAGiiC,EAAEL,EAAEh9B,OAAOq9B,IAAI,CAACjiC,EAAEoS,MAAM6vB,GAAG0jD,EAAE3lF,EAAEA,EAAE,MAAM2lF,EAAE3lF,EAAEg2F,QAAQ,IAAItP,EAAEjtD,EAAE9qB,EAAE3O,EAAE4hC,EAAEK,GAAG1jB,GAAG,GAAG,OAAOmoE,EAAE,CAAC,OAAO1mF,IAAIA,EAAE2lF,GAAG,MAAMnxE,GACtfxU,GAAG,OAAO0mF,EAAE+O,WAAWhhF,EAAE9F,EAAE3O,GAAGyO,EAAEwyB,EAAEylD,EAAEj4E,EAAEwzB,GAAG,OAAOnhC,EAAEjB,EAAE6mF,EAAE5lF,EAAEk1F,QAAQtP,EAAE5lF,EAAE4lF,EAAE1mF,EAAE2lF,EAAE,GAAG1jD,IAAIL,EAAEh9B,OAAO,OAAO3E,EAAE0O,EAAE3O,GAAGH,EAAE,GAAG,OAAOG,EAAE,CAAC,KAAKiiC,EAAEL,EAAEh9B,OAAOq9B,IAAkB,QAAdjiC,EAAE0B,EAAEiN,EAAEizB,EAAEK,GAAG1jB,MAAc9P,EAAEwyB,EAAEjhC,EAAEyO,EAAEwzB,GAAG,OAAOnhC,EAAEjB,EAAEG,EAAEc,EAAEk1F,QAAQh2F,EAAEc,EAAEd,GAAG,OAAOH,EAAE,IAAIG,EAAEE,EAAEyO,EAAE3O,GAAGiiC,EAAEL,EAAEh9B,OAAOq9B,IAAsB,QAAlB0jD,EAAEW,EAAEtmF,EAAE2O,EAAEszB,EAAEL,EAAEK,GAAG1jB,MAAc/J,GAAG,OAAOmxE,EAAE8P,WAAWz1F,EAAE64F,OAAO,OAAOlT,EAAExkF,IAAI8gC,EAAE0jD,EAAExkF,KAAKsN,EAAEwyB,EAAE0kD,EAAEl3E,EAAEwzB,GAAG,OAAOnhC,EAAEjB,EAAE8lF,EAAE7kF,EAAEk1F,QAAQrQ,EAAE7kF,EAAE6kF,GAA4C,OAAzCnxE,GAAGxU,EAAE8E,SAAQ,SAAS0P,GAAG,OAAOC,EAAE9F,EAAE6F,MAAY3U,EAAE,SAASipF,EAAEn6E,EAAEF,EAAEmzB,EAAE/hC,GAAG,IAAI0e,EAAEszE,GAAGjwD,GAAG,GAAG,oBAAoBrjB,EAAE,MAAMjU,MAAMk7E,EAAE,MACve,GAAG,OAD0e5jD,EAAErjB,EAAExe,KAAK6hC,IAC3e,MAAMt3B,MAAMk7E,EAAE,MAAM,IAAI,IAAIxlF,EAAEue,EAAE,KAAKzd,EAAE2N,EAAEwzB,EAAExzB,EAAE,EAAEk3E,EAAE,KAAKe,EAAE9kD,EAAE9zB,OAAO,OAAOhN,IAAI4lF,EAAEr3E,KAAK4yB,IAAIykD,EAAE9kD,EAAE9zB,OAAO,CAAChN,EAAEsR,MAAM6vB,GAAG0jD,EAAE7kF,EAAEA,EAAE,MAAM6kF,EAAE7kF,EAAEk1F,QAAQ,IAAIlN,EAAErvD,EAAE9qB,EAAE7N,EAAE4lF,EAAE7lF,MAAMhB,GAAG,GAAG,OAAOipF,EAAE,CAAC,OAAOhoF,IAAIA,EAAE6kF,GAAG,MAAMnxE,GAAG1T,GAAG,OAAOgoF,EAAE2M,WAAWhhF,EAAE9F,EAAE7N,GAAG2N,EAAEwyB,EAAE6nD,EAAEr6E,EAAEwzB,GAAG,OAAOjiC,EAAEue,EAAEuqE,EAAE9oF,EAAEg2F,QAAQlN,EAAE9oF,EAAE8oF,EAAEhoF,EAAE6kF,EAAE,GAAGe,EAAEr3E,KAAK,OAAOpP,EAAE0O,EAAE7N,GAAGyd,EAAE,GAAG,OAAOzd,EAAE,CAAC,MAAM4lF,EAAEr3E,KAAK4yB,IAAIykD,EAAE9kD,EAAE9zB,OAAwB,QAAjB44E,EAAEhlF,EAAEiN,EAAE+3E,EAAE7lF,MAAMhB,MAAc4O,EAAEwyB,EAAEylD,EAAEj4E,EAAEwzB,GAAG,OAAOjiC,EAAEue,EAAEmoE,EAAE1mF,EAAEg2F,QAAQtP,EAAE1mF,EAAE0mF,GAAG,OAAOnoE,EAAE,IAAIzd,EAAEZ,EAAEyO,EAAE7N,IAAI4lF,EAAEr3E,KAAK4yB,IAAIykD,EAAE9kD,EAAE9zB,OAA4B,QAArB44E,EAAEJ,EAAExlF,EAAE6N,EAAEszB,EAAEykD,EAAE7lF,MAAMhB,MAAc2U,GAAG,OAChfkyE,EAAE+O,WAAW30F,EAAE+3F,OAAO,OAAOnS,EAAEvlF,IAAI8gC,EAAEykD,EAAEvlF,KAAKsN,EAAEwyB,EAAEylD,EAAEj4E,EAAEwzB,GAAG,OAAOjiC,EAAEue,EAAEmoE,EAAE1mF,EAAEg2F,QAAQtP,EAAE1mF,EAAE0mF,GAA4C,OAAzClyE,GAAG1T,EAAEgE,SAAQ,SAAS0P,GAAG,OAAOC,EAAE9F,EAAE6F,MAAY+J,EAAE,OAAO,SAAS/J,EAAEtU,EAAE+gC,EAAEW,GAAG,IAAIrjB,EAAE,kBAAkB0iB,GAAG,OAAOA,GAAGA,EAAExuB,OAAOu+E,IAAI,OAAO/vD,EAAE9/B,IAAIod,IAAI0iB,EAAEA,EAAE3U,MAAM/C,UAAU,IAAI1pB,EAAE,kBAAkBohC,GAAG,OAAOA,EAAE,GAAGphC,EAAE,OAAOohC,EAAEj1B,UAAU,KAAK8kF,GAAGt8E,EAAE,CAAS,IAAR3U,EAAEohC,EAAE9/B,IAAQod,EAAEre,EAAE,OAAOqe,GAAG,CAAC,GAAGA,EAAEpd,MAAMtB,EAAE,CAAC,OAAO0e,EAAEgB,KAAK,KAAK,EAAE,GAAG0hB,EAAExuB,OAAOu+E,GAAG,CAAC/wF,EAAEuU,EAAE+J,EAAEy3E,UAAS91F,EAAEyO,EAAE4P,EAAE0iB,EAAE3U,MAAM/C,WAAY6oE,OAAO59E,EAAEA,EAAEtU,EAAE,MAAMsU,EAAE,MAAM,QAAQ,GAAG+J,EAAE60F,cAAcnyE,EAAExuB,KAAK,CAACxS,EAAEuU,EACrf+J,EAAEy3E,UAAS91F,EAAEyO,EAAE4P,EAAE0iB,EAAE3U,QAASzD,IAAI8pF,GAAGn+F,EAAE+J,EAAE0iB,GAAG/gC,EAAEkyF,OAAO59E,EAAEA,EAAEtU,EAAE,MAAMsU,GAAGvU,EAAEuU,EAAE+J,GAAG,MAAW9J,EAAED,EAAE+J,GAAGA,EAAEA,EAAEy3E,QAAQ/0D,EAAExuB,OAAOu+E,KAAI9wF,EAAEszG,GAAGvyE,EAAE3U,MAAM/C,SAAS/U,EAAEzT,KAAK6gC,EAAEX,EAAE9/B,MAAOixF,OAAO59E,EAAEA,EAAEtU,KAAI0hC,EAAEyxE,GAAGpyE,EAAExuB,KAAKwuB,EAAE9/B,IAAI8/B,EAAE3U,MAAM,KAAK9X,EAAEzT,KAAK6gC,IAAK/Y,IAAI8pF,GAAGn+F,EAAEtU,EAAE+gC,GAAGW,EAAEwwD,OAAO59E,EAAEA,EAAEotB,GAAG,OAAOnzB,EAAE+F,GAAG,KAAKu8E,GAAGv8E,EAAE,CAAC,IAAI+J,EAAE0iB,EAAE9/B,IAAI,OAAOjB,GAAG,CAAC,GAAGA,EAAEiB,MAAMod,EAAX,CAAa,GAAG,IAAIre,EAAEqf,KAAKrf,EAAE6uF,UAAUyI,gBAAgBv2D,EAAEu2D,eAAet3F,EAAE6uF,UAAUukB,iBAAiBryE,EAAEqyE,eAAe,CAACrzG,EAAEuU,EAAEtU,EAAE81F,UAAS91F,EAAEyO,EAAEzO,EAAE+gC,EAAE1X,UAAU,KAAM6oE,OAAO59E,EAAEA,EAAEtU,EAAE,MAAMsU,EAAOvU,EAAEuU,EAAEtU,GAAG,MAAWuU,EAAED,EAAEtU,GAAGA,EACnfA,EAAE81F,SAAQ91F,EAAEqzG,GAAGtyE,EAAEzsB,EAAEzT,KAAK6gC,IAAKwwD,OAAO59E,EAAEA,EAAEtU,EAAE,OAAOuO,EAAE+F,GAAG,GAAG,kBAAkBysB,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAO/gC,GAAG,IAAIA,EAAEqf,KAAKtf,EAAEuU,EAAEtU,EAAE81F,UAAS91F,EAAEyO,EAAEzO,EAAE+gC,IAAKmxD,OAAO59E,EAAEA,EAAEtU,IAAID,EAAEuU,EAAEtU,IAAGA,EAAEizG,GAAGlyE,EAAEzsB,EAAEzT,KAAK6gC,IAAKwwD,OAAO59E,EAAEA,EAAEtU,GAAGuO,EAAE+F,GAAG,GAAGk+F,GAAGzxE,GAAG,OAAOkwE,EAAG38F,EAAEtU,EAAE+gC,EAAEW,GAAG,GAAGiwD,GAAG5wD,GAAG,OAAO6nD,EAAEt0E,EAAEtU,EAAE+gC,EAAEW,GAAc,GAAX/hC,GAAGgzG,GAAGr+F,EAAEysB,GAAM,qBAAqBA,IAAI1iB,EAAE,OAAO/J,EAAE+K,KAAK,KAAK,EAAE,KAAK,EAAE,MAAM/K,EAAEA,EAAE/B,KAAKnI,MAAMk7E,EAAE,IAAIhxE,EAAE1N,aAAa0N,EAAErU,MAAM,cAAe,OAAOF,EAAEuU,EAAEtU,IAAI,IAAIuzG,GAAGX,IAAG,GAAIY,GAAGZ,IAAG,GAAIa,GAAG,GAAGC,GAAG,CAAChuF,QAAQ+tF,IAAIE,GAAG,CAACjuF,QAAQ+tF,IAAIG,GAAG,CAACluF,QAAQ+tF,IACjf,SAASl1E,GAAGjqB,GAAG,GAAGA,IAAIm/F,GAAG,MAAMrpG,MAAMk7E,EAAE,MAAM,OAAOhxE,EAAE,SAASu/F,GAAGv/F,EAAEC,GAAyC,OAAtCgxE,GAAEquB,GAAGr/F,GAAGgxE,GAAEouB,GAAGr/F,GAAGixE,GAAEmuB,GAAGD,IAAIn/F,EAAEC,EAAE6tE,UAAmB,KAAK,EAAE,KAAK,GAAG7tE,GAAGA,EAAEA,EAAE2xD,iBAAiB3xD,EAAE4/E,aAAaL,GAAG,KAAK,IAAI,MAAM,QAAkEv/E,EAAEu/E,GAArCv/E,GAAvBD,EAAE,IAAIA,EAAEC,EAAEob,WAAWpb,GAAM4/E,cAAc,KAAK7/E,EAAEA,EAAE+L,SAAkB+oE,GAAEsqB,IAAInuB,GAAEmuB,GAAGn/F,GAAG,SAASu/F,KAAK1qB,GAAEsqB,IAAItqB,GAAEuqB,IAAIvqB,GAAEwqB,IAAI,SAASG,GAAGz/F,GAAGiqB,GAAGq1E,GAAGluF,SAAS,IAAInR,EAAEgqB,GAAGm1E,GAAGhuF,SAAa3lB,EAAE+zF,GAAGv/E,EAAED,EAAE/B,MAAMgC,IAAIxU,IAAIwlF,GAAEouB,GAAGr/F,GAAGixE,GAAEmuB,GAAG3zG,IAAI,SAASi0G,GAAG1/F,GAAGq/F,GAAGjuF,UAAUpR,IAAI80E,GAAEsqB,IAAItqB,GAAEuqB,KAAK,IAAI9pB,GAAE,CAACnkE,QAAQ,GACpd,SAASuuF,GAAG3/F,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAE8K,IAAI,CAAC,IAAItf,EAAEwU,EAAEmhF,cAAc,GAAG,OAAO31F,IAAmB,QAAfA,EAAEA,EAAE41F,aAzEqJ,OAyEhI51F,EAAEqc,MAzEsI,OAyE3Hrc,EAAEqc,MAAW,OAAO7H,OAAO,GAAG,KAAKA,EAAE8K,UAAK,IAAS9K,EAAE2/F,cAAcC,aAAa,GAAG,KAAiB,GAAZ5/F,EAAEihF,WAAc,OAAOjhF,OAAO,GAAG,OAAOA,EAAEi0C,MAAM,CAACj0C,EAAEi0C,MAAM0pC,OAAO39E,EAAEA,EAAEA,EAAEi0C,MAAM,SAAS,GAAGj0C,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEuhF,SAAS,CAAC,GAAG,OAAOvhF,EAAE29E,QAAQ39E,EAAE29E,SAAS59E,EAAE,OAAO,KAAKC,EAAEA,EAAE29E,OAAO39E,EAAEuhF,QAAQ5D,OAAO39E,EAAE29E,OAAO39E,EAAEA,EAAEuhF,QAAQ,OAAO,KAAK,SAASse,GAAG9/F,EAAEC,GAAG,MAAM,CAAC8/F,UAAU//F,EAAE8X,MAAM7X,GACve,IAAI+/F,GAAGjkB,EAAG9F,uBAAuBgqB,GAAGlkB,EAAG7F,wBAAwBgqB,GAAG,EAAEnuB,GAAE,KAAKjpC,GAAE,KAAK2sC,GAAE,KAAK0qB,IAAG,EAAG,SAASj+D,KAAI,MAAMpsC,MAAMk7E,EAAE,MAAO,SAASovB,GAAGpgG,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIxU,EAAE,EAAEA,EAAEwU,EAAE7P,QAAQ3E,EAAEuU,EAAE5P,OAAO3E,IAAI,IAAI+mG,GAAGxyF,EAAEvU,GAAGwU,EAAExU,IAAI,OAAM,EAAG,OAAM,EAC/O,SAASwqC,GAAGj2B,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAkI,GAA/HyzE,GAAGzzE,EAAEslD,GAAE9xE,EAAEA,EAAEmhF,cAAc,KAAKnhF,EAAE87F,YAAY,KAAK97F,EAAEw7F,eAAe,EAAEuE,GAAG5uF,QAAQ,OAAOpR,GAAG,OAAOA,EAAEohF,cAAcif,GAAGC,GAAGtgG,EAAEvU,EAAEC,EAAEyO,GAAM8F,EAAEw7F,iBAAiByE,GAAG,CAACzzE,EAAE,EAAE,EAAE,CAAoB,GAAnBxsB,EAAEw7F,eAAe,IAAO,GAAGhvE,GAAG,MAAM32B,MAAMk7E,EAAE,MAAMvkD,GAAG,EAAEgpD,GAAE3sC,GAAE,KAAK7oC,EAAE87F,YAAY,KAAKiE,GAAG5uF,QAAQmvF,GAAGvgG,EAAEvU,EAAEC,EAAEyO,SAAS8F,EAAEw7F,iBAAiByE,IAAkE,GAA9DF,GAAG5uF,QAAQovF,GAAGvgG,EAAE,OAAO6oC,IAAG,OAAOA,GAAExvC,KAAK4mG,GAAG,EAAEzqB,GAAE3sC,GAAEipC,GAAE,KAAKouB,IAAG,EAAMlgG,EAAE,MAAMnK,MAAMk7E,EAAE,MAAM,OAAOhxE,EAC9Z,SAASygG,KAAK,IAAIzgG,EAAE,CAACohF,cAAc,KAAK4a,UAAU,KAAKC,UAAU,KAAKyE,MAAM,KAAKpnG,KAAK,MAA8C,OAAxC,OAAOm8E,GAAE1D,GAAEqP,cAAc3L,GAAEz1E,EAAEy1E,GAAEA,GAAEn8E,KAAK0G,EAASy1E,GAAE,SAASkrB,KAAK,GAAG,OAAO73D,GAAE,CAAC,IAAI9oC,EAAE+xE,GAAEkP,UAAUjhF,EAAE,OAAOA,EAAEA,EAAEohF,cAAc,UAAUphF,EAAE8oC,GAAExvC,KAAK,IAAI2G,EAAE,OAAOw1E,GAAE1D,GAAEqP,cAAc3L,GAAEn8E,KAAK,GAAG,OAAO2G,EAAEw1E,GAAEx1E,EAAE6oC,GAAE9oC,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMlK,MAAMk7E,EAAE,MAAUhxE,EAAE,CAACohF,eAAPt4C,GAAE9oC,GAAqBohF,cAAc4a,UAAUlzD,GAAEkzD,UAAUC,UAAUnzD,GAAEmzD,UAAUyE,MAAM53D,GAAE43D,MAAMpnG,KAAK,MAAM,OAAOm8E,GAAE1D,GAAEqP,cAAc3L,GAAEz1E,EAAEy1E,GAAEA,GAAEn8E,KAAK0G,EAAE,OAAOy1E,GAChe,SAASmrB,GAAG5gG,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,EAClD,SAASi2B,GAAGl2B,GAAG,IAAIC,EAAE0gG,KAAKl1G,EAAEwU,EAAEygG,MAAM,GAAG,OAAOj1G,EAAE,MAAMqK,MAAMk7E,EAAE,MAAMvlF,EAAEo1G,oBAAoB7gG,EAAE,IAAItU,EAAEo9C,GAAE3uC,EAAEzO,EAAEuwG,UAAUxvE,EAAEhhC,EAAE0wG,QAAQ,GAAG,OAAO1vE,EAAE,CAAC,GAAG,OAAOtyB,EAAE,CAAC,IAAIF,EAAEE,EAAEb,KAAKa,EAAEb,KAAKmzB,EAAEnzB,KAAKmzB,EAAEnzB,KAAKW,EAAEvO,EAAEuwG,UAAU9hG,EAAEsyB,EAAEhhC,EAAE0wG,QAAQ,KAAK,GAAG,OAAOhiG,EAAE,CAACA,EAAEA,EAAEb,KAAK5N,EAAEA,EAAEswG,UAAU,IAAI5uE,EAAEnzB,EAAEwyB,EAAE,KAAK1iB,EAAE5P,EAAE,EAAE,CAAC,IAAI9O,EAAE0e,EAAE0xF,eAAe,GAAGpwG,EAAE60G,GAAG,CAAC,IAAI10G,EAAE,CAACiwG,eAAe1xF,EAAE0xF,eAAec,eAAexyF,EAAEwyF,eAAev+F,OAAO+L,EAAE/L,OAAO8iG,aAAa/2F,EAAE+2F,aAAaC,WAAWh3F,EAAEg3F,WAAWznG,KAAK,MAAM,OAAO8zB,GAAGnzB,EAAEmzB,EAAE5hC,EAAEihC,EAAE/gC,GAAG0hC,EAAEA,EAAE9zB,KAAK9N,EAAEH,EAAE0mF,GAAE0pB,iBAC9e1pB,GAAE0pB,eAAepwG,EAAEwxG,GAAGxxG,SAAS,OAAO+hC,IAAIA,EAAEA,EAAE9zB,KAAK,CAACmiG,eAAe,WAAWc,eAAexyF,EAAEwyF,eAAev+F,OAAO+L,EAAE/L,OAAO8iG,aAAa/2F,EAAE+2F,aAAaC,WAAWh3F,EAAEg3F,WAAWznG,KAAK,OAAOsjG,GAAGvxG,EAAE0e,EAAEwyF,gBAAgB7wG,EAAEqe,EAAE+2F,eAAe9gG,EAAE+J,EAAEg3F,WAAW/gG,EAAEtU,EAAEqe,EAAE/L,QAAQ+L,EAAEA,EAAEzQ,WAAW,OAAOyQ,GAAGA,IAAI5P,GAAG,OAAOizB,EAAEX,EAAE/gC,EAAE0hC,EAAE9zB,KAAKW,EAAEu4F,GAAG9mG,EAAEuU,EAAEmhF,iBAAiBsa,IAAG,GAAIz7F,EAAEmhF,cAAc11F,EAAEuU,EAAE+7F,UAAUvvE,EAAExsB,EAAEg8F,UAAU7uE,EAAE3hC,EAAEu1G,kBAAkBt1G,EAAE,MAAM,CAACuU,EAAEmhF,cAAc31F,EAAEsS,UACxb,SAASkjG,GAAGjhG,GAAG,IAAIC,EAAE0gG,KAAKl1G,EAAEwU,EAAEygG,MAAM,GAAG,OAAOj1G,EAAE,MAAMqK,MAAMk7E,EAAE,MAAMvlF,EAAEo1G,oBAAoB7gG,EAAE,IAAItU,EAAED,EAAEsS,SAAS5D,EAAE1O,EAAE0wG,QAAQ1vE,EAAExsB,EAAEmhF,cAAc,GAAG,OAAOjnF,EAAE,CAAC1O,EAAE0wG,QAAQ,KAAK,IAAIliG,EAAEE,EAAEA,EAAEb,KAAK,GAAGmzB,EAAEzsB,EAAEysB,EAAExyB,EAAE+D,QAAQ/D,EAAEA,EAAEX,WAAWW,IAAIE,GAAGq4F,GAAG/lE,EAAExsB,EAAEmhF,iBAAiBsa,IAAG,GAAIz7F,EAAEmhF,cAAc30D,EAAE,OAAOxsB,EAAEg8F,YAAYh8F,EAAE+7F,UAAUvvE,GAAGhhC,EAAEu1G,kBAAkBv0E,EAAE,MAAM,CAACA,EAAE/gC,GACnV,SAASw1G,GAAGlhG,GAAG,IAAIC,EAAEwgG,KAAmL,MAA9K,oBAAoBzgG,IAAIA,EAAEA,KAAKC,EAAEmhF,cAAcnhF,EAAE+7F,UAAUh8F,EAAoFA,GAAlFA,EAAEC,EAAEygG,MAAM,CAACvE,QAAQ,KAAKp+F,SAAS,KAAK8iG,oBAAoBD,GAAGI,kBAAkBhhG,IAAOjC,SAASojG,GAAGv0G,KAAK,KAAKmlF,GAAE/xE,GAAS,CAACC,EAAEmhF,cAAcphF,GAAG,SAASohG,GAAGphG,EAAEC,EAAExU,EAAEC,GAAkO,OAA/NsU,EAAE,CAAC+K,IAAI/K,EAAEtT,OAAOuT,EAAEmc,QAAQ3wB,EAAE41G,KAAK31G,EAAE4N,KAAK,MAAsB,QAAhB2G,EAAE8xE,GAAEgqB,cAAsB97F,EAAE,CAACs+F,WAAW,MAAMxsB,GAAEgqB,YAAY97F,EAAEA,EAAEs+F,WAAWv+F,EAAE1G,KAAK0G,GAAmB,QAAfvU,EAAEwU,EAAEs+F,YAAoBt+F,EAAEs+F,WAAWv+F,EAAE1G,KAAK0G,GAAGtU,EAAED,EAAE6N,KAAK7N,EAAE6N,KAAK0G,EAAEA,EAAE1G,KAAK5N,EAAEuU,EAAEs+F,WAAWv+F,GAAWA,EAC7d,SAASshG,KAAK,OAAOX,KAAKvf,cAAc,SAASmgB,GAAGvhG,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAEsmG,KAAK1uB,GAAEmP,WAAWlhF,EAAE7F,EAAEinF,cAAcggB,GAAG,EAAEnhG,EAAExU,OAAE,OAAO,IAASC,EAAE,KAAKA,GAAG,SAAS81G,GAAGxhG,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAEwmG,KAAKj1G,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI+gC,OAAE,EAAO,GAAG,OAAOqc,GAAE,CAAC,IAAI7uC,EAAE6uC,GAAEs4C,cAA0B,GAAZ30D,EAAExyB,EAAEmiB,QAAW,OAAO1wB,GAAG00G,GAAG10G,EAAEuO,EAAEonG,MAAmB,YAAZD,GAAGnhG,EAAExU,EAAEghC,EAAE/gC,GAAWqmF,GAAEmP,WAAWlhF,EAAE7F,EAAEinF,cAAcggB,GAAG,EAAEnhG,EAAExU,EAAEghC,EAAE/gC,GAAG,SAAS+1G,GAAGzhG,EAAEC,GAAG,OAAOshG,GAAG,IAAI,EAAEvhG,EAAEC,GAAG,SAASyhG,GAAG1hG,EAAEC,GAAG,OAAOuhG,GAAG,IAAI,EAAExhG,EAAEC,GAAG,SAAS0hG,GAAG3hG,EAAEC,GAAG,OAAOuhG,GAAG,EAAE,EAAExhG,EAAEC,GACnc,SAAS2hG,GAAG5hG,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEmR,QAAQpR,EAAE,WAAWC,EAAEmR,QAAQ,YAAtE,EAA4E,SAASywF,GAAG7hG,EAAEC,EAAExU,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE0M,OAAO,CAAC6H,IAAI,KAAYwhG,GAAG,EAAE,EAAEI,GAAGh1G,KAAK,KAAKqT,EAAED,GAAGvU,GAAG,SAASq2G,MAAM,SAASC,GAAG/hG,EAAEC,GAA4C,OAAzCwgG,KAAKrf,cAAc,CAACphF,OAAE,IAASC,EAAE,KAAKA,GAAUD,EAAE,SAASgiG,GAAGhiG,EAAEC,GAAG,IAAIxU,EAAEk1G,KAAK1gG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIvU,EAAED,EAAE21F,cAAc,OAAG,OAAO11F,GAAG,OAAOuU,GAAGmgG,GAAGngG,EAAEvU,EAAE,IAAWA,EAAE,IAAGD,EAAE21F,cAAc,CAACphF,EAAEC,GAAUD,GAC/d,SAASiiG,GAAGjiG,EAAEC,GAAG,IAAIxU,EAAEk1G,KAAK1gG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIvU,EAAED,EAAE21F,cAAc,OAAG,OAAO11F,GAAG,OAAOuU,GAAGmgG,GAAGngG,EAAEvU,EAAE,IAAWA,EAAE,IAAGsU,EAAEA,IAAIvU,EAAE21F,cAAc,CAACphF,EAAEC,GAAUD,GAAE,SAASkiG,GAAGliG,EAAEC,EAAExU,GAAG,IAAIC,EAAE4uG,KAAKE,GAAG,GAAG9uG,EAAE,GAAGA,GAAE,WAAWsU,GAAE,MAAMw6F,GAAG,GAAG9uG,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEu0G,GAAG9pB,SAAS8pB,GAAG9pB,cAAS,IAASl2E,EAAE,KAAKA,EAAE,IAAID,GAAE,GAAIvU,IAAV,QAAsBw0G,GAAG9pB,SAASzqF,MACjU,SAASy1G,GAAGnhG,EAAEC,EAAExU,GAAG,IAAIC,EAAE0xG,KAAKjjG,EAAE4iG,GAAG5mB,SAAqBh8E,EAAE,CAACshG,eAAf/vG,EAAE2xG,GAAG3xG,EAAEsU,EAAE7F,GAAuBoiG,eAAepiG,EAAE6D,OAAOvS,EAAEq1G,aAAa,KAAKC,WAAW,KAAKznG,KAAK,MAAM,IAAImzB,EAAExsB,EAAEk8F,QAA6E,GAArE,OAAO1vE,EAAEtyB,EAAEb,KAAKa,GAAGA,EAAEb,KAAKmzB,EAAEnzB,KAAKmzB,EAAEnzB,KAAKa,GAAG8F,EAAEk8F,QAAQhiG,EAAEsyB,EAAEzsB,EAAEihF,UAAajhF,IAAI+xE,IAAG,OAAOtlD,GAAGA,IAAIslD,GAAEouB,IAAG,EAAGhmG,EAAEshG,eAAeyE,GAAGnuB,GAAE0pB,eAAeyE,OAAO,CAAC,GAAG,IAAIlgG,EAAEy7F,iBAAiB,OAAOhvE,GAAG,IAAIA,EAAEgvE,iBAA0C,QAAxBhvE,EAAExsB,EAAE4gG,qBAA8B,IAAI,IAAI5mG,EAAEgG,EAAE+gG,kBAAkB5zE,EAAEX,EAAExyB,EAAExO,GAAmC,GAAhC0O,EAAE2mG,aAAar0E,EAAEtyB,EAAE4mG,WAAW3zE,EAAKolE,GAAGplE,EAAEnzB,GAAG,OAAO,MAAM8P,IAAauzF,GAAGt9F,EAClgBtU,IACA,IAAI80G,GAAG,CAAC2B,YAAYxG,GAAG3jB,YAAY91C,GAAE+1C,WAAW/1C,GAAEi2C,UAAUj2C,GAAEk2C,oBAAoBl2C,GAAEm2C,gBAAgBn2C,GAAEo2C,QAAQp2C,GAAEq2C,WAAWr2C,GAAEs2C,OAAOt2C,GAAEu2C,SAASv2C,GAAEg2C,cAAch2C,GAAEkgE,aAAalgE,GAAEmgE,iBAAiBngE,GAAEogE,cAAcpgE,IAAGm+D,GAAG,CAAC8B,YAAYxG,GAAG3jB,YAAY+pB,GAAG9pB,WAAW0jB,GAAGxjB,UAAUspB,GAAGrpB,oBAAoB,SAASp4E,EAAEC,EAAExU,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE0M,OAAO,CAAC6H,IAAI,KAAYuhG,GAAG,EAAE,EAAEK,GAAGh1G,KAAK,KAAKqT,EAAED,GAAGvU,IAAI4sF,gBAAgB,SAASr4E,EAAEC,GAAG,OAAOshG,GAAG,EAAE,EAAEvhG,EAAEC,IAAIq4E,QAAQ,SAASt4E,EAAEC,GAAG,IAAIxU,EAAEg1G,KAC9c,OADmdxgG,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIvU,EAAE21F,cAAc,CAACphF,EACjgBC,GAAUD,GAAGu4E,WAAW,SAASv4E,EAAEC,EAAExU,GAAG,IAAIC,EAAE+0G,KAAuK,OAAlKxgG,OAAE,IAASxU,EAAEA,EAAEwU,GAAGA,EAAEvU,EAAE01F,cAAc11F,EAAEswG,UAAU/7F,EAAmFD,GAAjFA,EAAEtU,EAAEg1G,MAAM,CAACvE,QAAQ,KAAKp+F,SAAS,KAAK8iG,oBAAoB7gG,EAAEghG,kBAAkB/gG,IAAOlC,SAASojG,GAAGv0G,KAAK,KAAKmlF,GAAE/xE,GAAS,CAACtU,EAAE01F,cAAcphF,IAAIw4E,OAAO,SAASx4E,GAA4B,OAAdA,EAAE,CAACoR,QAAQpR,GAAhBygG,KAA4Brf,cAAcphF,GAAGy4E,SAASyoB,GAAGhpB,cAAc4pB,GAAGM,aAAatC,GAAGuC,iBAAiB,SAASriG,EAAEC,GAAG,IAAIxU,EAAEy1G,GAAGlhG,GAAGtU,EAAED,EAAE,GAAG0O,EAAE1O,EAAE,GAC9Y,OADiZg2G,IAAG,WAAW,IAAIh2G,EAAEw0G,GAAG9pB,SAAS8pB,GAAG9pB,cAAS,IAASl2E,EAAE,KAAKA,EAAE,IAAI9F,EAAE6F,GAAN,QAAiBigG,GAAG9pB,SAC9e1qF,KAAI,CAACuU,EAAEC,IAAWvU,GAAG42G,cAAc,SAAStiG,GAAG,IAAIC,EAAEihG,IAAG,GAAIz1G,EAAEwU,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAAC8hG,GAAGG,GAAGt1G,KAAK,KAAKqT,EAAED,GAAG,CAACC,EAAED,IAAIvU,KAAK60G,GAAG,CAAC6B,YAAYxG,GAAG3jB,YAAYgqB,GAAG/pB,WAAW0jB,GAAGxjB,UAAUupB,GAAGtpB,oBAAoBypB,GAAGxpB,gBAAgBspB,GAAGrpB,QAAQ2pB,GAAG1pB,WAAWriD,GAAGsiD,OAAO8oB,GAAG7oB,SAAS,WAAW,OAAOviD,GAAG0qE,KAAK1oB,cAAc4pB,GAAGM,aAAatC,GAAGuC,iBAAiB,SAASriG,EAAEC,GAAG,IAAIxU,EAAEyqC,GAAG0qE,IAAIl1G,EAAED,EAAE,GAAG0O,EAAE1O,EAAE,GAAyG,OAAtGi2G,IAAG,WAAW,IAAIj2G,EAAEw0G,GAAG9pB,SAAS8pB,GAAG9pB,cAAS,IAASl2E,EAAE,KAAKA,EAAE,IAAI9F,EAAE6F,GAAN,QAAiBigG,GAAG9pB,SAAS1qF,KAAI,CAACuU,EAAEC,IAAWvU,GAAG42G,cAAc,SAAStiG,GAAG,IAAIC,EACxgBi2B,GAAG0qE,IAAIn1G,EAAEwU,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAAC+hG,GAAGE,GAAGt1G,KAAK,KAAKqT,EAAED,GAAG,CAACC,EAAED,IAAIvU,KAAK80G,GAAG,CAAC4B,YAAYxG,GAAG3jB,YAAYgqB,GAAG/pB,WAAW0jB,GAAGxjB,UAAUupB,GAAGtpB,oBAAoBypB,GAAGxpB,gBAAgBspB,GAAGrpB,QAAQ2pB,GAAG1pB,WAAW0oB,GAAGzoB,OAAO8oB,GAAG7oB,SAAS,WAAW,OAAOwoB,GAAGL,KAAK1oB,cAAc4pB,GAAGM,aAAatC,GAAGuC,iBAAiB,SAASriG,EAAEC,GAAG,IAAIxU,EAAEw1G,GAAGL,IAAIl1G,EAAED,EAAE,GAAG0O,EAAE1O,EAAE,GAAyG,OAAtGi2G,IAAG,WAAW,IAAIj2G,EAAEw0G,GAAG9pB,SAAS8pB,GAAG9pB,cAAS,IAASl2E,EAAE,KAAKA,EAAE,IAAI9F,EAAE6F,GAAN,QAAiBigG,GAAG9pB,SAAS1qF,KAAI,CAACuU,EAAEC,IAAWvU,GAAG42G,cAAc,SAAStiG,GAAG,IAAIC,EAAEghG,GAAGL,IAAIn1G,EAAEwU,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAAC+hG,GAAGE,GAAGt1G,KAAK,KAC5fqT,EAAED,GAAG,CAACC,EAAED,IAAIvU,KAAK82G,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAG,SAASC,GAAG1iG,EAAEC,GAAG,IAAIxU,EAAEk3G,GAAG,EAAE,KAAK,KAAK,GAAGl3G,EAAEmzG,YAAY,UAAUnzG,EAAEwS,KAAK,UAAUxS,EAAE8uF,UAAUt6E,EAAExU,EAAEmyF,OAAO59E,EAAEvU,EAAEy1F,UAAU,EAAE,OAAOlhF,EAAEu+F,YAAYv+F,EAAEu+F,WAAWC,WAAW/yG,EAAEuU,EAAEu+F,WAAW9yG,GAAGuU,EAAEy+F,YAAYz+F,EAAEu+F,WAAW9yG,EAC1P,SAASm3G,GAAG5iG,EAAEC,GAAG,OAAOD,EAAE+K,KAAK,KAAK,EAAE,IAAItf,EAAEuU,EAAE/B,KAAyE,OAAO,QAA3EgC,EAAE,IAAIA,EAAE6tE,UAAUriF,EAAEwY,gBAAgBhE,EAAEiH,SAASjD,cAAc,KAAKhE,KAAmBD,EAAEu6E,UAAUt6E,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAE6iG,cAAc,IAAI5iG,EAAE6tE,SAAS,KAAK7tE,KAAYD,EAAEu6E,UAAUt6E,GAAE,GAAO,KAAK,GAAY,QAAQ,OAAM,GACtR,SAAS6iG,GAAG9iG,GAAG,GAAGyiG,GAAG,CAAC,IAAIxiG,EAAEuiG,GAAG,GAAGviG,EAAE,CAAC,IAAIxU,EAAEwU,EAAE,IAAI2iG,GAAG5iG,EAAEC,GAAG,CAAqB,KAApBA,EAAE4qF,GAAGp/F,EAAE+rD,gBAAqBorD,GAAG5iG,EAAEC,GAA+C,OAA3CD,EAAEkhF,WAAuB,KAAblhF,EAAEkhF,UAAgB,EAAEuhB,IAAG,OAAGF,GAAGviG,GAAS0iG,GAAGH,GAAG92G,GAAG82G,GAAGviG,EAAEwiG,GAAG3X,GAAG5qF,EAAE6tB,iBAAiB9tB,EAAEkhF,WAAuB,KAAblhF,EAAEkhF,UAAgB,EAAEuhB,IAAG,EAAGF,GAAGviG,GAAG,SAAS+iG,GAAG/iG,GAAG,IAAIA,EAAEA,EAAE49E,OAAO,OAAO59E,GAAG,IAAIA,EAAE+K,KAAK,IAAI/K,EAAE+K,KAAK,KAAK/K,EAAE+K,KAAK/K,EAAEA,EAAE49E,OAAO2kB,GAAGviG,EAC5T,SAASgjG,GAAGhjG,GAAG,GAAGA,IAAIuiG,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAG/iG,GAAGyiG,IAAG,GAAG,EAAG,IAAIxiG,EAAED,EAAE/B,KAAK,GAAG,IAAI+B,EAAE+K,KAAK,SAAS9K,GAAG,SAASA,IAAIyqF,GAAGzqF,EAAED,EAAE4/F,eAAe,IAAI3/F,EAAEuiG,GAAGviG,GAAGyiG,GAAG1iG,EAAEC,GAAGA,EAAE4qF,GAAG5qF,EAAEu3C,aAAmB,GAANurD,GAAG/iG,GAAM,KAAKA,EAAE+K,IAAI,CAAgD,KAA7B/K,EAAE,QAApBA,EAAEA,EAAEohF,eAAyBphF,EAAEqhF,WAAW,MAAW,MAAMvrF,MAAMk7E,EAAE,MAAMhxE,EAAE,CAAiB,IAAhBA,EAAEA,EAAEw3C,YAAgBv3C,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE8tE,SAAS,CAAC,IAAIriF,EAAEuU,EAAE8H,KAAK,GA9FpG,OA8FuGrc,EAAO,CAAC,GAAG,IAAIwU,EAAE,CAACuiG,GAAG3X,GAAG7qF,EAAEw3C,aAAa,MAAMx3C,EAAEC,QA9F7J,MA8FsKxU,GA9F/I,OA8FuJA,GA9F/J,OA8FuKA,GAAQwU,IAAID,EAAEA,EAAEw3C,YAAYgrD,GAAG,WAAWA,GAAGD,GAAG1X,GAAG7qF,EAAEu6E,UAAU/iC,aAAa,KAAK,OAAM,EAChf,SAASyrD,KAAKT,GAAGD,GAAG,KAAKE,IAAG,EAAG,IAAIS,GAAGnnB,EAAG3F,kBAAkBslB,IAAG,EAAG,SAAS56D,GAAE9gC,EAAEC,EAAExU,EAAEC,GAAGuU,EAAEi0C,MAAM,OAAOl0C,EAAEk/F,GAAGj/F,EAAE,KAAKxU,EAAEC,GAAGuzG,GAAGh/F,EAAED,EAAEk0C,MAAMzoD,EAAEC,GAAG,SAASy3G,GAAGnjG,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG1O,EAAEA,EAAEuW,OAAO,IAAIyqB,EAAExsB,EAAEoU,IAA8B,OAA1BknF,GAAGt7F,EAAE9F,GAAGzO,EAAEuqC,GAAGj2B,EAAEC,EAAExU,EAAEC,EAAE+gC,EAAEtyB,GAAM,OAAO6F,GAAI07F,IAA4Gz7F,EAAEihF,WAAW,EAAEpgD,GAAE9gC,EAAEC,EAAEvU,EAAEyO,GAAU8F,EAAEi0C,QAArIj0C,EAAE87F,YAAY/7F,EAAE+7F,YAAY97F,EAAEihF,YAAY,IAAIlhF,EAAEy7F,gBAAgBthG,IAAI6F,EAAEy7F,eAAe,GAAG2H,GAAGpjG,EAAEC,EAAE9F,IACtU,SAASkpG,GAAGrjG,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAG,GAAG,OAAOzsB,EAAE,CAAC,IAAI/F,EAAExO,EAAEwS,KAAK,MAAG,oBAAoBhE,GAAIqpG,GAAGrpG,SAAI,IAASA,EAAE8G,cAAc,OAAOtV,EAAEiW,cAAS,IAASjW,EAAEsV,eAAsDf,EAAE6+F,GAAGpzG,EAAEwS,KAAK,KAAKvS,EAAE,KAAKuU,EAAE1T,KAAKkgC,IAAKpY,IAAIpU,EAAEoU,IAAIrU,EAAE49E,OAAO39E,EAASA,EAAEi0C,MAAMl0C,IAA1GC,EAAE8K,IAAI,GAAG9K,EAAEhC,KAAKhE,EAAEspG,GAAGvjG,EAAEC,EAAEhG,EAAEvO,EAAEyO,EAAEsyB,IAAuF,OAAVxyB,EAAE+F,EAAEk0C,MAAS/5C,EAAEsyB,IAAItyB,EAAEF,EAAE2lG,eAA0Bn0G,EAAE,QAAdA,EAAEA,EAAEiW,SAAmBjW,EAAEinG,IAAKv4F,EAAEzO,IAAIsU,EAAEqU,MAAMpU,EAAEoU,KAAY+uF,GAAGpjG,EAAEC,EAAEwsB,IAAGxsB,EAAEihF,WAAW,GAAElhF,EAAE0+F,GAAGzkG,EAAEvO,IAAK2oB,IAAIpU,EAAEoU,IAAIrU,EAAE49E,OAAO39E,EAASA,EAAEi0C,MAAMl0C,GACnb,SAASujG,GAAGvjG,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAG,OAAO,OAAOzsB,GAAG0yF,GAAG1yF,EAAE4/F,cAAcl0G,IAAIsU,EAAEqU,MAAMpU,EAAEoU,MAAMqnF,IAAG,EAAGvhG,EAAEsyB,IAAIxsB,EAAEw7F,eAAez7F,EAAEy7F,eAAe2H,GAAGpjG,EAAEC,EAAEwsB,IAAI+2E,GAAGxjG,EAAEC,EAAExU,EAAEC,EAAE+gC,GAAG,SAASg3E,GAAGzjG,EAAEC,GAAG,IAAIxU,EAAEwU,EAAEoU,KAAO,OAAOrU,GAAG,OAAOvU,GAAG,OAAOuU,GAAGA,EAAEqU,MAAM5oB,KAAEwU,EAAEihF,WAAW,KAAI,SAASsiB,GAAGxjG,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,IAAIsyB,EAAE2oD,GAAE3pF,GAAGusG,GAAG13D,GAAElvB,QAA4C,OAApCqb,EAAEwrE,GAAGh4F,EAAEwsB,GAAG8uE,GAAGt7F,EAAE9F,GAAG1O,EAAEwqC,GAAGj2B,EAAEC,EAAExU,EAAEC,EAAE+gC,EAAEtyB,GAAM,OAAO6F,GAAI07F,IAA4Gz7F,EAAEihF,WAAW,EAAEpgD,GAAE9gC,EAAEC,EAAExU,EAAE0O,GAAU8F,EAAEi0C,QAArIj0C,EAAE87F,YAAY/7F,EAAE+7F,YAAY97F,EAAEihF,YAAY,IAAIlhF,EAAEy7F,gBAAgBthG,IAAI6F,EAAEy7F,eAAe,GAAG2H,GAAGpjG,EAAEC,EAAE9F,IAC3b,SAASupG,GAAG1jG,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,GAAGi7E,GAAE3pF,GAAG,CAAC,IAAIghC,GAAE,EAAG+rE,GAAGv4F,QAAQwsB,GAAE,EAAW,GAAR8uE,GAAGt7F,EAAE9F,GAAM,OAAO8F,EAAEs6E,UAAU,OAAOv6E,IAAIA,EAAEihF,UAAU,KAAKhhF,EAAEghF,UAAU,KAAKhhF,EAAEihF,WAAW,GAAGuc,GAAGx9F,EAAExU,EAAEC,GAAGmyG,GAAG59F,EAAExU,EAAEC,EAAEyO,GAAGzO,GAAE,OAAQ,GAAG,OAAOsU,EAAE,CAAC,IAAI/F,EAAEgG,EAAEs6E,UAAUntD,EAAEntB,EAAE2/F,cAAc3lG,EAAE6d,MAAMsV,EAAE,IAAIrjB,EAAE9P,EAAE0gE,QAAQtvE,EAAEI,EAAEoV,YAAY,kBAAkBxV,GAAG,OAAOA,EAAEA,EAAEswG,GAAGtwG,GAAwBA,EAAE4sG,GAAGh4F,EAAzB5U,EAAE+pF,GAAE3pF,GAAGusG,GAAG13D,GAAElvB,SAAmB,IAAI5lB,EAAEC,EAAEyV,yBAAyBhU,EAAE,oBAAoB1B,GAAG,oBAAoByO,EAAE6jG,wBAAwB5wG,GAAG,oBAAoB+M,EAAE2jG,kCACtd,oBAAoB3jG,EAAE0jG,4BAA4BvwE,IAAI1hC,GAAGqe,IAAI1e,IAAIqyG,GAAGz9F,EAAEhG,EAAEvO,EAAEL,GAAGqnC,IAAG,EAAG,IAAIzN,EAAEhlB,EAAEmhF,cAAcnnF,EAAEgF,MAAMgmB,EAAEy3E,GAAGz8F,EAAEvU,EAAEuO,EAAEE,GAAG4P,EAAE9J,EAAEmhF,cAAch0D,IAAI1hC,GAAGu5B,IAAIlb,GAAGorE,GAAE/jE,SAASshB,IAAI,oBAAoBlnC,IAAIyxG,GAAGh9F,EAAExU,EAAED,EAAEE,GAAGqe,EAAE9J,EAAEmhF,gBAAgBh0D,EAAEsF,IAAI6qE,GAAGt9F,EAAExU,EAAE2hC,EAAE1hC,EAAEu5B,EAAElb,EAAE1e,KAAK6B,GAAG,oBAAoB+M,EAAE8jG,2BAA2B,oBAAoB9jG,EAAE+jG,qBAAqB,oBAAoB/jG,EAAE+jG,oBAAoB/jG,EAAE+jG,qBAAqB,oBAAoB/jG,EAAE8jG,2BAA2B9jG,EAAE8jG,6BAA6B,oBACze9jG,EAAEgkG,oBAAoBh+F,EAAEihF,WAAW,KAAK,oBAAoBjnF,EAAEgkG,oBAAoBh+F,EAAEihF,WAAW,GAAGjhF,EAAE2/F,cAAcl0G,EAAEuU,EAAEmhF,cAAcr3E,GAAG9P,EAAE6d,MAAMpsB,EAAEuO,EAAEgF,MAAM8K,EAAE9P,EAAE0gE,QAAQtvE,EAAEK,EAAE0hC,IAAI,oBAAoBnzB,EAAEgkG,oBAAoBh+F,EAAEihF,WAAW,GAAGx1F,GAAE,QAASuO,EAAEgG,EAAEs6E,UAAU8hB,GAAGr8F,EAAEC,GAAGmtB,EAAEntB,EAAE2/F,cAAc3lG,EAAE6d,MAAM7X,EAAEhC,OAAOgC,EAAE2+F,YAAYxxE,EAAE0tE,GAAG76F,EAAEhC,KAAKmvB,GAAGrjB,EAAE9P,EAAE0gE,QAAwB,kBAAhBtvE,EAAEI,EAAEoV,cAAiC,OAAOxV,EAAEA,EAAEswG,GAAGtwG,GAAwBA,EAAE4sG,GAAGh4F,EAAzB5U,EAAE+pF,GAAE3pF,GAAGusG,GAAG13D,GAAElvB,UAAiDlkB,EAAE,oBAAhC1B,EAAEC,EAAEyV,2BAAmD,oBACjejH,EAAE6jG,0BAA0B,oBAAoB7jG,EAAE2jG,kCAAkC,oBAAoB3jG,EAAE0jG,4BAA4BvwE,IAAI1hC,GAAGqe,IAAI1e,IAAIqyG,GAAGz9F,EAAEhG,EAAEvO,EAAEL,GAAGqnC,IAAG,EAAG3oB,EAAE9J,EAAEmhF,cAAcnnF,EAAEgF,MAAM8K,EAAE2yF,GAAGz8F,EAAEvU,EAAEuO,EAAEE,GAAG8qB,EAAEhlB,EAAEmhF,cAAch0D,IAAI1hC,GAAGqe,IAAIkb,GAAGkwD,GAAE/jE,SAASshB,IAAI,oBAAoBlnC,IAAIyxG,GAAGh9F,EAAExU,EAAED,EAAEE,GAAGu5B,EAAEhlB,EAAEmhF,gBAAgB51F,EAAEknC,IAAI6qE,GAAGt9F,EAAExU,EAAE2hC,EAAE1hC,EAAEqe,EAAEkb,EAAE55B,KAAK6B,GAAG,oBAAoB+M,EAAE0pG,4BAA4B,oBAAoB1pG,EAAE2pG,sBAAsB,oBAAoB3pG,EAAE2pG,qBAAqB3pG,EAAE2pG,oBAAoBl4G,EACzfu5B,EAAE55B,GAAG,oBAAoB4O,EAAE0pG,4BAA4B1pG,EAAE0pG,2BAA2Bj4G,EAAEu5B,EAAE55B,IAAI,oBAAoB4O,EAAE4pG,qBAAqB5jG,EAAEihF,WAAW,GAAG,oBAAoBjnF,EAAE6jG,0BAA0B79F,EAAEihF,WAAW,OAAO,oBAAoBjnF,EAAE4pG,oBAAoBz2E,IAAIptB,EAAE4/F,eAAe71F,IAAI/J,EAAEohF,gBAAgBnhF,EAAEihF,WAAW,GAAG,oBAAoBjnF,EAAE6jG,yBAAyB1wE,IAAIptB,EAAE4/F,eAAe71F,IAAI/J,EAAEohF,gBAAgBnhF,EAAEihF,WAAW,KAAKjhF,EAAE2/F,cAAcl0G,EAAEuU,EAAEmhF,cAAcn8D,GAAGhrB,EAAE6d,MAAMpsB,EAAEuO,EAAEgF,MAAMgmB,EAAEhrB,EAAE0gE,QAAQtvE,EAAEK,EAAEF,IAClf,oBAAoByO,EAAE4pG,oBAAoBz2E,IAAIptB,EAAE4/F,eAAe71F,IAAI/J,EAAEohF,gBAAgBnhF,EAAEihF,WAAW,GAAG,oBAAoBjnF,EAAE6jG,yBAAyB1wE,IAAIptB,EAAE4/F,eAAe71F,IAAI/J,EAAEohF,gBAAgBnhF,EAAEihF,WAAW,KAAKx1F,GAAE,GAAI,OAAOo4G,GAAG9jG,EAAEC,EAAExU,EAAEC,EAAE+gC,EAAEtyB,GAC5O,SAAS2pG,GAAG9jG,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAGg3E,GAAGzjG,EAAEC,GAAG,IAAIhG,EAAE,KAAiB,GAAZgG,EAAEihF,WAAc,IAAIx1F,IAAIuO,EAAE,OAAOE,GAAGu+F,GAAGz4F,EAAExU,GAAE,GAAI23G,GAAGpjG,EAAEC,EAAEwsB,GAAG/gC,EAAEuU,EAAEs6E,UAAU2oB,GAAG9xF,QAAQnR,EAAE,IAAImtB,EAAEnzB,GAAG,oBAAoBxO,EAAEwV,yBAAyB,KAAKvV,EAAEsW,SAA2I,OAAlI/B,EAAEihF,WAAW,EAAE,OAAOlhF,GAAG/F,GAAGgG,EAAEi0C,MAAM+qD,GAAGh/F,EAAED,EAAEk0C,MAAM,KAAKznB,GAAGxsB,EAAEi0C,MAAM+qD,GAAGh/F,EAAE,KAAKmtB,EAAEX,IAAIqU,GAAE9gC,EAAEC,EAAEmtB,EAAEX,GAAGxsB,EAAEmhF,cAAc11F,EAAEuT,MAAM9E,GAAGu+F,GAAGz4F,EAAExU,GAAE,GAAWwU,EAAEi0C,MAAM,SAAS6vD,GAAG/jG,GAAG,IAAIC,EAAED,EAAEu6E,UAAUt6E,EAAE+jG,eAAe3L,GAAGr4F,EAAEC,EAAE+jG,eAAe/jG,EAAE+jG,iBAAiB/jG,EAAE06D,SAAS16D,EAAE06D,SAAS09B,GAAGr4F,EAAEC,EAAE06D,SAAQ,GAAI4kC,GAAGv/F,EAAEC,EAAE+iF,eACpe,IAOoXihB,GAAMC,GAAGC,GAPzXC,GAAG,CAAC/iB,WAAW,KAAKgjB,UAAU,GAClC,SAASC,GAAGtkG,EAAEC,EAAExU,GAAG,IAA+C2hC,EAA3C1hC,EAAEuU,EAAE1T,KAAK4N,EAAE8F,EAAE4iG,aAAap2E,EAAE8oD,GAAEnkE,QAAQnX,GAAE,EAAqN,IAA/MmzB,EAAE,KAAiB,GAAZntB,EAAEihF,cAAiB9zD,EAAE,KAAO,EAAFX,KAAO,OAAOzsB,GAAG,OAAOA,EAAEohF,gBAAgBh0D,GAAGnzB,GAAE,EAAGgG,EAAEihF,YAAY,IAAI,OAAOlhF,GAAG,OAAOA,EAAEohF,oBAAe,IAASjnF,EAAEoqG,WAAU,IAAKpqG,EAAEqqG,6BAA6B/3E,GAAG,GAAGwkD,GAAEsE,GAAI,EAAF9oD,GAAQ,OAAOzsB,EAAE,CAA4B,QAA3B,IAAS7F,EAAEoqG,UAAUzB,GAAG7iG,GAAMhG,EAAE,CAA6C,GAA5CA,EAAEE,EAAEoqG,UAASpqG,EAAE6kG,GAAG,KAAKtzG,EAAE,EAAE,OAAQkyF,OAAO39E,EAAK,KAAY,EAAPA,EAAE1T,MAAQ,IAAIyT,EAAE,OAAOC,EAAEmhF,cAAcnhF,EAAEi0C,MAAMA,MAAMj0C,EAAEi0C,MAAM/5C,EAAE+5C,MAAMl0C,EAAE,OAAOA,GAAGA,EAAE49E,OAAOzjF,EAAE6F,EAAEA,EAAEwhF,QAC3a,OADmb/1F,EAAEuzG,GAAG/kG,EAAEvO,EAAED,EAAE,OAAQmyF,OACjf39E,EAAE9F,EAAEqnF,QAAQ/1F,EAAEwU,EAAEmhF,cAAcgjB,GAAGnkG,EAAEi0C,MAAM/5C,EAAS1O,EAAoC,OAAlCC,EAAEyO,EAAE4a,SAAS9U,EAAEmhF,cAAc,KAAYnhF,EAAEi0C,MAAMgrD,GAAGj/F,EAAE,KAAKvU,EAAED,GAAG,GAAG,OAAOuU,EAAEohF,cAAc,CAAuB,GAAZ11F,GAAVsU,EAAEA,EAAEk0C,OAAUstC,QAAWvnF,EAAE,CAAgD,GAA/CE,EAAEA,EAAEoqG,UAAS94G,EAAEizG,GAAG1+F,EAAEA,EAAE6iG,eAAgBjlB,OAAO39E,EAAK,KAAY,EAAPA,EAAE1T,QAAU0N,EAAE,OAAOgG,EAAEmhF,cAAcnhF,EAAEi0C,MAAMA,MAAMj0C,EAAEi0C,SAAUl0C,EAAEk0C,MAAO,IAAIzoD,EAAEyoD,MAAMj6C,EAAE,OAAOA,GAAGA,EAAE2jF,OAAOnyF,EAAEwO,EAAEA,EAAEunF,QAA8F,OAAtF91F,EAAEgzG,GAAGhzG,EAAEyO,IAAKyjF,OAAO39E,EAAExU,EAAE+1F,QAAQ91F,EAAED,EAAE6vG,oBAAoB,EAAEr7F,EAAEmhF,cAAcgjB,GAAGnkG,EAAEi0C,MAAMzoD,EAASC,EAAoD,OAAlDD,EAAEwzG,GAAGh/F,EAAED,EAAEk0C,MAAM/5C,EAAE4a,SAAStpB,GAAGwU,EAAEmhF,cAAc,KAAYnhF,EAAEi0C,MACnfzoD,EAAY,GAAVuU,EAAEA,EAAEk0C,MAASj6C,EAAE,CAA8E,GAA7EA,EAAEE,EAAEoqG,UAASpqG,EAAE6kG,GAAG,KAAKtzG,EAAE,EAAE,OAAQkyF,OAAO39E,EAAE9F,EAAE+5C,MAAMl0C,EAAE,OAAOA,IAAIA,EAAE49E,OAAOzjF,GAAM,KAAY,EAAP8F,EAAE1T,MAAQ,IAAIyT,EAAE,OAAOC,EAAEmhF,cAAcnhF,EAAEi0C,MAAMA,MAAMj0C,EAAEi0C,MAAM/5C,EAAE+5C,MAAMl0C,EAAE,OAAOA,GAAGA,EAAE49E,OAAOzjF,EAAE6F,EAAEA,EAAEwhF,QAAoH,OAA5G/1F,EAAEuzG,GAAG/kG,EAAEvO,EAAED,EAAE,OAAQmyF,OAAO39E,EAAE9F,EAAEqnF,QAAQ/1F,EAAEA,EAAEy1F,WAAW,EAAE/mF,EAAEmhG,oBAAoB,EAAEr7F,EAAEmhF,cAAcgjB,GAAGnkG,EAAEi0C,MAAM/5C,EAAS1O,EAAuB,OAArBwU,EAAEmhF,cAAc,KAAYnhF,EAAEi0C,MAAM+qD,GAAGh/F,EAAED,EAAE7F,EAAE4a,SAAStpB,GAC1X,SAASg5G,GAAGzkG,EAAEC,GAAGD,EAAEy7F,eAAex7F,IAAID,EAAEy7F,eAAex7F,GAAG,IAAIxU,EAAEuU,EAAEihF,UAAU,OAAOx1F,GAAGA,EAAEgwG,eAAex7F,IAAIxU,EAAEgwG,eAAex7F,GAAGo7F,GAAGr7F,EAAE49E,OAAO39E,GAAG,SAAS4Y,GAAG7Y,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAG,IAAIxyB,EAAE+F,EAAEohF,cAAc,OAAOnnF,EAAE+F,EAAEohF,cAAc,CAACsjB,YAAYzkG,EAAE0kG,UAAU,KAAKC,mBAAmB,EAAE3zF,KAAKvlB,EAAE+d,KAAKhe,EAAEo5G,eAAe,EAAEC,SAAS3qG,EAAEokG,WAAW9xE,IAAIxyB,EAAEyqG,YAAYzkG,EAAEhG,EAAE0qG,UAAU,KAAK1qG,EAAE2qG,mBAAmB,EAAE3qG,EAAEgX,KAAKvlB,EAAEuO,EAAEwP,KAAKhe,EAAEwO,EAAE4qG,eAAe,EAAE5qG,EAAE6qG,SAAS3qG,EAAEF,EAAEskG,WAAW9xE,GACzb,SAASs4E,GAAG/kG,EAAEC,EAAExU,GAAG,IAAIC,EAAEuU,EAAE4iG,aAAa1oG,EAAEzO,EAAEm0G,YAAYpzE,EAAE/gC,EAAE+d,KAAqC,GAAhCq3B,GAAE9gC,EAAEC,EAAEvU,EAAEqpB,SAAStpB,GAAkB,KAAO,GAAtBC,EAAE6pF,GAAEnkE,UAAqB1lB,EAAI,EAAFA,EAAI,EAAEuU,EAAEihF,WAAW,OAAO,CAAC,GAAG,OAAOlhF,GAAG,KAAiB,GAAZA,EAAEkhF,WAAclhF,EAAE,IAAIA,EAAEC,EAAEi0C,MAAM,OAAOl0C,GAAG,CAAC,GAAG,KAAKA,EAAE+K,IAAI,OAAO/K,EAAEohF,eAAeqjB,GAAGzkG,EAAEvU,QAAQ,GAAG,KAAKuU,EAAE+K,IAAI05F,GAAGzkG,EAAEvU,QAAQ,GAAG,OAAOuU,EAAEk0C,MAAM,CAACl0C,EAAEk0C,MAAM0pC,OAAO59E,EAAEA,EAAEA,EAAEk0C,MAAM,SAAS,GAAGl0C,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEwhF,SAAS,CAAC,GAAG,OAAOxhF,EAAE49E,QAAQ59E,EAAE49E,SAAS39E,EAAE,MAAMD,EAAEA,EAAEA,EAAE49E,OAAO59E,EAAEwhF,QAAQ5D,OAAO59E,EAAE49E,OAAO59E,EAAEA,EAAEwhF,QAAQ91F,GAAG,EAAS,GAAPulF,GAAEsE,GAAE7pF,GAAM,KAAY,EAAPuU,EAAE1T,MAAQ0T,EAAEmhF,cAChf,UAAU,OAAOjnF,GAAG,IAAK,WAAqB,IAAV1O,EAAEwU,EAAEi0C,MAAU/5C,EAAE,KAAK,OAAO1O,GAAiB,QAAduU,EAAEvU,EAAEw1F,YAAoB,OAAO0e,GAAG3/F,KAAK7F,EAAE1O,GAAGA,EAAEA,EAAE+1F,QAAY,QAAJ/1F,EAAE0O,IAAYA,EAAE8F,EAAEi0C,MAAMj0C,EAAEi0C,MAAM,OAAO/5C,EAAE1O,EAAE+1F,QAAQ/1F,EAAE+1F,QAAQ,MAAM3oE,GAAG5Y,GAAE,EAAG9F,EAAE1O,EAAEghC,EAAExsB,EAAEs+F,YAAY,MAAM,IAAK,YAA6B,IAAjB9yG,EAAE,KAAK0O,EAAE8F,EAAEi0C,MAAUj0C,EAAEi0C,MAAM,KAAK,OAAO/5C,GAAG,CAAe,GAAG,QAAjB6F,EAAE7F,EAAE8mF,YAAuB,OAAO0e,GAAG3/F,GAAG,CAACC,EAAEi0C,MAAM/5C,EAAE,MAAM6F,EAAE7F,EAAEqnF,QAAQrnF,EAAEqnF,QAAQ/1F,EAAEA,EAAE0O,EAAEA,EAAE6F,EAAE6Y,GAAG5Y,GAAE,EAAGxU,EAAE,KAAKghC,EAAExsB,EAAEs+F,YAAY,MAAM,IAAK,WAAW1lF,GAAG5Y,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEs+F,YAAY,MAAM,QAAQt+F,EAAEmhF,cAAc,KAAK,OAAOnhF,EAAEi0C,MAC/f,SAASkvD,GAAGpjG,EAAEC,EAAExU,GAAG,OAAOuU,IAAIC,EAAE+5E,aAAah6E,EAAEg6E,cAAc,IAAItuF,EAAEuU,EAAEw7F,eAA4B,GAAb,IAAI/vG,GAAGmxG,GAAGnxG,GAAMuU,EAAEq7F,oBAAoB7vG,EAAE,OAAO,KAAK,GAAG,OAAOuU,GAAGC,EAAEi0C,QAAQl0C,EAAEk0C,MAAM,MAAMp+C,MAAMk7E,EAAE,MAAM,GAAG,OAAO/wE,EAAEi0C,MAAM,CAA4C,IAAjCzoD,EAAEizG,GAAZ1+F,EAAEC,EAAEi0C,MAAal0C,EAAE6iG,cAAc5iG,EAAEi0C,MAAMzoD,EAAMA,EAAEmyF,OAAO39E,EAAE,OAAOD,EAAEwhF,SAASxhF,EAAEA,EAAEwhF,SAAQ/1F,EAAEA,EAAE+1F,QAAQkd,GAAG1+F,EAAEA,EAAE6iG,eAAgBjlB,OAAO39E,EAAExU,EAAE+1F,QAAQ,KAAK,OAAOvhF,EAAEi0C,MAK5T,SAAS8wD,GAAGhlG,EAAEC,GAAG,OAAOD,EAAE8kG,UAAU,IAAK,SAAS7kG,EAAED,EAAEyJ,KAAK,IAAI,IAAIhe,EAAE,KAAK,OAAOwU,GAAG,OAAOA,EAAEghF,YAAYx1F,EAAEwU,GAAGA,EAAEA,EAAEuhF,QAAQ,OAAO/1F,EAAEuU,EAAEyJ,KAAK,KAAKhe,EAAE+1F,QAAQ,KAAK,MAAM,IAAK,YAAY/1F,EAAEuU,EAAEyJ,KAAK,IAAI,IAAI/d,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAEw1F,YAAYv1F,EAAED,GAAGA,EAAEA,EAAE+1F,QAAQ,OAAO91F,EAAEuU,GAAG,OAAOD,EAAEyJ,KAAKzJ,EAAEyJ,KAAK,KAAKzJ,EAAEyJ,KAAK+3E,QAAQ,KAAK91F,EAAE81F,QAAQ,MAC/W,SAASyjB,GAAGjlG,EAAEC,EAAExU,GAAG,IAAIC,EAAEuU,EAAE4iG,aAAa,OAAO5iG,EAAE8K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAAE,OAAOqqE,GAAEn1E,EAAEhC,OAAOm6F,KAAK,KAAK,KAAK,EAAE,OAAOoH,KAAK1qB,GAAEK,IAAGL,GAAEx0C,KAAG70C,EAAEwU,EAAEs6E,WAAYypB,iBAAiBv4G,EAAEkvE,QAAQlvE,EAAEu4G,eAAev4G,EAAEu4G,eAAe,MAAM,OAAOhkG,GAAG,OAAOA,EAAEk0C,QAAQ8uD,GAAG/iG,KAAKA,EAAEihF,WAAW,GAAS,KAAK,KAAK,EAAEwe,GAAGz/F,GAAGxU,EAAEw+B,GAAGq1E,GAAGluF,SAAS,IAAIjX,EAAE8F,EAAEhC,KAAK,GAAG,OAAO+B,GAAG,MAAMC,EAAEs6E,UAAU2pB,GAAGlkG,EAAEC,EAAE9F,EAAEzO,EAAED,GAAGuU,EAAEqU,MAAMpU,EAAEoU,MAAMpU,EAAEihF,WAAW,SAAS,CAAC,IAAIx1F,EAAE,CAAC,GAAG,OAAOuU,EAAEs6E,UAAU,MAAMzkF,MAAMk7E,EAAE,MACxgB,OAAO,KAAsB,GAAjBhxE,EAAEiqB,GAAGm1E,GAAGhuF,SAAY4xF,GAAG/iG,GAAG,CAACvU,EAAEuU,EAAEs6E,UAAUpgF,EAAE8F,EAAEhC,KAAK,IAAIwuB,EAAExsB,EAAE2/F,cAA8B,OAAhBl0G,EAAEs/F,IAAI/qF,EAAEvU,EAAEu/F,IAAIx+D,EAAStyB,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQg4C,GAAE,OAAOzmD,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIsU,EAAE,EAAEA,EAAEmyB,GAAG/hC,OAAO4P,IAAImyC,GAAEhgB,GAAGnyB,GAAGtU,GAAG,MAAM,IAAK,SAASymD,GAAE,QAAQzmD,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOymD,GAAE,QAAQzmD,GAAGymD,GAAE,OAAOzmD,GAAG,MAAM,IAAK,OAAOymD,GAAE,QAAQzmD,GAAGymD,GAAE,SAASzmD,GAAG,MAAM,IAAK,UAAUymD,GAAE,SAASzmD,GAAG,MAAM,IAAK,QAAQ8yF,GAAG9yF,EAAE+gC,GAAG0lB,GAAE,UAAUzmD,GAAGo+F,GAAGr+F,EAAE,YAAY,MAAM,IAAK,SAASC,EAAE4yF,cAC3e,CAAC4mB,cAAcz4E,EAAE+C,UAAU2iB,GAAE,UAAUzmD,GAAGo+F,GAAGr+F,EAAE,YAAY,MAAM,IAAK,WAAW0zF,GAAGzzF,EAAE+gC,GAAG0lB,GAAE,UAAUzmD,GAAGo+F,GAAGr+F,EAAE,YAA2B,IAAI,IAAIwO,KAAvByvF,GAAGvvF,EAAEsyB,GAAGzsB,EAAE,KAAkBysB,EAAE,GAAGA,EAAEx/B,eAAegN,GAAG,CAAC,IAAImzB,EAAEX,EAAExyB,GAAG,aAAaA,EAAE,kBAAkBmzB,EAAE1hC,EAAEyb,cAAcimB,IAAIptB,EAAE,CAAC,WAAWotB,IAAI,kBAAkBA,GAAG1hC,EAAEyb,cAAc,GAAGimB,IAAIptB,EAAE,CAAC,WAAW,GAAGotB,IAAI0sD,EAAG7sF,eAAegN,IAAI,MAAMmzB,GAAG08D,GAAGr+F,EAAEwO,GAAG,OAAOE,GAAG,IAAK,QAAQ4jF,GAAGryF,GAAGozF,GAAGpzF,EAAE+gC,GAAE,GAAI,MAAM,IAAK,WAAWsxD,GAAGryF,GAAG2zF,GAAG3zF,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoB+gC,EAAEhZ,UAC1f/nB,EAAE8tB,QAAQuwE,IAAIt+F,EAAEuU,EAAEC,EAAE87F,YAAYtwG,EAAE,OAAOA,IAAIwU,EAAEihF,WAAW,OAAO,CAAuY,OAAtYjnF,EAAE,IAAIxO,EAAEqiF,SAASriF,EAAEA,EAAE2sE,cAAcp4D,IAAI6pF,KAAK7pF,EAAEu/E,GAAGplF,IAAI6F,IAAI6pF,GAAG,WAAW1vF,IAAG6F,EAAE/F,EAAEyT,cAAc,QAASpG,UAAU,qBAAuBtH,EAAEA,EAAEqc,YAAYrc,EAAE8tB,aAAa,kBAAkBpiC,EAAEk+F,GAAG5pF,EAAE/F,EAAEyT,cAAcvT,EAAE,CAACyvF,GAAGl+F,EAAEk+F,MAAM5pF,EAAE/F,EAAEyT,cAAcvT,GAAG,WAAWA,IAAIF,EAAE+F,EAAEtU,EAAE8jC,SAASv1B,EAAEu1B,UAAS,EAAG9jC,EAAEw5D,OAAOjrD,EAAEirD,KAAKx5D,EAAEw5D,QAAQllD,EAAE/F,EAAEkrG,gBAAgBnlG,EAAE7F,GAAG6F,EAAEgrF,IAAI/qF,EAAED,EAAEirF,IAAIv/F,EAAEu4G,GAAGjkG,EAAEC,GAASA,EAAEs6E,UAAUv6E,EAAE/F,EAAE0vF,GAAGxvF,EAAEzO,GAAUyO,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQg4C,GAAE,OAC9fnyC,GAAGotB,EAAE1hC,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI0hC,EAAE,EAAEA,EAAE+E,GAAG/hC,OAAOg9B,IAAI+kB,GAAEhgB,GAAG/E,GAAGptB,GAAGotB,EAAE1hC,EAAE,MAAM,IAAK,SAASymD,GAAE,QAAQnyC,GAAGotB,EAAE1hC,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOymD,GAAE,QAAQnyC,GAAGmyC,GAAE,OAAOnyC,GAAGotB,EAAE1hC,EAAE,MAAM,IAAK,OAAOymD,GAAE,QAAQnyC,GAAGmyC,GAAE,SAASnyC,GAAGotB,EAAE1hC,EAAE,MAAM,IAAK,UAAUymD,GAAE,SAASnyC,GAAGotB,EAAE1hC,EAAE,MAAM,IAAK,QAAQ8yF,GAAGx+E,EAAEtU,GAAG0hC,EAAEgxD,GAAGp+E,EAAEtU,GAAGymD,GAAE,UAAUnyC,GAAG8pF,GAAGr+F,EAAE,YAAY,MAAM,IAAK,SAAS2hC,EAAE2xD,GAAG/+E,EAAEtU,GAAG,MAAM,IAAK,SAASsU,EAAEs+E,cAAc,CAAC4mB,cAAcx5G,EAAE8jC,UAAUpC,EAAEvgC,EAAE,GAAGnB,EAAE,CAACW,WAAM,IAAS8lD,GAAE,UAAUnyC,GAAG8pF,GAAGr+F,EAAE,YAAY,MAAM,IAAK,WAAW0zF,GAAGn/E,EACtgBtU,GAAG0hC,EAAE8xD,GAAGl/E,EAAEtU,GAAGymD,GAAE,UAAUnyC,GAAG8pF,GAAGr+F,EAAE,YAAY,MAAM,QAAQ2hC,EAAE1hC,EAAEg+F,GAAGvvF,EAAEizB,GAAG,IAAIrjB,EAAEqjB,EAAE,IAAIX,KAAK1iB,EAAE,GAAGA,EAAE9c,eAAew/B,GAAG,CAAC,IAAIphC,EAAE0e,EAAE0iB,GAAG,UAAUA,EAAEk8D,GAAG3oF,EAAE3U,GAAG,4BAA4BohC,EAAuB,OAApBphC,EAAEA,EAAEA,EAAEypB,YAAO,IAAgB4qE,GAAG1/E,EAAE3U,GAAI,aAAaohC,EAAE,kBAAkBphC,GAAG,aAAa8O,GAAG,KAAK9O,IAAIy0F,GAAG9/E,EAAE3U,GAAG,kBAAkBA,GAAGy0F,GAAG9/E,EAAE,GAAG3U,GAAG,mCAAmCohC,GAAG,6BAA6BA,GAAG,cAAcA,IAAIqtD,EAAG7sF,eAAew/B,GAAG,MAAMphC,GAAGy+F,GAAGr+F,EAAEghC,GAAG,MAAMphC,GAAG2wF,EAAGh8E,EAAEysB,EAAEphC,EAAE4O,IAAI,OAAOE,GAAG,IAAK,QAAQ4jF,GAAG/9E,GAAG8+E,GAAG9+E,EAAEtU,GAAE,GACnf,MAAM,IAAK,WAAWqyF,GAAG/9E,GAAGq/E,GAAGr/E,GAAG,MAAM,IAAK,SAAS,MAAMtU,EAAEW,OAAO2T,EAAEwH,aAAa,QAAQ,GAAGq2E,GAAGnyF,EAAEW,QAAQ,MAAM,IAAK,SAAS2T,EAAEwvB,WAAW9jC,EAAE8jC,SAAmB,OAAV/jC,EAAEC,EAAEW,OAAc4yF,GAAGj/E,IAAItU,EAAE8jC,SAAS/jC,GAAE,GAAI,MAAMC,EAAEmL,cAAcooF,GAAGj/E,IAAItU,EAAE8jC,SAAS9jC,EAAEmL,cAAa,GAAI,MAAM,QAAQ,oBAAoBu2B,EAAE3Z,UAAUzT,EAAEwZ,QAAQuwE,IAAIU,GAAGtwF,EAAEzO,KAAKuU,EAAEihF,WAAW,GAAG,OAAOjhF,EAAEoU,MAAMpU,EAAEihF,WAAW,KAAK,OAAO,KAAK,KAAK,EAAE,GAAGlhF,GAAG,MAAMC,EAAEs6E,UAAU4pB,GAAGnkG,EAAEC,EAAED,EAAE4/F,cAAcl0G,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOuU,EAAEs6E,UAAU,MAAMzkF,MAAMk7E,EAAE,MACvfvlF,EAAEw+B,GAAGq1E,GAAGluF,SAAS6Y,GAAGm1E,GAAGhuF,SAAS4xF,GAAG/iG,IAAIxU,EAAEwU,EAAEs6E,UAAU7uF,EAAEuU,EAAE2/F,cAAcn0G,EAAEu/F,IAAI/qF,EAAExU,EAAEm3C,YAAYl3C,IAAIuU,EAAEihF,WAAW,MAAKz1F,GAAG,IAAIA,EAAEqiF,SAASriF,EAAEA,EAAE2sE,eAAep+C,eAAetuB,IAAKs/F,IAAI/qF,EAAEA,EAAEs6E,UAAU9uF,GAAG,OAAO,KAAK,KAAK,GAA0B,OAAvBqpF,GAAES,IAAG7pF,EAAEuU,EAAEmhF,cAAiB,KAAiB,GAAZnhF,EAAEihF,YAAqBjhF,EAAEw7F,eAAehwG,EAAEwU,IAAExU,EAAE,OAAOC,EAAEA,GAAE,EAAG,OAAOsU,OAAE,IAASC,EAAE2/F,cAAc2E,UAAUvB,GAAG/iG,IAAsBvU,EAAE,QAApByO,EAAE6F,EAAEohF,eAAyB31F,GAAG,OAAO0O,GAAsB,QAAlBA,EAAE6F,EAAEk0C,MAAMstC,WAAmC,QAAhB/0D,EAAExsB,EAAEw+F,cAAsBx+F,EAAEw+F,YAAYtkG,EAAEA,EAAEqkG,WAAW/xE,IAAIxsB,EAAEw+F,YAAYx+F,EAAEs+F,WACtfpkG,EAAEA,EAAEqkG,WAAW,MAAMrkG,EAAE+mF,UAAU,IAAQz1F,IAAIC,GAAG,KAAY,EAAPuU,EAAE1T,QAAW,OAAOyT,IAAG,IAAKC,EAAE2/F,cAAc4E,4BAA4B,KAAe,EAAVjvB,GAAEnkE,SAAWwgE,KAAIwzB,KAAKxzB,GAAEyzB,KAAYzzB,KAAIwzB,IAAIxzB,KAAIyzB,KAAGzzB,GAAE0zB,IAAG,IAAIC,IAAI,OAAO7zB,KAAI8zB,GAAG9zB,GAAEG,IAAG4zB,GAAG/zB,GAAE6zB,QAAQ95G,GAAGC,KAAEuU,EAAEihF,WAAW,GAAS,MAAK,KAAK,EAAE,OAAOse,KAAW,KAAK,KAAK,GAAG,OAAOpE,GAAGn7F,GAAG,KAAK,KAAK,GAAG,OAAOm1E,GAAEn1E,EAAEhC,OAAOm6F,KAAK,KAAK,KAAK,GAA0B,GAAvBtjB,GAAES,IAAwB,QAArB7pF,EAAEuU,EAAEmhF,eAA0B,OAAO,KAA0C,GAArCjnF,EAAE,KAAiB,GAAZ8F,EAAEihF,WAA+B,QAAjBz0D,EAAE/gC,EAAEi5G,YAAsB,GAAGxqG,EAAE6qG,GAAGt5G,GAAE,QAAS,GAAGkmF,KAAIwzB,IAAI,OAAOplG,GAAG,KAC9e,GADmfA,EAAEkhF,WACjf,IAAIz0D,EAAExsB,EAAEi0C,MAAM,OAAOznB,GAAG,CAAS,GAAG,QAAXzsB,EAAE2/F,GAAGlzE,IAAe,CAAyJ,IAAxJxsB,EAAEihF,WAAW,GAAG8jB,GAAGt5G,GAAE,GAAoB,QAAhByO,EAAE6F,EAAE+7F,eAAuB97F,EAAE87F,YAAY5hG,EAAE8F,EAAEihF,WAAW,GAAG,OAAOx1F,EAAE6yG,aAAat+F,EAAEw+F,YAAY,MAAMx+F,EAAEs+F,WAAW7yG,EAAE6yG,WAAe7yG,EAAEuU,EAAEi0C,MAAM,OAAOxoD,GAAO+gC,EAAEhhC,GAAN0O,EAAEzO,GAAQw1F,WAAW,EAAE/mF,EAAEqkG,WAAW,KAAKrkG,EAAEskG,YAAY,KAAKtkG,EAAEokG,WAAW,KAAmB,QAAdv+F,EAAE7F,EAAE8mF,YAAoB9mF,EAAEmhG,oBAAoB,EAAEnhG,EAAEshG,eAAehvE,EAAEtyB,EAAE+5C,MAAM,KAAK/5C,EAAEylG,cAAc,KAAKzlG,EAAEinF,cAAc,KAAKjnF,EAAE4hG,YAAY,KAAK5hG,EAAE6/E,aAAa,OAAO7/E,EAAEmhG,oBAAoBt7F,EAAEs7F,oBAC3enhG,EAAEshG,eAAez7F,EAAEy7F,eAAethG,EAAE+5C,MAAMl0C,EAAEk0C,MAAM/5C,EAAEylG,cAAc5/F,EAAE4/F,cAAczlG,EAAEinF,cAAcphF,EAAEohF,cAAcjnF,EAAE4hG,YAAY/7F,EAAE+7F,YAAYtvE,EAAEzsB,EAAEg6E,aAAa7/E,EAAE6/E,aAAa,OAAOvtD,EAAE,KAAK,CAACgvE,eAAehvE,EAAEgvE,eAAeD,aAAa/uE,EAAE+uE,aAAaK,WAAWpvE,EAAEovE,aAAanwG,EAAEA,EAAE81F,QAA2B,OAAnBvQ,GAAEsE,GAAY,EAAVA,GAAEnkE,QAAU,GAAUnR,EAAEi0C,MAAMznB,EAAEA,EAAE+0D,aAAa,CAAC,IAAIrnF,EAAE,GAAW,QAAR6F,EAAE2/F,GAAGlzE,KAAa,GAAGxsB,EAAEihF,WAAW,GAAG/mF,GAAE,EAAmB,QAAhB1O,EAAEuU,EAAE+7F,eAAuB97F,EAAE87F,YAAYtwG,EAAEwU,EAAEihF,WAAW,GAAG8jB,GAAGt5G,GAAE,GAAI,OAAOA,EAAE+d,MAAM,WAAW/d,EAAEo5G,WAAWr4E,EAAEw0D,UAAU,OACne,QAD0ehhF,EACpgBA,EAAEs+F,WAAW7yG,EAAE6yG,cAAsBt+F,EAAEu+F,WAAW,MAAM,UAAU,EAAEnE,KAAK3uG,EAAEk5G,mBAAmBl5G,EAAEm5G,gBAAgB,EAAEp5G,IAAIwU,EAAEihF,WAAW,GAAG/mF,GAAE,EAAG6qG,GAAGt5G,GAAE,GAAIuU,EAAEw7F,eAAex7F,EAAEq7F,oBAAoB7vG,EAAE,GAAGC,EAAEg5G,aAAaj4E,EAAE+0D,QAAQvhF,EAAEi0C,MAAMj0C,EAAEi0C,MAAMznB,IAAa,QAAThhC,EAAEC,EAAEulB,MAAcxlB,EAAE+1F,QAAQ/0D,EAAExsB,EAAEi0C,MAAMznB,EAAE/gC,EAAEulB,KAAKwb,GAAG,OAAO,OAAO/gC,EAAE+d,MAAM,IAAI/d,EAAEm5G,iBAAiBn5G,EAAEm5G,eAAexK,KAAK,KAAK5uG,EAAEC,EAAE+d,KAAK/d,EAAEi5G,UAAUl5G,EAAEC,EAAE+d,KAAKhe,EAAE+1F,QAAQ91F,EAAE6yG,WAAWt+F,EAAEs+F,WAAW7yG,EAAEk5G,mBAAmBvK,KAAK5uG,EAAE+1F,QAAQ,KAAKvhF,EAAEs1E,GAAEnkE,QAAQ6/D,GAAEsE,GAAEp7E,EAAI,EAAF8F,EAAI,EAAI,EAAFA,GAAKxU,GAAG,KAAK,MAAMqK,MAAMk7E,EAAE,IACrgB/wE,EAAE8K,MAAO,SAAS26F,GAAG1lG,GAAG,OAAOA,EAAE+K,KAAK,KAAK,EAAEqqE,GAAEp1E,EAAE/B,OAAOm6F,KAAK,IAAIn4F,EAAED,EAAEkhF,UAAU,OAAS,KAAFjhF,GAAQD,EAAEkhF,WAAa,KAAHjhF,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAA+B,GAA7Bw/F,KAAK1qB,GAAEK,IAAGL,GAAEx0C,IAAoB,KAAO,IAAxBrgC,EAAED,EAAEkhF,YAAwB,MAAMprF,MAAMk7E,EAAE,MAA6B,OAAvBhxE,EAAEkhF,WAAa,KAAHjhF,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAO0/F,GAAG1/F,GAAG,KAAK,KAAK,GAAG,OAAO80E,GAAES,IAAmB,MAAhBt1E,EAAED,EAAEkhF,YAAkBlhF,EAAEkhF,WAAa,KAAHjhF,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAO80E,GAAES,IAAG,KAAK,KAAK,EAAE,OAAOiqB,KAAK,KAAK,KAAK,GAAG,OAAOpE,GAAGp7F,GAAG,KAAK,QAAQ,OAAO,MAAM,SAAS2lG,GAAG3lG,EAAEC,GAAG,MAAM,CAAC5T,MAAM2T,EAAE3P,OAAO4P,EAAE0E,MAAM44E,GAAGt9E,IAjBvdgkG,GAAG,SAASjkG,EAAEC,GAAG,IAAI,IAAIxU,EAAEwU,EAAEi0C,MAAM,OAAOzoD,GAAG,CAAC,GAAG,IAAIA,EAAEsf,KAAK,IAAItf,EAAEsf,IAAI/K,EAAEyN,YAAYhiB,EAAE8uF,gBAAgB,GAAG,IAAI9uF,EAAEsf,KAAK,OAAOtf,EAAEyoD,MAAM,CAACzoD,EAAEyoD,MAAM0pC,OAAOnyF,EAAEA,EAAEA,EAAEyoD,MAAM,SAAS,GAAGzoD,IAAIwU,EAAE,MAAM,KAAK,OAAOxU,EAAE+1F,SAAS,CAAC,GAAG,OAAO/1F,EAAEmyF,QAAQnyF,EAAEmyF,SAAS39E,EAAE,OAAOxU,EAAEA,EAAEmyF,OAAOnyF,EAAE+1F,QAAQ5D,OAAOnyF,EAAEmyF,OAAOnyF,EAAEA,EAAE+1F,UAChS0iB,GAAG,SAASlkG,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,IAAIsyB,EAAEzsB,EAAE4/F,cAAc,GAAGnzE,IAAI/gC,EAAE,CAAC,IAAsW0hC,EAAErjB,EAApW9P,EAAEgG,EAAEs6E,UAAgC,OAAtBtwD,GAAGm1E,GAAGhuF,SAASpR,EAAE,KAAYvU,GAAG,IAAK,QAAQghC,EAAE2xD,GAAGnkF,EAAEwyB,GAAG/gC,EAAE0yF,GAAGnkF,EAAEvO,GAAGsU,EAAE,GAAG,MAAM,IAAK,SAASysB,EAAEsyD,GAAG9kF,EAAEwyB,GAAG/gC,EAAEqzF,GAAG9kF,EAAEvO,GAAGsU,EAAE,GAAG,MAAM,IAAK,SAASysB,EAAE5/B,EAAE,GAAG4/B,EAAE,CAACpgC,WAAM,IAASX,EAAEmB,EAAE,GAAGnB,EAAE,CAACW,WAAM,IAAS2T,EAAE,GAAG,MAAM,IAAK,WAAWysB,EAAEyyD,GAAGjlF,EAAEwyB,GAAG/gC,EAAEwzF,GAAGjlF,EAAEvO,GAAGsU,EAAE,GAAG,MAAM,QAAQ,oBAAoBysB,EAAEhZ,SAAS,oBAAoB/nB,EAAE+nB,UAAUxZ,EAAEuf,QAAQuwE,IAA2B,IAAI38D,KAA3Bs8D,GAAGj+F,EAAEC,GAAWD,EAAE,KAAcghC,EAAE,IAAI/gC,EAAEuB,eAAemgC,IAAIX,EAAEx/B,eAAemgC,IAAI,MAAMX,EAAEW,GAAG,GAAG,UAC/eA,EAAE,IAAIrjB,KAAK9P,EAAEwyB,EAAEW,GAAKnzB,EAAEhN,eAAe8c,KAAKte,IAAIA,EAAE,IAAIA,EAAEse,GAAG,QAAQ,4BAA4BqjB,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAI0sD,EAAG7sF,eAAemgC,GAAGptB,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI/R,KAAKm/B,EAAE,OAAO,IAAIA,KAAK1hC,EAAE,CAAC,IAAIL,EAAEK,EAAE0hC,GAAyB,GAAtBnzB,EAAE,MAAMwyB,EAAEA,EAAEW,QAAG,EAAU1hC,EAAEuB,eAAemgC,IAAI/hC,IAAI4O,IAAI,MAAM5O,GAAG,MAAM4O,GAAG,GAAG,UAAUmzB,EAAE,GAAGnzB,EAAE,CAAC,IAAI8P,KAAK9P,GAAGA,EAAEhN,eAAe8c,IAAI1e,GAAGA,EAAE4B,eAAe8c,KAAKte,IAAIA,EAAE,IAAIA,EAAEse,GAAG,IAAI,IAAIA,KAAK1e,EAAEA,EAAE4B,eAAe8c,IAAI9P,EAAE8P,KAAK1e,EAAE0e,KAAKte,IAAIA,EAAE,IACpfA,EAAEse,GAAG1e,EAAE0e,SAASte,IAAIuU,IAAIA,EAAE,IAAIA,EAAE/R,KAAKm/B,EAAE3hC,IAAIA,EAAEJ,MAAM,4BAA4B+hC,GAAG/hC,EAAEA,EAAEA,EAAEypB,YAAO,EAAO7a,EAAEA,EAAEA,EAAE6a,YAAO,EAAO,MAAMzpB,GAAG4O,IAAI5O,IAAI2U,EAAEA,GAAG,IAAI/R,KAAKm/B,EAAE/hC,IAAI,aAAa+hC,EAAEnzB,IAAI5O,GAAG,kBAAkBA,GAAG,kBAAkBA,IAAI2U,EAAEA,GAAG,IAAI/R,KAAKm/B,EAAE,GAAG/hC,GAAG,mCAAmC+hC,GAAG,6BAA6BA,IAAI0sD,EAAG7sF,eAAemgC,IAAI,MAAM/hC,GAAGy+F,GAAG3vF,EAAEizB,GAAGptB,GAAG/F,IAAI5O,IAAI2U,EAAE,MAAMA,EAAEA,GAAG,IAAI/R,KAAKm/B,EAAE/hC,IAAII,IAAIuU,EAAEA,GAAG,IAAI/R,KAAK,QAAQxC,GAAG0O,EAAE6F,GAAKC,EAAE87F,YAAY5hG,KAAE8F,EAAEihF,WAAW,KAC5cijB,GAAG,SAASnkG,EAAEC,EAAExU,EAAEC,GAAGD,IAAIC,IAAIuU,EAAEihF,WAAW,IAc1C,IAAI0kB,GAAG,oBAAoBC,QAAQA,QAAQl5B,IAAI,SAASm5B,GAAG9lG,EAAEC,GAAG,IAAIxU,EAAEwU,EAAE5P,OAAO3E,EAAEuU,EAAE0E,MAAM,OAAOjZ,GAAG,OAAOD,IAAIC,EAAE6xF,GAAG9xF,IAAI,OAAOA,GAAG6xF,GAAG7xF,EAAEwS,MAAMgC,EAAEA,EAAE5T,MAAM,OAAO2T,GAAG,IAAIA,EAAE+K,KAAKuyE,GAAGt9E,EAAE/B,MAAM,IAAI/L,QAAQC,MAAM8N,GAAG,MAAM9F,GAAGyR,YAAW,WAAW,MAAMzR,MAAsH,SAAS4rG,GAAG/lG,GAAG,IAAIC,EAAED,EAAEqU,IAAI,GAAG,OAAOpU,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAMxU,GAAGu6G,GAAGhmG,EAAEvU,QAAQwU,EAAEmR,QAAQ,KACld,SAAS60F,GAAGjmG,EAAEC,GAAG,OAAOA,EAAE8K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,EAAE,GAAe,IAAZ9K,EAAEihF,WAAe,OAAOlhF,EAAE,CAAC,IAAIvU,EAAEuU,EAAE4/F,cAAcl0G,EAAEsU,EAAEohF,cAA4BnhF,GAAdD,EAAEC,EAAEs6E,WAAcujB,wBAAwB79F,EAAE2+F,cAAc3+F,EAAEhC,KAAKxS,EAAEqvG,GAAG76F,EAAEhC,KAAKxS,GAAGC,GAAGsU,EAAEkmG,oCAAoCjmG,EAAE,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,MAAMnK,MAAMk7E,EAAE,MAC7U,SAASm1B,GAAGnmG,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE87F,aAAuB97F,EAAEs+F,WAAW,MAAiB,CAAC,IAAI9yG,EAAEwU,EAAEA,EAAE3G,KAAK,EAAE,CAAC,IAAI7N,EAAEsf,IAAI/K,KAAKA,EAAE,CAAC,IAAItU,EAAED,EAAE2wB,QAAQ3wB,EAAE2wB,aAAQ,OAAO,IAAS1wB,GAAGA,IAAID,EAAEA,EAAE6N,WAAW7N,IAAIwU,IAAI,SAASmmG,GAAGpmG,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE87F,aAAuB97F,EAAEs+F,WAAW,MAAiB,CAAC,IAAI9yG,EAAEwU,EAAEA,EAAE3G,KAAK,EAAE,CAAC,IAAI7N,EAAEsf,IAAI/K,KAAKA,EAAE,CAAC,IAAItU,EAAED,EAAEiB,OAAOjB,EAAE2wB,QAAQ1wB,IAAID,EAAEA,EAAE6N,WAAW7N,IAAIwU,IACtV,SAASomG,GAAGrmG,EAAEC,EAAExU,GAAG,OAAOA,EAAEsf,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAARq7F,GAAG,EAAE36G,GAAU,KAAK,EAAgB,GAAduU,EAAEvU,EAAE8uF,UAAyB,EAAZ9uF,EAAEy1F,UAAY,GAAG,OAAOjhF,EAAED,EAAEi+F,wBAAwB,CAAC,IAAIvyG,EAAED,EAAEmzG,cAAcnzG,EAAEwS,KAAKgC,EAAE2/F,cAAc9E,GAAGrvG,EAAEwS,KAAKgC,EAAE2/F,eAAe5/F,EAAE6jG,mBAAmBn4G,EAAEuU,EAAEmhF,cAAcphF,EAAEkmG,qCAAyE,YAApB,QAAhBjmG,EAAExU,EAAEswG,cAAsBe,GAAGrxG,EAAEwU,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAExU,EAAEswG,aAAwB,CAAQ,GAAP/7F,EAAE,KAAQ,OAAOvU,EAAEyoD,MAAM,OAAOzoD,EAAEyoD,MAAMnpC,KAAK,KAAK,EAAE/K,EAAEvU,EAAEyoD,MAAMqmC,UAAU,MAAM,KAAK,EAAEv6E,EAAEvU,EAAEyoD,MAAMqmC,UAAUuiB,GAAGrxG,EAAEwU,EAAED,GAAG,OACpf,KAAK,EAA+E,OAA7EA,EAAEvU,EAAE8uF,eAAU,OAAOt6E,GAAe,EAAZxU,EAAEy1F,WAAauJ,GAAGh/F,EAAEwS,KAAKxS,EAAEm0G,gBAAgB5/F,EAAEsa,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GAAG,OAAO,KAAK,GAAoH,YAAjH,OAAO7uB,EAAE21F,gBAAgB31F,EAAEA,EAAEw1F,UAAU,OAAOx1F,IAAIA,EAAEA,EAAE21F,cAAc,OAAO31F,IAAIA,EAAEA,EAAE41F,WAAW,OAAO51F,GAAG25F,GAAG35F,OAAa,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,MAAMqK,MAAMk7E,EAAE,MAC3T,SAASs1B,GAAGtmG,EAAEC,EAAExU,GAAiC,OAA9B,oBAAoB86G,IAAIA,GAAGtmG,GAAUA,EAAE8K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB/K,EAAEC,EAAE87F,cAAyC,QAAf/7F,EAAEA,EAAEu+F,YAAqB,CAAC,IAAI7yG,EAAEsU,EAAE1G,KAAKkhG,GAAG,GAAG/uG,EAAE,GAAGA,GAAE,WAAW,IAAIuU,EAAEtU,EAAE,EAAE,CAAC,IAAID,EAAEuU,EAAEoc,QAAQ,QAAG,IAAS3wB,EAAE,CAAC,IAAIwO,EAAEgG,EAAE,IAAIxU,IAAI,MAAM2hC,GAAG44E,GAAG/rG,EAAEmzB,IAAIptB,EAAEA,EAAE1G,WAAW0G,IAAItU,MAAK,MAAM,KAAK,EAAEq6G,GAAG9lG,GAAiB,oBAAdxU,EAAEwU,EAAEs6E,WAAgCisB,sBALxG,SAAYxmG,EAAEC,GAAG,IAAIA,EAAE6X,MAAM9X,EAAE4/F,cAAc3/F,EAAEhB,MAAMe,EAAEohF,cAAcnhF,EAAEumG,uBAAuB,MAAM/6G,GAAGu6G,GAAGhmG,EAAEvU,IAKkBg7G,CAAGxmG,EAAExU,GAAG,MAAM,KAAK,EAAEs6G,GAAG9lG,GAAG,MAAM,KAAK,EAAEymG,GAAG1mG,EAAEC,EAAExU,IACna,SAASk7G,GAAG3mG,GAAG,IAAIC,EAAED,EAAEihF,UAAUjhF,EAAE49E,OAAO,KAAK59E,EAAEk0C,MAAM,KAAKl0C,EAAEohF,cAAc,KAAKphF,EAAE+7F,YAAY,KAAK/7F,EAAEg6E,aAAa,KAAKh6E,EAAEihF,UAAU,KAAKjhF,EAAEy+F,YAAY,KAAKz+F,EAAEu+F,WAAW,KAAKv+F,EAAE6iG,aAAa,KAAK7iG,EAAE4/F,cAAc,KAAK5/F,EAAEu6E,UAAU,KAAK,OAAOt6E,GAAG0mG,GAAG1mG,GAAG,SAAS2mG,GAAG5mG,GAAG,OAAO,IAAIA,EAAE+K,KAAK,IAAI/K,EAAE+K,KAAK,IAAI/K,EAAE+K,IAC1S,SAAS87F,GAAG7mG,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAE49E,OAAO,OAAO39E,GAAG,CAAC,GAAG2mG,GAAG3mG,GAAG,CAAC,IAAIxU,EAAEwU,EAAE,MAAMD,EAAEC,EAAEA,EAAE29E,OAAO,MAAM9nF,MAAMk7E,EAAE,MAAqB,OAAd/wE,EAAExU,EAAE8uF,UAAiB9uF,EAAEsf,KAAK,KAAK,EAAE,IAAIrf,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEuU,EAAEA,EAAE+iF,cAAct3F,GAAE,EAAG,MAAM,QAAQ,MAAMoK,MAAMk7E,EAAE,MAAmB,GAAZvlF,EAAEy1F,YAAepB,GAAG7/E,EAAE,IAAIxU,EAAEy1F,YAAY,IAAIlhF,EAAEC,EAAE,IAAIxU,EAAEuU,IAAI,CAAC,KAAK,OAAOvU,EAAE+1F,SAAS,CAAC,GAAG,OAAO/1F,EAAEmyF,QAAQgpB,GAAGn7G,EAAEmyF,QAAQ,CAACnyF,EAAE,KAAK,MAAMuU,EAAEvU,EAAEA,EAAEmyF,OAAiC,IAA1BnyF,EAAE+1F,QAAQ5D,OAAOnyF,EAAEmyF,OAAWnyF,EAAEA,EAAE+1F,QAAQ,IAAI/1F,EAAEsf,KAAK,IAAItf,EAAEsf,KAAK,KAAKtf,EAAEsf,KAAK,CAAC,GAAe,EAAZtf,EAAEy1F,UAAY,SAASjhF,EACvf,GAAG,OAAOxU,EAAEyoD,OAAO,IAAIzoD,EAAEsf,IAAI,SAAS9K,EAAOxU,EAAEyoD,MAAM0pC,OAAOnyF,EAAEA,EAAEA,EAAEyoD,MAAM,KAAiB,EAAZzoD,EAAEy1F,WAAa,CAACz1F,EAAEA,EAAE8uF,UAAU,MAAMv6E,GAAGtU,EACpH,SAASo7G,EAAG9mG,EAAEC,EAAExU,GAAG,IAAIC,EAAEsU,EAAE+K,IAAI5Q,EAAE,IAAIzO,GAAG,IAAIA,EAAE,GAAGyO,EAAE6F,EAAE7F,EAAE6F,EAAEu6E,UAAUv6E,EAAEu6E,UAAUtiE,SAAShY,EAAE,IAAIxU,EAAEqiF,SAASriF,EAAE4vB,WAAW5V,aAAazF,EAAEC,GAAGxU,EAAEga,aAAazF,EAAEC,IAAI,IAAIxU,EAAEqiF,UAAU7tE,EAAExU,EAAE4vB,YAAa5V,aAAazF,EAAEvU,IAAKwU,EAAExU,GAAIgiB,YAAYzN,GAA4B,QAAxBvU,EAAEA,EAAEs7G,2BAA8B,IAASt7G,GAAG,OAAOwU,EAAEuZ,UAAUvZ,EAAEuZ,QAAQuwE,UAAU,GAAG,IAAIr+F,GAAc,QAAVsU,EAAEA,EAAEk0C,OAAgB,IAAI4yD,EAAG9mG,EAAEC,EAAExU,GAAGuU,EAAEA,EAAEwhF,QAAQ,OAAOxhF,GAAG8mG,EAAG9mG,EAAEC,EAAExU,GAAGuU,EAAEA,EAAEwhF,QADxRslB,CAAG9mG,EAAEvU,EAAEwU,GAE7H,SAAS+mG,EAAGhnG,EAAEC,EAAExU,GAAG,IAAIC,EAAEsU,EAAE+K,IAAI5Q,EAAE,IAAIzO,GAAG,IAAIA,EAAE,GAAGyO,EAAE6F,EAAE7F,EAAE6F,EAAEu6E,UAAUv6E,EAAEu6E,UAAUtiE,SAAShY,EAAExU,EAAEga,aAAazF,EAAEC,GAAGxU,EAAEgiB,YAAYzN,QAAQ,GAAG,IAAItU,GAAc,QAAVsU,EAAEA,EAAEk0C,OAAgB,IAAI8yD,EAAGhnG,EAAEC,EAAExU,GAAGuU,EAAEA,EAAEwhF,QAAQ,OAAOxhF,GAAGgnG,EAAGhnG,EAAEC,EAAExU,GAAGuU,EAAEA,EAAEwhF,QAFrFwlB,CAAGhnG,EAAEvU,EAAEwU,GAGvI,SAASymG,GAAG1mG,EAAEC,EAAExU,GAAG,IAAI,IAAaghC,EAAExyB,EAAXvO,EAAEuU,EAAE9F,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEzO,EAAEkyF,OAAO59E,EAAE,OAAO,CAAC,GAAG,OAAO7F,EAAE,MAAMrE,MAAMk7E,EAAE,MAAoB,OAAdvkD,EAAEtyB,EAAEogF,UAAiBpgF,EAAE4Q,KAAK,KAAK,EAAE9Q,GAAE,EAAG,MAAM+F,EAAE,KAAK,EAAiC,KAAK,EAAEysB,EAAEA,EAAEu2D,cAAc/oF,GAAE,EAAG,MAAM+F,EAAE7F,EAAEA,EAAEyjF,OAAOzjF,GAAE,EAAG,GAAG,IAAIzO,EAAEqf,KAAK,IAAIrf,EAAEqf,IAAI,CAAC/K,EAAE,IAAI,IAAIotB,EAAEptB,EAAE+J,EAAEre,EAAEL,EAAEI,EAAED,EAAEue,IAAI,GAAGu8F,GAAGl5E,EAAE5hC,EAAEH,GAAG,OAAOG,EAAE0oD,OAAO,IAAI1oD,EAAEuf,IAAIvf,EAAE0oD,MAAM0pC,OAAOpyF,EAAEA,EAAEA,EAAE0oD,UAAU,CAAC,GAAG1oD,IAAIue,EAAE,MAAM/J,EAAE,KAAK,OAAOxU,EAAEg2F,SAAS,CAAC,GAAG,OAAOh2F,EAAEoyF,QAAQpyF,EAAEoyF,SAAS7zE,EAAE,MAAM/J,EAAExU,EAAEA,EAAEoyF,OAAOpyF,EAAEg2F,QAAQ5D,OAAOpyF,EAAEoyF,OAAOpyF,EAAEA,EAAEg2F,QAAQvnF,GAAGmzB,EACrfX,EAAE1iB,EAAEre,EAAE6uF,UAAU,IAAIntD,EAAE0gD,SAAS1gD,EAAE/R,WAAWgB,YAAYtS,GAAGqjB,EAAE/Q,YAAYtS,IAAI0iB,EAAEpQ,YAAY3wB,EAAE6uF,gBAAgB,GAAG,IAAI7uF,EAAEqf,KAAK,GAAG,OAAOrf,EAAEwoD,MAAM,CAACznB,EAAE/gC,EAAE6uF,UAAUyI,cAAc/oF,GAAE,EAAGvO,EAAEwoD,MAAM0pC,OAAOlyF,EAAEA,EAAEA,EAAEwoD,MAAM,eAAe,GAAGoyD,GAAGtmG,EAAEtU,EAAED,GAAG,OAAOC,EAAEwoD,MAAM,CAACxoD,EAAEwoD,MAAM0pC,OAAOlyF,EAAEA,EAAEA,EAAEwoD,MAAM,SAAS,GAAGxoD,IAAIuU,EAAE,MAAM,KAAK,OAAOvU,EAAE81F,SAAS,CAAC,GAAG,OAAO91F,EAAEkyF,QAAQlyF,EAAEkyF,SAAS39E,EAAE,OAAkB,KAAXvU,EAAEA,EAAEkyF,QAAa7yE,MAAM5Q,GAAE,GAAIzO,EAAE81F,QAAQ5D,OAAOlyF,EAAEkyF,OAAOlyF,EAAEA,EAAE81F,SACpa,SAASylB,GAAGjnG,EAAEC,GAAG,OAAOA,EAAE8K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAARo7F,GAAG,EAAElmG,GAAU,KAAK,EAAE,OAAO,KAAK,EAAE,IAAIxU,EAAEwU,EAAEs6E,UAAU,GAAG,MAAM9uF,EAAE,CAAC,IAAIC,EAAEuU,EAAE2/F,cAAczlG,EAAE,OAAO6F,EAAEA,EAAE4/F,cAAcl0G,EAAEsU,EAAEC,EAAEhC,KAAK,IAAIwuB,EAAExsB,EAAE87F,YAA+B,GAAnB97F,EAAE87F,YAAY,KAAQ,OAAOtvE,EAAE,CAAgF,IAA/EhhC,EAAEw/F,IAAIv/F,EAAE,UAAUsU,GAAG,UAAUtU,EAAEuS,MAAM,MAAMvS,EAAEC,MAAMgzF,GAAGlzF,EAAEC,GAAGi+F,GAAG3pF,EAAE7F,GAAG8F,EAAE0pF,GAAG3pF,EAAEtU,GAAOyO,EAAE,EAAEA,EAAEsyB,EAAEr8B,OAAO+J,GAAG,EAAE,CAAC,IAAIF,EAAEwyB,EAAEtyB,GAAGizB,EAAEX,EAAEtyB,EAAE,GAAG,UAAUF,EAAE0uF,GAAGl9F,EAAE2hC,GAAG,4BAA4BnzB,EAAEylF,GAAGj0F,EAAE2hC,GAAG,aAAanzB,EAAE6lF,GAAGr0F,EAAE2hC,GAAG4uD,EAAGvwF,EAAEwO,EAAEmzB,EAAEntB,GAAG,OAAOD,GAAG,IAAK,QAAQ4+E,GAAGnzF,EAAEC,GAAG,MAChf,IAAK,WAAW0zF,GAAG3zF,EAAEC,GAAG,MAAM,IAAK,SAASuU,EAAExU,EAAE6yF,cAAc4mB,YAAYz5G,EAAE6yF,cAAc4mB,cAAcx5G,EAAE8jC,SAAmB,OAAVxvB,EAAEtU,EAAEW,OAAc4yF,GAAGxzF,IAAIC,EAAE8jC,SAASxvB,GAAE,GAAIC,MAAMvU,EAAE8jC,WAAW,MAAM9jC,EAAEmL,aAAaooF,GAAGxzF,IAAIC,EAAE8jC,SAAS9jC,EAAEmL,cAAa,GAAIooF,GAAGxzF,IAAIC,EAAE8jC,SAAS9jC,EAAE8jC,SAAS,GAAG,IAAG,MAAO,OAAO,KAAK,EAAE,GAAG,OAAOvvB,EAAEs6E,UAAU,MAAMzkF,MAAMk7E,EAAE,MAA4C,YAAtC/wE,EAAEs6E,UAAU33C,UAAU3iC,EAAE2/F,eAAqB,KAAK,EAA8D,aAA5D3/F,EAAEA,EAAEs6E,WAAYqK,UAAU3kF,EAAE2kF,SAAQ,EAAGQ,GAAGnlF,EAAE+iF,iBAAuB,KAAK,GAAG,OAAO,KAAK,GACzb,GAD4bv3F,EAAEwU,EAAE,OAAOA,EAAEmhF,cACve11F,GAAE,GAAIA,GAAE,EAAGD,EAAEwU,EAAEi0C,MAAMgzD,GAAG7M,MAAS,OAAO5uG,EAAEuU,EAAE,IAAIA,EAAEvU,IAAI,CAAC,GAAG,IAAIuU,EAAE+K,IAAI0hB,EAAEzsB,EAAEu6E,UAAU7uF,EAAa,oBAAV+gC,EAAEA,EAAE5Z,OAA4B+1E,YAAYn8D,EAAEm8D,YAAY,UAAU,OAAO,aAAan8D,EAAElW,QAAQ,QAASkW,EAAEzsB,EAAEu6E,UAAkCpgF,OAAE,KAA1BA,EAAE6F,EAAE4/F,cAAc/sF,QAAoB,OAAO1Y,GAAGA,EAAElN,eAAe,WAAWkN,EAAEoc,QAAQ,KAAKkW,EAAE5Z,MAAM0D,QAAQmyE,GAAG,UAAUvuF,SAAS,GAAG,IAAI6F,EAAE+K,IAAI/K,EAAEu6E,UAAU33C,UAAUl3C,EAAE,GAAGsU,EAAE4/F,kBAAmB,IAAG,KAAK5/F,EAAE+K,KAAK,OAAO/K,EAAEohF,eAAe,OAAOphF,EAAEohF,cAAcC,WAAW,EAAC50D,EAAEzsB,EAAEk0C,MAAMstC,SAAU5D,OAAO59E,EAAEA,EACnfysB,EAAE,SAAc,GAAG,OAAOzsB,EAAEk0C,MAAM,CAACl0C,EAAEk0C,MAAM0pC,OAAO59E,EAAEA,EAAEA,EAAEk0C,MAAM,UAAS,GAAGl0C,IAAIvU,EAAE,MAAM,KAAK,OAAOuU,EAAEwhF,SAAS,CAAC,GAAG,OAAOxhF,EAAE49E,QAAQ59E,EAAE49E,SAASnyF,EAAE,MAAMuU,EAAEA,EAAEA,EAAE49E,OAAO59E,EAAEwhF,QAAQ5D,OAAO59E,EAAE49E,OAAO59E,EAAEA,EAAEwhF,QAAc,YAAN2lB,GAAGlnG,GAAU,KAAK,GAAS,YAANknG,GAAGlnG,GAAU,KAAK,GAAG,OAAO,MAAMnK,MAAMk7E,EAAE,MAAO,SAASm2B,GAAGnnG,GAAG,IAAIC,EAAED,EAAE+7F,YAAY,GAAG,OAAO97F,EAAE,CAACD,EAAE+7F,YAAY,KAAK,IAAItwG,EAAEuU,EAAEu6E,UAAU,OAAO9uF,IAAIA,EAAEuU,EAAEu6E,UAAU,IAAIqrB,IAAI3lG,EAAE3P,SAAQ,SAAS2P,GAAG,IAAIvU,EAAE07G,GAAGx6G,KAAK,KAAKoT,EAAEC,GAAGxU,EAAE03F,IAAIljF,KAAKxU,EAAE8Y,IAAItE,GAAGA,EAAElF,KAAKrP,EAAEA,QAC/c,IAAI27G,GAAG,oBAAoBvmB,QAAQA,QAAQ3U,IAAI,SAASm7B,GAAGtnG,EAAEC,EAAExU,IAAGA,EAAE6wG,GAAG7wG,EAAE,OAAQsf,IAAI,EAAEtf,EAAEsnF,QAAQ,CAAC16E,QAAQ,MAAM,IAAI3M,EAAEuU,EAAE5T,MAAsD,OAAhDZ,EAAE0a,SAAS,WAAWohG,KAAKA,IAAG,EAAGC,GAAG97G,GAAGo6G,GAAG9lG,EAAEC,IAAWxU,EACrL,SAASg8G,GAAGznG,EAAEC,EAAExU,IAAGA,EAAE6wG,GAAG7wG,EAAE,OAAQsf,IAAI,EAAE,IAAIrf,EAAEsU,EAAE/B,KAAKgD,yBAAyB,GAAG,oBAAoBvV,EAAE,CAAC,IAAIyO,EAAE8F,EAAE5T,MAAMZ,EAAEsnF,QAAQ,WAAmB,OAAR+yB,GAAG9lG,EAAEC,GAAUvU,EAAEyO,IAAI,IAAIsyB,EAAEzsB,EAAEu6E,UAA8O,OAApO,OAAO9tD,GAAG,oBAAoBA,EAAEi7E,oBAAoBj8G,EAAE0a,SAAS,WAAW,oBAAoBza,IAAI,OAAOi8G,GAAGA,GAAG,IAAIh7B,IAAI,CAACzyE,OAAOytG,GAAGpjG,IAAIrK,MAAM4rG,GAAG9lG,EAAEC,IAAI,IAAIxU,EAAEwU,EAAE0E,MAAMzK,KAAKwtG,kBAAkBznG,EAAE5T,MAAM,CAACu7G,eAAe,OAAOn8G,EAAEA,EAAE,OAAcA,EAC7Z,IA+B+To8G,GA/B3TC,GAAGv4G,KAAKsyE,KAAKkmC,GAAGhsB,EAAG9F,uBAAuB+xB,GAAGjsB,EAAG3F,kBAAuCgvB,GAAG,EAAYC,GAAG,EAAEC,GAAG,EAAO1vB,GAAjD,EAAqDlE,GAAE,KAAKoE,GAAE,KAAKjE,GAAE,EAAED,GAAEwzB,GAAG6C,GAAG,KAAKC,GAAG,WAAWC,GAAG,WAAWC,GAAG,KAAK7C,GAAG,EAAE8C,IAAG,EAAGnB,GAAG,EAASnxB,GAAE,KAAKwxB,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKW,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAE,SAASxL,KAAK,OAAxO,KAAgP,GAADxnB,IAAe,YAAYykB,KAAK,GAAG,GAAG,IAAIuO,GAAGA,GAAGA,GAAG,YAAYvO,KAAK,GAAG,GAC9X,SAASgD,GAAGr9F,EAAEC,EAAExU,GAAY,GAAG,KAAO,GAAnBwU,EAAEA,EAAE1T,OAAkB,OAAO,WAAW,IAAIb,EAAE4uG,KAAK,GAAG,KAAO,EAAFr6F,GAAK,OAAO,KAAKvU,EAAE,WAAW,WAAW,GAD/C,KAAU,GACyCkqF,IAAU,OAAO/D,GAAE,GAAG,OAAOpmF,EAAEuU,EAAE66F,GAAG76F,EAAc,EAAZvU,EAAEo9G,WAAa,IAAI,UAAU,OAAOn9G,GAAG,KAAK,GAAGsU,EAAE,WAAW,MAAM,KAAK,GAAGA,EAAE66F,GAAG76F,EAAE,IAAI,KAAK,MAAM,KAAK,GAAG,KAAK,GAAGA,EAAE66F,GAAG76F,EAAE,IAAI,KAAK,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,QAAQ,MAAMlK,MAAMk7E,EAAE,MAA4B,OAArB,OAAOU,IAAG1xE,IAAI6xE,MAAK7xE,EAASA,EAClX,SAASs9F,GAAGt9F,EAAEC,GAAG,GAAG,GAAGyoG,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK7yG,MAAMk7E,EAAE,MAAgB,GAAG,QAAbhxE,EAAE8oG,GAAG9oG,EAAEC,IAAe,CAAC,IAAIxU,EAAE6uG,KAAK,aAAar6F,EAFlC,KAAK,EAEgC21E,KAFrC,KAEkD,GAADA,IAAemzB,GAAG/oG,IAAIiyE,GAAEjyE,GAFzE,IAE4E41E,IAAOglB,MAAM3oB,GAAEjyE,GAF3F,KAEiG,EAAF41E,KAAU,KAAKnqF,GAAG,KAAKA,IAAI,OAAOg9G,GAAGA,GAAG,IAAIt8B,IAAI,CAAC,CAACnsE,EAAEC,WAAmB,KAAbxU,EAAEg9G,GAAGx8G,IAAI+T,KAAgBvU,EAAEwU,IAAIwoG,GAAGpmF,IAAIriB,EAAEC,KACzQ,SAAS6oG,GAAG9oG,EAAEC,GAAGD,EAAEy7F,eAAex7F,IAAID,EAAEy7F,eAAex7F,GAAG,IAAIxU,EAAEuU,EAAEihF,UAAU,OAAOx1F,GAAGA,EAAEgwG,eAAex7F,IAAIxU,EAAEgwG,eAAex7F,GAAG,IAAIvU,EAAEsU,EAAE49E,OAAOzjF,EAAE,KAAK,GAAG,OAAOzO,GAAG,IAAIsU,EAAE+K,IAAI5Q,EAAE6F,EAAEu6E,eAAe,KAAK,OAAO7uF,GAAG,CAA+H,GAA9HD,EAAEC,EAAEu1F,UAAUv1F,EAAE4vG,oBAAoBr7F,IAAIvU,EAAE4vG,oBAAoBr7F,GAAG,OAAOxU,GAAGA,EAAE6vG,oBAAoBr7F,IAAIxU,EAAE6vG,oBAAoBr7F,GAAM,OAAOvU,EAAEkyF,QAAQ,IAAIlyF,EAAEqf,IAAI,CAAC5Q,EAAEzO,EAAE6uF,UAAU,MAAM7uF,EAAEA,EAAEkyF,OAA0D,OAAnD,OAAOzjF,IAAIu3E,KAAIv3E,IAAI0iG,GAAG58F,GAAG2xE,KAAI0zB,IAAIE,GAAGrrG,EAAE03E,KAAI4zB,GAAGtrG,EAAE8F,IAAW9F,EACrc,SAAS6uG,GAAGhpG,GAAG,IAAIC,EAAED,EAAEipG,gBAAgB,GAAG,IAAIhpG,EAAE,OAAOA,EAAuB,IAAIipG,GAAGlpG,EAA5BC,EAAED,EAAEmpG,kBAA6B,OAAOlpG,EAAE,IAAIxU,EAAEuU,EAAEopG,eAAmD,OAAO,IAAjBppG,EAAEvU,GAA5BuU,EAAEA,EAAEqpG,uBAA4B59G,EAAEuU,IAAeC,IAAID,EAAE,EAAEA,EACnL,SAASiyE,GAAEjyE,GAAG,GAAG,IAAIA,EAAEipG,gBAAgBjpG,EAAEspG,uBAAuB,WAAWtpG,EAAEupG,iBAAiB,GAAGvpG,EAAEwpG,aAAa9O,GAAGqO,GAAGn8G,KAAK,KAAKoT,QAAQ,CAAC,IAAIC,EAAE+oG,GAAGhpG,GAAGvU,EAAEuU,EAAEwpG,aAAa,GAAG,IAAIvpG,EAAE,OAAOxU,IAAIuU,EAAEwpG,aAAa,KAAKxpG,EAAEspG,uBAAuB,EAAEtpG,EAAEupG,iBAAiB,QAAQ,CAAC,IAAI79G,EAAE0xG,KAAqH,GAAhH,aAAan9F,EAAEvU,EAAE,GAAG,IAAIuU,GAAG,IAAIA,EAAEvU,EAAE,GAA0CA,EAAE,IAAxCA,EAAE,IAAI,WAAWuU,GAAG,IAAI,WAAWvU,IAAU,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,GAAO,OAAOD,EAAE,CAAC,IAAI0O,EAAE6F,EAAEupG,iBAAiB,GAAGvpG,EAAEspG,yBAAyBrpG,GAAG9F,GAAGzO,EAAE,OAAOD,IAAIouG,IAAIhB,GAAGptG,GAAGuU,EAAEspG,uBACnerpG,EAAED,EAAEupG,iBAAiB79G,EAAEuU,EAAE,aAAaA,EAAEy6F,GAAGqO,GAAGn8G,KAAK,KAAKoT,IAAIy6F,GAAG/uG,EAAE+9G,GAAG78G,KAAK,KAAKoT,GAAG,CAACusD,QAAQ,IAAI,WAAWtsD,GAAGo6F,OAAOr6F,EAAEwpG,aAAavpG,IAClI,SAASwpG,GAAGzpG,EAAEC,GAAQ,GAAL2oG,GAAG,EAAK3oG,EAAE,OAAcypG,GAAG1pG,EAAVC,EAAEm9F,MAAanrB,GAAEjyE,GAAG,KAAK,IAAIvU,EAAEu9G,GAAGhpG,GAAG,GAAG,IAAIvU,EAAE,CAAkB,GAAjBwU,EAAED,EAAEwpG,aAPb,KAO+B,GAAD5zB,IAAe,MAAM9/E,MAAMk7E,EAAE,MAAiC,GAA3B24B,KAAK3pG,IAAI0xE,IAAGjmF,IAAIomF,IAAG+3B,GAAG5pG,EAAEvU,GAAM,OAAOqqF,GAAE,CAAC,IAAIpqF,EAAEkqF,GAAEA,IAPvG,GAOwH,IAAX,IAAIz7E,EAAE0vG,OAAQ,IAAIC,KAAK,MAAM,MAAM18E,GAAG28E,GAAG/pG,EAAEotB,GAAkC,GAAtB+tE,KAAKvlB,GAAElqF,EAAEq8G,GAAG32F,QAAQjX,EAPvK,IAO4Ky3E,GAAO,MAAM3xE,EAAEgoG,GAAG2B,GAAG5pG,EAAEvU,GAAG+5G,GAAGxlG,EAAEvU,GAAGwmF,GAAEjyE,GAAGC,EAAE,GAAG,OAAO61E,GAAE,OAAO37E,EAAE6F,EAAEgqG,aAAahqG,EAAEoR,QAAQ6vE,UAAUjhF,EAAEiqG,uBAAuBx+G,EAAEC,EAAEkmF,GAAEF,GAAE,KAAKhmF,GAAG,KAAK05G,GAAG,KAP9T,EAOsU,MAAMtvG,MAAMk7E,EAAE,MAAM,KAPrV,EAO6V04B,GAAG1pG,EAAE,EAAEvU,EAAE,EAAEA,GAAG,MAAM,KAAK45G,GACvb,GAD0bG,GAAGxlG,EAAEvU,GACteA,KADyeC,EAAEsU,EAAEkqG,qBACrelqG,EAAEqpG,sBAAsBc,GAAGhwG,IAAO,aAAa+tG,IAAkB,IAAb/tG,EAAE+sG,GARqJ,IAQ/I7M,MAAW,CAAC,GAAGgO,GAAG,CAAC,IAAI57E,EAAEzsB,EAAEopG,eAAe,GAAG,IAAI38E,GAAGA,GAAGhhC,EAAE,CAACuU,EAAEopG,eAAe39G,EAAEm+G,GAAG5pG,EAAEvU,GAAG,OAAe,GAAG,KAAXghC,EAAEu8E,GAAGhpG,KAAaysB,IAAIhhC,EAAE,MAAM,GAAG,IAAIC,GAAGA,IAAID,EAAE,CAACuU,EAAEopG,eAAe19G,EAAE,MAAMsU,EAAEoqG,cAAczf,GAAG0f,GAAGz9G,KAAK,KAAKoT,GAAG7F,GAAG,MAAMkwG,GAAGrqG,GAAG,MAAM,KAAKslG,GAAwE,GAArEE,GAAGxlG,EAAEvU,GAAyBA,KAAtBC,EAAEsU,EAAEkqG,qBAA0BlqG,EAAEqpG,sBAAsBc,GAAGhwG,IAAOkuG,KAAwB,KAAnBluG,EAAE6F,EAAEopG,iBAAsBjvG,GAAG1O,GAAG,CAACuU,EAAEopG,eAAe39G,EAAEm+G,GAAG5pG,EAAEvU,GAAG,MAAc,GAAG,KAAX0O,EAAE6uG,GAAGhpG,KAAa7F,IAAI1O,EAAE,MAAM,GAAG,IAAIC,GAAGA,IAAID,EAAE,CAACuU,EAAEopG,eACxe19G,EAAE,MAAgP,GAA1O,aAAay8G,GAAGz8G,EAAE,IAAI,WAAWy8G,IAAI9N,KAAK,aAAa6N,GAAGx8G,EAAE,GAAGA,EAAE,IAAI,WAAWw8G,IAAI,IAAuC,GAANx8G,GAA7ByO,EAAEkgG,MAA+B3uG,KAAQA,EAAE,IAApCD,EAAE,IAAI,WAAWA,GAAG0O,IAAmBzO,GAAG,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKo8G,GAAGp8G,EAAE,OAAOA,KAAQA,EAAED,IAAO,GAAGC,EAAE,CAACsU,EAAEoqG,cAAczf,GAAG0f,GAAGz9G,KAAK,KAAKoT,GAAGtU,GAAG,MAAM2+G,GAAGrqG,GAAG,MAAM,KAT5L,EASoM,GAAG,aAAakoG,IAAI,OAAOE,GAAG,CAAC37E,EAAEy7E,GAAG,IAAIjuG,EAAEmuG,GAAuH,GAA5F,IAAxB18G,EAAsB,EAApBuO,EAAEqwG,mBAAyB5+G,EAAE,GAAGyO,EAAgB,EAAdF,EAAEswG,YAA8D7+G,GAAhD+gC,EAAE4tE,MAAM,IAAI,WAAW5tE,IAAgB,EAAZxyB,EAAE4uG,WAAa,QAAW1uG,EAAE,EAAEA,EAAEzO,EAAE+gC,GAAM,GAAG/gC,EAAE,CAAC85G,GAAGxlG,EAAEvU,GAAGuU,EAAEoqG,cAC/ezf,GAAG0f,GAAGz9G,KAAK,KAAKoT,GAAGtU,GAAG,OAAO2+G,GAAGrqG,GAAG,MAAM,QAAQ,MAAMlK,MAAMk7E,EAAE,MAAY,GAALiB,GAAEjyE,GAAMA,EAAEwpG,eAAevpG,EAAE,OAAOwpG,GAAG78G,KAAK,KAAKoT,IAAI,OAAO,KAChI,SAAS+oG,GAAG/oG,GAAG,IAAIC,EAAED,EAAEipG,gBAAqC,GAArBhpG,EAAE,IAAIA,EAAEA,EAAE,WAXuB,KAWP,GAAD21E,IAAe,MAAM9/E,MAAMk7E,EAAE,MAAiC,GAA3B24B,KAAK3pG,IAAI0xE,IAAGzxE,IAAI4xE,IAAG+3B,GAAG5pG,EAAEC,GAAM,OAAO61E,GAAE,CAAC,IAAIrqF,EAAEmqF,GAAEA,IAXjE,GAWkF,IAAX,IAAIlqF,EAAEm+G,OAAQ,IAAIW,KAAK,MAAM,MAAMrwG,GAAG4vG,GAAG/pG,EAAE7F,GAAkC,GAAtBghG,KAAKvlB,GAAEnqF,EAAEs8G,GAAG32F,QAAQ1lB,EAXjI,IAWsIkmF,GAAO,MAAMnmF,EAAEw8G,GAAG2B,GAAG5pG,EAAEC,GAAGulG,GAAGxlG,EAAEC,GAAGgyE,GAAEjyE,GAAGvU,EAAE,GAAG,OAAOqqF,GAAE,MAAMhgF,MAAMk7E,EAAE,MAAMhxE,EAAEgqG,aAAahqG,EAAEoR,QAAQ6vE,UAAUjhF,EAAEiqG,uBAAuBhqG,EAAEyxE,GAAE,KAAK24B,GAAGrqG,GAAGiyE,GAAEjyE,GAAG,OAAO,KACzY,SAASyqG,GAAGzqG,EAAEC,GAAG,IAAIxU,EAAEmqF,GAAEA,IAAG,EAAE,IAAI,OAAO51E,EAAEC,GAAb,QAZ0C,KAYlB21E,GAAEnqF,IAASmvG,MAAM,SAAS8P,GAAG1qG,EAAEC,GAAG,IAAIxU,EAAEmqF,GAAEA,KAAI,EAAEA,IAZzB,EAY+B,IAAI,OAAO51E,EAAEC,GAAb,QAZpC,KAY4D21E,GAAEnqF,IAASmvG,MAC/I,SAASgP,GAAG5pG,EAAEC,GAAGD,EAAEgqG,aAAa,KAAKhqG,EAAEiqG,uBAAuB,EAAE,IAAIx+G,EAAEuU,EAAEoqG,cAAiD,IAAlC,IAAI3+G,IAAIuU,EAAEoqG,eAAe,EAAExf,GAAGn/F,IAAO,OAAOqqF,GAAE,IAAIrqF,EAAEqqF,GAAE8H,OAAO,OAAOnyF,GAAG,CAAC,IAAIC,EAAED,EAAE,OAAOC,EAAEqf,KAAK,KAAK,EAA6B,QAA3Brf,EAAEA,EAAEuS,KAAK2C,yBAA4B,IAASlV,GAAG0sG,KAAK,MAAM,KAAK,EAAEoH,KAAK1qB,GAAEK,IAAGL,GAAEx0C,IAAG,MAAM,KAAK,EAAEo/D,GAAGh0G,GAAG,MAAM,KAAK,EAAE8zG,KAAK,MAAM,KAAK,GAAc,KAAK,GAAG1qB,GAAES,IAAG,MAAM,KAAK,GAAG6lB,GAAG1vG,GAAGD,EAAEA,EAAEmyF,OAAOlM,GAAE1xE,EAAE81E,GAAE4oB,GAAG1+F,EAAEoR,QAAQ,MAAMygE,GAAE5xE,EAAE2xE,GAAEwzB,GAAG6C,GAAG,KAAKE,GAAGD,GAAG,WAAWE,GAAG,KAAK7C,GAAG,EAAE8C,IAAG,EACnc,SAAS0B,GAAG/pG,EAAEC,GAAG,OAAE,CAAC,IAAuB,GAAnBk7F,KAAK6E,GAAG5uF,QAAQovF,GAAML,GAAG,IAAI,IAAI10G,EAAEsmF,GAAEqP,cAAc,OAAO31F,GAAG,CAAC,IAAIC,EAAED,EAAEi1G,MAAM,OAAOh1G,IAAIA,EAAEywG,QAAQ,MAAM1wG,EAAEA,EAAE6N,KAA2B,GAAtB4mG,GAAG,EAAEzqB,GAAE3sC,GAAEipC,GAAE,KAAKouB,IAAG,EAAM,OAAOrqB,IAAG,OAAOA,GAAE8H,OAAO,OAAOhM,GAd/F,EAcoGq2B,GAAGhoG,EAAE61E,GAAE,KAAK91E,EAAE,CAAC,IAAI7F,EAAE6F,EAAEysB,EAAEqpD,GAAE8H,OAAO3jF,EAAE67E,GAAE1oD,EAAEntB,EAAwD,GAAtDA,EAAE4xE,GAAE53E,EAAEinF,WAAW,KAAKjnF,EAAEwkG,YAAYxkG,EAAEskG,WAAW,KAAQ,OAAOnxE,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEryB,KAAK,CAAC,IAAIgP,EAAEqjB,EAAE,GAAG,KAAY,EAAPnzB,EAAE1N,MAAQ,CAAC,IAAIlB,EAAE4O,EAAEgnF,UAAU51F,GAAG4O,EAAE8hG,YAAY1wG,EAAE0wG,YAAY9hG,EAAEmnF,cAAc/1F,EAAE+1F,cAAcnnF,EAAEwhG,eAAepwG,EAAEowG,iBAAiBxhG,EAAE8hG,YACvf,KAAK9hG,EAAEmnF,cAAc,MAAM,IAAI51F,EAAE,KAAe,EAAV+pF,GAAEnkE,SAAWlkB,EAAEu/B,EAAE,EAAE,CAAC,IAAIxH,EAAE,GAAGA,EAAE,KAAK/3B,EAAE6d,IAAI,CAAC,IAAI+mE,EAAE5kF,EAAEk0F,cAAc,GAAG,OAAOtP,EAAE7sD,EAAE,OAAO6sD,EAAEuP,eAAqB,CAAC,IAAIsb,EAAGzvG,EAAE0yG,cAAc36E,OAAE,IAAS03E,EAAG4H,YAAY,IAAK5H,EAAG6H,6BAA8Bh5G,IAAS,GAAGy5B,EAAE,CAAC,IAAIqvD,EAAEpnF,EAAE6uG,YAAY,GAAG,OAAOznB,EAAE,CAAC,IAAIhoF,EAAE,IAAIqgF,IAAIrgF,EAAEiY,IAAIwF,GAAG7c,EAAE6uG,YAAYzvG,OAAOgoF,EAAE/vE,IAAIwF,GAAG,GAAG,KAAY,EAAP7c,EAAEX,MAAQ,CAAoC,GAAnCW,EAAEg0F,WAAW,GAAGjnF,EAAEinF,YAAY,KAAQ,IAAIjnF,EAAE8Q,IAAI,GAAG,OAAO9Q,EAAEgnF,UAAUhnF,EAAE8Q,IAAI,OAAO,CAAC,IAAI0iB,EAAE6uE,GAAG,WAAW,MAAM7uE,EAAE1iB,IAAI,EAAEyxF,GAAGviG,EAAEwzB,GAAGxzB,EAAEwhG,eAAe,WAClf,MAAMz7F,EAAEotB,OAAE,EAAOnzB,EAAEgG,EAAE,IAAIkxE,EAAEh3E,EAAEwwG,UAA+G,GAArG,OAAOx5B,GAAGA,EAAEh3E,EAAEwwG,UAAU,IAAItD,GAAGj6E,EAAE,IAAIu/C,IAAIwE,EAAE9uD,IAAItY,EAAEqjB,SAAgB,KAAXA,EAAE+jD,EAAEllF,IAAI8d,MAAgBqjB,EAAE,IAAIu/C,IAAIwE,EAAE9uD,IAAItY,EAAEqjB,KAASA,EAAE+1D,IAAIlpF,GAAG,CAACmzB,EAAE7oB,IAAItK,GAAG,IAAIi4E,EAAE04B,GAAGh+G,KAAK,KAAKuN,EAAE4P,EAAE9P,GAAG8P,EAAEhP,KAAKm3E,EAAEA,GAAGhlF,EAAEg0F,WAAW,KAAKh0F,EAAEuuG,eAAex7F,EAAE,MAAMD,EAAE9S,EAAEA,EAAE0wF,aAAa,OAAO1wF,GAAGkgC,EAAEt3B,OAAOwnF,GAAGrjF,EAAEgE,OAAO,qBAAqB,wLAAwLs/E,GAAGtjF,IAhB/X,IAgBmY23E,KACrfA,GAjBmG,GAiB7FxkD,EAAEu4E,GAAGv4E,EAAEnzB,GAAG/M,EAAEu/B,EAAE,EAAE,CAAC,OAAOv/B,EAAE6d,KAAK,KAAK,EAAEhB,EAAEqjB,EAAElgC,EAAEg0F,WAAW,KAAKh0F,EAAEuuG,eAAex7F,EAAkBw8F,GAAGvvG,EAAbo6G,GAAGp6G,EAAE6c,EAAE9J,IAAW,MAAMD,EAAE,KAAK,EAAE+J,EAAEqjB,EAAE,IAAIzR,EAAEzuB,EAAE+Q,KAAK4sG,EAAG39G,EAAEqtF,UAAU,GAAG,KAAiB,GAAZrtF,EAAEg0F,aAAgB,oBAAoBvlE,EAAE1a,0BAA0B,OAAO4pG,GAAI,oBAAoBA,EAAGnD,oBAAoB,OAAOC,KAAKA,GAAGxkB,IAAI0nB,KAAM,CAAC39G,EAAEg0F,WAAW,KAAKh0F,EAAEuuG,eAAex7F,EAAmBw8F,GAAGvvG,EAAbu6G,GAAGv6G,EAAE6c,EAAE9J,IAAY,MAAMD,GAAG9S,EAAEA,EAAE0wF,aAAa,OAAO1wF,GAAG4oF,GAAEg1B,GAAGh1B,IAAG,MAAMi1B,GAAI9qG,EAAE8qG,EAAG,SAAS,OAC9b,SAASlB,KAAK,IAAI7pG,EAAE+nG,GAAG32F,QAAsB,OAAd22F,GAAG32F,QAAQovF,GAAU,OAAOxgG,EAAEwgG,GAAGxgG,EAAE,SAAS48F,GAAG58F,EAAEC,GAAGD,EAAEkoG,IAAI,EAAEloG,IAAIkoG,GAAGloG,GAAG,OAAOC,GAAGD,EAAEmoG,IAAI,EAAEnoG,IAAImoG,GAAGnoG,EAAEooG,GAAGnoG,GAAG,SAAS48F,GAAG78F,GAAGA,EAAEulG,KAAKA,GAAGvlG,GAAG,SAASwqG,KAAK,KAAK,OAAO10B,IAAGA,GAAEk1B,GAAGl1B,IAAG,SAASg0B,KAAK,KAAK,OAAOh0B,KAAIgkB,MAAMhkB,GAAEk1B,GAAGl1B,IAAG,SAASk1B,GAAGhrG,GAAG,IAAIC,EAAE4nG,GAAG7nG,EAAEihF,UAAUjhF,EAAE6xE,IAAsE,OAAnE7xE,EAAE4/F,cAAc5/F,EAAE6iG,aAAa,OAAO5iG,IAAIA,EAAE6qG,GAAG9qG,IAAIgoG,GAAG52F,QAAQ,KAAYnR,EACtW,SAAS6qG,GAAG9qG,GAAG81E,GAAE91E,EAAE,EAAE,CAAC,IAAIC,EAAE61E,GAAEmL,UAAqB,GAAXjhF,EAAE81E,GAAE8H,OAAU,KAAiB,KAAZ9H,GAAEoL,WAAgB,CAAa,GAAZjhF,EAAEglG,GAAGhlG,EAAE61E,GAAEjE,IAAM,IAAIA,IAAG,IAAIiE,GAAEwlB,oBAAoB,CAAC,IAAI,IAAI7vG,EAAE,EAAEC,EAAEoqF,GAAE5hC,MAAM,OAAOxoD,GAAG,CAAC,IAAIyO,EAAEzO,EAAE+vG,eAAehvE,EAAE/gC,EAAE4vG,oBAAoBnhG,EAAE1O,IAAIA,EAAE0O,GAAGsyB,EAAEhhC,IAAIA,EAAEghC,GAAG/gC,EAAEA,EAAE81F,QAAQ1L,GAAEwlB,oBAAoB7vG,EAAE,GAAG,OAAOwU,EAAE,OAAOA,EAAE,OAAOD,GAAG,KAAiB,KAAZA,EAAEkhF,aAAkB,OAAOlhF,EAAEy+F,cAAcz+F,EAAEy+F,YAAY3oB,GAAE2oB,aAAa,OAAO3oB,GAAEyoB,aAAa,OAAOv+F,EAAEu+F,aAAav+F,EAAEu+F,WAAWC,WAAW1oB,GAAE2oB,aAAaz+F,EAAEu+F,WAAWzoB,GAAEyoB,YAAY,EAAEzoB,GAAEoL,YAAY,OACnflhF,EAAEu+F,WAAWv+F,EAAEu+F,WAAWC,WAAW1oB,GAAE91E,EAAEy+F,YAAY3oB,GAAE91E,EAAEu+F,WAAWzoB,SAAQ,CAAS,GAAG,QAAX71E,EAAEylG,GAAG5vB,KAAe,OAAO71E,EAAEihF,WAAW,KAAKjhF,EAAE,OAAOD,IAAIA,EAAEy+F,YAAYz+F,EAAEu+F,WAAW,KAAKv+F,EAAEkhF,WAAW,MAAkB,GAAG,QAAfjhF,EAAE61E,GAAE0L,SAAoB,OAAOvhF,EAAE61E,GAAE91E,QAAQ,OAAO81E,IAAkB,OAAflE,KAAIwzB,KAAKxzB,GApBjI,GAoB8I,KAAK,SAASu4B,GAAGnqG,GAAG,IAAIC,EAAED,EAAEy7F,eAAuC,OAAOx7F,GAA/BD,EAAEA,EAAEs7F,qBAA+Br7F,EAAED,EAAE,SAASqqG,GAAGrqG,GAAG,IAAIC,EAAEq6F,KAA8B,OAAzBE,GAAG,GAAGyQ,GAAGr+G,KAAK,KAAKoT,EAAEC,IAAW,KACjZ,SAASgrG,GAAGjrG,EAAEC,GAAG,GAAG0pG,WAAW,OAAOpB,IAAI,GArB8B,KAqBzB,GAAD3yB,IAAe,MAAM9/E,MAAMk7E,EAAE,MAAM,IAAIvlF,EAAEuU,EAAEgqG,aAAat+G,EAAEsU,EAAEiqG,uBAAuB,GAAG,OAAOx+G,EAAE,OAAO,KAAoD,GAA/CuU,EAAEgqG,aAAa,KAAKhqG,EAAEiqG,uBAAuB,EAAKx+G,IAAIuU,EAAEoR,QAAQ,MAAMtb,MAAMk7E,EAAE,MAAMhxE,EAAEwpG,aAAa,KAAKxpG,EAAEspG,uBAAuB,EAAEtpG,EAAEupG,iBAAiB,GAAGvpG,EAAEqpG,sBAAsB,EAAE,IAAIlvG,EAAEgwG,GAAG1+G,GAClI,GADqIuU,EAAEmpG,iBAAiBhvG,EAAEzO,GAAGsU,EAAEkqG,kBAAkBlqG,EAAEkrG,mBAAmBlrG,EAAEkqG,kBAAkBlqG,EAAEqpG,sBAAsB,EAAE39G,GAAGsU,EAAEkrG,qBAAqBlrG,EAAEkrG,mBACnex/G,EAAE,GAAGA,GAAGsU,EAAEopG,iBAAiBppG,EAAEopG,eAAe,GAAG19G,GAAGsU,EAAEipG,kBAAkBjpG,EAAEipG,gBAAgB,GAAGjpG,IAAI0xE,KAAIoE,GAAEpE,GAAE,KAAKG,GAAE,GAAG,EAAEpmF,EAAEy1F,UAAU,OAAOz1F,EAAE8yG,YAAY9yG,EAAE8yG,WAAWC,WAAW/yG,EAAE0O,EAAE1O,EAAEgzG,aAAatkG,EAAE1O,EAAE0O,EAAE1O,EAAEgzG,YAAe,OAAOtkG,EAAE,CAAC,IAAIsyB,EAAEmpD,GAAEA,IAtBhJ,GAsBsJoyB,GAAG52F,QAAQ,KAAKm5E,GAAGrE,GAAG,IAAIjsF,EAAEiwF,KAAK,GAAGI,GAAGrwF,GAAG,CAAC,GAAG,mBAAmBA,EAAE,IAAImzB,EAAE,CAAC1e,MAAMzU,EAAEuW,eAAe3B,IAAI5U,EAAEwW,mBAAmBzQ,EAAE,CAA8C,IAAI+J,GAAjDqjB,GAAGA,EAAEnzB,EAAEm+D,gBAAgBhrC,EAAEirC,aAAaj+D,QAAe8hB,cAAckR,EAAElR,eAAe,GAAGnS,GAAG,IAAIA,EAAE4uD,WAAW,CAACvrC,EAAErjB,EAAEmpF,WAAW,IAAI7nG,EAAE0e,EAAEopF,aAC9e3nG,EAAEue,EAAEqpF,UAAUrpF,EAAEA,EAAEspF,YAAY,IAAIjmE,EAAE0gD,SAAStiF,EAAEsiF,SAAS,MAAMq9B,GAAI/9E,EAAE,KAAK,MAAMptB,EAAE,IAAI9S,EAAE,EAAE+3B,GAAG,EAAE6sD,GAAG,EAAE6qB,EAAG,EAAEroB,EAAE,EAAEhoF,EAAE2N,EAAEwzB,EAAE,KAAKxtB,EAAE,OAAO,CAAC,IAAI,IAAIkxE,EAAK7kF,IAAI8gC,GAAG,IAAI/hC,GAAG,IAAIiB,EAAEwhF,WAAW7oD,EAAE/3B,EAAE7B,GAAGiB,IAAId,GAAG,IAAIue,GAAG,IAAIzd,EAAEwhF,WAAWgE,EAAE5kF,EAAE6c,GAAG,IAAIzd,EAAEwhF,WAAW5gF,GAAGZ,EAAEs2C,UAAUxyC,QAAW,QAAQ+gF,EAAE7kF,EAAEwhC,aAAkBL,EAAEnhC,EAAEA,EAAE6kF,EAAE,OAAO,CAAC,GAAG7kF,IAAI2N,EAAE,MAAMgG,EAA+C,GAA7CwtB,IAAIL,KAAKuvE,IAAKtxG,IAAI45B,EAAE/3B,GAAGugC,IAAIjiC,KAAK8oF,IAAIvqE,IAAI+nE,EAAE5kF,GAAM,QAAQikF,EAAE7kF,EAAEkrD,aAAa,MAAU/pB,GAAJnhC,EAAEmhC,GAAMpS,WAAW/uB,EAAE6kF,EAAE/jD,GAAG,IAAInI,IAAI,IAAI6sD,EAAE,KAAK,CAACpjE,MAAMuW,EAAEpW,IAAIijE,QAAQ1kD,EAAE,KAAKA,EAAEA,GAAG,CAAC1e,MAAM,EAAEG,IAAI,QAAQue,EACtf,KAAKo9D,GAAG,CAAC4gB,sBAAsB,KAAKC,YAAYpxG,EAAE2yC,eAAexf,GAAG84D,IAAG,EAAGnQ,GAAE57E,EAAE,GAAG,IAAImxG,KAAK,MAAMH,GAAI,GAAG,OAAOp1B,GAAE,MAAMjgF,MAAMk7E,EAAE,MAAMg1B,GAAGjwB,GAAEo1B,GAAIp1B,GAAEA,GAAEyoB,kBAAiB,OAAOzoB,IAAGA,GAAE57E,EAAE,GAAG,IAAI,IAAIF,EAAE+F,EAAEotB,EAAEntB,EAAE,OAAO81E,IAAG,CAAC,IAAI7D,EAAE6D,GAAEmL,UAAmC,GAAvB,GAAFhP,GAAM4N,GAAG/J,GAAEwE,UAAU,IAAS,IAAFrI,EAAM,CAAC,IAAIkC,EAAE2B,GAAEkL,UAAU,GAAG,OAAO7M,EAAE,CAAC,IAAIz4D,EAAEy4D,EAAE//D,IAAI,OAAOsH,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAEvK,QAAQ,OAAO,OAAS,KAAF8gE,GAAQ,KAAK,EAAE20B,GAAG9wB,IAAGA,GAAEmL,YAAY,EAAE,MAAM,KAAK,EAAE2lB,GAAG9wB,IAAGA,GAAEmL,YAAY,EAAE+lB,GAAGlxB,GAAEkL,UAAUlL,IAAG,MAAM,KAAK,KAAKA,GAAEmL,YAAY,KAAK,MAAM,KAAK,KAAKnL,GAAEmL,YAC7f,KAAK+lB,GAAGlxB,GAAEkL,UAAUlL,IAAG,MAAM,KAAK,EAAEkxB,GAAGlxB,GAAEkL,UAAUlL,IAAG,MAAM,KAAK,EAAM2wB,GAAGzsG,EAAP5O,EAAE0qF,GAAS3oD,GAAGu5E,GAAGt7G,GAAG0qF,GAAEA,GAAEyoB,YAAY,MAAM2M,GAAI,GAAG,OAAOp1B,GAAE,MAAMjgF,MAAMk7E,EAAE,MAAMg1B,GAAGjwB,GAAEo1B,GAAIp1B,GAAEA,GAAEyoB,kBAAiB,OAAOzoB,IAAkD,GAA/Cp6D,EAAE6uE,GAAGpW,EAAE8V,KAAKhY,EAAEv2D,EAAE0vF,YAAYj+E,EAAEzR,EAAEixB,eAAkBwnC,IAAIlC,GAAGA,GAAGA,EAAE9Z,eAhLxP,SAASmzC,EAAGvrG,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE8tE,YAAY7tE,GAAG,IAAIA,EAAE6tE,SAASy9B,EAAGvrG,EAAEC,EAAEob,YAAY,aAAarb,EAAEA,EAAEiF,SAAShF,KAAGD,EAAEwrG,4BAAwD,GAA7BxrG,EAAEwrG,wBAAwBvrG,MAgLmFsrG,CAAGr5B,EAAE9Z,cAAcxG,gBAAgBsgB,GAAG,CAAC,OAAO9kD,GAAGk9D,GAAGpY,KAAKkC,EAAEhnD,EAAE1e,WAAc,KAARiN,EAAEyR,EAAEve,OAAiB8M,EAAEy4D,GAAG,mBAAmBlC,GAAGA,EAAE1hE,eAAe4jE,EAAElC,EAAEzhE,aAAalhB,KAAK0f,IAAI0M,EAAEu2D,EAAE7lF,MAAM+D,UAAUurB,GAAGy4D,EAAElC,EAAE9Z,eAAe3zD,WAAW2vE,EAAE/b,aAAaj+D,QAAS8hB,eACjfP,EAAEA,EAAEO,eAAe7wB,EAAE6mF,EAAE/qE,YAAY/W,OAAO6J,EAAE1K,KAAK0f,IAAIme,EAAE1e,MAAMrjB,GAAG+hC,OAAE,IAASA,EAAEve,IAAI5U,EAAE1K,KAAK0f,IAAIme,EAAEve,IAAIxjB,IAAIswB,EAAEpW,QAAQtL,EAAEmzB,IAAI/hC,EAAE+hC,EAAEA,EAAEnzB,EAAEA,EAAE5O,GAAGA,EAAE4+F,GAAG/X,EAAEj4E,GAAGzO,EAAEy+F,GAAG/X,EAAE9kD,GAAG/hC,GAAGG,IAAI,IAAImwB,EAAEg9C,YAAYh9C,EAAEu3E,aAAa7nG,EAAEkf,MAAMoR,EAAEw3E,eAAe9nG,EAAEwlB,QAAQ8K,EAAEy3E,YAAY5nG,EAAE+e,MAAMoR,EAAE03E,cAAc7nG,EAAEqlB,WAAUujE,EAAEA,EAAE1kB,eAAgBoJ,SAASztE,EAAEkf,KAAKlf,EAAEwlB,QAAQ8K,EAAEi0C,kBAAkB31D,EAAEmzB,GAAGzR,EAAEk0C,SAASukB,GAAGz4D,EAAEpW,OAAO/Z,EAAE+e,KAAK/e,EAAEqlB,UAAUujE,EAAErb,OAAOvtE,EAAE+e,KAAK/e,EAAEqlB,QAAQ8K,EAAEk0C,SAASukB,OAAQA,EAAE,GAAG,IAAIz4D,EAAEu2D,EAAEv2D,EAAEA,EAAEN,YAAY,IAAIM,EAAEmyD,UAAUsG,EAAEnmF,KAAK,CAACoK,QAAQsjB,EAAEjG,KAAKiG,EAAE8yC,WACzfh5C,IAAIkG,EAAE4D,YAAmD,IAAvC,oBAAoB2yD,EAAE53D,OAAO43D,EAAE53D,QAAY43D,EAAE,EAAEA,EAAEkC,EAAEhkF,OAAO8hF,KAAIv2D,EAAEy4D,EAAElC,IAAK75E,QAAQo2D,WAAW9yC,EAAEjG,KAAKiG,EAAEtjB,QAAQknB,UAAU5D,EAAElG,IAAIywE,KAAKqE,GAAGC,GAAGD,GAAG,KAAKvqF,EAAEoR,QAAQ3lB,EAAEsqF,GAAE57E,EAAE,GAAG,IAAI,IAAI+3E,EAAElyE,EAAE,OAAO+1E,IAAG,CAAC,IAAI80B,EAAG90B,GAAEmL,UAAqC,GAAxB,GAAH2pB,GAAOxE,GAAGn0B,EAAE6D,GAAEkL,UAAUlL,IAAS,IAAH80B,EAAO,CAACz2B,OAAE,EAAO,IAAIq3B,EAAG11B,GAAE1hE,IAAI,GAAG,OAAOo3F,EAAG,CAAC,IAAIV,EAAGh1B,GAAEwE,UAAU,OAAOxE,GAAEhrE,KAAK,KAAK,EAAEqpE,EAAE22B,EAAG,MAAM,QAAQ32B,EAAE22B,EAAG,oBAAoBU,EAAGA,EAAGr3B,GAAGq3B,EAAGr6F,QAAQgjE,GAAG2B,GAAEA,GAAEyoB,YAAY,MAAM2M,GAAI,GAAG,OAAOp1B,GAAE,MAAMjgF,MAAMk7E,EAAE,MAAMg1B,GAAGjwB,GAAEo1B,GAAIp1B,GAAEA,GAAEyoB,kBAAiB,OAAOzoB,IAAGA,GACpf,KAAKikB,KAAKpkB,GAAEnpD,OAAOzsB,EAAEoR,QAAQ3lB,EAAE,GAAG68G,GAAGA,IAAG,EAAGC,GAAGvoG,EAAEwoG,GAAGvoG,OAAO,IAAI81E,GAAE57E,EAAE,OAAO47E,IAAG91E,EAAE81E,GAAEyoB,WAAWzoB,GAAEyoB,WAAW,KAAKzoB,GAAE91E,EAAmI,GAA5G,KAArBA,EAAED,EAAEmpG,oBAAyBxB,GAAG,MAAM,aAAa1nG,EAAED,IAAI2oG,GAAGD,MAAMA,GAAG,EAAEC,GAAG3oG,GAAG0oG,GAAG,EAAE,oBAAoBgD,IAAIA,GAAGjgH,EAAE8uF,UAAU7uF,GAAGumF,GAAEjyE,GAAMunG,GAAG,MAAMA,IAAG,EAAGvnG,EAAEwnG,GAAGA,GAAG,KAAKxnG,EAAE,OA5B3M,KAAK,EA4B0M41E,KAAsBglB,KAAL,KAAsB,SAAS0Q,KAAK,KAAK,OAAOv1B,IAAG,CAAC,IAAI/1E,EAAE+1E,GAAEmL,UAAU,KAAO,IAAFlhF,IAAQimG,GAAGlwB,GAAEkL,UAAUlL,IAAG,KAAO,IAAF/1E,IAAQsoG,KAAKA,IAAG,EAAG7N,GAAG,IAAG,WAAgB,OAALkP,KAAY,SAAQ5zB,GAAEA,GAAEyoB,YAC9c,SAASmL,KAAK,GAAG,KAAKnB,GAAG,CAAC,IAAIxoG,EAAE,GAAGwoG,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUhO,GAAGx6F,EAAE2rG,KAAK,SAASA,KAAK,GAAG,OAAOpD,GAAG,OAAM,EAAG,IAAIvoG,EAAEuoG,GAAW,GAARA,GAAG,KA7B3C,KA6BqD,GAAD3yB,IAAe,MAAM9/E,MAAMk7E,EAAE,MAAM,IAAI/wE,EAAE21E,GAAQ,IAANA,IA7B/E,GA6ByF51E,EAAEA,EAAEoR,QAAQqtF,YAAY,OAAOz+F,GAAG,CAAC,IAAI,IAAIvU,EAAEuU,EAAE,GAAG,KAAiB,IAAZvU,EAAEy1F,WAAe,OAAOz1F,EAAEsf,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGo7F,GAAG,EAAE16G,GAAG26G,GAAG,EAAE36G,IAAI,MAAMC,GAAG,GAAG,OAAOsU,EAAE,MAAMlK,MAAMk7E,EAAE,MAAMg1B,GAAGhmG,EAAEtU,GAAGD,EAAEuU,EAAEw+F,WAAWx+F,EAAEw+F,WAAW,KAAKx+F,EAAEvU,EAAW,OAATmqF,GAAE31E,EAAE26F,MAAW,EAC5Z,SAASgR,GAAG5rG,EAAEC,EAAExU,GAAkC+wG,GAAGx8F,EAAxBC,EAAEqnG,GAAGtnG,EAAfC,EAAE0lG,GAAGl6G,EAAEwU,GAAY,aAAuC,QAAnBD,EAAE8oG,GAAG9oG,EAAE,cAAsBiyE,GAAEjyE,GAAG,SAASgmG,GAAGhmG,EAAEC,GAAG,GAAG,IAAID,EAAE+K,IAAI6gG,GAAG5rG,EAAEA,EAAEC,QAAQ,IAAI,IAAIxU,EAAEuU,EAAE49E,OAAO,OAAOnyF,GAAG,CAAC,GAAG,IAAIA,EAAEsf,IAAI,CAAC6gG,GAAGngH,EAAEuU,EAAEC,GAAG,MAAW,GAAG,IAAIxU,EAAEsf,IAAI,CAAC,IAAIrf,EAAED,EAAE8uF,UAAU,GAAG,oBAAoB9uF,EAAEwS,KAAKgD,0BAA0B,oBAAoBvV,EAAEg8G,oBAAoB,OAAOC,KAAKA,GAAGxkB,IAAIz3F,IAAI,CAAgC8wG,GAAG/wG,EAAxBuU,EAAEynG,GAAGh8G,EAAfuU,EAAE2lG,GAAG1lG,EAAED,GAAY,aAAuC,QAAnBvU,EAAEq9G,GAAGr9G,EAAE,cAAsBwmF,GAAExmF,GAAG,OAAOA,EAAEA,EAAEmyF,QACxb,SAASgtB,GAAG5qG,EAAEC,EAAExU,GAAG,IAAIC,EAAEsU,EAAE2qG,UAAU,OAAOj/G,GAAGA,EAAE24F,OAAOpkF,GAAGyxE,KAAI1xE,GAAG6xE,KAAIpmF,EAAEmmF,KAAI0zB,IAAI1zB,KAAIyzB,IAAI,aAAa6C,IAAI7N,KAAK6M,GA/BqG,IA+B/F0C,GAAG5pG,EAAE6xE,IAAGw2B,IAAG,EAAGa,GAAGlpG,EAAEvU,KAAwB,KAAnBwU,EAAED,EAAEopG,iBAAsBnpG,EAAExU,IAAIuU,EAAEopG,eAAe39G,EAAEwmF,GAAEjyE,KAAK,SAASonG,GAAGpnG,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEu6E,UAAU,OAAO9uF,GAAGA,EAAE44F,OAAOpkF,GAAO,KAAJA,EAAE,KAAiBA,EAAEo9F,GAATp9F,EAAEm9F,KAAYp9F,EAAE,OAAiB,QAAVA,EAAE8oG,GAAG9oG,EAAEC,KAAagyE,GAAEjyE,GACxT6nG,GAAG,SAAS7nG,EAAEC,EAAExU,GAAG,IAAIC,EAAEuU,EAAEw7F,eAAe,GAAG,OAAOz7F,EAAE,CAAC,IAAI7F,EAAE8F,EAAE4iG,aAAa,GAAG7iG,EAAE4/F,gBAAgBzlG,GAAGg7E,GAAE/jE,QAAQsqF,IAAG,MAAO,CAAC,GAAGhwG,EAAED,EAAE,CAAO,OAANiwG,IAAG,EAAUz7F,EAAE8K,KAAK,KAAK,EAAEg5F,GAAG9jG,GAAGgjG,KAAK,MAAM,KAAK,EAAQ,GAANxD,GAAGx/F,GAAa,EAAPA,EAAE1T,MAAQ,IAAId,GAAG0O,EAAE0xG,OAAO,OAAO5rG,EAAEw7F,eAAex7F,EAAEq7F,oBAAoB,EAAE,KAAK,MAAM,KAAK,EAAElmB,GAAEn1E,EAAEhC,OAAOu6F,GAAGv4F,GAAG,MAAM,KAAK,EAAEs/F,GAAGt/F,EAAEA,EAAEs6E,UAAUyI,eAAe,MAAM,KAAK,GAAGt3F,EAAEuU,EAAE2/F,cAAcvzG,MAAM8N,EAAE8F,EAAEhC,KAAKq5E,SAASrG,GAAE8pB,GAAG5gG,EAAE88E,eAAe98E,EAAE88E,cAAcvrF,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOuU,EAAEmhF,cACjd,OAAG,KAD6d11F,EAAEuU,EAAEi0C,MAAMonD,sBAChe5vG,GAAGD,EAAS64G,GAAGtkG,EAAEC,EAAExU,IAAGwlF,GAAEsE,GAAY,EAAVA,GAAEnkE,SAA8B,QAAnBnR,EAAEmjG,GAAGpjG,EAAEC,EAAExU,IAAmBwU,EAAEuhF,QAAQ,MAAKvQ,GAAEsE,GAAY,EAAVA,GAAEnkE,SAAW,MAAM,KAAK,GAA8B,GAA3B1lB,EAAEuU,EAAEq7F,qBAAqB7vG,EAAK,KAAiB,GAAZuU,EAAEkhF,WAAc,CAAC,GAAGx1F,EAAE,OAAOq5G,GAAG/kG,EAAEC,EAAExU,GAAGwU,EAAEihF,WAAW,GAA6E,GAAxD,QAAlB/mF,EAAE8F,EAAEmhF,iBAAyBjnF,EAAEwqG,UAAU,KAAKxqG,EAAEsP,KAAK,MAAMwnE,GAAEsE,GAAEA,GAAEnkE,UAAa1lB,EAAE,OAAO,KAAK,OAAO03G,GAAGpjG,EAAEC,EAAExU,GAAGiwG,IAAG,QAASA,IAAG,EAAsB,OAAnBz7F,EAAEw7F,eAAe,EAASx7F,EAAE8K,KAAK,KAAK,EAChW,GADkWrf,EAAEuU,EAAEhC,KAAK,OAAO+B,IAAIA,EAAEihF,UAAU,KAAKhhF,EAAEghF,UAAU,KAAKhhF,EAAEihF,WAAW,GAAGlhF,EAAEC,EAAE4iG,aAAa1oG,EAAE89F,GAAGh4F,EAAEqgC,GAAElvB,SAASmqF,GAAGt7F,EAAExU,GAAG0O,EAAE87B,GAAG,KAClfh2B,EAAEvU,EAAEsU,EAAE7F,EAAE1O,GAAGwU,EAAEihF,WAAW,EAAK,kBAAkB/mF,GAAG,OAAOA,GAAG,oBAAoBA,EAAE6H,aAAQ,IAAS7H,EAAE3C,SAAS,CAAiD,GAAhDyI,EAAE8K,IAAI,EAAE9K,EAAEmhF,cAAc,KAAKnhF,EAAE87F,YAAY,KAAQ3mB,GAAE1pF,GAAG,CAAC,IAAI+gC,GAAE,EAAG+rE,GAAGv4F,QAAQwsB,GAAE,EAAGxsB,EAAEmhF,cAAc,OAAOjnF,EAAE8E,YAAO,IAAS9E,EAAE8E,MAAM9E,EAAE8E,MAAM,KAAK68F,GAAG77F,GAAG,IAAIhG,EAAEvO,EAAEwV,yBAAyB,oBAAoBjH,GAAGgjG,GAAGh9F,EAAEvU,EAAEuO,EAAE+F,GAAG7F,EAAEy6E,QAAQsoB,GAAGj9F,EAAEs6E,UAAUpgF,EAAEA,EAAEgjG,oBAAoBl9F,EAAE49F,GAAG59F,EAAEvU,EAAEsU,EAAEvU,GAAGwU,EAAE6jG,GAAG,KAAK7jG,EAAEvU,GAAE,EAAG+gC,EAAEhhC,QAAQwU,EAAE8K,IAAI,EAAE+1B,GAAE,KAAK7gC,EAAE9F,EAAE1O,GAAGwU,EAAEA,EAAEi0C,MAAM,OAAOj0C,EAAE,KAAK,GAAGD,EAAE,CACzZ,GAD0Z7F,EAAE8F,EAAE2+F,YAAY,OAAO5+F,IAAIA,EAAEihF,UACpf,KAAKhhF,EAAEghF,UAAU,KAAKhhF,EAAEihF,WAAW,GAAGlhF,EAAEC,EAAE4iG,aAzOoP,SAAY7iG,GAAG,IAAI,IAAIA,EAAE63E,QAAQ,CAAC73E,EAAE63E,QAAQ,EAAE,IAAI53E,EAAED,EAAE43E,MAAM33E,EAAEA,IAAID,EAAE83E,QAAQ73E,EAAEA,EAAElF,MAAK,SAASkF,GAAG,IAAID,EAAE63E,UAAU53E,EAAEA,EAAE6rG,QAAQ9rG,EAAE63E,QAAQ,EAAE73E,EAAE83E,QAAQ73E,MAAI,SAASA,GAAG,IAAID,EAAE63E,UAAU73E,EAAE63E,QAAQ,EAAE73E,EAAE83E,QAAQ73E,OAyOhb8rG,CAAG5xG,GAAM,IAAIA,EAAE09E,QAAQ,MAAM19E,EAAE29E,QAAqD,OAA7C39E,EAAEA,EAAE29E,QAAQ73E,EAAEhC,KAAK9D,EAAEsyB,EAAExsB,EAAE8K,IAQzD,SAAY/K,GAAG,GAAG,oBAAoBA,EAAE,OAAOsjG,GAAGtjG,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAExI,YAAgBslF,GAAG,OAAO,GAAG,GAAG98E,IAAIi9E,GAAG,OAAO,GAAG,OAAO,EARjF+uB,CAAG7xG,GAAG6F,EAAE86F,GAAG3gG,EAAE6F,GAAUysB,GAAG,KAAK,EAAExsB,EAAEujG,GAAG,KAAKvjG,EAAE9F,EAAE6F,EAAEvU,GAAG,MAAMuU,EAAE,KAAK,EAAEC,EAAEyjG,GAAG,KAAKzjG,EAAE9F,EAAE6F,EAAEvU,GAAG,MAAMuU,EAAE,KAAK,GAAGC,EAAEkjG,GAAG,KAAKljG,EAAE9F,EAAE6F,EAAEvU,GAAG,MAAMuU,EAAE,KAAK,GAAGC,EAAEojG,GAAG,KAAKpjG,EAAE9F,EAAE2gG,GAAG3gG,EAAE8D,KAAK+B,GAAGtU,EAAED,GAAG,MAAMuU,EAAE,MAAMlK,MAAMk7E,EAAE,IAAI72E,EAAE,KAAM,OAAO8F,EAAE,KAAK,EAAE,OAAOvU,EAAEuU,EAAEhC,KAAK9D,EAAE8F,EAAE4iG,aAA2CW,GAAGxjG,EAAEC,EAAEvU,EAArCyO,EAAE8F,EAAE2+F,cAAclzG,EAAEyO,EAAE2gG,GAAGpvG,EAAEyO,GAAc1O,GAAG,KAAK,EAAE,OAAOC,EAAEuU,EAAEhC,KAAK9D,EAAE8F,EAAE4iG,aAA2Ca,GAAG1jG,EAAEC,EAAEvU,EAArCyO,EAAE8F,EAAE2+F,cAAclzG,EAAEyO,EAAE2gG,GAAGpvG,EAAEyO,GAAc1O,GACpf,KAAK,EAAwB,GAAtBs4G,GAAG9jG,GAAGvU,EAAEuU,EAAE87F,YAAe,OAAO/7F,GAAG,OAAOtU,EAAE,MAAMoK,MAAMk7E,EAAE,MAAoH,GAA9GtlF,EAAEuU,EAAE4iG,aAA+B1oG,EAAE,QAApBA,EAAE8F,EAAEmhF,eAAyBjnF,EAAE9B,QAAQ,KAAKgkG,GAAGr8F,EAAEC,GAAGy8F,GAAGz8F,EAAEvU,EAAE,KAAKD,IAAGC,EAAEuU,EAAEmhF,cAAc/oF,WAAe8B,EAAE8oG,KAAKhjG,EAAEmjG,GAAGpjG,EAAEC,EAAExU,OAAO,CAAmF,IAA/E0O,EAAE8F,EAAEs6E,UAAUqK,WAAQ4d,GAAG3X,GAAG5qF,EAAEs6E,UAAUyI,cAAcl1D,YAAYy0E,GAAGtiG,EAAE9F,EAAEsoG,IAAG,GAAMtoG,EAAE,IAAI1O,EAAEyzG,GAAGj/F,EAAE,KAAKvU,EAAED,GAAGwU,EAAEi0C,MAAMzoD,EAAEA,GAAGA,EAAEy1F,WAAuB,EAAbz1F,EAAEy1F,UAAa,KAAKz1F,EAAEA,EAAE+1F,aAAa1gD,GAAE9gC,EAAEC,EAAEvU,EAAED,GAAGw3G,KAAKhjG,EAAEA,EAAEi0C,MAAM,OAAOj0C,EAAE,KAAK,EAAE,OAAOw/F,GAAGx/F,GAAG,OAAOD,GAAG8iG,GAAG7iG,GAAGvU,EAAEuU,EAAEhC,KAAK9D,EAAE8F,EAAE4iG,aAAap2E,EAAE,OAAOzsB,EAAEA,EAAE4/F,cAC5e,KAAK3lG,EAAEE,EAAE4a,SAAS21E,GAAGh/F,EAAEyO,GAAGF,EAAE,KAAK,OAAOwyB,GAAGi+D,GAAGh/F,EAAE+gC,KAAKxsB,EAAEihF,WAAW,IAAIuiB,GAAGzjG,EAAEC,GAAU,EAAPA,EAAE1T,MAAQ,IAAId,GAAG0O,EAAE0xG,QAAQ5rG,EAAEw7F,eAAex7F,EAAEq7F,oBAAoB,EAAEr7F,EAAE,OAAO6gC,GAAE9gC,EAAEC,EAAEhG,EAAExO,GAAGwU,EAAEA,EAAEi0C,OAAOj0C,EAAE,KAAK,EAAE,OAAO,OAAOD,GAAG8iG,GAAG7iG,GAAG,KAAK,KAAK,GAAG,OAAOqkG,GAAGtkG,EAAEC,EAAExU,GAAG,KAAK,EAAE,OAAO8zG,GAAGt/F,EAAEA,EAAEs6E,UAAUyI,eAAet3F,EAAEuU,EAAE4iG,aAAa,OAAO7iG,EAAEC,EAAEi0C,MAAM+qD,GAAGh/F,EAAE,KAAKvU,EAAED,GAAGq1C,GAAE9gC,EAAEC,EAAEvU,EAAED,GAAGwU,EAAEi0C,MAAM,KAAK,GAAG,OAAOxoD,EAAEuU,EAAEhC,KAAK9D,EAAE8F,EAAE4iG,aAA2CM,GAAGnjG,EAAEC,EAAEvU,EAArCyO,EAAE8F,EAAE2+F,cAAclzG,EAAEyO,EAAE2gG,GAAGpvG,EAAEyO,GAAc1O,GAAG,KAAK,EAAE,OAAOq1C,GAAE9gC,EAAEC,EAAEA,EAAE4iG,aAAap3G,GAAGwU,EAAEi0C,MAAM,KAAK,EACpc,KAAK,GAAG,OAAOpT,GAAE9gC,EAAEC,EAAEA,EAAE4iG,aAAa9tF,SAAStpB,GAAGwU,EAAEi0C,MAAM,KAAK,GAAGl0C,EAAE,CAACtU,EAAEuU,EAAEhC,KAAKq5E,SAASn9E,EAAE8F,EAAE4iG,aAAa5oG,EAAEgG,EAAE2/F,cAAcnzE,EAAEtyB,EAAE9N,MAAM,IAAI+gC,EAAEntB,EAAEhC,KAAKq5E,SAAiD,GAAxCrG,GAAE8pB,GAAG3tE,EAAE6pD,eAAe7pD,EAAE6pD,cAAcxqD,EAAK,OAAOxyB,EAAE,GAAGmzB,EAAEnzB,EAAE5N,MAA0G,KAApGogC,EAAE+lE,GAAGplE,EAAEX,GAAG,EAAwF,GAArF,oBAAoB/gC,EAAEsrF,sBAAsBtrF,EAAEsrF,sBAAsB5pD,EAAEX,GAAG,cAAqB,GAAGxyB,EAAE8a,WAAW5a,EAAE4a,WAAWogE,GAAE/jE,QAAQ,CAACnR,EAAEmjG,GAAGpjG,EAAEC,EAAExU,GAAG,MAAMuU,QAAQ,IAAc,QAAVotB,EAAEntB,EAAEi0C,SAAiB9mB,EAAEwwD,OAAO39E,GAAG,OAAOmtB,GAAG,CAAC,IAAIrjB,EAAEqjB,EAAE4sD,aAAa,GAAG,OACnfjwE,EAAE,CAAC9P,EAAEmzB,EAAE8mB,MAAM,IAAI,IAAI7oD,EAAE0e,EAAEyxF,aAAa,OAAOnwG,GAAG,CAAC,GAAGA,EAAEsvE,UAAUjvE,GAAG,KAAKL,EAAEuwG,aAAanvE,GAAG,CAAC,IAAIW,EAAEriB,OAAM1f,EAAEixG,GAAG7wG,EAAE,OAAQsf,IAAI,EAAEyxF,GAAGpvE,EAAE/hC,IAAI+hC,EAAEquE,eAAehwG,IAAI2hC,EAAEquE,eAAehwG,GAAiB,QAAdJ,EAAE+hC,EAAE6zD,YAAoB51F,EAAEowG,eAAehwG,IAAIJ,EAAEowG,eAAehwG,GAAG4vG,GAAGjuE,EAAEwwD,OAAOnyF,GAAGse,EAAE0xF,eAAehwG,IAAIse,EAAE0xF,eAAehwG,GAAG,MAAMJ,EAAEA,EAAEiO,WAAWW,EAAE,KAAKmzB,EAAEriB,KAAIqiB,EAAEnvB,OAAOgC,EAAEhC,KAAK,KAAamvB,EAAE8mB,MAAM,GAAG,OAAOj6C,EAAEA,EAAE2jF,OAAOxwD,OAAO,IAAInzB,EAAEmzB,EAAE,OAAOnzB,GAAG,CAAC,GAAGA,IAAIgG,EAAE,CAAChG,EAAE,KAAK,MAAkB,GAAG,QAAfmzB,EAAEnzB,EAAEunF,SAAoB,CAACp0D,EAAEwwD,OAAO3jF,EAAE2jF,OAAO3jF,EAAEmzB,EAAE,MAAMnzB,EAAEA,EAAE2jF,OAAOxwD,EACpfnzB,EAAE6mC,GAAE9gC,EAAEC,EAAE9F,EAAE4a,SAAStpB,GAAGwU,EAAEA,EAAEi0C,MAAM,OAAOj0C,EAAE,KAAK,EAAE,OAAO9F,EAAE8F,EAAEhC,KAAsBvS,GAAjB+gC,EAAExsB,EAAE4iG,cAAiB9tF,SAASwmF,GAAGt7F,EAAExU,GAAmCC,EAAEA,EAAlCyO,EAAEwhG,GAAGxhG,EAAEsyB,EAAEw/E,wBAA8BhsG,EAAEihF,WAAW,EAAEpgD,GAAE9gC,EAAEC,EAAEvU,EAAED,GAAGwU,EAAEi0C,MAAM,KAAK,GAAG,OAAgBznB,EAAEquE,GAAX3gG,EAAE8F,EAAEhC,KAAYgC,EAAE4iG,cAA6BQ,GAAGrjG,EAAEC,EAAE9F,EAAtBsyB,EAAEquE,GAAG3gG,EAAE8D,KAAKwuB,GAAc/gC,EAAED,GAAG,KAAK,GAAG,OAAO83G,GAAGvjG,EAAEC,EAAEA,EAAEhC,KAAKgC,EAAE4iG,aAAan3G,EAAED,GAAG,KAAK,GAAG,OAAOC,EAAEuU,EAAEhC,KAAK9D,EAAE8F,EAAE4iG,aAAa1oG,EAAE8F,EAAE2+F,cAAclzG,EAAEyO,EAAE2gG,GAAGpvG,EAAEyO,GAAG,OAAO6F,IAAIA,EAAEihF,UAAU,KAAKhhF,EAAEghF,UAAU,KAAKhhF,EAAEihF,WAAW,GAAGjhF,EAAE8K,IAAI,EAAEqqE,GAAE1pF,IAAIsU,GAAE,EAAGw4F,GAAGv4F,IAAID,GAAE,EAAGu7F,GAAGt7F,EAAExU,GAAGgyG,GAAGx9F,EAAEvU,EAAEyO,GAAG0jG,GAAG59F,EAAEvU,EAAEyO,EAAE1O,GAAGq4G,GAAG,KAClf7jG,EAAEvU,GAAE,EAAGsU,EAAEvU,GAAG,KAAK,GAAG,OAAOs5G,GAAG/kG,EAAEC,EAAExU,GAAG,MAAMqK,MAAMk7E,EAAE,IAAI/wE,EAAE8K,OAAQ,IAAI2gG,GAAG,KAAKnF,GAAG,KAChF,SAAS2F,GAAGlsG,EAAEC,EAAExU,EAAEC,GAAGwO,KAAK6Q,IAAI/K,EAAE9F,KAAKvN,IAAIlB,EAAEyO,KAAKsnF,QAAQtnF,KAAKg6C,MAAMh6C,KAAK0jF,OAAO1jF,KAAKqgF,UAAUrgF,KAAK+D,KAAK/D,KAAK0kG,YAAY,KAAK1kG,KAAK0D,MAAM,EAAE1D,KAAKma,IAAI,KAAKna,KAAK2oG,aAAa5iG,EAAE/F,KAAK8/E,aAAa9/E,KAAKknF,cAAclnF,KAAK6hG,YAAY7hG,KAAK0lG,cAAc,KAAK1lG,KAAK3N,KAAKb,EAAEwO,KAAKgnF,UAAU,EAAEhnF,KAAKqkG,WAAWrkG,KAAKukG,YAAYvkG,KAAKskG,WAAW,KAAKtkG,KAAKohG,oBAAoBphG,KAAKuhG,eAAe,EAAEvhG,KAAK+mF,UAAU,KAAK,SAAS0hB,GAAG3iG,EAAEC,EAAExU,EAAEC,GAAG,OAAO,IAAIwgH,GAAGlsG,EAAEC,EAAExU,EAAEC,GAC1b,SAAS43G,GAAGtjG,GAAiB,UAAdA,EAAEA,EAAEhT,aAAuBgT,EAAE+0E,kBAC5C,SAAS2pB,GAAG1+F,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEihF,UAC4E,OADlE,OAAOx1F,IAAGA,EAAEk3G,GAAG3iG,EAAE+K,IAAI9K,EAAED,EAAErT,IAAIqT,EAAEzT,OAAQqyG,YAAY5+F,EAAE4+F,YAAYnzG,EAAEwS,KAAK+B,EAAE/B,KAAKxS,EAAE8uF,UAAUv6E,EAAEu6E,UAAU9uF,EAAEw1F,UAAUjhF,EAAEA,EAAEihF,UAAUx1F,IAAIA,EAAEo3G,aAAa5iG,EAAExU,EAAEy1F,UAAU,EAAEz1F,EAAE+yG,WAAW,KAAK/yG,EAAEgzG,YAAY,KAAKhzG,EAAE8yG,WAAW,MAAM9yG,EAAE6vG,oBAAoBt7F,EAAEs7F,oBAAoB7vG,EAAEgwG,eAAez7F,EAAEy7F,eAAehwG,EAAEyoD,MAAMl0C,EAAEk0C,MAAMzoD,EAAEm0G,cAAc5/F,EAAE4/F,cAAcn0G,EAAE21F,cAAcphF,EAAEohF,cAAc31F,EAAEswG,YAAY/7F,EAAE+7F,YAAY97F,EAAED,EAAEg6E,aAAavuF,EAAEuuF,aAAa,OAAO/5E,EAAE,KAAK,CAACw7F,eAAex7F,EAAEw7F,eACzfD,aAAav7F,EAAEu7F,aAAaK,WAAW57F,EAAE47F,YAAYpwG,EAAE+1F,QAAQxhF,EAAEwhF,QAAQ/1F,EAAEmS,MAAMoC,EAAEpC,MAAMnS,EAAE4oB,IAAIrU,EAAEqU,IAAW5oB,EAC5G,SAASozG,GAAG7+F,EAAEC,EAAExU,EAAEC,EAAEyO,EAAEsyB,GAAG,IAAIxyB,EAAE,EAAM,GAAJvO,EAAEsU,EAAK,oBAAoBA,EAAEsjG,GAAGtjG,KAAK/F,EAAE,QAAQ,GAAG,kBAAkB+F,EAAE/F,EAAE,OAAO+F,EAAE,OAAOA,GAAG,KAAKw8E,GAAG,OAAOwiB,GAAGvzG,EAAEspB,SAAS5a,EAAEsyB,EAAExsB,GAAG,KAAK48E,GAAG5iF,EAAE,EAAEE,GAAG,EAAE,MAAM,KAAKsiF,GAAGxiF,EAAE,EAAEE,GAAG,EAAE,MAAM,KAAKuiF,GAAG,OAAO18E,EAAE2iG,GAAG,GAAGl3G,EAAEwU,EAAI,EAAF9F,IAAOykG,YAAYliB,GAAG18E,EAAE/B,KAAKy+E,GAAG18E,EAAEy7F,eAAehvE,EAAEzsB,EAAE,KAAK+8E,GAAG,OAAO/8E,EAAE2iG,GAAG,GAAGl3G,EAAEwU,EAAE9F,IAAK8D,KAAK8+E,GAAG/8E,EAAE4+F,YAAY7hB,GAAG/8E,EAAEy7F,eAAehvE,EAAEzsB,EAAE,KAAKg9E,GAAG,OAAOh9E,EAAE2iG,GAAG,GAAGl3G,EAAEwU,EAAE9F,IAAKykG,YAAY5hB,GAAGh9E,EAAEy7F,eAAehvE,EAAEzsB,EAAE,QAAQ,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,OAAOA,EAAExI,UAAU,KAAKmlF,GAAG1iF,EACpf,GAAG,MAAM+F,EAAE,KAAK48E,GAAG3iF,EAAE,EAAE,MAAM+F,EAAE,KAAK88E,GAAG7iF,EAAE,GAAG,MAAM+F,EAAE,KAAKi9E,GAAGhjF,EAAE,GAAG,MAAM+F,EAAE,KAAKk9E,GAAGjjF,EAAE,GAAGvO,EAAE,KAAK,MAAMsU,EAAE,KAAKm9E,GAAGljF,EAAE,GAAG,MAAM+F,EAAE,MAAMlK,MAAMk7E,EAAE,IAAI,MAAMhxE,EAAEA,SAASA,EAAE,KAAgE,OAA1DC,EAAE0iG,GAAG1oG,EAAExO,EAAEwU,EAAE9F,IAAKykG,YAAY5+F,EAAEC,EAAEhC,KAAKvS,EAAEuU,EAAEw7F,eAAehvE,EAASxsB,EAAE,SAAS++F,GAAGh/F,EAAEC,EAAExU,EAAEC,GAAoC,OAAjCsU,EAAE2iG,GAAG,EAAE3iG,EAAEtU,EAAEuU,IAAKw7F,eAAehwG,EAASuU,EAAE,SAAS2+F,GAAG3+F,EAAEC,EAAExU,GAAuC,OAApCuU,EAAE2iG,GAAG,EAAE3iG,EAAE,KAAKC,IAAKw7F,eAAehwG,EAASuU,EACrW,SAAS++F,GAAG/+F,EAAEC,EAAExU,GAAuK,OAApKwU,EAAE0iG,GAAG,EAAE,OAAO3iG,EAAE+U,SAAS/U,EAAE+U,SAAS,GAAG/U,EAAErT,IAAIsT,IAAKw7F,eAAehwG,EAAEwU,EAAEs6E,UAAU,CAACyI,cAAchjF,EAAEgjF,cAAcmpB,gBAAgB,KAAKrN,eAAe9+F,EAAE8+F,gBAAuB7+F,EAC9L,SAASmsG,GAAGpsG,EAAEC,EAAExU,GAAGyO,KAAK6Q,IAAI9K,EAAE/F,KAAKkX,QAAQ,KAAKlX,KAAK8oF,cAAchjF,EAAE9F,KAAKywG,UAAUzwG,KAAKiyG,gBAAgB,KAAKjyG,KAAK+vG,uBAAuB,EAAE/vG,KAAK8vG,aAAa,KAAK9vG,KAAKkwG,eAAe,EAAElwG,KAAK8pG,eAAe9pG,KAAKygE,QAAQ,KAAKzgE,KAAK0qF,QAAQn5F,EAAEyO,KAAKsvG,aAAa,KAAKtvG,KAAKqvG,iBAAiB,GAAGrvG,KAAK+uG,gBAAgB/uG,KAAKkvG,eAAelvG,KAAKmvG,sBAAsBnvG,KAAKgwG,kBAAkBhwG,KAAKgxG,mBAAmBhxG,KAAKivG,iBAAiB,EACva,SAASD,GAAGlpG,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEkrG,mBAAyC,OAAtBlrG,EAAEA,EAAEkqG,kBAAyB,IAAIz+G,GAAGA,GAAGwU,GAAGD,GAAGC,EAAE,SAASulG,GAAGxlG,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEkrG,mBAAmBx/G,EAAEsU,EAAEkqG,kBAAkBz+G,EAAEwU,IAAID,EAAEkrG,mBAAmBjrG,IAAMvU,EAAEuU,GAAG,IAAIxU,KAAEuU,EAAEkqG,kBAAkBjqG,GAAEA,GAAGD,EAAEopG,iBAAiBppG,EAAEopG,eAAe,GAAGnpG,GAAGD,EAAEipG,kBAAkBjpG,EAAEipG,gBAAgB,GAClT,SAASxD,GAAGzlG,EAAEC,GAAGA,EAAED,EAAEmpG,mBAAmBnpG,EAAEmpG,iBAAiBlpG,GAAG,IAAIxU,EAAEuU,EAAEkrG,mBAAmB,IAAIz/G,IAAIwU,GAAGxU,EAAEuU,EAAEkrG,mBAAmBlrG,EAAEkqG,kBAAkBlqG,EAAEqpG,sBAAsB,EAAEppG,GAAGD,EAAEkqG,oBAAoBlqG,EAAEkqG,kBAAkBjqG,EAAE,GAAGA,EAAED,EAAEqpG,wBAAwBrpG,EAAEqpG,sBAAsBppG,IAAI,SAASypG,GAAG1pG,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEipG,iBAAmB,IAAIx9G,GAAGA,EAAEwU,KAAED,EAAEipG,gBAAgBhpG,GAC5V,SAASosG,GAAGrsG,EAAEC,EAAExU,EAAEC,GAAG,IAAIyO,EAAE8F,EAAEmR,QAAQqb,EAAE2wE,KAAKnjG,EAAE8iG,GAAG5mB,SAAS1pD,EAAE4wE,GAAG5wE,EAAEtyB,EAAEF,GAAG+F,EAAE,GAAGvU,EAAE,CAAyBwU,EAAE,CAAC,GAAG+gF,GAA9Bv1F,EAAEA,EAAE0xG,uBAAkC1xG,GAAG,IAAIA,EAAEsf,IAAI,MAAMjV,MAAMk7E,EAAE,MAAM,IAAI5jD,EAAE3hC,EAAE,EAAE,CAAC,OAAO2hC,EAAEriB,KAAK,KAAK,EAAEqiB,EAAEA,EAAEmtD,UAAU5f,QAAQ,MAAM16D,EAAE,KAAK,EAAE,GAAGm1E,GAAEhoD,EAAEnvB,MAAM,CAACmvB,EAAEA,EAAEmtD,UAAUke,0CAA0C,MAAMx4F,GAAGmtB,EAAEA,EAAEwwD,aAAa,OAAOxwD,GAAG,MAAMt3B,MAAMk7E,EAAE,MAAO,GAAG,IAAIvlF,EAAEsf,IAAI,CAAC,IAAIhB,EAAEte,EAAEwS,KAAK,GAAGm3E,GAAErrE,GAAG,CAACte,EAAE6sG,GAAG7sG,EAAEse,EAAEqjB,GAAG,MAAMptB,GAAGvU,EAAE2hC,OAAO3hC,EAAEssG,GAC3W,OAD8W,OAAO93F,EAAE06D,QAAQ16D,EAAE06D,QAAQlvE,EAAEwU,EAAE+jG,eAAev4G,GAAEwU,EAAEq8F,GAAG7vE,EAAExyB,IAAK84E,QAAQ,CAAC16E,QAAQ2H,GACpe,QADuetU,OAAE,IAClfA,EAAE,KAAKA,KAAauU,EAAEkG,SAASza,GAAG8wG,GAAGriG,EAAE8F,GAAGq9F,GAAGnjG,EAAEsyB,GAAUA,EAAE,SAAS6/E,GAAGtsG,GAAe,KAAZA,EAAEA,EAAEoR,SAAc8iC,MAAM,OAAO,KAAK,OAAOl0C,EAAEk0C,MAAMnpC,KAAK,KAAK,EAA2B,QAAQ,OAAO/K,EAAEk0C,MAAMqmC,WAAW,SAASgyB,GAAGvsG,EAAEC,GAAqB,QAAlBD,EAAEA,EAAEohF,gBAAwB,OAAOphF,EAAEqhF,YAAYrhF,EAAEqkG,UAAUpkG,IAAID,EAAEqkG,UAAUpkG,GAAG,SAASusG,GAAGxsG,EAAEC,GAAGssG,GAAGvsG,EAAEC,IAAID,EAAEA,EAAEihF,YAAYsrB,GAAGvsG,EAAEC,GACpV,SAASwsG,GAAGzsG,EAAEC,EAAExU,GAA6B,IAAIC,EAAE,IAAI0gH,GAAGpsG,EAAEC,EAAzCxU,EAAE,MAAMA,IAAG,IAAKA,EAAEm5F,SAA4BzqF,EAAEwoG,GAAG,EAAE,KAAK,KAAK,IAAI1iG,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGvU,EAAE0lB,QAAQjX,EAAEA,EAAEogF,UAAU7uF,EAAEowG,GAAG3hG,GAAG6F,EAAEkrF,IAAIx/F,EAAE0lB,QAAQ3lB,GAAG,IAAIwU,GAhO5J,SAAYD,EAAEC,GAAG,IAAIxU,EAAEs1F,GAAG9gF,GAAG+jF,GAAG1zF,SAAQ,SAAS0P,GAAGkjF,GAAGljF,EAAEC,EAAExU,MAAKw4F,GAAG3zF,SAAQ,SAAS0P,GAAGkjF,GAAGljF,EAAEC,EAAExU,MAgOiEihH,CAAG1sG,EAAE,IAAIA,EAAE8tE,SAAS9tE,EAAEA,EAAEo4D,eAAel+D,KAAKyyG,cAAcjhH,EACzN,SAASkhH,GAAG5sG,GAAG,SAASA,GAAG,IAAIA,EAAE8tE,UAAU,IAAI9tE,EAAE8tE,UAAU,KAAK9tE,EAAE8tE,WAAW,IAAI9tE,EAAE8tE,UAAU,iCAAiC9tE,EAAE4iC,YAChI,SAASiqE,GAAG7sG,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,IAAIsyB,EAAEhhC,EAAEs7G,oBAAoB,GAAGt6E,EAAE,CAAC,IAAIxyB,EAAEwyB,EAAEkgF,cAAc,GAAG,oBAAoBxyG,EAAE,CAAC,IAAIizB,EAAEjzB,EAAEA,EAAE,WAAW,IAAI6F,EAAEssG,GAAGryG,GAAGmzB,EAAE7hC,KAAKyU,IAAIqsG,GAAGpsG,EAAEhG,EAAE+F,EAAE7F,OAAO,CAAmD,GAAlDsyB,EAAEhhC,EAAEs7G,oBAD9B,SAAY/mG,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAE8tE,SAAS9tE,EAAE4xD,gBAAgB5xD,EAAE8tB,WAAW,OAAa,IAAI7tB,EAAE6tE,WAAW7tE,EAAEsH,aAAa,qBAAwBtH,EAAE,IAAI,IAAIxU,EAAEA,EAAEuU,EAAE+jD,WAAW/jD,EAAEqc,YAAY5wB,GAAG,OAAO,IAAIghH,GAAGzsG,EAAE,EAAEC,EAAE,CAAC2kF,SAAQ,QAAI,GACvKkoB,CAAGrhH,EAAEC,GAAGuO,EAAEwyB,EAAEkgF,cAAiB,oBAAoBxyG,EAAE,CAAC,IAAI4P,EAAE5P,EAAEA,EAAE,WAAW,IAAI6F,EAAEssG,GAAGryG,GAAG8P,EAAExe,KAAKyU,IAAI0qG,IAAG,WAAW2B,GAAGpsG,EAAEhG,EAAE+F,EAAE7F,MAAK,OAAOmyG,GAAGryG,GAAG,SAAS8yG,GAAG/sG,EAAEC,EAAExU,GAAG,IAAIC,EAAE,EAAEyE,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACqH,SAAS+kF,GAAG5vF,IAAI,MAAMjB,EAAE,KAAK,GAAGA,EAAEqpB,SAAS/U,EAAEgjF,cAAc/iF,EAAE6+F,eAAerzG,GAGpR,SAASuhH,GAAGhtG,EAAEC,GAAG,IAAIxU,EAAE,EAAE0E,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIy8G,GAAG3sG,GAAG,MAAMnK,MAAMk7E,EAAE,MAAM,OAAO+7B,GAAG/sG,EAAEC,EAAE,KAAKxU,GALpIghH,GAAGz/G,UAAUgV,OAAO,SAAShC,GAAGqsG,GAAGrsG,EAAE9F,KAAKyyG,cAAc,KAAK,OAAOF,GAAGz/G,UAAUigH,QAAQ,WAAW,IAAIjtG,EAAE9F,KAAKyyG,cAAc1sG,EAAED,EAAEgjF,cAAcqpB,GAAG,KAAKrsG,EAAE,MAAK,WAAWC,EAAEirF,IAAI,SAG1Y7H,GAAG,SAASrjF,GAAG,GAAG,KAAKA,EAAE+K,IAAI,CAAC,IAAI9K,EAAE46F,GAAGuC,KAAK,IAAI,KAAKE,GAAGt9F,EAAEC,GAAGusG,GAAGxsG,EAAEC,KAAKqjF,GAAG,SAAStjF,GAAG,KAAKA,EAAE+K,MAAMuyF,GAAGt9F,EAAE,GAAGwsG,GAAGxsG,EAAE,KAAKujF,GAAG,SAASvjF,GAAG,GAAG,KAAKA,EAAE+K,IAAI,CAAC,IAAI9K,EAAEm9F,KAAoBE,GAAGt9F,EAAlBC,EAAEo9F,GAAGp9F,EAAED,EAAE,OAAcwsG,GAAGxsG,EAAEC,KAC1Lk6E,EAAG,SAASn6E,EAAEC,EAAExU,GAAG,OAAOwU,GAAG,IAAK,QAAyB,GAAjB2+E,GAAG5+E,EAAEvU,GAAGwU,EAAExU,EAAEE,KAAQ,UAAUF,EAAEwS,MAAM,MAAMgC,EAAE,CAAC,IAAIxU,EAAEuU,EAAEvU,EAAE4vB,YAAY5vB,EAAEA,EAAE4vB,WAAsF,IAA3E5vB,EAAEA,EAAEsb,iBAAiB,cAAciB,KAAKC,UAAU,GAAGhI,GAAG,mBAAuBA,EAAE,EAAEA,EAAExU,EAAE2E,OAAO6P,IAAI,CAAC,IAAIvU,EAAED,EAAEwU,GAAG,GAAGvU,IAAIsU,GAAGtU,EAAEynB,OAAOnT,EAAEmT,KAAK,CAAC,IAAIhZ,EAAEixF,GAAG1/F,GAAG,IAAIyO,EAAE,MAAMrE,MAAMk7E,EAAE,KAAKmN,GAAGzyF,GAAGkzF,GAAGlzF,EAAEyO,KAAK,MAAM,IAAK,WAAWilF,GAAGp/E,EAAEvU,GAAG,MAAM,IAAK,SAAmB,OAAVwU,EAAExU,EAAEY,QAAe4yF,GAAGj/E,IAAIvU,EAAE+jC,SAASvvB,GAAE,KAAMy6E,EAAG+vB,GAC9Z9vB,EAAG,SAAS36E,EAAEC,EAAExU,EAAEC,EAAEyO,GAAG,IAAIsyB,EAAEmpD,GAAEA,IAAG,EAAE,IAAI,OAAO4kB,GAAG,GAAGx6F,EAAEpT,KAAK,KAAKqT,EAAExU,EAAEC,EAAEyO,IAAnC,QA3DoC,KA2DWy7E,GAAEnpD,IAASmuE,OAAOhgB,EAAG,WA3DhC,KA2D6C,GAADhF,MAhD0R,WAAc,GAAG,OAAO6yB,GAAG,CAAC,IAAIzoG,EAAEyoG,GAAGA,GAAG,KAAKzoG,EAAE1P,SAAQ,SAAS0P,EAAEvU,GAAGi+G,GAAGj+G,EAAEuU,GAAGiyE,GAAExmF,MAAKmvG,MAgD3VsS,GAAKvD,OAAO9uB,EAAG,SAAS76E,EAAEC,GAAG,IAAIxU,EAAEmqF,GAAEA,IAAG,EAAE,IAAI,OAAO51E,EAAEC,GAAb,QA3DzG,KA2DiI21E,GAAEnqF,IAASmvG,OAA8I,IAAIuS,GAAG,CAACjhF,OAAO,CAACs4D,GAAG2G,GAAGC,GAAGnR,EAAGN,EAAGkS,GAAG,SAAS7rF,GAAG2hF,GAAG3hF,EAAE4rF,KAAKpR,EAAGC,EAAGpoF,GAAG8vF,GAAGwnB,GAAG,CAACv4F,SAAQ,MAClb,SAAUpR,GAAG,IAAIC,EAAED,EAAEotG,yBAnBgE,SAAYptG,GAAG,GAAG,qBAAqBjO,+BAA+B,OAAM,EAAG,IAAIkO,EAAElO,+BAA+B,GAAGkO,EAAEotG,aAAaptG,EAAEqtG,cAAc,OAAM,EAAG,IAAI,IAAI7hH,EAAEwU,EAAEstG,OAAOvtG,GAAG0rG,GAAG,SAAS1rG,GAAG,IAAIC,EAAEutG,kBAAkB/hH,EAAEuU,OAAE,EAAO,MAA0B,GAApBA,EAAEoR,QAAQ8vE,YAAe,MAAM/mF,MAAMosG,GAAG,SAASvmG,GAAG,IAAIC,EAAEwtG,qBAAqBhiH,EAAEuU,GAAG,MAAM7F,MAAM,MAAMzO,MAmBpXgiH,CAAG7gH,EAAE,GAAGmT,EAAE,CAAC2tG,kBAAkB,KAAKC,cAAc,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBhyB,EAAG9F,uBAAuB+3B,wBAAwB,SAAShuG,GAAW,OAAO,QAAfA,EAAEuhF,GAAGvhF,IAAmB,KAAKA,EAAEu6E,WAAW6yB,wBAAwB,SAASptG,GAAG,OAAOC,EAAEA,EAAED,GAAG,MAAMiuG,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,QAAzb,CAAmc,CAACjB,wBAAwBnqB,GAAGqrB,WAAW,EAAE51B,QAAQ,UACpf61B,oBAAoB,cAAcrjH,EAAQ2rF,mDAAmDs2B,GAAGjiH,EAAQsjH,aAAaxB,GAAG9hH,EAAQujH,YAAY,SAASzuG,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE8tE,SAAS,OAAO9tE,EAAE,IAAIC,EAAED,EAAEm9F,oBAAoB,QAAG,IAASl9F,EAAE,CAAC,GAAG,oBAAoBD,EAAEgC,OAAO,MAAMlM,MAAMk7E,EAAE,MAAM,MAAMl7E,MAAMk7E,EAAE,IAAIllF,OAAO6C,KAAKqR,KAA0C,OAA5BA,EAAE,QAAVA,EAAEuhF,GAAGthF,IAAc,KAAKD,EAAEu6E,WACvWrvF,EAAQwjH,UAAU,SAAS1uG,EAAEC,GAAG,GA9DwC,KA8DnC,GAAD21E,IAAe,MAAM9/E,MAAMk7E,EAAE,MAAM,IAAIvlF,EAAEmqF,GAAEA,IAAG,EAAE,IAAI,OAAO4kB,GAAG,GAAGx6F,EAAEpT,KAAK,KAAKqT,IAA7B,QAAyC21E,GAAEnqF,EAAEmvG,OAAO1vG,EAAQ05F,QAAQ,SAAS5kF,EAAEC,EAAExU,GAAG,IAAImhH,GAAG3sG,GAAG,MAAMnK,MAAMk7E,EAAE,MAAM,OAAO67B,GAAG,KAAK7sG,EAAEC,GAAE,EAAGxU,IAAIP,EAAQ8W,OAAO,SAAShC,EAAEC,EAAExU,GAAG,IAAImhH,GAAG3sG,GAAG,MAAMnK,MAAMk7E,EAAE,MAAM,OAAO67B,GAAG,KAAK7sG,EAAEC,GAAE,EAAGxU,IACnTP,EAAQyjH,uBAAuB,SAAS3uG,GAAG,IAAI4sG,GAAG5sG,GAAG,MAAMlK,MAAMk7E,EAAE,KAAK,QAAOhxE,EAAE+mG,sBAAqB2D,IAAG,WAAWmC,GAAG,KAAK,KAAK7sG,GAAE,GAAG,WAAWA,EAAE+mG,oBAAoB,KAAK/mG,EAAEkrF,IAAI,YAAS,IAAQhgG,EAAQ0jH,wBAAwBnE,GAAGv/G,EAAQ2jH,sBAAsB,SAAS7uG,EAAEC,GAAG,OAAO+sG,GAAGhtG,EAAEC,EAAE,EAAE9P,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,OACvVjF,EAAQ4jH,oCAAoC,SAAS9uG,EAAEC,EAAExU,EAAEC,GAAG,IAAIkhH,GAAGnhH,GAAG,MAAMqK,MAAMk7E,EAAE,MAAM,GAAG,MAAMhxE,QAAG,IAASA,EAAEm9F,oBAAoB,MAAMrnG,MAAMk7E,EAAE,KAAK,OAAO67B,GAAG7sG,EAAEC,EAAExU,GAAE,EAAGC,IAAIR,EAAQwtF,QAAQ,W,6BChS/LvtF,EAAOD,QAAUkC,EAAQ,K,6BCMd,IAAIq/B,EAAExyB,EAAEmzB,EAAErjB,EAAE1e,EACzB,GAAG,qBAAqB+O,QAAQ,oBAAoB20G,eAAe,CAAC,IAAI7hH,EAAE,KAAKglF,EAAE,KAAK5lF,EAAE,SAAFA,IAAa,GAAG,OAAOY,EAAE,IAAI,IAAI8S,EAAE9U,EAAQguG,eAAehsG,GAAE,EAAG8S,GAAG9S,EAAE,KAAK,MAAM+S,GAAG,MAAM2L,WAAWtf,EAAE,GAAG2T,IAAK+wE,EAAEhgE,KAAKm8E,MAAMjiG,EAAQguG,aAAa,WAAW,OAAOloF,KAAKm8E,MAAMnc,GAAGvkD,EAAE,SAASzsB,GAAG,OAAO9S,EAAE0e,WAAW6gB,EAAE,EAAEzsB,IAAI9S,EAAE8S,EAAE4L,WAAWtf,EAAE,KAAK2N,EAAE,SAAS+F,EAAEC,GAAGiyE,EAAEtmE,WAAW5L,EAAEC,IAAImtB,EAAE,WAAWC,aAAa6kD,IAAInoE,EAAE,WAAW,OAAM,GAAI1e,EAAEH,EAAQ8jH,wBAAwB,iBAAiB,CAAC,IAAIrzF,EAAEvhB,OAAO60G,YAAYhqF,EAAE7qB,OAAO4W,KACnfyc,EAAErzB,OAAOwR,WAAWkmE,EAAE13E,OAAOizB,aAAa,GAAG,qBAAqBn7B,QAAQ,CAAC,IAAIi/E,EAAE/2E,OAAO80G,qBAAqB,oBAAoB90G,OAAOuR,uBAAuBzZ,QAAQC,MAAM,2IAA2I,oBAAoBg/E,GAAGj/E,QAAQC,MAAM,0IAA0I,GAAG,kBACnewpB,GAAG,oBAAoBA,EAAEwxE,IAAIjiG,EAAQguG,aAAa,WAAW,OAAOv9E,EAAEwxE,WAAW,CAAC,IAAI/Y,EAAEnvD,EAAEkoE,MAAMjiG,EAAQguG,aAAa,WAAW,OAAOj0E,EAAEkoE,MAAM/Y,GAAG,IAAIzC,GAAE,EAAG2C,EAAE,KAAKpD,GAAG,EAAE/+B,EAAE,EAAE0iC,EAAE,EAAE9qE,EAAE,WAAW,OAAO7e,EAAQguG,gBAAgBrkB,GAAGxpF,EAAE,aAAaH,EAAQ8jH,wBAAwB,SAAShvG,GAAG,EAAEA,GAAG,IAAIA,EAAE9N,QAAQC,MAAM,oHAAoHggD,EAAE,EAAEnyC,EAAEzQ,KAAK29B,MAAM,IAAIltB,GAAG,GAAG,IAAI80E,EAAE,IAAIi6B,eAAe99B,EAAE6D,EAAEq6B,MAAMr6B,EAAEs6B,MAAMxnG,UACnf,WAAW,GAAG,OAAO0sE,EAAE,CAAC,IAAIt0E,EAAE9U,EAAQguG,eAAerkB,EAAE70E,EAAEmyC,EAAE,IAAImiC,GAAE,EAAGt0E,GAAGixE,EAAElpE,YAAY,OAAO4pE,GAAE,EAAG2C,EAAE,MAAM,MAAMr0E,GAAG,MAAMgxE,EAAElpE,YAAY,MAAM9H,QAAS0xE,GAAE,GAAIllD,EAAE,SAASzsB,GAAGs0E,EAAEt0E,EAAE2xE,IAAIA,GAAE,EAAGV,EAAElpE,YAAY,QAAQ9N,EAAE,SAAS+F,EAAEC,GAAGixE,EAAEzjD,GAAE,WAAWztB,EAAE9U,EAAQguG,kBAAiBj5F,IAAImtB,EAAE,WAAW0kD,EAAEZ,GAAGA,GAAG,GAAG,SAAS5wC,EAAEtgC,EAAEC,GAAG,IAAIxU,EAAEuU,EAAE5P,OAAO4P,EAAE/R,KAAKgS,GAAGD,EAAE,OAAO,CAAC,IAAItU,EAAED,EAAE,IAAI,EAAE0O,EAAE6F,EAAEtU,GAAG,UAAG,IAASyO,GAAG,EAAEg7E,EAAEh7E,EAAE8F,IAA0B,MAAMD,EAA7BA,EAAEtU,GAAGuU,EAAED,EAAEvU,GAAG0O,EAAE1O,EAAEC,GAAgB,SAAS0pF,EAAEp1E,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAC9c,SAASu1E,EAAEv1E,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAIxU,EAAEuU,EAAEgrB,MAAM,GAAGv/B,IAAIwU,EAAE,CAACD,EAAE,GAAGvU,EAAEuU,EAAE,IAAI,IAAItU,EAAE,EAAEyO,EAAE6F,EAAE5P,OAAO1E,EAAEyO,GAAG,CAAC,IAAI3O,EAAE,GAAGE,EAAE,GAAG,EAAEmB,EAAEmT,EAAExU,GAAGqY,EAAErY,EAAE,EAAEU,EAAE8T,EAAE6D,GAAG,QAAG,IAAShX,GAAG,EAAEsoF,EAAEtoF,EAAEpB,QAAG,IAASS,GAAG,EAAEipF,EAAEjpF,EAAEW,IAAImT,EAAEtU,GAAGQ,EAAE8T,EAAE6D,GAAGpY,EAAEC,EAAEmY,IAAI7D,EAAEtU,GAAGmB,EAAEmT,EAAExU,GAAGC,EAAEC,EAAEF,OAAQ,WAAG,IAASU,GAAG,EAAEipF,EAAEjpF,EAAET,IAA0B,MAAMuU,EAA7BA,EAAEtU,GAAGQ,EAAE8T,EAAE6D,GAAGpY,EAAEC,EAAEmY,IAAgB,OAAO5D,EAAE,OAAO,KAAK,SAASk1E,EAAEn1E,EAAEC,GAAG,IAAIxU,EAAEuU,EAAEqvG,UAAUpvG,EAAEovG,UAAU,OAAO,IAAI5jH,EAAEA,EAAEuU,EAAE3N,GAAG4N,EAAE5N,GAAG,IAAI0/E,EAAE,GAAGjpC,EAAE,GAAG2sC,EAAE,EAAEvzC,EAAE,KAAKpB,EAAE,EAAE8wC,GAAE,EAAGF,GAAE,EAAGG,GAAE,EACja,SAASG,EAAEhyE,GAAG,IAAI,IAAIC,EAAEm1E,EAAEtsC,GAAG,OAAO7oC,GAAG,CAAC,GAAG,OAAOA,EAAEkG,SAASovE,EAAEzsC,OAAQ,MAAG7oC,EAAEqvG,WAAWtvG,GAAgD,MAA9Cu1E,EAAEzsC,GAAG7oC,EAAEovG,UAAUpvG,EAAEw7F,eAAen7D,EAAEyxC,EAAE9xE,GAAcA,EAAEm1E,EAAEtsC,IAAI,SAAS8sC,EAAE51E,GAAa,GAAV6xE,GAAE,EAAGG,EAAEhyE,IAAO0xE,EAAE,GAAG,OAAO0D,EAAErD,GAAGL,GAAE,EAAGjlD,EAAEqpD,OAAO,CAAC,IAAI71E,EAAEm1E,EAAEtsC,GAAG,OAAO7oC,GAAGhG,EAAE27E,EAAE31E,EAAEqvG,UAAUtvG,IACtP,SAAS81E,EAAE91E,EAAEC,GAAGyxE,GAAE,EAAGG,IAAIA,GAAE,EAAGzkD,KAAKwkD,GAAE,EAAG,IAAInmF,EAAEq1C,EAAE,IAAS,IAALkxC,EAAE/xE,GAAOiiC,EAAEkzC,EAAErD,GAAG,OAAO7vC,MAAMA,EAAEu5D,eAAex7F,IAAID,IAAI+J,MAAM,CAAC,IAAIre,EAAEw2C,EAAE/7B,SAAS,GAAG,OAAOza,EAAE,CAACw2C,EAAE/7B,SAAS,KAAK26B,EAAEoB,EAAEqtE,cAAc,IAAIp1G,EAAEzO,EAAEw2C,EAAEu5D,gBAAgBx7F,GAAGA,EAAE/U,EAAQguG,eAAe,oBAAoB/+F,EAAE+nC,EAAE/7B,SAAShM,EAAE+nC,IAAIkzC,EAAErD,IAAIwD,EAAExD,GAAGC,EAAE/xE,QAAQs1E,EAAExD,GAAG7vC,EAAEkzC,EAAErD,GAAG,GAAG,OAAO7vC,EAAE,IAAI12C,GAAE,MAAO,CAAC,IAAIqB,EAAEuoF,EAAEtsC,GAAG,OAAOj8C,GAAGoN,EAAE27E,EAAE/oF,EAAEyiH,UAAUrvG,GAAGzU,GAAE,EAAG,OAAOA,EAA7U,QAAuV02C,EAAE,KAAKpB,EAAEr1C,EAAEmmF,GAAE,GACpZ,SAASmE,EAAE/1E,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,WAAW,KAAK,EAAE,OAAO,IAAI,QAAQ,OAAO,KAAK,IAAIiyE,EAAE5mF,EAAEH,EAAQ0uG,sBAAsB,EAAE1uG,EAAQouG,2BAA2B,EAAEpuG,EAAQwuG,qBAAqB,EAAExuG,EAAQi6F,wBAAwB,EAAEj6F,EAAQskH,mBAAmB,KAAKtkH,EAAQ86F,8BAA8B,EAAE96F,EAAQ4tG,wBAAwB,SAAS94F,GAAGA,EAAEmG,SAAS,MAAMjb,EAAQukH,2BAA2B,WAAW/9B,GAAGE,IAAIF,GAAE,EAAGjlD,EAAEqpD,KACxc5qF,EAAQkuG,iCAAiC,WAAW,OAAOt4D,GAAG51C,EAAQwkH,8BAA8B,WAAW,OAAOt6B,EAAErD,IAAI7mF,EAAQykH,cAAc,SAAS3vG,GAAG,OAAO8gC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI7gC,EAAE,EAAE,MAAM,QAAQA,EAAE6gC,EAAE,IAAIr1C,EAAEq1C,EAAEA,EAAE7gC,EAAE,IAAI,OAAOD,IAAX,QAAuB8gC,EAAEr1C,IAAIP,EAAQ0kH,wBAAwB,aAAa1kH,EAAQ8tG,sBAAsB/mB,EAAE/mF,EAAQw5F,yBAAyB,SAAS1kF,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIvU,EAAEq1C,EAAEA,EAAE9gC,EAAE,IAAI,OAAOC,IAAX,QAAuB6gC,EAAEr1C,IACheP,EAAQg6F,0BAA0B,SAASllF,EAAEC,EAAExU,GAAG,IAAIC,EAAER,EAAQguG,eAAe,GAAG,kBAAkBztG,GAAG,OAAOA,EAAE,CAAC,IAAI0O,EAAE1O,EAAE+gE,MAAMryD,EAAE,kBAAkBA,GAAG,EAAEA,EAAEzO,EAAEyO,EAAEzO,EAAED,EAAE,kBAAkBA,EAAE8gE,QAAQ9gE,EAAE8gE,QAAQwpB,EAAE/1E,QAAQvU,EAAEsqF,EAAE/1E,GAAG7F,EAAEzO,EAAyM,OAAjMsU,EAAE,CAAC3N,GAAGojF,IAAItvE,SAASlG,EAAEsvG,cAAcvvG,EAAEsvG,UAAUn1G,EAAEshG,eAAvDhwG,EAAE0O,EAAE1O,EAAoE4jH,WAAW,GAAGl1G,EAAEzO,GAAGsU,EAAEqvG,UAAUl1G,EAAEmmC,EAAEwI,EAAE9oC,GAAG,OAAOo1E,EAAErD,IAAI/xE,IAAIo1E,EAAEtsC,KAAK+oC,EAAEzkD,IAAIykD,GAAE,EAAG53E,EAAE27E,EAAEz7E,EAAEzO,MAAMsU,EAAEqvG,UAAU5jH,EAAE60C,EAAEyxC,EAAE/xE,GAAG0xE,GAAGE,IAAIF,GAAE,EAAGjlD,EAAEqpD,KAAY91E,GAC3a9U,EAAQ6uG,qBAAqB,WAAW,IAAI/5F,EAAE9U,EAAQguG,eAAelnB,EAAEhyE,GAAG,IAAIC,EAAEm1E,EAAErD,GAAG,OAAO9xE,IAAIiiC,GAAG,OAAOA,GAAG,OAAOjiC,GAAG,OAAOA,EAAEkG,UAAUlG,EAAEqvG,WAAWtvG,GAAGC,EAAEw7F,eAAev5D,EAAEu5D,gBAAgB1xF,KAAK7e,EAAQ2kH,sBAAsB,SAAS7vG,GAAG,IAAIC,EAAE6gC,EAAE,OAAO,WAAW,IAAIr1C,EAAEq1C,EAAEA,EAAE7gC,EAAE,IAAI,OAAOD,EAAEhQ,MAAMkK,KAAK/J,WAAxB,QAA2C2wC,EAAEr1C,M,6BCjB7TN,EAAOD,QAAUkC,EAAQ,K,6BCMd,IAAI6S,EAAE,oBAAoB9T,QAAQA,OAAOyL,IAAInM,EAAEwU,EAAE9T,OAAOyL,IAAI,iBAAiB,MAAMlM,EAAEuU,EAAE9T,OAAOyL,IAAI,gBAAgB,MAAMuC,EAAE8F,EAAE9T,OAAOyL,IAAI,kBAAkB,MAAM60B,EAAExsB,EAAE9T,OAAOyL,IAAI,qBAAqB,MAAMqC,EAAEgG,EAAE9T,OAAOyL,IAAI,kBAAkB,MAAMw1B,EAAEntB,EAAE9T,OAAOyL,IAAI,kBAAkB,MAAMmS,EAAE9J,EAAE9T,OAAOyL,IAAI,iBAAiB,MAAMvM,EAAE4U,EAAE9T,OAAOyL,IAAI,oBAAoB,MAAMpM,EAAEyU,EAAE9T,OAAOyL,IAAI,yBAAyB,MAAM/K,EAAEoT,EAAE9T,OAAOyL,IAAI,qBAAqB,MAAM1K,EAAE+S,EAAE9T,OAAOyL,IAAI,kBAAkB,MAAMs6E,EAAEjyE,EACpf9T,OAAOyL,IAAI,uBAAuB,MAAM1L,EAAE+T,EAAE9T,OAAOyL,IAAI,cAAc,MAAMtL,EAAE2T,EAAE9T,OAAOyL,IAAI,cAAc,MAAMiM,EAAE5D,EAAE9T,OAAOyL,IAAI,eAAe,MAAM+jB,EAAE1b,EAAE9T,OAAOyL,IAAI,qBAAqB,MAAMqtB,EAAEhlB,EAAE9T,OAAOyL,IAAI,mBAAmB,MAAM61B,EAAExtB,EAAE9T,OAAOyL,IAAI,eAAe,MAClQ,SAASk6E,EAAE9xE,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIgxE,EAAEhxE,EAAExI,SAAS,OAAOw5E,GAAG,KAAKvlF,EAAE,OAAOuU,EAAEA,EAAE/B,MAAQ,KAAK5S,EAAE,KAAKG,EAAE,KAAK2O,EAAE,KAAKF,EAAE,KAAKwyB,EAAE,KAAKv/B,EAAE,OAAO8S,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAExI,UAAY,KAAKuS,EAAE,KAAKld,EAAE,KAAKP,EAAE,KAAKJ,EAAE,KAAKkhC,EAAE,OAAOptB,EAAE,QAAQ,OAAOgxE,GAAG,KAAKtlF,EAAE,OAAOslF,IAAI,SAASG,EAAEnxE,GAAG,OAAO8xE,EAAE9xE,KAAKxU,EAAEN,EAAQ4kH,UAAUzkH,EAAEH,EAAQ6kH,eAAevkH,EAAEN,EAAQ8kH,gBAAgBjmG,EAAE7e,EAAQ+kH,gBAAgB7iF,EAAEliC,EAAQgiB,QAAQzhB,EAAEP,EAAQ6W,WAAWlV,EAAE3B,EAAQsrF,SAASr8E,EAAEjP,EAAQglH,KAAK5jH,EAAEpB,EAAQ+W,KAAK/V,EAAEhB,EAAQilH,OAAOzkH,EAChfR,EAAQurF,SAASx8E,EAAE/O,EAAQyrF,WAAWlqD,EAAEvhC,EAAQ0rF,SAAS1pF,EAAEhC,EAAQklH,YAAY,SAASpwG,GAAG,OAAOmxE,EAAEnxE,IAAI8xE,EAAE9xE,KAAK3U,GAAGH,EAAQmlH,iBAAiBl/B,EAAEjmF,EAAQolH,kBAAkB,SAAStwG,GAAG,OAAO8xE,EAAE9xE,KAAK+J,GAAG7e,EAAQqlH,kBAAkB,SAASvwG,GAAG,OAAO8xE,EAAE9xE,KAAKotB,GAAGliC,EAAQslH,UAAU,SAASxwG,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAExI,WAAW/L,GAAGP,EAAQulH,aAAa,SAASzwG,GAAG,OAAO8xE,EAAE9xE,KAAKnT,GAAG3B,EAAQwlH,WAAW,SAAS1wG,GAAG,OAAO8xE,EAAE9xE,KAAK7F,GAAGjP,EAAQylH,OAAO,SAAS3wG,GAAG,OAAO8xE,EAAE9xE,KAAK1T,GACzdpB,EAAQ4W,OAAO,SAAS9B,GAAG,OAAO8xE,EAAE9xE,KAAK9T,GAAGhB,EAAQ0lH,SAAS,SAAS5wG,GAAG,OAAO8xE,EAAE9xE,KAAKtU,GAAGR,EAAQ2lH,WAAW,SAAS7wG,GAAG,OAAO8xE,EAAE9xE,KAAK/F,GAAG/O,EAAQ4lH,aAAa,SAAS9wG,GAAG,OAAO8xE,EAAE9xE,KAAKysB,GAAGvhC,EAAQ6lH,WAAW,SAAS/wG,GAAG,OAAO8xE,EAAE9xE,KAAK9S,GACzOhC,EAAQ8lH,mBAAmB,SAAShxG,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAI7F,GAAG6F,IAAIxU,GAAGwU,IAAI/F,GAAG+F,IAAIysB,GAAGzsB,IAAI9S,GAAG8S,IAAIkyE,GAAG,kBAAkBlyE,GAAG,OAAOA,IAAIA,EAAExI,WAAWlL,GAAG0T,EAAExI,WAAWtL,GAAG8T,EAAExI,WAAW41B,GAAGptB,EAAExI,WAAWuS,GAAG/J,EAAExI,WAAW3K,GAAGmT,EAAExI,WAAWmkB,GAAG3b,EAAExI,WAAWytB,GAAGjlB,EAAExI,WAAWi2B,GAAGztB,EAAExI,WAAWqM,IAAI3Y,EAAQ+lH,OAAOn/B,G,6BCNtT,IAAI7xE,EAAE,MAAMxU,EAAE,MAAMC,EAAE,MAAMyO,EAAE,MAAMsyB,EAAE,MAAMxyB,EAAE,MAAMmzB,EAAE,MAAMrjB,EAAE,MAAM1e,EAAE,MAAMG,EAAE,MAAMqB,EAAE,MAAMK,EAAE,MAAMglF,EAAE,MAAMhmF,EAAE,MAAM8kF,EAAE,MAAMntE,EAAE,MAAM8X,EAAE,MACnJ,GAAG,oBAAoBxvB,QAAQA,OAAOyL,IAAI,CAAC,IAAIqtB,EAAE94B,OAAOyL,IAAIqI,EAAEglB,EAAE,iBAAiBx5B,EAAEw5B,EAAE,gBAAgBv5B,EAAEu5B,EAAE,kBAAkB9qB,EAAE8qB,EAAE,qBAAqBwH,EAAExH,EAAE,kBAAkBhrB,EAAEgrB,EAAE,kBAAkBmI,EAAEnI,EAAE,iBAAiBlb,EAAEkb,EAAE,qBAAqB55B,EAAE45B,EAAE,kBAAkBz5B,EAAEy5B,EAAE,uBAAuBp4B,EAAEo4B,EAAE,cAAc/3B,EAAE+3B,EAAE,cAAcitD,EAAEjtD,EAAE,eAAe/4B,EAAE+4B,EAAE,sBAAsB+rD,EAAE/rD,EAAE,qBAAqBphB,EAAEohB,EAAE,0BAA0BtJ,EAAEsJ,EAAE,uBAC3a,SAASwI,EAAEztB,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI1T,EAAE0T,EAAExI,SAAS,OAAOlL,GAAG,KAAK2T,EAAE,OAAOD,EAAEA,EAAE/B,MAAQ,KAAKvS,EAAE,KAAK+gC,EAAE,KAAKtyB,EAAE,KAAK9O,EAAE,KAAKG,EAAE,OAAOwU,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAExI,UAAY,KAAK41B,EAAE,KAAKrjB,EAAE,KAAK7c,EAAE,KAAKL,EAAE,KAAKoN,EAAE,OAAO+F,EAAE,QAAQ,OAAO1T,GAAG,KAAKb,EAAE,OAAOa,IAAI,IAAIwlF,EAAE73E,EAAEk3E,EAAElxE,EAAEm0E,EAAErqE,EAAE4nE,EAAEjmF,EAAE4oF,EAAEpnF,EAAEgkF,EAAErkF,EAAEslD,EAAE1mD,EAAEopF,EAAEpoD,EAAEqoD,EAAE36E,EAAE82E,EAAE5lF,EAAEH,EAAQ8kH,gBAAgB5iF,EAAEliC,EAAQ+kH,gBAAgBn+B,EAAE5mF,EAAQgiB,QAAQikE,EAAEjmF,EAAQ6W,WAAWqyE,EAAElpF,EAAQsrF,SAAS7E,EAAEzmF,EAAQglH,KAAK57B,EAAEppF,EAAQ+W,KAAKivE,EAAEhmF,EAAQilH,OAAOh+D,EAAEjnD,EAAQurF,SAAS5B,EAAE3pF,EAAQyrF,WAAW7B,EAClf5pF,EAAQ0rF,SAAS3F,EAAE/lF,EAAQklH,YAAY,WAAW,OAAM,GAAIllH,EAAQmlH,iBAAiB,WAAW,OAAM,GAAInlH,EAAQolH,kBAAkB,SAAStwG,GAAG,OAAOytB,EAAEztB,KAAKotB,GAAGliC,EAAQqlH,kBAAkB,SAASvwG,GAAG,OAAOytB,EAAEztB,KAAK/F,GAAG/O,EAAQslH,UAAU,SAASxwG,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAExI,WAAWyI,GAAG/U,EAAQulH,aAAa,SAASzwG,GAAG,OAAOytB,EAAEztB,KAAK+J,GAAG7e,EAAQwlH,WAAW,SAAS1wG,GAAG,OAAOytB,EAAEztB,KAAKtU,GAAGR,EAAQylH,OAAO,SAAS3wG,GAAG,OAAOytB,EAAEztB,KAAK9S,GAAGhC,EAAQ4W,OAAO,SAAS9B,GAAG,OAAOytB,EAAEztB,KAAKnT,GACle3B,EAAQ0lH,SAAS,SAAS5wG,GAAG,OAAOytB,EAAEztB,KAAKvU,GAAGP,EAAQ2lH,WAAW,SAAS7wG,GAAG,OAAOytB,EAAEztB,KAAKysB,GAAGvhC,EAAQ4lH,aAAa,SAAS9wG,GAAG,OAAOytB,EAAEztB,KAAK7F,GAAGjP,EAAQ6lH,WAAW,SAAS/wG,GAAG,OAAOytB,EAAEztB,KAAK3U,GAAGH,EAAQ8lH,mBAAmB,SAAShxG,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAItU,GAAGsU,IAAIysB,GAAGzsB,IAAI6D,GAAG7D,IAAI7F,GAAG6F,IAAI3U,GAAG2U,IAAIxU,GAAGwU,IAAI2b,GAAG,kBAAkB3b,GAAG,OAAOA,IAAIA,EAAExI,WAAWtK,GAAG8S,EAAExI,WAAW3K,GAAGmT,EAAExI,WAAWyC,GAAG+F,EAAExI,WAAW41B,GAAGptB,EAAExI,WAAWuS,GAAG/J,EAAExI,WAAWw5E,GAAGhxE,EAAExI,WAAW06E,GAAGlyE,EAAE,KAAK9T,IACjehB,EAAQ+lH,OAAOxjF,G,gBCNf,IAAIyzC,EAAW,SAAUh2E,GACvB,aAEA,IAAIgmH,EAAKplH,OAAOkB,UACZmkH,EAASD,EAAGjkH,eAEZmkH,EAA4B,oBAAXjlH,OAAwBA,OAAS,GAClDklH,EAAiBD,EAAQnrE,UAAY,aACrCqrE,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQhlH,aAAe,gBAE/C,SAASm5B,EAAO5zB,EAAKhF,EAAKN,GAOxB,OANAP,OAAOC,eAAe4F,EAAKhF,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZ4F,cAAc,EACdC,UAAU,IAELF,EAAIhF,GAEb,IAEE44B,EAAO,GAAI,IACX,MAAOtzB,GACPszB,EAAS,SAAS5zB,EAAKhF,EAAKN,GAC1B,OAAOsF,EAAIhF,GAAON,GAItB,SAASolH,EAAKC,EAASC,EAASjkH,EAAMkkH,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQ3kH,qBAAqB8kH,EAAYH,EAAUG,EAC/EC,EAAYjmH,OAAOY,OAAOmlH,EAAe7kH,WACzC2tE,EAAU,IAAIq3C,EAAQJ,GAAe,IAMzC,OAFAG,EAAUE,QAuMZ,SAA0BP,EAAShkH,EAAMitE,GACvC,IAAI17D,EAhLuB,iBAkL3B,OAAO,SAAgBizG,EAAQv3G,GAC7B,GAjLoB,cAiLhBsE,EACF,MAAM,IAAInJ,MAAM,gCAGlB,GApLoB,cAoLhBmJ,EAA6B,CAC/B,GAAe,UAAXizG,EACF,MAAMv3G,EAKR,OAAOw3G,IAMT,IAHAx3C,EAAQu3C,OAASA,EACjBv3C,EAAQhgE,IAAMA,IAED,CACX,IAAIy3G,EAAWz3C,EAAQy3C,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUz3C,GACnD,GAAI03C,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnB13C,EAAQu3C,OAGVv3C,EAAQ63C,KAAO73C,EAAQ83C,MAAQ93C,EAAQhgE,SAElC,GAAuB,UAAnBggE,EAAQu3C,OAAoB,CACrC,GApNqB,mBAoNjBjzG,EAEF,MADAA,EAlNc,YAmNR07D,EAAQhgE,IAGhBggE,EAAQ+3C,kBAAkB/3C,EAAQhgE,SAEN,WAAnBggE,EAAQu3C,QACjBv3C,EAAQg4C,OAAO,SAAUh4C,EAAQhgE,KAGnCsE,EA7NkB,YA+NlB,IAAIoS,EAASuhG,EAASlB,EAAShkH,EAAMitE,GACrC,GAAoB,WAAhBtpD,EAAOpT,KAAmB,CAO5B,GAJAgB,EAAQ07D,EAAQ9/D,KAlOA,YAFK,iBAwOjBwW,EAAO1W,MAAQ43G,EACjB,SAGF,MAAO,CACLlmH,MAAOglB,EAAO1W,IACdE,KAAM8/D,EAAQ9/D,MAGS,UAAhBwW,EAAOpT,OAChBgB,EAhPgB,YAmPhB07D,EAAQu3C,OAAS,QACjBv3C,EAAQhgE,IAAM0W,EAAO1W,OA/QPk4G,CAAiBnB,EAAShkH,EAAMitE,GAE7Co3C,EAcT,SAASa,EAAS33G,EAAItJ,EAAKgJ,GACzB,IACE,MAAO,CAAEsD,KAAM,SAAUtD,IAAKM,EAAG1P,KAAKoG,EAAKgJ,IAC3C,MAAO1I,GACP,MAAO,CAAEgM,KAAM,QAAStD,IAAK1I,IAhBjC/G,EAAQumH,KAAOA,EAoBf,IAOIc,EAAmB,GAMvB,SAAST,KACT,SAASgB,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBztF,EAAOytF,EAAmB3B,GAAgB,WACxC,OAAOn3G,QAGT,IAAI+4G,EAAWnnH,OAAO8Q,eAClBs2G,EAA0BD,GAAYA,EAASA,EAAS/9E,EAAO,MAC/Dg+E,GACAA,IAA4BhC,GAC5BC,EAAO5lH,KAAK2nH,EAAyB7B,KAGvC2B,EAAoBE,GAGtB,IAAIC,EAAKJ,EAA2B/lH,UAClC8kH,EAAU9kH,UAAYlB,OAAOY,OAAOsmH,GAYtC,SAASI,EAAsBpmH,GAC7B,CAAC,OAAQ,QAAS,UAAUsD,SAAQ,SAAS4hH,GAC3C3sF,EAAOv4B,EAAWklH,GAAQ,SAASv3G,GACjC,OAAOT,KAAK+3G,QAAQC,EAAQv3G,SAkClC,SAAS04G,EAActB,EAAWuB,GAgChC,IAAIC,EAgCJr5G,KAAK+3G,QA9BL,SAAiBC,EAAQv3G,GACvB,SAAS64G,IACP,OAAO,IAAIF,GAAY,SAAS/4G,EAASC,IAnC7C,SAASi5G,EAAOvB,EAAQv3G,EAAKJ,EAASC,GACpC,IAAI6W,EAASuhG,EAASb,EAAUG,GAASH,EAAWp3G,GACpD,GAAoB,UAAhB0W,EAAOpT,KAEJ,CACL,IAAIw3B,EAASpkB,EAAO1W,IAChBtO,EAAQopC,EAAOppC,MACnB,OAAIA,GACiB,kBAAVA,GACP8kH,EAAO5lH,KAAKc,EAAO,WACdinH,EAAY/4G,QAAQlO,EAAMqnH,SAAS34G,MAAK,SAAS1O,GACtDonH,EAAO,OAAQpnH,EAAOkO,EAASC,MAC9B,SAASvI,GACVwhH,EAAO,QAASxhH,EAAKsI,EAASC,MAI3B84G,EAAY/4G,QAAQlO,GAAO0O,MAAK,SAAS44G,GAI9Cl+E,EAAOppC,MAAQsnH,EACfp5G,EAAQk7B,MACP,SAAStjC,GAGV,OAAOshH,EAAO,QAASthH,EAAOoI,EAASC,MAvBzCA,EAAO6W,EAAO1W,KAiCZ84G,CAAOvB,EAAQv3G,EAAKJ,EAASC,MAIjC,OAAO+4G,EAaLA,EAAkBA,EAAgBx4G,KAChCy4G,EAGAA,GACEA,KAkHV,SAASlB,EAAoBF,EAAUz3C,GACrC,IAAIu3C,EAASE,EAASnsE,SAAS00B,EAAQu3C,QACvC,QA3TEv4G,IA2TEu4G,EAAsB,CAKxB,GAFAv3C,EAAQy3C,SAAW,KAEI,UAAnBz3C,EAAQu3C,OAAoB,CAE9B,GAAIE,EAASnsE,SAAT,SAGF00B,EAAQu3C,OAAS,SACjBv3C,EAAQhgE,SAtUZhB,EAuUI24G,EAAoBF,EAAUz3C,GAEP,UAAnBA,EAAQu3C,QAGV,OAAOK,EAIX53C,EAAQu3C,OAAS,QACjBv3C,EAAQhgE,IAAM,IAAI6U,UAChB,kDAGJ,OAAO+iG,EAGT,IAAIlhG,EAASuhG,EAASV,EAAQE,EAASnsE,SAAU00B,EAAQhgE,KAEzD,GAAoB,UAAhB0W,EAAOpT,KAIT,OAHA08D,EAAQu3C,OAAS,QACjBv3C,EAAQhgE,IAAM0W,EAAO1W,IACrBggE,EAAQy3C,SAAW,KACZG,EAGT,IAAI33G,EAAOyW,EAAO1W,IAElB,OAAMC,EAOFA,EAAKC,MAGP8/D,EAAQy3C,EAASwB,YAAch5G,EAAKvO,MAGpCsuE,EAAQrhE,KAAO84G,EAASyB,QAQD,WAAnBl5C,EAAQu3C,SACVv3C,EAAQu3C,OAAS,OACjBv3C,EAAQhgE,SA1XVhB,GAoYFghE,EAAQy3C,SAAW,KACZG,GANE33G,GA3BP+/D,EAAQu3C,OAAS,QACjBv3C,EAAQhgE,IAAM,IAAI6U,UAAU,oCAC5BmrD,EAAQy3C,SAAW,KACZG,GAoDX,SAASuB,EAAaC,GACpB,IAAI/rD,EAAQ,CAAEgsD,OAAQD,EAAK,IAEvB,KAAKA,IACP/rD,EAAMisD,SAAWF,EAAK,IAGpB,KAAKA,IACP/rD,EAAMksD,WAAaH,EAAK,GACxB/rD,EAAMmsD,SAAWJ,EAAK,IAGxB75G,KAAKk6G,WAAWnmH,KAAK+5D,GAGvB,SAASqsD,EAAcrsD,GACrB,IAAI32C,EAAS22C,EAAMssD,YAAc,GACjCjjG,EAAOpT,KAAO,gBACPoT,EAAO1W,IACdqtD,EAAMssD,WAAajjG,EAGrB,SAAS2gG,EAAQJ,GAIf13G,KAAKk6G,WAAa,CAAC,CAAEJ,OAAQ,SAC7BpC,EAAYthH,QAAQwjH,EAAc55G,MAClCA,KAAKw5B,OAAM,GA8Bb,SAASwB,EAAOq/E,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASlD,GAC9B,GAAImD,EACF,OAAOA,EAAejpH,KAAKgpH,GAG7B,GAA6B,oBAAlBA,EAASj7G,KAClB,OAAOi7G,EAGT,IAAKvlH,MAAMulH,EAASnkH,QAAS,CAC3B,IAAIhF,GAAK,EAAGkO,EAAO,SAASA,IAC1B,OAASlO,EAAImpH,EAASnkH,QACpB,GAAI+gH,EAAO5lH,KAAKgpH,EAAUnpH,GAGxB,OAFAkO,EAAKjN,MAAQkoH,EAASnpH,GACtBkO,EAAKuB,MAAO,EACLvB,EAOX,OAHAA,EAAKjN,WA1eTsN,EA2eIL,EAAKuB,MAAO,EAELvB,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAM64G,GAIjB,SAASA,IACP,MAAO,CAAE9lH,WA1fPsN,EA0fyBkB,MAAM,GA+MnC,OA7mBAi4G,EAAkB9lH,UAAY+lH,EAC9BxtF,EAAO4tF,EAAI,cAAeJ,GAC1BxtF,EAAOwtF,EAA4B,cAAeD,GAClDA,EAAkBxgH,YAAcizB,EAC9BwtF,EACAvB,EACA,qBAaFtmH,EAAQupH,oBAAsB,SAASC,GACrC,IAAIj7G,EAAyB,oBAAXi7G,GAAyBA,EAAO96G,YAClD,QAAOH,IACHA,IAASq5G,GAG2B,uBAAnCr5G,EAAKnH,aAAemH,EAAK9N,QAIhCT,EAAQypH,KAAO,SAASD,GAQtB,OAPI5oH,OAAO8oH,eACT9oH,OAAO8oH,eAAeF,EAAQ3B,IAE9B2B,EAAOG,UAAY9B,EACnBxtF,EAAOmvF,EAAQlD,EAAmB,sBAEpCkD,EAAO1nH,UAAYlB,OAAOY,OAAOymH,GAC1BuB,GAOTxpH,EAAQ4pH,MAAQ,SAASn6G,GACvB,MAAO,CAAE+4G,QAAS/4G,IAsEpBy4G,EAAsBC,EAAcrmH,WACpCu4B,EAAO8tF,EAAcrmH,UAAWskH,GAAqB,WACnD,OAAOp3G,QAEThP,EAAQmoH,cAAgBA,EAKxBnoH,EAAQqb,MAAQ,SAASmrG,EAASC,EAASjkH,EAAMkkH,EAAa0B,QACxC,IAAhBA,IAAwBA,EAAcx4G,SAE1C,IAAIs2C,EAAO,IAAIiiE,EACb5B,EAAKC,EAASC,EAASjkH,EAAMkkH,GAC7B0B,GAGF,OAAOpoH,EAAQupH,oBAAoB9C,GAC/BvgE,EACAA,EAAK93C,OAAOyB,MAAK,SAAS06B,GACxB,OAAOA,EAAO56B,KAAO46B,EAAOppC,MAAQ+kD,EAAK93C,WAuKjD85G,EAAsBD,GAEtB5tF,EAAO4tF,EAAI3B,EAAmB,aAO9BjsF,EAAO4tF,EAAI9B,GAAgB,WACzB,OAAOn3G,QAGTqrB,EAAO4tF,EAAI,YAAY,WACrB,MAAO,wBAkCTjoH,EAAQyD,KAAO,SAAS7B,GACtB,IAAI6B,EAAO,GACX,IAAK,IAAIhC,KAAOG,EACd6B,EAAKV,KAAKtB,GAMZ,OAJAgC,EAAKw0E,UAIE,SAAS7pE,IACd,KAAO3K,EAAKyB,QAAQ,CAClB,IAAIzD,EAAMgC,EAAKq8B,MACf,GAAIr+B,KAAOG,EAGT,OAFAwM,EAAKjN,MAAQM,EACb2M,EAAKuB,MAAO,EACLvB,EAQX,OADAA,EAAKuB,MAAO,EACLvB,IAsCXpO,EAAQgqC,OAASA,EAMjB88E,EAAQhlH,UAAY,CAClB4M,YAAao4G,EAEbt+E,MAAO,SAASqhF,GAcd,GAbA76G,KAAKb,KAAO,EACZa,KAAKZ,KAAO,EAGZY,KAAKs4G,KAAOt4G,KAAKu4G,WArgBjB94G,EAsgBAO,KAAKW,MAAO,EACZX,KAAKk4G,SAAW,KAEhBl4G,KAAKg4G,OAAS,OACdh4G,KAAKS,SA1gBLhB,EA4gBAO,KAAKk6G,WAAW9jH,QAAQ+jH,IAEnBU,EACH,IAAK,IAAIppH,KAAQuO,KAEQ,MAAnBvO,EAAKq5D,OAAO,IACZmsD,EAAO5lH,KAAK2O,KAAMvO,KACjBqD,OAAOrD,EAAKuC,MAAM,MACrBgM,KAAKvO,QAphBXgO,IA0hBF4sE,KAAM,WACJrsE,KAAKW,MAAO,EAEZ,IACIm6G,EADY96G,KAAKk6G,WAAW,GACLE,WAC3B,GAAwB,UAApBU,EAAW/2G,KACb,MAAM+2G,EAAWr6G,IAGnB,OAAOT,KAAK+6G,MAGdvC,kBAAmB,SAASwC,GAC1B,GAAIh7G,KAAKW,KACP,MAAMq6G,EAGR,IAAIv6C,EAAUzgE,KACd,SAASi7G,EAAOx2F,EAAKy2F,GAYnB,OAXA/jG,EAAOpT,KAAO,QACdoT,EAAO1W,IAAMu6G,EACbv6C,EAAQrhE,KAAOqlB,EAEXy2F,IAGFz6C,EAAQu3C,OAAS,OACjBv3C,EAAQhgE,SArjBZhB,KAwjBYy7G,EAGZ,IAAK,IAAIhqH,EAAI8O,KAAKk6G,WAAWhkH,OAAS,EAAGhF,GAAK,IAAKA,EAAG,CACpD,IAAI48D,EAAQ9tD,KAAKk6G,WAAWhpH,GACxBimB,EAAS22C,EAAMssD,WAEnB,GAAqB,SAAjBtsD,EAAMgsD,OAIR,OAAOmB,EAAO,OAGhB,GAAIntD,EAAMgsD,QAAU95G,KAAKb,KAAM,CAC7B,IAAIg8G,EAAWlE,EAAO5lH,KAAKy8D,EAAO,YAC9BstD,EAAanE,EAAO5lH,KAAKy8D,EAAO,cAEpC,GAAIqtD,GAAYC,EAAY,CAC1B,GAAIp7G,KAAKb,KAAO2uD,EAAMisD,SACpB,OAAOkB,EAAOntD,EAAMisD,UAAU,GACzB,GAAI/5G,KAAKb,KAAO2uD,EAAMksD,WAC3B,OAAOiB,EAAOntD,EAAMksD,iBAGjB,GAAImB,GACT,GAAIn7G,KAAKb,KAAO2uD,EAAMisD,SACpB,OAAOkB,EAAOntD,EAAMisD,UAAU,OAG3B,KAAIqB,EAMT,MAAM,IAAIx/G,MAAM,0CALhB,GAAIoE,KAAKb,KAAO2uD,EAAMksD,WACpB,OAAOiB,EAAOntD,EAAMksD,gBAU9BvB,OAAQ,SAAS10G,EAAMtD,GACrB,IAAK,IAAIvP,EAAI8O,KAAKk6G,WAAWhkH,OAAS,EAAGhF,GAAK,IAAKA,EAAG,CACpD,IAAI48D,EAAQ9tD,KAAKk6G,WAAWhpH,GAC5B,GAAI48D,EAAMgsD,QAAU95G,KAAKb,MACrB83G,EAAO5lH,KAAKy8D,EAAO,eACnB9tD,KAAKb,KAAO2uD,EAAMksD,WAAY,CAChC,IAAIqB,EAAevtD,EACnB,OAIAutD,IACU,UAATt3G,GACS,aAATA,IACDs3G,EAAavB,QAAUr5G,GACvBA,GAAO46G,EAAarB,aAGtBqB,EAAe,MAGjB,IAAIlkG,EAASkkG,EAAeA,EAAajB,WAAa,GAItD,OAHAjjG,EAAOpT,KAAOA,EACdoT,EAAO1W,IAAMA,EAET46G,GACFr7G,KAAKg4G,OAAS,OACdh4G,KAAKZ,KAAOi8G,EAAarB,WAClB3B,GAGFr4G,KAAKs7G,SAASnkG,IAGvBmkG,SAAU,SAASnkG,EAAQ8iG,GACzB,GAAoB,UAAhB9iG,EAAOpT,KACT,MAAMoT,EAAO1W,IAcf,MAXoB,UAAhB0W,EAAOpT,MACS,aAAhBoT,EAAOpT,KACT/D,KAAKZ,KAAO+X,EAAO1W,IACM,WAAhB0W,EAAOpT,MAChB/D,KAAK+6G,KAAO/6G,KAAKS,IAAM0W,EAAO1W,IAC9BT,KAAKg4G,OAAS,SACdh4G,KAAKZ,KAAO,OACa,WAAhB+X,EAAOpT,MAAqBk2G,IACrCj6G,KAAKZ,KAAO66G,GAGP5B,GAGTkD,OAAQ,SAASvB,GACf,IAAK,IAAI9oH,EAAI8O,KAAKk6G,WAAWhkH,OAAS,EAAGhF,GAAK,IAAKA,EAAG,CACpD,IAAI48D,EAAQ9tD,KAAKk6G,WAAWhpH,GAC5B,GAAI48D,EAAMksD,aAAeA,EAGvB,OAFAh6G,KAAKs7G,SAASxtD,EAAMssD,WAAYtsD,EAAMmsD,UACtCE,EAAcrsD,GACPuqD,IAKb,MAAS,SAASyB,GAChB,IAAK,IAAI5oH,EAAI8O,KAAKk6G,WAAWhkH,OAAS,EAAGhF,GAAK,IAAKA,EAAG,CACpD,IAAI48D,EAAQ9tD,KAAKk6G,WAAWhpH,GAC5B,GAAI48D,EAAMgsD,SAAWA,EAAQ,CAC3B,IAAI3iG,EAAS22C,EAAMssD,WACnB,GAAoB,UAAhBjjG,EAAOpT,KAAkB,CAC3B,IAAIy3G,EAASrkG,EAAO1W,IACpB05G,EAAcrsD,GAEhB,OAAO0tD,GAMX,MAAM,IAAI5/G,MAAM,0BAGlB6/G,cAAe,SAASpB,EAAUX,EAAYC,GAa5C,OAZA35G,KAAKk4G,SAAW,CACdnsE,SAAU/Q,EAAOq/E,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhB35G,KAAKg4G,SAGPh4G,KAAKS,SA9rBPhB,GAisBO44G,IAQJrnH,EA9sBM,CAqtBgBC,EAAOD,SAGtC,IACE0qH,mBAAqB10C,EACrB,MAAO20C,GAWmB,kBAAfC,WACTA,WAAWF,mBAAqB10C,EAEhCtzE,SAAS,IAAK,yBAAdA,CAAwCszE,K,cC/uB5Ct+D,MAAMsC,UAAU4H,MAAQ,CACvB,QAAW,CACV,CACC1D,QAAS,kCACTF,YAAY,EACZC,QAAQ,GAET,CACCC,QAAS,mBACTF,YAAY,EACZC,QAAQ,IAGV,OAAU,CACTC,QAAS,iDACTD,QAAQ,GAET,aAAc,CACbC,QAAS,2FACTF,YAAY,EACZxD,OAAQ,CACP,YAAe,UAGjB,QAAW,6GACX,QAAW,qBACX,SAAY,cACZ,OAAU,4DACV,SAAY,+CACZ,YAAe,kB,cC7BhB9C,MAAMsC,UAAU6H,WAAanK,MAAMsC,UAAUK,OAAO,QAAS,CAC5D,aAAc,CACb3C,MAAMsC,UAAU4H,MAAM,cACtB,CACC1D,QAAS,0GACTF,YAAY,IAGd,QAAW,CACV,CACCE,QAAS,uBACTF,YAAY,GAEb,CACCE,QAAS,mdACTF,YAAY,IAId,SAAY,oGACZ,OAAU,CACTE,QAAS/E,OACR,aAAahU,OACb,MAGC,eAAeA,OACf,IAEA,0BAA0BA,OAC1B,IAEA,4BAA4BA,OAC5B,IAEA,sCAAsCA,OACtC,IAEA,gBAAgBA,OAChB,IAEA,oFAAoFA,OAErF,IACA,YAAYA,QAEb6Y,YAAY,GAEb,SAAY,8FAGbtG,MAAMsC,UAAU6H,WAAW,cAAc,GAAG3D,QAAU,uEAEtDxG,MAAMsC,UAAUO,aAAa,aAAc,UAAW,CACrD,MAAS,CAER2D,QAAS,yLACTF,YAAY,EACZC,QAAQ,EACRzD,OAAQ,CACP,eAAgB,CACf0D,QAAS,4BACTF,YAAY,EACZ1F,MAAO,iBACPkC,OAAQ9C,MAAMsC,UAAU8H,OAEzB,kBAAmB,UACnB,cAAe,aAIjB,oBAAqB,CACpB5D,QAAS,gMACT5F,MAAO,YAER,UAAa,CACZ,CACC4F,QAAS,sIACTF,YAAY,EACZxD,OAAQ9C,MAAMsC,UAAU6H,YAEzB,CACC3D,QAAS,qFACTF,YAAY,EACZxD,OAAQ9C,MAAMsC,UAAU6H,YAEzB,CACC3D,QAAS,kEACTF,YAAY,EACZxD,OAAQ9C,MAAMsC,UAAU6H,YAEzB,CACC3D,QAAS,8eACTF,YAAY,EACZxD,OAAQ9C,MAAMsC,UAAU6H,aAG1B,SAAY,8BAGbnK,MAAMsC,UAAUO,aAAa,aAAc,SAAU,CACpD,SAAY,CACX2D,QAAS,QACTD,QAAQ,EACR3F,MAAO,WAER,kBAAmB,CAClB4F,QAAS,2EACTD,QAAQ,EACRzD,OAAQ,CACP,uBAAwB,CACvB0D,QAAS,QACT5F,MAAO,UAER,cAAiB,CAChB4F,QAAS,mEACTF,YAAY,EACZxD,OAAQ,CACP,4BAA6B,CAC5B0D,QAAS,YACT5F,MAAO,eAER6E,KAAMzF,MAAMsC,UAAU6H,aAGxB,OAAU,YAGZ,kBAAmB,CAClB3D,QAAS,4EACTF,YAAY,EACZC,QAAQ,EACR3F,MAAO,cAITZ,MAAMsC,UAAUO,aAAa,aAAc,WAAY,CACtD,mBAAoB,CACnB2D,QAAS,oFACTF,YAAY,EACZ1F,MAAO,cAILZ,MAAMsC,UAAU4G,SACnBlJ,MAAMsC,UAAU4G,OAAOf,IAAI6B,WAAW,SAAU,cAIhDhK,MAAMsC,UAAU4G,OAAOf,IAAI8B,aAC1B,yNAAyNxc,OACzN,eAIFuS,MAAMsC,UAAU+H,GAAKrK,MAAMsC,UAAU6H,Y,+CClJrC,IAAIgpG,EAAuB3oH,EAAQ,IAEnC,SAAS4oH,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3C7qH,EAAOD,QAAU,WACf,SAASirH,EAAKr+F,EAAOs+F,EAAUC,EAAehsB,EAAUisB,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI9jH,EAAM,IAAI6D,MACZ,mLAKF,MADA7D,EAAItG,KAAO,sBACLsG,GAGR,SAASukH,IACP,OAAOL,EAFTA,EAAKM,WAAaN,EAMlB,IAAIO,EAAiB,CACnBv9G,MAAOg9G,EACPnsC,OAAQmsC,EACRQ,KAAMR,EACN/pF,KAAM+pF,EACN/xC,OAAQ+xC,EACRrpH,OAAQqpH,EACRzpG,OAAQypG,EACR59G,OAAQ49G,EAERS,IAAKT,EACLU,QAASL,EACTn+G,QAAS89G,EACTvX,YAAauX,EACbW,WAAYN,EACZjsG,KAAM4rG,EACNY,SAAUP,EACV3uD,MAAO2uD,EACPQ,UAAWR,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBlB,EAChBC,kBAAmBF,GAKrB,OAFAU,EAAeU,UAAYV,EAEpBA,I,6BCpDTvrH,EAAOD,QAFoB,gD,kFCTyCC,EAAOD,QAAiG,WAAW,aAAa,SAASG,EAAEiB,GAAG,OAAOjB,EAAE,mBAAmBc,QAAQ,iBAAiBA,OAAO85C,SAAS,SAAS35C,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBH,QAAQG,EAAEsN,cAAczN,QAAQG,IAAIH,OAAOa,UAAU,gBAAgBV,IAAIA,GAAG,SAASb,EAAEa,EAAE6N,EAAEjO,EAAEW,EAAEhB,EAAEmU,EAAE5U,GAAG,IAAI,IAAI4lF,EAAE1kF,EAAE0T,GAAG5U,GAAGK,EAAEulF,EAAE3kF,MAAM,MAAMC,GAAG,YAAYJ,EAAEI,GAAG0kF,EAAEn2E,KAAKV,EAAE1O,GAAGqP,QAAQP,QAAQ9O,GAAGsP,KAAKlO,EAAEhB,GAAG,SAASS,EAAE0kF,GAAG,OAAO,WAAW,IAAI1kF,EAAE4N,KAAK9O,EAAE+E,UAAU,OAAO,IAAI2K,SAAQ,SAASX,EAAEjO,GAAG,IAAIW,EAAEmkF,EAAEhhF,MAAM1D,EAAElB,GAAG,SAASS,EAAES,GAAGb,EAAEoB,EAAEsN,EAAEjO,EAAEL,EAAEmU,EAAE,OAAO1T,GAAG,SAAS0T,EAAE1T,GAAGb,EAAEoB,EAAEsN,EAAEjO,EAAEL,EAAEmU,EAAE,QAAQ1T,GAAGT,OAAE,OAAW,SAASqB,EAAEZ,EAAE6N,EAAEjO,GAAG,OAAOiO,KAAK7N,EAAER,OAAOC,eAAeO,EAAE6N,EAAE,CAAC9N,MAAMH,EAAEF,YAAW,EAAG4F,cAAa,EAAGC,UAAS,IAAKvF,EAAE6N,GAAGjO,EAAEI,EAAE,SAASO,EAAEsN,EAAE7N,GAAG,IAAIJ,EAAEW,EAAEf,OAAO6C,KAAKwL,GAAG,OAAOrO,OAAO6D,wBAAwBzD,EAAEJ,OAAO6D,sBAAsBwK,GAAG7N,IAAIJ,EAAEA,EAAE2D,QAAO,SAASvD,GAAG,OAAOR,OAAOiE,yBAAyBoK,EAAE7N,GAAGN,eAAca,EAAEoB,KAAK+B,MAAMnD,EAAEX,IAAIW,EAAE,SAAS4gC,EAAEtzB,GAAG,IAAI,IAAI7N,EAAE,EAAEA,EAAE6D,UAAUC,OAAO9D,IAAI,CAAC,IAAIJ,EAAE,MAAMiE,UAAU7D,GAAG6D,UAAU7D,GAAG,GAAGA,EAAE,EAAEO,EAAEf,OAAOI,IAAG,GAAIoE,SAAQ,SAAShE,GAAGY,EAAEiN,EAAE7N,EAAEJ,EAAEI,OAAMR,OAAOyE,0BAA0BzE,OAAO0E,iBAAiB2J,EAAErO,OAAOyE,0BAA0BrE,IAAIW,EAAEf,OAAOI,IAAIoE,SAAQ,SAAShE,GAAGR,OAAOC,eAAeoO,EAAE7N,EAAER,OAAOiE,yBAAyB7D,EAAEI,OAAM,OAAO6N,EAAE,SAAS8F,EAAE3T,GAAG,OAAO,SAASA,GAAG,GAAGwB,MAAMW,QAAQnC,GAAG,OAAOA,EAAvC,CAA0CA,IAAI6N,EAAE7N,IAAI0kF,EAAE1kF,IAAI,WAAW,MAAM,IAAIkjB,UAAU,6IAA/B,GAA+K,SAAS3L,EAAEvX,GAAG,OAAO,SAASA,GAAG,GAAGwB,MAAMW,QAAQnC,GAAG,OAAOT,EAAES,GAAzC,CAA6CA,IAAI6N,EAAE7N,IAAI0kF,EAAE1kF,IAAI,WAAW,MAAM,IAAIkjB,UAAU,wIAA/B,GAA0K,SAASrV,EAAE7N,GAAG,GAAG,oBAAoBH,QAAQA,OAAO85C,YAAYn6C,OAAOQ,GAAG,OAAOwB,MAAMuN,KAAK/O,GAAG,SAAS0kF,EAAE1kF,EAAE6N,GAAG,GAAG7N,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAOT,EAAES,EAAE6N,GAAG,IAAIjO,EAAEJ,OAAOkB,UAAUmB,SAAS5C,KAAKe,GAAG4B,MAAM,GAAG,GAAG,MAAM,WAAWhC,GAAGI,EAAEsN,cAAc1N,EAAEI,EAAEsN,YAAYjO,MAAM,QAAQO,GAAG,QAAQA,EAAE4B,MAAMuN,KAAK/O,GAAG,cAAcJ,GAAG,2CAA2CoP,KAAKpP,GAAGL,EAAES,EAAE6N,QAAG,GAAQ,SAAStO,EAAES,EAAE6N,IAAI,MAAMA,GAAGA,EAAE7N,EAAE8D,UAAU+J,EAAE7N,EAAE8D,QAAQ,IAAI,IAAIlE,EAAE,EAAEW,EAAE,IAAIiB,MAAMqM,GAAGjO,EAAEiO,EAAEjO,IAAIW,EAAEX,GAAGI,EAAEJ,GAAG,OAAOW,EAAE,SAAS4/B,EAAEngC,GAAG,GAAG,oBAAoBH,QAAQ,MAAMG,EAAEH,OAAO85C,UAAU,CAAC,GAAGn4C,MAAMW,QAAQnC,KAAKA,EAAE0kF,EAAE1kF,IAAI,CAAC,IAAI6N,EAAE,EAAEjO,EAAE,aAAa,MAAM,CAACiB,EAAEjB,EAAEW,EAAE,WAAW,OAAOsN,GAAG7N,EAAE8D,OAAO,CAACyK,MAAK,GAAI,CAACA,MAAK,EAAGxO,MAAMC,EAAE6N,OAAOA,EAAE,SAAS7N,GAAG,MAAMA,GAAGmgC,EAAEvgC,GAAG,MAAM,IAAIsjB,UAAU,yIAAyI,IAAI3iB,EAAEhB,EAAEmU,GAAE,EAAG5U,GAAE,EAAG,MAAM,CAAC+B,EAAE,WAAWN,EAAEP,EAAEH,OAAO85C,aAAap5C,EAAE,WAAW,IAAIP,EAAEO,EAAEyM,OAAO,OAAO0G,EAAE1T,EAAEuO,KAAKvO,GAAG6N,EAAE,SAAS7N,GAAGlB,GAAE,EAAGS,EAAES,GAAGmgC,EAAE,WAAW,IAAIzsB,GAAG,MAAMnT,EAAE+wF,QAAQ/wF,EAAE+wF,SAAzB,QAA0C,GAAGxyF,EAAE,MAAMS,KAAK,IAAIH,EAAEI,OAAO89F,IAAI,SAASt9F,EAAE6N,GAAG,OAAO7N,IAAI6N,EAAE,IAAI7N,GAAG,EAAEA,GAAG,EAAE6N,EAAE7N,GAAGA,GAAG6N,GAAGA,GAAG,SAASjO,EAAEI,EAAE6N,EAAEjO,GAAGiB,EAAEgN,GAAG,IAAItN,EAAEhB,EAAE4gC,EAAE,SAASngC,EAAE6N,EAAEjO,GAAG,GAAIA,EAAEkE,OAAN,CAAoB,IAAIvD,EAAEoT,EAAE/T,GAAGL,EAAEgB,EAAE,GAAGmT,EAAEnT,EAAEqB,MAAM,GAAG,GAAG,mBAAmBrC,EAAE,CAAC,IAAIT,EAAE,GAAG,GAAG0C,MAAMW,QAAQ0L,GAAG,IAAI,IAAI62E,EAAE,EAAEvlF,EAAE0O,EAAE/J,OAAO4gF,EAAEvlF,EAAEulF,IAAInlF,EAAEN,KAAK4O,EAAEA,EAAE62E,GAAGA,IAAI5lF,EAAE6C,KAAK+B,MAAM5E,EAAEyY,EAAEvX,EAAE6N,EAAE,CAAC62E,GAAG74E,OAAO0L,EAAE7D,YAAY,IAAI,IAAIysB,KAAKtyB,GAAG,GAAGtO,EAAEN,KAAK4O,EAAEA,EAAEsyB,GAAGA,IAAIrhC,EAAE6C,KAAK+B,MAAM5E,EAAEyY,EAAEvX,EAAE6N,EAAE,CAACsyB,GAAGt0B,OAAO0L,EAAE7D,OAAO,OAAO5U,EAAE,IAAI+B,EAAEb,OAAE,IAAS6N,GAAGA,EAAEtO,GAAGmU,GAAG,OAAO7S,EAAEA,EAAEiL,KAAI,SAAS9L,GAAG,MAAM,CAACT,GAAGsM,OAAO0L,EAAEvX,OAAM,CAAC,CAACT,KAAjY,CAAsYS,EAAE6N,IAAI,IAAI,IAAItO,EAAEsB,MAAMN,EAAEhB,EAAEgB,KAAKgO,MAAM,CAAC,IAAImF,EAAEnT,EAAER,MAAMC,EAAE2N,EAAE3N,EAAE0T,EAAE9T,EAAEA,EAAE+4B,EAAE34B,EAAE0T,SAAI,IAAS,MAAM1T,GAAGT,EAAEsO,EAAE7N,GAAxF,QAAmGT,EAAE4gC,IAAI,OAAOngC,EAAE,SAAS0T,IAAI,OAAOA,EAAE1T,EAAE,EAAmBqoH,MAAK,SAASroH,EAAE6N,EAAEjO,EAAEW,GAAG,IAAIhB,EAAEmU,EAAE5U,EAAE4lF,EAAE,OAAO,EAAmBygC,MAAK,SAASnlH,GAAG,OAAO,OAAOA,EAAE+M,KAAK/M,EAAEgN,MAAM,KAAK,EAAE,OAAOnM,EAAEjB,GAAGI,EAAEgN,KAAK,EAAE8zB,EAAEjzB,EAAEjO,GAAG,KAAK,EAAEL,EAAES,EAAEkmH,KAAKxyG,EAAEysB,EAAE5gC,GAAGS,EAAE+M,KAAK,EAAE2G,EAAE7S,IAAI,KAAK,EAAE,IAAI/B,EAAE4U,EAAEnT,KAAKgO,KAAK,CAACvO,EAAEgN,KAAK,GAAG,MAAM,GAAG03E,EAAE5lF,EAAEiB,MAAMC,EAAE+qH,GAAGp9G,EAAE3N,EAAEgrH,GAAGn9G,EAAE7N,EAAEirH,GAAGvmC,EAAEnkF,EAAE,OAAOP,EAAEgN,KAAK,GAAGzM,EAAEo4B,EAAE9qB,EAAE62E,IAAI1kF,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAGhN,EAAEkrH,GAAGlrH,EAAEkmH,KAAKlmH,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAGhN,EAAEkrH,QAAG,EAAO,KAAK,GAAGlrH,EAAEmrH,GAAGnrH,EAAEkrH,GAAGr9G,GAAE,EAAG7N,EAAE+qH,IAAI/qH,EAAEgrH,GAAGhrH,EAAEirH,GAAGjrH,EAAEmrH,IAAI,KAAK,GAAGnrH,EAAEgN,KAAK,EAAE,MAAM,KAAK,GAAGhN,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAGhN,EAAE+M,KAAK,GAAG/M,EAAEorH,GAAGprH,EAAEqrH,MAAM,GAAG33G,EAAE7F,EAAE7N,EAAEorH,IAAI,KAAK,GAAG,OAAOprH,EAAE+M,KAAK,GAAG2G,EAAEysB,IAAIngC,EAAEmpH,OAAO,IAAI,KAAK,GAAG,OAAOnpH,EAAEqmH,OAAO,SAASx4G,GAAG,KAAK,GAAG,IAAI,MAAM,OAAO7N,EAAEi6E,UAASj6E,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,WAAU0D,MAAMkK,KAAK/J,WAAW,SAAShD,EAAEb,GAAG,IAAIwB,MAAMW,QAAQnC,GAAG,MAAM,IAAIwJ,MAAM,yBAAyB5J,EAAE0rH,cAAc,SAAStrH,EAAE6N,EAAEjO,GAAG,OAAO8T,EAAEhQ,MAAMkK,KAAK/J,YAAY,IAAI3E,EAAE,CAAC,YAAY,cAAc,aAAa,SAAS4hC,IAAI,OAAOhiC,EAAE4E,MAAMkK,KAAK/J,WAAW,SAAS/E,IAAI,OAAOA,EAAEkB,EAAE,EAAmBqoH,MAAK,SAASroH,EAAE6N,EAAEjO,GAAG,IAAIW,EAAEhB,EAAEmU,EAAE5U,EAAE4lF,EAAEvlF,EAAEghC,EAAEt/B,EAAE,OAAO,EAAmBskH,MAAK,SAASnlH,GAAG,OAAO,OAAOA,EAAE+M,KAAK/M,EAAEgN,MAAM,KAAK,EAAE,GAAGpN,EAAEkE,OAAO,CAAC9D,EAAEgN,KAAK,EAAE,MAAM,OAAOhN,EAAEqmH,OAAO,UAAU,KAAK,EAAE,GAAG9lH,EAAEoT,EAAE/T,GAAGL,EAAEgB,EAAE,GAAGmT,EAAEnT,EAAEqB,MAAM,GAAG,mBAAmBrC,EAAE,CAACS,EAAEgN,KAAK,GAAG,MAAM,GAAGlO,EAAE,IAAI0C,MAAMW,QAAQ0L,GAAG,CAAC7N,EAAEgN,KAAK,GAAG,MAAM03E,EAAE,EAAEvlF,EAAE0O,EAAE/J,OAAO,KAAK,EAAE,GAAG4gF,EAAEvlF,EAAE,OAAOa,EAAEgN,KAAK,GAAGzN,EAAEN,KAAK4O,EAAEA,EAAE62E,GAAGA,GAAG1kF,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAG,GAAGhN,EAAE+qH,GAAG/qH,EAAEkmH,KAAKlmH,EAAE+qH,GAAG,OAAO/qH,EAAEgrH,GAAGlsH,EAAE6C,KAAK3B,EAAEirH,GAAGnsH,EAAEkB,EAAEkrH,GAAG3zG,EAAEvX,EAAEgN,KAAK,GAAG8zB,EAAEjzB,EAAE,CAAC62E,GAAG74E,OAAO0L,EAAE7D,KAAK1T,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAGhN,EAAEmrH,GAAGnrH,EAAEkmH,KAAKlmH,EAAEorH,IAAG,EAAGprH,EAAEkrH,IAAIlrH,EAAEmrH,IAAInrH,EAAEgrH,GAAGtnH,MAAMzE,KAAKe,EAAEgrH,GAAGhrH,EAAEirH,GAAGjrH,EAAEorH,IAAI,KAAK,GAAG1mC,IAAI1kF,EAAEgN,KAAK,EAAE,MAAM,KAAK,GAAGhN,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAGhN,EAAEurH,GAAG,EAAmBlpH,KAAKwL,GAAG,IAAI,KAAK,GAAG,IAAI7N,EAAEwrH,GAAGxrH,EAAEurH,MAAMh9G,KAAK,CAACvO,EAAEgN,KAAK,GAAG,MAAM,OAAOmzB,EAAEngC,EAAEwrH,GAAGzrH,MAAMC,EAAEgN,KAAK,GAAGzN,EAAEN,KAAK4O,EAAEA,EAAEsyB,GAAGA,GAAG,KAAK,GAAG,GAAGngC,EAAEyrH,GAAGzrH,EAAEkmH,KAAKlmH,EAAEyrH,GAAG,OAAOzrH,EAAE0rH,GAAG5sH,EAAE6C,KAAK3B,EAAE2rH,IAAI7sH,EAAEkB,EAAE4rH,IAAIr0G,EAAEvX,EAAEgN,KAAK,GAAG8zB,EAAEjzB,EAAE,CAACsyB,GAAGt0B,OAAO0L,EAAE7D,KAAK1T,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAGhN,EAAE6rH,IAAI7rH,EAAEkmH,KAAKlmH,EAAE8rH,KAAI,EAAG9rH,EAAE4rH,KAAK5rH,EAAE6rH,KAAK7rH,EAAE0rH,GAAGhoH,MAAMzE,KAAKe,EAAE0rH,GAAG1rH,EAAE2rH,IAAI3rH,EAAE8rH,KAAK,KAAK,GAAG9rH,EAAEgN,KAAK,GAAG,MAAM,KAAK,GAAG,OAAOhN,EAAEqmH,OAAO,SAASvnH,GAAG,KAAK,GAAG,OAAOkB,EAAEgN,KAAK,GAAG8zB,OAAE,IAASjzB,GAAGA,EAAEtO,GAAGmU,GAAG,KAAK,GAAG,OAAO7S,EAAEb,EAAEkmH,KAAKlmH,EAAEqmH,OAAO,SAASxlH,EAAEA,EAAEiL,KAAI,SAAS9L,GAAG,MAAM,CAACT,GAAGsM,OAAO0L,EAAEvX,OAAM,CAAC,CAACT,KAAK,KAAK,GAAG,IAAI,MAAM,OAAOS,EAAEi6E,UAASj6E,QAAO0D,MAAMkK,KAAK/J,WAAW,SAAS80B,EAAE34B,EAAE6N,GAAG,OAAOA,EAAEf,QAAO,SAAS9M,EAAE6N,GAAG,OAAO7N,GAAGA,EAAE6N,KAAI7N,GAAG,SAAS2N,EAAE3N,EAAE6N,EAAEjO,GAAG,IAAIiO,EAAE/J,OAAO,OAAOlE,EAAE,IAAIW,EAAEhB,EAAEoU,EAAE9F,GAAG6F,EAAEnU,EAAE,GAAGT,EAAES,EAAEqC,MAAM,GAAG8iF,OAAE,IAAS1kF,GAAGA,EAAE0T,GAAGvU,EAAEa,EAAE,GAAGO,EAAEmT,EAAExU,EAAEoiC,SAAS/gC,GAAG,OAAOP,EAAE,GAAG,iBAAiB0T,GAAG,WAAW3U,EAAEI,KAAKqC,MAAMW,QAAQhD,GAAG,iBAAiBuU,GAAGlS,MAAMW,QAAQhD,KAAKA,EAAE,IAAIA,EAAE,GAAG,iBAAiBuU,EAAE,CAAC,IAAIysB,EAAExyB,EAAE+2E,EAAE5lF,EAAEc,GAAG,YAAO,IAASugC,OAAE,IAASngC,EAAEA,GAAG0T,KAAKvU,IAAIA,EAAEoY,EAAEpY,IAAIqS,OAAOkC,EAAE,GAAGvU,GAAGC,EAAE+gC,EAAEukD,GAAG1kF,IAAIb,EAAEoY,EAAEpY,IAAIuU,GAAGysB,EAAEhhC,GAAG,IAAI0B,EAAE8M,EAAE+2E,EAAE5lF,EAAEc,GAAG,YAAO,IAASiB,OAAE,IAASb,EAAEA,GAAG0T,KAAKvU,UAAUA,EAAEgiC,EAAE,GAAGhiC,IAAIuU,GAAGvU,GAAGC,EAAEyB,EAAE6jF,GAAG1kF,EAAEmhC,EAAEA,EAAE,GAAGhiC,GAAG,GAAGyB,EAAE,GAAG8S,EAAE7S,IAAI,OAAOjB,EAA/mMiO,I,8gMCApE,SAASge,EAAgBF,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAI1I,UAAU,qCCFxB,SAASqI,EAAkB3nB,EAAQ4nB,GACjC,IAAK,IAAI1sB,EAAI,EAAGA,EAAI0sB,EAAM1nB,OAAQhF,IAAK,CACrC,IAAIuX,EAAamV,EAAM1sB,GACvBuX,EAAW3W,WAAa2W,EAAW3W,aAAc,EACjD2W,EAAW/Q,cAAe,EACtB,UAAW+Q,IAAYA,EAAW9Q,UAAW,GACjD/F,OAAOC,eAAemE,EAAQyS,EAAWhW,IAAKgW,IAInC,SAAS01G,EAAangG,EAAa2C,EAAYC,GAG5D,OAFID,GAAYhD,EAAkBK,EAAYlrB,UAAW6tB,GACrDC,GAAajD,EAAkBK,EAAa4C,GACzC5C,ECbM,SAASogG,EAAgBzsH,EAAGqB,GAMzC,OALAorH,EAAkBxsH,OAAO8oH,gBAAkB,SAAyB/oH,EAAGqB,GAErE,OADArB,EAAEgpH,UAAY3nH,EACPrB,IAGcA,EAAGqB,GCLb,SAASqrH,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIjpG,UAAU,sDAGtBgpG,EAASxrH,UAAYlB,OAAOY,OAAO+rH,GAAcA,EAAWzrH,UAAW,CACrE4M,YAAa,CACXvN,MAAOmsH,EACP3mH,UAAU,EACVD,cAAc,KAGd6mH,GAAY,EAAeD,EAAUC,GCb5B,SAASC,EAAgB7sH,GAItC,OAHA6sH,EAAkB5sH,OAAO8oH,eAAiB9oH,OAAO8Q,eAAiB,SAAyB/Q,GACzF,OAAOA,EAAEgpH,WAAa/oH,OAAO8Q,eAAe/Q,KAEvBA,GCJV,SAAS8sH,IACtB,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA/nG,KAAKhkB,UAAUmB,SAAS5C,KAAKqtH,QAAQC,UAAU7nG,KAAM,IAAI,iBAClD,EACP,MAAO7W,GACP,OAAO,GCTI,SAAS6rC,EAAQr0C,GAa9B,OATEq0C,EADoB,oBAAX75C,QAAoD,kBAApBA,OAAO85C,SACtC,SAAiBt0C,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXxF,QAAyBwF,EAAIiI,cAAgBzN,QAAUwF,IAAQxF,OAAOa,UAAY,gBAAkB2E,IAI9GA,GCXF,SAASqnH,EAA2BtrH,EAAMnC,GACvD,OAAIA,GAA2B,WAAlBy6C,EAAQz6C,IAAsC,oBAATA,ECHrC,SAAgCmC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIurH,eAAe,6DAG3B,OAAOvrH,EDEA,CAAsBA,GAHpBnC,EEDI,SAAS2tH,EAAaC,GACnC,OAAO,WACL,IACI1jF,EADA2jF,EAAQ,EAAeD,GAG3B,GAAI,IAA4B,CAC9B,IAAIE,EAAY,EAAen/G,MAAMN,YACrC67B,EAASmjF,QAAQC,UAAUO,EAAOjpH,UAAWkpH,QAE7C5jF,EAAS2jF,EAAMppH,MAAMkK,KAAM/J,WAG7B,OAAO,EAA0B+J,KAAMu7B,ICC3C,IAAI6jF,EAAgB,SAAS5tH,EAAGuU,GAI5B,OAHAq5G,EAAgBxtH,OAAO8oH,gBAClB,CAAEC,UAAW,cAAgB/mH,OAAS,SAAUpC,EAAGuU,GAAKvU,EAAEmpH,UAAY50G,IACvE,SAAUvU,EAAGuU,GAAK,IAAK,IAAI/S,KAAK+S,EAAOA,EAAEhT,eAAeC,KAAIxB,EAAEwB,GAAK+S,EAAE/S,MACpDxB,EAAGuU,IAGrB,SAASs5G,EAAU7tH,EAAGuU,GAEzB,SAASu5G,IAAOt/G,KAAKN,YAAclO,EADnC4tH,EAAc5tH,EAAGuU,GAEjBvU,EAAEsB,UAAkB,OAANiT,EAAanU,OAAOY,OAAOuT,IAAMu5G,EAAGxsH,UAAYiT,EAAEjT,UAAW,IAAIwsH,GAG5E,IAAIC,EAAW,WAQlB,OAPAA,EAAW3tH,OAAO2jB,QAAU,SAAkBnjB,GAC1C,IAAK,IAAIa,EAAG/B,EAAI,EAAGyB,EAAIsD,UAAUC,OAAQhF,EAAIyB,EAAGzB,IAE5C,IAAK,IAAI8B,KADTC,EAAIgD,UAAU/E,GACOU,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,KAAIZ,EAAEY,GAAKC,EAAED,IAE9E,OAAOZ,IAEK0D,MAAMkK,KAAM/J,YAGzB,SAASupH,EAAOvsH,EAAGgN,GACtB,IAAI7N,EAAI,GACR,IAAK,IAAIY,KAAKC,EAAOrB,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,IAAMiN,EAAE0D,QAAQ3Q,GAAK,IAC9EZ,EAAEY,GAAKC,EAAED,IACb,GAAS,MAALC,GAAqD,oBAAjCrB,OAAO6D,sBACtB,KAAIvE,EAAI,EAAb,IAAgB8B,EAAIpB,OAAO6D,sBAAsBxC,GAAI/B,EAAI8B,EAAEkD,OAAQhF,IAC3D+O,EAAE0D,QAAQ3Q,EAAE9B,IAAM,GAAKU,OAAOkB,UAAUoC,qBAAqB7D,KAAK4B,EAAGD,EAAE9B,MACvEkB,EAAEY,EAAE9B,IAAM+B,EAAED,EAAE9B,KAE1B,OAAOkB,EAGJ,SAASqtH,EAAWC,EAAY1pH,EAAQvD,EAAKktH,GAChD,IAA2HnuH,EAAvHD,EAAI0E,UAAUC,OAAQlE,EAAIT,EAAI,EAAIyE,EAAkB,OAAT2pH,EAAgBA,EAAO/tH,OAAOiE,yBAAyBG,EAAQvD,GAAOktH,EACrH,GAAuB,kBAAZjB,SAAoD,oBAArBA,QAAQkB,SAAyB5tH,EAAI0sH,QAAQkB,SAASF,EAAY1pH,EAAQvD,EAAKktH,QACpH,IAAK,IAAIzuH,EAAIwuH,EAAWxpH,OAAS,EAAGhF,GAAK,EAAGA,KAASM,EAAIkuH,EAAWxuH,MAAIc,GAAKT,EAAI,EAAIC,EAAEQ,GAAKT,EAAI,EAAIC,EAAEwE,EAAQvD,EAAKT,GAAKR,EAAEwE,EAAQvD,KAAST,GAChJ,OAAOT,EAAI,GAAKS,GAAKJ,OAAOC,eAAemE,EAAQvD,EAAKT,GAAIA,EA6FzD,SAAS6tH,IACZ,IAAK,IAAI5sH,EAAI,EAAG/B,EAAI,EAAG4uH,EAAK7pH,UAAUC,OAAQhF,EAAI4uH,EAAI5uH,IAAK+B,GAAKgD,UAAU/E,GAAGgF,OACxE,IAAIlE,EAAI4B,MAAMX,GAAI4c,EAAI,EAA3B,IAA8B3e,EAAI,EAAGA,EAAI4uH,EAAI5uH,IACzC,IAAK,IAAI4U,EAAI7P,UAAU/E,GAAI2d,EAAI,EAAGkxG,EAAKj6G,EAAE5P,OAAQ2Y,EAAIkxG,EAAIlxG,IAAKgB,IAC1D7d,EAAE6d,GAAK/J,EAAE+I,GACjB,OAAO7c,ECxJJ,IA2FHguH,EA3FSC,EAIL,EAJKA,EASC,EATDA,EAcE,EAkETC,EAAwC,qBAAdlqG,WAA6B,UAAU5U,KAAK4U,UAAUkjB,WAElFinF,EAAkC,GAGtC,IACEA,EAAUjgH,OACV,WAaF,IC3EIkgH,ED2EJ,aA4BE,WAAY98F,GAzBJ,KAAA+8F,OAAmB,GACnB,KAAAC,gBAA4B,GAE5B,KAAAC,eAA2B,GAC3B,KAAAC,SAAW,EACX,KAAAC,gBAA6C,GAC7C,KAAAC,kBAAoC,GAEpC,KAAAC,iBAAsE,GAkB5E3gH,KAAK4gH,QAAO,GACVC,cAAeZ,EACfa,cAAe,MACfC,eAAWthH,EACXuhH,iBAAavhH,GACV6jB,GAGLtjB,KAAKygH,gBAAkBzgH,KAAK4gH,QAAQK,gBAAkB,GAwM1D,OA7NgB,EAAAC,YAAd,W,MAGE,KAFAlB,EAAcG,EAAO,iBAEAH,EAAYmB,mBAAqBnB,EAAYmB,kBAAkBjjD,gBAAkB3zD,SAAW,CAC/G,IAAM62G,GAAsB,QAAP,EAAAjB,SAAO,eAAEkB,eAAgB,GAE9CrB,EAAcG,EAAO,eAAuB,IAAImB,EAAWF,EAAaG,aAG1E,OAAOvB,GAkBF,YAAAwB,UAAP,SAAiBl+F,GACftjB,KAAK4gH,QAAO,OACP5gH,KAAK4gH,SACLt9F,IASA,YAAAm+F,QAAP,SAAex1G,GACbjM,KAAK0gH,kBAAkB3sH,KAAKkY,IAQvB,YAAAy1G,aAAP,SAAoBtpH,GACV,IAAA2oH,EAAA,aAAAA,UAGR,OAAUA,EAAYA,EAAY,IAAM,KAFzB3oH,GAAe4H,KAAK4gH,QAAQE,eAEQ,IAAI9gH,KAAKwgH,YAOvD,YAAAmB,eAAP,SAAsB73G,EAAmBrX,EAAauO,EAAgBwvB,GACpExwB,KAAKygH,gBAAgBhuH,GAAOqX,EAC5B9J,KAAK2gH,iBAAiB72G,GAAa,CACjC9I,KAAI,EACJwvB,MAAK,IAQF,YAAAoxF,iBAAP,SAAwBnvH,GACtB,OAAOuN,KAAKygH,gBAAgBhuH,IAMvB,YAAAovH,kBAAP,WACE,OAAO7hH,KAAKygH,iBAOP,YAAAqB,kBAAP,SAAyBh4G,GACvB,IAAMgkD,EAAQ9tD,KAAK2gH,iBAAiB72G,GAEpC,OAAOgkD,GAASA,EAAM9sD,MAOjB,YAAA+gH,2BAAP,SAAkCj4G,GAChC,IAAMgkD,EAAQ9tD,KAAK2gH,iBAAiB72G,GAEpC,OAAOgkD,GAASA,EAAMt9B,OAOjB,YAAAwxF,WAAP,SAAkBC,EAAcC,GACtB,IACF/jH,EADE,aAAA0iH,gBAC0BZ,EAAqBjgH,KAAKmiH,wBAAqB1iH,EAMjF,GAJIyiH,GACFliH,KAAKsgH,gBAAgBvsH,KAAKkuH,GAGxB9jH,EACF,OAAQ6B,KAAK4gH,QAAQC,eACnB,KAAKZ,EACK,IAAAmC,EAAA,EAAAA,MAER,IACGA,EAAwBJ,WAAWC,EAAOG,EAAwBC,SAASnsH,QAC5E,MAAO+J,IAKT,MAEF,KAAKggH,EACH9hH,EAAQoV,YAAYhJ,SAASuV,eAAemiG,SAIhDjiH,KAAKqgH,OAAOtsH,KAAKkuH,GAGfjiH,KAAK4gH,QAAQ0B,cACftiH,KAAK4gH,QAAQ0B,aAAaL,IAQvB,YAAAM,SAAP,SAAgBC,GACd,OACGA,EAAwBxiH,KAAKsgH,gBAAgBl+G,KAAK,IAAM,IAAMpC,KAAKqgH,OAAOj+G,KAAK,IAAMpC,KAAKugH,eAAen+G,KAAK,KAQ5G,YAAAo3B,MAAP,WACEx5B,KAAKqgH,OAAS,GACdrgH,KAAKugH,eAAiB,GACtBvgH,KAAKwgH,SAAW,EAChBxgH,KAAK2gH,iBAAmB,GACxB3gH,KAAKygH,gBAAkB,GAEvBzgH,KAAK0gH,kBAAkBtqH,SAAQ,SAAC6V,GAAyB,OAAAA,QAIpD,YAAAw2G,UAAP,WACEziH,KAAKygH,gBAAkB,IAGjB,YAAA0B,iBAAR,sBAWE,OAVKniH,KAAK0iH,eAAqC,qBAAbn4G,WAChCvK,KAAK0iH,cAAgB1iH,KAAK2iH,sBAErBzC,GAEHhgH,OAAOuR,uBAAsB,WAC3B,EAAKixG,mBAAgBjjH,MAIpBO,KAAK0iH,eAGN,YAAAC,oBAAR,WACE,IAAMp0G,EAAwBhE,SAASgE,KACjCq0G,EAAer4G,SAASiJ,cAAc,SAE5CovG,EAAat1G,aAAa,oBAAqB,QAEvC,IAAA0zG,EAAA,aAAAA,YAMR,GALIA,GACEA,EAAY6B,OACdD,EAAat1G,aAAa,QAAS0zG,EAAY6B,OAG/C7iH,KAAKmhH,kBAGP5yG,EAAMhD,aAAaq3G,EAAc5iH,KAAKmhH,kBAAkB2B,wBACnD,CACL,IAAMC,EAAsC/iH,KAAKgjH,2BAE7CD,EACFx0G,EAAMhD,aAAaq3G,EAAcG,EAAoBD,oBAErDv0G,EAAMhD,aAAaq3G,EAAcr0G,EAAKiU,WAAW,IAKrD,OAFAxiB,KAAKmhH,kBAAoByB,EAElBA,GAGD,YAAAI,yBAAR,WACE,IAAMz0G,EAAwBhE,SAASgE,KACvC,OAAIA,EACKA,EAAKgmB,cAAc,4BAErB,MAEX,EA7OA,GE/FM,SAAU0uF,I,IACd,sDAEA,IAAMnyG,EAAoB,GACpBoyG,EAAgB,GAChBC,EAAa,EAAWjC,cAE9B,SAASkC,EAAaC,GACpB,IAAkB,UAAAA,EAAA,eAAU,CAAvB,IAAM5iH,EAAG,KACZ,GAAIA,EACF,GAAmB,kBAARA,EACT,GAAIA,EAAIkD,QAAQ,MAAQ,EACtBy/G,EAAa3iH,EAAI0B,MAAM,UAClB,CACL,IAAMmhH,EAAiBH,EAAWrB,kBAAkBrhH,GAEhD6iH,EACFF,EAAaE,IAGiB,IAA1BxyG,EAAQnN,QAAQlD,IAClBqQ,EAAQ/c,KAAK0M,QAIV7M,MAAMW,QAAQkM,GACvB2iH,EAAa3iH,GACW,kBAARA,GAChByiH,EAAQnvH,KAAK0M,IAQrB,OAFA2iH,EAAapiH,GAEN,CACL8P,QAAO,EACPoyG,QAAO,GDxCL,SAAUK,EAAOC,GACjBpD,IAASoD,IACXpD,EAAOoD,GAOL,SAAUC,IAOd,YANahkH,IAAT2gH,IACFA,EACsB,qBAAb71G,YACLA,SAASmtD,iBACsC,QAAjDntD,SAASmtD,gBAAgBjkD,aAAa,QAEnC2sG,EASH,SAAUsD,IACd,MAAO,CACLC,IAAKF,KAJTrD,EAAOqD,IE5BP,ICOIG,EDPE,EAAmC,GAEnC,SAAUC,EAAWC,EAAgCpgH,GACzD,IAAMu+G,EAAe6B,EAAUpgH,GAER,MAAnBu+G,EAAKn3D,OAAO,KACdg5D,EAAUpgH,GAAS,EAAMu+G,GAAQ,EAAMA,IAASA,EAAK14G,QAAQ,WAAY,OAAOQ,eEJpF,IAAMg6G,EAA6C,CACjD,cAAe,GAGX,SAAUC,EAAYF,EAAgCpgH,GAC1D,IAAMugH,EDEF,WACJ,IAAKL,EAAiB,CACpB,IAAMM,EAA0B,qBAAb35G,SAA2BA,cAAW9K,EACnD0kH,EAA2B,qBAAdnuG,UAA4BA,eAAYvW,EACrDy5B,EAAYirF,EAAMA,EAAIjrF,UAAUnvB,mBAAgBtK,EAUpDmkH,EARGM,EAQe,CAChBE,YAAaF,KAAO,qBAAsBA,EAAIxsD,gBAAgB/+C,QAC9D0rG,SAAUnrF,GAAaA,EAAUv1B,QAAQ,YAAc,GACvD2gH,WAAYprF,GAAaA,EAAUv1B,QAAQ,UAAY,GACvD4gH,QAASJ,IAAQ,WAAW/iH,KAAK+iH,EAAIjrF,aAAc,aAAa93B,KAAK4U,UAAUkjB,aAX/D,CAChBkrF,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,MAAM,GAYZ,OAAOX,ECzBgBY,GAEjB/yH,EAAOqyH,EAAUpgH,GAEvB,GAAIqgH,EAAgBtyH,GAAO,CACzB,IAAMU,EAAQ2xH,EAAUpgH,EAAQ,GAE5BqgH,EAAgBtyH,KACdwyH,EAAeG,UACjBN,EAAU/vH,KAAK,WAAatC,EAAMU,GAEhC8xH,EAAeI,OACjBP,EAAU/vH,KAAK,QAAUtC,EAAMU,GAE7B8xH,EAAeM,MACjBT,EAAU/vH,KAAK,OAAStC,EAAMU,GAE5B8xH,EAAeK,SACjBR,EAAU/vH,KAAK,MAAQtC,EAAMU,KCzBrC,I,EAAMsyH,EAAyB,CAC7B,eACA,cACA,OACA,YACA,cACA,eACA,UACA,QACA,UACA,QAGI,SAAUC,EAAaZ,EAAgCpgH,GAC3D,IAAMjS,EAAOqyH,EAAUpgH,GACjBvR,EAAQ2xH,EAAUpgH,EAAQ,GAEhC,GAAqB,kBAAVvR,EAAoB,CAC7B,IAAMwyH,EAAiBF,EAAuB9gH,QAAQlS,IAAmB,EACnEmzH,EAAuBnzH,EAAKkS,QAAQ,OAAS,EAC7CkhH,EAAOF,GAAkBC,EAAuB,GAAK,KAE3Dd,EAAUpgH,EAAQ,GAAK,GAAGvR,EAAQ0yH,GCpBtC,IAAMC,EAAO,OACPC,EAAQ,QAERC,IAAiB,MACpBF,GAAOC,EACR,EAACA,GAAQD,EACV,GACKG,EAAgD,CACpD,WAAY,WACZ,YAAa,YACb,YAAa,aAOT,SAAUC,EAAYtnH,EAAwBkmH,EAAgCpgH,GAClF,GAAI9F,EAAQ+lH,IAAK,CACf,IAAM,EAAOG,EAAUpgH,GAEvB,IAAK,EACH,OAGF,IAAMvR,EAAQ2xH,EAAUpgH,EAAQ,GAEhC,GAAqB,kBAAVvR,GAAsBA,EAAMwR,QAzB3B,YAyB+C,EACzDmgH,EAAUpgH,EAAQ,GAAKvR,EAAMoX,QAAQ,6CAA8C,SAC9E,GAAI,EAAK5F,QAAQmhH,IAAS,EAC/BhB,EAAUpgH,GAAS,EAAK6F,QAAQu7G,EAAMC,QACjC,GAAI,EAAKphH,QAAQohH,IAAU,EAChCjB,EAAUpgH,GAAS,EAAK6F,QAAQw7G,EAAOD,QAClC,GAAI9vG,OAAO7iB,GAAOwR,QAAQmhH,IAAS,EACxChB,EAAUpgH,EAAQ,GAAKvR,EAAMoX,QAAQu7G,EAAMC,QACtC,GAAI/vG,OAAO7iB,GAAOwR,QAAQohH,IAAU,EACzCjB,EAAUpgH,EAAQ,GAAKvR,EAAMoX,QAAQw7G,EAAOD,QACvC,GAAIE,EAAkB,GAC3BlB,EAAUpgH,GAASshH,EAAkB,QAChC,GAAIC,EAAmB9yH,GAC5B2xH,EAAUpgH,EAAQ,GAAKuhH,EAAmB9yH,QAE1C,OAAQ,GACN,IAAK,SACL,IAAK,UACH2xH,EAAUpgH,EAAQ,GAyB5B,SAAkBvR,GAChB,GAAqB,kBAAVA,EAAoB,CAC7B,IAAMsyC,EAAQtyC,EAAMgQ,MAAM,KAE1B,GAAqB,IAAjBsiC,EAAMvuC,OACR,OAAUuuC,EAAM,GAAE,IAAIA,EAAM,GAAE,IAAIA,EAAM,GAAE,IAAIA,EAAM,GAIxD,OAAOtyC,EAlCwBgzH,CAAShzH,GAChC,MACF,IAAK,aACH2xH,EAAUpgH,EAAQ,GAU5B,SAAmBvR,EAAeizH,GAChC,IAAM3gF,EAAQtyC,EAAMgQ,MAAM,KACpBkjH,EAAY3gD,SAASjgC,EAAM2gF,GAAY,IAI7C,OAFA3gF,EAAM,GAAKA,EAAM,GAAGl7B,QAAQyL,OAAOqwG,GAAYrwG,QAAoB,EAAbqwG,IAE/C5gF,EAAMriC,KAAK,KAhBakjH,CAAUnzH,EAAO,KC/BlD,SAAS,EAAeq+B,GACtB,IAAM+0F,EAAoB/0F,GAASA,EAAM,KAEzC,OAAO+0F,EAAaA,EAAwBntH,iBAAcqH,EAG5D,IAAM+lH,EAAuB,qBAgD7B,SAASC,EAAeC,EAAqBC,GAC3C,OAAID,EAAY/hH,QAAQ,aAAe,EAC9B+hH,EAAYn8G,QAAQi8G,EAAsB,MACX,IAA7BE,EAAY/hH,QAAQ,KACtBgiH,EAAkBD,EAChBA,EAAY/hH,QAAQ,KAAO,EAC7BgiH,EAAkB,IAAMD,EAG1BA,EAGT,SAASE,EAAgBD,EAAyBn1F,EAAmC/jB,EAAkBta,QAArD,IAAAq+B,MAAA,CAAoBq1F,QAAS,KAC/C,IAA1Bp5G,EAAS9I,QAAQ,KAEnBmiH,EAAa,CAAC3zH,GAAQq+B,EADtB/jB,EAAWA,EAAW,IAAMk5G,GAEnBl5G,EAAS9I,QAAQ,MAAQ,EArDtC,SAAqCoiH,GAEnC,IAAKP,EAAqBpkH,KAAK2kH,GAC7B,OAAOA,EAQT,IALA,IAAMC,EAAqC,GAErCC,EAAa,qBACf72G,EAAQ,KAEJA,EAAQ62G,EAAWp8G,KAAKk8G,IAE1B32G,EAAM,GAAGzL,QAAQ,MAAQ,GAC3BqiH,EAAgBjyH,KAAK,CACnBqb,EAAM1L,MACN0L,EAAM1L,MAAQ0L,EAAM,GAAGlZ,OAEvBkZ,EAAM,GACHjN,MAAM,KACNjE,KAAI,SAACyL,GAAc,iBAAWA,EAAEgpB,OAAb,OACnBvwB,KAAK,QAMd,OAAO4jH,EACJ/8C,UACA/pE,QAAO,SAACuN,EAAkB,G,IAACy5G,EAAA,KAAYC,EAAA,KAAeC,EAAA,KAIrD,OAHe35G,EAASzY,MAAM,EAAGkyH,GAGjBE,EAFD35G,EAASzY,MAAMmyH,KAG7BJ,GAoBHM,CAA4B55G,GACzBtK,MAAM,KACNjE,KAAI,SAACjL,GAAc,OAAAA,EAAA,UACnBmD,SAAQ,SAACkwH,GACR,OAAAR,EAAa,CAAC3zH,GAAQq+B,EAAOi1F,EAAea,EAAmBX,OAGnEG,EAAa,CAAC3zH,GAAQq+B,EAAOi1F,EAAeh5G,EAAUk5G,IAI1D,SAASG,EAAa9kH,EAAgBwvB,EAAmCm1F,QAAnC,IAAAn1F,MAAA,CAAoBq1F,QAAS,UAAM,IAAAF,MAAA,KACvE,IAAMxC,EAAa,EAAWjC,cAC1BqF,EAAwC/1F,EAAMm1F,GAE7CY,IACHA,EAAe,GACf/1F,EAAMm1F,GAAmBY,EACzB/1F,EAAMq1F,QAAQ9xH,KAAK4xH,IAGrB,IAAkB,UAAA3kH,EAAA,eAAM,CAAnB,IAAMP,EAAG,KAEZ,GAAmB,kBAARA,EAAkB,CAC3B,IAAM+lH,EAAgBrD,EAAWrB,kBAAkBrhH,GAE/C+lH,GACFV,EAAaU,EAAeh2F,EAAOm1F,QAGhC,GAAI/xH,MAAMW,QAAQkM,GACvBqlH,EAAarlH,EAAK+vB,EAAOm1F,QAEzB,IAAK,IAAM17F,KAAQxpB,EACjB,GAAKA,EAAY1N,eAAek3B,GAAO,CACrC,IAAMw8F,EAAahmH,EAAYwpB,GAE/B,GAAa,cAATA,EAAsB,CAExB,IAAMy8F,EAAwCjmH,EAAYimH,UAE1D,IAAK,IAAMhB,KAAegB,EACpBA,EAAU3zH,eAAe2yH,IAC3BE,EAAgBD,EAAiBn1F,EAAOk1F,EAAagB,EAAUhB,QAGrC,kBAAde,EAEE,OAAdA,GACFb,EAAgBD,EAAiBn1F,EAAOvG,EAAMw8F,QAG9BhnH,IAAdgnH,IAEW,WAATx8F,GAA8B,YAATA,EACvB08F,GAAYJ,EAAct8F,EAAMw8F,GAE/BF,EAAqBt8F,GAAQw8F,IAS5C,OAAOj2F,EAGT,SAASm2F,GAAYJ,EAA2B90H,EAAcU,GAC5D,IAAMsyC,EAAyB,kBAAVtyC,EAAqBA,EAAMgQ,MAAM,KAAO,CAAChQ,GAE9Do0H,EAAa90H,EAAO,OAASgzC,EAAM,GACnC8hF,EAAa90H,EAAO,SAAWgzC,EAAM,IAAMA,EAAM,GACjD8hF,EAAa90H,EAAO,UAAYgzC,EAAM,IAAMA,EAAM,GAClD8hF,EAAa90H,EAAO,QAAUgzC,EAAM,IAAMA,EAAM,IAAMA,EAAM,GAG9D,SAASmiF,GAAehpH,EAAwB4yB,GAI9C,IAHA,IAAMq2F,EAAuB,CAACjpH,EAAQ+lH,IAAM,MAAQ,OAChDmD,GAAW,EAEQ,MAAAt2F,EAAMq1F,QAAN,eAAe,CAAjC,IAAMp5G,EAAQ,KACjBo6G,EAAW9yH,KAAK0Y,GAChB,IAAMs6G,EAAmBv2F,EAAM/jB,GAE/B,IAAK,IAAMyvG,KAAY6K,EACjBA,EAAiBh0H,eAAempH,SAA4Cz8G,IAA/BsnH,EAAiB7K,KAChE4K,GAAW,EACXD,EAAW9yH,KAAKmoH,EAAU6K,EAAiB7K,KAKjD,OAAO4K,EAAWD,EAAWzkH,KAAK,SAAM3C,EAG1C,SAASunH,GAAahxH,EAAgB4a,GACpC,OAAIA,GAAS,EACJ,GAGK,IAAVA,EACK5a,EAGFA,EAASgxH,GAAahxH,EAAQ4a,EAAQ,GAGzC,SAAUq2G,GAAqBrpH,EAAwBspH,GAC3D,IAAKA,EACH,MAAO,GAGT,IAAMC,EAAkC,GAExC,IAAK,IAAMr5D,KAASo5D,EACdA,EAAYn0H,eAAe+6D,IArMd,gBAqMwBA,QAAiDruD,IAAvBynH,EAAYp5D,IAC7Eq5D,EAAWpzH,KAAK+5D,EAAOo5D,EAAYp5D,IAKvC,IAAK,IAAI58D,EAAI,EAAGA,EAAIi2H,EAAWjxH,OAAQhF,GAAK,EAC1C2yH,EAAWsD,EAAYj2H,GACvBwzH,EAAayC,EAAYj2H,GACzBg0H,EAAYtnH,EAASupH,EAAYj2H,GACjC8yH,EAAYmD,EAAYj2H,GAI1B,IAASA,EAAI,EAAGA,EAAIi2H,EAAWjxH,OAAQhF,GAAK,EAC1Ci2H,EAAWvjH,OAAO1S,EAAG,EAAG,IAAKi2H,EAAWj2H,GAAI,KAG9C,OAAOi2H,EAAW/kH,KAAK,IAUnB,SAAUglH,GAAoBxpH,G,IAAwB,wDAC1D,IAAM4yB,EAAkBs1F,EAAa9kH,GAC/BvO,EAAMm0H,GAAehpH,EAAS4yB,GAEpC,GAAI/9B,EAAK,CACP,IAAM0wH,EAAa,EAAWjC,cACxBmG,EAAuC,CAC3Cv9G,UAAWq5G,EAAWvB,iBAAiBnvH,GACvCA,IAAG,EACHuO,KAAI,GAGN,IAAKqmH,EAAav9G,UAAW,CAC3Bu9G,EAAav9G,UAAYq5G,EAAWzB,aAAa,EAAelxF,IAGhE,IAFA,IAAM82F,EAA0B,GAET,MAAA92F,EAAMq1F,QAAN,eAAe,CAAjC,IAAMp5G,EAAQ,KACjB66G,EAAcvzH,KAAK0Y,EAAUw6G,GAAqBrpH,EAAS4yB,EAAM/jB,KAEnE46G,EAAaC,cAAgBA,EAG/B,OAAOD,GAYL,SAAUE,GAAkBF,EAA6BG,QAAA,IAAAA,MAAA,GAC7D,IAAMrE,EAAa,EAAWjC,cACtBp3G,EAAA,EAAAA,UAAWrX,EAAA,EAAAA,IAAKuO,EAAA,EAAAA,KAAMsmH,EAAA,EAAAA,cAE9B,GAAIA,EAAe,CAEjB,IAAK,IAAIp2H,EAAI,EAAGA,EAAIo2H,EAAcpxH,OAAQhF,GAAK,EAAG,CAChD,IAAMs/B,EAAQ82F,EAAcp2H,EAAI,GAChC,GAAIs/B,EAAO,CACT,IAAI/jB,EAAW66G,EAAcp2H,GAIvBu2H,GAHNh7G,EAAWA,EAASlD,QAAQ,KAAMy9G,GAAa,IAAIK,EAAav9G,UAAa09G,KAG5C,IAAIh3F,EAAK,KAA8B,IAA1B/jB,EAAS9I,QAAQ,KAAa,IAAM,IAClFw/G,EAAWnB,WAAWyF,IAG1BtE,EAAWxB,eAAe73G,EAAYrX,EAAMuO,EAAOsmH,ICnRjD,SAAU/F,K,IAAY,sDAC1B,OAAOmG,GAAS1mH,EAAM0iH,KASlB,SAAUgE,GACd1mH,EACApD,GAEA,IACM,IADYoD,aAAgBpN,MAAQoN,EAAO,CAACA,IAC1C8P,EAAA,EAAAA,QAASoyG,EAAA,EAAAA,QAMjB,OAJIA,EAAQhtH,QACV4a,EAAQ/c,KDqQN,SAA2B6J,G,IAAwB,wDACvD,IAAMypH,EAAeD,GAAmB,gBAACxpH,GAAYoD,IACrD,OAAIqmH,GACFE,GAAkBF,EAAczpH,EAAQ4pH,uBAEjCH,EAAav9G,WAGf,GC7QQ69G,CAAiB/pH,GAAW,GAAIslH,IAGxCpyG,EAAQ1O,KAAK,KCtBhB,SAAUwlH,GAAUC,GACxB,IAAM1E,EAAa,EAAWjC,cACxBzvH,EAAO0xH,EAAWzB,eAElBoG,EAAuB,GAE7B,IAAK,IAAM79F,KAAQ49F,EACbA,EAAS90H,eAAek3B,IAC1B69F,EAAW/zH,KAAKk2B,EAAM,IAAKg9F,GAAqBvD,IAAmBmE,EAAS59F,IAAQ,KAGxF,IAAMuG,EAAQs3F,EAAW1lH,KAAK,IAM9B,OAJA+gH,EAAWnB,WAAW,cAAcvwH,EAAI,IAAI++B,EAAK,KAAK,GAEtD2yF,EAAWxB,eAAelwH,EAAM++B,EAAO,GAAI,CAAC,YAAaA,IAElD/+B,ECtBT,IAAMs2H,GAAoB,2BACpBC,GAAoB,8BAMpBC,GAAkBL,GAAU,CAChCzmH,KAAM,CAAE6pC,QAAS,GACjBp7B,GAAI,CAAEo7B,QAAS,KAGXk9E,GAAmBN,GAAU,CACjCzmH,KAAM,CAAE6pC,QAAS,GACjBp7B,GAAI,CAAEo7B,QAAS,EAAGuW,WAAY,YAG1B4mE,GAA2BC,IAAiB,IAC5CC,GAA2BD,IAAiB,IAC5CE,GAA2BF,IAAiB,IAC5CG,GAA4BH,IAAiB,KAC7CI,GAA0BJ,GAAgB,IAC1CK,GAA0BL,GAAgB,IAC1CM,GAA0BN,GAAgB,IAC1CO,GAA2BP,GAAgB,KAC3CQ,GAAwBC,GAAgB,IACxCC,GAAwBD,GAAgB,IACxCE,GAA0BF,IAAiB,IAC3CG,GAA0BH,IAAiB,IAE3CI,GAA4BC,GAAiB,IAC7CC,GAA4BD,GAAiB,IAC7CE,GAA4BF,GAAiB,IAC7CG,GAA6BH,GAAiB,KAC9CI,GAA2BJ,IAAkB,IAC7CK,GAA2BL,IAAkB,IAC7CM,GAA2BN,IAAkB,IAC7CO,GAA4BP,IAAkB,KAC9CQ,GAAyBC,IAAkB,IAC3CC,GAAyBD,IAAkB,IAC3CE,GAA2BF,GAAiB,IAC5CG,GAA2BH,GAAiB,IAE5CI,GAAsBnC,GAAU,CACpCzmH,KAAM,CAAEs/B,UAAW,sBACnB7wB,GAAI,CAAE6wB,UAAW,oBAGbupF,GAAuBpC,GAAU,CACrCzmH,KAAM,CAAEs/B,UAAW,kBACnB7wB,GAAI,CAAE6wB,UAAW,wBAGbwpF,GAAwBrC,GAAU,CACtCzmH,KAAM,CAAEs/B,UAAW,wBACnB7wB,GAAI,CAAE6wB,UAAW,oBAGbypF,GAAsBtC,GAAU,CACpCzmH,KAAM,CAAEs/B,UAAW,kBACnB7wB,GAAI,CAAE6wB,UAAW,0BAGb0pF,GAAmBvC,GAAU,CACjCzmH,KAAM,CAAEs/B,UAAW,iBACnB7wB,GAAI,CAAE6wB,UAAW,oBAGb2pF,GAAqBxC,GAAU,CACnCzmH,KAAM,CAAEs/B,UAAW,iBACnB7wB,GAAI,CAAE6wB,UAAW,qBAMN4pF,GACItC,GADJsC,GAEIrC,GAFJqC,GAzEM,SAyENA,GAxEM,SAqInB,SAASC,GACP/wB,EACAgxB,EACAC,GAEA,MAAO,CACLjxB,cAAa,EACbgxB,kBAAiB,EACjBC,wBAAuB,EACvBC,kBAAmB,QAIvB,SAASrC,GAAgBsC,GACvB,OAAO9C,GAAU,CACfzmH,KAAM,CAAEs/B,UAAW,eAAeiqF,EAAK,UAAW1uG,cAAe,QACjEpM,GAAI,CAAE6wB,UAAW,qBAAsBzkB,cAAe,UAI1D,SAAS6sG,GAAgB8B,GACvB,OAAO/C,GAAU,CACfzmH,KAAM,CAAEs/B,UAAW,iBAAiBkqF,EAAK,QAAS3uG,cAAe,QACjEpM,GAAI,CAAE6wB,UAAW,qBAAsBzkB,cAAe,UAI1D,SAASktG,GAAiB0B,GACxB,OAAOhD,GAAU,CACfzmH,KAAM,CAAEs/B,UAAW,sBACnB7wB,GAAI,CAAE6wB,UAAW,eAAemqF,EAAG,aAIvC,SAASjB,GAAiBkB,GACxB,OAAOjD,GAAU,CACfzmH,KAAM,CAAEs/B,UAAW,sBACnB7wB,GAAI,CAAE6wB,UAAW,iBAAiBoqF,EAAG,WC5KlC,ICJUC,GAeAC,GAoBAC,GA8BAC,GASAC,GDtEJC,GECP,SAA0CjxG,GAC9C,IAAIpJ,EAAyC,G,WAEpCs6G,GAEL,IAAI,EADFlxG,EAAOnnB,eAAeq4H,IAGxBx5H,OAAOC,eAAeif,EAASs6G,EAAW,CACxCr5H,IAAK,WAKH,YAJkB0N,IAAd,IAEF,EAAY8hH,GAAYrnG,EAAOkxG,IAAmBn3H,YAE7C,GAETnC,YAAY,EACZ4F,cAAc,KAbpB,IAAK,IAAI0zH,KAAalxG,E,EAAbkxG,GAkBT,OAAOt6G,EFtBwEu6G,CDuFhC,CAC/CC,eAAgBhB,GAAoBrC,GAAO,IAAIE,GAtF9B,SAsF8DJ,IAC/EwD,eAAgBjB,GAAoBrC,GAAO,IAAII,GAvF9B,SAuF8DN,IAC/EyD,eAAgBlB,GAAoBrC,GAAO,IAAIK,GAxF9B,SAwF8DP,IAC/E0D,gBAAiBnB,GAAoBrC,GAAO,IAAIM,GAzF/B,SAyFgER,IACjF2D,cAAepB,GAAoBrC,GAAO,IAAIO,GA1F7B,SA0F4DT,IAC7E4D,cAAerB,GAAoBrC,GAAO,IAAIQ,GA3F7B,SA2F4DV,IAC7E6D,cAAetB,GAAoBrC,GAAO,IAAIS,GA5F7B,SA4F4DX,IAC7E8D,eAAgBvB,GAAoBrC,GAAO,IAAIU,GA7F9B,SA6F8DZ,IAC/E+D,YAAaxB,GAAoBrC,GAAO,IAAIW,GA9F3B,SA8FwDb,IACzEgE,YAAazB,GAAoBrC,GAAO,IAAIa,GA/F3B,SA+FwDf,IACzEiE,cAAe1B,GAAoBrC,GAAO,IAAIc,GAhG7B,SAgG4DhB,IAC7EkE,cAAe3B,GAAoBrC,GAAO,IAAIe,GAjG7B,SAiG4DjB,IAE7EmE,gBAAiB5B,GAAoBpC,GAAQ,IAAIe,GAnGhC,SAmGiElB,IAClFoE,gBAAiB7B,GAAoBpC,GAAQ,IAAIiB,GApGhC,SAoGiEpB,IAClFqE,gBAAiB9B,GAAoBpC,GAAQ,IAAIkB,GArGhC,SAqGiErB,IAClFsE,iBAAkB/B,GAAoBpC,GAAQ,IAAImB,GAtGjC,SAsGmEtB,IACpFuE,eAAgBhC,GAAoBpC,GAAQ,IAAIoB,GAvG/B,SAuG+DvB,IAChFwE,eAAgBjC,GAAoBpC,GAAQ,IAAIqB,GAxG/B,SAwG+DxB,IAChFyE,eAAgBlC,GAAoBpC,GAAQ,IAAIsB,GAzG/B,SAyG+DzB,IAChF0E,gBAAiBnC,GAAoBpC,GAAQ,IAAIuB,GA1GhC,SA0GiE1B,IAClF2E,aAAcpC,GAAoBpC,GAAQ,IAAIwB,GA3G7B,SA2G2D3B,IAC5E4E,aAAcrC,GAAoBpC,GAAQ,IAAI0B,GA5G7B,SA4G2D7B,IAC5E6E,eAAgBtC,GAAoBpC,GAAQ,IAAI2B,GA7G/B,SA6G+D9B,IAChF8E,eAAgBvC,GAAoBpC,GAAQ,IAAI4B,GA9G/B,SA8G+D/B,IAEhF+E,aAAcxC,GAAoBrC,GAAO,IAAI8B,GAhH5B,SAgHuDhC,IACxEgF,eAAgBzC,GAAoBrC,GAAO,IAAIgC,GAjH9B,SAiH2DlC,IAC5EiF,cAAe1C,GAAoBpC,GAAQ,IAAIgC,GApH9B,SAoHyDlC,IAC1EiF,eAAgB3C,GAAoBpC,GAAQ,IAAI8B,GArH/B,SAqH2DhC,IAE5EkF,UAAW5C,GAAiBrC,GAvHX,SAuHgCD,IACjDmF,UAAW7C,GAAiBrC,GAvHX,SAuHgCD,IACjDoF,UAAW9C,GAAiBrC,GAvHX,SAuHgCD,IACjDqF,UAAW/C,GAAiBrC,GAvHX,SAuHgCD,IAEjDsF,WAAYhD,GAAiBpC,GA5HZ,SA4HkCF,IACnDuF,WAAYjD,GAAiBpC,GA5HZ,SA4HkCF,IACnDwF,WAAYlD,GAAiBpC,GA5HZ,SA4HkCF,IACnDyF,WAAYnD,GAAiBpC,GA5HZ,SA4HkCF,IAEnD0F,YAAapD,GAAiBH,GAAU,OAAQnC,IAChD2F,aAAcrD,GAAiBF,GAAY,OAAQpC,OEtIrD,SAAiB8C,GACF,EAAA8C,OAAS,wBACT,EAAAC,SAAW,0BACX,EAAAC,aAAe,+BACf,EAAAC,MAAQ,uBACR,EAAAC,OAAS,wBACT,EAAAC,KAAO,oBACP,EAAAC,WAAa,4BACb,EAAAC,aAAe,+BACf,EAAAC,QAAU,cACV,EAAAC,SAAW,0BACX,EAAAC,SAAW,0BAX1B,CAAiBxD,QAAkB,KAenC,SAAiBC,GACF,EAAA6C,OAAS,IAAI9C,GAAmB8C,OAAM,IACtC,EAAAW,kBAAoB,wCACpB,EAAAC,mBAAqB,oCACrB,EAAAX,SAAW,IAAI/C,GAAmB+C,SAAQ,IAC1C,EAAAC,aAAe,IAAIhD,GAAmBgD,aAAY,IAClD,EAAAC,MAAQ,IAAIjD,GAAmBiD,MAAK,IACpC,EAAAC,OAAS,IAAIlD,GAAmBkD,OAAM,IACtC,EAAAS,MAAQ,eACR,EAAAC,SAAW,2DACX,EAAAC,OAAS,yBACT,EAAAP,QAAU,IAAItD,GAAmBsD,QAAO,IACxC,EAAAH,KAAO,iCACP,EAAAC,WAAa,IAAIpD,GAAmBoD,WAAU,IAC9C,EAAAC,aAAe,IAAIrD,GAAmBqD,aAAY,IAClD,EAAAE,SAAW,IAAIvD,GAAmBuD,SAAQ,IAC1C,EAAAC,SAAW,IAAIxD,GAAmBwD,SAAQ,IAhBzD,CAAiBvD,QAAqB,KAoBtC,SAAiBC,GACF,EAAA4D,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OACT,EAAAC,OAAS,OAET,EAAAC,KAAe,OACf,EAAAC,OAAiB,OACjB,EAAAC,MAAgB,OAChB,EAAAC,UAAoB,OACpB,EAAAC,OAAiB,OACjB,EAAAC,WAAqB,OACrB,EAAApvG,KAAe,OACf,EAAAqvG,MAAgB,OAChB,EAAAC,OAAiB,OACjB,EAAAC,WAAqB,OACrB,EAAAC,QAAkB,OAClB,EAAAC,YAAsB,OACtB,EAAAC,WAAqB,OACrB,EAAAC,KAAe,OA1B9B,CAAiBnF,QAAS,KA8B1B,SAAiBC,GACF,EAAAmF,MAAqB,IACrB,EAAAC,UAAyB,IACzB,EAAAC,QAAuB,IACvB,EAAAC,SAAwB,IACxB,EAAAC,KAAoB,IALnC,CAAiBvF,QAAW,KAS5B,SAAiBC,GACF,EAAAsE,OAAiB,OACjB,EAAAC,MAAgB,OAChB,EAAAE,OAAiB,OACjB,EAAAE,MAAgB,OAJ/B,CAAiB3E,QAAa,KE3EvB,IAAMuF,GAAuB,yEAqB9B,SAAUC,GAAkB37G,EAAyBD,GAGzD,MAAO,sBAF4B,kBAARC,EAAmB,oBAAoBA,EAAG,MAAQ,KAC1C,kBAARD,EAAmB,oBAAoBA,EAAG,MAAQ,ICzBxE,IAAI67G,IAAS,ECEpB,IAAIC,QAA8BnxH,EAKlC,IACEmxH,GAAU1wH,OACV,MAAOD,KAYH,SAAUy4D,GAAUm4D,GACxB,IAAIF,IAA6B,qBAAZC,GAArB,CAGE,IAAMp+F,EAAKq+F,EAEX,OAAOr+F,GAAMA,EAAG0rC,eAAiB1rC,EAAG0rC,cAAcC,YAAc3rC,EAAG0rC,cAAcC,YAAcyyD,IC1B5F,ICDUE,GDCJC,GAA0B,4BAgBjC,SAAUC,GAAmBC,EAAkBj7H,GACnD,IAAMk7H,EAAMl7H,EAAS0iE,GAAU1iE,GAAU0iE,KAEzC,GAAIw4D,EAAK,CACC,IAAA9mH,EAAA,gBAAAA,UACRA,EAAUC,IAAI4mH,EAAUF,GApBU,4BAqBlC3mH,EAAUyoB,OAAOo+F,EArBiB,2BAqBkBF,KEclD,SAAUI,GACdxiF,EACAyiF,EACAl2G,EACAm2G,EACA36D,EACA46D,EACAC,GAEA,OAUSC,GAAuB7iF,EAVF,kBAAnByiF,GAAgCA,EAUJA,EATA,CACnCK,MAAOL,EACPl2G,SAAQ,EACRm2G,kBAAiB,EACjB36D,YAAW,EACX46D,aAAY,EACZC,cAAa,IAOnB,SAASC,GAAuB7iF,EAAe/wC,G,aAAA,IAAAA,MAAA,IAE3C,QAAA6zH,aAAA,UACA,IAAA/1G,aAAA,IAAQ,EAAR,IACA,IAAAR,gBAAA,IAAW,EAAX,aACAm2G,EAAA,EAAAA,kBACA,IAAA36D,mBAAA,IAAc,EAAd,kBACA,IAAA46D,oBAAA,IAAe,EAAf,6BACA,IAAAC,cAGF,MAAO,CAELr8D,QAAS,cAETh6C,SAAQ,EAERwrG,WAAS,GAGP,qBAAsB,CACpBvqG,OAAQ,MAKV,EAAC,IAAI40G,GAAuB,WAlB9B,IAAgB,GAAhB,EAkBmD,SAAW,IAAE,UAAW,CACvE1nH,QAAS,KACT6R,SAAU,WACVM,KAAMi2G,EAAQ,EACdl2G,IAAKk2G,EAAQ,EACb/vG,OAAQ+vG,EAAQ,EAChBh+F,MAAOg+F,EAAQ,EACft1G,OAAWT,EAAK,YAAYg7C,EAC5BxB,QAAYx5C,EAAK,YAAY41G,EAC7B76D,OAAQq6D,GAASY,WACjBhL,WAAS,KACP,EAAC+J,IAAuBY,EACzB,IAEJ,KDpGL,SAAiBP,GACF,EAAAa,IAAc,EAId,EAAAC,eAAyB,EACzB,EAAAF,WAAqB,EACrB,EAAAG,UAAoB,IACpB,EAAAC,MAAgB,IAChB,EAAAC,YAAsB,QATrC,CAAiBjB,QAAQ,KCwJlB,IAAM,GAAqB,SAChCp6D,EACAie,EACAq9C,EACAC,G,eADA,IAAAD,MAAA,eACA,IAAAC,OAA0B,GAE1B,IAAMC,EAAgC,iBAAfF,EAEvB,MAAO,CACLt7D,YAAW,EACXgwD,UAAW,CACT,UAAQ,GACN1qG,cAAe,OACf3S,QAAS,KACT6R,SAAU,WACVM,KAAM02G,EAAiB,EAAID,EAC3B12G,IAAK02G,EACLvwG,OAAQuwG,EACRx+F,MAAOy+F,EAAiB,EAAID,GAC5B,EAACD,GAAa,aAAat7D,EAC3B,EAAAie,aAAY,EACZ,EAAAj5D,MAAsB,iBAAfs2G,EAAgC,YAASvyH,EAChD,EAAAinH,WAAS,KACP,EAAC+J,KAAoB,KACnB,EAAgB,WAAfuB,EAA0B,cAAgB,qBAAsB,YAClE,GACF,GACF,MCjLMG,GAAgC,CAC3Cj3G,SAAU,WACVQ,MAAO,EACPD,OAAQ,EACRS,QAAS,EACTtD,QAAS,EACTuD,OAAQ,EACRd,SAAU,UCCR+2G,IAA+B,EAC/BC,GAAgB,EACdC,GAAe,CAAEzzF,OAAO,GACxB0zF,GAAmB,GACrBC,GAA8B,qBAAZ5rC,QAA0B,KAAOA,QAmBjD,SAAU6rC,KACdJ,KAiDI,SAAUK,GACdlwC,EACAmwC,EACAC,GAGA,QAJA,IAAAD,MAAA,UACA,IAAAC,OAAA,IAGKJ,GACH,OAAOhwC,EAGT,IAAK4vC,GAA8B,CACjC,IAAMjP,EAAa,EAAWjC,cAE1BiC,GAAcA,EAAW1B,SAC3B,EAAWP,cAAcO,QAAQgR,IAEnCL,IAA+B,EAGjC,IAAIS,EACAC,EAAY,EACZC,EAAoBV,GAExB,OAAO,W,IAA0B,sDAC/B,IAAIhjH,EAAmBwjH,QAGRpzH,IAAbozH,GACAE,IAAsBV,IACrBM,EAAe,GAAKG,EAAYH,KAEjCE,EAAWG,KACXF,EAAY,EACZC,EAAoBV,IAGtBhjH,EAAcwjH,EAGd,IAAK,IAAI3hI,EAAI,EAAGA,EAAI8P,EAAK9K,OAAQhF,IAAK,CACpC,IAAIuP,EAAMwyH,GAAcjyH,EAAK9P,IAExBme,EAAYnR,IAAI+qF,IAAIxoF,IACvB4O,EAAYnR,IAAIiqB,IAAI1nB,EAAKuyH,MAG3B3jH,EAAcA,EAAYnR,IAAInM,IAAI0O,GAYpC,OATK4O,EAAYtc,eAAe,WAC9Bsc,EAAYld,MAAQqwF,EAAE,aAAIxhF,GAC1B8xH,MAGEF,GAAsD,OAAtBvjH,EAAYld,YAAwCsN,IAAtB4P,EAAYld,QAC5Ekd,EAAYld,MAAQqwF,EAAE,aAAIxhF,IAGrBqO,EAAYld,OAejB,SAAU+gI,GAA8Cp4F,GAC5D,IAAK03F,GAEH,OAAO13F,EAGT,IAAMq4F,EAAQ,IAAIX,GAoBlB,OAlBA,SAA0Bn8G,GACxB,IAAKA,GAA2B,oBAAVA,GAAyC,kBAAVA,EAGnD,OAAOykB,EAASzkB,GAGlB,GAAI88G,EAAMlqC,IAAI5yE,GACZ,OAAO88G,EAAMphI,IAAIskB,GAGnB,IAAMlkB,EAAQ2oC,EAASzkB,GAIvB,OAFA88G,EAAMhrG,IAAI9R,EAAOlkB,GAEVA,GAQX,SAAS8gI,GAAcl1H,GACrB,OAAKA,EAEqB,kBAARA,GAAmC,oBAARA,EACpCA,GACGw0H,GAAYx0H,KACtBw0H,GAAYx0H,GAAO,CAAEA,IAAG,IAGnBw0H,GAAYx0H,IAPVu0H,GAUX,SAASU,KACP,MAAO,CACL90H,IAAKs0H,GAAW,IAAIA,GAAa,MC/LrC,IAAMY,GAAuBV,IAC3B,SAAIjyE,EAAiC4yE,GACnC,IAAMC,EAAa,EAAWpS,cAE9B,OAAImS,EAEMzhI,OAAO6C,KAAKgsD,GAA4BvhD,QAAO,SAAC81C,EAAKlrC,GAE3D,OADAkrC,EAAIlrC,GAAawpH,EAAW5R,aAAajhE,EAAW32C,IAC7CkrC,IACN,IAIEyL,KAaL,SAAU8yE,GACd9yE,EACA9R,EACA0kF,GAEA,OAAOD,GACL3yE,OAC4BhhD,IAA5B4zH,EAAwCA,EAA0B1kF,EAAM0kF,yBChC5E,IAGI7S,GAAW,EAmCf,4BAoDA,OAnDgB,EAAA1lF,SAAd,SAA0BroC,EAAakK,GACrC,IAAM62H,EAAiBC,KAMvB,YAJ4Bh0H,IAAxB+zH,EAAe/gI,KACjB+gI,EAAe/gI,GAA+B,oBAAjBkK,EAA+BA,IAA8BA,GAGrF62H,EAAe/gI,IAGV,EAAA8nC,SAAd,SAA0B9nC,EAAaN,GACrC,IAAMqhI,EAAiBC,KACjBljH,EAAYijH,EAAc,cAC5BnzE,EAAWmzE,EAAe/gI,GAE9B,GAAIN,IAAUkuD,EAAU,CACtBmzE,EAAe/gI,GAAON,EAEtB,IAAIuhI,EAAoB,CACtBrzE,SAAQ,EACRluD,MAAK,EACLM,IAAG,GAGL,IAAK,IAAI0F,KAAMoY,EACTA,EAAUxd,eAAeoF,IAC3BoY,EAAUpY,GAAIu7H,GAKpB,OAAOvhI,GAGK,EAAAwhI,kBAAd,SAAgCnxC,GAG9B,IAAIrqF,EAAKqqF,EAAGoxC,OACNrjH,EAAYsjH,KAEb17H,IACHA,EAAKqqF,EAAGoxC,OAAS5+G,OAAOwrG,OAG1BjwG,EAAUpY,GAAMqqF,GAGJ,EAAAsxC,qBAAd,SAAmCtxC,UACfqxC,KACDrxC,EAAGoxC,SAExB,EApDA,GAuDA,SAASH,K,MAGDM,EAFMr7D,MAEqC,GAQjD,OANKq7D,EAAS,qBACZA,EAAS,qBAA2B,MAClC,cAA4B,GAC7B,IAGIA,EAAS,mBAGlB,SAASF,KAEP,OADuBJ,KACF,cClGvB,ICtBiBO,GDuBXC,GAAoB,CAAEC,SAAU,GAAIC,eAAgB,GAAIC,qBAAqB,GAE/EC,GAAeC,GAAex5F,SAHF,iBAGqD,CACnFo5F,SAAU,GACVC,eAAgB,GAChBC,qBAAqB,IAGnBjiG,GAA0B,GAE9B,4BA4EA,OAzEgB,EAAAqH,MAAd,WACE66F,GAAaH,SAAW,GACxBG,GAAaF,eAAiB,IAMlB,EAAAI,cAAd,SAA4BL,GAC1BG,GAAaH,SAAQ,OAAQG,GAAaH,UAAaA,GACvDM,EAAeC,gBAMH,EAAAC,oBAAd,SAAkCC,EAAmBT,GACnDG,GAAaF,eAAeQ,GAAU,OAAQN,GAAaF,eAAeQ,IAAeT,GACzFM,EAAeC,gBAGH,EAAAG,YAAd,SACEvlE,EACAslE,EACAE,QAAA,IAAAA,MAAA,IAOA,IAJA,IAAMX,EAAsB,GACtBY,EAAuBH,GAAaE,EAAcV,eAAeQ,IAAe,GAChFI,EAAwBJ,GAAaN,GAAaF,eAAeQ,IAAe,GAEjE,MAAAtlE,EAAA,eAAY,CAA5B,IAAIx8D,EAAQ,KACfqhI,EAASrhI,GACPiiI,EAAoBjiI,IACpBgiI,EAAcX,SAASrhI,IACvBkiI,EAAqBliI,IACrBwhI,GAAaH,SAASrhI,GAG1B,OAAOqhI,GAQK,EAAAc,oBAAd,SAAkCnzH,EAAkBozH,GAClDT,EAAeU,kBAAmB,EAClC,IACErzH,IACA,WAGF2yH,EAAeU,kBAAmB,EAC7BD,GACHT,EAAeC,gBAIL,EAAAU,QAAd,SAAsB/6G,GACpB+X,GAAQp+B,KAAKqmB,IAGD,EAAAg7G,UAAd,SAAwBh7G,GACtB+X,GAAUA,GAAQx8B,QAAO,SAAC6sF,GAAmB,OAAAA,IAAA,MAGhC,EAAAiyC,aAAf,WACOD,EAAeU,kBAClB/iG,GAAQ/7B,SAAQ,SAACosF,GAAmB,OAAAA,QAG1C,EA5EA,G,SE7Ba6yC,GAA2B,CACtCC,YAAa,UACbC,UAAW,UACXC,aAAc,UACdC,aAAc,UACdC,eAAgB,UAChBC,cAAe,UACfC,WAAY,UACZC,aAAc,UACdC,gBAAiB,UACjBC,MAAO,UACPC,mBAAoB,iBACpBC,YAAa,UACbC,eAAgB,UAChBC,kBAAmB,UACnBC,iBAAkB,UAClBC,oBAAqB,UACrBC,gBAAiB,UACjBC,mBAAoB,UACpBC,kBAAmB,UACnBC,qBAAsB,UACtBC,aAAc,UACdC,eAAgB,UAChBC,kBAAmB,UACnBC,OAAQ,UACRC,MAAO,UACPC,mBAAoB,uBACpBC,WAAY,UACZC,OAAQ,UACRC,YAAa,UACbC,OAAQ,UACRC,YAAa,UACbC,cAAe,UACfC,QAAS,UACTC,IAAK,UACLC,YAAa,UACbC,QAAS,UACTC,aAAc,UACdC,WAAY,UACZC,OAAQ,UACRC,YAAa,UACbC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,UAAW,UACXC,SAAU,UACVC,KAAM,UACNC,UAAW,UACXC,UAAW,UACXC,MAAO,UACPC,WAAY,YDtDd,SAAiBvE,GACF,EAAAwE,OAAS,sBACT,EAAAC,OAAS,6EACT,EAAAC,OAAS,6EACT,EAAAC,QAAU,8EACV,EAAAC,QAAU,8EALzB,CAAiB5E,QAAM,KEGhB,IAAM6E,GAA2B,CACtCC,WAAY9E,GAAOyE,OACnBM,WAAY/E,GAAO0E,OACnBM,YAAahF,GAAO2E,QACpBM,YAAajF,GAAO4E,QAEpBM,eAAgB,MAChBC,eAAgB,MAChBC,eAAgB,OCFZ,SAAUC,GAASC,GACvB,EAAWpY,cAAcc,WAAW,cAAciF,GAAqBvD,IAAmB4V,GAAW,KAAK,GCL5G,ICAIC,GDIEC,GAAoB,gBAAgB1O,GAAmBqD,aAAY,IAGnEsL,GAAoB,CACxBC,GAAI3O,GAAsB6C,OAC1BvtB,GAAI0qB,GAAsB8C,SAC1B8L,GAAI5O,GAAsB+C,aAC1Bt7F,GAAIu4F,GAAsBgD,MAC1B6L,GAAI7O,GAAsB+C,aAC1B16B,GAAI23B,GAAsBiD,OAC1BnkB,GAAIkhB,GAAsB0D,MAC1Bz/B,GAAI+7B,GAAsB+C,aAC1B+L,GAAI9O,GAAsB+C,aAC1B/qF,GAAIgoF,GAAsB2D,SAC1B5b,GAAIiY,GAAsB+C,aAC1B5qF,GAAI6nF,GAAsB4D,OAC1BmL,GAAI/O,GAAsB+C,aAC1BiM,GAAIhP,GAAsB+C,aAC1BkM,GAAIjP,GAAsB+C,aAC1B7qF,GAAI8nF,GAAsB8C,SAC1BoM,GAAIlP,GAAsB+C,aAC1B,UAAW/C,GAAsB+C,aACjCvnB,GAAIwkB,GAAsBkD,KAC1BnrF,GAAIioF,GAAsB+C,aAC1BoM,GAAInP,GAAsB8C,SAC1BziB,GAAI2f,GAAsBmD,WAC1B,UAAWnD,GAAsBwD,kBACjC,UAAWxD,GAAsByD,mBACjC2L,GAAIpP,GAAsBsD,SAC1BnvC,GAAI6rC,GAAsBuD,UAsB5B,SAAS8L,GAAYpvE,EAAcqvE,EAAqB/9G,GACtD,MAAO,CACLA,WAAYA,EACZT,oBAAqB,YACrBC,oBAAqB,cACrBS,SAAUyuC,EACVtuC,WAAY29G,GExDV,SAAUC,GAAYzJ,GAC1B,IAAIF,IAA8B,qBAAbpmH,SAArB,CAGE,IAAMioB,EAAKq+F,EAEX,OAAOr+F,GAAMA,EAAG0rC,cAAgB1rC,EAAG0rC,cAAgB3zD,UCVjD,SAAU,GAAQ9X,GACtB,IAAI8oC,EAAS,KACb,IACE,IAAM21F,EAAMx4D,KACZn9B,EAAS21F,EAAMA,EAAIqJ,eAAeC,QAAQ/nI,GAAO,KACjD,MAAOwN,KAGT,OAAOs7B,EAQH,SAAU,GAAQ9oC,EAAamb,G,MACnC,IACa,QAAX,EAAA8qD,YAAW,SAAE6hE,eAAeE,QAAQhoI,EAAKmb,GACzC,MAAO3N,MCjBX,IAGay6H,GJ2DP,SAA2BC,GAC/B,IACMC,EAvBR,SAAiC1wH,GAC/B,IAAK,IAAMtB,KAAQ6wH,GACjB,GAAIA,GAAkB1mI,eAAe6V,IAASsB,GAAuC,IAA3BtB,EAAKjF,QAAQuG,GAErE,OAAQuvH,GAA0B7wH,GAItC,OAAO4wH,GAceqB,CAAwBF,GA7BpCr+G,0FAgDV,MAhBmB,CACjBw+G,KAAMV,GAAYpP,GAAUuE,KAAMtE,GAAYqF,QAASsK,GACvDpL,OAAQ4K,GAAYpP,GAAUwE,OAAQvE,GAAYqF,QAASsK,GAC3DnL,MAAO2K,GAAYpP,GAAUyE,MAAOxE,GAAYqF,QAASsK,GACzDlL,UAAW0K,GAAYpP,GAAU0E,UAAWzE,GAAYqF,QAASsK,GACjEjL,OAAQyK,GAAYpP,GAAU2E,OAAQ1E,GAAYqF,QAASsK,GAC3DhL,WAAYwK,GAAYpP,GAAU4E,WAAY3E,GAAYqF,QAASsK,GACnE/K,MAAOuK,GAAYpP,GAAU6E,MAAO5E,GAAYqF,QAASsK,GACzD9K,OAAQsK,GAAYpP,GAAU8E,OAAQ7E,GAAYsF,SAAUqK,GAC5D7K,WAAYqK,GAAYpP,GAAU+E,WAAY9E,GAAYsF,SAAUqK,GACpE5K,QAASoK,GAAYpP,GAAUgF,QAAS/E,GAAYsF,SAAUqK,GAC9D3K,YAAamK,GAAYpP,GAAUiF,YAAahF,GAAYsF,SAAUqK,GACtE1K,WAAYkK,GAAYpP,GAAUkF,WAAYjF,GAAYsF,SAAUqK,GACpEzK,KAAMiK,GAAYpP,GAAUmF,KAAMlF,GAAYsF,SAAUqK,II5EdG,CHGxC,SACJC,GAEA,QAFA,IAAAA,MAAA,qBAEkBv7H,IAAd85H,GAAyB,CAC3B,IAAIrV,EAAMoW,KACJW,EACgB,iBAApBD,EIdA,SAAkBvoI,GACtB,IAAI8oC,EAAS,KACb,IACE,IAAM21F,EAAMx4D,KACZn9B,EAAS21F,EAAMA,EAAIgK,aAAaV,QAAQ/nI,GAAO,KAC/C,MAAOwN,KAGT,OAAOs7B,EJOC,CAdU,YAeU,mBAApBy/F,EACA,GAhBU,iBAiBVv7H,EAEFw7H,IACF1B,GAAY0B,QAGIx7H,IAAd85H,IAA2BrV,IAC7BqV,GAAYrV,EAAIxsD,gBAAgBjkD,aAAa,cAG7BhU,IAAd85H,KACFA,GAAY,MAIhB,OAAOA,GG5BsD3vH,CAAY,mBAE3E,SAASuxH,GAAkB7+G,EAAoBu4E,EAAan4E,EAA0B0+G,GAKpF/B,GAAS,CACP/8G,WALFA,EAAa,IAAIA,EAAU,IAMzB9R,UAJqC/K,IAAlB27H,EAA8B,UAAUA,EAAa,MAAQ,IAI5D,QAAQvmC,EAAvBwmC,iCAAgExmC,EAAG,yBACxEn4E,WAAU,EACVF,UAAW,SACX8+G,YAAa,SAIjB,SAASC,GACPC,EACAl/G,EACAm/G,EACAC,EACAN,QADA,IAAAM,MAAA,WAGA,IAAMC,EAAaH,EAAO,IAAIC,EAAS,IAAIC,EAE3CP,GAAkB7+G,EAAYq/G,EAAU,SAAU1Q,GAAYmF,MAAOgL,GAAiBA,EAAgB,UACtGD,GACE7+G,EACAq/G,EAAU,aACV1Q,GAAYoF,UACZ+K,GAAiBA,EAAgB,cAEnCD,GAAkB7+G,EAAYq/G,EAAU,WAAY1Q,GAAYqF,QAAS8K,GACzED,GACE7+G,EACAq/G,EAAU,YACV1Q,GAAYsF,SACZ6K,GAAiBA,EAAgB,aAEnCD,GAAkB7+G,EAAYq/G,EAAU,QAAS1Q,GAAYuF,KAAM4K,GAAiBA,EAAgB,SE7ChG,SAAU1kI,GAAcV,G,IAAoB,wDAChD,IAAkB,UAAAgL,EAAA,eAAM,CAAnB,IAAMP,EAAG,KACZm7H,GAAO5lI,GAAU,GAAIyK,GAGvB,OAAOzK,EAUT,SAAS4lI,GAAyB5lI,EAAWG,EAAW0lI,GAGtD,IAAK,IAAI,UAH6C,IAAAA,MAAA,IACtDA,EAAmB9nI,KAAKoC,GAEPA,EACf,GAAIA,EAAOpD,eAAe,IACX,cAAT,GAAiC,gBAAT,GAAmC,cAAT,EAAsB,CAC1E,IAAMZ,EAAqCgE,EAAO,GAClD,GAAqB,kBAAVhE,GAAgC,OAAVA,GAAmByB,MAAMW,QAAQpC,GAMhE6D,EAAO,GAAQ7D,MANyD,CACxE,IAAM2pI,EAAsBD,EAAmBl4H,QAAQxR,IAAU,EACjE6D,EAAO,GAAS8lI,EACZ3pI,EACAypI,GAAO5lI,EAAO,IAAS,GAAI7D,EAAO0pI,IAU9C,OAFAA,EAAmB/qG,MAEZ96B,ECnCH,SAAU+lI,GACd/oI,EACAiN,EACAhN,EACAipC,EACA8/F,GAiCA,YAjCA,IAAAA,OAAA,GAmNF,SAA6B/oI,EAAoB+oI,GAE/C,IAAIC,EAAM,IACU,IAAhBD,IACFC,EAAM,sBAUR,OANAhpI,EAAEipI,cAAgBjpI,EAAEkpI,SAAWF,EAC/BhpI,EAAEmpI,2BAA6BH,EAC/BhpI,EAAEopI,kBAAoBJ,EACtBhpI,EAAEqpI,YAAcrpI,EAAEspI,YAAcN,EAChChpI,EAAEupI,aAAeP,EAEVhpI,EAhMAwpI,CADoBC,GAAmC1pI,EAAGiN,EA9B7C,GAClB08H,oBAAqB,cAErBC,UAAY1gG,EAAyB,UAAZ,UAEzBqgG,YAAcrgG,EAAyB,UAAZ,UAC3B2gG,YAAc3gG,EAAyB,UAAZ,UAC3B4gG,mBAAqB5gG,EAAyB,UAAZ,UAElC6gG,SAAW7gG,EAAyB,UAAZ,UACxB8gG,UAAY9gG,EAAyB,UAAZ,UACzB+gG,aAAe/gG,EAAyB,UAAZ,UAC5BghG,YAAchhG,EAAyB,UAAZ,UAC3BihG,kBAAoBjhG,EAAyB,UAAZ,UACjCkhG,YAAclhG,EAAyB,UAAZ,UAE3BmhG,eAAiBnhG,EAAyB,UAAZ,UAC9BohG,gBAAkBphG,EAAyB,UAAZ,UAC/BqhG,mBAAqBrhG,EAAyB,UAAZ,UAClCshG,kBAAoBthG,EAAyB,UAAZ,UACjCuhG,wBAA0BvhG,EAAyB,UAAZ,UACvCwhG,kBAAoBxhG,EAAyB,UAAZ,UAGjCmgG,iBAAmBngG,EAAyB,UAAZ,UAChCsgG,YAActgG,EAAyB,UAAZ,WAExBjpC,GAG+EipC,GACrC8/F,GAM3C,SAAUU,GACd1pI,EACAiN,EACAhN,EACAipC,EACA8/F,G,eAAA,IAAAA,OAAA,GAEA,IAAIzgG,EAAmC,GAGjC,QACJu7F,EAAA,EAAAA,MACAf,EAAA,EAAAA,MACAN,EAAA,EAAAA,aACAF,EAAA,EAAAA,UACAD,EAAA,EAAAA,YACAE,EAAA,EAAAA,aACAK,EAAA,EAAAA,aACAa,EAAA,EAAAA,aACAC,EAAA,EAAAA,eACAV,EAAA,EAAAA,YACAO,EAAA,EAAAA,kBACAC,EAAA,EAAAA,qBACAP,EAAA,EAAAA,eACAE,EAAA,EAAAA,iBACAC,EAAA,EAAAA,oBACAC,EAAA,EAAAA,gBACAC,EAAA,EAAAA,mBACAK,EAAA,EAAAA,kBACAC,EAAA,EAAAA,OA4IF,OAzIIC,IACFv7F,EAAOoiG,eAAiB7G,EACxBv7F,EAAOqiG,oBAAsB9G,EAC7Bv7F,EAAOsiG,iBAAmB/G,EAC1Bv7F,EAAOuiG,iBAAmBhH,EAC1Bv7F,EAAOwiG,kBAAoBjH,EAC3Bv7F,EAAOyiG,yBAA2BlH,EAClCv7F,EAAO0iG,yBAA2BnH,EAClCv7F,EAAO2iG,gBAAkBpH,EACzBv7F,EAAO4iG,uBAAyBrH,EAChCv7F,EAAO6iG,eAAiBtH,EACxBv7F,EAAO8iG,eAAiBvH,EACxBv7F,EAAO+iG,uBAAyBxH,GAE9Bf,IACFx6F,EAAOgjG,gBAAkBxI,EACzBx6F,EAAOijG,yBAA2BzI,GAEhCN,IACFl6F,EAAO4zD,KAAOsmC,EACdl6F,EAAOkjG,wBAA0BhJ,EACjCl6F,EAAOmjG,uBAAyBjJ,EAChCl6F,EAAOojG,UAAYlJ,EACnBl6F,EAAOqjG,oBAAsBnJ,EAC7Bl6F,EAAOsjG,SAAWpJ,EAClBl6F,EAAOujG,WAAarJ,EACpBl6F,EAAOwjG,uBAAyBtJ,GAE9BF,IACFh6F,EAAOyjG,+BAAiCzJ,EACxCh6F,EAAO0jG,8BAAgC1J,EACvCh6F,EAAO2jG,iBAAmB3J,GAExBD,IACF/5F,EAAO4jG,YAAc7J,GAEnBE,IACFj6F,EAAO6jG,+BAAiC5J,GAEtCK,IACFt6F,EAAO8jG,kCAAoCxJ,GAEzCa,IACFn7F,EAAO+jG,sBAAwB5I,EAC/Bn7F,EAAOgkG,iBAAmB7I,EAC1Bn7F,EAAOikG,YAAc9I,EACrBn7F,EAAOkkG,cAAgB/I,EACvBn7F,EAAOmkG,+BAAiChJ,EACxCn7F,EAAOokG,wBAA0BjJ,EACjCn7F,EAAOqkG,0BAA4BlJ,EACnCn7F,EAAOskG,4BAA8BnJ,EACrCn7F,EAAOukG,0BAA4BpJ,EAEnCn7F,EAAO6gG,0BAA4B1F,GAEjCC,IACFp7F,EAAOwkG,sBAAwBpJ,EAC/Bp7F,EAAOykG,wBAA0BrJ,EACjCp7F,EAAO0kG,yBAA2BtJ,EAClCp7F,EAAO2kG,qBAAuBvJ,EAC9Bp7F,EAAO4kG,gCAAkCxJ,EACzCp7F,EAAO6kG,mBAAqBzJ,EAC5Bp7F,EAAO8kG,0BAA4B1J,EACnCp7F,EAAO+kG,4BAA8B3J,EACrCp7F,EAAOglG,0BAA4B5J,GAEjCH,IACFj7F,EAAOilG,0BAA4BhK,EACnCj7F,EAAOklG,gBAAkBjK,GAEvBC,IACFl7F,EAAOmlG,iCAAmCjK,GAExCH,IACF/6F,EAAOolG,iBAAmBrK,EAC1B/6F,EAAOqlG,sBAAwB,QAAD,EAAA3tI,SAAC,eAAE2tI,uBAAwBtK,EACzD/6F,EAAOslG,mBAAqBvK,EAC5B/6F,EAAOulG,kBAAoBxK,EAC3B/6F,EAAOwlG,aAAezK,GAEpBJ,IACF36F,EAAOylG,SAAW9K,EAClB36F,EAAO0lG,WAAa/K,EACpB36F,EAAO2lG,WAAahL,EACpB36F,EAAO4lG,mBAAqBjL,EAC5B36F,EAAO6lG,UAAYlL,EACnB36F,EAAO4gG,SAAWjG,EAClB36F,EAAO8lG,aAAenL,GAEpBU,IACFr7F,EAAO+lG,uBAAyB1K,EAChCr7F,EAAOgmG,uBAAyB3K,GAE9BX,IACF16F,EAAOimG,kBAAoBvL,EAC3B16F,EAAOkmG,kBAAoBxL,EAC3B16F,EAAOmmG,kBAAoBzL,EAC3B16F,EAAOomG,kBAAoB1L,EAC3B16F,EAAOqmG,iBAAmB3L,EAC1B16F,EAAOsmG,oBAAsB5L,GAE3BG,IACF76F,EAAOumG,YAAc1L,EACrB76F,EAAOwmG,YAAc3L,EACrB76F,EAAOymG,YAAc5L,EACrB76F,EAAO0mG,iBAAmB7L,EAC1B76F,EAAO2mG,qBAAuB9L,GAE5BC,IACF96F,EAAO4mG,aAAe9L,GAEpBE,IACFh7F,EAAO6mG,oBAAsB7L,EAC7Bh7F,EAAO8mG,eAAiB9L,EACxBh7F,EAAO+mG,wBAA0B/L,EACjCh7F,EAAOgnG,YAAchM,GAEnBM,IACFt7F,EAAOwjG,uBAAyBlI,IAI7B,QAAL,EAAI52H,SAAC,eAAE64H,cACLv9F,EAAOinG,WAAaviI,EAAE64H,aAEnB58F,IAAe,QAAL,EAAIj8B,SAAC,eAAE84H,YACpBx9F,EAAOknG,kBAAoBxiI,EAAE84H,WACpBx9F,EAAOqlG,uBAChBrlG,EAAOknG,kBAAoB,WAAalnG,EAAOqlG,sBAGjDrlG,EAAS,EAAH,KACDA,GAEAtoC,IHnKD,SAAmCuoI,GACvC,GAAIA,EAAS,CACX,IAAMkH,EAAalH,EAAO,SAG1BD,GAAqBmH,EAAS5X,GAAmBmD,KAAM,oBAAqB,gBAC5EsN,GAAqBmH,EAAS5X,GAAmB8C,OAAQ,kBACzD2N,GAAqBmH,EAAS5X,GAAmB+C,SAAU,oBAC3D0N,GAAqBmH,EAAS5X,GAAmBgD,aAAc,wBAC/DyN,GAAqBmH,EAAS5X,GAAmBiD,MAAO,iBACxDwN,GAAqBmH,EAAS5X,GAAmBkD,OAAQ,kBACzDuN,GAAqBmH,EAAS5X,GAAmBoD,WAAY,sBAC7DqN,GAAqBmH,EAAS5X,GAAmBqD,aAAc,uBAAwB,UAAW,YAClGoN,GAAqBmH,EAAS3X,GAAsBqD,QAAS,UAAW,WACxEmN,GAAqBmH,EAAS5X,GAAmBuD,SAAU,oBAC3DkN,GAAqBmH,EAAS5X,GAAmBwD,SAAU,oBAI3D6M,GAAkB,oBAAwBuH,EAAO,4CAA6CzX,GAAYmF,OAI1G+K,GAAkB,oBAAwBuH,EAAO,uCAAwCzX,GAAYsF,WAiBzGoS,CAVA,W,UAIE,OAAgC,QAAhC,EAAmB,QAAnB,EAFoE,QAAlD,EAA+BjqE,YAAmB,eAAE2oD,oBAEnD,eAAEuhB,mBAAW,QA/EX,2DAqFEC,II3FlB,IAAMC,GAA2B,CACtCC,GAAI,MACJC,GAAI,MACJ1xI,EAAG,OACH2xI,GAAI,OACJC,GAAI,QCMA,SAAUC,GAAYx0F,EAA0BqtF,QAA1B,IAAArtF,MAAA,SAA0B,IAAAqtF,OAAA,GACpD,IAAM9/F,IAAeyS,EAAMzS,WAY3B,OCnBI,SAAsByS,EAAcy0F,G,iBAAA,IAAAA,MAAA,IACxC,IAAMC,EAAc3sI,GAA4B,GAAIi4C,EAAOy0F,EAAc,CACvEE,eAAgB5G,GACd0G,EAAaG,QACbH,EAAalhC,QACbkhC,EAAaE,oBACe7jI,IAA5B2jI,EAAalnG,WAA2ByS,EAAMzS,WAAaknG,EAAalnG,cAQ5E,IAJwB,QAApB,EAAAknG,EAAaG,eAAO,eAAE9N,iBAAqC,QAArB,EAAC2N,EAAaG,eAAO,eAAE1M,UAC/DwM,EAAYE,QAAQ1M,OAASuM,EAAaG,QAAQ9N,cAGhD2N,EAAaI,iBACf,IAAwB,UAAA5xI,OAAO6C,KAAK4uI,EAAYI,OAAxB,eAAyD,CAA5E,IAAMjnH,EAAS,KAClB6mH,EAAYI,MAAMjnH,GAAa9lB,GAC7B2sI,EAAYI,MAAMjnH,GAClB4mH,EAAaI,iBACM,QADU,EACjB,QADiB,EAC7BJ,SAAY,eAAEK,aAAK,eAAGjnH,IAS5B,OAJI4mH,EAAaM,cACfL,EAAYK,aAAe/0F,EAAM+0F,aAAe,IAAIzlI,OAAOmlI,EAAaM,cAGnEL,EDTAM,CAXkB,CACvBJ,QAASlO,GACTnzB,QAAS22B,GACT4K,MAAO/I,GACPkJ,QAASd,GACT5mG,WAAU,EACVm3F,yBAAyB,EACzBiQ,eAAgBvH,GAAmB1G,GAAgBwD,QAAgBp5H,EAAWy8B,EAAY8/F,GAC1FrY,SAAKlkH,GAGuBkvC,GElBhC,IAAIk1F,GAAiBV,GAAY,IAC7BW,GAA0D,GAIxD,SAAUC,K,cAER7S,EAAWx4D,MAEI,QAArB,EAAO,QAAP,EAAIw4D,SAAG,eAAE7P,oBAAY,eAAE2iB,aAuDnB,SAAoBr1F,EAAsBqtF,G,WAAA,IAAAA,OAAA,GAC9C6H,GAASV,GAAYx0F,EAAOqtF,GAG5B,aAAgB,EAAD,SAAM6H,GAAON,SAAYM,GAAOP,gBAAmBO,GAAO3hC,SAmB3E,SAAoBvzD,GAGlB,IAFA,IAAM95B,EAAmC,GAElB,MAAAjjB,OAAO6C,KAAKk6C,EAAM80F,OAAlB,eAGrB,IAHG,IAAMQ,EAAQ,KACX3K,EAAkB3qF,EAAM80F,MAAMQ,GAEb,MAAAryI,OAAO6C,KAAK6kI,GAAZ,eAAmB,CAArC,IAAMpd,EAAQ,KACX,EAAe+nB,EAAW/nB,EAASpxD,OAAO,GAAG62B,cAAgBu6B,EAASloH,MAAM,GAC9E7B,EAAQmnI,EAAKpd,GAEA,aAAbA,GAA4C,kBAAV/pH,IAEpCA,GAAgB,MAElB0iB,EAAM,GAAQ1iB,EAGlB,OAAO0iB,EApC8EqvH,CAAWL,MAEhG,GAAetP,gBAAa,MAAG,MAAoBsP,GAAM,IAEzDC,GAAwB1tI,SAAQ,SAAC6V,GAC/B,IACEA,EAAS43H,IACT,MAAO5jI,SAhETkkI,CAAUjT,EAAI7P,aAAa2iB,aACjB,GAAepP,YAAY,CATT,UAS6BjmF,SACpC,QAArB,EAAO,QAAP,EAAIuiF,SAAG,eAAE7P,oBAAY,eAAE1yE,SACrBk1F,GAASV,GAAYjS,EAAI7P,aAAa1yE,QAIxC,GAAe4lF,gBAAa,MAAG,MAAoBsP,GAAM,KAUvD,SAAUO,GAASpI,GAIvB,YAJuB,IAAAA,OAAA,IACH,IAAhBA,IACF6H,GAASV,GAAY,GAAInH,IAEpB6H,GAVTE,KC1BO,IAAMM,GAAuB,CAClCC,UAAW,OACXpoH,OAAQ,EACRtD,QAAS,EACTwC,UAAW,cCDP,SAAUmpH,GAAqBrqH,GACnC,MAAO,CACLwsG,UAAW,CACT,gBAAiBxsG,EACjB,yBAA0BA,EAC1B,0BAA2BA,ICA3B,SAAU/E,GAAKjE,GAGRlZ,SAAWA,QAAQmd,MAC5Bnd,QAAQmd,KAAKjE,GCyCjB,IAEMszH,GAAgBlQ,GAAex5F,SAFX,QAEqD,CAC7E2pG,UAAW,CACTC,iBAAiB,EACjBC,oBAAoB,GAEtBC,WAAY,KAIR,GAAa,EAAW1jB,cAE1B,IAAc,GAAWO,SAC3B,GAAWA,SAAQ,WACjB,IAAK,IAAM,KAAQ+iB,GACbA,GAAczxI,eAAe,IAAYyxI,GAAc,GAAsBK,SAC9EL,GAAc,GAAsBK,OAAO/6H,eAAYrK,MAahE,IAAMqlI,GAAoB,SAACrzI,GAAyB,OAAAA,EAAA,eAO9C,SAAUszI,GAAcC,EAAyBpnI,GACrD,IAAIinI,EAAS,EAAH,KACLG,GAAU,CACbC,cAAc,EACdn7H,eAAWrK,IAEPylI,EAAA,EAAAA,MAKN,IAAK,IAAMC,KAFXvnI,EAAUA,EAAS,OAAM4mI,GAAcC,WAAc7mI,GAAY4mI,GAAcC,UAExDS,EACrB,GAAIA,EAAMnyI,eAAeoyI,GAAW,CAClC,IAAMtjI,EAAOqjI,EAAMC,GACbC,EAAqBN,GAAkBK,GAEzCX,GAAcY,GAChBC,GAAmBF,GAEnBX,GAAcY,GAAsB,CAClCvjI,KAAI,EACJgjI,OAAM,IA2CV,SAAUS,GAAkBH,EAAkBI,GAClDf,GAAcI,WAAWE,GAAkBK,IAAaL,GAAkBS,GA6D5E,IAAIC,GAA0B,GAC1BC,QAAyChmI,EAE7C,SAAS4lI,GAAmBF,GAC1B,IAAMvnI,EAAU4mI,GAAcC,UAIzB7mI,EAAQ8mI,kBACXc,GAAczxI,KAAKoxI,QACQ1lI,IAAvBgmI,KACFA,GAAqB/zH,YAAW,WAC9ByD,GACE,0LAGEqwH,GAAcxxI,MAAM,EAVJ,IAU0BoO,KAAK,OAC9CojI,GAActvI,OAXC,GAW4B,QAAOsvI,GAActvI,OAXjD,IAW2E,SAAW,KAE1GuvI,QAAqBhmI,EACrB+lI,GAAgB,KAfD,OCrHjB,SAAUE,K,IAAgB,sDAC9B,GAAIC,GAAkC,IAArBA,EAAUzvI,QAAgByvI,EAAU,KAAQA,EAAU,GAAiBC,mBACtF,OAAOD,EAAU,GAQnB,IALA,IAAME,EAAwC,GAGxCC,EAAwF,GAErE,MAAAH,EAAA,eAAW,CAA/B,IAAMI,EAAU,KACnB,GAAIA,EACF,IAAK,IAAM97G,KAAQ87G,EACjB,GAAIA,EAAWhzI,eAAek3B,GAAO,CACnC,GAAa,uBAATA,QAAmExqB,IAAlCsmI,EAAWH,mBAAkC,CAGhF,IAAMI,EAAyBD,EAAWH,mBAC1C,IAAK,IAAMK,KAAeD,EACpBA,EAAuBjzI,eAAekzI,KACpCH,EAA0B/yI,eAAekzI,GAC3CH,EAA0BG,GAAalyI,KAAKiyI,EAAuBC,IAEnEH,EAA0BG,GAAe,CAACD,EAAuBC,KAKvE,SAKF,IAAMC,EAAuBL,EAAkB57G,GACzCk8G,EAAgBJ,EAAmB97G,GAGtC47G,EAAkB57G,QADDxqB,IAAhBymI,EACyBC,EAEH,EAElBvyI,MAAMW,QAAQ2xI,GAAeA,EAAc,CAACA,GAC5CtyI,MAAMW,QAAQ4xI,GAAgBA,EAAe,CAACA,KAQ9D,GAAIv0I,OAAO6C,KAAKqxI,GAA2B5vI,OAAS,EAAG,CACrD2vI,EAAUD,mBAAqB,GAC/B,IAAMQ,EAAkBP,EAAUD,mB,WAGvBK,GACT,GAAIH,EAA0B/yI,eAAekzI,GAAc,CACzD,IAAM,EAAaH,EAA0BG,GAC7CG,EAAgBH,GAAe,SAACI,GAC9B,OAAOX,GAAe,aACjB,EAAWxnI,KAAI,SAACooI,GACjB,MAAiC,oBAA1BA,EAAuCA,EAAsBD,GAAcC,SAN5F,IAAK,IAAML,KAAeH,E,EAAfG,GAcb,OAAOJ,ECvKH,SAAUU,GACdF,G,IACA,wDAGA,IADA,IAAM9qG,EAAmC,GACpB,MAAAirG,EAAA,eAAW,CAA3B,IAAMtsH,EAAM,KACXA,GACFqhB,EAAOxnC,KAAuB,oBAAXmmB,EAAwBA,EAAOmsH,GAAcnsH,GAGpE,OAAsB,IAAlBqhB,EAAOrlC,OACFqlC,EAAO,GACLA,EAAOrlC,OAKTwvI,GAAe,aAAKnqG,GAGtB,GC2DH,SAAUkrG,K,IAAe,sDAC7B,OAAOC,GAAaf,EAAkBjiB,KA6FlC,SAAUgjB,GACdf,EACA/nI,G,QAEM+oI,EAAwC,CAAEf,mBAAoB,IAIpE,IAFiBD,EAAU,IAEVA,EAAUzvI,QAAU,EACnC,MAAO,CAAE0vI,mBAAoB,IAG/B,IAAMgB,EAAuBlB,GAAe,aAAIC,GAE1CkB,EAAgB,GAEtB,IAAK,IAAMC,KAAgBF,EACzB,GAAIA,EAAqB7zI,eAAe+zI,GAAe,CACrD,GAAqB,uBAAjBA,EAAuC,CACzCH,EAAaf,mBAAsBgB,EAAoDhB,oBAAsB,GAC7G,SAGF,IAEM,IAFkBgB,EAA6BE,IAE7Ch2H,EAAA,EAAAA,QAASoyG,EAAA,EAAAA,QAEjB,GAAW,QAAX,EAAIA,SAAO,eAAEhtH,QACLmxH,EAAeD,GAAoBxpH,GAAW,GAAI,CAAExF,YAAa0uI,GAAgB5jB,MAGrF2jB,EAAc9yI,KAAKszH,GACnBsf,EAAaG,GAAgBh2H,EAAQ7S,OAAO,CAACopH,EAAav9G,YAAY1H,KAAK,WAG7EukI,EAAaG,GAAgBh2H,EAAQ1O,KAAK,KAKhD,IAA2B,UAAAykI,EAAA,eAAe,CAArC,IAAMxf,KAAY,OAEnBE,GAAkBF,EAAqB,QAAT,EAAEzpH,SAAO,eAAE4pH,uBAI7C,OAAOmf,E,aCjOH,SAAUI,GAAgBvL,EAAsB59H,QAAtB,IAAA49H,MAAA,IA0E9BuJ,GAzE4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,oBACZ9R,IAAK,QAAQgxH,EAAO,+CAEtB0J,MAAO,CACL+B,gBAAiB,SACjBC,YAAa,SACbC,UAAW,SACXC,KAAM,SACNC,IAAK,SACLC,OAAQ,SACRC,KAAM,SACNC,SAAU,SACVC,KAAM,SACNr8D,OAAQ,SACRluE,OAAQ,SACRwqI,MAAO,SACPC,YAAa,SACbC,aAAc,SACdC,iBAAkB,SAClBC,UAAW,SACXC,OAAQ,SACRC,YAAa,SACbC,aAAc,SACdC,SAAU,SACVC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,WAAY,SACZC,UAAW,SACXC,IAAK,SACLC,UAAW,SACXptI,KAAM,SACNqtI,UAAW,SACXC,KAAM,SACNC,WAAY,SACZC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,OAAQ,SACRC,SAAU,SACVC,SAAU,SACVC,UAAW,SACXC,WAAY,SACZC,WAAY,SACZC,WAAY,SACZC,YAAa,SACbC,KAAM,SACNC,sBAAuB,SACvBC,aAAc,WAII1sI,GCtElB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,SAAY,SACZ,aAAgB,SAChB,mBAAsB,SACtB,aAAgB,SAChB,oBAAuB,SACvB,sBAAyB,SACzB,kBAAqB,SACrB,mBAAsB,SACtB,4BAA+B,SAC/B,SAAY,SACZ,eAAkB,SAClB,YAAe,SACf,iBAAoB,SACpB,cAAiB,SACjB,iBAAoB,SACpB,kBAAqB,SACrB,sBAAyB,SACzB,mBAAsB,SACtB,WAAc,SACd,cAAiB,SACjB,QAAW,SACX,oBAAuB,SACvB,cAAiB,SACjB,WAAc,SACd,YAAe,SACf,gBAAmB,SACnB,gBAAmB,SACnB,WAAc,SACd,OAAU,SACV,SAAY,SACZ,OAAU,SACV,UAAa,SACb,MAAS,SACT,OAAU,SACV,MAAS,SACT,IAAO,SACP,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,QAAW,SACX,KAAQ,SACR,QAAW,SACX,WAAc,SACd,OAAU,SACV,OAAU,SACV,KAAQ,SACR,aAAgB,SAChB,UAAa,SACb,QAAW,SACX,KAAQ,SACR,QAAW,SACX,KAAQ,SACR,aAAgB,SAChB,IAAO,SACP,SAAY,SACZ,QAAW,SACX,YAAe,SACf,QAAW,SACX,OAAU,SACV,SAAY,SACZ,kBAAqB,SACrB,aAAgB,SAChB,sBAAyB,SACzB,0BAA6B,SAC7B,aAAgB,SAChB,WAAc,SACd,MAAS,SACT,GAAM,SACN,KAAQ,SACR,IAAO,SACP,KAAQ,SACR,UAAa,SACb,MAAS,SACT,WAAc,SACd,cAAiB,SACjB,IAAO,SACP,WAAc,SACd,QAAW,SACX,UAAa,SACb,YAAe,SACf,QAAW,SACX,SAAY,SACZ,UAAa,SACb,YAAe,SACf,gBAAmB,SACnB,KAAQ,SACR,MAAS,SACT,WAAc,SACd,OAAU,SACV,qBAAwB,SACxB,OAAU,SACV,YAAe,SACf,cAAiB,SACjB,MAAS,SACT,aAAgB,SAChB,YAAe,SACf,MAAS,SACT,QAAW,SACX,KAAQ,SACR,aAAgB,WAIEtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,MAAS,SACT,YAAe,SACf,MAAS,SACT,mBAAsB,SACtB,OAAU,SACV,UAAa,SACb,KAAQ,SACR,cAAiB,SACjB,eAAkB,SAClB,MAAS,SACT,OAAU,SACV,MAAS,SACT,QAAW,SACX,YAAe,SACf,SAAY,SACZ,KAAQ,SACR,KAAQ,SACR,gBAAmB,SACnB,MAAS,SACT,OAAU,SACV,cAAiB,SACjB,UAAa,SACb,OAAU,SACV,aAAgB,SAChB,cAAiB,SACjB,QAAW,SACX,aAAgB,SAChB,QAAW,SACX,UAAa,SACb,UAAa,SACb,aAAgB,SAChB,MAAS,SACT,KAAQ,SACR,aAAgB,SAChB,MAAS,SACT,UAAa,SACb,MAAS,SACT,UAAa,SACb,YAAe,SACf,IAAO,SACP,MAAS,SACT,UAAa,SACb,SAAY,SACZ,KAAQ,SACR,iBAAoB,SACpB,gBAAmB,SACnB,eAAkB,SAClB,aAAgB,SAChB,wBAA2B,SAC3B,IAAO,SACP,IAAO,SACP,SAAY,SACZ,MAAS,SACT,eAAkB,SAClB,KAAQ,SACR,iBAAoB,SACpB,gBAAmB,SACnB,iBAAoB,SACpB,MAAS,SACT,cAAiB,SACjB,YAAe,SACf,WAAc,SACd,QAAW,SACX,SAAY,SACZ,UAAa,SACb,aAAgB,SAChB,KAAQ,SACR,OAAU,SACV,MAAS,SACT,KAAQ,SACR,YAAe,SACf,WAAc,SACd,WAAc,SACd,WAAc,SACd,WAAc,SACd,aAAgB,SAChB,IAAO,SACP,SAAY,SACZ,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,MAAS,SACT,YAAe,SACf,UAAa,SACb,SAAY,SACZ,YAAe,SACf,OAAU,SACV,UAAa,SACb,SAAY,SACZ,kBAAqB,SACrB,gBAAmB,SACnB,SAAY,SACZ,QAAW,SACX,OAAU,SACV,OAAU,SACV,GAAM,SACN,OAAU,SACV,UAAa,SACb,YAAe,SACf,OAAU,WAIQtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,QAAW,SACX,YAAe,SACf,YAAe,SACf,QAAW,SACX,YAAe,SACf,aAAgB,SAChB,aAAgB,SAChB,KAAQ,SACR,IAAO,SACP,YAAe,SACf,KAAQ,SACR,UAAa,SACb,UAAa,SACb,UAAa,SACb,KAAQ,SACR,UAAa,SACb,WAAc,SACd,YAAe,SACf,eAAkB,SAClB,WAAc,SACd,OAAU,SACV,UAAa,SACb,KAAQ,SACR,aAAgB,SAChB,QAAW,SACX,KAAQ,SACR,YAAe,SACf,SAAY,SACZ,eAAkB,SAClB,aAAgB,SAChB,aAAgB,SAChB,SAAY,SACZ,UAAa,SACb,UAAa,SACb,UAAa,SACb,WAAc,SACd,QAAW,SACX,WAAc,SACd,UAAa,SACb,cAAiB,SACjB,aAAgB,SAChB,WAAc,SACd,aAAgB,SAChB,OAAU,SACV,aAAgB,SAChB,QAAW,SACX,KAAQ,SACR,KAAQ,SACR,MAAS,SACT,MAAS,SACT,QAAW,SACX,SAAY,SACZ,UAAa,SACb,OAAU,SACV,SAAY,SACZ,OAAU,SACV,YAAe,SACf,UAAa,SACb,MAAS,SACT,WAAc,SACd,WAAc,SACd,MAAS,SACT,aAAgB,SAChB,SAAY,SACZ,MAAS,SACT,eAAkB,SAClB,aAAgB,SAChB,eAAkB,SAClB,cAAiB,SACjB,WAAc,SACd,YAAe,SACf,YAAe,SACf,iBAAoB,SACpB,UAAa,SACb,MAAS,SACT,UAAa,SACb,QAAW,SACX,UAAa,SACb,WAAc,SACd,WAAc,SACd,aAAgB,SAChB,UAAa,SACb,kBAAqB,SACrB,aAAgB,SAChB,UAAa,SACb,KAAQ,SACR,cAAiB,SACjB,mBAAsB,SACtB,mBAAsB,SACtB,mBAAsB,SACtB,qBAAwB,SACxB,kBAAqB,SACrB,oBAAuB,SACvB,eAAkB,SAClB,eAAkB,SAClB,QAAW,SACX,OAAU,SACV,QAAW,SACX,YAAe,SACf,eAAkB,WAIAtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,iBAAoB,SACpB,iBAAoB,SACpB,kBAAqB,SACrB,aAAgB,SAChB,eAAkB,SAClB,eAAkB,SAClB,gBAAmB,SACnB,SAAY,SACZ,IAAO,SACP,sBAAyB,SACzB,MAAS,SACT,UAAa,SACb,iBAAoB,SACpB,qBAAwB,SACxB,QAAW,SACX,QAAW,SACX,QAAW,SACX,QAAW,SACX,MAAS,SACT,MAAS,SACT,cAAiB,SACjB,UAAa,SACb,QAAW,SACX,SAAY,SACZ,QAAW,SACX,QAAW,SACX,iBAAoB,SACpB,MAAS,SACT,aAAgB,SAChB,OAAU,SACV,gBAAmB,SACnB,kBAAqB,SACrB,WAAc,SACd,eAAkB,SAClB,KAAQ,SACR,cAAiB,SACjB,SAAY,SACZ,KAAQ,SACR,YAAe,SACf,OAAU,SACV,IAAO,SACP,QAAW,SACX,UAAa,SACb,QAAW,SACX,cAAiB,SACjB,OAAU,SACV,UAAa,SACb,OAAU,SACV,UAAa,SACb,UAAa,SACb,WAAc,SACd,SAAY,SACZ,UAAa,SACb,UAAa,SACb,mBAAsB,SACtB,iBAAoB,SACpB,SAAY,SACZ,YAAe,SACf,WAAc,SACd,SAAY,SACZ,eAAkB,SAClB,iBAAoB,SACpB,cAAiB,SACjB,QAAW,SACX,SAAY,SACZ,UAAa,SACb,eAAkB,SAClB,UAAa,SACb,cAAiB,SACjB,gBAAmB,SACnB,WAAc,SACd,iBAAoB,SACpB,gBAAmB,SACnB,SAAY,SACZ,UAAa,SACb,UAAa,SACb,QAAW,SACX,UAAa,SACb,OAAU,SACV,QAAW,SACX,QAAW,SACX,aAAgB,SAChB,YAAe,SACf,MAAS,SACT,sBAAyB,SACzB,SAAY,SACZ,WAAc,SACd,WAAc,SACd,QAAW,SACX,gBAAmB,SACnB,kBAAqB,SACrB,qBAAwB,SACxB,oBAAuB,SACvB,mBAAsB,SACtB,mBAAsB,SACtB,uBAA0B,SAC1B,kBAAqB,SACrB,iBAAoB,SACpB,6BAAgC,SAChC,WAAc,WAIItnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,aAAgB,SAChB,eAAkB,SAClB,kBAAqB,SACrB,aAAgB,SAChB,oBAAuB,SACvB,kBAAqB,SACrB,qBAAwB,SACxB,qBAAwB,SACxB,mBAAsB,SACtB,iBAAoB,SACpB,wBAA2B,SAC3B,aAAgB,SAChB,oBAAuB,SACvB,sBAAyB,SACzB,MAAS,SACT,SAAY,SACZ,MAAS,SACT,cAAiB,SACjB,UAAa,SACb,eAAkB,SAClB,eAAkB,SAClB,OAAU,SACV,aAAgB,SAChB,kBAAqB,SACrB,UAAa,SACb,OAAU,SACV,IAAO,SACP,YAAe,SACf,YAAe,SACf,oBAAuB,SACvB,MAAS,SACT,kBAAqB,SACrB,UAAa,SACb,MAAS,SACT,SAAY,SACZ,QAAW,SACX,iBAAoB,SACpB,KAAQ,SACR,gBAAmB,SACnB,UAAa,SACb,QAAW,SACX,QAAW,SACX,QAAW,SACX,SAAY,SACZ,SAAY,SACZ,YAAe,SACf,UAAa,SACb,WAAc,SACd,OAAU,SACV,OAAU,SACV,OAAU,SACV,MAAS,SACT,UAAa,SACb,UAAa,SACb,aAAgB,SAChB,QAAW,SACX,KAAQ,SACR,UAAa,SACb,QAAW,SACX,KAAQ,SACR,OAAU,SACV,UAAa,SACb,QAAW,SACX,KAAQ,SACR,SAAY,SACZ,OAAU,SACV,WAAc,SACd,WAAc,SACd,aAAgB,SAChB,gBAAmB,SACnB,YAAe,SACf,UAAa,SACb,MAAS,SACT,gBAAmB,SACnB,OAAU,SACV,SAAY,SACZ,OAAU,SACV,QAAW,SACX,KAAQ,SACR,kBAAqB,SACrB,WAAc,SACd,UAAa,SACb,SAAY,SACZ,WAAc,SACd,cAAiB,SACjB,WAAc,SACd,OAAU,SACV,aAAgB,SAChB,SAAY,SACZ,UAAa,SACb,SAAY,SACZ,QAAW,SACX,mBAAsB,SACtB,WAAc,SACd,UAAa,SACb,KAAQ,SACR,aAAgB,SAChB,SAAY,SACZ,eAAkB,SAClB,gBAAmB,WAIDtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,YAAe,SACf,YAAe,SACf,OAAU,SACV,OAAU,SACV,WAAc,SACd,OAAU,SACV,cAAiB,SACjB,OAAU,SACV,cAAiB,SACjB,IAAO,SACP,SAAY,SACZ,kBAAqB,SACrB,YAAe,SACf,IAAO,SACP,GAAM,SACN,cAAiB,SACjB,eAAkB,SAClB,cAAiB,SACjB,aAAgB,SAChB,WAAc,SACd,SAAY,SACZ,aAAgB,SAChB,SAAY,SACZ,UAAa,SACb,QAAW,SACX,mBAAsB,SACtB,aAAgB,SAChB,aAAgB,SAChB,YAAe,SACf,YAAe,SACf,cAAiB,SACjB,MAAS,SACT,QAAW,SACX,iBAAoB,SACpB,UAAa,SACb,iBAAoB,SACpB,gBAAmB,SACnB,sBAAyB,SACzB,KAAQ,SACR,UAAa,SACb,YAAe,SACf,OAAU,SACV,UAAa,SACb,OAAU,SACV,eAAkB,SAClB,SAAY,SACZ,eAAkB,SAClB,YAAe,SACf,YAAe,SACf,eAAkB,SAClB,eAAkB,SAClB,eAAkB,SAClB,kBAAqB,SACrB,eAAkB,SAClB,OAAU,SACV,cAAiB,SACjB,gBAAmB,SACnB,cAAiB,SACjB,eAAkB,SAClB,IAAO,SACP,YAAe,SACf,aAAgB,SAChB,SAAY,SACZ,MAAS,SACT,KAAQ,SACR,IAAO,SACP,YAAe,SACf,IAAO,SACP,SAAY,SACZ,eAAkB,SAClB,UAAa,SACb,aAAgB,SAChB,SAAY,SACZ,IAAO,SACP,MAAS,SACT,YAAe,SACf,WAAc,SACd,eAAkB,SAClB,QAAW,SACX,kBAAqB,SACrB,kBAAqB,SACrB,SAAY,SACZ,SAAY,SACZ,QAAW,SACX,WAAc,SACd,iBAAoB,SACpB,MAAS,SACT,MAAS,SACT,MAAS,SACT,QAAW,SACX,QAAW,SACX,OAAU,SACV,SAAY,SACZ,sBAAyB,SACzB,WAAc,SACd,KAAQ,SACR,WAAc,SACd,gBAAmB,SACnB,qBAAwB,SACxB,iBAAoB,WAIFtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,gBAAmB,SACnB,YAAe,SACf,OAAU,SACV,YAAe,SACf,gBAAmB,SACnB,QAAW,SACX,WAAc,SACd,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,oBAAuB,SACvB,iBAAoB,SACpB,oBAAuB,SACvB,SAAY,SACZ,uBAA0B,SAC1B,oBAAuB,SACvB,iBAAoB,SACpB,SAAY,SACZ,IAAO,SACP,UAAa,SACb,UAAa,SACb,kBAAqB,SACrB,UAAa,SACb,WAAc,SACd,cAAiB,SACjB,MAAS,SACT,iBAAoB,SACpB,eAAkB,SAClB,OAAU,SACV,YAAe,SACf,UAAa,SACb,aAAgB,SAChB,UAAa,SACb,iBAAoB,SACpB,kBAAqB,SACrB,WAAc,SACd,YAAe,SACf,aAAgB,SAChB,YAAe,SACf,YAAe,SACf,aAAgB,SAChB,SAAY,SACZ,YAAe,SACf,UAAa,SACb,YAAe,SACf,WAAc,SACd,iBAAoB,SACpB,SAAY,SACZ,SAAY,SACZ,eAAkB,SAClB,KAAQ,SACR,YAAe,SACf,UAAa,SACb,UAAa,SACb,cAAiB,SACjB,YAAe,SACf,oBAAuB,SACvB,QAAW,SACX,MAAS,SACT,gBAAmB,SACnB,kBAAqB,SACrB,mBAAsB,SACtB,QAAW,SACX,UAAa,SACb,YAAe,SACf,SAAY,SACZ,aAAgB,SAChB,aAAgB,SAChB,yBAA4B,SAC5B,mBAAsB,SACtB,gBAAmB,SACnB,gBAAmB,SACnB,eAAkB,SAClB,oBAAuB,SACvB,gBAAmB,SACnB,sBAAyB,SACzB,YAAe,SACf,UAAa,SACb,SAAY,SACZ,mBAAsB,SACtB,WAAc,SACd,YAAe,SACf,SAAY,SACZ,WAAc,SACd,gBAAmB,SACnB,iBAAoB,SACpB,cAAiB,SACjB,gBAAmB,SACnB,gBAAmB,SACnB,YAAe,SACf,UAAa,SACb,cAAiB,SACjB,OAAU,SACV,eAAkB,WAIAtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,eAAkB,SAClB,oBAAuB,SACvB,kBAAqB,SACrB,WAAc,SACd,SAAY,SACZ,oBAAuB,SACvB,sBAAyB,SACzB,cAAiB,SACjB,mBAAsB,SACtB,0BAA6B,SAC7B,eAAkB,SAClB,eAAkB,SAClB,cAAiB,SACjB,iBAAoB,SACpB,MAAS,SACT,SAAY,SACZ,sBAAyB,SACzB,kBAAqB,SACrB,cAAiB,SACjB,aAAgB,SAChB,kBAAqB,SACrB,iBAAoB,SACpB,WAAc,SACd,WAAc,SACd,YAAe,SACf,gBAAmB,SACnB,aAAgB,SAChB,iBAAoB,SACpB,iBAAoB,SACpB,UAAa,SACb,kBAAqB,SACrB,oBAAuB,SACvB,oBAAuB,SACvB,qBAAwB,SACxB,eAAkB,SAClB,sBAAyB,SACzB,SAAY,SACZ,aAAgB,SAChB,sBAAyB,SACzB,WAAc,SACd,YAAe,SACf,oBAAuB,SACvB,cAAiB,SACjB,sBAAyB,SACzB,YAAe,SACf,WAAc,SACd,mBAAsB,SACtB,cAAiB,SACjB,sBAAyB,SACzB,eAAkB,SAClB,iBAAoB,SACpB,yBAA4B,SAC5B,iCAAoC,SACpC,kBAAqB,SACrB,oBAAuB,SACvB,oBAAuB,SACvB,qBAAwB,SACxB,aAAgB,SAChB,eAAkB,SAClB,eAAkB,SAClB,gBAAmB,SACnB,cAAiB,SACjB,gBAAmB,SACnB,YAAe,SACf,cAAiB,SACjB,eAAkB,SAClB,sBAAyB,SACzB,wBAA2B,SAC3B,iBAAoB,SACpB,eAAkB,SAClB,yBAA4B,SAC5B,YAAe,SACf,cAAiB,SACjB,QAAW,SACX,QAAW,SACX,QAAW,SACX,YAAe,SACf,WAAc,SACd,WAAc,SACd,iBAAoB,SACpB,UAAa,SACb,cAAiB,SACjB,mBAAsB,SACtB,oBAAuB,SACvB,SAAY,SACZ,cAAiB,SACjB,eAAkB,SAClB,eAAkB,SAClB,aAAgB,SAChB,aAAgB,SAChB,IAAO,SACP,eAAkB,SAClB,SAAY,SACZ,YAAe,SACf,UAAa,SACb,SAAY,SACZ,UAAa,SACb,cAAiB,SACjB,WAAc,SACd,aAAgB,WAIEtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,aAAgB,SAChB,WAAc,SACd,OAAU,SACV,OAAU,SACV,gBAAmB,SACnB,qBAAwB,SACxB,eAAkB,SAClB,eAAkB,SAClB,kBAAqB,SACrB,YAAe,SACf,aAAgB,SAChB,aAAgB,SAChB,mBAAsB,SACtB,cAAiB,SACjB,YAAe,SACf,cAAiB,SACjB,SAAY,SACZ,UAAa,SACb,UAAa,SACb,SAAY,SACZ,WAAc,SACd,YAAe,SACf,OAAU,SACV,iBAAoB,SACpB,iBAAoB,SACpB,iBAAoB,SACpB,aAAgB,SAChB,cAAiB,SACjB,QAAW,SACX,uBAA0B,SAC1B,WAAc,SACd,gBAAmB,SACnB,MAAS,SACT,WAAc,SACd,aAAgB,SAChB,UAAa,SACb,aAAgB,SAChB,SAAY,SACZ,eAAkB,SAClB,WAAc,SACd,SAAY,SACZ,uBAA0B,SAC1B,YAAe,SACf,YAAe,SACf,gBAAmB,SACnB,kBAAqB,SACrB,mBAAsB,SACtB,eAAkB,SAClB,iBAAoB,SACpB,eAAkB,SAClB,aAAgB,SAChB,gBAAmB,SACnB,mBAAsB,SACtB,UAAa,SACb,iBAAoB,SACpB,aAAgB,SAChB,WAAc,SACd,UAAa,SACb,gBAAmB,SACnB,aAAgB,SAChB,mBAAsB,SACtB,eAAkB,SAClB,WAAc,SACd,aAAgB,SAChB,OAAU,SACV,QAAW,SACX,aAAgB,SAChB,QAAW,SACX,UAAa,SACb,aAAgB,SAChB,WAAc,SACd,UAAa,SACb,QAAW,SACX,eAAkB,SAClB,eAAkB,SAClB,gBAAmB,SACnB,aAAgB,SAChB,cAAiB,SACjB,eAAkB,SAClB,YAAe,SACf,oBAAuB,SACvB,mBAAsB,SACtB,4BAA+B,SAC/B,iBAAoB,SACpB,kBAAqB,SACrB,0BAA6B,SAC7B,oBAAuB,SACvB,4BAA+B,SAC/B,mBAAsB,SACtB,mBAAsB,SACtB,mBAAsB,SACtB,mBAAsB,SACtB,iBAAoB,SACpB,2BAA8B,SAC9B,aAAgB,SAChB,iBAAoB,SACpB,gBAAmB,SACnB,qBAAwB,SACxB,gBAAmB,SACnB,YAAe,WAIGtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,sBACZ9R,IAAK,QAAQgxH,EAAO,iDAEtB0J,MAAO,CACL,gBAAmB,SACnB,iBAAoB,SACpB,gBAAmB,SACnB,eAAkB,SAClB,eAAkB,SAClB,cAAiB,SACjB,sBAAyB,SACzB,WAAc,SACd,qBAAwB,SACxB,UAAa,SACb,cAAiB,SACjB,SAAY,SACZ,YAAe,SACf,sBAAyB,SACzB,uBAA0B,SAC1B,iBAAoB,SACpB,sBAAyB,SACzB,YAAe,SACf,kBAAqB,SACrB,kBAAqB,SACrB,iBAAoB,SACpB,oBAAuB,SACvB,oBAAuB,SACvB,0BAA6B,SAC7B,wBAA2B,SAC3B,mBAAsB,SACtB,iBAAoB,SACpB,kBAAqB,SACrB,mBAAsB,SACtB,yBAA4B,SAC5B,iBAAoB,SACpB,KAAQ,SACR,qBAAwB,SACxB,gBAAmB,SACnB,sBAAyB,SACzB,UAAa,SACb,UAAa,SACb,iBAAoB,SACpB,YAAe,SACf,WAAc,SACd,SAAY,SACZ,QAAW,SACX,QAAW,SACX,aAAgB,SAChB,YAAe,SACf,eAAkB,SAClB,SAAY,SACZ,WAAc,SACd,YAAe,SACf,cAAiB,SACjB,eAAkB,SAClB,UAAa,SACb,QAAW,SACX,YAAe,SACf,gBAAmB,SACnB,UAAa,SACb,aAAgB,SAChB,aAAgB,SAChB,aAAgB,SAChB,oBAAuB,SACvB,qBAAwB,SACxB,eAAkB,SAClB,cAAiB,SACjB,eAAkB,SAClB,kBAAqB,SACrB,gBAAmB,SACnB,SAAY,SACZ,aAAgB,SAChB,UAAa,SACb,cAAiB,SACjB,YAAe,SACf,gBAAmB,SACnB,YAAe,SACf,gBAAmB,SACnB,eAAkB,SAClB,mBAAsB,SACtB,cAAiB,SACjB,kBAAqB,SACrB,oBAAuB,SACvB,WAAc,SACd,gBAAmB,SACnB,OAAU,SACV,QAAW,SACX,aAAgB,SAChB,SAAY,SACZ,kBAAqB,SACrB,gBAAmB,SACnB,KAAQ,SACR,gBAAmB,SACnB,0BAA6B,SAC7B,cAAiB,SACjB,eAAkB,SAClB,cAAiB,SACjB,KAAQ,SACR,WAAc,SACd,WAAc,SACd,cAAiB,SACjB,iBAAoB,SACpB,cAAiB,SACjB,SAAY,WAIMtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,cAAiB,SACjB,aAAgB,SAChB,YAAe,SACf,YAAe,SACf,WAAc,SACd,gBAAmB,SACnB,iBAAoB,SACpB,WAAc,SACd,cAAiB,SACjB,aAAgB,SAChB,YAAe,SACf,MAAS,SACT,SAAY,SACZ,YAAe,SACf,aAAgB,SAChB,WAAc,SACd,OAAU,SACV,aAAgB,SAChB,iBAAoB,SACpB,UAAa,SACb,cAAiB,SACjB,yBAA4B,SAC5B,eAAkB,SAClB,mBAAsB,SACtB,UAAa,SACb,cAAiB,SACjB,gBAAmB,SACnB,oBAAuB,SACvB,aAAgB,SAChB,iBAAoB,SACpB,OAAU,SACV,iBAAoB,SACpB,eAAkB,SAClB,eAAkB,SAClB,KAAQ,SACR,MAAS,SACT,gBAAmB,SACnB,YAAe,SACf,aAAgB,SAChB,aAAgB,SAChB,cAAiB,SACjB,YAAe,SACf,kBAAqB,SACrB,aAAgB,SAChB,gBAAmB,SACnB,UAAa,SACb,eAAkB,SAClB,UAAa,SACb,UAAa,SACb,OAAU,SACV,SAAY,SACZ,iBAAoB,SACpB,aAAgB,SAChB,sBAAyB,SACzB,YAAe,SACf,aAAgB,SAChB,UAAa,SACb,cAAiB,SACjB,cAAiB,SACjB,iBAAoB,SACpB,iBAAoB,SACpB,QAAW,SACX,aAAgB,SAChB,UAAa,SACb,kBAAqB,SACrB,cAAiB,SACjB,wBAA2B,SAC3B,eAAkB,SAClB,WAAc,SACd,YAAe,SACf,gBAAmB,SACnB,WAAc,SACd,eAAkB,SAClB,UAAa,SACb,SAAY,SACZ,UAAa,SACb,aAAgB,SAChB,gBAAmB,SACnB,iBAAoB,SACpB,kBAAqB,SACrB,mBAAsB,SACtB,WAAc,SACd,YAAe,SACf,aAAgB,SAChB,gBAAmB,SACnB,UAAa,SACb,WAAc,SACd,cAAiB,SACjB,sBAAyB,SACzB,eAAkB,SAClB,SAAY,SACZ,KAAQ,SACR,UAAa,SACb,YAAe,SACf,WAAc,SACd,mBAAsB,SACtB,gBAAmB,SACnB,SAAY,SACZ,qBAAwB,SACxB,iBAAoB,WAIFtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,iBAAoB,SACpB,iBAAoB,SACpB,aAAgB,SAChB,kBAAqB,SACrB,iBAAoB,SACpB,YAAe,SACf,eAAkB,SAClB,gBAAmB,SACnB,WAAc,SACd,aAAgB,SAChB,qBAAwB,SACxB,gBAAmB,SACnB,wBAA2B,SAC3B,aAAgB,SAChB,qBAAwB,SACxB,eAAkB,SAClB,oBAAuB,SACvB,QAAW,SACX,aAAgB,SAChB,QAAW,SACX,SAAY,SACZ,SAAY,SACZ,QAAW,SACX,SAAY,SACZ,SAAY,SACZ,SAAY,SACZ,mBAAsB,SACtB,eAAkB,SAClB,OAAU,SACV,oBAAuB,SACvB,GAAM,SACN,kBAAqB,SACrB,UAAa,SACb,eAAkB,SAClB,OAAU,SACV,mBAAsB,SACtB,eAAkB,SAClB,GAAM,SACN,aAAgB,SAChB,iBAAoB,SACpB,UAAa,SACb,cAAiB,SACjB,KAAQ,SACR,UAAa,SACb,cAAiB,SACjB,iBAAoB,SACpB,YAAe,SACf,SAAY,SACZ,UAAa,SACb,cAAiB,SACjB,WAAc,SACd,WAAc,SACd,eAAkB,SAClB,UAAa,SACb,WAAc,SACd,QAAW,SACX,SAAY,SACZ,YAAe,SACf,kBAAqB,SACrB,UAAa,SACb,YAAe,SACf,iBAAoB,SACpB,SAAY,SACZ,YAAe,SACf,UAAa,SACb,cAAiB,SACjB,SAAY,SACZ,WAAc,SACd,gBAAmB,SACnB,cAAiB,SACjB,YAAe,SACf,WAAc,SACd,iBAAoB,SACpB,iBAAoB,SACpB,iBAAoB,SACpB,wBAA2B,SAC3B,yBAA4B,SAC5B,WAAc,SACd,sBAAyB,SACzB,WAAc,SACd,eAAkB,SAClB,UAAa,SACb,mBAAsB,SACtB,SAAY,SACZ,WAAc,SACd,aAAgB,SAChB,eAAkB,SAClB,sBAAyB,SACzB,cAAiB,SACjB,sBAAyB,SACzB,eAAkB,SAClB,iBAAoB,SACpB,SAAY,SACZ,YAAe,SACf,YAAe,SACf,aAAgB,SAChB,kBAAqB,SACrB,UAAa,SACb,UAAa,SACb,YAAe,WAIGtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,eAAkB,SAClB,uBAA0B,SAC1B,aAAgB,SAChB,iBAAoB,SACpB,aAAgB,SAChB,qBAAwB,SACxB,aAAgB,SAChB,cAAiB,SACjB,oBAAuB,SACvB,UAAa,SACb,cAAiB,SACjB,UAAa,SACb,eAAkB,SAClB,aAAgB,SAChB,WAAc,SACd,YAAe,SACf,mBAAsB,SACtB,2BAA8B,SAC9B,oBAAuB,SACvB,qBAAwB,SACxB,6BAAgC,SAChC,sBAAyB,SACzB,YAAe,SACf,iBAAoB,SACpB,UAAa,SACb,uBAA0B,SAC1B,SAAY,SACZ,mBAAsB,SACtB,iBAAoB,SACpB,kBAAqB,SACrB,wBAA2B,SAC3B,uBAA0B,SAC1B,qBAAwB,SACxB,oBAAuB,SACvB,WAAc,SACd,gBAAmB,SACnB,cAAiB,SACjB,mBAAsB,SACtB,iBAAoB,SACpB,mBAAsB,SACtB,oBAAuB,SACvB,gBAAmB,SACnB,cAAiB,SACjB,gBAAmB,SACnB,iBAAoB,SACpB,YAAe,SACf,mBAAsB,SACtB,qBAAwB,SACxB,SAAY,SACZ,aAAgB,SAChB,aAAgB,SAChB,iBAAoB,SACpB,kBAAqB,SACrB,WAAc,SACd,eAAkB,SAClB,wBAA2B,SAC3B,iBAAoB,SACpB,qBAAwB,SACxB,mBAAsB,SACtB,YAAe,SACf,gBAAmB,SACnB,qBAAwB,SACxB,cAAiB,SACjB,kBAAqB,SACrB,qBAAwB,SACxB,cAAiB,SACjB,kBAAqB,SACrB,uBAA0B,SAC1B,gBAAmB,SACnB,oBAAuB,SACvB,mBAAsB,SACtB,YAAe,SACf,gBAAmB,SACnB,WAAc,SACd,gBAAmB,SACnB,iBAAoB,SACpB,cAAiB,SACjB,cAAiB,SACjB,gBAAmB,SACnB,SAAY,SACZ,SAAY,SACZ,cAAiB,SACjB,UAAa,SACb,SAAY,SACZ,OAAU,SACV,QAAW,SACX,gBAAmB,SACnB,OAAU,SACV,cAAiB,SACjB,WAAc,SACd,WAAc,SACd,UAAa,SACb,aAAgB,SAChB,uBAA0B,SAC1B,WAAc,SACd,kBAAqB,SACrB,YAAe,SACf,WAAc,SACd,WAAc,SACd,YAAe,WAIGtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,oBAAuB,SACvB,YAAe,SACf,gBAAmB,SACnB,OAAU,SACV,YAAe,SACf,uBAA0B,SAC1B,2BAA8B,SAC9B,YAAe,SACf,gBAAmB,SACnB,cAAiB,SACjB,sBAAyB,SACzB,aAAgB,SAChB,mBAAsB,SACtB,iBAAoB,SACpB,yBAA4B,SAC5B,MAAS,SACT,SAAY,SACZ,iBAAoB,SACpB,WAAc,SACd,mBAAsB,SACtB,aAAgB,SAChB,cAAiB,SACjB,eAAkB,SAClB,uBAA0B,SAC1B,cAAiB,SACjB,QAAW,SACX,gBAAmB,SACnB,yBAA4B,SAC5B,gBAAmB,SACnB,oBAAuB,SACvB,kBAAqB,SACrB,sBAAyB,SACzB,yBAA4B,SAC5B,kBAAqB,SACrB,sBAAyB,SACzB,SAAY,SACZ,YAAe,SACf,iBAAoB,SACpB,cAAiB,SACjB,cAAiB,SACjB,aAAgB,SAChB,cAAiB,SACjB,aAAgB,SAChB,aAAgB,SAChB,WAAc,SACd,YAAe,SACf,aAAgB,SAChB,UAAa,SACb,SAAY,SACZ,cAAiB,SACjB,kBAAqB,SACrB,cAAiB,SACjB,kBAAqB,SACrB,WAAc,SACd,eAAkB,SAClB,WAAc,SACd,eAAkB,SAClB,oBAAuB,SACvB,wBAA2B,SAC3B,oBAAuB,SACvB,wBAA2B,SAC3B,2BAA8B,SAC9B,2BAA8B,SAC9B,oBAAuB,SACvB,wBAA2B,SAC3B,oBAAuB,SACvB,wBAA2B,SAC3B,4BAA+B,SAC/B,4BAA+B,SAC/B,YAAe,SACf,SAAY,SACZ,uBAA0B,SAC1B,aAAgB,SAChB,OAAU,SACV,OAAU,SACV,UAAa,SACb,OAAU,SACV,QAAW,SACX,SAAY,SACZ,MAAS,SACT,KAAQ,SACR,WAAc,SACd,cAAiB,SACjB,gBAAmB,SACnB,IAAO,SACP,gBAAmB,SACnB,eAAkB,SAClB,SAAY,SACZ,kBAAqB,SACrB,mBAAsB,SACtB,eAAkB,SAClB,YAAe,SACf,YAAe,SACf,oBAAuB,SACvB,kBAAqB,SACrB,0BAA6B,SAC7B,mBAAsB,SACtB,aAAgB,SAChB,iBAAoB,SACpB,gBAAmB,WAIDtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,OAAU,SACV,gBAAmB,SACnB,YAAe,SACf,WAAc,SACd,YAAe,SACf,EAAK,SACL,WAAc,SACd,gBAAmB,SACnB,YAAe,SACf,aAAgB,SAChB,eAAkB,SAClB,YAAe,SACf,cAAiB,SACjB,oBAAuB,SACvB,sBAAyB,SACzB,qBAAwB,SACxB,iBAAoB,SACpB,oBAAuB,SACvB,oBAAuB,SACvB,2BAA8B,SAC9B,yBAA4B,SAC5B,QAAW,SACX,KAAQ,SACR,QAAW,SACX,QAAW,SACX,SAAY,SACZ,cAAiB,SACjB,WAAc,SACd,cAAiB,SACjB,mBAAsB,SACtB,aAAc,SACd,cAAe,SACf,oBAAuB,SACvB,kBAAqB,SACrB,oBAAuB,SACvB,oBAAuB,SACvB,WAAc,SACd,UAAa,SACb,UAAa,SACb,cAAiB,SACjB,WAAc,SACd,SAAY,SACZ,SAAY,SACZ,WAAc,SACd,WAAc,SACd,YAAe,SACf,YAAe,SACf,YAAe,SACf,SAAY,SACZ,YAAe,SACf,QAAW,SACX,WAAc,SACd,cAAiB,SACjB,YAAe,SACf,aAAgB,SAChB,kBAAqB,SACrB,aAAgB,SAChB,aAAgB,SAChB,cAAiB,SACjB,aAAgB,SAChB,cAAiB,SACjB,YAAe,SACf,gBAAmB,SACnB,eAAkB,SAClB,YAAe,SACf,OAAU,SACV,iBAAoB,SACpB,aAAgB,SAChB,eAAkB,SAClB,KAAQ,SACR,UAAa,SACb,aAAgB,SAChB,YAAe,SACf,WAAc,SACd,eAAkB,SAClB,aAAgB,SAChB,UAAa,SACb,eAAkB,SAClB,YAAe,SACf,UAAa,SACb,aAAgB,SAChB,iBAAoB,SACpB,2BAA8B,SAC9B,YAAe,SACf,SAAY,SACZ,eAAkB,SAClB,cAAiB,SACjB,YAAe,SACf,WAAc,SACd,iBAAoB,SACpB,aAAgB,SAChB,OAAU,SACV,gBAAmB,SACnB,wBAA2B,SAC3B,aAAgB,SAChB,WAAc,SACd,UAAa,SACb,aAAgB,SAChB,oBAAuB,SACvB,4BAA+B,WAIbtnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,iBAAoB,SACpB,yBAA4B,SAC5B,cAAiB,SACjB,gBAAmB,SACnB,kBAAqB,SACrB,cAAiB,SACjB,cAAiB,SACjB,eAAkB,SAClB,iBAAoB,SACpB,eAAkB,SAClB,YAAe,SACf,YAAe,SACf,eAAkB,SAClB,aAAgB,SAChB,eAAkB,SAClB,kBAAqB,SACrB,aAAgB,SAChB,aAAgB,SAChB,sBAAyB,SACzB,YAAe,SACf,YAAe,SACf,WAAc,SACd,qBAAwB,SACxB,kBAAqB,SACrB,QAAW,SACX,eAAkB,SAClB,iBAAoB,SACpB,oBAAuB,SACvB,eAAkB,SAClB,cAAiB,SACjB,gBAAmB,SACnB,MAAS,SACT,MAAS,SACT,WAAc,SACd,UAAa,SACb,UAAa,SACb,oBAAuB,SACvB,kBAAqB,SACrB,iBAAoB,SACpB,iBAAoB,SACpB,mBAAsB,SACtB,eAAkB,SAClB,oBAAuB,SACvB,UAAa,SACb,kBAAqB,SACrB,mBAAsB,SACtB,gBAAmB,SACnB,gBAAmB,SACnB,cAAiB,SACjB,WAAc,SACd,mBAAsB,SACtB,YAAe,SACf,eAAkB,SAClB,mBAAsB,SACtB,oBAAuB,SACvB,iBAAoB,SACpB,WAAc,SACd,gBAAmB,SACnB,gBAAmB,SACnB,YAAe,SACf,oBAAuB,SACvB,cAAiB,SACjB,SAAY,SACZ,eAAkB,SAClB,cAAiB,SACjB,iBAAoB,SACpB,WAAc,SACd,UAAa,SACb,WAAc,SACd,cAAiB,SACjB,aAAgB,SAChB,MAAS,SACT,mBAAsB,SACtB,gBAAmB,SACnB,iBAAoB,SACpB,YAAe,SACf,YAAe,SACf,WAAc,SACd,gBAAmB,SACnB,kBAAqB,SACrB,iBAAoB,SACpB,YAAe,SACf,cAAiB,SACjB,WAAc,SACd,iBAAoB,SACpB,WAAc,SACd,iBAAoB,SACpB,aAAgB,SAChB,mBAAsB,SACtB,OAAU,SACV,aAAgB,SAChB,eAAkB,SAClB,OAAU,SACV,gBAAmB,SACnB,kBAAqB,SACrB,aAAgB,SAChB,UAAa,SACb,mBAAsB,SACtB,SAAY,SACZ,WAAc,WAIItnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IAuHAuJ,GApH4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,gBAAmB,SACnB,aAAgB,SAChB,aAAgB,SAChB,cAAiB,SACjB,iBAAoB,SACpB,WAAc,SACd,WAAc,SACd,gBAAmB,SACnB,gBAAmB,SACnB,gBAAmB,SACnB,sBAAyB,SACzB,kBAAqB,SACrB,uBAA0B,SAC1B,iBAAoB,SACpB,QAAW,SACX,kBAAqB,SACrB,aAAgB,SAChB,cAAiB,SACjB,gBAAmB,SACnB,eAAkB,SAClB,eAAkB,SAClB,eAAkB,SAClB,oBAAuB,SACvB,aAAgB,SAChB,MAAS,SACT,eAAkB,SAClB,UAAa,SACb,iBAAoB,SACpB,uBAA0B,SAC1B,4BAA+B,SAC/B,QAAW,SACX,wBAA2B,SAC3B,WAAc,SACd,YAAe,SACf,cAAiB,SACjB,cAAiB,SACjB,uBAA0B,SAC1B,iBAAoB,SACpB,mBAAsB,SACtB,yBAA4B,SAC5B,2BAA8B,SAC9B,iBAAoB,SACpB,mBAAsB,SACtB,yBAA4B,SAC5B,2BAA8B,SAC9B,gBAAmB,SACnB,YAAe,SACf,oBAAuB,SACvB,iBAAoB,SACpB,sBAAyB,SACzB,WAAc,SACd,mBAAsB,SACtB,oBAAuB,SACvB,mBAAsB,SACtB,oBAAuB,SACvB,2BAA8B,SAC9B,4BAA+B,SAC/B,2BAA8B,SAC9B,4BAA+B,SAC/B,cAAiB,SACjB,eAAkB,SAClB,sBAAyB,SACzB,uBAA0B,SAC1B,aAAgB,SAChB,OAAU,SACV,cAAiB,SACjB,YAAe,SACf,iBAAoB,SACpB,iBAAoB,SACpB,kBAAqB,SACrB,uBAA0B,SAC1B,YAAe,SACf,6BAAgC,SAChC,UAAa,SACb,kBAAqB,SACrB,yBAA4B,SAC5B,aAAgB,SAChB,aAAgB,SAChB,WAAc,SACd,SAAY,SACZ,WAAc,SACd,YAAe,SACf,QAAW,SACX,UAAa,SACb,oBAAuB,SACvB,oBAAuB,SACvB,cAAiB,SACjB,0BAA6B,SAC7B,WAAc,SACd,YAAe,SACf,iBAAoB,SACpB,kBAAqB,SACrB,yBAA4B,SAC5B,iBAAoB,SACpB,cAAiB,SACjB,eAAkB,SAClB,aAAgB,SAChB,sBAAyB,SACzB,iBAAoB,SACpB,WAAc,WAIItnI,GCxHlB,SAAU,GACd49H,EACA59H,QADA,IAAA49H,MAAA,IA+DAuJ,GA5D4B,CAC1BpsH,MAAO,CACLkD,oBAAqB,YACrBC,oBAAqB,cACrBU,UAAW,SACXE,WAAY,SACZsqH,MAAO,QAET3N,SAAU,CACR/8G,WAAY,uBACZ9R,IAAK,QAAQgxH,EAAO,kDAEtB0J,MAAO,CACL,iBAAoB,SACpB,aAAgB,SAChB,gBAAmB,SACnB,YAAe,SACf,QAAW,SACX,OAAU,SACV,OAAU,SACV,qBAAwB,SACxB,wBAA2B,SAC3B,UAAa,SACb,oBAAuB,SACvB,aAAgB,SAChB,kBAAqB,SACrB,aAAgB,SAChB,aAAgB,SAChB,eAAkB,SAClB,iBAAoB,SACpB,6BAAgC,SAChC,4BAA+B,SAC/B,sBAAyB,SACzB,YAAe,SACf,aAAgB,SAChB,iBAAoB,SACpB,cAAiB,SACjB,UAAa,SACb,aAAgB,SAChB,yBAA4B,SAC5B,WAAc,SACd,YAAe,SACf,oBAAuB,SACvB,qBAAwB,SACxB,sBAAyB,SACzB,YAAe,SACf,MAAS,SACT,MAAS,SACT,YAAe,SACf,YAAe,SACf,cAAiB,SACjB,UAAa,SACb,QAAW,SACX,cAAiB,SACjB,qBAAwB,SACxB,qBAAwB,SACxB,WAAc,WAIItnI,GCrExB,aAAW,oBAAqB,U5GOhC,K6GRO,IAAM,GAAsB,WACjC0nI,GAAkB,QAAS,UAC3BA,GAAkB,WAAY,gBAC9BA,GAAkB,eAAgB,qBAClCA,GAAkB,eAAgB,cAClCA,GAAkB,kBAAmB,eACrCA,GAAkB,WAAY,cAC9BA,GAAkB,YAAa,gBDNjC,aAAW,kBAAmB,S,oBEFnBiF,GAAiCz0H,IAAM+mE,cAAc,MCIhE,IAAI2tD,GAJJ,SAA0Bv+H,GACxBA,KCEF,SAASw+H,KACP,IAAID,EDOGA,GCNHl0G,EAAQ,KACRvf,EAAO,KACX,MAAO,CACL+P,MAAO,WACLwP,EAAQ,KACRvf,EAAO,MAET2zH,OAAQ,WACNF,GAAM,WAGJ,IAFA,IAAIhnI,EAAW8yB,EAER9yB,GACLA,EAASyI,WACTzI,EAAWA,EAASpE,SAI1BrN,IAAK,WAIH,IAHA,IAAIiS,EAAY,GACZR,EAAW8yB,EAER9yB,GACLQ,EAAUjQ,KAAKyP,GACfA,EAAWA,EAASpE,KAGtB,OAAO4E,GAETT,UAAW,SAAmB0I,GAC5B,IAAIxI,GAAe,EACfD,EAAWuT,EAAO,CACpB9K,SAAUA,EACV7M,KAAM,KACND,KAAM4X,GASR,OANIvT,EAASrE,KACXqE,EAASrE,KAAKC,KAAOoE,EAErB8yB,EAAQ9yB,EAGH,WACAC,GAA0B,OAAV6yB,IACrB7yB,GAAe,EAEXD,EAASpE,KACXoE,EAASpE,KAAKD,KAAOqE,EAASrE,KAE9B4X,EAAOvT,EAASrE,KAGdqE,EAASrE,KACXqE,EAASrE,KAAKC,KAAOoE,EAASpE,KAE9Bk3B,EAAQ9yB,EAASpE,SAO3B,IAAIurI,GAAgB,CAClBD,OAAQ,aACR34I,IAAK,WACH,MAAO,KAGJ,SAAS64I,GAAmB1kI,EAAO2kI,GACxC,IAAItmI,EACAP,EAAY2mI,GAWhB,SAASG,IACHC,EAAaC,eACfD,EAAaC,gBAQjB,SAASC,IACF1mI,IACHA,EAAcsmI,EAAYA,EAAUK,aAAaJ,GAAuB5kI,EAAM3C,UAAUunI,GACxF9mI,EAAYymI,MAahB,IAAIM,EAAe,CACjBG,aApCF,SAAsB1nI,GAEpB,OADAynI,IACOjnI,EAAUT,UAAUC,IAmC3B2nI,iBAhCF,WACEnnI,EAAU0mI,UAgCVI,oBAAqBA,EACrBrnI,aAxBF,WACE,OAAOyoC,QAAQ3nC,IAwBf0mI,aAAcA,EACdG,eAfF,WACM7mI,IACFA,IACAA,OAAc9E,EACduE,EAAU8iB,QACV9iB,EAAY2mI,KAWdU,aAAc,WACZ,OAAOrnI,IAGX,OAAO+mI,ECnHF,IAAIO,GAA8C,qBAAXprI,QAAqD,qBAApBA,OAAOqK,UAAqE,qBAAlCrK,OAAOqK,SAASiJ,cAAgC2qE,kBAAkBF,YC2C5Kf,OA9Cf,SAAkB/4E,GAChB,IAAI+B,EAAQ/B,EAAK+B,MACbu6D,EAAUt8D,EAAKs8D,QACf5lD,EAAW1W,EAAK0W,SAChB0wH,EAAentD,mBAAQ,WACzB,IAAI2sD,EAAeH,GAAmB1kI,GAEtC,OADA6kI,EAAaC,cAAgBD,EAAaI,iBACnC,CACLjlI,MAAOA,EACP6kI,aAAcA,KAEf,CAAC7kI,IACAslI,EAAgBptD,mBAAQ,WAC1B,OAAOl4E,EAAM5C,aACZ,CAAC4C,IACJolI,IAA0B,WACxB,IAAIP,EAAeQ,EAAaR,aAOhC,OANAA,EAAaE,eAETO,IAAkBtlI,EAAM5C,YAC1BynI,EAAaI,mBAGR,WACLJ,EAAaK,iBACbL,EAAaC,cAAgB,QAE9B,CAACO,EAAcC,IAClB,IAAI1zB,EAAUr3C,GAAW8pE,GACzB,OAAoBz0H,IAAMtC,cAAcskG,EAAQ56B,SAAU,CACxD/qF,MAAOo5I,GACN1wH,ICrCU,SAAS4wH,KAetB,OAdAA,GAAW75I,OAAO2jB,QAAU,SAAUvf,GACpC,IAAK,IAAI9E,EAAI,EAAGA,EAAI+E,UAAUC,OAAQhF,IAAK,CACzC,IAAIiF,EAASF,UAAU/E,GAEvB,IAAK,IAAIuB,KAAO0D,EACVvE,OAAOkB,UAAUC,eAAe1B,KAAK8E,EAAQ1D,KAC/CuD,EAAOvD,GAAO0D,EAAO1D,IAK3B,OAAOuD,IAGOF,MAAMkK,KAAM/J,WCff,SAASy1I,GAA8Bv1I,EAAQw1I,GAC5D,GAAc,MAAVx1I,EAAgB,MAAO,GAC3B,IAEI1D,EAAKvB,EAFL8E,EAAS,GACT41I,EAAah6I,OAAO6C,KAAK0B,GAG7B,IAAKjF,EAAI,EAAGA,EAAI06I,EAAW11I,OAAQhF,IACjCuB,EAAMm5I,EAAW16I,GACby6I,EAAShoI,QAAQlR,IAAQ,IAC7BuD,EAAOvD,GAAO0D,EAAO1D,IAGvB,OAAOuD,E,iCCVL61I,GAAY,CAAC,iBAAkB,aAAc,kBAAmB,2BAA4B,WAAY,UAAW,aAAc,WACjIC,GAAa,CAAC,0BAQdC,GAAc,GACdC,GAAwB,CAAC,KAAM,MAUnC,SAASC,GAAyBlnI,EAAOjB,GACvC,IAAIooI,EAAcnnI,EAAM,GACxB,MAAO,CAACjB,EAAO+0E,QAASqzD,EAAc,GAGxC,SAASC,GAAkCC,EAAYC,EAAYvsD,GACjEwrD,IAA0B,WACxB,OAAOc,EAAWt2I,WAAM,EAAQu2I,KAC/BvsD,GAGL,SAASwsD,GAAoBC,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAAkBC,EAA2BzB,GAE3IoB,EAAiBr1H,QAAUw1H,EAC3BF,EAAet1H,QAAUy1H,EACzBF,EAAkBv1H,SAAU,EAExB01H,EAA0B11H,UAC5B01H,EAA0B11H,QAAU,KACpCi0H,KAIJ,SAAS0B,GAAiBC,EAA0B5mI,EAAO6kI,EAAcgC,EAAoBR,EAAkBC,EAAgBC,EAAmBG,EAA2BzB,EAAkB6B,GAE7L,GAAKF,EAAL,CAEA,IAAIG,GAAiB,EACjBC,EAAkB,KAElBC,EAAkB,WACpB,IAAIF,EAAJ,CAMA,IACIG,EAAen1I,EADfo1I,EAAmBnnI,EAAM5C,WAG7B,IAGE8pI,EAAgBL,EAAmBM,EAAkBd,EAAiBr1H,SACtE,MAAOjX,IACPhI,EAAQgI,GACRitI,EAAkBjtI,GAGfhI,IACHi1I,EAAkB,MAIhBE,IAAkBZ,EAAet1H,QAC9Bu1H,EAAkBv1H,SACrBi0H,KAOFqB,EAAet1H,QAAUk2H,EACzBR,EAA0B11H,QAAUk2H,EACpCX,EAAkBv1H,SAAU,EAE5B81H,EAA6B,CAC3BjpI,KAAM,gBACN80E,QAAS,CACP5gF,MAAOA,QAOf8yI,EAAaC,cAAgBmC,EAC7BpC,EAAaE,eAGbkC,IAiBA,OAfyB,WAKvB,GAJAF,GAAiB,EACjBlC,EAAaK,iBACbL,EAAaC,cAAgB,KAEzBkC,EAMF,MAAMA,IAOZ,IAAII,GAAmB,WACrB,MAAO,CAAC,KAAM,IAGD,SAASC,GAexBC,EACArpI,QACe,IAATA,IACFA,EAAO,IAGT,IAAIpB,EAAQoB,EACRspI,EAAuB1qI,EAAM2qI,eAC7BA,OAA0C,IAAzBD,EAAkC,SAAUh8I,GAC/D,MAAO,mBAAqBA,EAAO,KACjCg8I,EACAE,EAAmB5qI,EAAM6qI,WACzBA,OAAkC,IAArBD,EAA8B,kBAAoBA,EAC/DE,EAAwB9qI,EAAM+qI,gBAC9BA,OAA4C,IAA1BD,OAAmCpuI,EAAYouI,EACjEE,EAAwBhrI,EAAM+pI,yBAC9BA,OAAqD,IAA1BiB,GAA0CA,EACrEC,EAAiBjrI,EAAMkrI,SACvBA,OAA8B,IAAnBD,EAA4B,QAAUA,EAGjDE,GAFgBnrI,EAAMorI,QAEHprI,EAAMw6E,YACzBA,OAAkC,IAArB2wD,GAAsCA,EACnDE,EAAgBrrI,EAAM09D,QACtBA,OAA4B,IAAlB2tE,EAA2B7D,GAAoB6D,EACzDC,EAAiB3C,GAA8B3oI,EAAO8oI,IAkBtD/zB,EAAUr3C,EACd,OAAO,SAAyB6tE,GAK9B,IAAIC,EAAuBD,EAAiBl2I,aAAek2I,EAAiB78I,MAAQ,YAChF2G,EAAcs1I,EAAea,GAE7BC,EAAyB/C,GAAS,GAAI4C,EAAgB,CACxDX,eAAgBA,EAChBE,WAAYA,EACZE,gBAAiBA,EACjBhB,yBAA0BA,EAC1BmB,SAAUA,EACV71I,YAAaA,EACbm2I,qBAAsBA,EACtBD,iBAAkBA,IAGhBG,EAAOJ,EAAeI,KAS1B,IAAIC,EAAkBD,EAAOrwD,UAAU,SAAUnyE,GAC/C,OAAOA,KAGT,SAAS0iI,EAAgB/wH,GACvB,IAAIgxH,EAAWxwD,mBAAQ,WAIrB,IAAIywD,EAAyBjxH,EAAMixH,uBAC/BnC,EAAehB,GAA8B9tH,EAAOkuH,IAExD,MAAO,CAACluH,EAAM6iD,QAASouE,EAAwBnC,KAC9C,CAAC9uH,IACAkxH,EAAeF,EAAS,GACxBC,EAAyBD,EAAS,GAClClC,EAAekC,EAAS,GAExBG,EAAe3wD,mBAAQ,WAGzB,OAAO0wD,GAAgBA,EAAa3xD,UAAYi5B,6BAAgCtgG,IAAMtC,cAAcs7H,EAAa3xD,SAAU,OAAS2xD,EAAeh3B,IAClJ,CAACg3B,EAAch3B,IAEdyzB,EAAextD,qBAAWgxD,GAI1BC,EAAwB9iG,QAAQtuB,EAAM1X,QAAUgmC,QAAQtuB,EAAM1X,MAAM5C,WAAa4oC,QAAQtuB,EAAM1X,MAAMrC,UAC3EqoC,QAAQq/F,IAAiBr/F,QAAQq/F,EAAarlI,OAO5E,IAAIA,EAAQ8oI,EAAwBpxH,EAAM1X,MAAQqlI,EAAarlI,MAC3D6mI,EAAqB3uD,mBAAQ,WAG/B,OA/CJ,SAA6Bl4E,GAC3B,OAAOsnI,EAAgBtnI,EAAMrC,SAAU2qI,GA8C9BS,CAAoB/oI,KAC1B,CAACA,IAEAgpI,EAAY9wD,mBAAQ,WACtB,IAAK0uD,EAA0B,OAAOd,GAKtC,IAAIjB,EAAeH,GAAmB1kI,EAAO8oI,EAAwB,KAAOzD,EAAaR,cASrFI,EAAmBJ,EAAaI,iBAAiBz4I,KAAKq4I,GAC1D,MAAO,CAACA,EAAcI,KACrB,CAACjlI,EAAO8oI,EAAuBzD,IAC9BR,EAAemE,EAAU,GACzB/D,EAAmB+D,EAAU,GAI7BC,EAAyB/wD,mBAAQ,WACnC,OAAI4wD,EAIKzD,EAKFE,GAAS,GAAIF,EAAc,CAChCR,aAAcA,MAEf,CAACiE,EAAuBzD,EAAcR,IAGrCqE,EAAc/wD,qBAAW4tD,GAA0BF,GAAauB,IAEhE+B,EADeD,EAAY,GACc,GACzCpC,EAA+BoC,EAAY,GAG/C,GAAIC,GAA6BA,EAA0Bp3I,MACzD,MAAMo3I,EAA0Bp3I,MAIlC,IAAIu0I,EAAiBluD,mBACjBiuD,EAAmBjuD,iBAAOouD,GAC1BE,EAA4BtuD,mBAC5BmuD,EAAoBnuD,kBAAO,GAC3BquD,EAAmB+B,GAAgB,WAOrC,OAAI9B,EAA0B11H,SAAWw1H,IAAiBH,EAAiBr1H,QAClE01H,EAA0B11H,QAO5B61H,EAAmB7mI,EAAM5C,WAAYopI,KAC3C,CAACxmI,EAAOmpI,EAA2B3C,IAItCP,GAAkCG,GAAqB,CAACC,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAAkBC,EAA2BzB,IAExKgB,GAAkCU,GAAkB,CAACC,EAA0B5mI,EAAO6kI,EAAcgC,EAAoBR,EAAkBC,EAAgBC,EAAmBG,EAA2BzB,EAAkB6B,GAA+B,CAAC9mI,EAAO6kI,EAAcgC,IAG/Q,IAAIuC,EAA2BlxD,mBAAQ,WACrC,OAAoBtoE,IAAMtC,cAAc86H,EAAkB7C,GAAS,GAAIkB,EAAkB,CACvFxyH,IAAK00H,OAEN,CAACA,EAAwBP,EAAkB3B,IAe9C,OAZoBvuD,mBAAQ,WAC1B,OAAI0uD,EAIkBh3H,IAAMtC,cAAcu7H,EAAa7xD,SAAU,CAC7D/qF,MAAOg9I,GACNG,GAGEA,IACN,CAACP,EAAcO,EAA0BH,IAK9C,IAAII,EAAUd,EAAO34H,IAAM+nE,KAAK8wD,GAAmBA,EAInD,GAHAY,EAAQjB,iBAAmBA,EAC3BiB,EAAQn3I,YAAcu2I,EAAgBv2I,YAAcA,EAEhDmlF,EAAY,CACd,IAAIiyD,EAAY15H,IAAMynE,YAAW,SAA2B3/D,EAAOzD,GACjE,OAAoBrE,IAAMtC,cAAc+7H,EAAS9D,GAAS,GAAI7tH,EAAO,CACnEixH,uBAAwB10H,QAK5B,OAFAq1H,EAAUp3I,YAAcA,EACxBo3I,EAAUlB,iBAAmBA,EACtBmB,KAAaD,EAAWlB,GAGjC,OAAOmB,KAAaF,EAASjB,ICtXjC,SAAS5+C,GAAG3kE,EAAGwI,GACb,OAAIxI,IAAMwI,EACK,IAANxI,GAAiB,IAANwI,GAAW,EAAIxI,IAAM,EAAIwI,EAEpCxI,IAAMA,GAAKwI,IAAMA,EAIb,SAASm8G,GAAaC,EAAMC,GACzC,GAAIlgD,GAAGigD,EAAMC,GAAO,OAAO,EAE3B,GAAoB,kBAATD,GAA8B,OAATA,GAAiC,kBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,IAAIC,EAAQj+I,OAAO6C,KAAKk7I,GACpBG,EAAQl+I,OAAO6C,KAAKm7I,GACxB,GAAIC,EAAM35I,SAAW45I,EAAM55I,OAAQ,OAAO,EAE1C,IAAK,IAAIhF,EAAI,EAAGA,EAAI2+I,EAAM35I,OAAQhF,IAChC,IAAKU,OAAOkB,UAAUC,eAAe1B,KAAKu+I,EAAMC,EAAM3+I,MAAQw+F,GAAGigD,EAAKE,EAAM3+I,IAAK0+I,EAAKC,EAAM3+I,KAC1F,OAAO,EAIX,OAAO,ECxBF,SAAS6+I,GAAuBC,GACrC,OAAO,SAA8BnsI,EAAUjG,GAC7C,IAAIqyI,EAAWD,EAAYnsI,EAAUjG,GAErC,SAASsyI,IACP,OAAOD,EAIT,OADAC,EAAiBC,mBAAoB,EAC9BD,GAUJ,SAASE,GAAqBC,GACnC,OAAwC,OAAjCA,EAAWF,wBAA+D1wI,IAAjC4wI,EAAWF,kBAAkCjkG,QAAQmkG,EAAWF,mBAA2C,IAAtBE,EAAWn6I,OAc3I,SAASo6I,GAAmBD,EAAYzC,GAC7C,OAAO,SAA2B/pI,EAAUM,GACxBA,EAAK/L,YAAvB,IAEIm4I,EAAQ,SAAyBC,EAAiBC,GACpD,OAAOF,EAAMJ,kBAAoBI,EAAMF,WAAWG,EAAiBC,GAAYF,EAAMF,WAAWG,IAqBlG,OAjBAD,EAAMJ,mBAAoB,EAE1BI,EAAMF,WAAa,SAAgCG,EAAiBC,GAClEF,EAAMF,WAAaA,EACnBE,EAAMJ,kBAAoBC,GAAqBC,GAC/C,IAAIzyH,EAAQ2yH,EAAMC,EAAiBC,GASnC,MAPqB,oBAAV7yH,IACT2yH,EAAMF,WAAazyH,EACnB2yH,EAAMJ,kBAAoBC,GAAqBxyH,GAC/CA,EAAQ2yH,EAAMC,EAAiBC,IAI1B7yH,GAGF2yH,GC5CI,QAfR,SAA0CG,GAC/C,MAAqC,oBAAvBA,EAAoCJ,GAAmBI,QAA4CjxI,GAE5G,SAAyCixI,GAC9C,OAAQA,OAIHjxI,EAJwBswI,IAAuB,SAAUlsI,GAC5D,MAAO,CACLA,SAAUA,OAIT,SAAwC6sI,GAC7C,OAAOA,GAAoD,kBAAvBA,EAAkCX,IAAuB,SAAUlsI,GACrG,OCdW,SAA4B4B,EAAgB5B,GACzD,IAAI6B,EAAsB,GAEtB+9B,EAAQ,SAAehxC,GACzB,IAAI8S,EAAgBE,EAAehT,GAEN,oBAAlB8S,IACTG,EAAoBjT,GAAO,WACzB,OAAOoR,EAAS0B,EAAczP,WAAM,EAAQG,eAKlD,IAAK,IAAIxD,KAAOgT,EACdg+B,EAAMhxC,GAGR,OAAOiT,EDHEF,CAAmBkrI,EAAoB7sI,WAC3CpE,IENQ,QARR,SAAuCkxI,GAC5C,MAAkC,oBAApBA,EAAiCL,GAAmBK,QAAsClxI,GAEnG,SAAsCkxI,GAC3C,OAAQA,OAEHlxI,EAFqBswI,IAAuB,WAC/C,MAAO,QCJJ,SAASa,GAAkBC,EAAYC,EAAeL,GAC3D,OAAOhF,GAAS,GAAIgF,EAAUI,EAAYC,GAgC7B,QARR,SAAkCC,GACvC,MAA6B,oBAAfA,EAvBT,SAA4BA,GACjC,OAAO,SAA6BltI,EAAUM,GAC1BA,EAAK/L,YAAvB,IAII44I,EAHAvC,EAAOtqI,EAAKsqI,KACZwC,EAAsB9sI,EAAK8sI,oBAC3BC,GAAa,EAEjB,OAAO,SAAyBL,EAAYC,EAAeL,GACzD,IAAIU,EAAkBJ,EAAWF,EAAYC,EAAeL,GAU5D,OARIS,EACGzC,GAASwC,EAAoBE,EAAiBH,KAAcA,EAAcG,IAE/ED,GAAa,EACbF,EAAcG,GAITH,IAK+BI,CAAmBL,QAActxI,GAEtE,SAAiCsxI,GACtC,OAAQA,OAEJtxI,EAFiB,WACnB,OAAOmxI,MC/BX,IAAI/E,GAAY,CAAC,sBAAuB,yBAA0B,kBAE3D,SAASwF,GAAgCV,EAAiBD,EAAoBK,EAAYltI,GAC/F,OAAO,SAAkCkB,EAAO0rI,GAC9C,OAAOM,EAAWJ,EAAgB5rI,EAAO0rI,GAAWC,EAAmB7sI,EAAU4sI,GAAWA,IAGzF,SAASa,GAA8BX,EAAiBD,EAAoBK,EAAYltI,EAAUM,GACvG,IAIIY,EACA0rI,EACAI,EACAC,EACAE,EARAO,EAAiBptI,EAAKotI,eACtBC,EAAmBrtI,EAAKqtI,iBACxBC,EAAqBttI,EAAKstI,mBAC1BC,GAAoB,EAuCxB,SAASC,EAAsB1sI,EAAW2sI,GACxC,IAAIC,GAAgBL,EAAiBI,EAAcnB,GAC/CqB,GAAgBP,EAAetsI,EAAWF,GAG9C,OAFAA,EAAQE,EACRwrI,EAAWmB,EACPC,GAAgBC,GA1BpBjB,EAAaF,EAAgB5rI,EAAO0rI,GAChCC,EAAmBP,oBAAmBW,EAAgBJ,EAAmB7sI,EAAU4sI,IACvFO,EAAcD,EAAWF,EAAYC,EAAeL,IAyBhDoB,GApBAlB,EAAgBR,oBAAmBU,EAAaF,EAAgB5rI,EAAO0rI,IACvEC,EAAmBP,oBAAmBW,EAAgBJ,EAAmB7sI,EAAU4sI,IACvFO,EAAcD,EAAWF,EAAYC,EAAeL,IAmBhDqB,EAfN,WACE,IAAIC,EAAiBpB,EAAgB5rI,EAAO0rI,GACxCuB,GAAqBP,EAAmBM,EAAgBlB,GAG5D,OAFAA,EAAakB,EACTC,IAAmBhB,EAAcD,EAAWF,EAAYC,EAAeL,IACpEO,EAUkBiB,GAClBjB,EAGT,OAAO,SAAgC/rI,EAAW2sI,GAChD,OAAOF,EAAoBC,EAAsB1sI,EAAW2sI,IAzC5Df,EAAaF,EAFb5rI,EA2C4FE,EA1C5FwrI,EA0CuGmB,GAxCvGd,EAAgBJ,EAAmB7sI,EAAU4sI,GAC7CO,EAAcD,EAAWF,EAAYC,EAAeL,GACpDiB,GAAoB,EACbV,IA6CI,SAASkB,GAA0BruI,EAAUd,GAC1D,IAAIovI,EAAsBpvI,EAAMovI,oBAC5BC,EAAyBrvI,EAAMqvI,uBAC/BC,EAAiBtvI,EAAMsvI,eACvBz0I,EAAU8tI,GAA8B3oI,EAAO8oI,IAE/C8E,EAAkBwB,EAAoBtuI,EAAUjG,GAChD8yI,EAAqB0B,EAAuBvuI,EAAUjG,GACtDmzI,EAAasB,EAAexuI,EAAUjG,GAO1C,OADsBA,EAAQ6wI,KAAO6C,GAAgCD,IAC9CV,EAAiBD,EAAoBK,EAAYltI,EAAUjG,GCpFpF,IAAIiuI,GAAY,CAAC,OAAQ,iBAAkB,mBAAoB,qBAAsB,uBAwBrF,SAASz8H,GAAM3O,EAAK6xI,EAAW7gJ,GAC7B,IAAK,IAAIP,EAAIohJ,EAAUp8I,OAAS,EAAGhF,GAAK,EAAGA,IAAK,CAC9C,IAAIqqC,EAAS+2G,EAAUphJ,GAAGuP,GAC1B,GAAI86B,EAAQ,OAAOA,EAGrB,OAAO,SAAU13B,EAAUjG,GACzB,MAAM,IAAIhC,MAAM,gCAAkC6E,EAAM,QAAUhP,EAAO,uCAAyCmM,EAAQ2wI,qBAAuB,MAIrJ,SAASgE,GAAYzsI,EAAGC,GACtB,OAAOD,IAAMC,EAKR,SAASysI,GAAcC,GAC5B,IAAItuI,OAAiB,IAAVsuI,EAAmB,GAAKA,EAC/BC,EAAkBvuI,EAAKwuI,WACvBA,OAAiC,IAApBD,EAA6BnF,GAAkBmF,EAC5DE,EAAwBzuI,EAAK0uI,yBAC7BA,OAAqD,IAA1BD,EAAmCE,GAAkCF,EAChGG,EAAwB5uI,EAAK6uI,4BAC7BA,OAAwD,IAA1BD,EAAmCE,GAAqCF,EACtGG,EAAwB/uI,EAAKgvI,oBAC7BA,OAAgD,IAA1BD,EAAmCE,GAA6BF,EACtFG,EAAuBlvI,EAAKqpI,gBAC5BA,OAA2C,IAAzB6F,EAAkCC,GAAyBD,EAEjF,OAAO,SAAiB1C,EAAiBD,EAAoBK,EAAYhuI,QACzD,IAAVA,IACFA,EAAQ,IAGV,IAAIwwI,EAAQxwI,EACRywI,EAAaD,EAAM9E,KACnBA,OAAsB,IAAf+E,GAA+BA,EACtCC,EAAuBF,EAAMhC,eAC7BA,OAA0C,IAAzBkC,EAAkClB,GAAckB,EACjEC,EAAwBH,EAAM/B,iBAC9BA,OAA6C,IAA1BkC,EAAmChE,GAAegE,EACrEC,EAAwBJ,EAAM9B,mBAC9BA,OAA+C,IAA1BkC,EAAmCjE,GAAeiE,EACvEC,EAAwBL,EAAMtC,oBAC9BA,OAAgD,IAA1B2C,EAAmClE,GAAekE,EACxEC,EAAenI,GAA8B6H,EAAO1H,IAEpDsG,EAAsB/iI,GAAMuhI,EAAiBkC,EAA0B,mBACvET,EAAyBhjI,GAAMshI,EAAoBsC,EAA6B,sBAChFX,EAAiBjjI,GAAM2hI,EAAYoC,EAAqB,cAC5D,OAAOR,EAAWnF,EAAiB/B,GAAS,CAE1CmC,WAAY,UAEZF,eAAgB,SAAwBj8I,GACtC,MAAO,WAAaA,EAAO,KAG7Bq7I,yBAA0B5gG,QAAQykG,GAElCwB,oBAAqBA,EACrBC,uBAAwBA,EACxBC,eAAgBA,EAChB5D,KAAMA,EACN8C,eAAgBA,EAChBC,iBAAkBA,EAClBC,mBAAoBA,EACpBR,oBAAqBA,GACpB4C,KAGqBrB,YC2DrB,IftJiCsB,MgBF/BtJ,0BhBGAA,GAAQsJ,G,IiBRLC,G,oBAgBL,SAASC,GAAuBC,EAAyBphJ,GAC9D,MAAO,CACLkR,KAAMkwI,EACNp7D,QAAShmF,I,SAnBDkhJ,K,kCAAAA,E,4CAAAA,E,4CAAAA,E,wEAAAA,E,0EAAAA,E,6CAAAA,Q,KAuBL,ICfHG,GCUAC,GAA4B5yB,GAC9B,CACE9lG,OAAQ,OACRS,OAAQ,cAIRk4H,GAAuB7yB,GACzB,CACE9lG,OAAQ,OAER7C,QAAS,cAqHEy7H,OAXS,SAACtvI,EAAkB0rI,GAAnB,MAAoD,CAC1Et5I,eAAgB4N,EAAM5N,eACtBmM,SAAU,kBAAMyB,OAGS,SAAClB,GAAD,MAAmD,CAC5E21E,mBAAoB,SAACrnF,GACnB0R,EAASmwI,GAAyBD,GAAYO,qBAAsBniJ,QAIzDkiJ,EA5FuB,SAACz2H,GAErCqgE,qBAAU,WAER,IAAMs2D,EAAiB,CACrBC,MAAO52H,EAAM42H,OAAQ,uCACrBhZ,QAAU59G,EAAM49G,SAAU,6CAE1BiZ,GAAI,CAEFC,mBAAmB,EACnBj5H,OAAQ,OACRiG,OAAQ,KACRizH,gBAAgB,IAQdC,EAAa,gBAASL,GAI5B,OAFA59I,gBAAgBk+I,KAAKD,GAEd,WACLj+I,gBAAgBurB,aAEjB,CAACtE,EAAM42H,MAAO52H,EAAM49G,UAEvB,IAAMsZ,EAA4Bx2D,kBAAO,GACnCy2D,EAAmBz2D,kBAAO,GAuChC,OAtCAL,qBAAU,WAkCR,OAjCAtnF,gBAAgBq+I,wBAAhB,WAA0C,WAAWlxI,GAAX,iFAEpB,UAAhBA,EAAOC,KAF6B,mBAGjC,uBAA8B,OAAND,QAAM,IAANA,GAAA,UAAAA,EAAQ+0E,eAAR,eAAiB47D,KAAM,IAHd,gBAMpC,OANoC,SAM9B99I,gBAAgBs+I,KAAK,eANS,OAQpC,OARoC,SAQ9Bt+I,gBAAgBu+I,IAAI,CAAEnxI,KAAM,wBAAyB80E,QAASj7D,EAAMu3H,sBARtC,gCAepB,gBAAhBrxI,EAAOC,KAf6B,qBAiBN,IAA7BgxI,EAAiB79H,QAjBkB,iBAmBd,OAnBc,UAmBRvgB,gBAAgBs+I,KAAK,+BAnBb,kBAmB1Bp8D,EAnB0B,EAmB1BA,WAEAt9C,EAAS/kC,aAAsBqiF,GACrCj7D,EAAM47D,mBAAmBj+C,GACzBw5G,EAAiB79H,SAAU,GAvBK,wBA0BpC49H,EAA0B59H,SAAU,EA1BA,2CAiCnC,WACLvgB,gBAAgBq+I,wBAA0B,QAE3C,CAACp3H,EAAMzmB,iBAER,yBAAK2S,UAAWsqI,IACd,yBAAKtqI,UAAS,UAAKqqI,GAAL,mCCxHPiB,GAEN,EAFMA,GAGJ,GAHIA,GAMN,GANMA,GASH,GATGA,GAUJ,GAVIA,GAWH,GAXGA,GAYD,GAZCA,GAaN,GAbMA,GAcL,GAdKA,GAeL,GAfKA,GAgBP,GAhBOA,GAiBJ,GAjBIA,GAkBL,GFXF,SAAU,GAAOzmG,GACrB,QADqB,IAAAA,MAAA,SACHlvC,IAAdkvC,EAAMg1E,IACR,OAAOh1E,EAAMg1E,IAEf,QAAelkH,IAAXy0I,GAAsB,CAExB,IAAImB,EAAW,GAdW,SAeT,OAAbA,GAkBF,SAAiB7xB,EAAgB8xB,QAAA,IAAAA,OAAA,GACrC,IAAIpxB,EAAMoW,KACNpW,GACFA,EAAIxsD,gBAAgBpqD,aAAa,MAAOk2G,EAAQ,MAAQ,OAGtD8xB,GACF,GAxC0B,QAwCK9xB,EAAQ,IAAM,KAI/C,EADA0wB,GAAS1wB,GA1BL,CADA0wB,GAAsB,MAAbmB,GAIX,IAAInxB,EAAMoW,UACK76H,IAAXy0I,IAAwBhwB,GAE1B,EADAgwB,GAAqG,SAA1FhwB,EAAI99F,MAAQ89F,EAAI99F,KAAK3S,aAAa,QAAWywG,EAAIxsD,gBAAgBjkD,aAAa,SAK7F,QAASygI,GAuBL,SAAUqB,GAAkB9iJ,EAAak8C,GAS7C,YAT6C,IAAAA,MAAA,IACzC,GAAOA,KACLl8C,IAAQ2iJ,GACV3iJ,EAAM2iJ,GACG3iJ,IAAQ2iJ,KACjB3iJ,EAAM2iJ,KAIH3iJ,EG/DF,IAAM,GAAS,ECkChB,SAAU+iJ,GACdzxI,EACA6Z,G,IACA,wDAEA,IAAM63H,EAAW1xI,EACjB,OAAI0xI,EAASC,OAYa,KAJxB76H,EAAW,WAAevK,QAAQuK,IAIrB3kB,OACJu/I,EAAS73H,GAGX63H,EAAS,EAAD,KAAO73H,GAAa,CAAE/C,SAAQ,KAQtC,gBAAmB,MAAnB,EAAK,GAAe9W,EAAM6Z,GAAU/C,IAUzC,SAAUwiE,GACds4D,EACA/3I,QAAA,IAAAA,MAAA,IAEQ,QAAAg4I,mBAAA,mBAiCR,OA/BqD,SACnDC,EACAC,EACAC,EACAC,EACArnG,GAGA,GAAI,iBAAqBmnG,GACvB,OAAOA,EAGT,IACMG,EAsGV,SACED,EACArnG,G,IACA,wDAKA,IAHA,IAAMsnG,EAAqB,GACrBx1F,EAAqC,GAEvB,MAAAy1F,EAAA,eAAU,CAAzB,IAAMt4H,EAAK,KACd6iC,EAAW1sD,KAAK6pB,GAASA,EAAM9T,WAC/B,GAAOmsI,EAAYr4H,GAKrB,OAFAq4H,EAAWnsI,UAAY49G,GAAS,CAACsuB,EAAev1F,GAAa,CAAEkjE,IAAK,GAAOh1E,KAEpEsnG,EArHcE,CAAqBH,EAAernG,EAAOknG,EAkFlE,SACED,EACAQ,G,MAEIC,EAEqB,kBAAdD,GAA+C,kBAAdA,GAA+C,mBAAdA,IACxD,MAChBR,GAAcQ,EADjBC,EAEW,GAEXA,EAAmBD,EAGrB,OAAOC,EAjG0CC,CAAoBV,EAAuBE,IAG1F,GAAIC,EAAiB,CACnB,GAAIA,EAAgBpuI,UAAW,CAG7B,IAAM4uI,EAAgBR,EAAgBpuI,UACtC,OAAO,gBAAC4uI,EAAa,KAAKN,IAG5B,GAAIF,EAAgBjuI,OAClB,OAAOiuI,EAAgBjuI,OAAOmuI,EAAYN,GAI9C,OAAO,gBAACA,EAAgB,KAAKM,KASjC,IAAMO,GAAiB9jB,IAAgB,SAAA3uH,GAAQ,OAAAs5E,GAAA,MAQzC,SAAUo5D,GACdX,EACAY,GAEA,IAAMn7G,EAA4C,GAG5Co7G,EAAab,E,WAER,GACT,GAAIY,EAAM3jJ,eAAe,GAAO,CAK9B,IAAM6jJ,EAAiE,SAACf,G,IAAgB,wDACtF,GAAI70I,EAAK9K,OAAS,EAGhB,MAAM,IAAI0F,MAAM,6FAMlB,OAAOi7I,GACLH,EAAM,GAENb,EACAc,EAAW,GACXA,EAAWD,OAASC,EAAWD,MAAM,GAGrCC,EAAWG,gBAAkBH,EAAWG,eAAe,GACtDH,EAAmBhoG,QAGxBioG,EAAKlB,QAAS,EACdn6G,EAAO,GAAQq7G,IA7BnB,IAAK,IAAM,KAAQF,E,EAAR,GAiCX,OAAOn7G,EAqDT,SAASs7G,GAKPE,EACAlB,EACAC,EACAkB,EACAhB,EACArnG,GAEA,YAA6BlvC,IAAzBs3I,EAAcvkJ,OACTukJ,EAAcvkJ,OAAOqjJ,EAAgBC,EAAWkB,EAAahB,GAG3DQ,GAAeO,EAAfP,CACPX,EACAC,EACAkB,EACAhB,EACArnG,GC3OC,IAAMsoG,GAAoB,gBAAwC,CACvEC,eAAgB,CACd9iB,qBAAqB,EACrBF,SAAU,GACVC,eAAgB,MCyBd,SAAUgjB,GAOdzsH,EACA9sB,QAAA,IAAAA,MAAA,IAEQ,QAAAw5I,eACAxB,QADA,YACAA,YAEFyB,EAA4D,SAChExB,GAEA,IA2GFz9I,EACAqoE,EACAj8B,EA7GQ0vF,GA2GR97H,EA1GIwF,EAAQxF,YA2GZqoE,EA1GI,aAAiBw2E,IA2GrBzyG,EA1GI5mC,EAAQ4mC,OAgHL,GAAeowF,YAAYpwF,GADZ,CAAC,QAAS,SAAU,UACiBpsC,EAAaqoE,EAAQy2E,iBA7GxEI,EAAe15I,EAAQmH,MAEzBuyI,IAEFzB,EAAiB,EAAH,KACTA,GACAyB,EAAazB,KAIpB,IAAMlnG,EAAQknG,EAAelnG,OAASulF,EAASvlF,MAEzCxlC,EAuDV,SAASouI,EACP35H,EACA+wB,G,IACA,wDAIA,IAFA,IAAMxlC,EAAS,GAEW,MAAAquI,EAAA,eAAW,CAAhC,IAAIC,EAAa,KAChBA,IAEFA,EAC2B,oBAAlBA,EACFA,EAAsD75H,EAAO+wB,GAC9D8oG,EAEF7jJ,MAAMW,QAAQkjJ,KAChBA,EAAgBF,EAAc,gBAAC35H,EAAO+wB,GAAU8oG,KAGlD,GAAOtuI,EAAQsuI,IAInB,OAAOtuI,EA9EUouI,CAAe1B,EAAgBlnG,EAAO/wC,EAAQuL,OAAQ+qH,EAAS/qH,OAAQ0sI,EAAe1sI,QAC/F+Q,EAsCV,SACE0D,EACA+wB,EACAxlC,G,IACA,wDAEA,OAAOu8H,GAAe,aACjBc,EAAUtoI,KAAI,SAACgc,GAChB,MAAkB,oBAAXA,EAAwBA,EAAO0D,EAAO+wB,EAAOxlC,GAAU+Q,MA9CjDw9H,CACb7B,EACAlnG,EACAxlC,EACAvL,EAAQsc,OACRg6G,EAASh6G,OACT27H,EAAe37H,QAGXy9H,EAAY,OACb9B,GAAc,CACjB37H,OAAM,EACN/Q,OAAM,EACN2tI,eAAgB58H,EAChBy0B,MAAK,IAGP,OAAOjkB,EAAKitH,IAed,OAZAN,EAAgBj/I,YAAcwF,EAAQxF,aAAesyB,EAAKj5B,KAKtDmkJ,IACDyB,EAAuD7kJ,OAAS6qF,GAAcg6D,EAAiB,CAAEzB,YAAW,KAG/G,GAAOyB,EAAiBz5I,EAAQg6I,SAGzBP,ECvGT,IAAMQ,GAAc,W,IAAC,sDAGnB,IAFA,IAAMt8G,EAAiC,GAEpB,MAAAzd,EAAA,eAGjB,IAHG,IAAMgB,EAAI,KACPrqB,EAAOb,MAAMW,QAAQuqB,GAAQA,EAAOltB,OAAO6C,KAAKqqB,GAEpC,MAAArqB,EAAA,eAAM,CAAnB,IAAMhC,EAAG,KACZ8oC,EAAO9oC,GAAO,EAIlB,OAAO8oC,GAQIu8G,GAAoBD,GAAY,CAC3C,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAQWE,GAAwBF,GAAY,CAC/C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAQWG,GAAwBH,GAAYE,GAAuBD,IAgB3DG,IATkBJ,GAAYG,GAAuB,CAChE,SAQ6BH,GAAYG,GAAuB,CAChE,SACA,OACA,QACA,UACA,MACA,WAmCWE,IA3BkBL,GAAYI,GAAiB,CAC1D,WAQ0BJ,GAAYG,GAAuB,CAC7D,UAQ0BH,GAAYG,GAAuB,CAC7D,UAQ8BH,GAAYG,GAAuB,CACjE,WACA,OACA,WACA,QACA,MACA,SACA,UAQWG,GAAmBN,GAAYG,GAAuB,CACjE,YACA,WACA,OACA,aACA,cACA,aACA,iBACA,aACA,OACA,UAQWI,GAAkBP,GAAYM,GAAkB,CAC3D,SACA,MACA,iBACA,eACA,UACA,UACA,OACA,SACA,YACA,OACA,MACA,YACA,MACA,WACA,UACA,cACA,WACA,WACA,MACA,OACA,OACA,OACA,QACA,UAQWE,GAAqBR,GAAYM,GAAkB,CAC9D,iBACA,OACA,UACA,OACA,YACA,cACA,WACA,WACA,OACA,SA0GWG,IAlGmBT,GAAYM,GAAkB,CAC5D,OACA,WACA,aAG8BN,GAAYG,GAAuB,CACjE,WACA,UAQ6BH,GAAYG,GAAuB,CAChE,cACA,gBAe0BH,GAAYG,GAAuB,CAC7D,UACA,UAQ0BH,GAAYG,GAAuB,CAC7D,UACA,UACA,UACA,UAGgCH,GAAYG,GAAuB,CACnE,SAG2BH,GAAYG,GAAuB,CAC9D,SAQ4BH,GAAYG,GAAuB,CAC/D,gBACA,SACA,UACA,UACA,SACA,aACA,WAQ8BH,GAAYG,GAAuB,CACjE,QACA,kBACA,sBACA,oBACA,MACA,SACA,aACA,iBACA,UACA,MACA,SACA,UAQ2BH,GAAYG,GAAuB,CAC9D,MACA,cACA,SACA,MACA,SACA,SACA,WAaWO,GAAgBP,GAiBvB,SAAUQ,GAEd56H,EACA66H,EACAC,GAaA,I,MALMnkJ,EAAUX,MAAMW,QAAQkkJ,GAExBl9G,EAA8B,GAGlB,MAFL3pC,OAAO6C,KAAKmpB,GAEP,eAAM,CAAnB,IAAMnrB,EAAG,QAER8B,GAAYkkJ,EAA4ChmJ,IACzD8B,GAAYkkJ,EAA8B90I,QAAQlR,IAAQ,GAClC,IAAzBA,EAAIkR,QAAQ,UACa,IAAzBlR,EAAIkR,QAAQ,WAEQ+0I,IAA0D,KAApB,QAAjB,EAAAA,SAAiB,eAAE/0I,QAAQlR,MAEpE8oC,EAAO9oC,GAAOmrB,EAAOnrB,IAIzB,OAAO8oC,EC7aT,IAAMo9G,GAAoB,SAAC1sG,EAAe0C,GACxC,OAAIA,EAAMi1F,QAAQ7wI,eAAek5C,GACxB0C,EAAMi1F,QAAQ33F,GAEhBA,GAIH2sG,GAAmB,SAACC,GACxB,IAAMC,EAAgBp5E,WAAWm5E,GAC3BE,EAAiBjkJ,MAAMgkJ,GAAiB,EAAIA,EAC5CE,EAAkBlkJ,MAAMgkJ,GAAiB,GAAKA,EAAc7kJ,WAIlE,MAAO,CACL9B,MAAO4mJ,EACPl0B,KAJeg0B,EAAI32I,UAAU82I,EAAgB/kJ,WAAWiC,SAItC,OA+ET+iJ,GAAe,SAACrgI,EAAsC+1B,GACjE,QAAgBlvC,IAAZmZ,GAA4C,kBAAZA,GAAoC,KAAZA,EAC1D,OAAOA,EAGT,IAAMsgI,EAAgBtgI,EAAQzW,MAAM,KACpC,OAAI+2I,EAAchjJ,OAAS,EAClByiJ,GAAkB//H,EAAS+1B,GAG7BuqG,EAAch6I,QAAO,SAACi6I,EAAkBC,GAC7C,OAAOT,GAAkBQ,EAAUxqG,GAAS,IAAMgqG,GAAkBS,EAAUzqG,OC/G5E0qG,GAAqC,CACzC7kI,MAAO,aACPG,IAAK,YAGD2kI,GAAmB,CACvB/lJ,KAAM,WACNgmJ,MAAO,kBCRH,GAAmB,CACvBhmJ,KAAM,gBAGFimJ,GAAsC,CAC1ChlI,MAAO,aACPG,IAAK,YCaM8kI,GAAsDtC,IAdhB,SAAAv5H,GACzC,IAAA/C,EAAA,EAAAA,SACF6+H,EAAclB,GAAqD56H,EAAOo6H,IAChF,OAAI,WAAepnI,MAAMiK,GAAY,EAC5B,KAOF,GAJO47H,GAA2C74H,EAAO,CAC9DrqB,KAAM,QAGMA,KAAI,KAAKmmJ,GAAc7+H,KAG2D,CAChGziB,YAAa,YACb8hB,ODZ4D,SAAC0D,EAAO+wB,EAAOxlC,GACnE,IAAAwwI,EAAA,EAAAA,KAAMC,EAAA,EAAAA,OAAQC,EAAA,EAAAA,cAAeC,EAAA,EAAAA,MAAOC,EAAA,EAAAA,aAAchxF,EAAA,EAAAA,MAAOj/C,EAAA,EAAAA,UAE3D22C,EAAa8yE,GAAoB,GAAkB5kF,GAEzD,MAAO,CACLp7C,KAAM,CACJo7C,EAAM80F,MAAM9T,OACZlvE,EAAWltD,KACX,CACE2oB,OAAQ/S,EAAO+S,OACftD,QAASzP,EAAOyP,QAChB6C,OAAQs+H,EAAe,OAAS,OAChCr+H,MAAO,QAETi+H,GAAQ,CAAE9sD,UAAmB,IAAT8sD,EAAgB,EAAIA,IACvCE,IAAmBF,IAASC,IAAY,CACvC7sD,WAAY,GAEd6sD,IACGC,GAAiB,CAChB9sD,WAAY,GAEhB+sD,GAAS,CACPE,UAAWR,GAASM,IAAUA,GAEhC/wF,GAAS,CACPA,MAAOA,GAETj/C,OEgCN,IAIamwI,GAET9C,IArEuC,SAAAv5H,GACjC,QAAAs8H,GAAA,qBAAsBL,EAAA,EAAAA,cAAetiC,EAAA,EAAAA,KAAM,qCAS7C4iC,EAAgE,WAAej8I,IACnF0f,EAAM/C,UACN,SAACm/B,EAA4Ct2C,GAC3C,IAAKs2C,EACH,OAAO,KAGT,IAiCgBl7B,EAjCCk7B,IAuCH,kBAATl7B,GACJA,EAA4B/a,MAE7B+a,EAA4B/a,KAA6B3L,cAAgBqhJ,GAAUrhJ,YA1C1D,CACvB,IAAMgiJ,EAAoC,CACxCR,QAASC,GAGX,OAAO,eAAmB7/F,EAAK,OAC1BogG,GACApgG,EAAMp8B,QA0BnB,IAAsBkB,EAtBhB,OAAOk7B,KAIL0/F,EAAclB,GAAqDrqI,EAAM6pI,IAEzEqC,EAAQ5D,GAAmC74H,EAAO,CACtDrqB,KAAM+mJ,EACNf,MAAO,QAGT,OAEI,GAACc,EAAM9mJ,KAAI,KAAKmmJ,GAFhBniC,EAGE,GAAC8iC,EAAMd,MAAK,KAAEY,GAKiBA,KAsBR,CAC7B/hJ,YAAa,QACb8hB,OHnE+C,SAAC0D,EAAO+wB,EAAOxlC,G,kBAE5D4wI,EAAA,EAAAA,aACAQ,EAAA,EAAAA,WACAC,EAAA,EAAAA,SACAb,EAAA,EAAAA,KACApiC,EAAA,EAAAA,KACAkjC,EAAA,EAAAA,gBACAC,EAAA,EAAAA,cACAb,EAAA,EAAAA,cACA/vI,EAAA,EAAAA,UAGI22C,EAAa8yE,GAAoB+lB,GAAkB3qG,GAGnDgsG,EAAcxxI,GAAUA,EAAOwxI,YAAcxxI,EAAOwxI,YAAc/8H,EAAMi7H,IACxEn4H,EAAYvX,GAAUA,EAAOuX,UAAYvX,EAAOuX,UAAY9C,EAAM8C,UAClEk6H,EAAWzxI,GAAUA,EAAOyxI,SAAWzxI,EAAOyxI,SAAWh9H,EAAMg9H,SAC/DhiI,EAAUzP,GAAUA,EAAOyP,QAAUzP,EAAOyP,QAAUgF,EAAMhF,QAG5D,EDDgB,SACtBigI,EACAlqG,GAEA,QAAYlvC,IAARo5I,GAA6B,KAARA,EACvB,MAAO,CACLgC,OAAQ,CACN1oJ,MAAO,EACP0yH,KAAM,MAERi2B,UAAW,CACT3oJ,MAAO,EACP0yH,KAAM,OAKZ,GAAmB,kBAARg0B,EACT,MAAO,CACLgC,OAAQ,CACN1oJ,MAAO0mJ,EACPh0B,KAAM,MAERi2B,UAAW,CACT3oJ,MAAO0mJ,EACPh0B,KAAM,OAKZ,IAAMk2B,EAAWlC,EAAI12I,MAAM,KAG3B,GAAI44I,EAAS7kJ,OAAS,EACpB,MAAO,CACL2kJ,OAAQ,CACN1oJ,MAAO,EACP0yH,KAAM,MAERi2B,UAAW,CACT3oJ,MAAO,EACP0yH,KAAM,OAMZ,GAAwB,IAApBk2B,EAAS7kJ,OACX,MAAO,CACL2kJ,OAAQjC,GAAiBD,GAAkBoC,EAAS,GAAIpsG,IACxDmsG,UAAWlC,GAAiBD,GAAkBoC,EAAS,GAAIpsG,KAK/D,IAAMqsG,EAAgBpC,GAAiBD,GAAkBE,EAAKlqG,IAE9D,MAAO,CACLksG,OAAQG,EACRF,UAAWE,GC1DP,MAAEH,EAAA,EAAAA,OAAQC,EAAA,EAAAA,UAEVG,EAAmB,IAAI,GAAMH,EAAU3oJ,MAAQ2oJ,EAAUj2B,KACzDq2B,EAAiB,IAAI,GAAML,EAAO1oJ,MAAQ0oJ,EAAOh2B,KAGjDs2B,EAAc,CAClBC,aAAc,YAIVC,EAAkB,CAEtB,yBAA0B,CACxBtuD,WAAY8sD,EAAgB,EAAI,IAIpC,OAAItiC,EACK,CACLhkH,KAAM,CACJktD,EAAWltD,KACX,CACE+nJ,SAAU,OACVV,SAAQ,EACRl6H,UAAS,EACThF,MAAO,OACPL,SAAU,UACVI,OAAQ,QAEVg/H,IAAe,KACb,EAACF,EAAa,iBAAmB,cAAelB,GAAQoB,IAAoBA,EAC7E,GACDC,IAAa,KACX,EAACH,EAAa,aAAe,kBAAmBlB,GAAQqB,IAAkBA,EAC3E,GACD5wI,EACA,CAGEuS,QAAS,QAEXk+H,GAAc,CACZ9+H,OAAQs+H,EAAe,OAAS,SAIpCR,MAAO,CACL94F,EAAW84F,MACX,CACEl9H,QAAS,OACTi/H,SAAU,OACV/3F,WAAY03F,EACZM,YAAaN,EACbzkF,UAAW0kF,EACXhzG,aAAcgzG,EACd7/H,SAAU,UACVD,UAAW,aACXxC,QAASqgI,GAAargI,EAAS+1B,GAE/BjzB,MAA2B,IAApBo/H,EAAU3oJ,MAAc,OAAS,eAAe2oJ,EAAU3oJ,MAAQ2oJ,EAAUj2B,KAAI,IACvF+1B,SAAU,QAEVl0B,UAAW,EAAF,CACP,MAAK,GACHxqG,OAAQ,GAAG,GAAM2+H,EAAO1oJ,MAAQ0oJ,EAAOh2B,KAAI,IAAI,GAAMi2B,EAAU3oJ,MAAQ2oJ,EAAUj2B,MAE9Es2B,IAEFE,IAGPZ,IAAe,KACb,EAACF,EAAa,iBAAmB,cAAelB,GAAQoB,IAAoBA,EAC7E,GACDC,IAAa,KACX,EAACH,EAAa,aAAe,kBAAmBlB,GAAQqB,IAAkBA,EAC3E,GACDH,GAAc,CACZiB,cAAehB,EAAW,cAAgB,MAG1C/+H,OAAyB,IAAjBo/H,EAAO1oJ,MAAc,OAAS,eAAe0oJ,EAAO1oJ,MAAQ0oJ,EAAOh2B,KAAI,IAE/E6B,UAAW,CACT,MAAO,CACLk0B,SAA8B,IAApBE,EAAU3oJ,MAAc,OAAS,eAAe2oJ,EAAU3oJ,MAAQ2oJ,EAAUj2B,KAAI,QAI/F01B,GAAc,CACbiB,cAAehB,EAAW,iBAAmB,SAC7C/+H,OAAQ,eAAeo/H,EAAO1oJ,MAAQ0oJ,EAAOh2B,KAAI,IAEjD6B,UAAW,CACT,MAAO,CACLhmG,UAA4B,IAAjBm6H,EAAO1oJ,MAAc,OAAS,eAAe0oJ,EAAO1oJ,MAAQ0oJ,EAAOh2B,KAAI,SAQvF,CACLtxH,KAAM,CACJktD,EAAWltD,KACX,CACE8oB,QAAS,OACTm/H,cAAejB,EAAcC,EAAW,cAAgB,MAASA,EAAW,iBAAmB,SAC/Fc,SAAU,SACV5/H,MAAO,OACPD,OAAQs+H,EAAe,OAAS,OAChCa,SAAQ,EACRl6H,UAAS,EACT9H,QAASqgI,GAAargI,EAAS+1B,GAC/BvzB,UAAW,aAEXsrG,UAAW,GAAF,GACP,MAAOy0B,GAAW,EAIjBX,EAAW,uBAAyB,yBAA0B,CAC7DD,GAAc,CACZh3F,WAAY,GAAGu3F,EAAU3oJ,MAAQ2oJ,EAAUj2B,OAE5C01B,GAAc,CACb/jF,UAAW,GAAGqkF,EAAO1oJ,MAAQ0oJ,EAAOh2B,OAEvC,GAEEw2B,IAGP1B,GAAQ,CACN9sD,UAAmB,IAAT8sD,EAAgB,EAAIA,GAEhCc,IAAe,KACb,EAACF,EAAa,iBAAmB,cAAelB,GAAQoB,IAAoBA,EAC7E,GACDC,IAAa,KACX,EAACH,EAAa,aAAe,kBAAmBlB,GAAQqB,IAAkBA,EAC3E,GACD5wI,KGlGJ8tI,QATmB,CACnB6D,KAAMhC,MClEF,SAAUiC,GAAyBrsF,EAAsBslE,GAC7D,IAAM55C,EAkBR,WACQ,IAAGxgD,EAAH,cAAG,GACT,OAAO,WAAM,OAAAA,GAAS,SAAApoC,GAAS,cApBXwpJ,GACZzE,EAAA,iBAAAA,eACA9iB,EAAA,EAAAA,oBAaR,OAZA,aAAgB,WAId,OAHKA,GACH,GAAee,QAAQp6C,GAElB,WACAq5C,GACH,GAAegB,UAAUr6C,MAI5B,CAACq5C,IAEG,GAAeQ,YAAYvlE,EAAYslE,EAAWuiB,GCH3D,IAAM,GAAgB,CAAC,QAAS,UAoD1B,SAAU0E,GAMd3gI,EACA4gI,EACAC,EACAC,EACAtN,GAIQ,IAAAuN,GAFRD,EAAeA,GAAgB,CAAEC,MAAO,GAAIx3G,YAAQ/kC,IAE5Cu8I,MAAO,IAAAx3G,cAAA,IAAS,EAAT,KAETy3G,EAAU,cAAiB,SAACr+H,EAAwBs+H,GACxD,IAAMhiI,EAAS,WAETg6G,EAAWwnB,GAAyBl3G,EAAQw3G,GAC1C,IAAA9hI,OAA+B,GAAL,EAAAiiI,IAAK,uBACjCC,EAAkBN,EAAWA,EAASl+H,QAASne,EAG/C0zH,EAASj5G,EAAOhD,SAAYgD,EAAOhD,QAAgBmlI,kBAAqB,GAC9E,IAAKniI,EAAOhD,SAAWolI,IAAqBnpB,EAAM,IAAMv1G,EAAM1D,SAAWi5G,EAAM,GAAI,CAEjF,IAAMopB,EAAqE,SAAClW,GAC1E,OAAAE,GAAyBF,EAAYwV,EAAYS,EAAkB1+H,EAAM1D,SAI1EqiI,EAA6DF,iBAAmB,CAC/ER,EACAS,EACA1+H,EAAM1D,QAGPqiI,EAA6DC,qBAC3DF,IAAqB1+H,EAAM1D,OAE9BA,EAAOhD,QAAUqlI,EAGnB,OAAO,gBAACthI,EAAS,GAACd,IAAK+hI,GAAkB/tI,EAAUiuI,EAAqBx+H,EAAK,CAAE1D,OAAQA,EAAOhD,cAKhG+kI,EAAQ7jJ,YAAc,UAAS6iB,EAAU7iB,aAAgB6iB,EAAkBxpB,MAG3E,IAAMgrJ,EAAgBhO,EAAO,OAAWwN,GAAWA,EAMnD,OAJIA,EAAQ7jJ,cACVqkJ,EAAcrkJ,YAAc6jJ,EAAQ7jJ,aAG/BqkJ,ECxHT,IAGIC,GAAsB,EAEpB,GAAa,EAAWx7B,cAE1B,IAAc,GAAWO,SAC3B,GAAWA,SAAQ,WAAM,OAAAi7B,QA0CrB,SAAUC,GACd/+I,QAAA,IAAAA,MAAA,IAYA,IAAIM,EAA0B,IAAI+zE,IAC9B2qE,EAAiB,EACjBC,EAAqB,EACrBC,EAA4BJ,GA8EhC,OA5EsB,SACpBpW,EACAD,G,QAKA,QALA,IAAAA,MAA0B,IAMxBzoI,EAAQm/I,iBACyB,oBAA1BzW,GACNA,EAAgEkW,oBAEjE,OAAOlW,EAAsBD,GAG/BwW,IACA,IAAI3lI,EAAyBhZ,EACrBywC,EAAA,EAAAA,MACFg1E,EAAMh1E,QAAuBlvC,IAAdkvC,EAAMg1E,IAAoBh1E,EAAMg1E,IAAM,KAErDq5B,EAAiBp/I,EAAQo/I,gBAG3BF,IAA8BJ,KAChCI,EAA4BJ,GAC5Bx+I,EAAM,IAAI+zE,IACV2qE,EAAiB,GAGdh/I,EAAQo/I,iBACX9lI,EAAU+lI,GAAa/+I,EAAKooI,GAC5BpvH,EAAU+lI,GAAa/lI,EAASmvH,KAG9B2W,GAAoB9lI,EAAe,aAElCA,EAAe,gBADYzX,IAA1B6mI,EACyB,GAEAI,GACzB,CACoC,oBAA1BJ,EACJA,EAAsBD,GACtBC,GAEN,CAAE3iB,MAAOA,EAAK6D,sBAAuB5pH,EAAQm/I,gBA/GhB,OA+GmEt9I,IAI/Fu9I,GACHJ,KAIAA,GAAkBh/I,EAAQk1H,WAzHV,QA2HG,QAArB,EAAO,QAAP,EADYp6D,YACL,eAAE2oD,oBAAY,eAAE67B,mCAErBllJ,QAAQmd,KACN,oEAAoEynI,EAAc,IAAIC,EAAkB,KAG1G7kJ,QAAQ6zB,SAGV3tB,EAAI4oB,QACJ81H,EAAiB,EAGjBh/I,EAAQo/I,gBAAiB,GAK3B,OAAQ9lI,EAAe,YAM3B,SAASimI,GAAcjmI,EAAwB/kB,GAO7C,OANAA,EAiCF,SAAyBA,GACvB,OAAQA,GACN,UAAKsN,EACH,MAAO,gBACT,KAAK,KACH,MAAO,WACT,QACE,OAAOtN,GAxCHirJ,CAAgBjrJ,GAEnB+kB,EAAQ+xE,IAAI92F,IACf+kB,EAAQiR,IAAIh2B,EAAO,IAAI8/E,KAGlB/6D,EAAQnlB,IAAII,GAGrB,SAAS8qJ,GAAa/lI,EAAwBmmI,GAC5C,GAAsB,oBAAXA,EAET,GADgCA,EAAmChB,iBAKjE,IAAoB,UAACgB,EAAehB,iBAAhB,eAAkC,CACpDnlI,EAAUimI,GAAcjmI,EADV,WAIhBA,EAAUimI,GAAcjmI,EAASmmI,QAE9B,GAAsB,kBAAXA,EAChB,IAAK,IAAMnhC,KAAYmhC,EACjBA,EAAOtqJ,eAAempH,KACxBhlG,EAAUimI,GAAcjmI,EAAUmmI,EAAenhC,KAKvD,OAAOhlG,ECvLH,SAAUomI,GAAevwI,G,IAAa,wDAC1C,OAAIwwI,EAAUrnJ,OAAS,EACdqnJ,EAAU,GAGZ,W,IAAC,sDACNA,EAAUnnJ,SAAQ,SAACm8B,GAAkB,OAAAA,GAAKA,EAAEz8B,MAAMiX,EAAb,OCNnC,SAAUywI,GAA2CzwI,EAAW0wI,GACpE,IAAK,IAAI,KAAQA,EACXA,EAAQ1qJ,eAAe,KAEzBga,EAAO,GAAQuwI,GAAevwI,EAAQA,EAAO,GAAO0wI,EAAQ,KCA5D,SAAUC,GAA0DjmJ,GACxE+lJ,GAAgB/lJ,EAAK,CACnBssG,kBAAmB45C,GACnBh0C,mBAAoBi0C,GACpBtxC,qBAAsBuxC,KAI1B,SAASF,KACPG,GAAiB99I,KAAK4d,MAAMmgI,aAAc/9I,MAG5C,SAAS49I,GAAUI,GACbA,EAAUD,eAAiB/9I,KAAK4d,MAAMmgI,eAExCD,GAAkBE,EAAkBD,aAAc,MAClDD,GAAiB99I,KAAK4d,MAAMmgI,aAAc/9I,OAI9C,SAAS69I,KACPC,GAAiB99I,KAAK4d,MAAMmgI,aAAc,MAG5C,SAASD,GAA6BC,EAA2C5rJ,GAC3E4rJ,IAC0B,kBAAjBA,EACRA,EAAgD7mI,QAAU/kB,EAC1B,oBAAjB4rJ,GACfA,EAA0B5rJ,ICnCjC,IAII,GAAeumE,MAAe,QAEGj5D,IAAjC,GAAO,gBACT,GAAO,cAAwB,GAGjC,IAAI,IAA+B,EAO7B,SAAUw+I,GAAMC,GACpB,IAAK,GAA8B,CAEjC,IAAM/6B,EAAa,EAAWjC,cAE1BiC,GAAcA,EAAW1B,SAC3B0B,EAAW1B,QAAQ08B,IAErB,IAA+B,EAKjC,YAAmB1+I,IAAXy+I,EA7BgB,OA6B2BA,GAFvC,GAAO,gBAUf,SAAUC,GAASC,QAAA,IAAAA,MAAA,GACvB,GAAO,cAAwBA,ECb3B,SAAU3rI,K,IAAI,sDAGlB,IAFA,IAAI3B,EAAU,GAEE,MAAA9P,EAAA,eAAM,CAAjB,IAAIP,EAAG,KACV,GAAIA,EACF,GAAmB,kBAARA,EACTqQ,EAAQ/c,KAAK0M,QACR,GAAIA,EAAI1N,eAAe,aAAuC,oBAAjB0N,EAAIxM,SACtD6c,EAAQ/c,KAAK0M,EAAIxM,iBAGjB,IAAK,IAAIxB,KAAOgO,EAETA,EAAYhO,IACfqe,EAAQ/c,KAAKtB,GAOvB,OAAOqe,EAAQ1O,KAAK,KC1ChB,SAAU2iC,GAAa9lC,EAAYujF,EAAyC67D,QAAA,IAAAA,MAAA,GAGhF,IAFA,IAAI36I,GAAS,EAEJxS,EAAImtJ,EAAWp/I,GAAS/N,EAAI+N,EAAM/I,OAAQhF,IACjD,GAAIsxF,EAAGvjF,EAAM/N,GAAIA,GAAI,CACnBwS,EAAQxS,EACR,MAIJ,OAAOwS,EAyGH,SAAU46I,GAAeC,EAAaC,GAC1C,GAAID,EAAOroJ,SAAWsoJ,EAAOtoJ,OAC3B,OAAO,EAET,IAAK,IAAIhF,EAAI,EAAGA,EAAIqtJ,EAAOroJ,OAAQhF,IACjC,GAAIqtJ,EAAOrtJ,KAAOstJ,EAAOttJ,GACvB,OAAO,EAGX,OAAO,ECtHT,IAAMutJ,GAAiB,SAAgBC,GAAqC,gBAACp+F,GAC3E,IAAkB,UAAAo+F,EAAMjkE,KAAN,eAAY,CAAzB,IAAMtgE,EAAG,KACO,oBAARA,EACTA,EAAImmC,GACKnmC,IAEPA,EAA8EjD,QAAUopC,MAQnF,GAAkB,SAAuBnuD,GACpD,IAAMusJ,EAAmC,CACvCjkE,KAAM,IAGR,OAAO,W,IACL,sDAQA,OANKikE,EAAMC,UAAaL,GAAYI,EAAMjkE,KAAMmkE,KAC9CF,EAAMC,SAAWF,GAA8BC,IAGjDA,EAAMjkE,KAAOmkE,EAENF,EAAMC,WCnCX,SAAUE,GAAU7kG,EAAoB8kG,GAC5C,YAD4C,IAAAA,OAAA,GAE1C9kG,IACE8kG,GCLA,SAA2B9kG,GAC/B,IAAIjtC,ECD2B5O,EDK/B,OAHI67C,KCF2B77C,EDED67C,ICDQ77C,EAAS4gJ,YDE7ChyI,EAASitC,EAAM+kG,SAAShyI,QAEnBA,EDAoBiyI,CAAiBhlG,IAAYA,EAAM74B,YAAe64B,EAAM74B,YGJ/E,SAAU89H,GACd9gJ,EACA+gJ,GAEA,OAAK/gJ,GAAWA,IAAYoM,SAAS6b,KAG9B84H,EAAc/gJ,GAAWA,EAAU8gJ,GAAqBJ,GAAU1gJ,GAAU+gJ,GAF1E,KCDL,SAAUC,GAAsBnpJ,EAAqB+W,GACzD,IAAMqyI,EAAeH,GACnBjpJ,GACA,SAACqpJ,GAA6B,OAAAtyI,IAAWsyI,GAAeA,EAAYhyI,aCdnC,0BDgBnC,OAAwB,OAAjB+xI,GAAyBA,EAAa/xI,aChBV,uBCcrC,kBAWE,WAAYN,EAAiBya,GAVrB,KAAA83H,YAAgD,KAChD,KAAAC,cAAkD,KAClD,KAAAC,aAAiD,KACjD,KAAAC,mBAAuD,KAQ7Dz/I,KAAK0/I,aAAc,EACnB1/I,KAAK2/I,QAAU5yI,GAAU,KACzB/M,KAAK4/I,gBAAkBp4H,EACvBxnB,KAAK6/I,MAAQ,aAqcjB,OA7bS,YAAAC,QAAP,WACE,IAAI3nJ,EAMJ,GAJA6H,KAAK0/I,aAAc,EACnB1/I,KAAK2/I,QAAU,KAGX3/I,KAAKs/I,YAAa,CACpB,IAAKnnJ,KAAM6H,KAAKs/I,YACVt/I,KAAKs/I,YAAYvsJ,eAAeoF,IAClC6H,KAAKmzB,aAAauxC,SAASvsE,EAAI,KAInC6H,KAAKs/I,YAAc,KAIrB,GAAIt/I,KAAKu/I,cAAe,CACtB,IAAKpnJ,KAAM6H,KAAKu/I,cACVv/I,KAAKu/I,cAAcxsJ,eAAeoF,IACpC6H,KAAK+/I,eAAer7E,SAASvsE,EAAI,KAIrC6H,KAAKu/I,cAAgB,KAIvB,GAAIv/I,KAAKw/I,aAAc,CACrB,IAAKrnJ,KAAM6H,KAAKw/I,aACVx/I,KAAKw/I,aAAazsJ,eAAeoF,IACnC6H,KAAKggJ,cAAct7E,SAASvsE,EAAI,KAGpC6H,KAAKw/I,aAAe,KAItB,GAAIx/I,KAAKy/I,mBAAoB,CAC3B,IAAKtnJ,KAAM6H,KAAKy/I,mBACVz/I,KAAKy/I,mBAAmB1sJ,eAAeoF,IACzC6H,KAAKg1G,qBAAqBtwC,SAASvsE,EAAI,KAI3C6H,KAAKy/I,mBAAqB,OAUvB,YAAA/tI,WAAP,SAAkBzF,EAAsBg0I,GAAxC,WACMC,EAAY,EA0BhB,OAxBKlgJ,KAAK0/I,cACH1/I,KAAKs/I,cACRt/I,KAAKs/I,YAAc,IAGrBY,EAAYxuI,YAAW,WAGrB,IAEM,EAAK4tI,oBACA,EAAKA,YAAYY,GAE1Bj0I,EAASnW,MAAM,EAAK6pJ,SACpB,MAAO1/I,IACH,EAAK2/I,iBACP,EAAKA,gBAAgB3/I,OAGxBggJ,GAEHjgJ,KAAKs/I,YAAYY,IAAa,GAGzBA,GAOF,YAAA/sH,aAAP,SAAoBh7B,GACd6H,KAAKs/I,aAAet/I,KAAKs/I,YAAYnnJ,KACvCg7B,aAAah7B,UACN6H,KAAKs/I,YAAYnnJ,KAUrB,YAAAgoJ,aAAP,SAAoBl0I,EAAsBm0I,GAA1C,WACMC,EAAc,EACZnvB,EAAMx4D,GAAU0nF,GAEtB,IAAKpgJ,KAAK0/I,YAAa,CAChB1/I,KAAKu/I,gBACRv/I,KAAKu/I,cAAgB,IAiBvBc,EAAcnvB,EAAIx/G,YAdS,WAGzB,IAEM,EAAK6tI,sBACA,EAAKA,cAAcc,GAE5Bp0I,EAASnW,MAAM,EAAK6pJ,SACpB,MAAO1/I,IACP,EAAKqgJ,UAAUrgJ,OAIgC,GAEnDD,KAAKu/I,cAAcc,IAAe,EAGpC,OAAOA,GAQF,YAAAN,eAAP,SAAsB5nJ,EAAYioJ,GAChC,IAAMlvB,EAAMx4D,GAAU0nF,GAElBpgJ,KAAKu/I,eAAiBv/I,KAAKu/I,cAAcpnJ,KAC3C+4H,EAAI/9F,aAAah7B,UACV6H,KAAKu/I,cAAcpnJ,KAUvB,YAAA2hE,YAAP,SAAmB7tD,EAAsBg0I,GAAzC,WACMM,EAAa,EAmBjB,OAjBKvgJ,KAAK0/I,cACH1/I,KAAKw/I,eACRx/I,KAAKw/I,aAAe,IAGtBe,EAAazmF,aAAY,WAEvB,IACE7tD,EAASnW,MAAM,EAAK6pJ,SACpB,MAAO1/I,IACP,EAAKqgJ,UAAUrgJ,OAEhBggJ,GAEHjgJ,KAAKw/I,aAAae,IAAc,GAG3BA,GAOF,YAAAP,cAAP,SAAqB7nJ,GACf6H,KAAKw/I,cAAgBx/I,KAAKw/I,aAAarnJ,KACzC6nJ,cAAc7nJ,UACP6H,KAAKw/I,aAAarnJ,KAmBtB,YAAAqoJ,SAAP,SACEtuH,EACAquC,EACA3iE,GAHF,WAQE,GAAIoC,KAAK0/I,YACP,OAAO1/I,KAAK6/I,MAGd,IAIIY,EAEAC,EANAC,EAASpgF,GAAQ,EACjBqgF,GAAU,EACVC,GAAW,EACXC,EAAkB,EAIlBZ,EAA2B,KAE3BtiJ,GAAsC,mBAApBA,EAAQgjJ,UAC5BA,EAAUhjJ,EAAQgjJ,SAGhBhjJ,GAAuC,mBAArBA,EAAQijJ,WAC5BA,EAAWjjJ,EAAQijJ,UAGrB,IAAI50I,EAAW,SAAXA,EAAY80I,GACd,IAAI9tD,EAAMn8E,KAAKm8E,MACX+tD,EAAQ/tD,EAAM6tD,EACdG,EAAaL,EAAUD,EAASK,EAAQL,EAY5C,OAXIK,GAASL,KAAYI,GAAYH,IACnCE,EAAkB7tD,EACditD,IACF,EAAK/sH,aAAa+sH,GAClBA,EAAY,MAEdO,EAAavuH,EAAKp8B,MAAM,EAAK6pJ,QAASe,IACf,OAAdR,GAAsBW,IAC/BX,EAAY,EAAKxuI,WAAWzF,EAAUg1I,IAGjCR,GAST,OALsB,W,IAAC,sDAErB,OADAC,EAAW1/I,EACJiL,GAAS,KAsBb,YAAAgnB,SAAP,SACEf,EACAquC,EACA3iE,GAHF,WASE,GAAIoC,KAAK0/I,YAAa,CACpB,IAAIwB,EAAgB,aAUpB,OANAA,EAAaC,OAAS,aAGtBD,EAAaliF,MAAU,WAAM,aAC7BkiF,EAAaj/C,QAAU,WAAM,UAEtBi/C,EAGT,IAMIT,EAEAC,EARAC,EAASpgF,GAAQ,EACjBqgF,GAAU,EACVC,GAAW,EACXO,EAAyB,KACzBC,EAAe,EACfP,EAAkBhqI,KAAKm8E,MAIvBitD,EAA2B,KAE3BtiJ,GAAsC,mBAApBA,EAAQgjJ,UAC5BA,EAAUhjJ,EAAQgjJ,SAGhBhjJ,GAAuC,mBAArBA,EAAQijJ,WAC5BA,EAAWjjJ,EAAQijJ,UAGjBjjJ,GAAsC,kBAApBA,EAAQwjJ,UAAyBtsJ,MAAM8I,EAAQwjJ,WACnEA,EAAUxjJ,EAAQwjJ,SAGpB,IAAIE,EAAe,SAAC1sD,GACdsrD,IACF,EAAK/sH,aAAa+sH,GAClBA,EAAY,MAEdY,EAAkBlsD,GAGhB2sD,EAAiB,SAAC3sD,GACpB0sD,EAAa1sD,GACb6rD,EAAavuH,EAAKp8B,MAAM,EAAK6pJ,QAASe,IAGpCz0I,EAAW,SAAXA,EAAY80I,GACd,IAAI9tD,EAAMn8E,KAAKm8E,MACXuuD,GAAqB,EACrBT,IACEH,GAAW3tD,EAAMouD,GAAgBV,IACnCa,GAAqB,GAEvBH,EAAepuD,GAEjB,IAAI+tD,EAAQ/tD,EAAMouD,EACdJ,EAAaN,EAASK,EACtBS,EAAexuD,EAAM6tD,EACrBY,GAAiB,EAiBrB,OAfgB,OAAZN,IAEEK,GAAgBL,GAAWlB,EAC7BwB,GAAiB,EAEjBT,EAAa5rJ,KAAK0f,IAAIksI,EAAYG,EAAUK,IAI5CT,GAASL,GAAUe,GAAkBF,EACvCD,EAAetuD,GACS,OAAditD,GAAuBa,IAAaF,IAC9CX,EAAY,EAAKxuI,WAAWzF,EAAUg1I,IAGjCR,GAGLx+C,EAAU,WACZ,QAASi+C,GAmBPyB,EAAkB,W,IAAC,sDAErB,OADAjB,EAAW1/I,EACJiL,GAAS,IAOlB,OAJA01I,EAAeR,OArBF,WACPl/C,KAEFq/C,EAAaxqI,KAAKm8E,QAmBtB0uD,EAAe3iF,MAfH,WAKV,OAJIijC,KACFs/C,EAAezqI,KAAKm8E,OAGfwtD,GAWTkB,EAAe1/C,QAAUA,EAElB0/C,GAGF,YAAAlwI,sBAAP,SAA6BxF,EAAsBm0I,GAAnD,WACMwB,EAAmB,EACjB1wB,EAAMx4D,GAAU0nF,GAEtB,IAAKpgJ,KAAK0/I,YAAa,CAChB1/I,KAAKy/I,qBACRz/I,KAAKy/I,mBAAqB,IAG5B,IAAIoC,EAAyB,WAC3B,IAEM,EAAKpC,2BACA,EAAKA,mBAAmBmC,GAGjC31I,EAASnW,MAAM,EAAK6pJ,SACpB,MAAO1/I,IACP,EAAKqgJ,UAAUrgJ,MAInB2hJ,EAAmB1wB,EAAIz/G,sBACnBy/G,EAAIz/G,sBAAsBowI,GAC1B3wB,EAAIx/G,WAAWmwI,EAAwB,GAE3C7hJ,KAAKy/I,mBAAmBmC,IAAoB,EAG9C,OAAOA,GAGF,YAAA5sC,qBAAP,SAA4B78G,EAAYioJ,GACtC,IAAMlvB,EAAMx4D,GAAU0nF,GAElBpgJ,KAAKy/I,oBAAsBz/I,KAAKy/I,mBAAmBtnJ,KACrD+4H,EAAIlc,qBAAuBkc,EAAIlc,qBAAqB78G,GAAM+4H,EAAI/9F,aAAah7B,UACpE6H,KAAKy/I,mBAAmBtnJ,KAKzB,YAAAmoJ,UAAV,SAAoBrgJ,GACdD,KAAK4/I,iBACP5/I,KAAK4/I,gBAAgB3/I,IAG3B,EApdA,GCRM,SAAU6hJ,GAA+Ch8I,EAAOC,GACpE,IAAK,IAAIm2G,KAAYp2G,EACnB,GAAIA,EAAE/S,eAAempH,MACdn2G,EAAEhT,eAAempH,IAAan2G,EAAEm2G,KAAcp2G,EAAEo2G,IACnD,OAAO,EAIb,IAAK,IAAIA,KAAYn2G,EACnB,GAAIA,EAAEhT,eAAempH,KACdp2G,EAAE/S,eAAempH,GACpB,OAAO,EAIb,OAAO,EAcH,SAAU,GAAOlmH,G,IAAa,wDAClC,OAAO+rJ,GAAejsJ,MAAMkK,KAAM,CAAC,KAAMhK,GAAQiI,OAAO+C,IAgBpD,SAAU+gJ,GAAeC,EAA0ChsJ,G,IAAa,wDACpFA,EAASA,GAAU,GAEnB,IAAyB,UAAAgL,EAAA,eAAM,CAA1B,IAAIihJ,EAAY,KACnB,GAAIA,EACF,IAAK,IAAI/lC,KAAY+lC,GACfA,EAAalvJ,eAAempH,IAAe8lC,IAAaA,EAAU9lC,KACpElmH,EAAOkmH,GAAY+lC,EAAa/lC,IAMxC,OAAOlmH,ECfT,kBAyFE,WAAmB+W,GArFX,KAAAm1I,IAAcC,EAAWC,YAsF/BpiJ,KAAK2/I,QAAU5yI,EACf/M,KAAKqiJ,cAAgB,GAoLzB,OAlQgB,EAAAC,MAAd,SAAoBtsJ,EAAausJ,EAAmBC,EAAiBC,GACnE,IAAIC,EAEJ,GAAIP,EAAWQ,WAAW3sJ,IACxB,GAAwB,qBAAbuU,UAA4BA,SAASq4I,YAAa,CAC3D,IAAIC,EAAKt4I,SAASq4I,YAAY,cAE9BC,EAAGC,UAAUP,EAAWE,IAAe,GAAO,GAE9C,GAAOI,EAAIL,GAEXE,EAAS1sJ,EAAO+sJ,cAAcF,QACzB,GAAwB,qBAAbt4I,UAA6BA,SAAiBy4I,kBAAmB,CAEjF,IAAIC,EAAS14I,SAAiBy4I,kBAAkBR,GAEhDxsJ,EAAOktJ,UAAU,KAAOX,EAAWU,SAGrC,KAAOjtJ,IAAqB,IAAX0sJ,GAAkB,CACjC,IAAInpH,EAA8BvjC,EAAOmtJ,WACrCC,EAAe7pH,EAASA,EAAOgpH,GAAa,KAEhD,GAAIa,EACF,IAAK,IAAIjrJ,KAAMirJ,EACb,GAAIA,EAAarwJ,eAAeoF,GAG9B,IAFA,IAAIkrJ,EAAkCD,EAAajrJ,GAE1CmrJ,EAAY,GAAc,IAAXZ,GAAoBY,EAAYD,EAAgBntJ,OAAQotJ,IAAa,CAC3F,IAAInsI,EAASksI,EAAgBC,GAEzBnsI,EAAOosI,iBACTb,EAASvrI,EAAOosI,eAAelyJ,KAAK8lB,EAAOpK,OAAQy1I,IAQ7DxsJ,EAASysJ,EAAczsJ,EAAO+W,OAAS,KAI3C,OAAO21I,GAGK,EAAAc,WAAd,SAAyBxtJ,EAAausJ,GACpC,IAAIhpH,EAASvjC,GAA+BA,EAAOmtJ,WAEnD,QAAS5pH,KAAYA,EAAOgpH,IAIhB,EAAAkB,WAAd,SAAyBztJ,EAAausJ,GACpC,IAAImB,EAAiB1tJ,GAAiCA,EAAO2tJ,iBAE7D,QAASD,KAAoBA,EAAenB,IAGhC,EAAAp/H,gBAAd,SAA8B5D,GACxBA,EAAM4D,gBACR5D,EAAM4D,kBAGN5D,EAAMozE,cAAe,GAIV,EAAAgwD,WAAf,SAA0B3sJ,GACxB,QACIA,MAAaA,EAAOib,kBAA4C,qBAAhB2yI,aAA+B5tJ,aAAkB4tJ,cAUhG,YAAA9D,QAAP,WACO9/I,KAAK0/I,cACR1/I,KAAK0/I,aAAc,EAEnB1/I,KAAKoyB,MACLpyB,KAAK2/I,QAAU,OAKZ,YAAAkE,MAAP,SAAa7tJ,EAAaujC,EAAiDqmC,GACzE,IAAK,IAAI2iF,KAAahpH,EAChBA,EAAOxmC,eAAewvJ,IACxBviJ,KAAKiyB,GAAGj8B,EAAQusJ,EAAWhpH,EAAOgpH,GAAY3iF,IAS7C,YAAA3tC,GAAP,SACEj8B,EACAusJ,EACAt2I,EACArO,GAJF,WAME,GAAI2kJ,EAAU5+I,QAAQ,MAAQ,EAG5B,IAFA,IAAI41B,EAASgpH,EAAUpgJ,MAAM,SAEpBjR,EAAI,EAAGA,EAAIqoC,EAAOrjC,OAAQhF,IACjC8O,KAAKiyB,GAAGj8B,EAAQujC,EAAOroC,GAAI+a,EAAUrO,OAElC,CACL,IAAI,EAASoC,KAAK2/I,QACdmE,EAA4B,CAC9B9tJ,OAAQA,EACRusJ,UAAWA,EACXx1I,OAAQ,EACRd,SAAUA,EACVrO,QAAO,GAcT,IAVI27B,EAA+BvjC,EAAOmtJ,WAAantJ,EAAOmtJ,YAAc,IACrEZ,GACLhpH,EAAOgpH,IACW,CAChB3xI,MAAO,GAEX2oB,EAAOgpH,GAAWviJ,KAAKkiJ,KAAO3oH,EAAOgpH,GAAWviJ,KAAKkiJ,MAAQ,GAC5C3oH,EAAOgpH,GAAWviJ,KAAKkiJ,KAAMnuJ,KAAK+vJ,GACnDvqH,EAAOgpH,GAAW3xI,QAEduxI,EAAWQ,WAAW3sJ,GAAS,CACjC,IAAI+tJ,EAAsB,W,IAAC,sDACzB,IAAI,EAAKrE,YAAT,CAIA,IAAInkH,EACJ,IAEE,IAAe,KADfA,EAAStvB,EAASnW,MAAM,EAAQkL,KACRA,EAAK,GAAI,CAC/B,IAAIf,EAAIe,EAAK,GAETf,EAAEuf,gBACJvf,EAAEuf,iBAGAvf,EAAEkjB,iBACJljB,EAAEkjB,kBAGJljB,EAAE0yF,cAAe,GAEnB,MAAO1yF,IAIT,OAAOs7B,IAGTuoH,EAAYE,gBAAkBD,EAE1B/tJ,EAAOib,iBACKjb,EAAQib,iBAAiBsxI,EAAWwB,EAAqBnmJ,GAC9D5H,EAAO6pE,aAEhB7pE,EAAO6pE,YAAY,KAAO0iF,EAAWwB,OAElC,CASLD,EAAYP,eARa,W,IAAC,sDACxB,IAAI,EAAK7D,YAIT,OAAOzzI,EAASnW,MAAM,EAAQkL,IAOlChB,KAAKqiJ,cAActuJ,KAAK+vJ,KAIrB,YAAA1xH,IAAP,SACEp8B,EACAusJ,EACAt2I,EACArO,GAEA,IAAK,IAAI1M,EAAI,EAAGA,EAAI8O,KAAKqiJ,cAAcnsJ,OAAQhF,IAAK,CAClD,IAAI4yJ,EAAc9jJ,KAAKqiJ,cAAcnxJ,GACrC,KACI8E,GAAUA,IAAW8tJ,EAAY9tJ,WACjCusJ,GAAaA,IAAcuB,EAAYvB,cACvCt2I,GAAYA,IAAa63I,EAAY73I,YACnB,mBAAZrO,GAAyBA,IAAYkmJ,EAAYlmJ,SACzD,CACA,IAAI27B,EAA8BuqH,EAAY9tJ,OAAOmtJ,WACjDc,EAAoB1qH,EAAOuqH,EAAYvB,WACvC2B,EAAcD,EAAoCA,EAAkBjkJ,KAAKkiJ,KAAO,KAGhFgC,IACyB,IAAvBA,EAAYhuJ,QAAiB+V,GAI/Bg4I,EAAkBrzI,QAClBszI,EAAYtgJ,OAAOsgJ,EAAYvgJ,QAAQmgJ,GAAc,KAJrDG,EAAkBrzI,OAASszI,EAAYhuJ,cAChCqjC,EAAOuqH,EAAYvB,WAAWviJ,KAAKkiJ,MAMvC+B,EAAkBrzI,cACd2oB,EAAOuqH,EAAYvB,YAI1BuB,EAAYE,kBACVF,EAAY9tJ,OAAOmwB,oBACrB29H,EAAY9tJ,OAAOmwB,oBACjB29H,EAAYvB,UACZuB,EAAYE,gBACZF,EAAYlmJ,SAELkmJ,EAAY9tJ,OAAO8pE,aAE5BgkF,EAAY9tJ,OAAO8pE,YAAY,KAAOgkF,EAAYvB,UAAWuB,EAAYE,kBAI7EhkJ,KAAKqiJ,cAAcz+I,OAAO1S,IAAK,MAM9B,YAAAoxJ,MAAP,SAAaC,EAAmBC,EAAiBC,GAC/C,OAAON,EAAWG,MAAMtiJ,KAAK2/I,QAAS4C,EAAWC,EAAWC,IAIvD,YAAA0B,QAAP,SAAe5kI,GACb,IAAImkI,EAAkB1jJ,KAAK2/I,QAAQgE,iBAAmB3jJ,KAAK2/I,QAAQgE,kBAAoB,GAEvF,GAAqB,kBAAVpkI,EACTmkI,EAAenkI,IAAS,OAExB,IAAK,IAAIruB,EAAI,EAAGA,EAAIquB,EAAMrpB,OAAQhF,IAChCwyJ,EAAenkI,EAAMruB,KAAM,GA1QlB,EAAAkxJ,UAAoB,EA8QrC,EA/QA,GC/BA,I,IAAA,YA0BE,WAAYxkI,EAAe6iD,GAA3B,MACE,YAAM7iD,EAAO6iD,IAAQ,K,OA6LzB,SAAsBhpE,EAA4B3E,EAAmBsxJ,GACnE,IAAK,IAAIlzJ,EAAI,EAAG2O,EAAMukJ,EAAYluJ,OAAQhF,EAAI2O,EAAK3O,IACjDmzJ,GAAU5sJ,EAAK3E,EAAWsxJ,EAAYlzJ,IA5LtCozJ,CAAa,EAAMC,EAAczxJ,UAAW,CAC1C,oBACA,wBACA,0BACA,SACA,qBACA,yB,EApC0E,OA2CvE,YAAA62G,mBAAP,SAA0Bq0C,EAAmBwG,GAC3CxkJ,KAAKykJ,oBAAoBzG,EAAWh+I,KAAK4d,QAMpC,YAAAmmF,kBAAP,WACE/jG,KAAK89I,iBAAiB99I,KAAK4d,MAAMmgI,aAAc/9I,OAM1C,YAAAssG,qBAAP,WAGE,GAFAtsG,KAAK89I,iBAAiB99I,KAAK4d,MAAMmgI,aAAc,MAE3C/9I,KAAK0kJ,cAAe,CACtB,IAAK,IAAIxzJ,EAAI,EAAG2O,EAAMG,KAAK2kJ,aAAazuJ,OAAQhF,EAAI2O,EAAK3O,IAAK,CAC5D,IAAI0zJ,EAAa5kJ,KAAK0kJ,cAAcxzJ,GAEhC0zJ,EAAW9E,SACb8E,EAAW9E,UAGf9/I,KAAK0kJ,cAAgB,OAOzB,sBAAW,wBAAS,C,IAApB,WACE,IAAK1kJ,KAAK6kJ,YAAa,CACrB,IACIrmG,EADgB,qBACQ30C,KAAK7J,KAAKN,YAAYzL,YAElD+L,KAAK6kJ,YAAcrmG,GAAWA,EAAQtoD,OAAS,EAAIsoD,EAAQ,GAAK,GAGlE,OAAOx+C,KAAK6kJ,a,gCAMd,sBAAc,2BAAY,C,IAA1B,WAIE,OAHK7kJ,KAAK0kJ,gBACR1kJ,KAAK0kJ,cAAgB,IAEhB1kJ,KAAK0kJ,e,gCASd,sBAAc,qBAAM,C,IAApB,WAME,OALK1kJ,KAAK8kJ,UACR9kJ,KAAK8kJ,QAAU,IAAI,GAAM9kJ,MACzBA,KAAK2kJ,aAAa5wJ,KAAKiM,KAAK8kJ,UAGvB9kJ,KAAK8kJ,S,gCASd,sBAAc,sBAAO,C,IAArB,WAME,OALK9kJ,KAAK+kJ,WACR/kJ,KAAK+kJ,SAAW,IAAI,GAAW/kJ,MAC/BA,KAAK2kJ,aAAa5wJ,KAAKiM,KAAK+kJ,WAGvB/kJ,KAAK+kJ,U,gCASJ,YAAAC,YAAV,SAAsBC,GAAtB,WAYE,OAXKjlJ,KAAKklJ,aACRllJ,KAAKklJ,WAAa,IAGfllJ,KAAKklJ,WAAWD,KACnBjlJ,KAAKklJ,WAAWD,GAAW,SAAC9qI,GAE1B,OAAS,EAAa8qI,GAAW9qI,IAI9Bna,KAAKklJ,WAAWD,IAMf,YAAAR,oBAAV,SAA8BU,EAA0BC,QAAA,IAAAA,MAAA,IAGlDD,GAAgBC,GAAYD,EAAapH,eAAiBqH,EAASrH,eACrE/9I,KAAK89I,iBAAiBqH,EAAapH,aAAc,MACjD/9I,KAAK89I,iBAAiBsH,EAASrH,aAAc/9I,QAUvC,YAAAqlJ,kBAAV,SAA4BC,GACTtlJ,KAAK8J,UAAW9J,KAAK4d,OAQ9B,YAAA2nI,uBAAV,SAAiCC,GACTxlJ,KAAK8J,UAAW9J,KAAK4d,OAUnC,YAAA6nI,gCAAV,SACEC,EACAC,EACA/0H,GAE+B5wB,KAAK8J,UAAW9J,KAAK4d,OAG9C,YAAAkgI,iBAAR,SACE3jI,EACAhoB,IAEK6N,KAAK4lJ,6BAA+BzrI,IACpB,oBAARA,GACTA,EAAIhoB,GAGa,kBAARgoB,IAERA,EAAYjD,QAAU/kB,KA5M/B,CAAgF,aA+NhF,SAASkyJ,GAAU5sJ,EAA4B3E,EAAmB86I,GAEhE,IAAIiY,EAAepuJ,EAAYm2I,GAC3BkY,EAAmBhzJ,EAAkB86I,IAErCiY,GAAeC,KAChBruJ,EAAYm2I,GAAc,W,IAAS,IAE9B8U,EAF8B,kDAWlC,OAPIoD,IACFpD,EAASoD,EAAgBhwJ,MAAMkK,KAAMgB,IAEnC6kJ,IAAgBC,IAClBpD,EAASmD,EAAY/vJ,MAAMkK,KAAMgB,IAG5B0hJ,IAUP,SAAUqD,KACd,OAAO,KC5QT,IAAMC,KAAmB,OACtB5Q,IAAc,EACf,GAACA,IAAgB,EACjB,GAACA,IAAgB,EACjB,GAACA,IAAiB,EAClB,GAACA,IAAgB,EACjB,GAACA,IAAe,EAChB,GAACA,IAAe,EAChB,GAACA,IAAkB,EACnB,GAACA,IAAoB,EACtB,ICHD,IAAI6Q,GAAgB,IAAIr/D,QAExB,SAASs/D,GAAiBzzJ,EAAauuJ,GACrC,IAAI1gG,EACE6lG,EAAYF,GAAcl0J,IAAIU,GAQpC,OANE6tD,EADE6lG,EACSA,EAAYnF,EAEZ,EAGbiF,GAAc99H,IAAI11B,EAAK6tD,GAChBA,EAsDF,IClEK8lG,GCwEAC,GA4CAC,GAeAC,GFjECC,GAAkF,SAAA5oI,GAlCzF,IAAwB6oI,EAoC5B,OApC4BA,EAmCd7oI,EAAM6oI,QAlCpB,aAAgB,W,QACRv1B,EAAMx4D,GAAiB,QAAR,EAAC+tF,SAAO,eAAEvvI,SAE/B,GAAKg6G,IAA+C,KAAxB,QAAhB,EAAAA,EAAI7P,oBAAY,eAAEqlC,mBAA9B,CAIA,IAAI91I,EAAQs1I,GAAiBh1B,EAAK,GAOlC,OANItgH,GAAS,IACXsgH,EAAIjgH,iBAAiB,YAAa4/B,IAAc,GAChDqgF,EAAIjgH,iBAAiB,cAAe01I,IAAgB,GACpDz1B,EAAIjgH,iBAAiB,UAAWk+B,IAAY,IAGvC,W,MACA+hF,IAA+C,KAAxB,QAAhB,EAAAA,EAAI7P,oBAAY,eAAEqlC,oBAKhB,KADd91I,EAAQs1I,GAAiBh1B,GAAM,MAE7BA,EAAI/qG,oBAAoB,YAAa0qB,IAAc,GACnDqgF,EAAI/qG,oBAAoB,cAAewgI,IAAgB,GACvDz1B,EAAI/qG,oBAAoB,UAAWgpB,IAAY,QAGlD,CAACs3G,IASG,MAGT,SAAS51G,GAAagyG,GACpB7xB,IAAmB,EAAO6xB,EAAG7sJ,QAG/B,SAAS2wJ,GAAe9D,GACC,UAAnBA,EAAGhrD,aACLm5B,IAAmB,EAAO6xB,EAAG7sJ,QAIjC,SAASm5C,GAAW0zG,GDzEd,IAA+B//H,IC2EV+/H,EAAG//H,MD1EnBkjI,GAAoBljI,IC2E3BkuG,IAAmB,EAAM6xB,EAAG7sJ,QGvF1B,SAAU4wJ,K,IAAyB,sDACvC,IAAMC,EAAkBC,EACrBnxJ,QAAO,SAAC8K,GAAoC,OAAAA,KAC5C2B,KAAK,KACLuwB,OACH,MAA2B,KAApBk0H,OAAyBpnJ,EAAYonJ,GFF9C,SAAYT,GAKV,yBAMA,qBAMA,2BAMA,0BAvBF,CAAYA,QAAQ,KCwEpB,SAAYC,GAIV,uBAOA,yBAMA,qBAMA,mBAOA,iCAOA,qCArCF,CAAYA,QAAQ,KA4CpB,SAAYC,GAIV,6BAKA,2BATF,CAAYA,QAAe,KAe3B,SAAYC,GAIV,6BAKA,uBAKA,qBAQA,iCAtBF,CAAYA,QAAc,KExI1B,IAAM,GAAgB5J,KAQtB,eAcE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,K,OALN,EAAAmpI,YAA+BT,GAAgBU,SAC/C,EAAAC,cAAgB,cAChB,EAAAC,cAAgB,cAwFhB,EAAAC,eAAiB,SAACtE,GAClB,cAAEr4I,EAAA,EAAAA,IAAK48I,EAAA,EAAAA,OACTA,GACFA,EAAOvE,GAGT,EAAKwE,mBAAmB,EAAKzpI,OAEzBpT,GACF,EAAKswE,SAAS,CACZwsE,UAAWf,GAAegB,UAmExB,EAAAC,cAAgB,SAAC3E,GACnB,EAAKjlI,MAAM4J,SACb,EAAK5J,MAAM4J,QAAQq7H,GAErB,EAAK/nE,SAAS,CACZwsE,UAAWf,GAAetuJ,SArK5B,EAAK8M,MAAQ,CACXuiJ,UAAWf,GAAekB,W,EAuKhC,OAzL+B,OAsBtB,YAAA/jD,iCAAP,SAAwCgkD,GAClCA,EAAUl9I,MAAQxK,KAAK4d,MAAMpT,IAC/BxK,KAAK86E,SAAS,CACZwsE,UAAWf,GAAekB,YAEnBznJ,KAAK+E,MAAMuiJ,YAAcf,GAAegB,QACjDvnJ,KAAKqnJ,mBAAmBK,IAIrB,YAAA/9C,mBAAP,SAA0Bq0C,EAAwBwG,GAChDxkJ,KAAK2nJ,oBACD3nJ,KAAK4d,MAAMgqI,sBAAwBpD,EAAU8C,YAActnJ,KAAK+E,MAAMuiJ,WACxEtnJ,KAAK4d,MAAMgqI,qBAAqB5nJ,KAAK+E,MAAMuiJ,YAIxC,YAAAx/I,OAAP,WACE,IAAM+/I,EAAarP,GAA0Dx4I,KAAK4d,MAAO06H,GAAe,CACtG,QACA,WAEI,aACJ9tI,EAAA,EAAAA,IACAs9I,EAAA,EAAAA,IACApsI,EAAA,EAAAA,MACAD,EAAA,EAAAA,OACAssI,EAAA,EAAAA,aACAC,EAAA,EAAAA,mBACAl+I,EAAA,EAAAA,UACAm+I,EAAA,EAAAA,SACAnzH,EAAA,EAAAA,KACAozH,EAAA,EAAAA,cACAhuI,EAAA,EAAAA,OACAy0B,EAAA,EAAAA,MAEM24G,EAAA,WAAAA,UACFa,OAAuC1oJ,IAA1BO,KAAK4d,MAAMuqI,WAA2BnoJ,KAAK4d,MAAMuqI,WAAanoJ,KAAK+mJ,YAChFtmG,EAAa,GAAcvmC,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACT4R,MAAK,EACLD,OAAM,EACNysI,cAAa,EACbH,aAAY,EACZC,mBAAkB,EAClBI,SACEd,IAAcf,GAAegB,QAC5BD,IAAcf,GAAekB,WAAaznJ,KAAK4d,MAAMoqI,mBACxDK,YAAaF,IAAe7B,GAAgBgC,UAC5CC,SAAUN,IAAa5B,GAASmC,OAChCC,gBAAiBR,IAAa5B,GAASqC,cACvCC,cAAeV,IAAa5B,GAASuC,YACrCC,UAAWZ,IAAa5B,GAAS/vG,QACjCwyG,QAASb,IAAa5B,GAAS0C,MAC/BC,OAAQf,IAAa5B,GAAS4C,KAC9BC,QAAS5B,IAAcf,GAAetuJ,MACtCkxJ,mBAA4B1pJ,IAAbwoJ,IAIjB,OACE,uBAAKn+I,UAAW22C,EAAWltD,KAAMolB,MAAO,CAAE+C,MAAOA,EAAOD,OAAQA,GAAUtB,IAAKna,KAAKknJ,eAClF,2BACMW,EAAU,CACdT,OAAQpnJ,KAAKmnJ,eACb3/H,QAASxnB,KAAKwnJ,cACd/0J,IA3FS,cA2FSuN,KAAK4d,MAAMpT,KAAO,GACpCV,UAAW22C,EAAW2oG,MACtBjvI,IAAKna,KAAKinJ,cACVz8I,IAAKA,EACLs9I,IAAKA,EACLhzH,KAAMA,OAqBN,YAAA6yH,kBAAR,WACU,IAAAn9I,EAAA,WAAAA,IACA,WAAA88I,YAEUf,GAAekB,cAKLznJ,KAAKinJ,cAAc/vI,UACxC1M,GAAOxK,KAAKinJ,cAAc/vI,QAAQmyI,aAAe,GAAKrpJ,KAAKinJ,cAAc/vI,QAAQoyI,cAAgB,GACjGtpJ,KAAKinJ,cAAc/vI,QAAQokG,UAAYiuC,EAAUC,UAAUpoJ,KAAKoJ,MAInExK,KAAKqnJ,mBAAmBrnJ,KAAK4d,OAC7B5d,KAAK86E,SAAS,CACZwsE,UAAWf,GAAegB,YAM1B,YAAAF,mBAAR,SAA2BzpI,GACjB,IAAAqqI,EAAA,EAAAA,SAAUvsI,EAAA,EAAAA,MAAOD,EAAA,EAAAA,OAGzB,IACGwsI,IAAa5B,GAAS0C,OACrBd,IAAa5B,GAAS/vG,SACtB2xG,IAAa5B,GAASqC,eACtBT,IAAa5B,GAASuC,mBACEnpJ,IAA1BO,KAAK4d,MAAMuqI,YACXnoJ,KAAKinJ,cAAc/vI,SACnBlX,KAAKknJ,cAAchwI,QACnB,CAGA,IAAIuyI,OAAY,EAOdA,EALiB,kBAAV/tI,GACW,kBAAXD,GACPwsI,IAAa5B,GAASqC,eACtBT,IAAa5B,GAASuC,YAEPltI,EAAQD,EAERzb,KAAKknJ,cAAchwI,QAAQuvB,YAAczmC,KAAKknJ,cAAchwI,QAAQoL,aAIrF,IAAMonI,EAAe1pJ,KAAKinJ,cAAc/vI,QAAQmyI,aAAerpJ,KAAKinJ,cAAc/vI,QAAQoyI,cAIxFtpJ,KAAK+mJ,YADH2C,EAAeD,EACEnD,GAAgBgC,UAEhBhC,GAAgBU,WA3K3B,EAAAngJ,aAAe,CAC3BkhJ,cAAc,GAGD,EAAAyB,UAAY,UAoL7B,EAzLA,CAA+B,aCRzB,GAAmB,CACvBj2J,KAAM,WACNo2J,kBAAmB,0BACnBP,MAAO,iBACPQ,YAAa,yBACbC,aAAc,0BACdC,WAAY,wBACZC,mBAAoB,gCACpBC,iBAAkB,8BAClBC,UAAW,uBACXC,eAAgB,4BAChBC,cAAe,4BCTJC,GAA8CxO,GACzD,IDWuB,SAACh+H,GAEtB,IAAA9T,EAAA,EAAAA,UACA4R,EAAA,EAAAA,MACAD,EAAA,EAAAA,OACAysI,EAAA,EAAAA,cACAE,EAAA,EAAAA,SACAL,EAAA,EAAAA,aACAC,EAAA,EAAAA,mBACAK,EAAA,EAAAA,YACAE,EAAA,EAAAA,SACAM,EAAA,EAAAA,UACAC,EAAA,EAAAA,QACAL,EAAA,EAAAA,gBACAE,EAAA,EAAAA,cACAK,EAAA,EAAAA,OACAE,EAAA,EAAAA,QACAC,EAAA,EAAAA,cACAx6G,EAAA,EAAAA,MAGI8R,EAAa8yE,GAAoB,GAAkB5kF,GAEnD07G,EAAyB,CAC7BnvI,SAAU,WACVM,KAAM,oBACND,IAAK,MACLklB,UAAW,wBAIPvgC,EAA6Bw4D,KAC7B4xF,OAAwC7qJ,IAAXS,QAA8DT,IAAtCS,EAAO8V,UAAUu0I,iBACtEC,EACH3B,GAAaR,GAAiBS,IAAYT,EACvC,CAAE3sI,MAAO,OAAQD,OAAQ,QACzB,CAAEC,MAAO,OAAQD,OAAQ,QAE/B,MAAO,CACLloB,KAAM,CACJktD,EAAWltD,KACXo7C,EAAM80F,MAAM9T,OACZ,CACEt0G,SAAU,UAEZ6sI,GAAiB,CACfznG,EAAWkpG,kBACX,CACEluI,OAAQ,OACRC,MAAO,SAGX0sI,GAAYL,IAAiBC,GAAsB78B,GAAoBiC,WACtEm7B,GAAYM,GAAaC,GAAWL,GAAmBE,IAAkB,CACxEztI,SAAU,YAEZpR,GAEFs/I,MAAO,CACL3oG,EAAW2oG,MACX,CACE/sI,QAAS,QACT2uB,QAAS,GAEXo9G,GAAY,CACV,YACA,CACEp9G,QAAS,IAGbu9G,GAAY,CAAC9nG,EAAWmpG,YAAaS,GACrCxB,GAAa,CACXpoG,EAAWopG,aACXS,GAAqB,CACnB5uI,MAAO,OACPD,OAAQ,OACRgvI,UAAW,YAEZH,GAAqBE,EACtBH,GAEFvB,GAAW,CACTroG,EAAWqpG,WACXQ,GAAqB,CACnB5uI,MAAO,OACPD,OAAQ,OACRgvI,UAAW,UAEZH,GAAqBE,EACtBH,GAEF5B,GAAmB,CACjBhoG,EAAWspG,mBACX1B,GAAe,CACbzN,SAAU,SAEXyN,GAAe,CACd3nI,UAAW,QAEb2pI,GAEF1B,GAAiB,CACfloG,EAAWupG,iBACX3B,GAAe,CACb3nI,UAAW,SAEZ2nI,GAAe,CACdzN,SAAU,QAEZyP,GAEFrB,GAAU,CACRvoG,EAAWwpG,UACX,CACEvuI,MAAO,OACPD,OAAQ,SAGZ0tI,GAAiB,GACbztI,IACCD,GAAU,CACTA,OAAQ,OACRC,MAAO,SAEVA,KACGD,GAAU,CACVA,OAAQ,OACRC,MAAO,UAETA,KACED,GAAU,CACVA,OAAQ,OACRC,MAAO,SAGb2sI,GAAe5nG,EAAWypG,gBACzB7B,GAAe5nG,EAAW0pG,eAC1B/B,GAAY,eACbL,GAAgB,YAChBmB,GAAW,oBCpJfzpJ,EACA,CACEu8I,MAAO,UAET,GCTW,GAAavV,GAAe,CACvClzI,KAAM,CACJ8oB,QAAS,gBAEXjD,YAAa,CACX,sBACA,CACEsC,MAAO,QAGX0tI,MAAO,CACL,yBACA,CACE/tI,SAAU,aCHHqvI,GAAiBh4B,IAC5B,SAACyS,GACO,MtFyJJ,SAAkB1zI,GACtB,IAAI+uB,OAAgC/gB,EAC9B7B,EAAU4mI,GAAcC,UAK9B,GAHAhzI,EAAOA,EAAOqzI,GAAkBrzI,GAAQ,GACxCA,EAAO+yI,GAAcI,WAAWnzI,IAASA,EAKvC,GAFA+uB,EAAOgkH,GAAc/yI,GAEX,CACF,IAAAozI,EAAA,EAAAA,OACFA,GAAUA,EAAOxL,WACdwL,EAAOI,eACV5L,GAASwL,EAAOxL,UAChBwL,EAAOI,cAAe,GAGnBJ,EAAO/6H,YACV+6H,EAAO/6H,UAAYy3G,GAAYsjB,EAAOlsH,MAAO,CAC3C2D,WAAYuoH,EAAOxL,SAAS/8G,WAC5BI,WAAYmoH,EAAOxL,SAAS38G,YAAc,SAC1CF,UAAWqoH,EAAOxL,SAAS78G,WAAa,kBAMzC5e,EAAQ8mI,iBAAmB9mI,EAAQ+mI,oBACtCxvH,GACE,aAAa1jB,EAAI,mHAMzB,OAAO+uB,EsF7LC,M,uBAAE3e,EAAA,EAAAA,KAAMgjI,EAAA,EAAAA,OAKd,OAAKhjI,EAIE,CACLgZ,SAAUhZ,EACV8oJ,cAAe9lB,EAAO/6H,UACtBwS,WAAYuoH,EAAOxL,UAAYwL,EAAOxL,SAAS/8G,WAC/CsuI,gBAAiB/lB,EAAO+lB,iBAPjB,YAUXnrJ,GACA,GAQW,GAAoD,SAAAme,GACvD,IAAAunH,EAAA,EAAAA,SAAUr7H,EAAA,EAAAA,UAAW,IAAA6O,aAAA,IAAQ,EAAR,KACvBkyI,EAAcH,GAAevlB,IAAa,GACxCwlB,EAAA,EAAAA,cAAe9vI,EAAA,EAAAA,SAAUyB,EAAA,EAAAA,WAAYsuI,EAAA,EAAAA,gBAEvClR,EAAclB,GAAkD56H,EAAOo6H,IACvE8S,EAAiBltI,EAAM,eAAiBA,EAAMwB,MAC9C2rI,EACJntI,EAAM,eAAiBA,EAAM,oBAAsBA,EAAMwB,MACrD,CACE0V,KAAM81H,OAAkBnrJ,EAAY,OAEtC,CACE,eAAe,GAGnBurJ,EAAgBnwI,EAQpB,OANI+vI,GACsB,kBAAb/vI,GAAmD,kBAAnBA,EAAS+C,OAAsBktI,IACxEE,EAAgB,eAAmBnwI,EAAU,CAAEitI,IAAKgD,KAKtD,wCACkB3lB,GACZ4lB,EACArR,EACCkR,EACD,CACExrI,WAAO3f,EACP,kBAAcA,GAEhB,GAAG,CACPqK,UAAW2I,GDtDM,UCsDO,GAAWlf,KAAMo3J,GAAgBxlB,GAAY,GAAW/rH,YAAatP,GAG7F6O,MAAK,GAAI2D,WAAU,GAAK3D,KAEvBqyI,ICrED,IDiFqBt4B,IAAgB,SAACyS,EAAkBr7H,EAAoBmhJ,GAChF,OAAO,GAAS,CAAE9lB,SAAQ,EAAEr7H,UAAS,EAAE,aAAcmhJ,OClFjCtO,GAAiD,CAIrE7pB,UAAW,OCLAo4B,GAA4CtP,GDQzD,YACE,WAAYh+H,GAAZ,MACE,YAAMA,IAAM,K,OA8EN,EAAAutI,2BAA6B,SAACpmJ,GAChC,EAAK6Y,MAAMiqI,YAAc,EAAKjqI,MAAMiqI,WAAWD,sBACjD,EAAKhqI,MAAMiqI,WAAWD,qBAAqB7iJ,GAEzCA,IAAUwhJ,GAAetuJ,OAC3B,EAAK6iF,SAAS,CAAEswE,gBAAgB,KAlFlC,EAAKrmJ,MAAQ,CACXqmJ,gBAAgB,G,EAoFtB,OAxF8B,OAQrB,YAAAtjJ,OAAP,WACQ,iBAAE+S,EAAA,EAAAA,SAAU/Q,EAAA,EAAAA,UAAWoQ,EAAA,EAAAA,OAAQirH,EAAA,EAAAA,SAAUkmB,EAAA,EAAAA,aAAc18G,EAAA,EAAAA,MACvD28G,EAAoC,kBAAbnmB,GAA6C,IAApBA,EAASjvI,OACzDq1J,IAEFvrJ,KAAK4d,MAAMiqI,YAAc7nJ,KAAK4d,MAAM4tI,WAAapF,GAASgD,OAASppJ,KAAK4d,MAAM4tI,WAAapF,GAASgE,MAClGS,EAAcH,GAAevlB,IAAa,GACxCwlB,EAAA,EAAAA,cAAe,IAAA9vI,SAA+B+vI,EAAA,EAAAA,gBAEhDnqG,EAAa,GAAcvmC,EAAQ,CACvCy0B,MAAOA,EACP7kC,UAAS,EACT6gJ,cAAa,EACbY,QAAO,EACPD,cAAa,IAGThR,EAAWiR,EAAU,OAAS,IAC9B7R,EAAclB,GAAqDx4I,KAAK4d,MAAOo6H,GAAuB,CAC1G,eAEMoT,EAAA,WAAAA,eACFvD,EAAU,OACX7nJ,KAAK4d,MAAMiqI,YAAU,CACxBD,qBAAsB5nJ,KAAKmrJ,6BAEvBM,EAAaL,GAAkBC,GAAiBjB,GAGhDa,EAAYjrJ,KAAK4d,MAAM,eAAiB5d,KAAK4d,MAAMqtI,UACnDH,EAAiBjD,EAAWC,KAAOmD,GAAajrJ,KAAK4d,MAAMwB,MAO3D2rI,KALJD,GACA9qJ,KAAK4d,MAAM,oBACXiqI,EAAW,eACXA,EAAW,oBAGT,CACE/yH,KAAMy2H,GAAWX,OAAkBnrJ,EAAY,MAC/C,aAAc8rJ,GAAWX,OAAkBnrJ,EAAYqrJ,GAEzD,CACE,eAAe9qJ,KAAK4d,MAAM,qBAAsBiqI,EAAW,oBAG7D6D,EAA2BC,EAQ/B,OANIf,GAAmBe,GAAsD,kBAAxBA,GAAoCb,IACvFY,EAA2B,eAAmBC,EAAqB,CACjE7D,IAAKgD,KAKP,gBAACxQ,EAAQ,oBACSnV,GACZ4lB,EACArR,EACCkR,EACD,CACExrI,WAAO3f,EACP,kBAAcA,GAEhB,GAAG,CACPqK,UAAW22C,EAAWltD,OAErBg4J,EAAU,gBAACE,EAAS,KAAK5D,IAAiBhtI,GAAY6wI,IAa/D,EAxFA,CAA8B,cFKL,SAAC9tI,GAChB,IAAA9T,EAAA,EAAAA,UAAW6gJ,EAAA,EAAAA,cAAeW,EAAA,EAAAA,cAAeC,EAAA,EAAAA,QAASrxI,EAAA,EAAAA,OAE1D,MAAO,CACL3mB,KAAM,CACJ+3J,GAAiB,GAAWlyI,YAC5B,GAAW7lB,KACXg4J,GAAW,GAAWnC,MACtBuB,EACA7gJ,EACAoQ,GAAUA,EAAO3mB,KAEjB2mB,GAAUA,EAAO0xI,wBGtBrBnsJ,EACA,CACEu8I,MAAO,SAET,GAEFkP,GAAK9yJ,YAAc,OCRZ,IAAM,GAAsD,SAAAwlB,GACzD,IAAA9T,EAAA,EAAAA,UAAW+9I,EAAA,EAAAA,WAEbnO,EAAclB,GAAqD56H,EAAOo6H,IAE1E+S,EAAiBntI,EAAM,cACzB,GACA,CACEkX,KAAM,eACN,eAAe+yH,EAAWC,MAAOD,EAAW,oBAGlD,OACE,2BAASkD,EAAoBrR,EAAW,CAAE5vI,UAAW2I,GJHlC,UIG+C,GAAWlf,KAAM,GAAW61J,MAAOt/I,KACnG,gBAACsgJ,GAAK,KAAKvC,MC1BJgE,GAIE,EAJFA,GASA,EATAA,GAcG,EAdHA,GAoBE,EApBFA,GAyBK,EAzBLA,GA8BG,EA9BHA,GAmCM,EAnCNA,GAyCK,EAzCLA,GA8CE,EA9CFA,GAmDC,EAnDDA,GAwDK,GAxDLA,GA6DG,GA7DHA,GAkEE,GAlEFA,GAuEM,GC9CnB,ICDYC,GDCNC,GAAW74B,IAlBjB,SACE84B,GAcA,OAZsB94B,IAAe,SAACqmB,GACpC,IAAM0S,EAAgB/4B,IAAe,SAACg5B,GACpC,OAAO,SAACC,GACN,OAAO5S,EAAM4S,EAAYD,OAI7B,OAAO,SAACE,EAAqBF,GAC3B,OAAOF,EAAMI,EAAYF,EAAgBD,EAAcC,GAAiB3S,WCM9E,SAAYuS,GACV,uBACA,yBACA,uBACA,yBAJF,CAAYA,QAAsB,KC+O3B,IAmBKO,GAnBCC,GAKN,EALMA,GAQA,ECvQP,SAAUC,GACdx/I,EACAitC,EACA8kG,QAAA,IAAAA,OAAA,GAEA,IAAI0N,GAAc,EAElB,GAAIz/I,GAAUitC,EACZ,GAAI8kG,EACF,GAAI/xI,IAAWitC,EACbwyG,GAAc,OAId,IAFAA,GAAc,EAEPxyG,GAAO,CACZ,IAAMyyG,EAAiC5N,GAAU7kG,GAEjD,GAAIyyG,IAAe1/I,EAAQ,CACzBy/I,GAAc,EACd,MAGFxyG,EAAQyyG,OAGH1/I,EAAOhC,WAChByhJ,EAAcz/I,EAAOhC,SAASivC,IAIlC,OAAOwyG,GDoPT,SAAYH,GAEV,2BAGA,+BAGA,qCAMA,2BAdF,CAAYA,QAAkB,KE1QxB,SAAUK,GACd77B,EACA87B,EACAC,GAEA,OAAOC,GACLh8B,EACA87B,GACA,GACA,GACA,EACAC,GASE,SAAUE,GACdj8B,EACA87B,EACAC,GAEA,OAAOG,GACLl8B,EACA87B,GACA,GACA,GACA,EACAC,GAmFE,SAAUG,GACdl8B,EACA87B,EACAK,EACAC,EACAC,EACAN,EACAO,EACAC,GAEA,IAAKT,IAAoBQ,GAAkBR,IAAmB97B,EAC5D,OAAO,KAGT,IAAIw8B,EAA0BC,GAAiBX,GAG/C,GACEO,GACAG,IACCT,IAAiCW,GAAmBZ,KAAmBa,GAAsBb,IAC9F,CACA,IAAMc,EAAaV,GACjBl8B,EACA87B,EAAev1H,kBACf,GACA,GACA,EACAw1H,EACAO,EACAC,GAGF,GAAIK,EAAY,CACd,GAAKL,GAAYM,GAAkBD,GAAY,KAAWL,EACxD,OAAOK,EAGT,IAAME,EAAyBZ,GAC7Bl8B,EACA48B,EAAWG,wBACX,GACA,GACA,EACAhB,EACAO,EACAC,GAEF,GAAIO,EACF,OAAOA,EAST,IANA,IAAIE,EAAmBJ,EAAWzjJ,cAM3B6jJ,GAAoBA,IAAqBlB,GAAgB,CAC9D,IAAMmB,EAAwBf,GAC5Bl8B,EACAg9B,EAAiBD,wBACjB,GACA,GACA,EACAhB,EACAO,EACAC,GAGF,GAAIU,EACF,OAAOA,EAGTD,EAAmBA,EAAiB7jJ,gBAM1C,GAAIgjJ,GAAaK,GAA2BK,GAAkBf,EAAgBS,GAC5E,OAAOT,EAIT,IAAMoB,EAAehB,GACnBl8B,EACA87B,EAAeiB,wBACf,GACA,GACA,EACAhB,EACAO,EACAC,GAGF,OAAIW,IAKCd,EAaE,KAZEF,GACLl8B,EACA87B,EAAe3iJ,eACf,GACA,GACA,EACA4iJ,EACAO,EACAC,IAcA,SAAUP,GACdh8B,EACA87B,EACAK,EACAC,EACAe,EACApB,EACAO,EACAC,GAEA,IAAKT,GAAmBA,IAAmB97B,GAAem9B,IAA2Bb,EACnF,OAAO,KAGT,IAAIE,EAA0BC,GAAiBX,GAG/C,GAAIK,GAAaK,GAA2BK,GAAkBf,EAAgBS,GAC5E,OAAOT,EAIT,IACGqB,GACDX,IACCT,IAAiCW,GAAmBZ,KAAmBa,GAAsBb,IAC9F,CACA,IAAMc,EAAaZ,GACjBh8B,EACA87B,EAAet1H,mBACf,GACA,GACA,EACAu1H,EACAO,EACAC,GAGF,GAAIK,EACF,OAAOA,EAIX,GAAId,IAAmB97B,EACrB,OAAO,KAIT,IAAMk9B,EAAelB,GACnBh8B,EACA87B,EAAe7pC,oBACf,GACA,GACA,EACA8pC,EACAO,EACAC,GAGF,OAAIW,IAICd,EAaE,KAZEJ,GACLh8B,EACA87B,EAAe3iJ,eACf,GACA,GACA,EACA4iJ,EACAO,EACAC,IAYA,SAAUE,GAAiBnvJ,GAE/B,IAAKA,IAAYA,EAAQsV,aACvB,OAAO,EAGT,IAAMw6I,EAAsB9vJ,EAAQsV,aAjVT,mBAoV3B,OAA4B,OAAxBw6I,QAAwDxuJ,IAAxBwuJ,EACH,SAAxBA,EAKkB,IAAzB9vJ,EAAQ0jB,cACiB,OAAzB1jB,EAAQ+vJ,eAEuB,IAA9B/vJ,EAAgBgqD,UAWf,SAAUulG,GAAkBvvJ,EAAsBgwJ,GAEtD,IAAKhwJ,GAAYA,EAA8B6a,SAC7C,OAAO,EAGT,IAAImc,EAAW,EACXi5H,EAAyB,KAEzBjwJ,GAAWA,EAAQsV,eACrB26I,EAAyBjwJ,EAAQsV,aAAa,eAG5C0hB,EAAWuvC,SAAS0pF,EAAwB,KAIhD,IAAIC,EAAuBlwJ,EAAQsV,aAAetV,EAAQsV,aA1X7B,qBA0XoE,KAC7F66I,EAA2C,OAA3BF,GAAmCj5H,GAAY,EAE7DoG,IACFp9B,GACuB,UAAzBkwJ,IACqB,MAApBlwJ,EAAQ0T,SACa,WAApB1T,EAAQ0T,SACY,UAApB1T,EAAQ0T,SACY,aAApB1T,EAAQ0T,SACY,WAApB1T,EAAQ0T,SACiB,SAAzBw8I,GACAC,GAEJ,OAAOH,GAA8B,IAAdh5H,GAAmBoG,EAASA,EAQ/C,SAAUgyH,GAAmBpvJ,GACjC,SAAUA,GAAWA,EAAQsV,cAAkBtV,EAAQsV,aA/Y1B,sBAuZzB,SAAU+5I,GAAsBrvJ,GACpC,SAAUA,IAAWA,EAAQsV,cAAkE,SAAlDtV,EAAQsV,aAvZvB,0BA8a1B,SAAU86I,GACdpwJ,EACAqwJ,GAEA,MAAkE,SCnb9D,SAAmCrwJ,EAAsBkgE,GAC7D,IAAM+gF,EAAeH,GAAqB9gJ,GAAS,SAACkhJ,GAA6B,OAAAA,EAAYhyI,aAAZ,MAEjF,OAAO+xI,GAAgBA,EAAa3rI,aAAa4qD,GDgb1CowF,CAAyBtwJ,EAASqwJ,GAG3C,IEzbIE,GFybAC,QAAqFlvJ,EAQnF,SAAUmvJ,GAAWzwJ,GACzB,GAAIA,EAAS,CAEX,GAAIwwJ,GAEF,YADAA,GAA6BxwJ,GAI/BwwJ,GAA6BxwJ,EAE7B,IAAM+yH,EAAMx4D,GAAUv6D,GAElB+yH,GAEFA,EAAIz/G,uBAAsB,WACxB,IAAMo9I,EAAmBF,GAGzBA,QAA6BlvJ,EAEzBovJ,IACEA,EAAiBp7I,cAA0E,SAA1Do7I,EAAiBp7I,aArdjC,uBAyddo7I,EAAiBp7I,aAAa,aACjCo7I,EAAiBvhJ,aAAa,WAAY,MAI9CuhJ,EAAiBzuI,aE9d3B,IAAI0uI,GAA2B,EAEzBC,GAA0BxtC,GAAY,CAC1ClmG,SAAU,sBAgBC2zI,GAAuB,SAAC7wJ,EAA6Bo7B,GAChE,GAAKp7B,EAAL,CAIA,IAAI8wJ,EAAmB,EACnBC,EAA2B,KA6C/B31H,EAAOtH,GAAG9zB,EAAS,cA1CE,SAACohB,GACe,IAA/BA,EAAMo9E,cAAczmG,SACtB+4J,EAAmB1vI,EAAMo9E,cAAc,GAAG1F,WAwCC,CAAEk4D,SAAS,IAC1D51H,EAAOtH,GAAG9zB,EAAS,aAnCW,SAACohB,GAE7B,GAAmC,IAA/BA,EAAMo9E,cAAczmG,SAMxBqpB,EAAM4D,kBAED+rI,GAAL,CAIA,IAAMj4D,EAAU13E,EAAMo9E,cAAc,GAAG1F,QAAUg4D,EAE3CG,EAAmBC,GAAqB9vI,EAAMvpB,QAChDo5J,IACFF,EAAWE,GAKc,IAAvBF,EAAS7pI,WAAmB4xE,EAAU,GACxC13E,EAAMC,iBAKJ0vI,EAAS/pI,aAAe9vB,KAAKsyE,KAAKunF,EAAS7pI,YAAc6pI,EAAS5sI,cAAgB20E,EAAU,GAC9F13E,EAAMC,oBAK6C,CAAE2vI,SAAS,IAElED,EAAW/wJ,IAMAmxJ,GAA2B,SAACnxJ,EAA6Bo7B,GACpE,GAAKp7B,EAAL,CAMAo7B,EAAOtH,GAAG9zB,EAAS,aAHS,SAACohB,GAC3BA,EAAM4D,oBAE6C,CAAEgsI,SAAS,MAG5DI,GAAwB,SAAChwI,GAC7BA,EAAMC,kBA0CF,SAAUgwI,KACd,QAAwB/vJ,IAApBivJ,GAA+B,CACjC,IAAIe,EAAyBllJ,SAASiJ,cAAc,OACpDi8I,EAAU92I,MAAM+1E,YAAY,QAAS,SACrC+gE,EAAU92I,MAAM+1E,YAAY,SAAU,SACtC+gE,EAAU92I,MAAM+1E,YAAY,WAAY,UACxC+gE,EAAU92I,MAAM+1E,YAAY,WAAY,YACxC+gE,EAAU92I,MAAM+1E,YAAY,MAAO,WACnCnkF,SAAS6b,KAAK7S,YAAYk8I,GAE1Bf,GAAkBe,EAAUn7F,YAAcm7F,EAAUhpH,YAGpDl8B,SAAS6b,KAAKjE,YAAYstI,GAG5B,OAAOf,GASH,SAAUW,GAAqBK,GAKnC,IAJA,IAAIl9H,EAA8Ck9H,EAC5CxrC,EAAMoW,GAAYo1B,GAGjBl9H,GAAMA,IAAO0xF,EAAI99F,MAAM,CAC5B,GAAsD,SAAlDoM,EAAG/e,aAtJiC,sBAuJtC,OAAO+e,EAETA,EAAKA,EAAGxoB,cAMV,IAFAwoB,EAAKk9H,EAEEl9H,GAAMA,IAAO0xF,EAAI99F,MAAM,CAC5B,GAAsD,UAAlDoM,EAAG/e,aAhKiC,sBAgKuB,CAC7D,IAAMk8I,EAAiBr5F,iBAAiB9jC,GACpCzQ,EAAY4tI,EAAiBA,EAAep5F,iBAAiB,cAAgB,GAEjF,GAAIx0C,IAA4B,WAAdA,GAAwC,SAAdA,GAC1C,OAAOyQ,EAIXA,EAAKA,EAAGxoB,cAQV,OAJKwoB,GAAMA,IAAO0xF,EAAI99F,OACpBoM,EAAKkmC,GAAUg3F,IAGVl9H,ECrKT,IASIo9H,GAOJ,SAASC,GAA4B75J,EAAiB6sJ,G,gBAChDtjI,EACsB,oBAAfuwI,WACTvwI,EAAQ,IAAIuwI,WAAW,QAAS,CAC9Bt9G,QAAW,QAAJ,EAAEqwG,SAAE,eAAErwG,QACbsqB,QAAW,QAAJ,EAAE+lF,SAAE,eAAE/lF,QACb75C,SAAY,QAAJ,EAAE4/H,SAAE,eAAE5/H,SACdojC,OAAU,QAAJ,EAAEw8F,SAAE,eAAEx8F,OACZysC,QAAW,QAAJ,EAAE+vD,SAAE,eAAE/vD,QACbC,WAAc,QAAJ,EAAE8vD,SAAE,eAAE9vD,cAGlBxzE,EAAQhV,SAASq4I,YAAY,gBACvBmN,eACJ,UACAlN,GAAKA,EAAG/vD,UACR+vD,GAAKA,EAAG9vD,WACR7yF,OACA,EACA,EACA,EACA,EACA,IACA2iJ,GAAKA,EAAGrwG,UACRqwG,GAAKA,EAAGx8F,SACRw8F,GAAKA,EAAG5/H,WACR4/H,GAAKA,EAAG/lF,QACR,EACA,MAIJ9mE,EAAO+sJ,cAAcxjI,GAoBvB,ICjGIywI,GDiGEC,GAEF,GACEC,GAA8B,IAAIz9E,IAElC09E,GAAsB,CAAC,OAAQ,SAAU,WAAY,QAAS,MAAO,MAAO,UAIlF,eAsDE,WAAYvyI,GAAZ,MACE,YAAMA,IAAM,K,OAhDN,EAAAwyI,MAAsC,cACtC,EAAAC,WAAa,KAyTb,EAAAC,SAAW,SAACzN,GAClB,IAAI,EAAK0N,uBAAuB1N,EAAG7sJ,QAAnC,CAKM,IAYFw6J,EAZE,UACJC,EAAA,EAAAA,uBAEAC,EAAA,EAAAA,gCACAC,EAAA,EAAAA,qBAEAC,EAAA,EAAAA,oBACAp3I,EAAA,EAAAA,QACAq3I,EAAA,EAAAA,yCACAC,EAAA,EAAAA,uBAEIC,EAAwB,EAAKC,6BAA6BnO,EAAG7sJ,QAGnE,GAAI+6J,EACFP,EAAmB3N,EAAG7sJ,YAItB,IAFA,IAAIgU,EAAgB64I,EAAG7sJ,OAEhBgU,GAAiBA,IAAkB,EAAKomJ,MAAMl5I,SAAS,CAC5D,GAAIw2I,GAAkB1jJ,IAAkB,EAAKgnJ,6BAA6BhnJ,GAAgB,CACxFwmJ,EAAmBxmJ,EACnB,MAEFA,EAAgB60I,GAAU70I,GAjWH,GAsW3B,GAAI6mJ,GAA4ChO,EAAG7sJ,SAAW,EAAKo6J,MAAMl5I,QAAS,CAChF,IAAM+5I,EACJH,GACkC,oBAA3BA,GACPA,EAAuB,EAAKV,MAAMl5I,SAGhC+5I,GAAuBvD,GAAkBuD,IAC3CT,EAAmBS,EACnBA,EAAoB7wI,UAGpB,EAAKA,OAAM,GACP,EAAK8wI,iBAEPV,EAAmB,OAKzB,IAAMW,GAAyB,EAAKD,eAIhCV,GAAoBA,IAAqB,EAAKU,kBAC5CH,GAAyBI,IAC3B,EAAKC,mBAAmBZ,GAAkB,GAAM,GAGlD,EAAKU,eAAiBV,EAElBW,GACF,EAAKE,qBAILZ,GACFA,EAAuB,EAAKS,eAA+BrO,IAGzD8N,GAAwBD,IAC1B7N,EAAG1/H,kBAGD3J,EACFA,EAAQqpI,GACC+N,GACTA,MAiCI,EAAA7/G,QAAU,WAChB,EAAKugH,iBAAgB,IAGf,EAAAzgH,aAAe,SAACgyG,GACtB,IAAI,EAAK0N,uBAAuB1N,EAAG7sJ,UAK3B,QAAAgjB,SAER,CAOA,IAHA,IAAIhjB,EAAS6sJ,EAAG7sJ,OACV0uB,EAAO,GAEN1uB,GAAUA,IAAW,EAAKo6J,MAAMl5I,SACrCwN,EAAK3wB,KAAKiC,GACVA,EAAS6oJ,GAAU7oJ,GA3cM,GA8c3B,KAAO0uB,EAAKxuB,UACVF,EAAS0uB,EAAKoM,QAEA48H,GAAkB13J,IAC9B,EAAKu7J,kBAAkBv7J,GAAQ,IAG7Bu3J,GAAmBv3J,SAoCnB,EAAAm5C,WAAa,SAAC0zG,EAAsCl0G,GAC1D,IAAI,EAAK4hH,uBAAuB1N,EAAG7sJ,QAAnC,CAMM,cAAEghC,EAAA,EAAAA,UAAWhe,EAAA,EAAAA,SAAUw4I,EAAA,EAAAA,qBAAsBC,EAAA,EAAAA,sBAAuBC,EAAA,EAAAA,qBAE1E,IAAI14I,IAIA,EAAK4E,MAAMhG,WACb,EAAKgG,MAAMhG,UAAUirI,IAInBA,EAAG1wD,uBAIH,EAAKw/D,eAAetrI,gBAAkB,EAAK+pI,MAAMl5I,UAAW,EAAK06I,eAArE,CAMA,IACIF,GAAwBA,EAAqB7O,IAAS2O,GAAwBA,EAAqB3O,KACrG,EAAKmO,6BAA6BnO,EAAG7sJ,QACrC,CAEA,IAAM67J,EAAY,EAAKC,qBAEvB,GAAID,GACF,IAAKA,EAAUzxI,OAAM,GACnB,WAEG,KAAIotI,GAAsB3K,EAAG7sJ,QAalC,OAZA,IACG,EAAKipD,aACJ4tG,GACEhK,EAAG7sJ,OACF6sJ,EAAG7sJ,OAAuB49B,YAC3B,IAIJ,YAKC,IAAIivH,EAAGx8F,OACZ,OAGA,OAAQw8F,EAAG//H,OACT,KAAKsyH,GACH,GAAI,EAAK2c,4BAA4BlP,EAAG7sJ,OAAuB6sJ,GAC7D,MAEF,OAEF,KAAKzN,GACH,GAAIp+G,IAAcq1H,GAAmB2F,WACnC,EAAKC,2BAA2BpP,GAC5B,EAAKqP,eAAevjH,IACtB,MAGJ,OAEF,KAAKymG,GACH,GAAIp+G,IAAcq1H,GAAmB2F,WACnC,EAAKC,2BAA2BpP,GAC5B,EAAKsP,gBAAgBxjH,IACvB,MAGJ,OAEF,KAAKymG,GACH,GAAIp+G,IAAcq1H,GAAmB9R,aACnC,EAAK0X,2BAA2BpP,GAC5B,EAAKuP,gBACP,MAGJ,OAEF,KAAKhd,GACH,GAAIp+G,IAAcq1H,GAAmB9R,aACnC,EAAK0X,2BAA2BpP,GAC5B,EAAKwP,kBACP,MAGJ,OACF,KAAKjd,GACH,IAAKqc,GAAyB,EAAKa,kBAAiB,GAClD,MAEF,OACF,KAAKld,GACH,IAAKqc,GAAyB,EAAKa,kBAAiB,GAClD,MAEF,OAEF,KAAKld,GACH,GAEE,EAAKx3H,MAAM20I,aACX,EAAK30I,MAAM40I,eAAiBlG,IAC3B,EAAK1uI,MAAM40I,eAAiBlG,IAC3B,EAAKmG,gBAAgB5P,EAAG7sJ,QAC1B,CACA,IAAI08J,GAAe,EAEnB,GADA,EAAKC,mBAAoB,EAEvB37H,IAAcq1H,GAAmB2F,UAChC,EAAKY,iBAAiB,EAAK1B,eA1rBf,2BA+rBbwB,GADyB,GAAO/jH,IAAUk0G,EAAG5/H,SAAW4/H,EAAG5/H,UACzB,EAAKivI,eAAevjH,GAAS,EAAKwjH,gBAAgBxjH,QAHpF+jH,EAAe7P,EAAG5/H,SAAW,EAAKmvI,eAAiB,EAAKC,iBAM1D,GADA,EAAKM,mBAAoB,EACrBD,EACF,MACS,EAAK90I,MAAMi1I,0CACpB,EAAK3B,eAAiB,MAG1B,OAEF,KAAK9b,GACH,GACE,EAAK0d,0BAA0BjQ,EAAG7sJ,SACjC,EAAKy8J,gBAAgB5P,EAAG7sJ,UACtB,EAAK+8J,sBAAsBlQ,EAAG7sJ,QAA4B,GAE7D,OAAO,EAET,IAAM49B,EAAa,EAAKw8H,MAAMl5I,SAAY,EAAKk5I,MAAMl5I,QAAQ0c,WAC7D,GACE,EAAKw8H,MAAMl5I,SACX0c,GACA,EAAKqrB,aAAa4tG,GAAe,EAAKuD,MAAMl5I,QAAS0c,GAAY,IAEjE,MAEF,OAEF,KAAKwhH,GACH,GACE,EAAK0d,0BAA0BjQ,EAAG7sJ,SACjC,EAAKy8J,gBAAgB5P,EAAG7sJ,UACtB,EAAK+8J,sBAAsBlQ,EAAG7sJ,QAA4B,GAE7D,OAAO,EAGT,IAAM6zD,EAAY,EAAKumG,MAAMl5I,SAAY,EAAKk5I,MAAMl5I,QAAQ2yC,UAC5D,GACE,EAAKumG,MAAMl5I,SACX,EAAK+nC,aAAa8tG,GAAmB,EAAKqD,MAAMl5I,QAAS2yC,GAAW,GAAM,GAAM,IAEhF,MAEF,OAEF,KAAKurF,GACH,GAAI,EAAK2c,4BAA4BlP,EAAG7sJ,OAAuB6sJ,GAC7D,MAEF,OAEF,QACE,QAINA,EAAGrjI,iBACHqjI,EAAG1/H,qBA4TG,EAAA6vI,iCAAmC,SACzCC,EACAC,EACAC,GAGA,IAAMC,EAAgB,EAAKC,gBAAgB73I,MAAQ,EAAK63I,gBAAgBtoI,GAAK,EAKvEuoI,EAAgBj+J,KAAK29B,MAAMmgI,EAAW53I,KACtCg4I,EAAmBl+J,KAAK29B,MAAMkgI,EAAWxxI,QACzC8xI,EAAmBn+J,KAAK29B,MAAMmgI,EAAWzxI,QACzC+xI,EAAgBp+J,KAAK29B,MAAMkgI,EAAW33I,KAI5C,OAHqC03I,GAAaK,EAAgBC,IAC9BN,GAAaO,EAAmBC,EAG9DL,GAAiBD,EAAW33I,MAAQ43I,GAAiBD,EAAW33I,KAAO23I,EAAWz3I,MAC7E,EAEFrmB,KAAKg+B,IAAI8/H,EAAW33I,KAAO23I,EAAWz3I,MAAQ,EAAI03I,GAGtD,EAAKR,iBAAiB,EAAK1B,eAhlCX,yBAEU,WACS,WA+HxCxT,GAAuB,GAYvB,EAAKwE,IAAMjE,GAAM,aAEjB,EAAKoV,gBAAkB,CACrB73I,KAAM,EACND,IAAK,GAGP,EAAKo3I,mBAAoB,E,EAosC7B,OAhxC+B,OAsCf,EAAAe,cAAd,WACE,OAAOxD,GAAYllG,MAQN,EAAA2oG,kBAAf,SAAiC9Q,GAE3BA,EAAG//H,QAAUsyH,IACf8a,GAAY95J,SAAQ,SAACw9J,GAAoB,OAAAA,EAAA,wBA6BtC,YAAA7vD,kBAAP,WACU,iBAAA7sF,QAIR,GAFA+4I,GAAcjwJ,KAAKkiJ,KAAOliJ,KAEtBzM,EAAM,CACRyM,KAAK6zJ,eAAiBn7F,GAAUnlE,GAGhC,IAFA,IAAIyW,EAAgB60I,GAAUtrJ,GAxFL,GA0FlByW,GAAiBA,IAAkBhK,KAAK2xJ,eAAevrI,MAAmC,IAA3Bpc,EAAc4pE,UAAgB,CAClG,GAAI25E,GAAmBvjJ,GAAgB,CACrChK,KAAK4xJ,cAAe,EACpB,MAEF5nJ,EAAgB60I,GAAU70I,GA/FH,GAkGpBhK,KAAK4xJ,eACR1B,GAAY7lJ,IAAIrK,MAEZA,KAAK6zJ,gBAAuC,IAArB3D,GAAYllG,MACrChrD,KAAK6zJ,eAAe5iJ,iBAAiB,UAAW6iJ,EAAUH,mBAAmB,IAIjF3zJ,KAAKowJ,MAAMl5I,SAAWlX,KAAKowJ,MAAMl5I,QAAQjG,iBAAiB,OAAQjR,KAAK+wC,SAAS,GAGhF/wC,KAAKqxJ,oBAEDrxJ,KAAK4d,MAAMkzI,wBAAuE,kBAAtC9wJ,KAAK4d,MAAMkzI,uBACzD9wJ,KAAKkxJ,eAAiBlxJ,KAAK2xJ,eAAep9H,cAAcv0B,KAAK4d,MAAMkzI,wBAE1D9wJ,KAAK4d,MAAMm2I,uBAEpB/zJ,KAAKkxJ,eAAiBlxJ,KAAK2xJ,eAAep9H,cAAcv0B,KAAK4d,MAAMm2I,uBAGjE/zJ,KAAK4d,MAAMo2I,oBACbh0J,KAAKogB,UAKJ,YAAAupF,mBAAP,WACU,iBAAAzyF,QACFgtG,EAAMlkH,KAAK2xJ,eAEjB,GACEztC,GACAlkH,KAAKi0J,iBACJ/vC,EAAI79F,gBAAkB69F,EAAI99F,MACH,OAAtB89F,EAAI79F,gBACFrmB,KAAK4d,MAAMs2I,yBAA2BhwC,EAAI79F,gBAAkB9yB,GAChE,CAEA,IAAM4gK,EH4PN,SAAkCpnJ,EAAqB2X,GAG3D,IAFA,IAAIvmB,EAAU4O,EAEM,MAAA2X,EAAA,eAAM,CAArB,IAAMhhB,EAAK,KACR0wJ,EAAYj2J,EAAQ0c,SAASxlB,KAAK0f,IAAIrR,EAAOvF,EAAQ0c,SAAS3kB,OAAS,IAE7E,IAAKk+J,EACH,MAEFj2J,EAAUi2J,EAQZ,OALAj2J,EACEuvJ,GAAkBvvJ,IAAYmvJ,GAAiBnvJ,GAC3CA,EACA0uJ,GAAe9/I,EAAQ5O,GAAS,IAAS4uJ,GAAmBhgJ,EAAQ5O,GG3Q/Ck2J,CAAwB9gK,EAAqByM,KAAKi0J,gBAErEE,GACFn0J,KAAKuxJ,kBAAkB4C,GAAgB,GACvCA,EAAe/zI,QACfpgB,KAAKsxJ,iBAAgB,IAIrBtxJ,KAAKsxJ,iBAAgB,KAKpB,YAAAhlD,qBAAP,kBACS2jD,GAAcjwJ,KAAKkiJ,KAErBliJ,KAAK4xJ,eACR1B,GAAY/lE,OAAOnqF,MAGfA,KAAK6zJ,gBAAuC,IAArB3D,GAAYllG,MACrChrD,KAAK6zJ,eAAe1tI,oBAAoB,UAAW2tI,EAAUH,mBAAmB,IAIhF3zJ,KAAKowJ,MAAMl5I,SACblX,KAAKowJ,MAAMl5I,QAAQiP,oBAAoB,OAAQnmB,KAAK+wC,SAAS,GAG/D/wC,KAAKkxJ,eAAiB,KACtBlxJ,KAAKs0J,qBAAuB,MAGvB,YAAAxsJ,OAAP,sBAEQ,aAAE,IAAAoyI,GAASx1C,EAAA,EAAAA,YAAa6vD,EAAA,EAAAA,UAAWC,EAAA,EAAAA,gBAAiBC,EAAA,EAAAA,eAAgB3qJ,EAAA,EAAAA,UACpE4qJ,EAAWlc,GAAex4I,KAAK4d,MAAOo6H,IAEtChP,EAAMn4H,GAAO6zF,GAAe,MAOlC1kG,KAAK20J,6BAGL,IAAMhmH,EAAgBy1F,KAEtB,OACE,gBAAC4E,EAAG,qBACeyrB,EAAc,mBACbD,GACdE,EAMEH,EAAiB,CAKvBzqJ,UAAW2I,IAjOZm9I,KACHA,GAAkBruC,GAChB,CACEmF,UAAW,CACT,SAAU,CACRxxD,QAAS,UA/CU,iBAsDtB06F,IAqN8B9lJ,GAE/BqQ,IAAKna,KAAKqwJ,WAAWrwJ,KAAK4d,MAAMg3I,WAAY50J,KAAKowJ,OAAM,oBACpCpwJ,KAAKkiJ,IAExBtqI,UAAW,SAACirI,GAAyC,SAAK1zG,WAAW0zG,EAAhB,IACrDrpI,QAASxZ,KAAKswJ,SACduE,mBAAoB70J,KAAK6wC,eAExB7wC,KAAK4d,MAAM/C,WAWX,YAAAuF,MAAP,SAAa00I,GACX,QADW,IAAAA,OAAA,GACP90J,KAAKowJ,MAAMl5I,QAAS,CACtB,IACG49I,GAC2D,SAA5D90J,KAAKowJ,MAAMl5I,QAAQzD,aA9SI,sBA+SvBzT,KAAK4xJ,aACL,CACA,IAAMmD,EAAmB/0J,KAAKg1J,cAAch1J,KAAKowJ,MAAMl5I,SAEvD,GAAI69I,IAAqB/0J,KAAKowJ,MAAMl5I,QAAS,CAC3C,IAAM+9I,EAAYhF,GAAc8E,EAAiBthJ,aAlT5B,sBAoTrB,QAASwhJ,GAAaA,EAAUh2G,aAAaj/C,KAAKowJ,MAAMl5I,SAG1D,OAAO,EACF,IACJ49I,GACD90J,KAAKkxJ,gBACL3E,GAAgBvsJ,KAAKowJ,MAAMl5I,QAASlX,KAAKkxJ,iBACzCxD,GAAkB1tJ,KAAKkxJ,gBAGvB,OADAlxJ,KAAKkxJ,eAAe9wI,SACb,EAEP,IAAMwT,EAAa5zB,KAAKowJ,MAAMl5I,QAAQ0c,WAEtC,OAAO5zB,KAAKi/C,aAAa4tG,GAAe7sJ,KAAKowJ,MAAMl5I,QAAS0c,GAAY,IAG5E,OAAO,GAOF,YAAAshI,UAAP,WACE,GAAIl1J,KAAKowJ,MAAMl5I,QAAS,CACtB,IAAM2yC,EAAY7pD,KAAKowJ,MAAMl5I,SAAYlX,KAAKowJ,MAAMl5I,QAAQ2yC,UAE5D,OAAO7pD,KAAKi/C,aAAa8tG,GAAmB/sJ,KAAKowJ,MAAMl5I,QAAS2yC,GAAW,GAAM,GAAM,IAGzF,OAAO,GAWF,YAAA5K,aAAP,SAAoB9gD,EAAsBg3J,GAElC,iBAAEC,EAAA,EAAAA,cAAeC,EAAA,EAAAA,mBAEvB,QAAKA,IAAuBA,EAAmBl3J,IAAci3J,IAAkBA,EAAcj3J,QAIzFA,IAEF6B,KAAKuxJ,kBAAkBpzJ,EAASg3J,GAC5Bn1J,KAAKkxJ,gBACPlxJ,KAAKkxJ,eAAe9wI,SAGf,KAWJ,YAAAk1I,kBAAP,SAAyBC,GACvBv1J,KAAKqzJ,gBAAkBkC,GAGjB,YAAAZ,2BAAR,WACU,iBAAAz9I,QAEFgtG,EAAMlkH,KAAK2xJ,eACjB,GAAIztC,EAAK,CACP,IAAMsxC,EAAiBtxC,EAAI79F,cAG3B,GAAImvI,IAAmBjiK,EAAM,CAC3B,IAAMkiK,EAAqBlJ,GAAgBh5J,EAAMiiK,GAAgB,GACjEx1J,KAAKi0J,eAAiBwB,EHiGxB,SAA8Bt+D,EAA0BC,GAG5D,IAFA,IAAM1yE,EAAiB,GAEhB0yE,GAAaD,GAAeC,IAAcD,GAAa,CAC5D,IAAM,EAAS0nD,GAAUznD,GAAW,GAEpC,GAAe,OAAX,EACF,MAAO,GAGT1yE,EAAK+0B,QAAQ7lD,MAAMd,UAAU6Q,QAAQtS,KAAK,EAAOwpB,SAAUu8E,IAC3DA,EAAY,EAGd,OAAO1yE,EG/G0CgxI,CAAoBniK,EAAqBiiK,QAAkB/1J,KAiGpG,YAAA6xJ,gBAAR,SAAwBqE,GACd,iBAAAz+I,QAEJ3jB,GAAQyM,KAAK41J,YAAcD,IAC7B31J,KAAK41J,UAAYD,EAEbA,GACG31J,KAAK4d,MAAMuvI,iBACdntJ,KAAK61J,gBAAkBtiK,EAAKkgB,aAAa,YACzClgB,EAAK+Z,aAAa,WAAY,OAEhC/Z,EAAK6sB,SACKpgB,KAAK4d,MAAMuvI,iBACjBntJ,KAAK61J,iBACPtiK,EAAK+Z,aAAa,WAAYtN,KAAK61J,iBACnC71J,KAAK61J,qBAAkBp2J,GAEvBlM,EAAKmnC,gBAAgB,eA4CrB,YAAA62H,kBAAR,SAA0BpzJ,EAAsBg3J,GAC9C,IAAMW,EAAwB91J,KAAKkxJ,eAEnClxJ,KAAKkxJ,eAAiB/yJ,EAElB23J,IACEvI,GAAmBuI,IACrB91J,KAAKqxJ,kBAAkByE,GAGzBA,EAAsB3gI,UAAY,GAGhCn1B,KAAKkxJ,iBACFlxJ,KAAKqzJ,kBAAmB8B,GAC3Bn1J,KAAKoxJ,mBAAmBjzJ,GAAS,GAAM,GAGzC6B,KAAKkxJ,eAAe/7H,SAAW,IAI3B,YAAA88H,2BAAR,SAAmCpP,GACjC7iJ,KAAK4d,MAAMm4I,2BAA6BlT,EAAGrjI,kBAuMrC,YAAAuyI,4BAAR,SAAoC3R,EAA4ByC,GAC9D,IAAI7sJ,EAASoqJ,EACb,GAAIpqJ,IAAWgK,KAAKowJ,MAAMl5I,UAAYlX,KAAK4d,MAAMo4I,kBAC/C,OAAO,EAGT,EAAG,CACD,GACqB,WAAnBhgK,EAAO6b,SACY,MAAnB7b,EAAO6b,SACY,UAAnB7b,EAAO6b,SACY,aAAnB7b,EAAO6b,QAEP,OAAO,EAGT,GACE7R,KAAKgxJ,6BAA6Bh7J,IACc,SAAhDA,EAAOyd,aAvxBgB,sBAwxB8B,SAArDzd,EAAOyd,aAvxBqB,+BA0xB5B,OADAo8I,GAA4B75J,EAAQ6sJ,IAC7B,EAGT7sJ,EAAS6oJ,GAAU7oJ,GAntBM,SAotBlBA,IAAWgK,KAAKowJ,MAAMl5I,SAE/B,OAAO,GAMD,YAAA46I,mBAAR,SAA2BjhC,GAGzB,KAFAA,EAAcA,GAAe7wH,KAAKkxJ,gBAAkBlxJ,KAAKowJ,MAAMl5I,SAG7D,OAAO,KAGT,GAAIq2I,GAAmB18B,GACrB,OAAOo/B,GAAcp/B,EAAYp9G,aA7yBR,sBAkzB3B,IAFA,IAAIumC,EAAQ62E,EAAYx5F,kBAEjB2iB,GAAO,CACZ,GAAIuzG,GAAmBvzG,GACrB,OAAOi2G,GAAcj2G,EAAMvmC,aApzBJ,sBAszBzB,IAAMrE,EAAQpP,KAAK8xJ,mBAAmB93G,GAEtC,GAAI5qC,EACF,OAAOA,EAGT4qC,EAAQA,EAAM8oE,mBAGhB,OAAO,MAGD,YAAAmzC,WAAR,SACEhD,EACAiD,EACArT,EACAsT,QAAA,IAAAA,OAAA,GAEA,IAAIh4J,EAAU6B,KAAKkxJ,eACfkF,GAAqB,EACrBC,OAA4C52J,EAC5C62J,GAAe,EACbC,EAAkBv2J,KAAK4d,MAAMoZ,YAAcq1H,GAAmBmK,cAEpE,IAAKr4J,IAAY6B,KAAKowJ,MAAMl5I,QAC1B,OAAO,EAGT,GAAIlX,KAAKyyJ,gBAAgBt0J,KAClB6B,KAAK+yJ,sBAAsB50J,EAA6B80J,GAC3D,OAAO,EAIX,IAAMC,EAAaqD,EAAkBp4J,EAAQkjB,wBAA0B,KAEvE,EAAG,CAKD,GAJAljB,EAAW80J,EACPpG,GAAe7sJ,KAAKowJ,MAAMl5I,QAAS/Y,GACnC4uJ,GAAmB/sJ,KAAKowJ,MAAMl5I,QAAS/Y,IAEvCo4J,EAmBG,CACLF,EAAmBl4J,EACnB,MApBA,GAAIA,EAAS,CACX,IACMs4J,EAAkBP,EAAsBhD,EAD3B/0J,EAAQkjB,yBAG3B,IAAyB,IAArBo1I,IAAiD,IAAvBL,EAA0B,CACtDC,EAAmBl4J,EACnB,MAQF,GALIs4J,GAAmB,KAA6B,IAAvBL,GAA4BK,EAAkBL,KACzEA,EAAoBK,EACpBJ,EAAmBl4J,GAGjBi4J,GAAqB,GAAKK,EAAkB,EAC9C,aAOCt4J,GAGT,GAAIk4J,GAAoBA,IAAqBr2J,KAAKkxJ,eAChDoF,GAAe,EACft2J,KAAKi/C,aAAao3G,QACb,GAAIr2J,KAAK4d,MAAM84I,sBAAwBP,EAC5C,OAAIlD,EACKjzJ,KAAKi/C,aACV4tG,GAAe7sJ,KAAKowJ,MAAMl5I,QAASlX,KAAKowJ,MAAMl5I,QAAQmgB,mBAAkC,IAGnFr3B,KAAKi/C,aACV8tG,GACE/sJ,KAAKowJ,MAAMl5I,QACXlX,KAAKowJ,MAAMl5I,QAAQkgB,kBACnB,GACA,GACA,IAMR,OAAOk/H,GAGD,YAAAjE,eAAR,sBACMsE,GAAa,EAEXvD,EAAgBpzJ,KAAKqzJ,gBAAgB73I,MAAQxb,KAAKqzJ,gBAAgBtoI,GAAK,EAE7E,QACE/qB,KAAKi2J,YAAW,GAAM,SAAC/C,EAAwBC,GAC7C,IAAIyD,GAAY,EAKVtD,EAAgBj+J,KAAK29B,MAAMmgI,EAAW53I,KACtCg4I,EAAmBl+J,KAAK29B,MAAMkgI,EAAWxxI,QAE/C,OAAI4xI,EAAgBC,EACb,EAAKX,iBAAiB,EAAK1B,eA/5BjB,yBAEU,WACS,aAm6BhB,IAAfyF,GAAoBrD,GAAiBC,GAAqBD,IAAkBqD,KAC/EA,EAAYrD,EAEVsD,EADExD,GAAiBD,EAAW33I,MAAQ43I,GAAiBD,EAAW33I,KAAO23I,EAAWz3I,MACzE,EAEArmB,KAAKg+B,IAAI8/H,EAAW33I,KAAO23I,EAAWz3I,MAAQ,EAAI03I,IAI1DwD,QAGT52J,KAAKoxJ,mBAAmBpxJ,KAAKkxJ,gBAA+B,GAAO,IAC5D,IAMH,YAAAkB,aAAR,sBACMuE,GAAa,EAEXvD,EAAgBpzJ,KAAKqzJ,gBAAgB73I,MAAQxb,KAAKqzJ,gBAAgBtoI,GAAK,EAE7E,QACE/qB,KAAKi2J,YAAW,GAAO,SAAC/C,EAAwBC,GAC9C,IAAIyD,GAAY,EAKVpD,EAAmBn+J,KAAK29B,MAAMmgI,EAAWzxI,QACzC4xI,EAAgBj+J,KAAK29B,MAAMmgI,EAAW53I,KACtCk4I,EAAgBp+J,KAAK29B,MAAMkgI,EAAW33I,KAE5C,OAAIi4I,EAAmBC,EAChB,EAAKb,iBAAiB,EAAK1B,eA18BjB,yBAEU,WACS,aA68BhB,IAAfyF,GAAoBnD,GAAoBC,GAAkBH,IAAkBqD,KAC/EA,EAAYrD,EAEVsD,EADExD,GAAiBD,EAAW33I,MAAQ43I,GAAiBD,EAAW33I,KAAO23I,EAAWz3I,MACzE,EAEArmB,KAAKg+B,IAAI8/H,EAAW33I,KAAO23I,EAAWz3I,MAAQ,EAAI03I,IAI1DwD,QAGT52J,KAAKoxJ,mBAAmBpxJ,KAAKkxJ,gBAA+B,GAAO,IAC5D,IAMH,YAAAgB,eAAR,SAAuBvjH,GAAvB,WACQkoH,EAAa72J,KAAK4yJ,iBAAiB5yJ,KAAKkxJ,eAn+BvB,2BAo+BvB,QACElxJ,KAAKi2J,WACH,GAAOtnH,IACP,SAACukH,EAAwBC,GACvB,IAAIyD,GAAY,EAuBhB,OApBI,GAAOjoH,GAKa+wB,WAAWyzF,EAAW53I,IAAI6nD,QAAQ,IAAM1D,WAAWwzF,EAAWxxI,OAAO0hD,QAAQ,IAE7E1D,WAAWyzF,EAAWzxI,OAAO0hD,QAAQ,IAAM1D,WAAWwzF,EAAW33I,IAAI6nD,QAAQ,MAKnG+vF,EAAW1/H,OAASy/H,EAAWz/H,OAC/B,EAAK7V,MAAMoZ,YAAcq1H,GAAmB2F,SAE5C4E,EAAW1D,EAAWz/H,MAAQ0/H,EAAW1/H,MAC/BojI,IACVD,GA1/BgC,WA6/B3BA,SAETn3J,EACAo3J,KAGF72J,KAAKoxJ,mBAAmBpxJ,KAAKkxJ,gBAA+B,GAAM,IAC3D,IAMH,YAAAiB,gBAAR,SAAwBxjH,GAAxB,WACQkoH,EAAa72J,KAAK4yJ,iBAAiB5yJ,KAAKkxJ,eA7gCvB,2BA8gCvB,QACElxJ,KAAKi2J,YACF,GAAOtnH,IACR,SAACukH,EAAwBC,GACvB,IAAIyD,GAAY,EAuBhB,OApBI,GAAOjoH,GAKa+wB,WAAWyzF,EAAWzxI,OAAO0hD,QAAQ,IAAM1D,WAAWwzF,EAAW33I,IAAI6nD,QAAQ,IAE7E1D,WAAWyzF,EAAW53I,IAAI6nD,QAAQ,IAAM1D,WAAWwzF,EAAWxxI,OAAO0hD,QAAQ,MAKnG+vF,EAAW33I,MAAQ03I,EAAW13I,MAC9B,EAAKoC,MAAMoZ,YAAcq1H,GAAmB2F,SAE5C4E,EAAWzD,EAAW33I,KAAO03I,EAAW13I,KAC9Bq7I,IACVD,GApiCgC,WAuiC3BA,SAETn3J,EACAo3J,KAGF72J,KAAKoxJ,mBAAmBpxJ,KAAKkxJ,gBAA+B,GAAM,IAC3D,IAqCH,YAAAoB,iBAAR,SAAyBW,EAAoBkD,QAAA,IAAAA,OAAA,GAC3C,IAAIh4J,EAAU6B,KAAKkxJ,eACnB,IAAK/yJ,IAAY6B,KAAKowJ,MAAMl5I,QAC1B,OAAO,EAET,GAAIlX,KAAKyyJ,gBAAgBt0J,KAClB6B,KAAK+yJ,sBAAsB50J,EAA6B80J,GAC3D,OAAO,EAGX,IAAM7D,EAAmBC,GAAqBlxJ,GAC9C,IAAKixJ,EACH,OAAO,EAET,IAAIgH,GAAqB,EACrBC,OAAmB52J,EACnBk3J,GAAa,EACbG,GAAgB,EACdC,EAAY3H,EAAiC9sI,aAC7C4wI,EAAa/0J,EAAQkjB,wBAC3B,GAIE,GAHAljB,EAAU80J,EACNpG,GAAe7sJ,KAAKowJ,MAAMl5I,QAAS/Y,GACnC4uJ,GAAmB/sJ,KAAKowJ,MAAMl5I,QAAS/Y,GAC9B,CACX,IAAMg1J,EAAah1J,EAAQkjB,wBACrBiyI,EAAgBj+J,KAAK29B,MAAMmgI,EAAW53I,KACtCg4I,EAAmBl+J,KAAK29B,MAAMkgI,EAAWxxI,QACzC8xI,EAAmBn+J,KAAK29B,MAAMmgI,EAAWzxI,QACzC+xI,EAAgBp+J,KAAK29B,MAAMkgI,EAAW33I,KACtCk7I,EAAkBz2J,KAAKgzJ,iCAAiCC,EAAWC,EAAYC,GAIrF,GAH4CF,GAAaK,EAAgBC,EAAmBwD,IACjD9D,GAAaO,EAAmBC,EAAgBsD,EAGzF,MAEEN,GAAmB,IAEjBxD,GAAaK,EAAgBqD,GAC/BA,EAAYrD,EACZ8C,EAAoBK,EACpBJ,EAAmBl4J,IACT80J,GAAaO,EAAmBsD,GAE1CA,EAAetD,EACf4C,EAAoBK,EACpBJ,EAAmBl4J,KACa,IAAvBi4J,GAA4BK,GAAmBL,KACxDA,EAAoBK,EACpBJ,EAAmBl4J,WAIlBA,GAET,IAAIm4J,GAAe,EAEnB,GAAID,GAAoBA,IAAqBr2J,KAAKkxJ,eAChDoF,GAAe,EACft2J,KAAKi/C,aAAao3G,GAClBr2J,KAAKoxJ,mBAAmBiF,GAAiC,GAAO,QAC3D,GAAIr2J,KAAK4d,MAAM84I,sBAAwBP,EAC5C,OAAIlD,EACKjzJ,KAAKi/C,aACV4tG,GAAe7sJ,KAAKowJ,MAAMl5I,QAASlX,KAAKowJ,MAAMl5I,QAAQmgB,mBAAkC,IAGrFr3B,KAAKi/C,aACV8tG,GACE/sJ,KAAKowJ,MAAMl5I,QACXlX,KAAKowJ,MAAMl5I,QAAQkgB,kBACnB,GACA,GACA,IAIN,OAAOk/H,GAGD,YAAAlF,mBAAR,SAA2BjzJ,EAAsB64J,EAAwBC,GACvE,GACEj3J,KAAK4d,MAAMoZ,YAAcq1H,GAAmBmK,iBAC1Cx2J,KAAKqzJ,iBAAmB2D,GAAgBC,GAC1C,CACA,IAAM7jI,EAAOj1B,EAAQkjB,wBACf7F,EAAO4X,EAAK5X,KAAO4X,EAAK1X,MAAQ,EAChC,EAAM0X,EAAK7X,IAAM6X,EAAK3X,OAAS,EAEhCzb,KAAKqzJ,kBACRrzJ,KAAKqzJ,gBAAkB,CAAE73I,KAAI,EAAED,IAAG,IAGhCy7I,IACFh3J,KAAKqzJ,gBAAgB73I,KAAOA,GAG1By7I,IACFj3J,KAAKqzJ,gBAAgB93I,IAAM,KAKzB,YAAAy1I,6BAAR,SAAqC7yJ,GACnC,OAAO6B,KAAKg1J,cAAc72J,KAAa6B,KAAKowJ,MAAMl5I,SAG5C,YAAA89I,cAAR,SAAsB72J,GAGpB,IAFA,IAAI6L,EAAgB60I,GAAU1gJ,GA5nCH,GA8nCpB6L,GAAiBA,IAAkBhK,KAAKowJ,MAAMl5I,SAAWlN,IAAkBhK,KAAK2xJ,eAAevrI,MAAM,CAC1G,GAAImnI,GAAmBvjJ,GACrB,OAAOA,EAGTA,EAAgB60I,GAAU70I,GAnoCD,GAsoC3B,OAAOA,GAGD,YAAAqnJ,kBAAR,SAA0BlzJ,IAErB6B,KAAKkxJ,gBACNlxJ,KAAK4d,MAAMkzI,wBACkC,oBAAtC9wJ,KAAK4d,MAAMkzI,yBAElB9wJ,KAAKkxJ,eAAiBlxJ,KAAK4d,MAAMkzI,uBAAuB9wJ,KAAKowJ,MAAMl5I,WAGhE/Y,GAAW6B,KAAKowJ,MAAMl5I,UACzBlX,KAAKs0J,qBAAuB,KAC5Bn2J,EAAU6B,KAAKowJ,MAAMl5I,QACjBlX,KAAKkxJ,iBAAmB3E,GAAgBpuJ,EAAS6B,KAAKkxJ,kBACxDlxJ,KAAKkxJ,eAAiB,OAMtBlxJ,KAAKkxJ,iBAAmBxD,GAAkB1tJ,KAAKkxJ,kBACjDlxJ,KAAKkxJ,eAAiB,MAKxB,IAFA,IAAM1uI,EAAarkB,GAAWA,EAAQ0c,SAE7Bi/B,EAAa,EAAGt3B,GAAcs3B,EAAat3B,EAAWtsB,OAAQ4jD,IAAc,CACnF,IAAME,EAAQx3B,EAAWs3B,GAEpByzG,GAAmBvzG,GAwBkC,SAA/CA,EAAMvmC,aAxwCQ,uBA0wCpBzT,KAAK4xJ,eACH5xJ,KAAKkxJ,gBAAmBlxJ,KAAKs0J,uBAAyBt0J,KAAKkxJ,iBAAmBl3G,EAMvC,OAAjCA,EAAMvmC,aA9wCR,aA+wCPumC,EAAM1sC,aA/wCC,WA+wCsB,OAL7BtN,KAAKs0J,qBAAuBt6G,EACS,MAAjCA,EAAMvmC,aA3wCH,aA4wCLumC,EAAM1sC,aA5wCD,WA4wCwB,QA7B7B0sC,EAAMvmC,cAA+D,UAA/CumC,EAAMvmC,aAlvCT,sBAmvCrBumC,EAAM1sC,aAhvCC,WAgvCsB,MAG3BogJ,GAAkB1zG,GAChBh6C,KAAK4d,MAAM5E,SACbghC,EAAM1sC,aArvCD,WAqvCwB,MAE5BtN,KAAK4xJ,eACH5xJ,KAAKkxJ,gBAAmBlxJ,KAAKs0J,uBAAyBt0J,KAAKkxJ,iBAAmBl3G,EAMvC,OAAjCA,EAAMvmC,aA9vCV,aA+vCLumC,EAAM1sC,aA/vCD,WA+vCwB,OAL7BtN,KAAKs0J,qBAAuBt6G,EACS,MAAjCA,EAAMvmC,aA3vCL,aA4vCHumC,EAAM1sC,aA5vCH,WA4vC0B,MAKN,QAAlB0sC,EAAMnoC,SAAyD,UAApCmoC,EAAMvmC,aAAa,cAEvDumC,EAAM1sC,aAAa,YAAa,UAgBpCtN,KAAKqxJ,kBAAkBr3G,KAInB,YAAA84G,0BAAR,SAAkC30J,GAChC,OAAOA,GAAuD,SAA5CA,EAAQsV,aAAa,oBAGjC,YAAAg/I,gBAAR,SAAwBt0J,GACtB,SACEA,IACAA,EAAQ0T,SAC2B,UAAlC1T,EAAQ0T,QAAQ9H,eAA+D,aAAlC5L,EAAQ0T,QAAQ9H,gBAO1D,YAAAgpJ,sBAAR,SAA8B50J,EAA2B80J,GAEvD,IACGjzJ,KAAK2yJ,mBACNx0J,GACAA,EAAQ4F,MACRosJ,GAAoBxsJ,QAAQxF,EAAQ4F,KAAKgG,gBAAkB,EAC3D,CACA,IAAMuM,EAAiBnY,EAAQmY,eAEzB4gJ,EAAkB5gJ,IADHnY,EAAQoY,aAEvB4gJ,EAAah5J,EAAQhM,MACrBilK,EAAaj5J,EAAQkb,SAS3B,GACE69I,GACC5gJ,EAAkB,IAAM28I,IAAcmE,GACtC9gJ,IAAmB6gJ,EAAWjhK,QAAU+8J,IAAcmE,GACpDp3J,KAAK4d,MAAM40I,gBACVxyJ,KAAK4d,MAAMy5I,iCAAkCr3J,KAAK4d,MAAMy5I,+BAA+Bl5J,IAE3F,OAAO,EAIX,OAAO,GAGD,YAAAy0J,iBAAR,SACEz0J,EACAqwJ,GAEA,OAAOxuJ,KAAK4d,MAAM05I,gBAAiB/I,GAAgBpwJ,EAASqwJ,IAMtD,YAAA+B,uBAAR,SAA+BpyJ,GAC7B,OAAOA,KAAa6B,KAAKowJ,MAAMl5I,SAAWioI,GAAsBhhJ,EAAS6B,KAAKowJ,MAAMl5I,UAG9E,YAAAy6I,aAAR,WACE,OAAOr3B,GAAYt6H,KAAKowJ,MAAMl5I,UA7wClB,EAAArQ,aAAgC,CAC5C6vJ,sBAAsB,EACtB1/H,UAAWq1H,GAAmBmK,cAC9BR,mBAAmB,GA4wCvB,EAhxCA,CAA+B,aCpGzB,SAAUuB,GAAM/9H,GACpB,GAA2B,qBAAhBw2H,IAA+Bx2H,EAAO,CAC/C,IAAM03F,EAAMx4D,KACNx/B,EAAYg4F,GAAOA,EAAIl7G,UAAUkjB,UAEvC82H,KAAgB92H,IAAiD,IAApCA,EAAUv1B,QAAQ,aAEjD,QAASqsJ,GCXJ,IAAMwH,GAAQ,WACnB,SAAKt3J,QAAWA,OAAO8V,WAAc9V,OAAO8V,UAAUkjB,YAG/C,oBAAoB93B,KAAKlB,OAAO8V,UAAUkjB,YCE7C,SAAUu+H,GAAa34I,GAC3B,OAAIA,EAAK44I,YACG54I,EAAK64I,YAAa74I,EAAKmiC,SAGL,mBAAnBniC,EAAK64I,UACP74I,EAAK64I,UAGc,mBAAjB74I,EAAKmiC,QACPniC,EAAKmiC,QAIP,KAGH,SAAU22G,GAAW94I,GAEzB,SAAUA,EAAK+4I,eAAgB/4I,EAAKhB,OAGhC,SAAUg6I,GAAeh5I,GAC7B,SAAUA,EAAKq0F,aAAcr0F,EAAK9F,UAG9B,SAAU++I,GAAoBj5I,GAGlC,OADwC,OADtB24I,GAAa34I,GAEb,mBAAqB,WCvCzC,IAAMk5I,GAA6B,CACjC,WACA,SACA,qBACA,4BACA,oBACA,4BACA,mCACA,wBACA,sBACA,0BACA,6BACA,qBACA,wBCVF,mBAKE,WAAYp6I,GAAZ,MACE,YAAMA,IAAM,K,OACZ,EAAKq6I,4BAA8B,EAAKA,4BAA4BvlK,KAAK,G,EAiB7E,OAxBmD,OAgBvC,YAAAulK,4BAAV,SAAsCC,GDuClC,IAAyB/hK,ECtC3B6J,KAAKm4J,2BAA6BD,EAC9BA,EACFl4J,KAAKo4J,SDGL,SAEJ15J,EAEAvI,EACAkiK,QAAA,IAAAA,MAAA,IAEA,IAAIC,EAAoB,G,WACf1qB,GAEyB,oBAAvBz3I,EAAOy3I,SACcnuI,IAA5Bf,EAAYkvI,IACVyqB,IAAkD,IAApCA,EAAW10J,QAAQiqI,KAEnC0qB,EAAQvkK,KAAK65I,GAEblvI,EAAYkvI,GAAc,W,IAAS,sDACjCz3I,EAAOy3I,GAAW,MAAlBz3I,EAAsB6K,MAT5B,IAAK,IAAI4sI,KAAcz3I,E,EAAdy3I,GAcT,OAAO0qB,ECzBaC,CAAav4J,KAAMk4J,GAC1Bl4J,KAAKo4J,WDmCWjiK,EClCV6J,KAAMA,KAAKo4J,SDmClBhiK,SAAQ,SAACw3I,GAAuB,cAAOz3I,EAAP,QChC9C,EAxBA,CAAmD,aCQ7C,SAAUs5I,GAA4Ct5I,EAAiBqiK,GAC3E,IAAK,IAAM,KAAQriK,EACbA,EAAOpD,eAAe,KAEvBylK,EAAa,GAAQriK,EAAO,IAIjC,OAAOqiK,ECJF,ICNKC,GDMCC,GAAgB,gBAAyC,CACpEx4J,OAA0B,kBAAXA,OAAsBA,YAAST,KCPhD,SAAYg5J,GACV,qBACA,uBACA,qBACA,uBACA,yBACA,2BACA,2BAPF,CAAYA,QAAc,KAU1B,IAKIE,GAMAC,GCxBQC,GAOAC,GDMNC,GAA4B,CAAC,IAAK,IAAK,KAAM,KAAM,KAAM,UAiCzD,SAAUC,K,MACd,OAAgC,QAAhC,EAAmB,OAAZL,SAAY,IAAZA,MAAgBC,UAAS,QAAIH,GAAe5oC,MAG/C,SAAUopC,GACdC,G,MAEMC,IAAW,cAMf,WAAYv7I,GAAZ,MACE,YAAMA,IAAM,K,OA8BN,EAAAw7I,UAAY,WAClB,IAAMC,EAAiBC,GAAkB,EAAK74F,QAAQvgE,QAElDm5J,IAAmB,EAAKt0J,MAAMs0J,gBAChC,EAAKv+E,SAAS,CACZu+E,eAAc,KAlClB,EAAKlnI,QAAU,IAAI,GAAW,GAC9B,EAAK8lI,4BAA8B,EAAKA,4BAA4BvlK,KAAK,GAEzE,EAAKqS,MAAQ,CACXs0J,eAAgBL,M,EAkCtB,OA9CqD,OAgB5C,YAAAj1D,kBAAP,WACE/jG,KAAKmyB,QAAQF,GAAGjyB,KAAKygE,QAAQvgE,OAAQ,SAAUF,KAAKo5J,WACpDp5J,KAAKo5J,aAGA,YAAA9sD,qBAAP,WACEtsG,KAAKmyB,QAAQ2tH,WAGR,YAAAh4I,OAAP,WACU,IAAAuxJ,EAAA,WAAAA,eAER,OAAOA,IAAmBZ,GAAec,QAAU,KACjD,gBAACL,EAAiB,GAChB/+I,IAAKna,KAAKi4J,4BACVoB,eAAgBA,GACXr5J,KAAK4d,SAclB,EA9CiB,CAAoC,KACrCjX,YAAc+xJ,GA6C7B,GACD,OAAOjpB,GAAaypB,EAAmBC,GAGnC,SAAUG,GAAkBE,GAChC,IAAIH,EAAiBZ,GAAehpC,MAEpC,GAAI+pC,EAAe,CACjB,IACE,KAAOA,EAAcC,WAAaV,GAA0BM,IAC1DA,IAEF,MAAOp5J,IAEPo5J,EAAiBL,KAKnBJ,GAAYS,MACP,CACL,QAAqB55J,IAAjBk5J,GAGF,MAAM,IAAI/8J,MACR,2JAHFy9J,EAAiBV,GASrB,OAAOU,EExIH,SAAUpnI,GACd9zB,EACAokJ,EACAt2I,EACArO,GAIA,OAFAO,EAAQ8S,iBAAiBsxI,EAAWt2I,EAAUrO,GAEvC,WAAM,OAAAO,EAAQgoB,oBAAoBo8H,EAAWt2I,EAAvC,KDFf,SAAY4sJ,GACV,iBACA,wBACA,mBACA,sBAJF,CAAYA,QAAa,KAOzB,SAAYC,GACV,iBACA,uBACA,qBACA,iBAJF,CAAYA,QAAQ,KEPpB,I,GAAA,cAME,WAAYt9I,EAAkBiY,EAAmBlY,EAAiBmG,QAAtD,IAAAlG,MAAA,QAAkB,IAAAiY,MAAA,QAAmB,IAAAlY,MAAA,QAAiB,IAAAmG,MAAA,GAChE1hB,KAAKub,IAAMA,EACXvb,KAAK0hB,OAASA,EACd1hB,KAAKwb,KAAOA,EACZxb,KAAKyzB,MAAQA,EA8BjB,OAxBE,sBAAW,oBAAK,C,IAAhB,WACE,OAAOzzB,KAAKyzB,MAAQzzB,KAAKwb,M,gCAM3B,sBAAW,qBAAM,C,IAAjB,WACE,OAAOxb,KAAK0hB,OAAS1hB,KAAKub,K,gCAMrB,YAAAm+I,OAAP,SAActmI,GAGZ,OACEssC,WAAW1/D,KAAKub,IAAI6nD,QAAQ,MAAQ1D,WAAWtsC,EAAK7X,IAAI6nD,QAAQ,KAChE1D,WAAW1/D,KAAK0hB,OAAO0hD,QAAQ,MAAQ1D,WAAWtsC,EAAK1R,OAAO0hD,QAAQ,KACtE1D,WAAW1/D,KAAKwb,KAAK4nD,QAAQ,MAAQ1D,WAAWtsC,EAAK5X,KAAK4nD,QAAQ,KAClE1D,WAAW1/D,KAAKyzB,MAAM2vC,QAAQ,MAAQ1D,WAAWtsC,EAAKK,MAAM2vC,QAAQ,KAG1E,EAxCA,GCQA,SAASu2F,GACPC,EACAC,EACAC,GAEA,MAAO,CACLF,WAAYA,EACZC,cAAeA,EACfC,OAAQA,GAKZ,IAAMC,KAAqB,OACxBlO,IAA8B8N,GAAoBd,GAAct9I,IAAKs9I,GAAcr9I,MACpF,GAACqwI,IAA4B8N,GAAoBd,GAAct9I,KAC/D,GAACswI,IAA+B8N,GAAoBd,GAAct9I,IAAKs9I,GAAcplI,OACrF,GAACo4H,IAA8B8N,GAAoBd,GAAct9I,SAAK9b,GAAW,GACjF,GAACosJ,IAAiC8N,GAAoBd,GAAcn3I,OAAQm3I,GAAcr9I,MAC1F,GAACqwI,IAA+B8N,GAAoBd,GAAcn3I,QAClE,GAACmqI,IAAkC8N,GAAoBd,GAAcn3I,OAAQm3I,GAAcplI,OAC3F,GAACo4H,IAAiC8N,GAAoBd,GAAcn3I,YAAQjiB,GAAW,GACvF,GAACosJ,IAA8B8N,GAAoBd,GAAcr9I,KAAMq9I,GAAct9I,KACrF,GAACswI,IAA6B8N,GAAoBd,GAAcr9I,MAChE,GAACqwI,IAAiC8N,GAAoBd,GAAcr9I,KAAMq9I,GAAcn3I,QACxF,GAACmqI,IAA+B8N,GAAoBd,GAAcplI,MAAOolI,GAAct9I,KACvF,GAACswI,IAA8B8N,GAAoBd,GAAcplI,OACjE,GAACo4H,IAAkC8N,GAAoBd,GAAcplI,MAAOolI,GAAcn3I,QAC3F,IAwBD,SAASs4I,GAAyB5mI,EAAiB6mI,GACjD,QAAI7mI,EAAK7X,IAAM0+I,EAAa1+I,SAGxB6X,EAAK1R,OAASu4I,EAAav4I,YAG3B0R,EAAK5X,KAAOy+I,EAAaz+I,SAGzB4X,EAAKK,MAAQwmI,EAAaxmI,SAWhC,SAASymI,GAAqB9mI,EAAiB6mI,GAC7C,IAAME,EAA+B,GAerC,OAbI/mI,EAAK7X,IAAM0+I,EAAa1+I,KAC1B4+I,EAAYpmK,KAAK8kK,GAAct9I,KAE7B6X,EAAK1R,OAASu4I,EAAav4I,QAC7By4I,EAAYpmK,KAAK8kK,GAAcn3I,QAE7B0R,EAAK5X,KAAOy+I,EAAaz+I,MAC3B2+I,EAAYpmK,KAAK8kK,GAAcr9I,MAE7B4X,EAAKK,MAAQwmI,EAAaxmI,OAC5B0mI,EAAYpmK,KAAK8kK,GAAcplI,OAG1B0mI,EAGT,SAASC,GAAchnI,EAAiBinI,GACtC,OAAQjnI,EAAaylI,GAAcwB,IAGrC,SAASC,GAAclnI,EAAiBinI,EAAqBloK,GAE3D,OADCihC,EAAaylI,GAAcwB,IAASloK,EAC9BihC,EAQT,SAASmnI,GAAgBnnI,EAAiBinI,GACxC,IAAMG,EAAQC,GAAkBJ,GAChC,OAAQD,GAAchnI,EAAMonI,EAAME,cAAgBN,GAAchnI,EAAMonI,EAAMG,eAAiB,EAc/F,SAASC,GAAsBP,EAAqBloK,GAClD,OAAIkoK,EAAO,EACFloK,GAES,EAATA,EAIX,SAAS0oK,GAA0BR,EAAqBjnI,GACtD,OAAOwnI,GAAsBP,EAAMD,GAAchnI,EAAMinI,IAGzD,SAASS,GAA2B1nI,EAAiB2nI,EAAqBV,GAExE,OAAOO,GAAsBP,EADND,GAAchnI,EAAMinI,GAAQD,GAAcW,EAAUV,IAQ7E,SAASW,GAAU5nI,EAAiBinI,EAAqB/5G,GACvD,IAAM26G,EAAab,GAAchnI,EAAMinI,GAAQ/5G,EAG/C,OAFAltB,EAAOknI,GAAclnI,EAAMinI,EAAM/5G,GACjCltB,EAAOknI,GAAclnI,GAAc,EAARinI,EAAWD,GAAchnI,GAAc,EAARinI,GAAaY,GAOzE,SAASC,GAAY9nI,EAAiBp9B,EAAmBqkK,EAAqBxhB,GAC5E,YAD4E,IAAAA,MAAA,GACrEmiB,GAAU5nI,EAAMinI,EAAMD,GAAcpkK,EAAQqkK,GAAQO,GAAsBP,EAAMxhB,IAqBzF,SAASsiB,GAAgB/nI,EAAiBgoI,EAAmBf,GAE3D,OAD0BQ,GAA0BR,EAAMjnI,GAC/BynI,GAA0BR,EAAMe,GA6F7D,SAASC,GACPl9J,EACAnI,EACAslK,EACAC,EACA1iB,EACA2iB,EACAC,QAFA,IAAA5iB,MAAA,GAIQ,IAAAghB,EAAA,EAAAA,cAAe6B,EAAA,EAAAA,gBACnBC,EAAoC,CACtCC,iBAAkBz9J,EAClBy7J,WAAY2B,EAAa3B,WACzBC,cAAeA,GAGZ2B,GAAyBC,IAC5BE,EAvGJ,SACEvoI,EACAp9B,EACAslK,EACAC,EACA1iB,QAAA,IAAAA,MAAA,GAEA,IAAMgjB,EAA8B,CAClChD,GAAcr9I,KACdq9I,GAAcplI,MACdolI,GAAcn3I,OACdm3I,GAAct9I,KAGZ,OACFsgJ,EAAW,KAAO,EAClBA,EAAW,KAAO,GAOpB,IALA,IAAIC,EAAkB1oI,EAClB2oI,EAAcR,EAAa3B,WAC3BoC,EAAmBT,EAAa1B,cAG3B3oK,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,GAAKiqK,GAAgBW,EAAiBR,EAAUS,GAiB9C,MAAO,CACLH,iBAAkBE,EAClBlC,WAAYmC,EACZlC,cAAemC,GAnBjBH,EAAWj4J,OAAOi4J,EAAWl4J,QAAQo4J,GAAc,GAC/CF,EAAW3lK,OAAS,IAClB2lK,EAAWl4J,SAAuB,EAAfo4J,IAAqB,EAC1CA,IAA6B,GAE7BC,EAAmBD,EACnBA,EAAcF,EAAW7nK,OAAO,GAAG,IAErC8nK,EAAkBG,GAChB7oI,EACAp9B,EACA,CAAE4jK,WAAYmC,EAAalC,cAAemC,GAC1CnjB,IAWR,MAAO,CACL+iB,iBAAkBxoI,EAClBwmI,WAAY2B,EAAa3B,WACzBC,cAAe0B,EAAa1B,eAoDVqC,CAAW/9J,EAASnI,EAAQslK,EAAUC,EAAc1iB,IAExE,IAAMshB,EAAcD,GAAqB/7J,EAASm9J,GAElD,GAAII,GAGF,GAAIC,EAAgB9B,eAAiBM,EAAYx2J,SAAyC,EAAjCg4J,EAAgB9B,gBAAuB,EAAG,CACjG,IAAMsC,EApDZ,SACER,EACA3lK,EACA6iJ,EACA4iB,GAEQ,IAAA5B,EAAA,EAAAA,cAAeD,EAAA,EAAAA,WACjBwC,GAAiC,EAAlBvC,EASrB,MAAO,CACL+B,iBATkBK,GAFe,EAAAL,iBAIjC5lK,EACA,CAAE4jK,WAAYA,EAAYC,cAAeuC,GACzCvjB,EACA4iB,GAKA7B,WAAYA,EACZC,cAAeuC,GAiCkBC,CAAmBV,EAAiB3lK,EAAQ6iJ,EAAK4iB,GAChF,GAAIzB,GAAyBmC,EAAuBP,iBAAkBN,GACpE,OAAOa,EAGPR,EAAkBW,GAChBpC,GAAqBiC,EAAuBP,iBAAkBN,GAC9DK,EACAL,SAKNK,EAAkBW,GAAuBnC,EAAawB,EAAiBL,GAGzE,OAAOK,EAST,SAASW,GACPC,EACAZ,EACAL,GAEA,IAAwB,UAAAiB,EAAA,eAAkB,CAArC,IAAMvlI,EAAS,KAClB2kI,EAAgBC,iBAAmBV,GAAYS,EAAgBC,iBAAkBN,EAAUtkI,GAG7F,OAAO2kI,EAQT,SAASa,GAAmBppI,EAAiBinI,EAAqB9E,GACxD,IAAAmF,EAAA,MAAAA,aAGR,OAAOM,GAAU5nI,EAAMsnI,EAAcnF,GAFfgF,GAAgBnnI,EAAMinI,GACHD,GAAchnI,EAAMsnI,KAQ/D,SAASuB,GACPQ,EACAzmK,EACAulK,EACA1iB,EACA4iB,GAEA,IAAIiB,OAHJ,IAAA7jB,MAAA,GAIQ,IAAAghB,EAAA,EAAAA,cAAeD,EAAA,EAAAA,WACjB+C,EAAclB,EAAc7B,GAA2B,EAAdA,GAC/C8C,EAA2BjB,EACvBP,GAAYuB,EAAmBzmK,EAAQ4jK,EAAY/gB,GAtMzD,SACEzlH,EACAp9B,EACA4jK,EACA/gB,QAAA,IAAAA,MAAA,GAEA,IACM+jB,EAAchC,IADe,EAAdhB,EACmC/gB,GACxD,OAAOmiB,GAAU5nI,GAAoB,EAAdwmI,EAAiBQ,GAAcpkK,EAAQ4jK,GAAcgD,GA+LxEC,CAAoBJ,EAAmBzmK,EAAQ4jK,EAAY/gB,GAE1DghB,GAIH6C,EAA2BxB,GAAYwB,EAA0B1mK,EAAQ6jK,GAFzE6C,EAA2BF,GAAmBE,EAA0BC,EAD9CpC,GAAgBvkK,EAAQ4jK,IAMpD,OAAO8C,EAOT,SAASjC,GAAkBJ,GACzB,OAAIA,IAASxB,GAAct9I,KAAO8+I,IAASxB,GAAcn3I,OAChD,CACLg5I,aAAc7B,GAAcr9I,KAC5Bm/I,aAAc9B,GAAcplI,OAGvB,CACLinI,aAAc7B,GAAct9I,IAC5Bo/I,aAAc9B,GAAcn3I,QASlC,SAASo7I,GACPlB,EACAmB,EACA3B,GAEA,OACEA,GACA/lK,KAAKg+B,IAAIynI,GAA2Bc,EAAkBR,EAAQ2B,IAC5D1nK,KAAKg+B,IAAIynI,GAA2Bc,EAAkBR,GAAsB,EAAd2B,KAE3C,EAAdA,EAGFA,EAsCT,SAASC,GAAkCC,GACzC,OAAO5nK,KAAK8mE,KAAK8gG,EAAYA,EAAY,GAW3C,SAASC,GACPC,EACAC,EACAC,GAEA,QAJA,IAAAF,MAAmCtR,IAI/BwR,EACF,MAAO,CACLxD,cAAewD,EAAkBxD,cACjCC,OAAQuD,EAAkBvD,OAC1BF,WAAYyD,EAAkBzD,YAGlC,IAAM0D,EAAmB,KAAsCvD,GAAsBoD,IACrF,OAAI,MAEEG,EAAoBzD,eAAiByD,EAAoBzD,cAAgB,IAAM,IACjFyD,EAAoBzD,eAAqD,EAArCyD,EAAoBzD,oBAGzBp6J,IAA1B29J,EAAsCrD,GAAsBqD,GAAyBE,GAEvFA,EAuBT,SAASC,GAAe3D,EAA2B5jK,EAAmBikK,GACpE,IAAMuD,EAAuBjD,GAAgBvkK,EAAQ4jK,GAC/C6D,EAAyBlD,GAAgBN,EAAcL,GACvD,QAAEc,EAAA,EAAAA,aAAcC,EAAA,EAAAA,aACtB,OAAI6C,GAAgBC,EACX/C,EAEAC,EAIX,SAAS+C,GACPjB,EACAzmK,EACAslK,EACAC,EACA1iB,EACA2iB,EACAC,GAEA,IAAMiB,EAAsCT,GAC1CQ,EACAzmK,EACAulK,EACA1iB,EACA4iB,GAEF,OAAIzB,GAAyB0C,EAA0BpB,GAC9C,CACLM,iBAAkBc,EAClB9C,WAAY2B,EAAa3B,WACzBC,cAAe0B,EAAa1B,eAGvBwB,GACLoB,EACAzmK,EACAslK,EACAC,EACA1iB,EACA2iB,EACAC,GAKN,SAASkC,GACPC,EACAC,EACAzC,GAEA,IAAMxB,GAA2C,EAA9BgE,EAAgBhE,WAE7BkE,EAAgB,IAAIC,GACxB,EACAH,EAAgBhC,iBAAiBlgJ,MACjC,EACAkiJ,EAAgBhC,iBAAiBngJ,QAE7B42E,EAAkC,GAClC0qE,EAAaD,GACjBc,EAAgBhC,iBAChBgC,EAAgB/D,cAAgB+D,EAAgB/D,cAAgBY,GAAkBb,GAAYc,aAC9FU,GAMF,OAHA/oE,EAAYwmE,GAAce,IAAeQ,GAAcyD,EAAgBjE,GACvEvnE,EAAYwmE,GAAckE,IAAejC,GAA2B+C,EAAgBC,EAAef,GAE5F,CACLa,gBAAiB,EAAF,GAAOvrE,GACtB2rE,YAAaT,GAAeK,EAAgBhE,WAAYiE,EAAgBC,GACxElE,WAAYA,GAIhB,SAASqE,GAAchB,EAAmBW,GACxC,IAAM5nK,EAAS4nK,EAAgBM,gBAOzB,mBAAExD,EAAA,EAAAA,aAAcC,EAAA,EAAAA,aAChBwD,EAAkB5D,GAAgBvkK,EAAQ4nK,EAAgBhE,YAC1DwE,EAAgB,IAAIL,GACxBd,EAAY,EACZW,EAAgBhC,iBAAiBlgJ,MAAQuhJ,EAAY,EACrDA,EAAY,EACZW,EAAgBhC,iBAAiBngJ,OAASwhJ,EAAY,GAGpDoB,EAA0B,IAAIN,GAAU,EAAGd,EAAW,EAAGA,GAgB7D,OANK9B,GANLkD,EAAe7B,GAFf6B,EAAerD,GAAUqD,GAA4C,EAA9BT,EAAgBhE,YAAkBqD,EAAY,IAIrD,EAA9BW,EAAgBhE,WAChBuE,EAAkBtD,GAA0BH,EAAckD,EAAgBhC,mBAGzCwC,EAAe1D,GAEtCS,GAAgBkD,EAAcD,EAAezD,KACvD0D,EAAenD,GAAYmD,EAAcD,EAAezD,IAFxD0D,EAAenD,GAAYmD,EAAcD,EAAe1D,GAKnD2D,EAGT,SAASC,GAAyBngK,GAChC,IAAMogK,EAAyBpgK,EAAQkjB,wBAEvC,OAAO,IAAI08I,GAAUQ,EAAW/iJ,KAAM+iJ,EAAW9qI,MAAO8qI,EAAWhjJ,IAAKgjJ,EAAW78I,QAGrF,SAAS88I,GAAuBprI,GAC9B,OAAO,IAAI2qI,GAAU3qI,EAAK5X,KAAM4X,EAAKK,MAAOL,EAAK7X,IAAK6X,EAAK1R,QA0C7D,SAAS+8I,GACPP,EACAtE,EACA8E,EACAtD,EACAK,GAEA,IAAI/6I,EAAY,EACVy8I,EAAkBpD,GAAsBH,GAOxC5jK,EAASylK,GAA4C,EAA9B0B,EAAgBvD,WAAkBuD,EAAgBvD,WAU/E,OAPEl5I,EADE1qB,IAAW6iK,GAAct9I,IACf6+I,GAAc8D,EAAiBf,EAAgBvD,YAAcwB,EAAO7/I,IAAMmjJ,EAC7E1oK,IAAW6iK,GAAcn3I,OACtB05I,EAAO15I,OAAS04I,GAAc8D,EAAiBf,EAAgBvD,YAAc8E,EAE7EtD,EAAO15I,OAASw8I,EAAgB3iJ,IAAMmjJ,GAGjC,EAAIh+I,EAAY06I,EAAO3/I,OAG5C,SAASkjJ,GACP/gJ,EACA6+I,EACAxC,EACAoD,GAEA,IAAMxkB,EAAcj7H,EAAM8gJ,SAAW9gJ,EAAM8gJ,SAAW,EAChDvL,EA1ER,SAAwBiI,EAAmBplK,GACzC,IAAIkoK,EACJ,GAAIloK,EAAQ,CAEV,GAAOA,EAAsBwpB,eAAgB,CAC3C,IAAMqjI,EAAK7sJ,EACXkoK,EAAkB,IAAIH,GAAUlb,EAAG7rD,QAAS6rD,EAAG7rD,QAAS6rD,EAAG5rD,QAAS4rD,EAAG5rD,cAElE,GAAOjhG,EAAmBqrB,sBAC/B68I,EAAkBI,GAAyBtoK,OAEtC,CACL,IAAM4oK,EAAiC5oK,EAEjCwlB,EAAOojJ,EAAYpjJ,MAAQojJ,EAAY7zI,EAEvC,EAAM6zI,EAAYrjJ,KAAOqjJ,EAAYrrI,EACrCE,EAAQmrI,EAAYnrI,OAASjY,EAC7BkG,EAASk9I,EAAYl9I,QAAU,EACrCw8I,EAAkB,IAAIH,GAAUviJ,EAAMiY,EAAO,EAAK/R,GAGpD,IAAKs4I,GAAyBkE,EAAiB9C,GAG7C,IAFA,IAEwB,MAFalB,GAAqBgE,EAAiB9C,GAEnD,eAAa,CAAhC,IAAMpkI,EAAS,KACjBknI,EAAwBrF,GAAc7hI,IAAeokI,EAAevC,GAAc7hI,UAIvFknI,EAAkB,IAAIH,GAAU,EAAG,EAAG,EAAG,GAG3C,OAAOG,EAyCuBW,CAAe5E,EAAcr8I,EAAM5nB,QAC3DulK,EApNR,SACEA,EACAvlK,EACAikK,EACAwB,EACAC,GAOA,OALIH,EAAazB,SACfyB,EAAa1B,cAAgB0D,GAAehC,EAAa3B,WAAY5jK,EAAQikK,IAG/EsB,EAAaG,gBAAkBA,EACxBH,EAwM4CuD,CACjD5B,GAAiBt/I,EAAMu/I,gBAAiBv/I,EAAMw/I,sBAAuBC,GACrElK,EACA8G,EACAr8I,EAAM69I,YACN79I,EAAM89I,iBAEFqD,EAAsCrB,GAC1CY,GAAyB7B,GACzBtJ,EACA8G,EACAsB,EACA1iB,EACAj7H,EAAM49I,qBACN59I,EAAM69I,aAER,cAAYsD,GAAiB,CAAEb,gBAAiB/K,IAGlD,SAAS6L,GACPD,EACAE,EACA7D,EACAK,EACAyD,GAWA,MAAO,CACLtB,gBA7TJ,SACEhC,EACAqD,EACArF,EACAwB,EACAvB,EACA4B,EACAyD,GAEA,IAAM7sE,EAAkC,GAElC0oE,EAAsBuD,GAAyBW,GAC/CtC,EAAclB,EAAc7B,GAA2B,EAAdA,EACzCuF,EAAoBtG,GAAc8D,GACpCI,EAAalD,GAAgCY,GAAkBb,GAAYc,aAQ/E,OAPKwE,IACHnC,EAAaD,GAAoBlB,EAAkBmB,EAAY3B,IAGjE/oE,EAAY8sE,GAAqBrE,GAA2Bc,EAAkBb,EAAU4B,GACxFtqE,EAAYwmE,GAAckE,IAAejC,GAA2Bc,EAAkBb,EAAUgC,GAEzF1qE,EA6RsC+sE,CAC3CL,EAAkBnD,iBAClBqD,EACAF,EAAkBnF,WAClBwB,EACA2D,EAAkBlF,cAClB4B,EACAyD,GAIAtF,WAAYmF,EAAkBnF,WAC9BC,cAAekF,EAAkBlF,eAsBrC,SAASwF,GACPzhJ,EACAqhJ,EACAK,EACAjC,EACA6B,GAEA,IAAMjC,EAAoBr/I,EAAM2hJ,eAAgB3hJ,EAAMq/I,WAAiB,EACjEpkB,EAAcmkB,GAAkCC,GAAa,GAAKr/I,EAAM8gJ,SAAW9gJ,EAAM8gJ,SAAW,GACpGc,EAAgC5hJ,EACtC4hJ,EAAcd,SAAW7lB,EACzB,IAAMohB,EAA0Br8I,EAAMw9I,OAClCoD,GAAuB5gJ,EAAMw9I,QAC7B,IAAI2C,GAAU,EAAG79J,OAAOu5J,WAAajK,KAAqB,EAAGtvJ,OAAO+7B,aAClE8iI,EAA0CJ,GAC9Ca,EACAF,EACArF,EACAoD,GAGIoC,EAAoD9B,GACxDoB,EAFgCd,GAAchB,EAAW8B,GAIzD9E,GAEF,cACK+E,GAAsBD,EAAmBE,EAAahF,EAAcr8I,EAAM69I,YAAayD,IAAwB,CAClHb,aAAcoB,IA+CZ,SAAUC,GACd9hJ,EACAqhJ,EACAxC,EACAY,GAEA,OAjDF,SACEz/I,EACAqhJ,EACAK,EACAjC,GAEA,OAAOgC,GAAiBzhJ,EAAOqhJ,EAAaK,EAASjC,GAAmB,GA2CjEsC,CAAc/hJ,EAAOqhJ,EAAaxC,EAAmBY,GCh0B9D,I,GAAA,eAWE,WAAmBz/I,GAAnB,MACE,YAAMA,IAAM,K,OAPP,EAAAwyI,MAAQ,cACP,EAAAzL,aAA+B,GA0E/B,EAAAx1G,WAAa,SAAC0zG,GACpB,OAAQA,EAAG//H,OACT,KAAKsyH,GACC,EAAKx3H,MAAMgiJ,YACb,EAAKhiJ,MAAMgiJ,UAAU/c,GAErBA,EAAGrjI,iBACHqjI,EAAG1/H,qBA2CH,EAAAmtI,SAAW,WACjB,EAAKuP,gBAAiB,GAGhB,EAAA9uH,QAAU,SAAC8xG,GAUf,EAAKuN,MAAMl5I,SACX2rI,EAAG3rD,gBACFq1D,GAAgB,EAAK6D,MAAMl5I,QAAS2rI,EAAG3rD,iBAExC,EAAK2oE,gBAAiB,IAvIxB,EAAKC,OAAS,IAAI,GAAM,GACxB,EAAK/6J,MAAQ,CAAEg7J,wBAAwB,G,EAyI3C,OAvJ2B,OAiBlB,YAAAl8D,0BAAP,WACE7jG,KAAKggK,wBAA0B1lC,KAAej0G,eAGzC,YAAA09E,kBAAP,WACE,GAAI/jG,KAAKowJ,MAAMl5I,QAAS,CACtBlX,KAAK2kJ,aAAa5wJ,KAChBk+B,GAAGjyB,KAAKowJ,MAAMl5I,QAAS,QAASlX,KAAKswJ,UAAU,GAC/Cr+H,GAAGjyB,KAAKowJ,MAAMl5I,QAAS,OAAQlX,KAAK+wC,SAAS,IAE/C,IAAMyoH,EAAgB9gG,GAAU14D,KAAKowJ,MAAMl5I,SACvCsiJ,GACFx5J,KAAK2kJ,aAAa5wJ,KAAKk+B,GAAGunI,EAAe,UAAWx5J,KAAKmvC,ahBsX3D,SAAkChxC,GACtC,IAAIoM,EAAW+vH,GAAYn8H,GACvB8hK,EAAgD11J,GAAaA,EAAS8b,cAC1E,SAAI45I,IAAwB1T,GAAgBpuJ,EAAS8hK,IgBvX7CC,CAAwBlgK,KAAKowJ,MAAMl5I,WACrClX,KAAK6/J,gBAAiB,GAI1B7/J,KAAKmgK,yBAGA,YAAAx2D,mBAAP,WACE3pG,KAAKmgK,wBACLngK,KAAK8/J,OAAOhgB,WAGP,YAAAxzC,qBAAP,W,MAIE,GAHAtsG,KAAK2kJ,aAAavuJ,SAAQ,SAAC0pJ,GAAwB,OAAAA,OAG/C9/I,KAAK4d,MAAM63I,mBAAoB,CACzB,iBAAA2K,qBAAA,YACO,CACbC,gBAAiBrgK,KAAKggK,wBACtBM,cAAetgK,KAAK6/J,eACpBU,uBAAoC,QAAb,EAAAjmC,YAAa,eAAEkmC,cAAc,WAIjDxgK,KAAKggK,yBAGP,YAAAl4J,OAAP,WACQ,iBAAEgtB,EAAA,EAAAA,KAAMhrB,EAAA,EAAAA,UAAWmhJ,EAAA,EAAAA,UAAWwJ,EAAA,EAAAA,eAAgBD,EAAA,EAAAA,gBAAiB77I,EAAA,EAAAA,MAErE,OACE,yBACEwB,IAAKna,KAAKowJ,OACN5X,GAAex4I,KAAK4d,MAAO26H,IAAc,CAC7CzuI,UAAWA,EACXgrB,KAAMA,EAAI,aACEm2H,EAAS,kBACJwJ,EAAc,mBACbD,EAClB58I,UAAW5X,KAAKmvC,WAChBx2B,MAAK,GAAIoJ,UAAW/hB,KAAK+E,MAAMg7J,uBAAyB,cAAWtgK,EAAWy1D,QAAS,QAAWv8C,KAEjG3Y,KAAK4d,MAAM/C,WAmBV,YAAAslJ,sBAAR,sBACEngK,KAAK8/J,OAAOruJ,uBAAsB,WAChC,EAAKgvJ,oBAID,YAAAA,cAAR,WAEE,IAAIzgK,KAAK4d,MAAMjF,QAAS3Y,KAAK4d,MAAMjF,MAAMoJ,UAAzC,CAIA,IAAIg+I,GAAyB,EAC7B,GAAI//J,KAAKowJ,OAASpwJ,KAAKowJ,MAAMl5I,SAAWlX,KAAKowJ,MAAMl5I,QAAQmgB,kBAAmB,CAU5E,IAAMqpI,EAAa1gK,KAAKowJ,MAAMl5I,QAAQoL,aAChCq+I,EAAmB3gK,KAAKowJ,MAAMl5I,QAAQmgB,kBAAkB/U,aAC1Do+I,EAAa,GAAKC,EAAmBD,IACvCX,EAAyBY,EAAmBD,EAAa,GAGzD1gK,KAAK+E,MAAMg7J,yBAA2BA,GACxC//J,KAAK86E,SAAS,CACZilF,uBAAwBA,MA5HhB,EAAAl5J,aAA4B,CACxC4uJ,oBAAoB,GAqJxB,EAvJA,CAA2B,aAyJ3B,SAASmL,GAAqBhjK,GAKpB,IAAAyiK,EAAA,EAAAA,gBAAiBC,EAAA,EAAAA,cAErBD,GAAmBC,GAAiBD,IAAoBngK,QAItDmgK,EAAgBjgJ,OAClBigJ,EAAgBjgJ,QC1JtB,IAAMygJ,KAAU,OACbhI,GAAct9I,KAAM4vG,GAAoBW,YACzC,GAAC+sC,GAAcn3I,QAASypG,GAAoBa,cAC5C,GAAC6sC,GAAcr9I,MAAO2vG,GAAoBO,cAC1C,GAACmtC,GAAcplI,OAAQ03F,GAAoBG,eAC5C,IAEK,GAAgBqxB,GAAqE,CACzFK,gBAAgB,IAGZ8jB,GAA8B,EAA9BA,GAAuC,EAMvCC,GAAwC,CAAE/1H,QAAS,EAAGr1C,OAAQ,aAAcqmB,cAAe,QAI3FglJ,GAAuB,CAAC,OAAQ,wBAStC,eA6BE,WAAYpjJ,GAAZ,MACE,YAAMA,IAAM,K,OAhBN,EAAAqjJ,aAAe,cACf,EAAAC,gBAAkB,cAMlB,EAAAC,eAAgB,EAMhB,EAAAxc,aAA+B,GA0LhC,EAAAlwH,QAAU,SAACouH,GACR,IAAA+c,EAAA,QAAAA,UAEJA,GACFA,EAAU/c,IAIJ,EAAAue,iBAAmB,SAACve,GAEtB,cAAEwe,EAAA,EAAAA,sBAAuBC,EAAA,EAAAA,uBAE7B,EAAKv8J,MAAMw8J,YACTF,IAA0BA,EAAsBxe,KAAUwe,IAA0BC,IAEtF,EAAKE,wBAAwB3e,IAIvB,EAAA4e,iBAAmB,SAAC5e,GAEtB,cAAEwe,EAAA,EAAAA,sBAAuBK,EAAA,EAAAA,wBAC1BL,IAA0BA,EAAsBxe,KAAUwe,IAA0BK,IACvF,EAAKjtI,QAAQouH,IAIP,EAAA8e,oBAAsB,SAAC9e,GAEzB,cAAEwe,EAAA,EAAAA,sBAAuBO,EAAA,EAAAA,2BAE5BP,IAA0BA,EAAsBxe,KAC/Cwe,IAA0BO,IAE5B,EAAKJ,wBAAwB3e,IAIvB,EAAAgf,iBAAmB,WAEzB,EAAKjkJ,MAAMkkJ,kBACV,EAAKC,qBACN,EAAKh9J,MAAMw8J,WACX,EAAKL,gBAAgBhqJ,UAErB,EAAK6qJ,qBAAsB,EAC3B,EAAKjC,OAAOruJ,uBACV,WAAM,OjBhNR,SAA0Bo/G,GAC9B,IAAI1yH,EAA8B0uJ,GAAeh8B,EAAaA,GAAa,GAAM,GAAO,GAAO,GAE/F,QAAI1yH,IACFywJ,GAAWzwJ,IACJ,GiB2MG6jK,CAAgB,EAAKd,gBAArB,WACN,EAAKA,gBAAgBhqJ,WAKjB,EAAA+qJ,qBAAuB,WAC/B,EAAKC,gBAED,EAAKtkJ,MAAMukJ,gBACb,EAAKvkJ,MAAMukJ,iBAGb,EAAKC,uBACL,EAAKC,8BA2BC,EAAAC,2BAA6B,SAACzf,GAE9B,cAAEwe,EAAA,EAAAA,sBAAuBO,EAAA,EAAAA,0BAA2B,EAAAW,+BAQtDlB,GAA0BA,EAAsBxe,MAC9Cwe,GAA0BO,IAC7B,EAAKY,cAAcj4J,SAASi2J,YACR,OAArB3d,EAAG3rD,eAEH,EAAKziE,QAAQouH,KA2OT,EAAA4f,kBAAoB,WAC1B,EAAKC,qBAAsB,GAGrB,EAAAC,gBAAkB,WACxB,EAAKD,qBAAsB,GA5gB3B,EAAK5C,OAAS,IAAI,GAAM,GACxB,EAAKiC,qBAAsB,EAC3B,EAAKh9J,MAAQ,CACXw8J,eAAW9hK,EACXmjK,+BAA2BnjK,EAE3BojK,wBAAoBpjK,EACpBqjK,aAAc,GAEhB,EAAKC,kBAAoB,E,EAqgB7B,OA9iBwC,OA4C/B,YAAAp5D,mBAAP,WACO3pG,KAAK4d,MAAM+zF,OAOV3xG,KAAKmhK,eACPnhK,KAAKgjK,oBAPPhjK,KAAK6hK,mBACA7hK,KAAKmhK,eACRnhK,KAAKkiK,gBAEPliK,KAAKoiK,yBAQF,YAAA9+D,sBAAP,SAA6B8hD,EAAyBp2H,GACpD,SAAKo2H,EAAS6d,wBAA0BjjK,KAAK4d,MAAM+zF,QAAUyzC,EAASzzC,WAK9DmwC,GAAe9hJ,KAAK4d,MAAOwnI,KAActD,GAAe9hJ,KAAK+E,MAAOiqB,KAGvE,YAAA60E,0BAAP,WACE7jG,KAAKkjK,2BAA2BljK,KAAKmjK,eAGhC,YAAA72D,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,UACZ9/I,KAAK2kJ,aAAavuJ,SAAQ,SAAC0pJ,GAAwB,OAAAA,QAG9C,YAAAr2C,2BAAP,SAAkC27C,GAGhC,IAAMge,EAAYpjK,KAAKmjK,WAAW/d,IAG/Bge,IAFepjK,KAAKmjK,cAE4B,kBAAdC,GAA0BA,aAAqBpuJ,UACjFhV,KAAKqjK,oBAENrjK,KAAKsjK,gBAAa7jK,EAClBO,KAAKkjK,2BAA2BE,IAE9Bhe,EAASsZ,WAAa1+J,KAAK4d,MAAM8gJ,UAAY1+J,KAAK4d,MAAMq/I,YAAc7X,EAAS6X,YACjFj9J,KAAKsjK,gBAAa7jK,GAGhB2lJ,EAASme,cAAgBvjK,KAAK4d,MAAM2lJ,aACtCvjK,KAAKqiK,6BAIHriK,KAAKwjK,wBAAwBpe,EAAUplJ,KAAK4d,SAC9C5d,KAAKsjK,gBAAa7jK,EAElBO,KAAKkjK,2BAA2BE,GAChCpjK,KAAK86E,SAAS,CACZymF,eAAW9hK,IAEbO,KAAK+hK,qBAAsB,EAC3B/hK,KAAKyjK,aAAUhkK,GAGjBO,KAAKqjK,mBAAoB,GAGpB,YAAAt/D,kBAAP,WACO/jG,KAAK4d,MAAM+zF,QACd3xG,KAAKiiK,wBAIF,YAAAn6J,OAAP,WAEE,IAAK9H,KAAKwiK,cACR,OAAO,KAEH,IAAAxsK,EAAA,WAAAA,OACA,aACJkkB,EAAA,EAAAA,OACAvB,EAAA,EAAAA,MACAsyI,EAAA,EAAAA,UACAuJ,EAAA,EAAAA,gBACAC,EAAA,EAAAA,eACA3qJ,EAAA,EAAAA,UACAy1J,EAAA,EAAAA,cACA1kJ,EAAA,EAAAA,SACAoiJ,EAAA,EAAAA,UACAyG,EAAA,EAAAA,aACAC,EAAA,EAAAA,gBACAC,EAAA,EAAAA,gBACAL,EAAA,EAAAA,YACA,IAAAM,oBAAA,IAAe,IAAf,IACA94H,EAAA,EAAAA,gBACA+4H,EAAA,EAAAA,iBACAC,EAAA,EAAAA,SAEA,IAAAtO,0BAAA,SAEFz/J,EAASgK,KAAKmjK,aACN,IAAA5B,EAAA,WAAAA,UAEFyC,EAA0ChkK,KAAKikK,gBACjDjkK,KAAKikK,gBAAmBjkK,KAAK+E,MAAM+9J,kBACnCrjK,EACEykK,EACJJ,GAAqBE,GAAuBF,EAAoBE,EAC5DF,EACAE,EACAG,EAAkBN,EAElBO,EAAc7E,KAAmBvpK,EACvCgK,KAAKqkK,YAAc,GAAcnqJ,EAAS,CACxCy0B,MAAO3uC,KAAK4d,MAAM+wB,MAClB7kC,UAAS,EACTq6J,gBAAiBA,EACjBT,aAAY,EACZnC,UAAS,EACTtE,UAAS,EACTlyH,gBAAe,EACf64H,gBAAe,EACfD,gBAAe,IAGjB,IAAMW,EAAa,SACd3rJ,GAAK,CACR+H,UAAWwjJ,IACPC,GAAmB,CAAEpiJ,UAAW,WAGhCwiJ,EAAmDvkK,KAAK4d,MAAM+zF,OAAS,CAAEpwD,WAAY,eAAa9hD,EAmCxG,OAhCE,uBAAK0a,IAAKna,KAAKihK,aAAcn3J,UAAW9J,KAAKqkK,YAAY93J,UAAWoM,MAAO4rJ,GACzE,2BACM/rB,GAAex4I,KAAK4d,MAAO26H,GAAeyoB,IAAqB,CACnEl3J,UAAW2I,GAAIzS,KAAKqkK,YAAY9wK,KAAMguK,GAAaA,EAAU3H,YAAciH,GAAWU,EAAU3H,aAChGjhJ,MAAO4oJ,EAAYA,EAAU3D,gBAAkBmD,GAG/C5rI,UAAW,EACXhb,IAAKna,KAAKkhK,kBAETkD,GAAe,uBAAKt6J,UAAW9J,KAAKqkK,YAAYG,KAAM7rJ,MAAO3Y,KAAKykK,qBAClEL,GAAe,uBAAKt6J,UAAW9J,KAAKqkK,YAAYK,cACjD,gBAAC,GAAK,KACAlsB,GAAex4I,KAAK4d,MAAOojJ,IAAqB,CACpD/V,UAAWA,EACXmV,eAAgBpgK,KAAK4d,MAAMwiJ,eAC3B5L,gBAAiBA,EACjBC,eAAgBA,EAChB3qJ,UAAW9J,KAAKqkK,YAAYM,YAC5B/E,UAAW5/J,KAAKy0B,QAChBsvI,SAAUA,EACVtO,mBAAoBA,EACpB98I,MAAO2rJ,EACPhtG,YAAat3D,KAAKyiK,kBAClBmC,UAAW5kK,KAAK2iK,kBAEf9nJ,MAyEH,YAAA2mJ,wBAAR,SAAgC3e,GAC9B,IAAM7sJ,EAAS6sJ,EAAG7sJ,OACZ6uK,EACJ7kK,KAAKihK,aAAa/pJ,UAAYq1I,GAAgBvsJ,KAAKihK,aAAa/pJ,QAASlhB,GAGvE6uK,GAA+B7kK,KAAK0iK,oBACtC1iK,KAAK0iK,qBAAsB,IAKzB1iK,KAAK8kK,SAAWD,GACjBhiB,EAAG7sJ,SAAWgK,KAAKwiK,eAClBqC,IACE7kK,KAAK8kK,QAAuB3hJ,kBAC3BnjB,KAAK8kK,SACN9kK,KAAK4d,MAAMmnJ,sBACV/uK,IAAWgK,KAAK8kK,UAAYvY,GAAgBvsJ,KAAK8kK,QAAwB9uK,MAE9EgK,KAAKy0B,QAAQouH,IAuBT,YAAAqf,cAAR,sBAKEliK,KAAK8/J,OAAOpuJ,YAAW,WACrB,EAAKizI,aAAa5wJ,KAChBk+B,GAAG,EAAKuwI,cAAe,SAAU,EAAKpB,kBAAkB,GACxDnvI,GAAG,EAAKuwI,cAAe,SAAU,EAAKf,kBAAkB,GACxDxvI,GAAG,EAAKuwI,cAAcj4J,SAASmtD,gBAAiB,QAAS,EAAKiqG,qBAAqB,GACnF1vI,GAAG,EAAKuwI,cAAcj4J,SAASmtD,gBAAiB,QAAS,EAAKiqG,qBAAqB,GACnF1vI,GAAG,EAAKuwI,cAAe,OAAQ,EAAKF,4BAA4B,IAElE,EAAKnB,eAAgB,IACpB,IAGG,YAAA6B,iBAAR,WACEhjK,KAAK2kJ,aAAavuJ,SAAQ,SAAC0pJ,GAAwB,OAAAA,OACnD9/I,KAAK2kJ,aAAe,GACpB3kJ,KAAKmhK,eAAgB,GAGf,YAAAiB,qBAAR,sBACEpiK,KAAK8/J,OAAOruJ,uBAAsB,WAAM,6BAAwBzR,KAAKkhK,gBAAgBhqJ,UAG/E,YAAAutJ,iBAAR,WACU,IAAAlD,EAAA,WAAAA,UACFyD,EAAgB,KAChBzD,GAAaA,EAAUlD,aAAekD,EAAUlD,aAAaT,gBAAkB,MAQrF,OALKoH,EAAiBzpJ,KAAQypJ,EAAiBtjJ,QAAWsjJ,EAAiBxpJ,MAASwpJ,EAAiBvxI,QACnGuxI,EAAiBxpJ,KAAOslJ,GACxBkE,EAAiBzpJ,IAAMulJ,IAGlBkE,GAGD,YAAAC,gBAAR,WAEEjlK,KAAKkjK,2BAA2BljK,KAAKmjK,cAE7B,IAAA5B,EAAA,WAAAA,UACFtC,EAAkCj/J,KAAKihK,aAAa/pJ,QACpDguJ,EAAqCllK,KAAKkhK,gBAAgBhqJ,QAI1DiuJ,IAAkBnlK,KAAK4d,MAAM5nB,OAEnC,GAAIipK,GAAeiG,KAAoBC,GAAiBnlK,KAAK8kK,SAAU,CACrE,IAAM3f,EAAY,KAAyBnlJ,KAAK4d,OAChDunI,EAAaiW,OAASp7J,KAAKolK,aAC3BjgB,EAAanvJ,OAASgK,KAAK8kK,QAG3B,IAAMO,EAAuCrlK,KAAK4d,MAAM2lJ,YACpD7D,GAAava,EAAc8Z,EAAaiG,EAAgB3D,GF4Y5D,SACJ3jJ,EACAqhJ,EACAxC,EACAY,GAEA,OAAOgC,GAAiBzhJ,EAAOqhJ,EAAaxC,EAAmBY,GEjZvDiI,CAAgBngB,EAAc8Z,EAAaiG,EAAgB3D,IAK3DA,GAAa8D,GACd9D,GAAa8D,IAAiBrlK,KAAKulK,mBAAmBhE,EAAW8D,IAAiBrlK,KAAK+iK,kBAAoB,GAI5G/iK,KAAK+iK,oBACL/iK,KAAK86E,SAAS,CACZymF,UAAW8D,KAEJrlK,KAAK+iK,kBAAoB,IAElC/iK,KAAK+iK,kBAAoB,EACrB/iK,KAAK4d,MAAM4nJ,cACbxlK,KAAK4d,MAAM4nJ,aAAaxlK,KAAK+E,MAAMw8J,cAMnC,YAAA6D,WAAR,WACE,IAAKplK,KAAKyjK,QAAS,CACjB,IAAMrI,EAASp7J,KAAK4d,MAAMw9I,OACtBqK,EAAkC,oBAAXrK,EAAwBA,EAAOp7J,KAAK4d,MAAM5nB,OAAQgK,KAAKwiK,eAAiBpH,EAE9FqK,IF0eTzvK,EEzegDgK,KAAK8kK,QF0erDY,EE1e8D1lK,KAAKwiK,cAC7DiD,EAAgB,CACdlqJ,KAFFkqJ,EF8aR,SACEzvK,EACA0vK,GAEA,IAAIC,OAAWlmK,EAMf,GALIimK,EAAaE,oBACfD,EAAWD,EAAaE,0BAITnmK,IAAbkmK,GAA0BA,EAASzvK,QAAU,EAC/C,MAAO,CACLqlB,IAAK,EACLC,KAAM,EACNiY,MAAOiyI,EAAajM,WACpB/3I,OAAQgkJ,EAAazpI,YACrBvgB,MAAOgqJ,EAAajM,WACpBh+I,OAAQiqJ,EAAazpI,aAKzB,IAAIlR,EAAwB,EACxBwI,EAAwB,EAG5B,GAAe,OAAXv9B,GAAsBA,EAAmBqrB,sBAAuB,CAClE,IAAMk9I,EAAcvoK,EAAmBqrB,wBACvC0J,GAAKwzI,EAAW/iJ,KAAO+iJ,EAAW9qI,OAAS,EAC3CF,GAAKgrI,EAAWhjJ,IAAMgjJ,EAAW78I,QAAU,OAGzB,OAAX1rB,IAEP+0B,EAAK/0B,EAAiBwlB,MAASxlB,EAA8B+0B,EAE7DwI,EAAKv9B,EAAiBulB,KAAQvlB,EAA8Bu9B,GAM9D,IAHA,IAAI6nI,EAAS,CAAE7/I,IAAK,EAAGC,KAAM,EAAGiY,MAAO,EAAG/R,OAAQ,EAAGhG,MAAO,EAAGD,OAAQ,GAGjD,MAAAkqJ,EAAA,eAAU,CAA3B,IAAMv2G,EAAO,KACZrkC,GAAKqkC,EAAQ5zC,MAAQuP,GAAKqkC,EAAQ37B,OAAS1I,GAAKwI,GAAK67B,EAAQ7zC,KAAOgY,GAAK67B,EAAQ1tC,QAAU6R,IAC7F6nI,EAAS,CACP7/I,IAAK6zC,EAAQ7zC,IACbC,KAAM4zC,EAAQ5zC,KACdiY,MAAO27B,EAAQ37B,MACf/R,OAAQ0tC,EAAQ1tC,OAChBhG,MAAO0zC,EAAQ1zC,MACfD,OAAQ2zC,EAAQ3zC,SAKtB,OAAO2/I,EAOAyK,CAA2B7vK,EAAQ0vK,IE1efnqJ,IAAMvb,KAAK4d,MAAMkoJ,eACpCtqJ,KAAMiqJ,EAAcjqJ,KAAOxb,KAAK4d,MAAMkoJ,eACtCryI,MAAOgyI,EAAchyI,MAASzzB,KAAK4d,MAAMkoJ,eACzCpkJ,OAAQ+jJ,EAAc/jJ,OAAU1hB,KAAK4d,MAAMkoJ,eAC3CpqJ,MAAO+pJ,EAAc/pJ,MAAqC,EAA7B1b,KAAK4d,MAAMkoJ,eACxCrqJ,OAAQgqJ,EAAchqJ,OAAsC,EAA7Bzb,KAAK4d,MAAMkoJ,iBAG9C9lK,KAAKyjK,QAAUgC,EF8df,IACJzvK,EACA0vK,EE9dE,OAAO1lK,KAAKyjK,SAKN,YAAAQ,cAAR,sBACE,IAAKjkK,KAAKsjK,WACR,GAAItjK,KAAK4d,MAAM49I,sBAAwBx7J,KAAK8kK,QAAS,CACnD,IAAM7H,EAAYj9J,KAAK4d,MAAM2hJ,cAAgBv/J,KAAK4d,MAAMq/I,UAAY,EAI9D,GAHWj9J,KAAK4d,MAAM8gJ,SAAW1+J,KAAK4d,MAAM8gJ,SAAW,GAGjCzB,EAC5Bj9J,KAAK8/J,OAAOruJ,uBAAsB,WAC5B,EAAKqzJ,UACP,EAAKxB,WF0WX,SACJttK,EACA4jK,EACA8E,EACAtD,EACAK,QAFA,IAAAiD,MAAA,GAIA,IAAMqH,EAA0B/vK,EAC1BgwK,EAAyBhwK,EACzBiwK,EAAuCjwK,EAEvCkwK,EAAoB9K,EACtBoD,GAAuBpD,GACvB,IAAI2C,GAAU,EAAG79J,OAAOu5J,WAAajK,KAAqB,EAAGtvJ,OAAO+7B,aAGlEzgB,EAAOyqJ,EAAkBzqJ,MAAQyqJ,EAAkBl7I,EAEnDxP,EAAM0qJ,EAAkB1qJ,KAAO0qJ,EAAkB1yI,EACjDE,EAAQwyI,EAAkBxyI,OAASjY,EACnCkG,EAASukJ,EAAkBvkJ,QAAUnG,EAW3C,OAAOkjJ,GARDsH,EAAY5iJ,gBACH,IAAI46I,GAAUgI,EAAY/uE,QAAS+uE,EAAY/uE,QAAS+uE,EAAY9uE,QAAS8uE,EAAY9uE,cACpFx3F,IAAT+b,QAA8B/b,IAAR8b,EAClB,IAAIwiJ,GAAUviJ,EAAMiY,EAAOlY,EAAKmG,GAEhC48I,GAAyB0H,GAGYpM,EAAY8E,EAAUwH,EAAmBzK,GEzYjE0K,CAChB,EAAKrB,QACL,EAAKlnJ,MAAMu/I,gBACX,EACA,EAAKiI,aACL,EAAKxnJ,MAAM69I,aAEb,EAAK4H,mBAAoB,EACzB,EAAKtoF,iBAEN/6E,KAAK8kK,cAER9kK,KAAKsjK,WAAatjK,KAAKolK,aAAa3pJ,OAGxC,OAAOzb,KAAKsjK,YAGN,YAAAiC,mBAAR,SAA2BhE,EAAmC6E,GAC5D,OACEpmK,KAAKqmK,kBAAkB9E,EAAU3D,gBAAiBwI,EAAYxI,kBAC9D59J,KAAKqmK,kBAAkB9E,EAAUlD,aAAaT,gBAAiBwI,EAAY/H,aAAaT,kBAIpF,YAAAyI,kBAAR,SAA0BC,EAAyBjB,GACjD,IAAK,IAAM5yK,KAAO4yK,EAChB,GAAIA,EAAatyK,eAAeN,GAAM,CACpC,IAAM8zK,EAAkBD,EAAa7zK,GAC/B+zK,EAAkBnB,EAAa5yK,GAErC,QAAwBgN,IAApB8mK,QAAqD9mK,IAApB+mK,EAKnC,OAAO,EAJP,GAAID,EAAgBnjG,QAAQ,KAAOojG,EAAgBpjG,QAAQ,GACzD,OAAO,EAOf,OAAO,GAGD,YAAA8/F,2BAAR,SAAmCltK,GACjC,IAAM22J,EAAiB3sJ,KAAKkhK,gBAAgBhqJ,QAE5C,GAAIlhB,EACF,GAAsB,kBAAXA,EAAqB,CAC9B,IAAMywK,EAAuBnsC,GAAYqyB,GACzC3sJ,KAAK8kK,QAAU2B,EAAcA,EAAWlyI,cAAcv+B,GAAsB,KAC5EgK,KAAKwiK,cAAgB9pG,GAAUi0F,QAE1B,GAAK32J,EAAemtB,gBACzBnjB,KAAKwiK,cAAgB9pG,GAAW1iE,EAAsBA,QACtDgK,KAAK8kK,QAAU9uK,OAEV,GAAKA,EAAeqrB,sBAAuB,CAChD,IAAM++H,EAAyBpqJ,EAC/BgK,KAAKwiK,cAAgB9pG,GAAU0nF,GAC/BpgJ,KAAK8kK,QAAU1kB,YAC2C3gJ,IAAhDzJ,EAAoCkhB,SAC9ClX,KAAK8kK,QAAW9uK,EAAoCkhB,QACpDlX,KAAKwiK,cAAgB9pG,GAAU14D,KAAK8kK,WAGpC9kK,KAAKwiK,cAAgB9pG,GAAUi0F,GAC/B3sJ,KAAK8kK,QAAU9uK,QAGjBgK,KAAKwiK,cAAgB9pG,GAAUi0F,IAI3B,YAAA0V,2BAAR,sBACMriK,KAAKkhK,gBAAgBhqJ,SAAWlX,KAAK4d,MAAM2lJ,cAC7CvjK,KAAK0mK,sBAAwB1mK,KAAK8/J,OAAOruJ,uBAAsB,WAC7D,IAAMk1J,EAAkB,EAAKzF,gBAAgBhqJ,SAAY,EAAKgqJ,gBAAgBhqJ,QAAQ2yC,UAEtF,GAAK88G,EAAL,CAIA,IAEMC,EAF2BD,EAAgBxhJ,aAClBwhJ,EAAgB9kJ,aAG/C,EAAKi5D,SAAS,CACZgoF,aAAc,EAAK/9J,MAAM+9J,aAAgB8D,IAGvCD,EAAgB9kJ,aAAe,EAAKjE,MAAM2lJ,YAC5C,EAAKlB,6BAEL,EAAKvC,OAAO9qD,qBAAqB,EAAK0xD,sBAAuB,EAAKxF,gBAAgBhqJ,YAEnFlX,KAAKkhK,gBAAgBhqJ,WAKpB,YAAAssJ,wBAAR,SAAgCpe,EAAyByhB,GACvD,OACIzhB,EAASzzC,QAAUyzC,EAASzzC,SAAWk1D,EAASl1D,QAClDyzC,EAAS+X,kBAAoB0J,EAAS1J,iBACtC/X,EAASpvJ,SAAW6wK,EAAS7wK,QAIzB,YAAAmtK,WAAR,SAAmBvlJ,GAEjB,YAFiB,IAAAA,MAAuB5d,KAAK4d,OACrC,EAAA5nB,QAliBI,EAAA6Q,aAAe,CAC3B+6J,2BAA2B,EAC3BN,wBAAwB,EACxBI,wBAAwB,EACxBnC,eAAe,EACftC,UAAW,GACXyB,SAAU,EACVoH,eAAgB,EAChB3I,gBAAiBtR,IAqiBrB,EA9iBA,CAAwC,aC3DxC,SAASib,GAAa7J,GACpB,MAAO,CACLxhJ,OAAQwhJ,EACRvhJ,MAAOuhJ,GAIX,IAAM,GAAmB,CACvB1wJ,UAAW,uBACXhZ,KAAM,aACNixK,KAAM,kBACNE,YAAa,yBACbC,YAAa,mBCTFoC,GAAyDnrB,GAIpE,IDQuB,SAACh+H,G,MAEtB+wB,EAAA,EAAAA,MACA7kC,EAAA,EAAAA,UACAq6J,EAAA,EAAAA,gBACAT,EAAA,EAAAA,aACAzG,EAAA,EAAAA,UACAlyH,EAAA,EAAAA,gBACA44H,EAAA,EAAAA,gBACAC,EAAA,EAAAA,gBAGInjH,EAAa8yE,GAAoB,GAAkB5kF,GAEjD20F,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAExB,MAAO,CACL31F,UAAW,CACTk0C,EAAWl0C,UACX,CACE2O,SAAU,aAGd3nB,KAAM,CACJktD,EAAWltD,KACXo7C,EAAM80F,MAAM9T,OACZ,CACEz0G,SAAU,WACVE,UAAW,aACXu5D,aAAcutB,EAAQg3B,eACtBoL,UAAWpiC,EAAQ82B,YACnBtS,WAAS,KACP,EAAC+J,IAAuB,CACtBu2C,YAAa,EACbC,YAAa,QACbvwG,YAAa,cAEhB,I1IqDA,CACLgwD,UAAW,CACT,sBAAuB,CAErBvqG,OAAQ,GAEV,IAAK,CAEH+4C,QAAS,iB0I1DXprD,IACE45J,GAAgB,CAAEhoJ,MAAOgoJ,KACzBC,GAAmB,CAAE/oB,SAAU+oB,KAC/BC,GAAmB,CAAEsD,SAAUtD,IAEnCY,KAAM,CACJ/jH,EAAW+jH,KACX,CACEtpJ,SAAU,WACV6vB,gBAAiBu4F,EAAejF,eAChCiG,UAAW,UACXnoH,OAAQ,UACRf,UAAW,aACXqlB,UAAW,iBAEbqmI,GAAa7J,GACblyH,GAAmB,CACjBA,gBAAiBA,IAGrB25H,YAAa,CACXjkH,EAAWikH,YACX,CACExpJ,SAAU,WACVK,IAAK,EACLkY,MAAO,EACP/R,OAAQ,EACRlG,KAAM,EACNuvB,gBAAiBu4F,EAAejF,eAChC1pD,aAAcutB,EAAQg3B,iBAG1ByrC,YAAa,CACXlkH,EAAWkkH,YACX,CACE55H,gBAAiBu4F,EAAejF,eAChC8oC,UAAW,SACXplJ,UAAW,OACX7G,SAAU,WACVy5D,aAAcutB,EAAQg3B,gBAExBirC,GAAmB,CACjBpiJ,UAAW,UAEbgpB,GAAmB,CACjBA,gBAAiBA,YC7FQtrC,EAAW,CAAEu8I,MAAO,mBCD/C,SAAUorB,GAAcC,EAA6BC,GAGzD,YAH4B,IAAAD,MAAA,KACFE,GAAoBD,GAAeA,EAkB/D,SAA4BA,GAC1B,OAAO,SAACpzC,GAAwB,OAACozC,EAAa,OAAMpzC,GAAaozC,GAAjC,GAnB2CE,CAAmBF,IAErED,GAGrB,SAAUI,GACdJ,EACAC,GAIA,YALA,IAAAD,MAAA,KAG0BE,GAAoBD,GAAeA,EAa/D,SAAkCI,QAAA,IAAAA,MAAA,IAChC,OAAO,SAACC,GACN,IAAMC,EAAiB,KAAmBD,GAE1C,IAAK,IAAIhzC,KAAa+yC,EAChBA,EAAwB30K,eAAe4hI,KACzCizC,EAAkBjzC,GAAU,OAAQgzC,EAAkBhzC,IAAe+yC,EAAwB/yC,KAIjG,OAAOizC,GAvBkEC,CAAyBP,IAE3ED,GAG3B,SAASE,GAAoBrzC,GAC3B,MAA2B,oBAAbA,ECLhB,8E,OA0BU,EAAA4zC,uBAAyB,WAAM,wB,EACzC,OA3BgC,OACvB,YAAA/jE,kBAAP,WACE,GAAeoxB,QAAQn1H,KAAK8nK,yBAGvB,YAAAx7D,qBAAP,WACE,GAAe8oB,UAAUp1H,KAAK8nK,yBAGzB,YAAAhgK,OAAP,sBACUigK,EAAA,WAAAA,iBACR,OACE,gBAAC9wB,GAAkB95D,SAAQ,MACxB,SAAC6qF,GACA,IAAIC,ECvBR,SAA8BrqJ,EAAyBoqJ,GACnD,cAAA9wB,sBAAA,wCAER,MAAO,CACLA,eAAgB,CACdhjB,SAAUkzC,GAAclwB,EAAehjB,SAAUt2G,EAAMs2G,UACvDC,eAAgBszC,GAAoBvwB,EAAe/iB,eAAgBv2G,EAAMu2G,gBACzEC,qBAAqB,IDgBA8zC,CAAoB,EAAKtqJ,MAAOoqJ,GAMjD,OAJID,IACFE,EAAaF,EAAiBE,IAGzB,gBAAChxB,GAAkB/5D,SAAQ,CAAC/qF,MAAO81K,GAAa,EAAKrqJ,MAAM/C,cAO5E,EA3BA,CAAgC,aEL1B,GAAgB8hI,KAChBwrB,GAAiBz1C,IAAgB,SAAC/jF,EAAgB60E,GAAoB,OAAA2f,GAAY,EAAD,KAAMx0F,GAAK,CAAEg1E,IAAxB,QAiB5E,0E,OACU,EAAAykD,aAAe,cACf,EAAAC,8BAAwC5oK,E,EAwDlD,OA1DgC,OAIvB,YAAAqI,OAAP,WACQ,iBAAE,IAAAoyI,GAAA,qBAAkBvrG,EAAA,EAAAA,MAAOwtG,EAAA,EAAAA,IAC3B17F,EAAazgD,KAAKsoK,iBAClB5T,EAAWlc,GAAqDx4I,KAAK4d,MAAO26H,GAAe,CAAC,QAC5F,EAvBK,SAAC5pG,EAAgBwtG,GAC9B,IAAMosB,EAAa,GAAO55H,GAAS,MAAQ,MACrC65H,EAAU,KAAW,MAAQ,MAC7BC,EAAetsB,GAAYosB,EACjC,MAAO,CAILG,QAASD,IAAiBF,GAAcE,IAAiBD,EAAUC,EAAetsB,EAGlFwsB,WAAYF,IAAiBF,GAYvB,MAAEG,EAAA,EAAAA,QAASC,EAAA,EAAAA,WAEbC,EAAkB,gBAACC,EAAI,GAAC1sB,IAAKusB,GAAahU,EAAQ,CAAE5qJ,UAAW22C,EAAWltD,KAAM4mB,IAAKna,KAAKooK,gBAQ9F,OANIO,IACFC,EACE,gBAAC,GAAU,CAAC10C,SAAU,CAAEvlF,MAAOw5H,GAAex5H,EAAe,QAARwtG,KAAmBysB,IAK1E,gCACGA,EACD,gBAACpiB,GAAU,CAACC,QAASzmJ,KAAKooK,iBAKzB,YAAArkE,kBAAP,WACE/jG,KAAK8oK,uBAGA,YAAAx8D,qBAAP,WACMtsG,KAAKqoK,0BACProK,KAAKqoK,4BAID,YAAAC,eAAR,WACQ,iBAAEx+J,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAAOo6H,EAAA,EAAAA,WAAY7uJ,EAAA,EAAAA,OAMtC,OALmB,GAAcA,EAAQ,CACvCy0B,MAAOA,EACPo6H,WAAYA,EACZj/J,UAAS,KAKL,YAAAg/J,oBAAR,WACE,GAAI9oK,KAAK4d,MAAMorJ,iBAAkB,CAC/B,IAAM,EAAahpK,KAAKsoK,iBAClB,EAAahuC,GAAYt6H,KAAKooK,aAAalxJ,SAC7C,IACF,EAAWkP,KAAKhc,UAAUC,IAAI,EAAW4+J,YACzCjpK,KAAKqoK,yBAA2B,WAC9B,EAAWjiJ,KAAKhc,UAAUyoB,OAAO,EAAWo2I,gBAKtD,EA1DA,CAAgC,aC9B1BC,GAAc,CAAE5sJ,WAAY,WAE5B,GAAmB,CACvB/oB,KAAM,YACN01K,WAAY,wBCFDE,GAASvtB,GACpB,IDSuB,SAACh+H,GAChB,IAAA+wB,EAAA,EAAAA,MAAO7kC,EAAA,EAAAA,UAAWi/J,EAAA,EAAAA,WAE1B,MAAO,CACLx1K,KAAM,CAFWggI,GAAoB,GAAkB5kF,GAG1Cp7C,KACXo7C,EAAM80F,MAAM9T,OACZ,CACE/zG,MAAO+yB,EAAM40F,QAAQrN,eACrBxP,UAAW,CACT,WAAYwiD,GACZ,UAAWA,GACX,aAAcA,KAIlBH,GAAc,CACZntJ,MAAO+yB,EAAM20F,eAAetC,SAC5Bj2F,gBAAiB4D,EAAM20F,eAAe3F,gBAExC7zH,GAEFm/J,WAAY,CACV,CACEl+H,gBAAiB4D,EAAM20F,eAAe3F,yBC/B5Cl+H,EACA,CACEu8I,MAAO,WCHL,SAAUotB,GAAiBpvH,EAAoBjtC,GACnD,IAAMs8J,EAAgCrvH,EAChCsvH,EAAwCv8J,EAEzCs8J,EAAatqB,WAChBsqB,EAAatqB,SAAW,CACtBlkI,SAAU,KAId,IAAMirC,EAAYujH,EAAatqB,SAAShyI,OAExC,GAAI+4C,GAAaA,IAAc/4C,EAAQ,CAErC,IAAMrJ,EAAQoiD,EAAUi5F,SAASlkI,SAASlX,QAAQ0lK,GAE9C3lK,GAAS,GACXoiD,EAAUi5F,SAASlkI,SAASjX,OAAOF,EAAO,GAI9C2lK,EAAatqB,SAAShyI,OAASu8J,QAAiB7pK,EAE5C6pK,IACGA,EAAcvqB,WACjBuqB,EAAcvqB,SAAW,CACvBlkI,SAAU,KAIdyuJ,EAAcvqB,SAASlkI,SAAS9mB,KAAKs1K,IC/BnC,SAAU,GACdrtB,EACAx3G,EACA+kI,GAIA,OAAO,SAAgCrQ,G,MAC/BC,IAAW,cAMf,WAAYv7I,GAAZ,MACE,YAAMA,IAAM,K,OAHN,EAAA4rJ,YAAgE,GAKtE,EAAKC,kBAAoB,EAAKA,kBAAkB/2K,KAAK,G,EAiDzD,OA1D6D,OAYpD,YAAAqxG,kBAAP,WACE,GAAeoxB,QAAQn1H,KAAKypK,oBAGvB,YAAAn9D,qBAAP,WACE,GAAe8oB,UAAUp1H,KAAKypK,oBAGzB,YAAA3hK,OAAP,sBACE,OACE,gBAACmvI,GAAkB95D,SAAQ,MACxB,SAAC1c,GACA,IAAM55D,EAAe,GAAe+tH,YAAYpwF,EAAQw3G,EAAOv7E,EAAQy2E,gBAGjErB,EAAiB,EAAKj4H,MAQ5B,GALI/W,EAAaqT,QAAyC,oBAAxBrT,EAAaqT,SAC7CrT,EAAaqT,OAASrT,EAAaqT,OAAM,OAAMrT,GAAiBgvI,KAI9D0zB,GAAgB1iK,EAAaqT,OAAQ,CACvC,GACE,EAAKsvJ,YAAY53D,UAAY/qG,EAAaqT,QAC1C,EAAKsvJ,YAAY7hK,YAAckuI,EAAe37H,OAC9C,CACA,IAAMwvJ,EAAehkC,GAAgB7+H,EAAaqT,OAAQ27H,EAAe37H,QACzE,EAAKsvJ,YAAY53D,QAAU/qG,EAAaqT,OACxC,EAAKsvJ,YAAY7hK,UAAYkuI,EAAe37H,OAC5C,EAAKsvJ,YAAY98F,OAASg9F,EAG5B,OAAO,gBAACxQ,EAAiB,KAAKryJ,EAAkBgvI,EAAc,CAAE37H,OAAQ,EAAKsvJ,YAAY98F,UAG3F,OAAO,gBAACwsF,EAAiB,KAAKryJ,EAAkBgvI,QAMhD,YAAA4zB,kBAAR,WACEzpK,KAAK+6E,eAET,EA1DiB,CAA4C,cAC7C3iF,YAAsB,aAAe4jJ,EAyDpD,GAED,OAAOvM,GAAaypB,EAAmBC,IC1E3C,IAEIwQ,GAFEC,GAAwD,GCoB9D,IAyKIC,GAzKE,GAAgBltB,KAGtB,eAQE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,K,OAHN,EAAAksJ,SAAW,cAyDX,EAAAC,oBAAsB,WACpB,IAAAC,EAAA,QAAAA,OAEF9lD,EAAMoW,GAAY,EAAKwvC,SAAS5yJ,SAChC+yJ,EAAO,EAAKC,WAElB,GAAKhmD,GAAQ+lD,EAAb,CAKA,EAAKE,sBAEL,IAAMC,EAAelmD,EAAI1wG,cAAc,OACjCitC,EAAa,EAAK6nH,iBAExB8B,EAAatgK,UAAY22C,EAAWltD,KACjB62K,EpDhGb98J,aAP2B,sBAOS,QoDiG1C87J,GAAiBgB,EAAc,EAAKN,SAAS5yJ,SAE7C,EAAK0G,MAAMysJ,YAAcJ,EAAK1+J,aAAa6+J,EAAcH,EAAKr2I,YAAcq2I,EAAK12J,YAAY62J,GAE7F,EAAKtvF,SACH,CACEkvF,OAAM,EACNI,aAAY,IAEd,WAEQ,cAAEE,EAAA,EAAAA,gBAAiBnI,EAAA,EAAAA,eACrBA,GACFA,IAGEmI,GACFA,SAvFN,EAAKvlK,MAAQ,G,EA0IjB,OArJ+B,OAoBtB,YAAAg/F,kBAAP,WACU,IAAAimE,EAAA,WAAAA,OAERhqK,KAAK+pK,sBAEDC,GDvCF,SAAwBA,EAAgB/9J,GACvC29J,GAAgBI,KACnBJ,GAAgBI,GAAU,IAG5BJ,GAAgBI,GAAQj2K,KAAKkY,GCmCzBs+J,CAAcP,EAAQhqK,KAAK+pK,sBAIxB,YAAAjiK,OAAP,WACU,IAAAsiK,EAAA,WAAAA,aACF3pH,EAAazgD,KAAKsoK,iBAChBkC,EAAA,WAAAA,qBAER,OACE,wBAAM1gK,UAAU,WAAWqQ,IAAKna,KAAK8pK,UAClCM,GACC,eACE,gBAACjB,GAAM,MAAOqB,GAiI1B,WACOX,KACHA,GAAsB,GAEtB,CACE,UACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,eACA,eACA,cACA,cACA,aACA,YACA,cACA,eACA,gBACA,aACA,YACA,aACA,UACA,UACA,SACA,WACA,UACA,YACA,YACAzzK,SAAQ,SAAA3E,GAAQ,OAACo4K,GAAoBp4K,GAArB,OAGpB,OAAOo4K,GAxKyCY,GAAqB,CAAE3gK,UAAW22C,EAAWp3C,UAChFrJ,KAAK4d,MAAM/C,UAEduvJ,KAMH,YAAAzgE,mBAAP,WACM3pG,KAAK4d,MAAMosJ,SAAWhqK,KAAK+E,MAAMilK,QACnChqK,KAAK+pK,uBAIF,YAAAz9D,qBAAP,WACU,IAAA09D,EAAA,WAAAA,OAERhqK,KAAKmqK,sBACDH,GD3DF,SAA0BA,EAAgB/9J,GAC9C,GAAI29J,GAAgBI,GAAS,CAC3B,IAAMx1I,EAAMo1I,GAAgBI,GAAQrmK,QAAQsI,GACxCuoB,GAAO,IACTo1I,GAAgBI,GAAQpmK,OAAO4wB,EAAK,GACG,IAAnCo1I,GAAgBI,GAAQ9zK,eACnB0zK,GAAgBI,KCsDzBU,CAAgBV,EAAQhqK,KAAK+pK,sBA6CzB,YAAAI,oBAAR,WACU,IAAAQ,EAAA,WAAAA,mBACAP,EAAA,WAAAA,aAUR,GARIA,GACFhB,GAAiBgB,EAAc,MAG7BO,GACFA,IAGEP,GAAgBA,EAAajpJ,WAAY,CAC3C,IAAMA,EAAaipJ,EAAajpJ,WAC5BA,GACFA,EAAWgB,YAAYioJ,KAKrB,YAAA9B,eAAR,WACQ,iBAAEx+J,EAAA,EAAAA,UAAWoQ,EAAA,EAAAA,OAAQy0B,EAAA,EAAAA,MAO3B,OANmB,GAAcz0B,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACT8gK,WAAY5qK,KAAK4d,MAAMosJ,UAMnB,YAAAE,SAAR,WACU,IAAAF,EAAA,WAAAA,OACF9lD,EAAMoW,GAAYt6H,KAAK8pK,SAAS5yJ,SACtC,GAAKgtG,EAAL,CAIA,GAAI8lD,EACF,OAAO9lD,EAAI2mD,eAAeb,GAE1B,IAAMc,ED5GHnB,GC6GH,OAAOmB,EAAuB5mD,EAAI3vF,cAAcu2I,GAAgC5mD,EAAI99F,OAjJ1E,EAAAvf,aAA4B,CACxCyjK,gBAAiB,aACjBK,mBAAoB,cAHXI,EAAS,GADrB,GAAa,QAAS,CAAC,QAAS,YACpBA,GAAb,CAA+B,aAuJzBC,GAAiB,SAACnoB,GAKpBA,EAAGhwD,aAAeo4E,MAAMC,gBACZ,eAAZroB,EAAG9+I,MACS,eAAZ8+I,EAAG9+I,MACS,eAAZ8+I,EAAG9+I,MACS,aAAZ8+I,EAAG9+I,MAEH8+I,EAAG1/H,mBCtLP,ICOiBgoJ,GDPX,GAAmB,CACvB53K,KAAM,WACN63K,WAAY,kBACZ/hK,QAAS,oBEAEyoH,GAA8C8pB,GACzD,IFEuB,SAACh+H,GAChB,IAAA9T,EAAA,EAAAA,UAAW8gK,EAAA,EAAAA,UAAWj8H,EAAA,EAAAA,MAExB8R,EAAa8yE,GAAoB,GAAkB5kF,GAEzD,MAAO,CACLp7C,KAAM,CACJktD,EAAWltD,KACXo7C,EAAM80F,MAAM9T,OACZi7C,GAAa,CACXnqH,EAAW2qH,WACX,CACElwJ,SAAU,QACVu7C,OAAQq6D,GAASgB,MACjBv2G,IAAK,EACLC,KAAM,EACNkG,OAAQ,EACR+R,MAAO,EACP8tB,WAAY,WAGhBz3C,GAEFT,QAAS,CACPo3C,EAAWp3C,QACX,CACEk4C,WAAY,oBE1BlB9hD,EACA,CACEu8I,MAAO,QACPx3G,OAAQ,CAAC,SAAU,QAAS,YCNhC,4B,+CAMA,OAN6B,OACpB,YAAA18B,OAAP,WACE,IAAM,aAAEujK,EAAA,EAAAA,WAAY,sBACdhiK,EAAU,gBAAC09J,GAAc,KAAK54J,IACpC,OAAOnO,KAAK4d,MAAM0tJ,WAAajiK,EAAU,gBAACyoH,GAAK,KAAKu5C,GAAahiK,IAErE,EANA,CAA6B,aCAvB,GAAiB,SAACuU,GACd,IAAAkB,EAAA,EAAAA,KAAMysJ,EAAA,EAAAA,SAAU9qH,EAAA,EAAAA,WAEhB+qH,EAAA,EAAAA,UAER,OAAKD,EAIDzsJ,EAAK2sJ,aACA3sJ,EAAK2sJ,aAAa7tJ,GAGpB,gBAACstI,GAAI,KAAKsgB,EAAS,CAAE1hK,UAAW22C,EAAWjgC,QAPzC,MAUL,GAAsB,SAAC,G,IAAEkrJ,EAAA,EAAAA,iBAAkB5sJ,EAAA,EAAAA,KAAM2hC,EAAA,EAAAA,WAC/CkrH,EAAgBlU,GAAa34I,GACnC,GAAI4sJ,EAAkB,CAIpB,OACE,gBAACxgB,GAAI,CACH/lB,UAA4B,IAAlBrmH,EAAK44I,UAAsBiU,EAAgB,YAAc,GACnE7hK,UAAW22C,EAAWmrH,cAEtBryJ,QAPY,SAACtZ,GAAqC,OAAAyrK,EAAiB5sJ,EAAjB,MAWxD,OAAO,MAGH,GAAiB,SAAC,G,IAAEA,EAAA,EAAAA,KAAM2hC,EAAA,EAAAA,WAE9B,OAAI3hC,EAAK3T,MAAQ2T,EAAKrtB,KACb,wBAAMqY,UAAW22C,EAAWprB,OAAQvW,EAAK3T,MAAQ2T,EAAKrtB,MAGxD,MAGH,GAAsB,SAAC,G,IAAEqtB,EAAA,EAAAA,KAAM2hC,EAAA,EAAAA,WACnC,OAAI3hC,EAAK+sJ,cACA,wBAAM/hK,UAAW22C,EAAWorH,eAAgB/sJ,EAAK+sJ,eAEnD,MAGH,GAAoB,SAAC,G,IAAE/sJ,EAAA,EAAAA,KAAM2hC,EAAA,EAAAA,WAAY9R,EAAA,EAAAA,MAC7C,OAAIipH,GAAW94I,GAEX,gBAACosI,GAAI,GACH/lB,SAAU,GAAOx2F,GAAS,cAAgB,gBACtC7vB,EAAKgtJ,iBAAgB,CACzBhiK,UAAW22C,EAAWsrH,eAIrB,MAGT,eACE,WAAYnuJ,GAAZ,MACE,YAAMA,IAAM,K,OAsBP,EAAAouJ,YAAc,WACb,cAAEltJ,EAAA,EAAAA,KAAMktJ,EAAA,EAAAA,YAAaC,EAAA,EAAAA,iBAC3B,GAAIA,EAAkB,CACpB,IAAMC,EAAgBD,IAClBrU,GAAW94I,IAASktJ,GAAeE,GACrCF,EAAYltJ,EAAMotJ,KAKjB,EAAAC,eAAiB,WAChB,cAAErtJ,EAAA,EAAAA,KAAMqtJ,EAAA,EAAAA,eACVvU,GAAW94I,IAASqtJ,GACtBA,KAIG,EAAAC,YAAc,SAACC,GACZ,IAAAD,EAAA,QAAAA,YACJA,GACFA,OAAY3sK,EAAoB4sK,IAxClC3uB,GAAuB,G,EAuD3B,OA3D4C,OAOnC,YAAA51I,OAAP,WACQ,iBAAEgX,EAAA,EAAAA,KAAM2hC,EAAA,EAAAA,WACR6rH,EAAgBxtJ,EAAKytJ,iBAAmBvsK,KAAKwsK,cAEnD,OACE,uBAAK1iK,UAAWgV,EAAK3c,MAAQs+C,EAAWgsH,gBAAkBhsH,EAAWisH,aAClEJ,EAActsK,KAAK4d,MAAO,CACzB+uJ,oBAAmB,GACnBC,eAAc,GACdC,eAAc,GACdC,oBAAmB,GACnBC,kBAAiB,OA8BjB,YAAAP,cAAR,SAAsB5uJ,EAAiCovJ,GACrD,OACE,gCACGA,EAAeL,oBAAoB/uJ,GACnCovJ,EAAeJ,eAAehvJ,GAC9BovJ,EAAeH,eAAejvJ,GAC9BovJ,EAAeF,oBAAoBlvJ,GACnCovJ,EAAeD,kBAAkBnvJ,KAI1C,EA3DA,CAA4C,aC9D/B,GAAuB80G,IAElC,SAAC/jF,GACC,OAAO83F,GAAe,CACpBj0E,QAAS,CACPn2C,QAAS,cACTZ,OAAQ,OACRwxJ,WAAY,UAEdC,QAAS,CACPxxJ,MAAO,EACPD,OAAQ,OACRsvB,gBAAiB4D,EAAM40F,QAAQhN,yBCHjC42C,GAAuBz8C,GAAkB,EjKAX08C,KiKE9BC,GAA4B36C,IAChC,W,MACE,MAAO,CACLhM,WAAS,KACP,EAAC+J,IAAoB,GACnB1lF,gBAAiB,YACjB2rB,YAAa,YACb96C,MAAO,iBjKQR,CACL0xJ,kBAAmB,OACnBC,qBAAsB,SiKPnB,OAKMC,GAAoB96C,IAC/B,SAAC/jF,G,kBACS20F,EAAA,EAAAA,eAAgBG,EAAA,EAAAA,MAAOF,EAAA,EAAAA,QACzBkqC,EAAyCnqC,EAAe/C,0BACxDmtC,EAAmCpqC,EAAezB,oBAClD8rC,EAA4CrqC,EAAexD,0BAC3D8tC,EAAiCtqC,EAAe9D,YA6MtD,OAAOkG,GA3MiC,CACtC5mH,KAAM,CACJ2kH,EAAM9T,OACN,CACE/zG,MAAO0nH,EAAetC,SACtB9lH,SAAU,WACVE,UAAW,eAGf8xJ,QAAS,CACP7wJ,QAAS,QACTZ,OAAQ,MACRsvB,gBAAiB6iI,EACjB1yJ,SAAU,YAEZ3nB,KAAM,CACJ49H,GAAcxiF,GACd80F,EAAM9T,OACN,CACE/zG,MAAO0nH,EAAetC,SACtBj2F,gBAAiB,cACjB5uB,OAAQ,OACRT,MAAO,OACPD,OAlDiC,GAmDjCmB,WAnDiC,GAoDjCP,QAAS,QACTuvC,OAAQ,UACRhzC,QAAS,gBACTuC,UAAW,SAGf0yJ,aAAc,CACZjyJ,MAAO0nH,EAAe3C,iBACtB/0E,OAAQ,UACR5vC,cAAe,OACf0qG,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,WACPovB,QAAS,GjK9CZ,CACLsiI,kBAAmB,OACnBC,qBAAsB,SiK+CjB,IAEHO,YAAa,EAAF,CACT/iI,gBAAiB0iI,EACjB7xJ,MAAO8xJ,EACPhnD,UAAW,CACT,0BAA2B,CACzB9qG,MAAO2nH,EAAQ/N,cAEjB,iCAAkC,CAChC55G,MAAO2nH,EAAQrN,kBAGhBm3C,MAELU,YAAa,EAAF,CACThjI,gBAAiBw4F,EAAQzM,OACtBu2C,MAELW,YAAa,EAAF,CACTtnD,UAAW,CACT,mCAAoC,CAClC9qG,MAAO2nH,EAAQrN,kBAGhBm3C,MAELY,YAAa,EAAF,CACTljI,gBAAiB4iI,EACjBjnD,UAAW,CACT,0BAA2B,CACzB9qG,MAAO2nH,EAAQhO,WAEjB,iCAAkC,CAChC35G,MAAO2nH,EAAQrN,kBAGhBm3C,MAELa,aAAc,EAAF,CACVnjI,gBAAiB4iI,EACjB/xJ,MAAO0nH,EAAe/E,iBACnB8uC,MAELX,YAAa,CACX1vJ,WAAY,SACZvB,OAAQ,UACRY,QAAS,OACT4wJ,WAAY,SACZryB,SAAU,QAEZuzB,WAAY,CACVv1J,QAAS,gBACTkE,cAAe,OACflB,MAAO,UACPe,cAAe,SACfyxJ,YAAa,SACbrxJ,cAAe,OACfF,WAAY,MACZwxJ,WAAY,OACZC,eAAgB,OAChBlzJ,UAAW,cAEbia,MAAO,CACLnZ,OAAQ,QACRw+H,cAAe,SACfr+H,QAAS,eACTwwE,SAAU,IACVuuD,aAAc,WACd//H,SAAU,SACV2B,WAAY,UAEd6uJ,cAAe,CACbjwJ,MAAO+yB,EAAM40F,QAAQnN,iBACrBp8G,YAAa,OACbmB,UAAW,SAEbqF,KAAM,CACJnE,QAAS,eACTkyJ,UAAW,MACX7tJ,UApJmC,GAqJnCnE,SAAU2uG,GAAcyE,OACxBj0G,MAAOwvG,GAAcyE,OACrBzzG,OAAQ,QACRw+H,cAAe,SACf3tD,WAAY,IACZ25B,WAAS,KACP,EAACymD,IAAuB,CACtB5wJ,SAAU2uG,GAAc2E,MACxBn0G,MAAOwvG,GAAc2E,OAExB,IAEH2+C,UAAW,CACT5yJ,MAAO0nH,EAAezE,SACtBnY,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WAET,EAAC,iBAAkB,CACjB8qG,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,iBAEV,IAEH,EAAC,iBAAkB,CACjB8qG,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,iBAEV,IAEJ,IAEH6yJ,aAAc,CACZ7yJ,MAAO0nH,EAAe3C,kBAExBirC,cAAe,CACbhwJ,MAAO0nH,EAAexB,YACtBpb,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,iBAEV,IAEHmwJ,YAAa,CACXtwJ,OAnMmC,GAoMnCmB,WApMmC,GAqMnChB,MAAO2nH,EAAQnN,iBACfj7G,UAAW,SACXkB,QAAS,eACTq+H,cAAe,SACf3tD,WAAY,IACZxwE,SAAU2uG,GAAcuE,MACxB/I,WAAS,GACP,SAAU,CACR9qG,MAAO2nH,EAAQrN,gBAEjB,UAAW,CACTt6G,MAAO2nH,EAAQrN,iBAEjB,EAACi3C,IAAuB,CACtB5wJ,SAAU2uG,GAAcyE,QAE1B,EAACc,IAAuB,CACtB70G,MAAO,iBAEV,IAEH8yJ,yBAA0B,CACxBv9C,GAAcxiF,GACd,CACEtyB,QAAS,OACTZ,OA9NiC,GA+NjC6/H,SAAU,SACVqzB,eAAgB,SAChB1B,WAAY,oBC9LhB,GAAuBv8C,GAAkB,ElKjCX08C,KkKmCvBwB,GAA0Cl8C,IAErD,SAAC/jF,G,MACC,OAAO83F,GAAe,GAAqB93F,GAAQ,CAEjD6jB,QAAS,CACPt3C,SAAU,WACVuY,MAAO,GACPizF,WAAS,KACP,EAAC,IAAuB,CACtBjzF,MAAO,IAEV,IAEHy5I,QAAS,CACPzxJ,OAAQ,GACRC,MAAO,QAMT,GAAmB,CACvBoD,KAAM,yBACNouJ,QAAS,4BACT35K,KAAM,yBACNokK,UAAW,aACXkX,WAAY,cACZ17D,WAAY,cACZu5D,YAAa,gCACbD,gBAAiB,gCACjBjsJ,KAAM,yBACNguJ,UAAW,8BACX5C,cAAe,kCACfG,YAAa,gCACb12I,MAAO,6BACPw2I,cAAe,kCACfiD,UAAW,8BACXC,iBAAkB,sCAaP,GAAoBr8C,IAC/B,SACE/jF,EACA31B,EACA2/B,EACAsI,EACA+tH,EACAC,EACAC,EACAC,EACAxkB,EACAykB,EACAC,EACAvlK,G,YAEMoQ,EAASszJ,GAAkB7+H,GAC3B8R,EAAa8yE,GAAoB,GAAkB5kF,GAEzD,OAAO83F,GAAe,CACpB3nH,KAAM,CAAC2hC,EAAW3hC,KAAM5E,EAAO4E,KAAMowJ,GACrChC,QAAS,CAACzsH,EAAWysH,QAAShzJ,EAAOgzJ,QAASiC,GAC9C57K,KAAM,CACJktD,EAAWltD,KACX2mB,EAAO3mB,KACP0tD,GAAW,CAACR,EAAWk3G,UAAWz9I,EAAO8zJ,aACzCgB,GAAgB90J,EAAOi0J,WACvBx1H,GAAY,CAAC8H,EAAWouH,WAAY30J,EAAOg0J,cAC3Cl1J,GAAY,CAACynC,EAAW0yD,WAAYj5F,EAAO2zJ,eAC1C70J,IACE2/B,GAAY,CACX,CACE+tE,WAAS,GACP,SAAUxsG,EAAO4zJ,YACjB,UAAW5zJ,EAAO+zJ,aAClB,EAAC,IAAIl9C,GAAuB,cAAcA,GAAuB,kBAAmB72G,EAAO6zJ,YAC3F,EAAC,IAAIh9C,GAAuB,YAAa,CAAE30G,WAAY,YACxD,KAGPtS,GAEFwlK,aAAc,CACZp1J,EAAO3mB,KACP,CACEmoB,MAAO,qBAETulC,GAAW,CAAC,aAAc/mC,EAAO8zJ,cAChCh1J,GAAYq2J,IAAoB,CAAC,cAAen1J,EAAO2zJ,gBACtD70J,GAAYq2J,KACXpuH,GAAW,CACV,CACEylE,WAAS,GACP,SAAUxsG,EAAO4zJ,aAEjB,EAAC,aAAartH,EAAWquH,WAAc50J,EAAO4zJ,YAC9C,aAAW5zJ,EAAO+zJ,YAClB,EAAC,IAAIl9C,GAAuB,cAAcA,GAAuB,kBAAmB72G,EAAO6zJ,YAC3F,EAAC,IAAIh9C,GAAuB,YAAa,CAAE30G,WAAY,YACxD,MAIT0yJ,UAAW,CACTruH,EAAWquH,UACX50J,EAAO3mB,KACP,CACEg8K,UAAW,IACX32J,QAAS,QACTsuJ,SA3H6B,QA6H/BvuH,GAAY,CAAC,cAAez+B,EAAOg0J,cACnCl1J,GAAY,CAAC,cAAekB,EAAO2zJ,eAClC70J,IACE2/B,GAAY,CACX,CACE+tE,WAAS,GACP,SAAUxsG,EAAO4zJ,YACjB,UAAW5zJ,EAAO+zJ,aAClB,EAAC,IAAIl9C,GAAuB,cAAcA,GAAuB,kBAAmB72G,EAAO6zJ,YAC3F,EAAC,IAAIh9C,GAAuB,YAAa,CAAE30G,WAAY,YACxD,MAIT+xJ,WAAYj0J,EAAOi0J,WACnBzB,YAAa,CAACjsH,EAAWisH,YAAaxyJ,EAAOwyJ,aAC7CD,gBAAiB,CACfhsH,EAAWgsH,gBACXvyJ,EAAOwyJ,YACP,CACEiC,eAAgB,WAGpBnuJ,KAAM,CACJigC,EAAWjgC,KACXyuJ,GAAa/0J,EAAOs0J,UACpBt0J,EAAOsG,KACPmqI,EACA3xI,GAAY,CAACynC,EAAW0yD,WAAYj5F,EAAOu0J,eAE7CD,UAAWt0J,EAAOs0J,UAClB5C,cAAe,CAACnrH,EAAWmrH,cAAeqD,GAAa/0J,EAAO0xJ,cAAe1xJ,EAAOsG,KAAMmqI,GAC1FohB,YAAa,CACXtrH,EAAWsrH,YACX7xJ,EAAO6xJ,YACPqD,EACAz2H,GAAY,CAAE/8B,MAAO+yB,EAAM40F,QAAQrN,gBACnCl9G,GAAY,CAACkB,EAAOu0J,eAEtBp5I,MAAO,CAACorB,EAAWprB,MAAOnb,EAAOmb,OACjCw2I,cAAe,CAACprH,EAAWorH,cAAe3xJ,EAAO2xJ,eACjD2D,eAAgB,CACdt1J,EAAOw0J,0BACN11J,IACEioC,GAAW,CACV,CACEylE,WAAS,KACP,EAAC,IAAIqK,GAAuB,cAAcA,GAAuB,kBAAmB72G,EAAO6zJ,YAC5F,MAITgB,iBAAkB,CAChBtuH,EAAWsuH,iBACX70J,EAAO60J,iBACP58C,GACA,CAAE5wE,WAAY,gBAaTkuH,GAAgB,SAAC7xJ,GAE1B,IAAA+wB,EAAA,EAAAA,MACA31B,EAAA,EAAAA,SACA2/B,EAAA,EAAAA,SACAsI,EAAA,EAAAA,QACA+tH,EAAA,EAAAA,aACAC,EAAA,EAAAA,UACAC,EAAA,EAAAA,cACAC,EAAA,EAAAA,iBACAxkB,EAAA,EAAAA,cACAykB,EAAA,EAAAA,iBACAC,EAAA,EAAAA,gBACAvlK,EAAA,EAAAA,UAIF,OAAO,GACL6kC,EACA31B,EACA2/B,EACAsI,EACA+tH,EACAC,EACAC,EACAC,EACAxkB,EACAykB,EACAC,EACAvlK,ICjQS4lK,GAAwE9zB,GAInF,GAAwB6zB,QAAehwK,EAAW,CAAEu8I,MAAO,uBCb7D,eACE,WAAYp+H,GAAZ,MACE,YAAMA,IAAM,K,OAQJ,EAAA+xJ,kBAAoB,SAAC9sB,GACvB,cAAE/jI,EAAA,EAAAA,KAAM8wJ,EAAA,EAAAA,iBACVA,GACFA,EAAiB9wJ,EAAM+jI,EAAIA,EAAG9lF,gBAIxB,EAAA8yG,aAAe,SAAChtB,GAClB,cAAE/jI,EAAA,EAAAA,KAAMgxJ,EAAA,EAAAA,gBACVA,GACFA,EAAgBhxJ,EAAM+jI,EAAIA,EAAG9lF,gBAIvB,EAAAgzG,kBAAoB,SAACltB,GACvB,cAAE/jI,EAAA,EAAAA,KAAMkxJ,EAAA,EAAAA,iBACVA,GACFA,EAAiBlxJ,EAAM+jI,IAIjB,EAAAotB,eAAiB,SAACptB,GACpB,cAAE/jI,EAAA,EAAAA,KAAMoxJ,EAAA,EAAAA,cACVA,GACFA,EAAcpxJ,EAAM+jI,IAId,EAAAstB,iBAAmB,SAACttB,GACtB,cAAE/jI,EAAA,EAAAA,KAAMsxJ,EAAA,EAAAA,gBACVA,GACFA,EAAgBtxJ,EAAM+jI,EAAIA,EAAG9lF,gBAIvB,EAAAszG,kBAAoB,aA1C5B3yB,GAAuB,G,EA6C3B,OAhD+C,OAMtC,YAAAp6C,sBAAP,SAA6B8hD,GAC3B,OAAQtD,GAAesD,EAAUplJ,KAAK4d,QAyC1C,EAhDA,CAA+C,aCSzC,SAAU0yJ,GAAY/rF,GAI1B,IAAMpqE,EAAM,WAQZ,YAPoB1a,IAAhB0a,EAAIjD,UAGNiD,EAAIjD,QAAU,CACZ/kB,MAA+B,oBAAjBoyF,EAA+BA,IAA8BA,IAGxEpqE,EAAIjD,QAAQ/kB,OTfrB,SAAiBg5K,GACF,EAAAoF,aAAe,cACf,EAAAC,eAAiB,gBACjB,EAAAC,eAAiB,gBACjB,EAAAC,uBAAyB,uBACzB,EAAAC,yBAA2B,yBAC3B,EAAAC,yBAA2B,yBAC3B,EAAAC,kBAAoB,kBACpB,EAAAC,iBAAmB,iBARlC,CAAiB3F,QAAY,KUE7B,+BAGS,KAAA4F,QAA4C,GAC5C,KAAAC,iBAAqD,GACrD,KAAAC,gBAAmD,GAInD,KAAAC,cAAe,EAIf,KAAAC,uBAAwB,EAIxB,KAAAC,2BAA4B,EA0KrC,OAnKgB,EAAAlwD,YAAd,WACE,OAAOlhH,KAAKqxK,WAUP,YAAAx8B,KAAP,SAAYu8B,GACVpxK,KAAKoxK,0BAA4BA,GAU5B,YAAAE,SAAP,SAAgBC,EAA2BC,QAAA,IAAAA,OAAA,GACzC,IAAI5zJ,EAAsB2zJ,EACrBC,IAEH5zJ,EAAQ5d,KAAKyxK,kBAAkBF,GAC/BvxK,KAAKixK,gBAAgBrzJ,EAAM8zJ,aAAaz9K,YAAc2pB,GAGxD,IAAM+zJ,EAA8B3xK,KAAK4xK,cAAch0J,GAOvD,GALA4zJ,EACKxxK,KAAKgxK,iBAAiBW,EAAaE,UAAYF,EAC/C3xK,KAAK+wK,QAAQY,EAAaE,UAAYF,EAGvC3xK,KAAKkxK,eAAiBlxK,KAAKoxK,0BAA2B,CACxD,IAAM,EAAQI,EAAYrG,GAAauF,uBAAyBvF,GAAaoF,aAC7E,GAAWjuB,MAAMtiJ,KAAM,EAAO,CAC5B8xK,OAAQl0J,EACRi0J,SAAUF,EAAaE,WAI3B,OAAOF,EAAaE,UASf,YAAAz4I,OAAP,SAAcm4I,EAA2BM,GACvC,IAAME,EAAiB/xK,KAAKyxK,kBAAkBF,GACxCI,EAAe3xK,KAAK4xK,cAAcG,EAAgBF,GAClDG,EAAYhyK,KAAK+wK,QAAQc,GAC3BG,IAEFL,EAAaG,OAAOv2H,QAAUy2H,EAAUF,OAAOv2H,QAE/Cv7C,KAAK+wK,QAAQc,GAAYF,SAGlB3xK,KAAKixK,gBAAgBe,EAAUF,OAAOJ,aAAaz9K,YAC1D+L,KAAKixK,gBAAgBU,EAAaG,OAAOJ,aAAaz9K,YAAc09K,EAAaG,QAG7E9xK,KAAKkxK,cAAiBlxK,KAAKoxK,2BAC7B,GAAW9uB,MAAMtiJ,KAAMmrK,GAAasF,eAAgB,CAClDqB,OAAQH,EAAaG,OACrBD,SAAUF,EAAaE,aAaxB,YAAAI,WAAP,SAAkBC,EAA8BL,EAAkBL,QAAA,IAAAA,OAAA,GAChEA,SAAmBxxK,KAAKgxK,iBAAiBa,UAAmB7xK,KAAK+wK,QAAQc,IACxEL,UAAoBxxK,KAAKixK,gBAAgBiB,EAAeR,aAAaz9K,YAEtE,IAAMsrB,EAAQiyJ,EAAYrG,GAAawF,yBAA2BxF,GAAaqF,gBAE3ExwK,KAAKkxK,cAAiBlxK,KAAKoxK,2BAC7B,GAAW9uB,MAAMtiJ,KAAMuf,EAAO,CAC5BuyJ,OAAQI,EACRL,SAAUA,KAQT,YAAAM,gBAAP,WACE,GAAW7vB,MAAMtiJ,KAAMmrK,GAAa0F,oBAM/B,YAAAuB,eAAP,WACE,GAAW9vB,MAAMtiJ,KAAMmrK,GAAa2F,mBAQ/B,YAAAuB,WAAP,sBACE,OAAOzgL,OAAO6C,KAAKuL,KAAK+wK,SAAS7yK,KAAI,SAAAzL,GAAO,SAAKs+K,QAAQt+K,GAAb,WASvC,YAAAg/K,kBAAP,SAAyBF,GACvB,IAAMe,EAAe,EAAIf,EAAYG,cAErC,GADAY,EAAaxhJ,MACe,IAAxBwhJ,EAAap8K,OAAc,CAC7B,IAAMq8K,EAAevyK,KAAKixK,gBAAgBqB,EAAar+K,YACvD,GAAIs+K,GAAgBA,EAAaC,oBAC/B,cACKjB,GAAW,CACdiB,oBAAqBD,EAAaC,sBAIxC,OAAOjB,GAMF,YAAAkB,YAAP,SAAmBC,EAAmCC,GACpD,GAAWrwB,MAAMtiJ,KAAMmrK,GAAayF,yBAA0B,CAC5D8B,wBAAuB,EACvBC,gBAAe,KAWX,YAAAf,cAAR,SAAsBL,EAA2BM,GAC/C,YAD+C,IAAAA,MAAmB5zB,MAC3D,CAAE6zB,OAAQ,EAAF,GAAOP,GAAeM,SAAQ,IAxLhC,EAAAR,UAA2B,IAAIuB,EA0LhD,EA3LA,GCFM,SAAUC,GAAcnB,GAC5B,OAAOA,EAAaxyK,QAAO,SAAC4zK,EAAmBC,GAC7C,OAAOD,EXXkB,IWWUC,EAAY5wK,MAAM,IAAIC,KXXhC,OADH,OYepB,SAAU4wK,GAAcp1K,GAC5B,IAAMiL,EAAW,WACX0oK,EAAwC3zK,EAAQ2zK,YACnD,GACGv4J,SAAUpb,EAAQob,UACfpb,EAAQ2zK,kBAEb9xK,EAEEwzK,EAAgB3C,GAAwB,GAAcpvD,eACtDgyD,EClBF,SAAyB/gL,GAC7B,IAAMgoB,EAAM,mBAIZ,OAHA,qBAAU,WACRA,EAAIjD,QAAU/kB,KAETgoB,EAAIjD,QDaSi8J,CAAYv1K,GAGhC,mBAAsB,W,QAElBiL,EAASqO,SACTq6J,KACY,QAAX,EAAA2B,SAAW,eAAE3B,eAAgB3zK,EAAQ2zK,cAA0B,QAAX,EAAA2B,SAAW,eAAEl6J,YAAapb,EAAQob,WAEvFi6J,EAAc75I,OAAOm4I,EAAa1oK,EAASqO,YAI/C,mBAAsB,WAMpB,OAJIq6J,IACF1oK,EAASqO,QAAU+7J,EAAc3B,SAASC,IAGrC,WAELA,GAAe0B,EAAchB,WAAWV,EAAa1oK,EAASqO,YAI/D,IAEH,IAAIk8J,EAAiC,CACnC5e,qBAAiB/0J,EACjB4zK,cAAU5zK,GAOZ,OAJI8xK,IACF6B,EAWJ,SACEH,EACA1B,EACA+B,GAGA,IAAMvB,EAAiBkB,EAAcxB,kBAAkBF,GAGjD/c,EAAkB5N,GACtB0sB,EDvBE,SAA6B5B,GAEjC,OAAKA,EAAax7K,OAKXq9K,iBAAoBV,GAAcnB,GANrB,gBCuBlB8B,CAAmBzB,EAAeL,eAGhCA,EAAe,EAAIK,EAAeL,cAClCK,EAAeS,sBACjBd,ED9DE,SAAyBA,EAAwB+B,GACrD,IAAMC,EAAsBD,EAAqBv9K,OAC3Cy9K,EAAmB,EAAIF,GAAsB3iJ,MAEnD,OxE0EI,SAA+B7xB,EAAYyE,EAAekwK,GAC9D,IAAMC,EAAO50K,EAAMjL,QAEnB,OADA6/K,EAAKjwK,OAAOF,EAAO,EAAGkwK,GACfC,EwE7EAC,CADiB,EAAIpC,GACcgC,EAAsB,EAAGC,GC0DlDI,CAAerC,EAAcK,EAAeS,sBAE7D,IAAMa,EAAWR,GAAcnB,GAE/B,MAAO,CACLld,gBAAe,EACf6e,SAAQ,GAjCYW,CAAcf,EAAe1B,EAAa3zK,EAAQ42J,kBAGjE4e,EEnDF,IAAM,GAA+E,SAAAx1J,G,MAClF/C,EAAA,EAAAA,SACF,KADY,mBACVw4J,EAAA,EAAAA,SAAU7e,EAAA,EAAAA,gBAElB,OAAO35I,IAAQ,MdXa,mBcYRw4J,EAClB,EdZkC,2BcYRA,EAC1B,sBAAoB7e,EACpB,KCVJ,0E,OACU,EAAAyf,QAAU,cAGV,EAAAC,kCAAoCxhD,IAAgB,SAAC6+C,GAC3D,cACKA,GAAW,CACd4C,SAAS,OAiGH,EAAA9D,kBAAoB,WAC5B,OAAO,EAAK4D,QAAQ/8J,QAAU,EAAK+8J,QAAQ/8J,aAAUzX,GAG7C,EAAAowK,aAAe,SAAChtB,GAClB,cAAE/jI,EAAA,EAAAA,KAAMs1J,EAAA,EAAAA,YACVA,GACFA,EAAYt1J,EAAM+jI,IAIZ,EAAAwxB,uBAAyB,SAACC,EAA0BxqK,GAE5D,OAAOwqK,EACL,wBAAMn8K,GAAI,EAAKo8K,mBAAoBzqK,UAAWA,GAC3CwqK,GAED,M,EAER,OA3H0C,OAWjC,YAAAxsK,OAAP,sBACQ,aACJgX,EAAA,EAAAA,KACA2hC,EAAA,EAAAA,WACA/8C,EAAA,EAAAA,MACA8wK,EAAA,EAAAA,sBACAC,EAAA,EAAAA,eACAC,EAAA,EAAAA,cACAnJ,EAAA,EAAAA,SACA,IAAAoJ,qBAAA,kBACAC,EAAA,EAAAA,oBACAR,EAAA,EAAAA,YACApI,EAAA,EAAAA,YACAG,EAAA,EAAAA,eACAC,EAAA,EAAAA,YAGEyI,EAAY/1J,EAAKg2J,IACjBh2J,EAAK9oB,QAAwC,WAA9B8oB,EAAK9oB,OAAO+T,gBAC7B8qK,EAAYA,GAAwB,gCAGtC,IAAME,EAAiBnd,GAAW94I,GAC5B46H,EAAclB,GAAwD15H,EAAMo5H,IAC5El/H,EAAW8+I,GAAeh5I,GACxBk2J,EAAAl2J,EAAAk2J,UAAWV,EAAA,EAAAA,gBAEb/C,EAAA,EAAAA,YAWN,OAVIA,GAAewD,IACjBxD,EAAcvxK,KAAKk0K,kCAAkC3C,IAKnD+C,IACFt0K,KAAKu0K,mBAAqBt2B,MAI1B,2BACE,gBAAC,GAAU,CACTszB,YAAazyJ,EAAKyyJ,YAClB/c,gBAAiB9a,EAAY,oBAC7B1gI,SAAUA,IAET,SAACi8J,GAAuC,OACvC,yBACMv7B,EACAu7B,EAAgB,CACpB96J,IAAK,EAAK85J,QACV1kI,KAAMzwB,EAAKywB,KACXv5C,OAAQ8oB,EAAK9oB,OACb8+K,IAAKD,EACL/qK,UAAW22C,EAAWltD,KACtBuhC,KAAK,WAAU,gBACAigJ,QAAkBt1K,EAAS,gBAC3Bs1K,EAAiBj2J,EAAKrsB,MAAQmiL,OAAsBn1K,EAAS,gBAC7D+0K,EAAwB,EAAC,eAC1BC,EAAc,gBACb3c,GAAeh5I,GAAK,mBACjB8nI,GAChB0tB,EAAkB,EAAKC,wBAAqB90K,EAC5Cw1K,EAAmBA,EAAiB,yBAAsBx1K,GAG5DkZ,MAAOmG,EAAKnG,MACZY,QAAS,EAAKs2J,aACdqF,aAAc,EAAKvF,kBACnBwF,aAAc,EAAKpF,kBACnBqF,YAAa,EAAKjF,iBAClBv4J,UAAWm9J,EAAiB,EAAK9E,oBAAiBxwK,IAElD,gBAAC41K,EAAgB,GACft3B,aAAcj/H,EAAKi/H,aACnBj/H,KAAMA,EACN2hC,WAAYA,EACZ/8C,MAAOA,EACPgoK,iBAAkBgJ,GAAiBN,EAAcA,OAAc30K,EAC/D8rK,SAAUA,EACVS,YAAaA,EACbG,eAAgBA,EAChBC,YAAaA,EACbH,iBAAkB,EAAKoE,mBACnB2E,IAEL,EAAKX,uBAAuBC,EAAiB7zH,EAxCT,wBAmEnD,EA3HA,CAA0C,ICA1C,0E,OACU,EAAA60H,KAAO,cAGP,EAAApB,kCAAoCxhD,IAAgB,SAAC6+C,GAC3D,cACKA,GAAW,CACd4C,SAAS,OAgHH,EAAAE,uBAAyB,SAACC,EAA0BxqK,GAE5D,OAAOwqK,EACL,wBAAMn8K,GAAI,EAAKo8K,mBAAoBzqK,UAAWA,GAC3CwqK,GAED,MAGI,EAAAjE,kBAAoB,WAC5B,OAAO,EAAKiF,KAAKp+J,QAAU,EAAKo+J,KAAKp+J,aAAUzX,G,EAEnD,OAnI0C,OAWjC,YAAAqI,OAAP,sBACQ,aACJgX,EAAA,EAAAA,KACA2hC,EAAA,EAAAA,WACA/8C,EAAA,EAAAA,MACA8wK,EAAA,EAAAA,sBACAC,EAAA,EAAAA,eACAC,EAAA,EAAAA,cACAnJ,EAAA,EAAAA,SACA,IAAAoJ,qBAAA,kBACAC,EAAA,EAAAA,oBACAW,EAAA,EAAAA,gBACAnB,EAAA,EAAAA,YACApI,EAAA,EAAAA,YACAG,EAAA,EAAAA,eACAC,EAAA,EAAAA,YAGIzU,EAAwCF,GAAa34I,GACrD44I,EAAkC,OAAdC,EACpB6d,EAAczd,GAAoBj5I,GAClCi2J,EAAiBnd,GAAW94I,GAC1Bk2J,EAAAl2J,EAAAk2J,UAAW/pB,EAAA,EAAAA,UAAWqpB,EAAA,EAAAA,gBAExBmB,EAAyBj9B,GAC7B15H,EACAq5H,WAGKs9B,EAAuBz8J,SAE9B,IAAM08J,EAAW52J,EAAKgW,MAAQ0gJ,EAI1BlB,IACFt0K,KAAKu0K,mBAAqBt2B,MAE5B,IAAM03B,EAAqBrB,EAAkBt0K,KAAKu0K,wBAAqB90K,EAEjEm2K,EAAuB,CAC3B9rK,UAAW22C,EAAWltD,KACtBgmB,QAASvZ,KAAK6vK,aACdj4J,UAAWm9J,EAAiB/0K,KAAKiwK,oBAAiBxwK,EAClDy1K,aAAcl1K,KAAK2vK,kBACnBwF,aAAcn1K,KAAK+vK,kBACnBz4G,YAAa,SAACurF,GACZ,OAAA0yB,EAAkBA,EAAgBz2J,EAAM+jI,QAAMpjJ,GAChD21K,YAAap1K,KAAKmwK,iBAClB5gI,KAAMzwB,EAAKywB,KACXnwB,MAAON,EAAKM,MACZ,aAAc6rI,EACd,mBAAoB0qB,EACpB,gBAAiBZ,QAAkBt1K,EACnC,gBAAiBs1K,EAAiBj2J,EAAKrsB,MAAQmiL,OAAsBn1K,EACrE,gBAAiB+0K,EAAwB,EACzC,eAAgBC,EAChB,gBAAiB3c,GAAeh5I,GAChC,eACgB,qBAAb42J,GAAgD,kBAAbA,IAAiChe,OAAyBj4J,IAAZk4J,EACpF,gBAA8B,aAAb+d,GAA2Bhe,IAAaC,OAAYl4J,EACrEq1B,KAAM4gJ,EAEN/8J,MAAOmG,EAAKnG,OAGR44J,EAAA,EAAAA,YAKN,OAJIA,GAAewD,IACjBxD,EAAcvxK,KAAKk0K,kCAAkC3C,IAIrD,gBAAC,GAAU,CACTA,YAAaA,EACb/c,gBAAiBihB,EAAuB,oBACxCz8J,SAAU8+I,GAAeh5I,KAExB,SAACm2J,GAAuC,OACvC,4BACE96J,IAAK,EAAKm7J,MACNG,EACAG,EACAX,EAAgB,oBACFruB,GAChBgvB,EAAqB,oBACrBX,EAAmBA,EAAiB,yBAAsBx1K,KAG5D,gBAAC41K,EAAgB,GACft3B,aAAcj/H,EAAKi/H,aACnBj/H,KAAMA,EACN2hC,WAAYA,EACZ/8C,MAAOA,EACPgoK,iBAAkBgJ,GAAiBN,EAAcA,OAAc30K,EAC/D8rK,SAAUA,EACVS,YAAaA,EACbG,eAAgBA,EAChBC,YAAaA,EACbH,iBAAkB,EAAKoE,mBACnB2E,IAEL,EAAKX,uBAAuBC,EAAiB7zH,EAxBT,uBA2CjD,EAnIA,CAA0C,ICLpC,GAAgBk8F,KAET,GAAsB,SAAC/+H,GAE1B,IAAA1D,EAAA,EAAAA,OAAQy0B,EAAA,EAAAA,MAAO,IAAAknI,cAAwC/rK,EAAA,EAAAA,UACzD22C,EAAa,GAAcvmC,EAAQ,CAAEy0B,MAAOA,EAAOknI,cAAeC,EAAyBhsK,UAAS,IAC1G,OACE,wBAAMA,UAAW22C,EAAW+R,SAC1B,wBAAM1oD,UAAW22C,EAAWysH,YAIlC,GAAoB90K,YAAc,sBCT3B,IAAM29K,GAAkEn6B,GAI7E,ICP4F,SAC5Fh+H,GAGQ,IAAA+wB,EAAA,EAAAA,MAAOknI,EAAA,EAAAA,cAAe/rK,EAAA,EAAAA,UAE9B,IAAK6kC,EACH,MAAM,IAAI/yC,MAAM,+BAGlB,GAAIi6K,EAAe,CACjB,IAAMG,EAAQH,EAAclnI,GAC5B,MAAO,CACL6jB,QAAS,CAACwjH,EAAMxjH,SAChB06G,QAAS,CAAC8I,EAAM9I,UAIpB,MAAO,CACL16G,QAAS,CACP,CACEn2C,QAAS,cACTZ,OAAQ,OACRwxJ,WAAY,UAEdnjK,GAEFojK,QAAS,CACP,CACExxJ,MAAO,EACPD,OAAQ,OACRsvB,gBAAiB4D,EAAM40F,QAAQhN,6BDxBL92H,EAAW,CAC3Cu8I,MAAO,oBEcT,eAgBE,WAAYp+H,GAAZ,MACE,YAAMA,IAAM,K,OARN,EAAAs2J,kCAAoCxhD,IAAgB,SAAC6+C,GAC3D,cACKA,GAAW,CACd4C,SAAS,OA0FH,EAAAE,uBAAyB,SAACC,EAA0BxqK,GAE5D,OAAOwqK,EACL,wBAAMn8K,GAAI,EAAKo8K,mBAAoBzqK,UAAWA,GAC3CwqK,GAED,MAGI,EAAArE,eAAiB,SAACptB,GACpB,cAAE/jI,EAAA,EAAAA,KAAMoxJ,EAAA,EAAAA,cACVrtB,EAAG//H,QAAUsyH,IACf,EAAK6gC,kBAAkBpzB,GACvBA,EAAGrjI,iBACHqjI,EAAG1/H,mBACM+sJ,GACTA,EAAcpxJ,EAAM+jI,IAId,EAAAwtB,kBAAoB,WAC5B,OAAO,EAAK6F,cAiHN,EAAAC,yBAA2B,SAACtzB,GAC5B,cAAE/jI,EAAA,EAAAA,KAAM8wJ,EAAA,EAAAA,iBACVA,GACFA,EAAiB,EAAD,KAAM9wJ,GAAI,CAAE+4I,kBAAcp4J,EAAWqe,WAAOre,IAAaojJ,EAAI,EAAKqzB,eAI9E,EAAAE,sBAAwB,SAACvzB,GACzB,cAAE/jI,EAAA,EAAAA,KAAM8wJ,EAAA,EAAAA,iBACVA,GACFA,EAAiB9wJ,EAAM+jI,EAAI,EAAKqzB,eAI5B,EAAAG,wBAA0B,SAACxzB,GAC3B,cAAE/jI,EAAA,EAAAA,KAAMsxJ,EAAA,EAAAA,gBACVA,GACFA,EAAgB,EAAD,KAAMtxJ,GAAI,CAAE+4I,kBAAcp4J,EAAWqe,WAAOre,IAAaojJ,EAAI,EAAKqzB,eAI7E,EAAAI,qBAAuB,SAACzzB,GACxB,cAAE/jI,EAAA,EAAAA,KAAMsxJ,EAAA,EAAAA,gBACVA,GACFA,EAAgBtxJ,EAAM+jI,EAAI,EAAKqzB,eAI3B,EAAAK,iBAAmB,SAAC1zB,GACpB,cAAE/jI,EAAA,EAAAA,KAAMgxJ,EAAA,EAAAA,gBACVA,GACFA,EAAgBhxJ,EAAM+jI,EAAK,EAAKqzB,aAAe,EAAKA,aAAerzB,EAAG9lF,gBAIlE,EAAAk5G,kBAAoB,SAACpzB,GACrB,cAAE/jI,EAAA,EAAAA,KAAM03J,EAAA,EAAAA,iBAAkBpC,EAAA,EAAAA,YAEhC,IAAIt1J,EAAK9F,WAAY8F,EAAKq0F,WAI1B,OAAI,EAAKsjE,kBAAoBrC,EACpBA,EAAYt1J,EAAM+jI,QAGvB2zB,GACFA,EAAiB13J,EAAM+jI,KAInB,EAAA6zB,cAAgB,SAAC7zB,GACnB,EAAKqzB,gBAAkB,kBAAmB,EAAKA,eACjD,EAAKS,4BAA4B9zB,IAI7B,EAAA8D,eAAiB,SAAC9D,GACD,UAAnBA,EAAGhrD,cACL,EAAK8+E,4BAA4B9zB,GACjCA,EAAGrjI,iBACHqjI,EAAG+zB,6BAtRL,EAAK9W,OAAS,IAAI,GAAM,GACxB,EAAK3tI,QAAU,IAAI,GAAW,G,EA2SlC,OA/T+C,OAuBtC,YAAA4xE,kBAAP,WACM/jG,KAAKk2K,cAAgB,kBAAmBl2K,KAAKk2K,cAC/Cl2K,KAAKmyB,QAAQF,GAAGjyB,KAAKk2K,aAAc,cAAel2K,KAAK2mJ,gBAAgB,IAIpE,YAAAr6C,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,UACZ9/I,KAAKmyB,QAAQ2tH,WAGR,YAAAh4I,OAAP,sBACQ,aACJgX,EAAA,EAAAA,KACA2hC,EAAA,EAAAA,WACA/8C,EAAA,EAAAA,MACA8wK,EAAA,EAAAA,sBACAC,EAAA,EAAAA,eACAC,EAAA,EAAAA,cACAnJ,EAAA,EAAAA,SACAyE,EAAA,EAAAA,iBACA4E,EAAA,EAAAA,oBAGIG,EAAiBnd,GAAW94I,GAE5ByyJ,EAAA,EAAAA,YACFA,IACFA,EAAcvxK,KAAKk0K,kCAAkC3C,IAK/C,IAAA+C,EAAA,EAAAA,gBAKR,OAJIA,IACFt0K,KAAKu0K,mBAAqBt2B,MAI1B,gBAAC,GAAU,CAACszB,YAAaA,EAAav4J,SAAU8+I,GAAeh5I,KAC5D,SAACm2J,GAAuC,OACvC,yCACmBA,EAAiB,mBAClC96J,IAAK,SAAC08J,GAAgC,OAAC,EAAKX,aAAN,GACtCphJ,KAAMijI,GAAoBj5I,GAAK,aACnBA,EAAKmsI,UACjBnhJ,UAAW22C,EAAW+uH,eAAc,gBACrB1X,GAAeh5I,GAAK,gBACpBi2J,EAAiBj2J,EAAKrsB,MAAQmiL,OAAsBn1K,EAAS,iBAC7D,EAAI,mBACDmnJ,GAChB0tB,EAAkB,EAAKC,wBAAqB90K,EAC5Cw1K,EAAiB,qBAClB,eACan2J,EAAK64I,WAAa74I,EAAKmiC,QAAO,gBAC7BuzH,EAAwB,EAAC,eAC1BC,EACdS,aAAc,EAAKiB,yBACnBhB,aACEnF,EAAmBA,EAAiBt9K,KAAK,EAAI,OAAOosB,GAAI,CAAE+4I,aAAc,KAAM/5I,MAAO,aAAUre,EAEjG21K,YAAa,EAAKiB,wBAClBz+J,UAAW,EAAKq4J,eAChB12J,QAAS,EAAK08J,kBACda,aAAc,EAAKJ,cACnBvhJ,SAAU,EAAC,qBACQ,EAAI,uBACDrW,EAAK,yBAE1B,EAAKi4J,0BAA0Bj4J,EAAM2hC,EAAY/8C,EAAOgxK,EAAgBnJ,GACxE,EAAKyL,oBAAoBl4J,GACzB,EAAKm4J,uBAAuBn4J,EAAM2hC,EAAY/8C,EAAOuxK,GACrD,EAAKZ,uBAAuBC,EAAiB7zH,EAhCT,uBA+DvC,YAAAs2H,0BAAR,SACEj4J,EAEA2hC,EACA/8C,EACAgxK,EACAnJ,GAEM,iBAAE,IAAAoJ,qBAAA,kBAA6DP,EAAA,EAAAA,YAE/DY,EAAiC,CACrCviL,IAAKqsB,EAAKrsB,IACVumB,SAAU8+I,GAAeh5I,IAASA,EAAKuwJ,gBAEvC59K,KAAMqtB,EAAKrtB,KACX0Z,KAAM2T,EAAK3T,MAAQ2T,EAAKrtB,KACxBo6K,cAAe/sJ,EAAK+sJ,cAEpB/hK,UAAW22C,EAAW6uH,aACtB5X,SAAU54I,EAAK44I,SACfC,UAAW74I,EAAK64I,UAChB12G,QAASniC,EAAKmiC,QACduqH,UAAW1sJ,EAAK0sJ,UAChBC,aAAc3sJ,EAAK2sJ,aACnB79J,KAAMkR,EAAKlR,KACX,qBAAqB,GAGf,EAAAkR,EAAAk2J,UAER,OACE,8BAAYx8B,GAAew8B,EAAW78B,KACpC,gBAACk9B,EAAgB,wBACI,EACnBv2J,KAAMk2J,EACNv0H,WAAYA,EACZ/8C,MAAOA,EACPgoK,iBAAkBgJ,GAAiBN,EAAcA,OAAc30K,EAC/D8rK,SAAUA,GACN2L,MAMJ,YAAAF,oBAAR,SAA4Bl4J,GAC1B,IAAMq4J,EACJr4J,EAAK8vJ,yCAA2CA,GAClD,OAAO,gBAACmH,GAAe,CAACF,cAAesB,KAGjC,YAAAF,uBAAR,SACEn4J,EACA2hC,EACA/8C,EACAuxK,GAEM,iBACJ,IAAAN,qBAAA,kBACA3E,EAAA,EAAAA,iBACAuF,EAAA,EAAAA,gBACAvJ,EAAA,EAAAA,YACAG,EAAA,EAAAA,eACAC,EAAA,EAAAA,YAGI4I,EAAiC,CACrCz7J,QAASvZ,KAAKu2K,iBACdv9J,SAAU8+I,GAAeh5I,GACzBhV,UAAW22C,EAAWquH,UACtBjX,aAAc/4I,EAAK+4I,aACnBiU,iBAAkBhtJ,EAAKgtJ,iBACvB3pK,OAAO,EACP1P,IAAKqsB,EAAKrsB,KAGN2kL,EAAc,EAAH,KACZ5+B,GAA8Dw8B,EAAW78B,KACzE,CACD+8B,aAAcl1K,KAAKo2K,sBACnBjB,aAAcnF,EAAmBA,EAAiBt9K,KAAKsN,KAAM8e,QAAQrf,EACrE63D,YAAa,SAACurF,GACZ,OAAA0yB,EAAkBA,EAAgBz2J,EAAM+jI,QAAMpjJ,GAChD21K,YAAap1K,KAAKs2K,qBAClB,qBAAqB,EACrB,0BAA2BrB,EAAiB,2BAC5C,eAAe,IAIX,EAAAn2J,EAAAk2J,UAER,OACE,8BAAYoC,GACV,gBAAC/B,EAAgB,GACft3B,aAAcj/H,EAAKi/H,aACnBj/H,KAAMk2J,EACNv0H,WAAYA,EACZ/8C,MAAOA,EACP6nK,UAAU,EACVS,YAAaA,EACbG,eAAgBA,EAChBC,YAAaA,EACbH,iBAAkBjsK,KAAKqwK,mBACnB6G,MAuEJ,YAAAP,4BAAR,SAAoC9zB,GAApC,WACUw0B,EAAA,WAAAA,MAEJA,GACFA,EAAMx0B,GAIJ7iJ,KAAKs3K,sBACPt3K,KAAK8/J,OAAO3sI,aAAanzB,KAAKs3K,qBAC9Bt3K,KAAKs3K,yBAAsB73K,GAE7BO,KAAKy2K,kBAAmB,EACxBz2K,KAAKs3K,oBAAsBt3K,KAAK8/J,OAAOpuJ,YAAW,WAChD,EAAK+kK,kBAAmB,EACxB,EAAKa,yBAAsB73K,IA9TV,MAiUvB,EA/TA,CAA+C,IC8BzC,GAAgBk9I,KAChB46B,GAAkC56B,KAgBlC,SAAU66B,GACd14J,EACAlhB,G,MAIM5H,EAAgB,QAAV,EAAG4H,SAAO,eAAE5H,OAGlB8nB,EAAQgB,EAAK+4I,aAAe/4I,EAAK+4I,aAAa/5I,MAAQgB,EAAKhB,MAEjE,GAAIA,EAAO,CAGT,IAFA,IAAM25J,EAA8B,GAEd,MAAA35J,EAAA,eAAO,CAAxB,IAAMiD,EAAO,KAChB,GAAIA,EAAQ22J,8BAA+B,CAEjC,IAAAn+J,EAAA,EAAAA,QAAS,mBAEjBk+J,EAAc1jL,KAAI,OACb4jL,GAAW,CACdp+J,QAASq+J,GAA6Br+J,EAASvjB,WAGjDyhL,EAAc1jL,KAAKgtB,GAIvB,OAAO02J,GAsBX,IAIMI,GAA6BnlD,IACjC,W,IACE,sDAEA,OAAO,SAAC2T,GACN,OAAAE,GAAwB,gBAACF,EAAYopC,IAAkBv1J,QAK7D,eAgCE,WAAY0D,GAAZ,MACE,YAAMA,IAAM,K,OATN,EAAAk6J,UAAW,EA+BZ,EAAArjJ,QAAU,SAACouH,EAAUwpB,GAClB,IAAAzM,EAAA,QAAAA,UAEJA,GACFA,EAAU/c,EAAIwpB,IA8RV,EAAA0L,+BAAiC,SAACn6K,GAKpC,EAAKggB,MAAMwiJ,eACb,EAAKxiJ,MAAMwiJ,eAAexiK,GAEtBA,GAAWA,EAAQ0iK,eAAiB,EAAK0X,wBAIvC,EAAKA,uBAAuB53J,OAC9B,EAAK43J,uBAAuB53J,SA2B5B,EAAA63J,kBAAoB,SAC1BC,EACAhsB,GAEA,IAAIisB,EAAkB,EACdr6J,EAAA,EAAAA,MAAO22J,EAAA,EAAAA,eAAgBC,EAAA,EAAAA,cAAenJ,EAAA,EAAAA,SAE9C,OACE,sBAAIzhK,UAAW,EAAKu6J,YAAYj0J,KAAMwH,UAAW,EAAKu3B,WAAYz1B,QAAS,EAAKqM,SAAU+O,KAAM,gBAC7FhX,EAAM5f,KAAI,SAAC4gB,EAAMpb,GAChB,IAAM00K,EAAW,EAAKC,gBAAgBv5J,EAAMpb,EAAOy0K,EAAiB1D,EAAgBC,EAAenJ,GACnG,GAAIzsJ,EAAKw5J,WAAaxsB,GAAuBysB,SAAWz5J,EAAKw5J,WAAaxsB,GAAuBzvJ,OAAQ,CACvG,IAAMm8K,EAAgB15J,EAAK25J,yBAA2B35J,EAAK25J,yBAA2B,EACtFN,GAAmBK,EAErB,OAAOJ,OAUP,EAAAC,gBAAkB,SACxBv5J,EACApb,EACA8wK,EACAC,EACAC,EACAnJ,G,MAgBImN,EAdEC,EAAmC,GACnCnN,EAAY1sJ,EAAK0sJ,WAAa,CAAErmC,SAAU,QAE9CyzC,EAAA,EAAAA,kBACA5D,EAAAl2J,EAAAk2J,UAEI96J,EAAS86J,EAAYA,EAAU96J,YAASza,EAIxC0vK,EAAmBrwJ,EAAKw5J,WAAaxsB,GAAuBysB,QAAUz5J,EAAKhV,eAAYrK,EACvFo5K,EAAuB/5J,EAAKgtJ,iBAAmBhtJ,EAAKgtJ,iBAAiBhiK,UAAY,GAOvF,GAAI8uK,EACFF,EAAiBE,EACf,EAAKh7J,MAAM+wB,MACXmpH,GAAeh5I,GACf,EAAK/Z,MAAM6vK,sBAAwB91J,EAAKrsB,MACtCglK,GAAa34I,KACbA,EAAKywB,KACgB,SAAvBi8H,EAAUrmC,SACVrmH,EAAKhV,UACLqlK,EACA3D,EAAU1hK,UACV+uK,EACA/5J,EAAKuwJ,qBAEF,CACL,IAAMyJ,EAAgD,CACpDnqI,MAAO,EAAK/wB,MAAM+wB,MAClB31B,SAAU8+I,GAAeh5I,GACzB65B,SAAU,EAAK5zC,MAAM6vK,sBAAwB91J,EAAKrsB,IAClDwuD,UAAWw2G,GAAa34I,GACxBkwJ,eAAgBlwJ,EAAKywB,KACrB0/H,UAAkC,SAAvBzD,EAAUrmC,SACrB+pC,cAAepwJ,EAAKhV,UACpBqlK,iBAAgB,EAChBxkB,cAAe6gB,EAAU1hK,UACzBslK,iBAAkByJ,EAClBxJ,gBAAiBvwJ,EAAKuwJ,iBAKxBqJ,EAAiBnB,GACfM,GAA8D,QAApC,EAAC,EAAKxT,YAAYz+B,0BAAkB,eAAEwyC,SAAUl+J,GAC1E4+J,GAQJ,OAHkB,MAAdh6J,EAAK3T,MAA8B,MAAd2T,EAAKrtB,OAC5BqtB,EAAKw5J,SAAWxsB,GAAuBysB,SAEjCz5J,EAAKw5J,UACX,KAAKxsB,GAAuBysB,QAC1BI,EAAc5kL,KAAK,EAAKglL,iBAAiBr1K,EAAOg1K,IAChD,MACF,KAAK5sB,GAAuBzvJ,OAC1Bs8K,EAAc5kL,KAAK,EAAKglL,iBAAiBr1K,EAAOg1K,IAChD,IAAMM,EAAa,EAAKC,sBAAsBn6J,EAAM45J,EAAgBh1K,EAAOgxK,EAAenJ,GAC1FoN,EAAc5kL,KAAK,EAAKmlL,gBAAgBF,EAAYl6J,EAAKrsB,KAAOiR,EAAOg1K,EAAgB55J,EAAKM,QAC5F,MACF,KAAK0sI,GAAuBqtB,QAC1BR,EAAc5kL,KAAK,EAAKqlL,mBAAmBt6J,EAAM45J,EAAgBh1K,EAAOgxK,EAAenJ,IACvF,MACF,QACE,IAAM6M,EAAW,EAAKiB,kBACpBv6J,EACA45J,EACAh1K,EACA8wK,EACAC,EACAC,EACAnJ,GAEFoN,EAAc5kL,KAAK,EAAKmlL,gBAAgBd,EAAUt5J,EAAKrsB,KAAOiR,EAAOg1K,EAAgB55J,EAAKM,QAM9F,OAAO,gBAAC,WAAc,CAAC3sB,IAAKqsB,EAAKrsB,KAAMkmL,IAGjC,EAAAW,yBAA2B,SAACx6J,GAC1B,IAAApb,EAAA,EAAAA,MAAO8wK,EAAA,EAAAA,sBAAuBC,EAAA,EAAAA,eAAgBC,EAAA,EAAAA,cAAenJ,EAAA,EAAAA,SACrE,OAAO,EAAK8M,gBAAgBv5J,EAAMpb,EAAO8wK,EAAuBC,EAAgBC,EAAenJ,IAgTzF,EAAAp8H,WAAa,SAAC0zG,GAGpB,EAAK02B,yBAA2B,EAAKC,aAAa32B,GAGlD,IAAM42B,EAAkB52B,EAAG//H,QAAUsyH,KAAoBmiB,MAAWC,MAEpE,OAAO,EAAKkiB,YAAY72B,EAAI,EAAK82B,qBAAsBF,IAGjD,EAAAE,qBAAuB,SAAC92B,GAC9B,OACEA,EAAG//H,QAAUsyH,IACb,EAAKwkC,oBAAoB/2B,IACxBA,EAAG//H,QAAUsyH,KAAgByN,EAAGx8F,QAAUw8F,EAAG/lF,UAI1C,EAAA+8G,oBAAsB,SAACh3B,GACzB,EAAKjlI,MAAMk8J,0BACb,EAAKC,gCAAiC,IAIlC,EAAAh0J,SAAW,SAAC88H,GAClB,OAAO,EAAK62B,YAAY72B,EAAI,EAAKm3B,oBAAoB,IAa/C,EAAAA,mBAAqB,SAACn3B,GAC5B,IAAMo3B,EAA2B,EAAKV,0BAA4B,EAAKC,aAAa32B,GAEpF,OADA,EAAK02B,0BAA2B,IACvBU,KAA8BziB,MAAWD,OAmB5C,EAAAmiB,YAAc,SACpB72B,EACAq3B,EACAT,GAEA,IAAI12J,GAAU,EAUd,OARIm3J,EAAgBr3B,KAClB,EAAKs3B,0BAA2B,EAChC,EAAK1lJ,QAAQouH,EAAI42B,GACjB52B,EAAGrjI,iBACHqjI,EAAG1/H,kBACHJ,GAAU,GAGLA,GAMD,EAAA62J,oBAAsB,SAAC/2B,GAC7B,IAAMu3B,EAAkB,GAAO,EAAKx8J,MAAM+wB,OAASymG,GAAiBA,GAEpE,QAAIyN,EAAG//H,QAAUs3J,IAAoB,EAAKx8J,MAAMy8J,aAK9C,EAAKC,wBAAwBtjJ,YAAcq1H,GAAmB2F,YAC3D,EAAKsoB,wBAAwBhjB,iBAC7B/I,GAAgB1L,EAAG7sJ,OAAuB,6BAIzC,EAAAukL,eAAiB,SAAC13B,GAKxB,IAFgB,EAAK1zG,WAAW0zG,IAEhB,EAAK23B,MAArB,CAMA,IAAMC,KAAiB53B,EAAGx8F,SAAUw8F,EAAG/lF,SACjC49G,EAAO73B,EAAG//H,QAAUsyH,GACpBulC,EAAS93B,EAAG//H,QAAUsyH,GAC5B,IAAKqlC,IAAgBC,GAAQC,GAAS,CACpC,IAAMxmB,EAAiBumB,EACnB5tB,GAAiB,EAAK0tB,MAAO,EAAKA,MAAM3wH,WAA0B,GAClE6iG,GAAkB,EAAK8tB,MAAO,EAAKA,MAAM5mJ,YAA2B,GAEpEugI,IACFA,EAAe/zI,QACfyiI,EAAGrjI,iBACHqjI,EAAG1/H,sBASD,EAAAy3J,UAAY,WACb,EAAKC,oBAA+Cp7K,IAA9B,EAAKq7K,qBAI9B,EAAKD,eAAgB,GAHrB,EAAK/a,OAAO3sI,aAAa,EAAK2nJ,sBAC9B,EAAKA,0BAAuBr7K,GAK9B,EAAKq7K,qBAAuB,EAAKhb,OAAOpuJ,YAAW,WACjD,EAAKmpK,eAAgB,IAp8BC,MAw8BlB,EAAAE,sBAAwB,SAACj8J,EAAW+jI,EAAmC7sJ,GACzE,EAAKglL,2BAIT,EAAKC,yBAAyBn8J,EAAM+jI,EAAI7sJ,IAGlC,EAAAklL,qBAAuB,SAACp8J,EAAW+jI,EAAmC7sJ,GAC5E,IAAMoqJ,EAAgByC,EAAG9lF,cAGrB,EAAKg9G,iCACP,EAAKoB,eAAgB,EAMpB,EAAKN,oBACiBp7K,IAAvB,EAAK27K,eACLh7B,IAAmB,EAAKoiB,cAAcj4J,SAAS8b,eAKjD,EAAK40J,yBAAyBn8J,EAAM+jI,EAAI7sJ,KAOlC,EAAAqlL,kBAAoB,SAACv8J,EAAW+jI,GACtC,IAAI,EAAKm4B,iCAIkBv7K,IAAvB,EAAK27K,gBACP,EAAKtb,OAAO3sI,aAAa,EAAKioJ,eAC9B,EAAKA,mBAAgB37K,QAGgBA,IAAnC,EAAKsF,MAAM6vK,qBASf,GAAK,EAAK4F,MAAcc,UACtB,IACG,EAAKd,MAAcc,YACpB,MAAOr7K,UAIT,EAAKu6K,MAAMp6J,SAgDP,EAAAm7J,iBAAmB,SAACz8J,EAA2B+jI,GACjD/jI,EAAKw4C,aACPx4C,EAAKw4C,YAAYx4C,EAAM+jI,IAInB,EAAAgtB,aAAe,SACrB/wJ,EACA+jI,GAEA,EAAK24B,iBAAiB18J,EAAM+jI,EAAIA,EAAG9lF,gBAG7B,EAAAy+G,iBAAmB,SACzB18J,EACA+jI,EACA7sJ,GAEQ,IAEF8nB,EAAQ05J,GAAgB14J,EAAM,CAAE9oB,OAF9B,QAAAA,SAMR,EAAKylL,sBAEA7jB,GAAW94I,IAAWhB,GAAUA,EAAM5nB,OAIrC4oB,EAAKrsB,MAAQ,EAAKsS,MAAM6vK,sBAE1B,EAAK95F,SAAS,CAOZ4gG,qBAAgD,IAA1B74B,EAAGr6D,YAAY1U,QAAiE,UAAhD+uE,EAAGr6D,YAA6BqP,cAExF,EAAK8jF,qBAAqB78J,EAAM9oB,IAblC,EAAKigL,kBAAkBn3J,EAAM+jI,GAiB/BA,EAAG1/H,kBACH0/H,EAAGrjI,kBAGG,EAAAo8J,eAAiB,SAAC98J,EAA2B+jI,GACnD,EAAKozB,kBAAkBn3J,EAAM+jI,GAC7BA,EAAG1/H,mBAGG,EAAA8yJ,kBAAoB,SAC1Bn3J,EACA+jI,GAEQ,cAAA7sJ,OAER,IAAI8oB,EAAK9F,WAAY8F,EAAKq0F,WAA1B,CAIIr0F,EAAK44J,+BACPmE,GAAeh5B,EAAIi5B,GAGrB,IAAIrnJ,GAAU,EACV3V,EAAKvF,QACPkb,IAAY3V,EAAKvF,QAAQspI,EAAI/jI,GACpB,EAAKlB,MAAMw2J,cACpB3/I,IAAY,EAAK7W,MAAMw2J,YAAYvxB,EAAI/jI,KAGrC2V,GAAYouH,EAAGzwD,mBACjB,EAAK39D,QAAQouH,GAAI,GAOjB,EAAKs3B,0BAA2B,KAI5B,EAAAlK,eAAiB,SAACnxJ,EAAW+jI,GACnC,IAAMk5B,EAAU,GAAO,EAAKn+J,MAAM+wB,OAASymG,GAAgBA,GAGxDt2H,EAAK9F,UACL6pI,EAAG//H,QAAUi5J,GAAWl5B,EAAG//H,QAAUsyH,KAAmByN,EAAG//H,QAAUsyH,KAAkByN,EAAGx8F,SAAUw8F,EAAG/lF,WAExG,EAAKge,SAAS,CACZ4gG,sBAAsB,IAExB,EAAKC,qBAAqB78J,EAAM+jI,EAAG9lF,eACnC8lF,EAAGrjI,mBAMC,EAAAi8J,oBAAsB,gBACDh8K,IAAvB,EAAK27K,gBACP,EAAKtb,OAAO3sI,aAAa,EAAKioJ,eAC9B,EAAKA,mBAAgB37K,IAIjB,EAAAk8K,qBAAuB,SAAC78J,EAA2B9oB,GACrD,EAAK+O,MAAM6vK,sBAAwB91J,EAAKrsB,MACtC,EAAKsS,MAAM6vK,qBACb,EAAKoH,oBAIPhmL,EAAOoqB,QACP,EAAK06D,SAAS,CACZ85F,oBAAqB91J,EAAKrsB,IAC1By5K,cAAel2K,MAqEb,EAAAgmL,kBAAoB,SAACn5B,EAAUwpB,GACjCA,EACF,EAAK53I,QAAQouH,EAAIwpB,GACR,EAAKyL,UACd,EAAKh9F,SAAS,CACZmhG,qBAAsB,EAAKl3K,MAAM6vK,oBACjCA,yBAAqBn1K,EACrBysK,mBAAezsK,KAsCb,EAAAy8K,wBAA0B,SAACr5B,GACjC,EAAK44B,uBA9uCL,EAAK3b,OAAS,IAAI,GAAM,GACxB,EAAK3tI,QAAU,IAAI,GAAW,GAC9BurH,GAAuB,GAMvB,EAAK34I,MAAQ,CACXo3K,yBAAqB18K,EACrB28K,UAAWn+B,GAAM,mBAGnB,EAAKiE,IAAMtkI,EAAMzlB,IAAM8lJ,GAAM,kBAC7B,EAAKk8B,0BAA2B,EAChC,EAAKU,eAAgB,EACrB,EAAKd,gCAAkC,EAAKn8J,MAAMk8J,wBAClD,EAAKqB,eAAgB,E,EA+tCzB,OAnxCwC,OA+D/B,YAAA73E,sBAAP,SAA6B8hD,EAAgCp2H,GAC3D,SAAKo2H,EAAS6d,wBAA0BjjK,KAAK4d,MAAM+zF,QAAUyzC,EAASzzC,WAK9DmwC,GAAe9hJ,KAAK4d,MAAOwnI,KAActD,GAAe9hJ,KAAK+E,MAAOiqB,KAGvE,YAAAy6E,2BAAP,SAAkC27C,GAChC,GAAIA,EAASpvJ,SAAWgK,KAAK4d,MAAM5nB,OAAQ,CACzC,IAAMotK,EAAYhe,EAASpvJ,OAC3BgK,KAAKkjK,2BAA2BE,GAG9BpjK,KAAKq8K,UAAUj3B,KAAcplJ,KAAKq8K,UAAUr8K,KAAK4d,SAC/C5d,KAAKq8K,UAAUj3B,GACjBplJ,KAAKs8K,iBAELt8K,KAAKu8K,gBACLv8K,KAAKg4K,uBAAyBh4K,KAAKwiK,cAC9BxiK,KAAKwiK,cAAcj4J,SAAS8b,mBAC7B5mB,IAGJ2lJ,EAAS00B,0BAA4B95K,KAAK4d,MAAMk8J,0BAElD95K,KAAK+5K,gCAAkC30B,EAAS00B,wBAGhD95K,KAAKm7K,cAAgBn7K,KAAK+5K,gCAAkC/5K,KAAKm7K,gBAK9D,YAAAt3E,0BAAP,WACE,IAAM7tG,EAASgK,KAAK4d,MAAM5nB,OAC1BgK,KAAKkjK,2BAA2BltK,GAC3BgK,KAAK4d,MAAM+zF,SACd3xG,KAAKg4K,uBAAyBh4K,KAAKwiK,cAC9BxiK,KAAKwiK,cAAcj4J,SAAS8b,mBAC7B5mB,IAKD,YAAAskG,kBAAP,WACO/jG,KAAK4d,MAAM+zF,QACd3xG,KAAKu8K,gBAGPv8K,KAAK83K,UAAW,GAIX,YAAAxrE,qBAAP,WACMtsG,KAAK4d,MAAM4+J,iBACbx8K,KAAK4d,MAAM4+J,gBAAgBx8K,KAAK4d,OAGlC5d,KAAKmyB,QAAQ2tH,UACb9/I,KAAK8/J,OAAOhgB,UACZ9/I,KAAK83K,UAAW,GAGX,YAAAhwK,OAAP,sBACQy3J,EAAA,WAAAA,cAEA,aACJzhJ,EAAA,EAAAA,MACA2+J,EAAA,EAAAA,eACAtkL,EAAA,EAAAA,GACA2R,EAAA,EAAAA,UACAmzJ,EAAA,EAAAA,UACAE,EAAA,EAAAA,gBACAC,EAAA,EAAAA,sBACA1B,EAAA,EAAAA,gBACAgD,EAAA,EAAAA,SACAjD,EAAA,EAAAA,YACAxQ,EAAA,EAAAA,UACAqgB,EAAA,EAAAA,WACAt1K,EAAA,EAAAA,OACAolK,EAAA,EAAAA,OACAshB,EAAA,EAAAA,eACAC,EAAA,EAAAA,oBACAnhB,EAAA,EAAAA,qBACAxH,EAAA,EAAAA,mBACA4oB,EAAA,EAAAA,uBACAx9J,EAAA,EAAAA,MACAlF,EAAA,EAAAA,OACAy0B,EAAA,EAAAA,MACAkuI,EAAA,EAAAA,aACA,IAAAC,uBAAA,IAAkB,EAAlB,wBACA,IAAAC,wBAAA,IAAmB,EAAnB,yBACAC,EAAA,EAAAA,eAEAC,EAAA,EAAAA,kBAGFj9K,KAAKqkK,YAAc4Y,EACfA,EAAkBtuI,EAAQ7kC,GAC1B,GAAcoQ,EAAQ,CACpBy0B,MAAOA,EACP7kC,UAAWA,IAGjB,IAAMyhK,EAEN,SAAS2R,EAAef,GACtB,IAAmB,UAAAA,EAAA,eAAqB,CAAnC,IAAMr9J,EAAI,KACb,GAAIA,EAAK0sJ,UACP,OAAO,EAGT,GACE1sJ,EAAKw5J,WAAaxsB,GAAuBqtB,SACzCr6J,EAAKq+J,cACLD,EAAep+J,EAAKq+J,aAAar/J,OAEjC,OAAO,EAIX,OAAO,EAjBQo/J,CAAep/J,GAoBhC9d,KAAKs6K,wBAAuB,OAAQ0C,GAAc,CAAEhmJ,UAAWh3B,KAAKo9K,2BAEpE,IAOIC,EAPE3I,EA5NJ,SAA+B52J,GACnC,OAAOA,EAAM4H,MAAK,SAAA5G,GAChB,QAAIA,EAAK44I,aAKL54I,EAAKq+J,eAAgBr+J,EAAKq+J,aAAar/J,MAAM4H,MAAK,SAAA43J,GAAe,WAAAA,EAAY5lB,gBAqN3D6lB,CAAqBz/J,GACrC0/J,EAAex9K,KAAK+E,MAAM6vK,sBAA6C,IAAtB50K,KAAK4d,MAAM+zF,OAAkB3xG,KAAKy9K,mBAAqB,KAE9Gle,OAAkC9/J,IAAlB8/J,EAA8Bv/J,KAAK4d,MAAMy7I,gBAAmBZ,GAAe9oC,OAAS4vC,EAKpG,IAAMme,EAAsB19K,KAAK8kK,QACjC,IAAK4X,GAAkBC,IAAwBe,GAAuBA,EAAoBppH,YAAa,CACrG,IACMqpH,EADqBD,EAAoBr8J,wBACR3F,MAAQ,EAE3CghK,EACFW,EAAmB,CACjB3hK,MAAOiiK,GAEAhB,IACTU,EAAmB,CACjBnW,SAAUyW,IAMhB,GAAI7/J,GAASA,EAAM5nB,OAAS,EAAG,CAE7B,IADA,IAAIu+K,EAAiB,EACF,MAAA32J,EAAA,eAAO,CAArB,IAAMgB,EAAI,KACb,GAAIA,EAAKw5J,WAAaxsB,GAAuBysB,SAAWz5J,EAAKw5J,WAAaxsB,GAAuBzvJ,OAE/Fo4K,GADkB31J,EAAK25J,yBAA2B35J,EAAK25J,yBAA2B,EAKtF,IAAMmF,EAAgB59K,KAAKqkK,YAAYz+B,mBAClC5lI,KAAKqkK,YAAYz+B,mBAAmB05B,aAIrC7/J,EAEJ,OACE,gBAAC,GAAO,GACNya,OAAQ0jK,EACRxd,eAAgBpgK,KAAK+3K,gCACjB8E,EAAY,CAChB7mL,OAAQA,EACRupK,cAAeA,EACftC,UAAWA,EACXE,gBAAiBA,EACjBC,sBAAuBA,EACvBsB,SAAUA,EACVjD,YAAaA,EACb6P,WAAYA,EACZxhK,UAAW2I,GAAI,4BAA6BoqK,GAAgBA,EAAa/yK,WACzEg4J,gBAAiB9N,EACjB4L,UAAW5/J,KAAK4d,MAAMgiJ,UACtBmE,SAAU/jK,KAAK46K,UACfxf,OAAQA,EACRI,qBAAsBA,EACtBE,gBAAiBA,EACjB/pD,OAAQ3xG,KAAK4d,MAAM+zF,SAEnB,uBACEh5F,MAAO0kK,EACPljK,IAAK,SAAC8vJ,GAAyB,OAAC,EAAKuQ,MAAN,GAC/BriL,GAAIA,EACJ2R,UAAW9J,KAAKqkK,YAAY93J,UAC5B4oB,SAAUynJ,EAAyB,GAAK,EACxChlK,UAAW5X,KAAKu6K,eAChB7gK,QAAS1Z,KAAK+lB,SACd83J,eAAgB79K,KAAK65K,oBAAmB,aAC5B5uB,EAAS,kBACJwxB,EACjB3nJ,KAAM,QAEL1V,GAAS,uBAAKtV,UAAW9J,KAAKqkK,YAAYjlJ,O,IAASA,EAAa,KAChEtB,GAASA,EAAM5nB,OACd,gBAAC,GAAS,GACR4T,UAAW9J,KAAKqkK,YAAY9wK,KAC5BmjK,sBAAsB,EACtBlE,aAAclG,IACVtsJ,KAAKs6K,yBAERyC,EACC,CACE9xB,UAAS,EACTntI,MAAK,EACL22J,eAAc,EACdC,cAAa,EACbnJ,SAAQ,EACRuS,wBAAyB99K,KAAKs5K,yBAC9BmD,eAAc,GAEhBz8K,KAAKi4K,oBAGP,KACHuF,GAAgBV,EAAgBU,EAAcx9K,KAAK+9K,oBAK1D,OAAO,MASH,YAAA1B,UAAR,SAAkBz+J,GAChB,QAASA,EAAM+zF,QAGT,YAAA4qE,cAAR,WACEv8K,KAAKmyB,QAAQF,GAAGjyB,KAAKwiK,cAAe,SAAUxiK,KAAKy0B,SACnDz0B,KAAK+5K,gCAAkC/5K,KAAK4d,MAAMk8J,wBAClD95K,KAAKm7K,eAAgB,EACrBn7K,KAAK4d,MAAMogK,cAAgBh+K,KAAK4d,MAAMogK,aAAah+K,KAAK4d,QAGlD,YAAA0+J,cAAR,WACEt8K,KAAKmyB,QAAQC,IAAIpyB,KAAKwiK,cAAe,SAAUxiK,KAAKy0B,SAMpDz0B,KAAK+3K,+BAA+B,CAClCzX,cAAetgK,KAAKm6K,yBACpB5Z,sBAAuBvgK,KAAKwiK,cAAcj4J,SAASi2J,WACnDH,gBAAiBrgK,KAAKg4K,yBAGxBh4K,KAAKm6K,0BAA2B,EAE5Bn6K,KAAK4d,MAAM4+J,iBACbx8K,KAAK4d,MAAM4+J,gBAAgBx8K,KAAK4d,OAGlC5d,KAAK+5K,gCAAkC/5K,KAAK4d,MAAMk8J,wBAIlD95K,KAAK86E,SAAS,CACZ4gG,0BAAsBj8K,EACtBw8K,0BAAsBx8K,EACtBm1K,yBAAqBn1K,EACrBysK,mBAAezsK,KA2BX,YAAA29K,uBAAR,WACU,IAAAJ,EAAA,WAAAA,eACR,OAAOA,QAA+Cv9K,IAA7Bu9K,EAAehmJ,UACpCgmJ,EAAehmJ,UACfq1H,GAAmB2F,UAGjB,YAAA+rB,iBAAR,SACElmB,EACA3L,GAEA,MAAMtwJ,MACJ,gKAqII,YAAAw9K,mBAAR,SACE6E,EAEAC,EACAx6K,EACAgxK,EACAnJ,GANF,WAQQ4R,EAAec,EAAYd,aACjC,GAAKA,EAAL,CAIA,IAAInE,EACAmF,EACJ,GAAIhB,EAAa/9J,MAAO,CACtB,IAAIg/J,OAA4D3+K,EAC5D4+K,EAAkB,GACtB,GAAkC,kBAAvBlB,EAAa/9J,MAAoB,CAG1C,IAAMjnB,EAAK6H,KAAKkiJ,IAAMi7B,EAAa/9J,MAAM7V,QAAQ,MAAO,IACxD60K,EAA2B,CACzB3rL,IAAK,WAAW0qL,EAAa/9J,MAAK,SAClCk5J,SAAUxsB,GAAuBzvJ,OACjC8O,KAAMgyK,EAAa/9J,MACnBjnB,GAAIA,GAENkmL,EAAkBlmL,MACb,CACCA,EAAKglL,EAAa/9J,MAAMjnB,IAAM6H,KAAKkiJ,IAAMi7B,EAAa/9J,MAAM3sB,IAAI8W,QAAQ,MAAO,IACrF60K,EAA2B,EAAH,KAAQjB,EAAa/9J,OAAK,CAAEjnB,GAAE,IACtDkmL,EAAkBlmL,EAGhBimL,IACFD,EAAa,CACXrpJ,KAAM,QACN,kBAAmBupJ,GAErBrF,EAAah5K,KAAKi5K,sBAChBmF,EACAF,EACAx6K,EACAgxK,EACAnJ,IAKN,OAAI4R,EAAar/J,OAASq/J,EAAar/J,MAAM5nB,OAAS,EAElD,sBAAI4+B,KAAK,eAAeriC,IAAK0qL,EAAa1qL,KAAOwrL,EAAYxrL,KAAO,WAAWiR,GAC7E,2BAASy6K,GACP,sBAAIr0K,UAAW9J,KAAKqkK,YAAYj0J,KAAM0kB,KAAK,gBACxCqoJ,EAAamB,YAAct+K,KAAK+4K,iBAAiBr1K,EAAOw6K,GAAgB,GAAM,GAC9ElF,GACCh5K,KAAKk5K,gBAAgBF,EAAYiF,EAAYxrL,KAAOiR,EAAOw6K,EAAgBD,EAAY7+J,OACxF+9J,EAAar/J,MAAM5f,KAAI,SAACqgL,EAAoBC,GAC3C,SAAKnG,gBACHkG,EACAC,EACAA,EACArB,EAAar/J,MAAM5nB,OACnBw+K,EACAnJ,MAGH4R,EAAasB,eAAiBz+K,KAAK+4K,iBAAiBr1K,EAAOw6K,GAAgB,GAAO,WAlB7F,IA0BM,YAAAhF,gBAAR,SACE7vK,EACA5W,EACAguD,EACArhC,GAEA,OACE,sBAAI0V,KAAK,eAAe1V,MAAOA,EAAO3sB,IAAKA,EAAKqX,UAAW22C,EAAW3hC,MACnEzV,IAKC,YAAA0vK,iBAAR,SACEr1K,EACA+8C,EACAllC,EACAmjK,GAEA,OAAIA,GAAeh7K,EAAQ,EAEvB,sBACEoxB,KAAK,YACLriC,IAAK,aAAeiR,QAAiBjE,IAAR8b,EAAoB,GAAKA,EAAM,OAAS,WACrEzR,UAAW22C,EAAWysH,QAAO,cACjB,SAIX,MAGD,YAAAmM,kBAAR,SACEv6J,EACA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,GAEA,OAAIzsJ,EAAK6/J,SACA7/J,EAAK6/J,SAAQ,GAChB,gBAAiBnK,EAAwB,EAAG,eAAgBC,GAAmB31J,GACjF9e,KAAKy0B,SAGL3V,EAAKywB,KACAvvC,KAAK4+K,sBACV9/J,EACA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,GAIAzsJ,EAAK3c,OAASy1J,GAAW94I,GACpB9e,KAAK6+K,mBACV//J,EACA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,GAIGvrK,KAAK8+K,kBACVhgK,EACA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,IAII,YAAA0N,sBAAR,SACEn6J,EAEA2hC,EACA/8C,EACAgxK,EACAnJ,GAEQ,iBAAAoJ,qBAAA,kBACAK,EAAAl2J,EAAAk2J,UAAW78K,EAAA,EAAAA,GACb4mL,EACJ/J,GAAax8B,GAAqDw8B,EAAWz8B,IAC/E,OAEE,yBAAKpgJ,GAAIA,EAAI2R,UAAW9J,KAAKqkK,YAAY2a,QAAYD,EAAiB,CAAEpmK,MAAOmG,EAAKnG,QAClF,gBAAC08J,EAAgB,GACfv2J,KAAMA,EACN2hC,WAAYA,EACZ/8C,MAAOA,EACPgoK,iBAAkBgJ,EAAgB10K,KAAK6vK,kBAAepwK,EACtD8rK,SAAUA,GACNyJ,MAMJ,YAAA4J,sBAAR,SACE9/J,EAEA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,GAEQ,IAAAoJ,EAAA,WAAAA,qBACAC,EAAA,WAAAA,oBACR,OACE,gBAAC,GAAoB,CACnB91J,KAAMA,EACN2hC,WAAYA,EACZ/8C,MAAOA,EACP8wK,sBAAuBA,EACvBC,eAAgBA,EAChBC,cAAeA,EACfnJ,SAAUA,EACVoJ,qBAAsBA,EACtB/E,iBAAkB5vK,KAAK+6K,sBACvB/K,iBAAkBhwK,KAAKq7K,kBACvBjL,gBAAiBpwK,KAAKk7K,qBACtB3F,gBAAiBv1K,KAAKu7K,iBACtB/E,iBAAkBx2K,KAAKi2K,kBACvB7B,YAAap0K,KAAK47K,eAClB1L,cAAelwK,KAAKiwK,eACpB2E,oBAAqBA,EACrB5I,YAAahsK,KAAK27K,qBAClBxP,eAAgBnsK,KAAKg8K,kBACrB5P,YAAapsK,KAAKy0B,WAKhB,YAAAqqJ,kBAAR,SACEhgK,EAEA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,GAEQ,IAAAoJ,EAAA,WAAAA,qBACAC,EAAA,WAAAA,oBAER,OACE,gBAAC,GAAoB,CACnB91J,KAAMA,EACN2hC,WAAYA,EACZ/8C,MAAOA,EACP8wK,sBAAuBA,EACvBC,eAAgBA,EAChBC,cAAeA,EACfnJ,SAAUA,EACVoJ,qBAAsBA,EACtB/E,iBAAkB5vK,KAAK+6K,sBACvB/K,iBAAkBhwK,KAAKq7K,kBACvBjL,gBAAiBpwK,KAAKk7K,qBACtB3F,gBAAiBv1K,KAAKu7K,iBACtB/E,iBAAkBx2K,KAAKi2K,kBACvB7B,YAAap0K,KAAK6vK,aAClBC,gBAAiB9vK,KAAKw7K,iBACtBtL,cAAelwK,KAAKiwK,eACpB2E,oBAAqBA,EACrB5I,YAAahsK,KAAK27K,qBAClBxP,eAAgBnsK,KAAKg8K,kBACrB5P,YAAapsK,KAAKy0B,WAKhB,YAAAoqJ,mBAAR,SACE//J,EAEA2hC,EACA/8C,EACA8wK,EACAC,EACAC,EACAnJ,GAEQ,IAAAoJ,EAAA,WAAAA,qBACAC,EAAA,WAAAA,oBAER,OACE,gBAAC,GAAyB,CACxB91J,KAAMA,EACN2hC,WAAYA,EACZ/8C,MAAOA,EACP8wK,sBAAuBA,EACvBC,eAAgBA,EAChBC,cAAeA,EACfnJ,SAAUA,EACVoJ,qBAAsBA,EACtB/E,iBAAkB5vK,KAAK+6K,sBACvB/K,iBAAkBhwK,KAAKq7K,kBACvBjL,gBAAiBpwK,KAAKk7K,qBACtB3F,gBAAiBv1K,KAAKu7K,iBACtB/E,iBAAkBx2K,KAAKi2K,kBACvB7B,YAAap0K,KAAK6vK,aAClBC,gBAAiB9vK,KAAKw7K,iBACtBtL,cAAelwK,KAAKiwK,eACpBjE,YAAahsK,KAAK27K,qBAClBxP,eAAgBnsK,KAAKg8K,kBACrB5P,YAAapsK,KAAKy0B,QAClBmgJ,oBAAqBA,EACrByC,MAAOr3K,KAAKk8K,2BAqDV,YAAA1C,aAAR,SAAqB32B,GACnB,OAAOA,EAAG//H,QAAUsyH,IAA2B,SAAXyN,EAAGpwJ,KAwHjC,YAAAuoL,wBAAR,WACE,OAAQh7K,KAAK66K,gBAAkB76K,KAAKm7K,eAsC9B,YAAAF,yBAAR,SAAiCn8J,EAA2B+jI,EAAmC7sJ,GAA/F,WACQoqJ,EAAgBpqJ,GAAmB6sJ,EAAG9lF,cACpC,aAAAkiH,kBAAA,aA9gCgB,IA8gChB,EAEJngK,EAAKrsB,MAAQuN,KAAK+E,MAAM6vK,2BAIDn1K,IAAvBO,KAAKo7K,gBACPp7K,KAAK8/J,OAAO3sI,aAAanzB,KAAKo7K,eAC9Bp7K,KAAKo7K,mBAAgB37K,QAIgBA,IAAnCO,KAAK+E,MAAM6vK,qBACbx0B,EAAchgI,QAKZw3I,GAAW94I,IACb+jI,EAAG1/H,kBACHnjB,KAAKo7K,cAAgBp7K,KAAK8/J,OAAOpuJ,YAAW,WAC1C0uI,EAAchgI,QACd,EAAK06D,SAAS,CACZ4gG,sBAAsB,IAExB,EAAKC,qBAAqB78J,EAAMshI,GAChC,EAAKg7B,mBAAgB37K,IACpBy/K,IAEHl/K,KAAKo7K,cAAgBp7K,KAAK8/J,OAAOpuJ,YAAW,WAC1C,EAAKsqK,kBAAkBn5B,GACvBzC,EAAchgI,QACd,EAAKg7J,mBAAgB37K,IACpBy/K,KAkIC,YAAAzB,iBAAR,WACQ,iBAAEvR,EAAA,EAAAA,cAAe0I,EAAA,EAAAA,oBACjB91J,EAAO9e,KAAKm/K,eAAevK,GAC7B4I,EAA4C,KAExC,aAAAxnL,OAER,GAAI8oB,IACF0+J,EAAe,CACb1/J,MAAO05J,GAAgB14J,EAAM,CAAE9oB,OAAQ8lL,IACvC9lL,OAAQk2K,EACRtM,UAAW5/J,KAAKg8K,kBAChB3B,WAAW,EACXliL,GAAI6H,KAAK+E,MAAMq3K,UACfpoB,oBAAoB,EACpB4oB,uBAAwB58K,KAAK+E,MAAM22K,qBACnCve,gBAAiB,GAAOn9J,KAAK4d,MAAM+wB,OAASk9G,GAA8BA,GAC1E/hJ,UAAW9J,KAAK4d,MAAM9T,UACtB40J,SAAU,EACVa,eAAe,GAGbzgJ,EAAK+4I,cACP,GAAO2lB,EAAc1+J,EAAK+4I,cAGxB/4I,EAAK44J,+BAA+B,CAC9B,IAAAtD,EAAA,EAAAA,YAERoJ,EAAapJ,YAAcwD,GAA6BxD,EAAa0H,GAGzE,OAAO0B,GAGD,YAAA2B,eAAR,SAAuB1sL,GACb,IAAAqrB,EAAA,WAAAA,MACR,OAAO9d,KAAKo/K,wBAAwB3sL,EAAKqrB,IAQnC,YAAAshK,wBAAR,SAAgC3sL,EAAaqrB,GAC3C,IAAmB,UAAAA,EAAA,eAAO,CAArB,IAAMgB,EAAI,KACb,GAAIA,EAAKw5J,WAAaxsB,GAAuBqtB,SAAWr6J,EAAKq+J,aAAc,CACzE,IAAM/tK,EAAQpP,KAAKo/K,wBAAwB3sL,EAAKqsB,EAAKq+J,aAAar/J,OAClE,GAAI1O,EACF,OAAOA,OAEJ,GAAI0P,EAAKrsB,KAAOqsB,EAAKrsB,MAAQA,EAClC,OAAOqsB,IAuBL,YAAAokJ,2BAAR,SAAmCltK,GACjC,IAAM22J,EAAiB3sJ,KAAKw6K,MAE5B,GAAIxkL,EACF,GAAsB,kBAAXA,EAAqB,CAC9B,IAAMywK,EAAuBnsC,GAAYqyB,GACzC3sJ,KAAK8kK,QAAU2B,EAAcA,EAAWlyI,cAAcv+B,GAAsB,KAC5EgK,KAAKwiK,cAAgB9pG,GAAUi0F,QAE1B,GAAK32J,EAAemtB,gBACzBnjB,KAAKwiK,cAAgB9pG,GAAW1iE,EAAsBA,QACtDgK,KAAK8kK,QAAU9uK,OACV,QAEuByJ,IAA1BzJ,EAAiBwlB,WAA8C/b,IAAvBzJ,EAAiB+0B,QAEhCtrB,IAAzBzJ,EAAiBulB,UAA6C9b,IAAvBzJ,EAAiBu9B,EAIrD,QAAqD9zB,IAAhDzJ,EAAoCkhB,QAC9ClX,KAAK8kK,QAAW9uK,EAAoCkhB,QACpDlX,KAAKwiK,cAAgB9pG,GAAU14D,KAAK8kK,aAC/B,CACL,IAAM1kB,EAAyBpqJ,EAC/BgK,KAAKwiK,cAAgB9pG,GAAU0nF,GAC/BpgJ,KAAK8kK,QAAU9uK,OARfgK,KAAKwiK,cAAgB9pG,GAAUi0F,GAC/B3sJ,KAAK8kK,QAAU9uK,OAUjBgK,KAAKwiK,cAAgB9pG,GAAUi0F,IA1wCrB,EAAA9lJ,aAAqC,CACjDiX,MAAO,GACPk2I,oBAAoB,EACpB0K,SAAU,EACVvB,gBAAiBtR,GACjBoR,UAAW,IAPFoiB,EAAkB,GAD9BpmB,IACYomB,GAAb,CAAwC,aAqxCxC,SAASzH,GACPr+J,EAMAvjB,GAEA,OAAOujB,EACH,SACEspI,EACA/jI,GAIA,OAFA+8J,GAAeh5B,EAAI7sJ,GAEZujB,EAAQspI,EAAI/jI,IAErBvF,EAGN,SAASsiK,GACPh5B,EACA7sJ,GAEI6sJ,GAAM7sJ,IACR6sJ,EAAGjwD,UAEC58F,aAAkBi1K,MACpBpoB,EAAG7sJ,OAASA,EAAOA,OACVA,aAAkBgd,UAC3B6vI,EAAG7sJ,OAASA,ICx7ClB,IAAM,GAAmB,CACvBzC,KAAM,oBACNgZ,UAAW,8BACX6D,KAAM,yBACN4uK,OAAQ,2BACR5/J,MAAO,0BACPkgK,OAAQ,WCJV,SAAS,GAAgBznB,GACvB,OAAO,gBAAC0nB,GAAmB,KAAK1nB,IAIlC,IAAM0nB,GAAqE3jC,GAKzE,IDHuB,SAACh+H,GAChB,IAAA9T,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MACb8R,EAAa8yE,GAAoB,GAAkB5kF,GAEjD80F,EAAA,EAAAA,MAAOH,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAE/B,MAAO,CACL3uG,KAAM,CACJo7C,EAAM80F,MAAM9T,OACZlvE,EAAWltD,KACXktD,EAAW6+H,OACX,CACEv0I,gBAAiBu4F,EAAejF,eAChC6oC,SAAU,SAEZp9J,GAEFyC,UAAW,CACTk0C,EAAWl0C,UACX,CACEm6G,UAAW,CACT,SAAU,CAAExxD,QAAS,MAI3B9kD,KAAM,CACJqwC,EAAWrwC,KACXqwC,EAAW6+H,OACX,CACEE,cAAe,OACftjK,OAAQ,IACRtD,QAAS,MAGbomK,OAAQ,CACNv+H,EAAWu+H,OACXv7C,EAAMhU,MACN,CACE/yG,WAAYuuG,GAAYsF,SACxB30G,MAAO0nH,EAAexE,WACtB1iH,WAAY,OACZ2uB,gBAAiB,cACjB5uB,OAAQ,OACRV,OjB1CmC,GiB2CnCmB,WjB3CmC,GiB4CnCgvC,OAAQ,UACRhzC,QAAS,UACT6mK,WAAY,OACZtkK,UAAW,SAGfiE,MAAO,CACLqhC,EAAWrhC,MACX,CACE7C,SAAUknH,EAAM7T,WAAWrzG,SAC3BzC,aAAc,OACdE,YAAa,OACbD,cAAe,MACfF,WAAY,MACZkxB,gBAAiBu4F,EAAexD,4BAGpC8F,mBAAoB,CAClB05B,QAAS,CACP/rK,KAAM,CACJ+wI,UAAWpiC,EAAQ62B,aAGvBq/C,SAAU,QC/Dd,SAACx6J,GAAgC,MAAC,CAChCk/J,gBAAiBl/J,EAAMk/J,iB1DezB9wB,E0Dd4BpuI,EAAMk/J,gB1DelCvjC,E0DfmD,G1DiB5CwS,GAASC,EAATD,CAAgBxS,I0DhBjB,I1DYF,IACJyS,EACAzS,I0DZA,CAAEyC,MAAO,mBAME0jC,GAAgEH,GCbhEI,GAAyB,CACpCC,SAAU,YACVC,gBAAiB,qBACjBC,aAAc,iBACdC,iBAAkB,qBAClBC,cAAe,kBACfC,oBAAqB,wBACrBC,yBAA0B,6BAC1BC,sBAAuB,0BACvBC,sBAAuB,2BAGZC,GAA0B3tD,IACrC,SACE/jF,EACAz0B,EACApQ,EACAw2K,EACA31B,EACA41B,EACAvnK,EACAm7J,EACAlzH,EACAtI,EACA6nI,G,QAEM//H,EAAa8yE,GAAoBosD,GAAwBhxI,GAAS,IAElEkgI,EAAal2H,IAAa6nI,EAChC,OAAO/5C,GAAe,CACpBlzI,KAAM,CACJktD,EAAWm/H,SACX1lK,EAAO3mB,KACP+sL,EACAr/H,GAAW,CAAC,aAAc/mC,EAAO8zJ,aACjCa,GAAc,CACZ,cACA30J,EAAOg0J,aACP,CACExnD,WAAS,KACP,EAAC,WAAWjmE,EAAWq/H,cAAiB5lK,EAAOumK,oBAE/C,EAAC,WAAWhgI,EAAWs/H,kBAAqB7lK,EAAOwmK,yBAA2BxmK,EAAOymK,oBACrF,YAAUzmK,EAAOymK,oBAClB,KAGLxM,GAAW,CAACwL,GAAuBE,gBAAiB3lK,EAAO0mK,aAC3D5nK,GAAY,CAAC,cAAekB,EAAO2zJ,eAClC70J,IACE61J,IACA5tH,GAAW,CACVylE,WAAS,GACP,SAAUxsG,EAAO4zJ,aACjB,EAAC,WAAWrtH,EAAWu/H,eAAkB9lK,EAAO2mK,aAChD,EAAC,WAAWpgI,EAAWq/H,cAAiB5lK,EAAO4mK,YAC/C,EAAC,WAAWrgI,EAAWw/H,qBAAwB/lK,EAAO6mK,mBACtD,EAAC,WAAWtgI,EAAWs/H,kBAAqB7lK,EAAO8mK,gBACnD,YAAU9mK,EAAO6zJ,YACjB,aAAW7zJ,EAAO+zJ,YAClB,EAAC,YAAYxtH,EAAWq/H,cAAiB5lK,EAAO+mK,YAChD,EAAC,YAAYxgI,EAAWw/H,qBAAwB/lK,EAAOgnK,mBACvD,EAAC,YAAYzgI,EAAWs/H,kBAAqB7lK,EAAOinK,gBACrD,IAELnoK,GAAYioC,GAAW,CAAC/mC,EAAOknK,sBAC9BpoK,GACCioC,GAAW,CACTylE,UAAW,CACT,SAAUxsG,EAAOmnK,mBACjB,UAAWnnK,EAAOonK,qBAGxBx3K,GAEFy3K,cAAe,CAAC9gI,EAAW0/H,sBAAuBjmK,EAAOqnK,eACzDC,cAAe,CAAC/gI,EAAW2/H,sBAAuBlmK,EAAOsnK,eACzDhhK,KAAM,CACJigC,EAAWq/H,aACXn1B,EACAzwI,EAAOsG,KACPquJ,GAAc30J,EAAOunK,aACrBxgI,GAAW/mC,EAAOwnK,YAClB1oK,GAAYkB,EAAOu0J,cAErBp5I,MAAO,CAACorB,EAAWu/H,cAAe9lK,EAAOmb,MAAO4rB,GAAW/mC,EAAOynK,aAAc3oK,GAAYkB,EAAO0nK,eACnG/iD,SAAU,CACRp+E,EAAWs/H,iBACXQ,EACArmK,EAAO2kH,SACP59E,GAAW/mC,EAAO2nK,gBAClB7oK,IAAawnK,GAAWtmK,EAAO4nK,kBAC9B9oK,IACE61J,IACA5tH,GAAW,CACVylE,UAAW,CACT,SAAUxsG,EAAO8mK,gBACjB,UAAW9mK,EAAOinK,kBAGxBtS,GAAc,CAAC,cAAe30J,EAAO6nK,mBAEvC7/G,YAAa,CACXzhB,EAAWw/H,oBACX/lK,EAAOgoD,YACPjhB,GAAW/mC,EAAO8nK,mBAClBhpK,GAAYkB,EAAO+nK,qBAErBlT,iBAAkB,CAACtuH,EAAWy/H,yBAA0BhmK,EAAO60J,uBChHxD,GAA2Br8C,IACtC,SACEx4G,EACAlB,EACA2/B,EACAsI,EACAouH,GAEA,MAAO,CACL97K,KAAMguH,GACJrnG,EAAOgoK,sBACPvpI,GAAY,CAACz+B,EAAOioK,+BACpBnpK,GAAY,CAACkB,EAAOkoK,+BACpBnhI,IAAYjoC,GAAY,CAACkB,EAAOmoK,8BAChChT,IACGr2J,GAAY,CACX,CACE0tG,UAAW,CACT,SAAUxsG,EAAOooK,2BAM3BC,qBAAsBhhE,GACpBrnG,EAAOqoK,sBACNvpK,GACCioC,GAAW,CACT/mC,EAAOsoK,4BACP,CACE97D,UAAW,CACT,SAAUxsG,EAAOuoK,uCAIxBzpK,IACEioC,GAAW,CACV,CACEylE,UAAW,CACT,SAAUxsG,EAAOwoK,4BACjB,SAAUxoK,EAAOyoK,+BAIzB3pK,GAAYkB,EAAO0oK,8BAGrBpiK,KAAM+gG,GACJrnG,EAAO2oK,oBACP7pK,GAAYkB,EAAO4oK,6BAClB9pK,GAAYq2J,GAAmBn1J,EAAO2oK,qBAGzCtB,cAAehgE,GAAYrnG,EAAOw0J,0BAElCxB,QAAS3rD,GACPrnG,EAAO6oK,oBACN1T,GAAmBr2J,IAAakB,EAAO8oK,gCCzBhD,IAAMC,GAAsB/vD,IApC5B,SACE84B,GAEA,IAAMk3B,EAAQl3B,EA8Bd,OA5BsB94B,IAAe,SAACqmB,GACpC,GAAIyS,IAAUzS,EACZ,MAAM,IAAI39I,MAAM,iDAGlB,IAAMunL,EAAQ5pC,EAER0S,EAAgB/4B,IAAe,SAACg5B,GAOpC,OAN+E,SAC7EC,GAEA,OAAO,gBAACg3B,EAAK,KAAKh3B,EAAU,CAAED,cAAeA,SAcjD,OAR+E,SAC7EE,GAEQ,IAAAF,EAAA,EAAAA,cAER,OAAO,gBAACg3B,EAAK,KAAK92B,EAAU,CAAEF,cAAeA,EAAgBD,EAAcC,GAAiBi3B,YCalG,IC0GYC,GAeAC,GDnHZ,eAmCE,WAAYzlK,GAAZ,MACE,YAAMA,IAAM,K,OAvBN,EAAA0lK,eAAiB,cACjB,EAAAC,sBAAwB,cACxB,EAAAlzB,WAAa,KAOb,EAAAmzB,sBAAgC,EAMhC,EAAAtP,kCAAoCxhD,IAAgB,SAAC6+C,GAC3D,cACKA,GAAW,CACd4C,SAAS,OAuTL,EAAAsP,cAAgB,SACtBrM,EACAlrB,GAEQ,IAAAsf,EAAA,QAAAA,UAER,GAAIA,SAAqC/rK,IAAvB+rK,EAAUrmC,UAA0BqmC,EAAU3jB,YAAa,CACnE,IAAA/9I,EAAA,EAAAA,UAAW+9I,EAAA,EAAAA,WAAY,kCAI/B,GAAI2jB,EAAUtxJ,OACZ,OAAO,gBAACgxI,GAAI,GAACphJ,UAAW2I,GAAI,EAAK4xJ,YAAY7jJ,KAAM1W,GAAY+9I,WAAYA,GAAgB15I,IAE7F,GAAIq9J,EAAUrmC,SACZ,OAAO,gBAAC,GAAQ,GAACr7H,UAAW2I,GAAI,EAAK4xJ,YAAY7jJ,KAAM1W,IAAgBqE,IAEzE,GAAI05I,EACF,OAAO,gBAAC,GAAS,GAAC/9I,UAAW2I,GAAI,EAAK4xJ,YAAY7jJ,KAAM1W,GAAY+9I,WAAYA,GAAgB15I,IAGpG,OAAO,MAGD,EAAAu1K,sBAAwB,WACxB,cACJv4K,EAAA,EAAAA,KACA0P,EAAA,EAAAA,SAEA,IAAAgxJ,qBAAA,4BACA,IAAA8X,oBAAA,IAAe,EAAf,kBACA,IAAAC,2BAAA,IAAsB,EAAtB,yBAGF,OAAIz4K,GAA4B,kBAAb0P,GAAyBgxJ,EAExC,wBAAM/hK,UAAW,EAAKu6J,YAAYmd,eAC/BmC,EAAa,EAAK/lK,MAAO,EAAKimK,eAC9BD,EAAoB,EAAKhmK,MAAO,EAAKkmK,uBAIrC,CAACH,EAAa,EAAK/lK,MAAO,EAAKimK,eAAgBD,EAAoB,EAAKhmK,MAAO,EAAKkmK,wBAGrF,EAAAD,cAAgB,WAChB,IAAA14K,EAAA,QAAAA,KACE0P,EAAA,QAAAA,SAOR,YAJapb,IAAT0L,GAA0C,kBAAb0P,IAC/B1P,EAAO0P,GAGL,EAAKkpK,WAEL,wBAAMtxL,IAAK,EAAKuxL,SAAUl6K,UAAW,EAAKu6J,YAAYhvI,MAAOl9B,GAAI,EAAK6rL,UACnE74K,GAKA,MAWD,EAAA84K,kBAAoB,WAClB,IAAAppK,EAAA,QAAAA,SAIR,MAAwB,kBAAbA,EACF,KAGFA,GAGD,EAAAipK,qBAAuB,SAAClmK,GAEtB,QAAAiuJ,qBAAA,4BAIR,OAAOA,EACL,wBAAMp5K,IAAK,EAAKyxL,eAAgBp6K,UAAW,EAAKu6J,YAAYniG,YAAa/pE,GAAI,EAAK+rL,gBAC/ErY,GAED,MAGE,EAAAsY,yBAA2B,WACzB,IAAA7P,EAAA,QAAAA,gBAIR,OAAOA,EACL,wBAAMxqK,UAAW,EAAKu6J,YAAY0K,iBAAkB52K,GAAI,EAAKo8K,oBAC1DD,GAED,MAGE,EAAA8P,kBAAoB,SAACxmK,GACnB,IAAAymK,EAAA,QAAAA,cAER,OAAO,gBAAC,GAAQ,GAACl/C,SAAS,eAAkBk/C,EAAa,CAAEv6K,UAAW,EAAKu6J,YAAYxlC,aA2BjF,EAAAylD,cAAgB,SAACC,GACvB,IDneFv4B,EACAzS,ECkeQirC,EAAW,EAAK5mK,MAAM6mK,QDne9Bz4B,ECme0D,EAAKpuI,MAAM6mK,ODlerElrC,ECke6EmmC,GDhetEuD,GAAoBj3B,EAApBi3B,CAA2B1pC,ICge6DmmC,GAE7F,OAAO,gBAAC8E,EAAQ,KAAKD,KAGf,EAAAG,eAAoD,SAAA7hC,GAClD,IAAA0hC,EAAA,QAAAA,UAEJA,GAAaA,EAAU3kB,WACzB2kB,EAAU3kB,UAAU/c,GAEjBA,GAAOA,EAAGzwD,kBACb,EAAKuyF,gBAID,EAAAA,aAAe,WACrB,EAAKC,6BAA0BnlL,EAC/B,EAAKolL,iCAA8BplL,EACnC,EAAKq7E,SAAS,CAAEgqG,YAAY,KAGtB,EAAAC,UAAY,SAACnI,EAAkC5oB,QAAA,IAAAA,OAAA,GACjD,EAAKp2I,MAAM2mK,YACb,EAAKM,4BAA8BjI,EACnC,EAAKgI,wBAA0B5wB,EAC/B,EAAKwvB,sBAAuB,EAC5B,EAAK1oG,SAAS,CAAEgqG,YAAY,MAIxB,EAAAE,cAAgB,SAACpI,GACvB,IAAI5oB,GAAqB,EACrB,EAAKp2I,MAAM2mK,YAAyD,IAA5C,EAAK3mK,MAAM2mK,UAAUvwB,qBAC/CA,GAAqB,GAGvB,EAAKjvJ,MAAM+/K,WAAa,EAAKC,UAAUnI,EAAwB5oB,GAAsB,EAAK2wB,gBAkFpF,EAAAM,8BAAgC,SAACpiC,GACvC,IAAMt2I,EAAY,EAAKg3K,sBAAsBrsK,SAGxC3K,GAAcs2I,EAAG7sJ,QAAUmpJ,GAAsB0D,EAAG7sJ,OAAQuW,IAMjEA,EAAU6T,SAGJ,EAAA8kK,2BAA6B,SAACriC,GAC/B,EAAK99I,MAAM+/K,YACd,EAAKH,gBAGF,EAAKlO,kBAAoB,EAAK74J,MAAMrE,QACvC,EAAKqE,MAAMrE,QAAQspI,GACV,EAAK4zB,kBACd,EAAK0O,aAAatiC,IA6Dd,EAAA1zG,WAAa,SAAC0zG,IAEhB,EAAKjlI,MAAM5E,UAAa6pI,EAAG//H,QAAUsyH,IAAkByN,EAAG//H,QAAUsyH,GAG5D,EAAKx3H,MAAM5E,WACjB,EAAK4E,MAAM2mK,UACb,EAAKhK,eAAe13B,QACcpjJ,IAAzB,EAAKme,MAAMhG,WACpB,EAAKgG,MAAMhG,UAAUirI,KANvBA,EAAGrjI,iBACHqjI,EAAG1/H,oBAUC,EAAA4C,SAAW,SACjB88H,GAEK,EAAKjlI,MAAM5E,eAAmCvZ,IAAvB,EAAKme,MAAMlE,SACrC,EAAKkE,MAAMlE,QAAQmpI,IAIf,EAAAuiC,YAAc,SACpBviC,GAEK,EAAKjlI,MAAM5E,eAAsCvZ,IAA1B,EAAKme,MAAMynK,YACrC,EAAKznK,MAAMynK,WAAWxiC,IAIlB,EAAAyiC,WAAa,SACnBziC,GAEK,EAAKjlI,MAAM5E,eAAqCvZ,IAAzB,EAAKme,MAAMgnJ,WACrC,EAAKhnJ,MAAMgnJ,UAAU/hB,IAIjB,EAAAhyG,aAAe,SACrBgyG,GAEK,EAAKjlI,MAAM5E,eAAuCvZ,IAA3B,EAAKme,MAAM05C,aACrC,EAAK15C,MAAM05C,YAAYurF,IAInB,EAAAh9H,SAAW,SACjBg9H,GAEK,EAAKjlI,MAAM5E,WACV,EAAK4E,MAAM2mK,UACb,EAAKY,aAAatiC,QACcpjJ,IAAvB,EAAKme,MAAMrE,SACpB,EAAKqE,MAAMrE,QAAQspI,KAKjB,EAAA0iC,+BAAiC,SAAC1iC,GACpCA,EAAG//H,QAAUsyH,IAAkByN,EAAG//H,QAAUsyH,GAC1C,EAAKkuC,eAAepsK,UACtB,EAAKosK,eAAepsK,QAAQmI,QAC5BwjI,EAAGrjI,iBACHqjI,EAAG1/H,mBAGL,EAAKo3J,eAAe13B,IAIhB,EAAA03B,eAAiB,SAAC13B,GACxB,IAAI,EAAKjlI,MAAM5E,SAAf,CAII,EAAK4E,MAAMhG,WACb,EAAKgG,MAAMhG,UAAUirI,GAGvB,IAAM63B,EAAO73B,EAAG//H,QAAUsyH,GACpBulC,EAAS93B,EAAG//H,QAAUsyH,GAE5B,IAAKyN,EAAGzwD,kBAAoB,EAAKozF,oBAAoB3iC,GAAK,CAChD,IAAA4iC,EAAA,QAAAA,YACJA,GACFA,EAAY5iC,EAAI,EAAKjlI,OAGvB,EAAKonK,eAAc,GACnBniC,EAAGrjI,iBACHqjI,EAAG1/H,kBAUL,GAPI0/H,EAAG//H,QAAUsyH,IAAkByN,EAAG//H,QAAUsyH,IAI9CpkB,IAAmB,EAAM6xB,EAAG7sJ,SAGxB6sJ,EAAGx8F,SAAUw8F,EAAG/lF,UAAa49G,GAAQC,GAIzC,IAAK,EAAK51K,MAAM+/K,YAAc,EAAKlnK,MAAM2mK,gBAEJ9kL,IAAjC,EAAKmlL,wBACD,EAAKA,wBACL,EAAKhnK,MAAM2mK,UAAUvwB,sBAEzBnR,EAAGrjI,iBACHqjI,EAAG1/H,kBACH,EAAKyhK,yBAA0B,EAC/B,EAAK7pG,iBAML,EAAA27F,cAA4B,WAEhC,EAAKgP,gBACL,EAAKnC,sBAAsBrsK,WACzB,kBAAmB,EAAKqsK,sBAAsBrsK,UAEhD,EAAKy/J,+BA2DD,EAAAwO,aAAe,SACrBtiC,GAEQ,IAAA4iC,EAAA,QAAAA,YAKR,GAJIA,GACFA,EAAY5iC,EAAI,EAAKjlI,QAGlBilI,EAAGzwD,iBAAkB,CAOxB,IAAMwqF,EACsB,IAA1B/5B,EAAGr6D,YAAY1U,QAAiE,UAAhD+uE,EAAGr6D,YAA6BqP,YAClE,EAAKmtF,cAAcpI,GACnB/5B,EAAGrjI,iBACHqjI,EAAG1/H,oBAj1BLu6H,GAAuB,GACvB,EAAKoiB,OAAS,IAAI,GAAM,GACxB,EAAK3tI,QAAU,IAAI,GAAW,GAE2D,EAAKvU,MAAMzb,MAOpG,EAAK6hL,SAAW/lC,KAChB,EAAKimC,eAAiBjmC,KACtB,EAAKs2B,mBAAqBt2B,KAE1B,EAAKl5I,MAAQ,CACX+/K,YAAY,G,EAo0BlB,OA13BgC,OAC9B,sBAAY,6BAAc,C,IAA1B,WACE,QAAS9kL,KAAK4d,MAAM2mK,aAAevkL,KAAK4d,MAAMrE,UAAgC,IAArBvZ,KAAK4d,MAAMzb,O,gCAwD/D,YAAA2F,OAAP,W,MACQ,aACJwsK,EAAA,EAAAA,gBACArpB,EAAA,EAAAA,UACA06B,EAAA,EAAAA,WACA77K,EAAA,EAAAA,UACAkP,EAAA,EAAAA,SACA4sK,EAAA,EAAAA,mBACAvW,EAAA,EAAAA,gBAEA,IAAAxD,qBAAA,+BACAt8H,EAAA,EAAAA,KACAi8H,EAAA,EAAAA,UACA6Y,EAAA,EAAAA,cACAnqK,EAAA,EAAAA,OACA+mC,EAAA,EAAAA,QACAq/H,EAAA,EAAAA,iBACA3xI,EAAA,EAAAA,MACAjV,EAAA,EAAAA,OACAm8I,EAAA,EAAAA,cACA/gJ,EAAA,EAAAA,KAGMgwJ,EAAA,WAAAA,WAGFe,EAA0B7sK,GAAYq2J,EAE5CrvK,KAAKqkK,YAAcwR,EACfA,EACElnI,EACA7kC,EACAw2K,EACA9U,GAAaA,EAAU1hK,UACvBu6K,GAAiBA,EAAcv6K,UAC/B+7K,EACA5kI,GACC6jI,IACC9kL,KAAK4d,MAAM2mK,UACbvkL,KAAK4d,MAAMzb,QACTyjL,GAEJvF,GACE1xI,EACAz0B,EACApQ,EACAw2K,EACA9U,GAAaA,EAAU1hK,UACvBu6K,GAAiBA,EAAcv6K,UAC/B+7K,IACE7lL,KAAK4d,MAAM2mK,UACbtjI,GACC6jI,EACD9kL,KAAK4d,MAAMzb,OAGX,IAAEoyK,EAAF,KAAEA,mBAAoByP,EAAtB,KAAsBA,SAAUE,EAAhC,KAAgCA,eAGhC4B,GAA2BD,KAA6Bt2I,EACxD1+B,EAAMi1K,EAAiB,IAAM,SAE7BpsC,EAAclB,GAElB,GAAOstC,EAAiB,GAAK,CAAE/hL,KAAM,UAAY/D,KAAK4d,MAAM22I,UAAWv0J,KAAK4d,OAC5EkoK,EAAiB5tC,GAAmBC,GACpC,CACE,aAKE4tC,EAAoB96B,GAAcvR,EAAoB,cAIxD8a,OAAkB/0J,EAClB60K,EACF9f,EAAkB+f,EACT1I,GAAiB7rK,KAAK4d,MAAMgmK,sBAAwB79B,GAG7DyO,EAAkB0vB,EACRxqC,EAAoB,sBAC9B8a,EAAmB9a,EAAoB,qBAQzC,IAAI+a,OAAiBh1J,EAChBsmL,IACErsC,EAAoB,mBACvB+a,EAAkB/a,EAAoB,mBAC7B8a,IACTC,EAAiBz0J,KAAK+jL,WAAaC,OAAWvkL,IAIlD,IAAMumL,KACyC,IAA5ChmL,KAAK4d,MAAc,sBAAmC5E,IAAa4sK,GAAuB5lL,KAAK0lL,gBAI5FO,EAA8B,qBAATnxJ,GAAwC,aAATA,EAKpDoxJ,EAAwBD,IAA4C,IAAXvsJ,IAAVunB,OAAwCxhD,EAEvF23K,EAAc,GAAO19B,IAAW,GACpC5vI,UAAW9J,KAAKqkK,YAAY9wK,KAE5B4mB,IAAKna,KAAKqwJ,WAAWrwJ,KAAK4d,MAAMg3I,WAAY50J,KAAKsjL,gBACjDtqK,SAAU6sK,IAA4BD,EACtChuK,UAAW5X,KAAKmvC,WAChBk2I,WAAYrlL,KAAKolL,YACjB1rK,QAAS1Z,KAAK+lB,SACduxC,YAAat3D,KAAK6wC,aAClB+zH,UAAW5kK,KAAKslL,WAChB/rK,QAASvZ,KAAK6lB,SACd,aAAckgK,EACd,kBAAmBtxB,EACnB,mBAAoBD,EACpB,gBAAiBqxB,EACjB,oBAAqBG,IAGpBC,EAAqB,eAAiB,gBAAiBC,EACxD,IAMF,OAJIP,IACFvO,EAAY,gBAAiB,GAG3Bp3K,KAAK0lL,eACA1lL,KAAKmmL,4BAA4Bt1K,EAAKumK,IACpCp3K,KAAK4d,MAAM2mK,WACpB,GAAOnN,EAAa,CAClB,iBAAkB0N,EAClB,YAAcA,EAAuC,KAA1B9kL,KAAKgkL,SAAW,QAC3C,iBAAiB,IAIdhkL,KAAKomL,iBAAiBv1K,EAAKumK,KAG7B,YAAArzE,kBAAP,WAIM/jG,KAAK0lL,gBAAkB1lL,KAAKujL,sBAAsBrsK,UAChD,kBAAmBlX,KAAKujL,sBAAsBrsK,SAChDlX,KAAKmyB,QAAQF,GAAGjyB,KAAKujL,sBAAsBrsK,QAAS,cAAelX,KAAK2mJ,gBAAgB,GAEtF,gBAAiB3mJ,KAAKujL,sBAAsBrsK,SAAWlX,KAAK4d,MAAMyoK,aACpErmL,KAAKmyB,QAAQF,GAAGjyB,KAAKujL,sBAAsBrsK,QAAS,YAAalX,KAAK4d,MAAMyoK,aAAa,KAKxF,YAAA18E,mBAAP,SAA0Bq0C,EAA6BwG,GAEjDxkJ,KAAK4d,MAAM0oK,qBAAuB9hC,EAAUsgC,YAAc9kL,KAAK+E,MAAM+/K,YACvE9kL,KAAK4d,MAAM0oK,sBAIR,YAAAh6E,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,UACZ9/I,KAAKmyB,QAAQ2tH,WAGR,YAAA1/H,MAAP,WACMpgB,KAAK0lL,gBAAkB1lL,KAAKujL,sBAAsBrsK,SACpD85G,IAAmB,GACnBhxH,KAAKujL,sBAAsBrsK,QAAQkJ,SAC1BpgB,KAAKsjL,eAAepsK,UAC7B85G,IAAmB,GACnBhxH,KAAKsjL,eAAepsK,QAAQkJ,UAIzB,YAAAgsJ,YAAP,WACEpsK,KAAK2kL,gBAGA,YAAA4B,SAAP,SAAgB3J,EAAkC5oB,GAChDh0J,KAAK+kL,UAAUnI,EAAwB5oB,IAGjC,YAAAoyB,iBAAR,SAAyBv1K,EAAUumK,GAAnC,WACQx5J,EAAQ5d,KAAK4d,MACborH,EAAMn4H,EAEVwzK,EAAA,EAAAA,cACAE,EAAA,EAAAA,UACA,IAAA9Y,oBAAA,IAAe,EAAf,qBACA,IAAA+a,+BAAA,IAA0B,EAA1B,gCACA,IAAAC,wBAAA,IAAmB,EAAnB,yBAEA,IAAAC,oBAAA,2BACA,IAAAC,wBAAA,IAAmB,EAAnB,yBACA3tK,EAAA,EAAAA,SAEIu4J,EAAA,EAAAA,YACFA,GAAegT,IACjBhT,EAAcvxK,KAAKk0K,kCAAkC3C,IAGvD,IAAMqV,EAAS,SAAC3R,GAAwC,OACtD,gBAACjsC,EAAG,KAAKouC,EAAiBnC,GACxB,wBAAMnrK,UAAW,EAAKu6J,YAAYkd,cAAa,oBAAoB,sBAChE9V,EAAa7tJ,EAAO,EAAK6lK,eACzB,EAAKC,wBACL8C,EAAwB5oK,EAAO,EAAKumK,0BACpCsC,EAAiB7oK,EAAO,EAAKqmK,oBAC5B,EAAKyB,iBACJnB,GAAaF,GAAiB,EAAKzmK,MAAM+oK,mBAC1CA,EAAiB,EAAK/oK,MAAO,EAAKwmK,mBACnCG,IACEA,EAAUjZ,YACX,EAAKub,qBACLH,EAAa,EAAKI,cAAcvC,GAAY,EAbI,kBAkBlDwC,EAAUxV,EAEd,gBAAC,GAAU,CACTA,YAAcvxK,KAAK0lL,oBAA+BjmL,EAAd8xK,EACpC/c,gBAAkB4iB,EAAoB,oBACtCp+J,SAAUA,IAET,SAACi8J,GAAuC,OAAA2R,EAAA,MAG3CA,IAGF,OAAIrC,GAAaA,EAAUjZ,WAEvB,wBAAM3yJ,MAAO,CAAE0D,QAAS,iBACrB0qK,EACA/mL,KAAK6mL,qBAAuBH,EAAa1mL,KAAK8mL,cAAcvC,GAAYvkL,KAAKskL,gBAMlF,gCACGyC,EACD,gBAACvgC,GAAU,QAUT,YAAAqgC,kBAAR,WACU,IAAA/B,EAAA,WAAAA,WAEF,aAAEkC,EAAA,EAAAA,YAAaC,EAAA,EAAAA,iCAErB,OAAKnC,MAGMkC,IAAgBhnL,KAAKwjL,uBAAwByD,IA0ElD,YAAAlD,SAAR,WAKE,OAA2B,OAApB/jL,KAAK4d,MAAMzS,YAAsC1L,IAApBO,KAAK4d,MAAMzS,MAAqD,kBAAxBnL,KAAK4d,MAAM/C,WA8CjF,YAAAisK,cAAR,SAAsBvC,GACZ,IAAAyC,EAAA,WAAAA,YACAlC,EAAA,WAAAA,WASR,OAJKP,EAAUt5B,WAAcs5B,EAAU9H,iBAAkBz8K,KAAK+jL,aAC5DQ,EAAY,EAAH,KAAQA,GAAS,CAAE9H,eAAgBz8K,KAAKgkL,YAGnD,KACE7rL,GAAI6H,KAAKgkL,SAAW,QACpB7mB,gBAAiBtR,IACd04B,GAAS,CACZ3H,uBAAwB58K,KAAK6kL,4BAC7B7wB,mBAAoBh0J,KAAK4kL,wBACzBjzE,OAAQq1E,EAAclC,OAAarlL,EACnCqK,UAAW2I,GAAI,yBAA0B8xK,EAAUz6K,WACnD9T,OAAQgK,KAAK0lL,eAAiB1lL,KAAKujL,sBAAsBrsK,QAAUlX,KAAKsjL,eAAepsK,QACvF0oJ,UAAW5/J,KAAK0kL,kBA6CZ,YAAAyB,4BAAR,SAAoCt1K,EAAUumK,GAA9C,WACQ,aACJ,IAAAl9J,cAAA,IAAS,EAAT,KACAlB,EAAA,EAAAA,SACA4sK,EAAA,EAAAA,mBACA3kI,EAAA,EAAAA,QACAimI,EAAA,EAAAA,yBACA7X,EAAA,EAAAA,gBACAkV,EAAA,EAAAA,UACA7qJ,EAAA,EAAAA,OACA5E,EAAA,EAAAA,KACAqyJ,EAAA,EAAAA,yBAEI5V,EAAA,WAAAA,YACEuT,EAAA,WAAAA,WAEFrkI,EAAaymI,EACfA,IAA2BluK,GAAW8rK,IAAc7jI,IAAW2kI,GAC/D1rK,GAAU,GAA6BA,IAAWlB,GAAW8rK,IAAc7jI,IAAWouH,GAE1F,GAAO+H,EAAa,CAClB79J,aAAS9Z,EACT2nL,mBAAe3nL,EACf4mL,iBAAa5mL,EACb01B,UAAW,EACX,qBAAqB,IAGnBo8I,GAAegT,IACjBhT,EAAcvxK,KAAKk0K,kCAAkC3C,IAGvD,IAAMxmB,EAAiBvS,GAAsD4+B,EAAa,GAAI,CAAC,aAG3F+P,GACF,GAAO/P,EAAa+P,GAGtB,IAAME,EAAc,SAACpS,GAAwC,OAC3D,2BACMlqB,EAAc,mBACDkqB,EAAmBA,EAAiB,wBAAqBx1K,EAC1Eq1B,KAAMA,GAAc,SAAQ,gBACb9b,EAAQ,iBACR,EAAI,iBACH8rK,EAAU,eACZprJ,IAAWunB,OAAUxhD,EAAS,mBAC1BmnJ,GAChBwwB,EAAY,oBACZnC,EAAmBA,EAAiB,yBAAsBx1K,GAE5DqK,UAAW22C,GAAcA,EAAW8hI,qBACpC3qK,UAAW,EAAK2tK,+BAChBzO,aAAc,EAAKJ,cACnBv8J,IAAK,EAAKopK,sBAAqB,qBACZ,EACnBhqK,QAAUP,GAAaq2J,OAAoD5vK,EAAlC,EAAKylL,2BAC9C/vJ,UAAYnc,IAAaq2J,GAAoBuW,EAAqB,OAAInmL,EAAS,uBACzD23K,EAAY,wBAClCyG,eAAgB,EAAKoH,gCAErB,wBAAMtsK,MAAO,CAAE0D,QAAS,SACrB,EAAK+pK,iBAAiBv1K,EAAKumK,GAC3B,EAAKkQ,+BAA+B7mI,EAAYw0H,GAChD,EAAKsS,4BA1BiD,MA+B7D,OAAOhW,EACL,gBAAC,GAAU,CAACA,YAAaA,EAAav4J,SAAUA,IAC7C,SAACi8J,GAAuC,OAAAoS,EAAA,MAG3CA,KA6BI,YAAAE,4BAAR,SAAoC9mI,GAClC,GAAIA,GAAcA,EAAWysH,QAAS,CAIpC,OAAO,wBAAMpjK,UAAW22C,EAAWysH,QAAO,eAAe,EAAM3zJ,QAH/C,SAACspI,GACfA,EAAG1/H,qBAIP,OAAO,MAGD,YAAAmkK,+BAAR,SACE7mI,EACAw0H,GAEM,iBACJ2Q,EAAA,EAAAA,mBACA3kI,EAAA,EAAAA,QACAjoC,EAAA,EAAAA,SACAwuK,EAAA,EAAAA,qBACAC,EAAA,EAAAA,qBACApY,EAAA,EAAAA,gBAEMyV,EAAA,WAAAA,WACJT,EAAgBrkL,KAAK4d,MAAMymK,mBAET5kL,IAAlB4kL,IACFA,EAAgB,CACdl/C,SAAU,gBAId,IAAMuiD,EAAmB,EAAH,KACjBF,GAAoB,CACvBttK,OAAQumC,EACRQ,QAASA,EACTjoC,SAAUA,EACV4sK,mBAAoBA,EACpBrsK,QAASvZ,KAAKmlL,aACdZ,eAAW9kL,EACX+rK,UAAW,EAAF,KAAO6Y,GAAa,CAAEv6K,UAAW9J,KAAKqkK,YAAYxlC,WAC3DosB,UAAWw8B,EACX,iBAAiB,EACjB,iBAAkB3C,EAClB,qBAAqB,IAIvB,OACE,gBAAC6C,EAAU,KACLD,EAAgB,2BACKzS,EAAmBA,EAAiB,2BAA6BA,EAC1F39G,YAAat3D,KAAK6wC,aAClB1b,SAAUk6I,IAAoBuW,EAAqB,GAAK,MAsItD,YAAAj/B,eAAR,SACE9D,GAGQ,IAAAukC,EAAA,WAAAA,cACJA,GACFA,EAAcvkC,GAGO,UAAnBA,EAAGhrD,cACL73F,KAAK22K,8BAEL9zB,EAAGrjI,iBACHqjI,EAAG+zB,6BAIC,YAAAD,4BAAR,2BAGmCl3K,IAA7BO,KAAKs3K,sBACPt3K,KAAK8/J,OAAO3sI,aAAanzB,KAAKs3K,qBAC9Bt3K,KAAKs3K,yBAAsB73K,GAE7BO,KAAKy2K,kBAAmB,EAExBz2K,KAAKs3K,oBAAsBt3K,KAAK8/J,OAAOpuJ,YAAW,WAChD,EAAK+kK,kBAAmB,EACxB,EAAKa,yBAAsB73K,EAI3B,EAAK2gB,UAn1BY,MA41Bb,YAAAolK,oBAAR,SACE3iC,GAEA,OAAI7iJ,KAAK4d,MAAMgqK,mBACN/kC,EAAG//H,QAAU9iB,KAAK4d,MAAMgqK,qBACtB5nL,KAAK4d,MAAM2mK,YACb1hC,EAAG//H,QAAUsyH,KAAkByN,EAAGx8F,QAAUw8F,EAAG/lF,WAv1B5C,EAAAj2D,aAA0C,CACtDghL,cAAe,YACf3tK,OAAQ,GACR/X,OAAO,GAk3BX,EA13BA,CAAgC,aElD1B2lL,GAAuB,CAC3B5yH,QAAS,GAGL,GAAY,SAAC34C,GACjB,MAAO,CACLA,SAAUA,EACVL,OAAQ,QACRT,OAAQ,OACRmB,WAAY,OACZzB,UAAW,SACX4xE,WAAY,IASH,GAAY2lC,IACvB,SAAC/jF,G,QACS20F,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAASuhC,EAAA,EAAAA,MAE3BtnH,EAASmnH,EAAenB,aACxB/B,EAAqBkD,EAAelD,mBACpCW,EAAeuC,EAAevC,aAC9BgnD,EAA0B,CAC9BvsK,MAAO,EACPD,KAAM,EACNmG,QAAS,EACT+R,OAAQ,EACR69F,aAAc,cAGhB,MAAO,CACL/9H,KAAM,CACJ49H,GAAcxiF,EAAO,CAAE8iF,MAAO,EAAGJ,kBAAmB02D,EAAyBrxH,YAAa,gBAC1F/nB,EAAM80F,MAAM9T,OACZ,CACEv0G,UAAW,aACXe,OAAQ,aAAeA,EACvBsjK,WAAY,OACZpjK,QAAS,eACTiyJ,eAAgB,OAChBnzJ,UAAW,SACXywC,OAAQ,UACRhzC,QAAS,SACT+7D,aAAcutB,EAAQg3B,eAEtBxS,UAAW,CAET,cAAe,CACbxrG,SAAU,WACVM,KAAM,EACND,IAAK,MAMbsyJ,aAAc,CACZ18C,GAAcxiF,EAAO,CAAE8iF,MAAO,EAAGJ,kBAAmB02D,EAAyBrxH,YAAa,gBAC1F,CACE3rB,gBAAiBq1F,EACjB1pE,YAAa0pE,EACbxkH,MAAOmlH,EACPn1E,OAAQ,UACR86D,UAAW,CACT,SAAUohE,GACV,SAAUA,MAKhBrZ,aAAc,CACZ7yJ,MAAOmlH,EACPra,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,YAEV,IAGHkmK,iBAAkB,CAChBlmK,MAAOmlH,EACPra,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,YAEV,IAGH2lK,cAAe,CACbllK,QAAS,OACTZ,OAAQ,OACR6/H,SAAU,SACVqzB,eAAgB,SAChB1B,WAAY,UAEd/qG,YAAa,CACX7lD,QAAS,SAGXmlK,cAAe,CACb30F,SAAU,EACVxwE,QAAS,SAGXmE,KAAM,GAAUijH,EAAM7T,WAAWrzG,UAEjCsiH,SAAU,GAAU4E,EAAMhU,MAAMlzG,UAEhC8Y,MAAO,CACLnZ,OAAQ,QACRU,WAAY,OACZP,QAAS,SAGX0yJ,iBAAkB58C,OCnHX,GAAYO,IACvB,SAAC/jF,EAAeq5I,G,MAwEd,OAAOtiD,GAvEiC,GAAoB/2F,GAClB,CACxCp7C,KAAM,CACJqlB,QAPgB,QAQhB6C,OATsB,OAUtBG,MAAO+yB,EAAM40F,QAAQrN,eACrBnrF,gBAAiB,cACjB5uB,OAAQ,yBAGV2xJ,YAAa,CACXlyJ,MAAO+yB,EAAM40F,QAAQ9N,aACrB/O,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,YACb96C,MAAO,aAEV,IAGHklK,YAAa,CACXllK,MAAO+yB,EAAM40F,QAAQ9N,cAGvBw4C,YAAa,CACXryJ,MAAO+yB,EAAM40F,QAAQxN,OAGvBm4C,aAAc,CACZtyJ,MAAO+yB,EAAM40F,QAAQ9N,cAGvBwrD,YAAa,CACXrlK,MAAO+yB,EAAM40F,QAAQjO,aAGvBu4C,aAAc,CACZjyJ,MAAO+yB,EAAM40F,QAAQjN,gBACrBvrF,gBAAiB,cACjB2rB,YAAa,eAGfs3G,YAAa,CACXpyJ,MAAO+yB,EAAM40F,QAAQxN,OAGvB2rD,YAAa,CACX9lK,MAAO+yB,EAAM40F,QAAQjO,aAGvBisD,cAAe,CACb5S,eAAgB,cAGlBnuJ,KAAM,CACJ5E,MAAO+yB,EAAM40F,QAAQ/N,cAGvBi5C,aAAc,CACZ7yJ,MAAO,WAGTijH,SAAU,CACRjjH,MAAO+yB,EAAM40F,QAAQnN,kBAGvBorD,cAAe,CACb30F,SAAU,IAI+Cm7F,MC5EpDC,GCKb,yB,+CAaA,OAbkC,OACzB,YAAAngL,OAAP,WACQ,iBAAEoS,EAAA,EAAAA,OAAQy0B,EAAA,EAAAA,MAEhB,OACE,gBAAC,GAAU,KACL3uC,KAAK4d,MAAK,CACd0iK,iBAAiB,uCACjBpmK,OAAQ,GAAUy0B,EAAQz0B,GAC1B0pK,oBAAqB79B,OAThBmiC,EAAY,GADxB,GAAa,eAAgB,CAAC,QAAS,WAAW,IACtCA,GAAb,CAAkC,aCJlC,eACE,WAAYtqK,GAAZ,MACE,YAAMA,IAAM,K,OAEZ8/H,GAAuB,G,EAS3B,OAb+B,OAUtB,YAAA51I,OAAP,WACE,OAAO,2BAAS0wI,GAAex4I,KAAK4d,MAAO26H,KAAiBv4I,KAAK4d,MAAM/C,WAE3E,EAbA,CAA+B,cLoJ/B,SAAYuoK,GAIV,qBAKA,mBATF,CAAYA,QAAe,KAe3B,SAAYC,GAIV,uBAKA,qBATF,CAAYA,QAAa,KMpJzB,IAAM,GAAgB1mC,KA4BtB,eAKE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,KAJN,EAAAuqK,WAAa,cA6Gb,EAAAC,iBAAmB,SACzBC,EACAl5F,EACAm5F,GAEQ,IAGJ5b,EAHI6b,EAAA,EAAAA,QAASC,EAAA,EAAAA,kBACXC,EAAQJ,EAAeK,kBAAkBH,GACvCI,EAAA,EAAAA,iBAEFC,EAAsBN,IAAgBC,EAG1C7b,EADEic,EACYA,EAAiBx5F,EAAM,EAAK05F,oBAE5B,EAAKA,mBAAmB15F,GAGxC,IAAI25F,EAAgB35F,EAAK45F,YAAc,GAKvC,OAJAD,GAAiB35F,EAAK65F,UAAY,KAAO75F,EAAK65F,UAAY,IAAM,GAEhEF,GAAiB35F,EAAK85F,SAAW,MAAQ,GAGvC,gBAAChB,GAAa,KACRO,EAAiB,CACrBrwL,GAAIswL,EACJh2L,IAAK81L,EACLz+K,UAAW8+K,EAAa,EAAKvkB,YAAY6kB,eAAiB,EAAK7kB,YAAYl1E,KAE3E51E,QAAS,EAAK4vK,aAAaz2L,KAAK,EAAM61L,GAEtC3wK,UAAW,EAAKu3B,WAAWz8C,KAAK,EAAM61L,GAAQ,aAClCp5F,EAAK87D,UACjBn2H,KAAK,MAAK,gBACK8zJ,EACfn3L,KAAM09F,EAAK45F,WACXxX,YAAapiF,EAAKoiF,YAAW,eACfuX,IAEbpc,IAKC,EAAAmc,mBAAqB,SAAC15F,GACpB,IAAA65F,EAAA,EAAAA,UAAWC,EAAA,EAAAA,SAAUF,EAAA,EAAAA,WACvBtoI,EAAa,EAAK4jH,YAExB,OACE,wBAAMv6J,UAAW22C,EAAWisH,kBACZjtK,IAAbwpL,GACC,wBAAMn/K,UAAW22C,EAAWjgC,MAC1B,gBAAC0qI,GAAI,CAAC/lB,SAAU8jD,UAGJxpL,IAAfspL,GAA4B,wBAAMj/K,UAAW22C,EAAWt1C,M,IAAQgkF,EAAK45F,iBACvDtpL,IAAdupL,GAA2B,wBAAMl/K,UAAW22C,EAAW7vC,O,KAAUo4K,EAAkB,OA/JxFtrC,GAAuB,GASvB,EAAK0rC,SAAWnrC,GA5CF,SA6Cd,IAKIqqC,EALEe,EAA2B,EAAKC,eAAe1rK,GAAOyrK,MAGpD,IAAAE,0BAAA,6BAA+C,IAAAC,4BAAA,IAAuB,EAAvB,yB,OAInDD,EACFjB,EAAciB,EAC2B,kBAAzBC,EAChBlB,EAAce,EAAMG,GAAsBjB,QACjCc,EAAMnzL,SACfoyL,EAAce,EAAM,GAAGd,SAGzB,EAAKxjL,MAAQ,CACXujL,YAAW,G,EA6QjB,OA/S+B,OAyCtB,YAAAloK,MAAP,WACMpgB,KAAKmoL,WAAWjxK,SAClBlX,KAAKmoL,WAAWjxK,QAAQkJ,SAIrB,YAAAtY,OAAP,sBACUk1K,EAAA,WAAAA,eACFqL,EAAiBroL,KAAKspL,eAAetpL,KAAK4d,OAC1C0qK,EAActoL,KAAKypL,gBAAgBpB,GAEnC3zB,EAAWlc,GAAqDx4I,KAAK4d,MAAO26H,IAIlF,OAFAv4I,KAAKqkK,YAAcrkK,KAAKsoK,eAAetoK,KAAK4d,OAG1C,yBAAKkX,KAAK,WAAc4/H,GACrB10J,KAAK0pL,kBAAkBrB,EAAgBC,EAAatL,GACpDsL,GACCD,EAAegB,MAAMnrL,KACnB,SAACixF,GACC,QAAuB,IAAtBA,EAAKw6F,cAAyBrB,IAAgBn5F,EAAKo5F,UACpD,EAAKqB,iBAAiBvB,EAAgBl5F,EAAKo5F,QAASD,IAAgBn5F,EAAKo5F,cAM7E,YAAAkB,gBAAR,SAAwBpB,GACd,iBAAAC,YAER,GAAItoL,KAAK6pL,YAAYxB,EAAgByB,IAA0C,OAArBA,EACxD,OAAOA,EAGD,iBAAAxB,YACR,OAAItoL,KAAK6pL,YAAYxB,EAAgB0B,GAC5BA,EAGL1B,EAAegB,MAAMnzL,OAChBmyL,EAAegB,MAAM,GAAGd,aADjC,GAUM,YAAAmB,kBAAR,SACErB,EACAC,EACAtL,GAHF,I,EAAA,OAKQl/J,EAAQuqK,EAAegB,MAAMnrL,KAAI,SAAC/M,GAAM,SAAKi3L,iBAAiBC,EAAgBl3L,EAAtC,MAE9C,OACE,gBAAC,GAAS,GACR2jC,KAAK,UACLipH,aAAc/9I,KAAKmoL,WACnBnxJ,UAAWq1H,GAAmB9R,YAC1ByiC,EAAc,CAClBlzK,UAAW2I,GAAIzS,KAAKqkK,YAAY9wK,KAAoB,QAAhB,EAAEypL,SAAc,eAAElzK,aAErDgU,IAqEC,YAAA8rK,iBAAR,SACEvB,EACAE,EACA39K,GAEA,GAAI5K,KAAK4d,MAAMosK,cAAgBzB,EAC7B,OAAO,KAGT,IAAM7kL,EAAQ2kL,EAAe4B,kBAAkB1B,GACzC2B,EAAgB7B,EAAeK,kBAAkBH,GAEvD,OACE,uBACEzzJ,KAAK,WACL68E,QAAS/mG,EACTnY,IAAK81L,EAAO,eACE39K,EAAQ,kBACLs/K,EACjBpgL,UAAW9J,KAAKqkK,YAAY8lB,eAE3B,WAAe75K,QAAQtQ,KAAK4d,MAAM/C,UAAUnX,KAS3C,YAAA4lL,eAAR,SAAuB1rK,GAAvB,WACQ2d,EAA8B,CAClC8tJ,MAAO,GACPY,kBAAmB,GACnBvB,kBAAmB,IAsBrB,OAnBA,WAAexqL,IAAI,WAAeoS,QAAQsN,EAAM/C,WAAW,SAACm/B,EAAyBt2C,GACnF,GAAI0mL,GAAapwI,GAAQ,CACvB,IAAMqwI,EAAYrwI,EACZ,UAAEswI,EAAA,EAAAA,SAAU,oBACZ/B,EAAU8B,EAAUzsK,MAAM2qK,SAAW7kL,EAAMzP,WAEjDsnC,EAAO8tJ,MAAMt1L,KAAI,KAEfg1L,WAAYuB,GACTC,GAAc,CACjBhC,QAASA,KAEXhtJ,EAAO0uJ,kBAAkB1B,GAAW7kL,EACpC63B,EAAOmtJ,kBAAkBH,GAAW,EAAKiC,UAAUjC,EAAS7kL,QAE5DyR,GAAK,kFAIFomB,GAMD,YAAAivJ,UAAR,SAAkBjC,EAAiB7kL,GACjC,OAAI1D,KAAK4d,MAAM6sK,SACNzqL,KAAK4d,MAAM6sK,SAASlC,EAAS7kL,GAG/B1D,KAAKopL,SAAW,OAAO1lL,GAMxB,YAAAmmL,YAAR,SAAoBxB,EAAqCE,GACvD,YAAmB9oL,IAAZ8oL,GAAqC,OAAZA,QAAkE9oL,IAA9C4oL,EAAe4B,kBAAkB1B,IAM/E,YAAAY,aAAR,SAAqBZ,EAAiB1lC,GACpCA,EAAGrjI,iBACHxf,KAAK0qL,oBAAoBnC,EAAS1lC,IAM5B,YAAA1zG,WAAR,SAAmBo5I,EAAiB1lC,GAC9BA,EAAG//H,QAAUsyH,KACfyN,EAAGrjI,iBACHxf,KAAK0qL,oBAAoBnC,KAOrB,YAAAmC,oBAAR,SAA4BnC,EAAiB1lC,GAC3C7iJ,KAAK86E,SAAS,CACZwtG,YAAaC,IAGf,IAAMF,EAAiBroL,KAAKspL,eAAetpL,KAAK4d,OAEhD,GAAI5d,KAAK4d,MAAM+sK,aAAetC,EAAe4B,kBAAkB1B,IAAY,EAAG,CAC5E,IAAM7kL,EAAQ2kL,EAAe4B,kBAAkB1B,GAGzCzpK,EAAO,WAAexO,QAAQtQ,KAAK4d,MAAM/C,UAAUnX,GAErD0mL,GAAatrK,IACf9e,KAAK4d,MAAM+sK,YAAY7rK,EAAM+jI,KAK3B,YAAAylB,eAAR,SAAuB1qJ,GACb,IAAA+wB,EAAA,EAAAA,MACFi8I,EAAuBhtK,EAAMitK,WAAaxH,GAAcxzD,MACxDi7D,EAAsBltK,EAAMmtK,aAAe3H,GAAgB4H,KAEjE,OAAO,GAAcptK,EAAM1D,OAAS,CAClCy0B,MAAOA,EACPi8I,YAAW,EACXE,WAAU,KAGhB,EA/SA,CAA+B,aAiT/B,SAASV,GAAatrK,GAIpB,QACIA,GACc,kBAATA,KACJA,EAA4B/a,MAE7B+a,EAA4B/a,KAAatS,OAAU,GAAkBA,KC/V3E,IAAMw5L,GAAmB,CACvBr6K,MAAO,iBACP4P,KAAM,gBACN0oK,eAAgB,cAChB/5F,KAAM,gBACNu9E,YAAa,uBACbn5K,KAAM,WACNq3L,YAAa,kBACbE,WAAY,iBACZ3/K,KAAM,iBAGF,GAAa,SAACyS,G,QACVgtK,EAAA,EAAAA,YAAaE,EAAA,EAAAA,WACf,UAAExnD,EAAA,EAAAA,eAAgBG,EAAA,EAAAA,MACxB,MAAO,CACLA,EAAM9T,OACN,CACE/zG,MAAO0nH,EAAerC,WACtB5kH,QAAS,eACTO,WAAY,GACZnB,OAAQ,GACR8/H,YAAa,EACb3iI,QAAS,QACTuC,UAAW,SACXD,SAAU,WACV6vB,gBAAiB,cACjB5uB,OAAQ,EACRw4D,aAAc,EACd+xC,WAAS,GACP,UAAW,CACT37E,gBAAiB,cACjBrpB,OAAQ,EACRrY,QAAS,KACToS,OAAQ,EACRD,KAAM,EACNN,SAAU,WACVuY,MAAO,EACP8yD,WAAY,QAAQ8jC,GAAiC,IAAIA,GAAgC,kCACrEA,GAAiC,IAAIA,IAE3D,SAAU,CACRzuG,MAAO,cACPvS,QAAS,qBACTgT,QAAS,QACTK,WAAYuuG,GAAYuF,KACxB/0G,OAAQ,EACRJ,SAAU,SACVkmC,WAAY,UAEd,SAAU,CACRxW,gBAAiBu4F,EAAetD,wBAChCpkH,MAAO0nH,EAAe7B,kBACtB71E,OAAQ,WAEV,UAAW,CACT7gB,gBAAiBu4F,EAAe3D,wBAChC/jH,MAAO0nH,EAAe7B,mBAExB,SAAU,CACRvsE,QAAS,SAEX,EAAC,IAAI67D,GAAuB,YAAa,CACvC77D,QAAS,aAAaouE,EAAevB,aAEvC,EAAC,IAAIhR,GAAuB,kBAAmB,CAC7C1nH,QAAS,qBACT6R,SAAU,WACViB,OAAQ,GAEX,IAEHyuK,GAAe,CACbruK,SAAUknH,EAAM5T,MAAMtzG,UAExBuuK,GAAc,CACZ,CACEvvC,YAAa,EACb9/H,OAAQ,GACRmB,WAAY,GACZmuB,gBAAiBu4F,EAAexF,iBAChCllH,QAAS,SACT8hI,cAAe,MACfh0B,WAAS,GACP,SAAU,CACRwkE,cAAe,SAEjB,EAAC,IAAIn6D,GAAuB,oBAAqB,CAC/Ct1G,OAAQ,OACRW,WAAY,cACZmqE,WAAY,QAEf,OC7FI4kG,GAA8CvvC,GACzD,IDkGuB,SAACh+H,G,UAChB9T,EAAA,EAAAA,UAAW8gL,EAAA,EAAAA,YAAaE,EAAA,EAAAA,WAAYn8I,EAAA,EAAAA,MACpC20F,EAAA,EAAAA,eAAgBG,EAAA,EAAAA,MAElBhjF,EAAa8yE,GAAoB03D,GAAkBt8I,GAEzD,MAAO,CACLp7C,KAAM,CACJktD,EAAWltD,KACXkwI,EAAM9T,OACN0U,GACA,CACEnpH,SAAU,WACVU,MAAO0nH,EAAen0C,KACtBnyE,WAAY,UAEd4tK,GAAenqI,EAAWmqI,YAC1BE,GAAcrqI,EAAWqqI,WACzBhhL,GAEFqgL,cAAe,CACbzjE,UAAW,CACT,YAAa,CACXrqG,QAAS,UAIf8yE,KAAM,EAAF,CACF1uC,EAAW0uC,MACR,GAAWvxE,GAAM,CACpBktK,GAAc,CACZpkE,UAAW,CACT,mBAAoB,CAClB9qG,MAAO0nH,EAAe9E,0BAExB,oBAAqB,CACnB5iH,MAAO0nH,EAAevF,kBACtBhzF,gBAAiBu4F,EAAe7E,6BAKxCyqD,eAAgB,EAAF,CACZzoI,EAAW0uC,KACX1uC,EAAWyoI,gBACR,GAAWtrK,GAAM,CACpB,CACElB,WAAYuuG,GAAYsF,SACxB7J,WAAS,GACP,UAAW,CACT37E,gBAAiBu4F,EAAe5E,uBAChChY,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,aAEpB,IAEH,iBAAkB,CAChBvvB,KAAM,EACNiY,MAAO,IAET,EAACg9F,IAAuB,CACtB70G,MAAO,aAEV,IAEHkvK,GAAc,CACZ//I,gBAAiBu4F,EAAe7E,wBAChC7iH,MAAO0nH,EAAevF,kBACtBrhH,WAAYuuG,GAAYqF,QACxB5J,WAAS,GACP,UAAW,CACT37E,gBAAiB,cACjBw7C,WAAY,OACZrrE,SAAU,WACVK,IAAK,EACLC,KAAM,EACNiY,MAAO,EACP/R,OAAQ,EACRrY,QAAS,KACToS,OAAQ,GAEV,SAAU,CACRsvB,gBAAiBu4F,EAAelE,+BAChCxjH,MAAO0nH,EAAevF,mBAExB,WAAY,CACVhzF,gBAAiBu4F,EAAetE,+BAChCpjH,MAAO0nH,EAAevF,oBAExB,EAACtN,IAAoB,GACnB/zG,WAAYuuG,GAAYsF,SACxB30G,MAAO,gBACPQ,WAAY,a/L1Kf,CACLkxJ,kBAAmB,OACnBC,qBAAsB,S+L2KjB,MAGLb,YAAa,CACXjsH,EAAWisH,YACX,CACEh8I,KAAM,WACNg2F,UAAW,CACT,SAAU,CACRnjE,WAAY,GAEd,oBAAqB,CACnBA,WAAY,MAKpBp4C,KAAM,CACJs1C,EAAWt1C,KACX,CACEkR,QAAS,eACTq+H,cAAe,QAGnB9pI,MAAO,CACL6vC,EAAW7vC,MACX,CACEyL,QAAS,eACTq+H,cAAe,QAGnBl6H,KAAMigC,EAAWjgC,aC/NnB/gB,EACA,CACEu8I,MAAO,U,SCXL,GAAgBW,GAAmD,CAIvE7pB,UAAW,MCHAs4D,GAA8CxvC,GDM3D,yB,+CAeA,OAf+B,OACtB,YAAA9zI,OAAP,WACQ,iBAAE,IAAAoyI,GAAA,uBAAwBr/H,EAAA,EAAAA,SAAU/Q,EAAA,EAAAA,UAAWkP,EAAA,EAAAA,SAAUkB,EAAA,EAAAA,OAAQZ,EAAA,EAAAA,SAAUq1B,EAAA,EAAAA,MAC3E8R,EAAa,GAAcvmC,EAAQ,CACvCpQ,UAAS,EACTkP,SAAQ,EACRM,SAAQ,EACRq1B,MAAOA,IAET,OACE,gBAAC2rG,EAAQ,KAAK9B,GAAex4I,KAAK4d,MAAO26H,IAAc,CAAEzuI,UAAW22C,EAAWltD,OAC5EsnB,IAIT,EAfA,CAA+B,cETN,SAAC+C,G,MAChB+wB,EAAA,EAAAA,MAAO7kC,EAAA,EAAAA,UAAWkP,EAAA,EAAAA,SAAUM,EAAA,EAAAA,SAC5BgqH,EAAA,EAAAA,eAGF+nD,EAAkBpgE,GAAYsF,SAC9B+6D,EAAahoD,EAAetC,SAC5BuqD,EAAqBjoD,EAAe3C,iBACpC6qD,EAAyBloD,EAAe1G,UAE9C,MAAO,CACLrpI,KAAM,CACJ,WACAo7C,EAAM80F,MAAM9T,OACZ,CACEjzG,WAAY2uK,EACZzvK,MAAO0vK,EACPlwK,UAAW,aACXkpH,UAAW,OACXpoH,OAAQ,EACRG,QAAS,QACTzD,QAAS,QACT6yK,SAAU,aACVvuK,aAAc,cAEhBlE,GAAY,CACV4C,MAAO2vK,EACP7kE,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,YnMCV,CACL0xJ,kBAAmB,OACnBC,qBAAsB,SmMAjB,IAEHj0J,GAAY,CACVotG,UAAW,CACT,UAAW,CACTr9G,QAAS,OACTuS,MAAO4vK,EACP1xK,aAAc,MAIpBhQ,WDrCJrK,EACA,CACEu8I,MAAO,UEwBX,eAOE,WAAYp+H,GAAZ,MACE,YAAMA,IAAM,K,OACZ,EAAK7Y,MAAQ,CACX2mL,YAAY,G,EAsBlB,OAhCmC,OAc1B,YAAA3nF,kBAAP,sBACQzxC,EAAA,WAAAA,MACNtyD,KAAK2rL,WAAazrL,OAAOwR,YAAW,WAClC,EAAKopE,SAAS,CACZ4wG,YAAY,MAEbp5H,IAGE,YAAAg6C,qBAAP,WACMtsG,KAAK2rL,YACPx4J,aAAanzB,KAAK2rL,aAIf,YAAA7jL,OAAP,WACE,OAAO9H,KAAK+E,MAAM2mL,WAAc,WAAervG,KAAKr8E,KAAK4d,MAAM/C,UAAuC,MA7B1F,EAAAhU,aAAe,CAC3ByrD,MAAO,GA8BX,EAhCA,CAAmC,aCjC5B,ICymBHs5H,GAplBE,GAAgBjvC,KAqCtB,eAuBE,WAAmB/+H,GAAnB,MACE,YAAMA,IAAM,KAPN,EAAAiuK,aAAe,cA4Sf,EAAAv7B,SAAW,SAACzN,GACd,EAAKjlI,MAAMpE,SACb,EAAKoE,MAAMpE,QAAQqpI,GAGrB,EAAK/nE,SAAS,CAAE7pC,WAAW,IAAQ,WAC7B,EAAKrzB,MAAMkuK,mBACb,EAAKC,UAAU,EAAK55L,WAKlB,EAAA4+C,QAAU,SAAC8xG,GACb,EAAKjlI,MAAMnE,QACb,EAAKmE,MAAMnE,OAAOopI,GAGpB,EAAK/nE,SAAS,CAAE7pC,WAAW,IAAS,WAC9B,EAAKrzB,MAAMouK,oBACb,EAAKD,UAAU,EAAK55L,WAKlB,EAAA85L,eAAiB,SAACruK,GAChB,IAAAyX,EAAA,EAAAA,MAAO/b,EAAA,EAAAA,SAET4yK,EAAc,EAAK7nB,YAAYz+B,mBAChC,EAAKy+B,YAAYz+B,mBAAmBvwG,WACrC51B,EAEJ,OAAI41B,EAEA,gBAAC+1J,GAAK,CAAC9xK,SAAUA,EAAU6yK,QAAS,EAAKjqC,IAAKhoI,OAAQgyK,EAAalzK,SAAU4E,EAAM5E,SAAU7gB,GAAI,EAAK6rL,UACnGpmK,EAAMyX,OAIN,MAGD,EAAAyuJ,qBAAuB,SAAClmK,GAC9B,OAAIA,EAAMskD,YACD,wBAAMp4D,UAAW,EAAKu6J,YAAYniG,aAActkD,EAAMskD,aAExD,MAqFD,EAAAkqH,qBAAuB,SAAC7sK,GAC9B,EAAKu7D,UAAS,SAAA0pE,GAAa,MAAC,CAAE6nC,qBAAsB7nC,EAAzB,yBAGrB,EAAA8nC,eAAiB,SAAC/sK,GASxB,IAYIgtK,EAXEp6L,EADUotB,EAAMvpB,OACA7D,WAERsN,IAAVtN,GAAuBA,IAAU,EAAKq6L,mBAG1C,EAAKA,iBAAmBr6L,EAIxBotB,EAAMqzE,UAGN,EAAK9X,UACH,SAAC0pE,EAA4B5mI,GAC3B,IAAMk1J,EAAY2Z,GAAU7uK,EAAO4mI,IAAc,GAGjD,OAFA+nC,EAAcp6L,IAAU2gL,IAQjB,EAAK4Z,cALH,KAK0B,CAAEC,kBAAmBx6L,MAE1D,WAEU,IAAAioB,EAAA,QAAAA,UACHmyK,GAAenyK,GAClBA,EAASmF,EAAOptB,QAhdtBurJ,GAAuB,GACvB,EAAKoiB,OAAS,IAAI,GAAM,GAOxB,EAAK8sB,YAAc3uC,GAvCA,aAwCnB,EAAKimC,eAAiBjmC,GAAM,wBAC5B,EAAK+lC,SAAW/lC,GAAM,kBAEtB,EAAK4uC,uBAEC,QAAAlwL,oBAAA,MA9CkB,GA8ClB,E,MACsB,kBAAjBA,IAETA,EAAeqY,OAAOrY,IAExB,EAAKoI,MAAQ,CACX4nL,kBAAmB,EAAKD,mBAAgBjtL,EAAY9C,EACpDs0C,WAAW,EACX67I,aAAc,IAGhB,EAAKC,iBAAmB,EAAKjtB,OAAO7sI,SAAS,EAAK84J,UAAW,EAAKnuK,MAAMovK,wBACxE,EAAKC,gBAAkB,E,EAse3B,OA1hBmC,OA0DjC,sBAAW,oBAAK,C,IAAhB,WACE,OAAOR,GAAUzsL,KAAK4d,MAAO5d,KAAK+E,Q,gCAG7B,YAAAg/F,kBAAP,WACE/jG,KAAKktL,qBAEDltL,KAAK4d,MAAMuvK,gBACbntL,KAAK+rL,UAAU/rL,KAAK7N,QAIjB,YAAAm6G,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,WAGP,YAAAl8C,wBAAP,SAA+Bo6C,EAA4BwG,GACzD,MAAO,CACLlmI,UAAW,CAACte,KAAKsW,eAAgBtW,KAAKuW,gBAInC,YAAAozF,mBAAP,SACEq0C,EACAwG,EACA4oC,GAEA,IAAMxvK,EAAQ5d,KAAK4d,MACX,UAAAU,iBAAA,oBACD9J,EAAA,KAAOG,EAAA,OAERqpI,EAAUpkJ,cAAgBgkB,EAAMhkB,WAAa4qJ,EAAUvzG,YAG3DjxC,KAAKogB,QACS,OAAV5L,GAA0B,OAARG,GAAgBH,GAAS,GAAKG,GAAO,GACzD3U,KAAK01C,kBAAkBlhC,EAAOG,IAIlC,IAAMm+J,EAAY2Z,GAAUzuC,EAAWwG,GACjCryJ,EAAQ6N,KAAK7N,MACf2gL,IAAc3gL,IAEhB6N,KAAK6sL,qBAAqB7uC,GAItBh+I,KAAK+E,MAAM+nL,eAAiBlvK,EAAMkvK,cACpC9sL,KAAK86E,SAAS,CAAEgyG,aAAc,KAIhC9sL,KAAKktL,qBAGLltL,KAAKwsL,sBAAmB/sL,EAKpB4tL,GAA0BzvK,IAC5B5d,KAAK+sL,iBAAiB56L,KAKrB,YAAA2V,OAAP,WACQ,iBACJwlL,EAAA,EAAAA,WACAxjL,EAAA,EAAAA,UACAkP,EAAA,EAAAA,SACAwyJ,EAAA,EAAAA,UACA+hB,EAAA,EAAAA,eACAl4J,EAAA,EAAAA,MACAz7B,EAAA,EAAAA,UACA0f,EAAA,EAAAA,SACAk0K,EAAA,EAAAA,WACAtvC,EAAA,EAAAA,OACAuvC,EAAA,EAAAA,UACAx/G,EAAA,EAAAA,OACAt/B,EAAA,EAAAA,MACAz0B,EAAA,EAAAA,OACAwzK,EAAA,EAAAA,iBACAC,EAAA,EAAAA,kBACA5pL,EAAA,EAAAA,KACA,IAAA6pL,sBAAA,IAAiB,EAAjB,uBACA,IAAAC,sBAAA,IAAiB,EAAjB,uBACA,IAAAC,qBAAA,IAAgB,EAAhB,sBACA,IAAAlK,2BAAA,IAAsB,EAAtB,4BAEI,aAAE3yI,EAAA,EAAAA,UAAWo7I,EAAA,EAAAA,oBACbS,EAAe9sL,KAAK+tL,cAEpBC,IAAoBL,GAA8B,aAAT5pL,GAyZnD,W,MACE,GAA0C,mBAA/B6nL,GAA0C,CACnD,IAAM16D,EAAMx4D,KAEZ,GAAO,QAAP,EAAIw4D,SAAG,eAAEl7G,UAAW,CAElB,IAAMi4K,EAAS,MAAM7sL,KAAK8vH,EAAIl7G,UAAUkjB,WAAa,IAErD0yJ,KDnnBgB,W,QACd16D,EAAMx4D,KAEZ,SAAmB,QAAf,EAAI,QAAJ,EAACw4D,SAAG,eAAEl7G,iBAAS,eAAEkjB,YAIdg4F,EAAIl7G,UAAUkjB,UAAUv1B,QAAQ,YAAc,EC4mBlB,IAAYsqL,QAE3CrC,IAA6B,EAGjC,OAAOA,GAtaiEsC,GAEhEztI,EAAczgD,KAAKqkK,YAAc,GAAcnqJ,EAAS,CAC5Dy0B,MAAOA,EACP7kC,UAAS,EACTkP,SAAQ,EACRi9D,QAAShlC,EACT33B,SAAQ,EACR1f,UAAS,EACTu0L,WAAY94J,EACZ+4J,kBAAmBtB,EACnBQ,WAAU,EACVG,UAAS,EACTY,UAAW7iB,EACXgiB,WAAU,EACVD,eAAc,EACdG,iBAAgB,EAChBM,gBAAe,IAGjB,OACE,uBAAKlkL,UAAW22C,EAAWltD,MACzB,uBAAKuW,UAAW22C,EAAW+R,SACxBs7H,EAAc9tL,KAAK4d,MAAO5d,KAAKisL,gBAChC,uBAAKniL,UAAW22C,EAAW6tI,kBACZ7uL,IAAXy+I,GAAwBl+I,KAAK4d,MAAMgwK,iBACnC,uBAAK9jL,UAAW22C,EAAWy9F,QAAS0vC,EAAe5tL,KAAK4d,MAAO5d,KAAKuuL,kBAErE30L,EAAYoG,KAAKwuL,kBAAoBxuL,KAAKyuL,eAC1CjjB,GAAa,gBAACtgB,GAAI,GAACphJ,UAAW22C,EAAWjgC,MAAUgrJ,IACnDwiB,GAEC,0BAAQlkL,UAAW22C,EAAWiuI,aAAcn1K,QAASvZ,KAAKosL,qBAAsBroL,KAAK,UACnF,wBAAM+F,UAAW22C,EAAWkuI,YAC1B,gBAACzjC,GAAI,CACHphJ,UAAW22C,EAAWmuI,WACtBzpD,SAAUknD,EA9LP,OADE,mBAoMA5sL,IAAXwuE,GAAwBjuE,KAAK4d,MAAMiwK,iBACnC,uBAAK/jL,UAAW22C,EAAWwtB,QAAS4/G,EAAe7tL,KAAK4d,MAAO5d,KAAK6uL,oBAIzE7uL,KAAK8uL,yBACJ,wBAAM32L,GAAI6H,KAAKkkL,gBACZN,EAAoB5jL,KAAK4d,MAAO5d,KAAK8jL,sBACrCgJ,GACC,uBAAKh4J,KAAK,SACR,gBAAC,GAAa,KACZ,qBAAGhrB,UAAW22C,EAAWqsI,cACvB,6CAAyB,iBAAiBA,SAcrD,YAAA1sK,MAAP,WACMpgB,KAAK6rL,aAAa30K,SACpBlX,KAAK6rL,aAAa30K,QAAQkJ,SAOvB,YAAAsb,KAAP,WACM17B,KAAK6rL,aAAa30K,SACpBlX,KAAK6rL,aAAa30K,QAAQwkB,QAOvB,YAAA1B,OAAP,WACMh6B,KAAK6rL,aAAa30K,SACpBlX,KAAK6rL,aAAa30K,QAAQ8iB,UAOvB,YAAA+0J,kBAAP,SAAyB58L,GACnB6N,KAAK6rL,aAAa30K,UACpBlX,KAAK6rL,aAAa30K,QAAQZ,eAAiBnkB,IAOxC,YAAA68L,gBAAP,SAAuB78L,GACjB6N,KAAK6rL,aAAa30K,UACpBlX,KAAK6rL,aAAa30K,QAAQX,aAAepkB,IAO7C,sBAAW,6BAAc,C,IAAzB,WACE,OAAO6N,KAAK6rL,aAAa30K,QAAUlX,KAAK6rL,aAAa30K,QAAQZ,gBAAkB,G,gCAMjF,sBAAW,2BAAY,C,IAAvB,WACE,OAAOtW,KAAK6rL,aAAa30K,QAAUlX,KAAK6rL,aAAa30K,QAAQX,cAAgB,G,gCAQxE,YAAAm/B,kBAAP,SAAyBlhC,EAAeG,GAClC3U,KAAK6rL,aAAa30K,SACnBlX,KAAK6rL,aAAa30K,QAA6Bw+B,kBAAkBlhC,EAAOG,IAIrE,YAAAk4K,qBAAR,SAA6B7uC,GAGZh+I,KAAKkiJ,IAEXliJ,KAAK4d,MAQW,OAArB5d,KAAK4d,MAAMzrB,OAAmB6N,KAAKivL,sBACrCjvL,KAAKivL,qBAAsB,EAC3B95K,GACE,wKAON,sBAAY,kBAAG,C,IAAf,WACE,OAAOnV,KAAK4d,MAAMzlB,IAAM6H,KAAK4sL,a,gCAG/B,sBAAY,4BAAa,C,IAAzB,WACE,YC7W0BntL,KAHEme,EDgXR5d,KAAK4d,OChXasxK,EDgXN,UC7W4B,OAArBtxK,EAAMsxK,GAH3C,IAA0BtxK,EAAUsxK,G,gCDmahC,YAAAX,gBAAR,SAAwB3wK,GACd,IAAAsgI,EAAA,EAAAA,OACR,OAAO,wBAAMvlI,MAAO,CAAEoB,cAAe,QAAUmkI,IAGzC,YAAA2wC,gBAAR,SAAwBjxK,GACd,IAAAqwD,EAAA,EAAAA,OACR,OAAO,wBAAMt1D,MAAO,CAAEoB,cAAe,QAAUk0D,IASjD,sBAAY,4BAAa,C,IAAzB,WACU,iBAAA6+G,aACR,YADQ,iBAAAA,aAAA,IACe,I,gCAOzB,sBAAY,sCAAuB,C,IAAnC,WACE,IAAMlvK,EAAQ5d,KAAK4d,MACnB,SAAUA,EAAMgmK,qBAAuBhmK,EAAMskD,aAAeliE,KAAK+tL,gB,gCAG3D,YAAAS,gBAAR,WACE,IAAMW,EAAgB32C,GACpBx4I,KAAK4d,MACLy6H,GACA,CAAC,iBAEGoc,EAAiBz0J,KAAK4d,MAAM,qBAAuB5d,KAAK4d,MAAMyX,MAAQr1B,KAAKgkL,cAAWvkL,GAC5F,OACE,8BACEtH,GAAI6H,KAAKkiJ,KACLitC,EAAa,CACjBh1K,IAAKna,KAAK6rL,aACV15L,MAAO6N,KAAK7N,OAAS,GACrBi9L,QAASpvL,KAAKssL,eACdlyK,SAAUpa,KAAKssL,eACfxiL,UAAW9J,KAAKqkK,YAAYlgI,MAAK,kBAChBswH,EAAc,mBACbz0J,KAAK8uL,wBAA0B9uL,KAAKkkL,eAAiBlkL,KAAK4d,MAAM,oBAAmB,iBACrF5d,KAAK+tL,cAAa,aACtB/tL,KAAK4d,MAAMqtI,UACvB5xI,SAAUrZ,KAAK4d,MAAMvE,SACrBG,QAASxZ,KAAKswJ,SACd72I,OAAQzZ,KAAK+wC,YAKX,YAAA09I,aAAR,WACE,IAAMY,EAAU,KACdtrL,KAAM/D,KAAK+E,MAAMsnL,oBAAsB,OAASrsL,KAAK4d,MAAM7Z,MAAQ,OACnE5L,GAAI6H,KAAKkiJ,KACN1J,GAAex4I,KAAK4d,MAAOw6H,GAAiB,CAAC,eAAgB,UAAQ,CACxE,kBAAmBp4I,KAAK4d,MAAM,qBAAuB5d,KAAK4d,MAAMyX,MAAQr1B,KAAKgkL,cAAWvkL,GACxF0a,IAAKna,KAAK6rL,aACV15L,MAAO6N,KAAK7N,OAAS,GACrBi9L,QAASpvL,KAAKssL,eACdlyK,SAAUpa,KAAKssL,eACfxiL,UAAW9J,KAAKqkK,YAAYlgI,MAC5B,aAAcnkC,KAAK4d,MAAMqtI,UACzB,mBAAoBjrJ,KAAK8uL,wBAA0B9uL,KAAKkkL,eAAiBlkL,KAAK4d,MAAM,oBACpF,iBAAkB5d,KAAK+tL,cACvBv0K,QAASxZ,KAAKswJ,SACd72I,OAAQzZ,KAAK+wC,UAGTm7G,EAAgB,SAACojC,GACrB,OAAO,6BAAWA,KAGpB,OADsBtvL,KAAK4d,MAAM2xK,eAAiBrjC,GAC7BmjC,EAAYnjC,IAoD3B,YAAA6/B,UAAR,SAAkB55L,GAAlB,WAEE,GAAI6N,KAAKwvL,uBAAyBr9L,IAASk7L,GAA0BrtL,KAAK4d,OAA1E,CAIA5d,KAAKwvL,qBAAuBr9L,EAC5B,IAAMs9L,EAAoBzvL,KAAK4d,MAAM6xK,kBAC/Bl0J,EAASk0J,GAAqBA,EAAkBt9L,GAAS,IAE/D,QAAesN,IAAX87B,EACF,GAAsB,kBAAXA,GAAyB,SAAUA,EAGvC,CACL,IAAM,IAA8Bv7B,KAAKitL,gBAEzC1xJ,EAAO16B,MAAK,SAACisL,GACP,IAAsB,EAAKG,iBAC7B,EAAKnyG,SAAS,CAAEgyG,aAAY,IAE9B,EAAK4C,qBAAqBv9L,EAAO26L,WATnC9sL,KAAK86E,SAAS,CAAEgyG,aAAcvxJ,IAC9Bv7B,KAAK0vL,qBAAqBv9L,EAAOopC,QAYnCv7B,KAAK0vL,qBAAqBv9L,EAAO,MAI7B,YAAAu9L,qBAAR,SAA6Bv9L,EAA2B26L,GAClD36L,IAAU6N,KAAK7N,OAAS6N,KAAK4d,MAAM+xK,0BACrC3vL,KAAK4d,MAAM+xK,yBAAyB7C,EAAc36L,IAI9C,YAAA+6L,mBAAR,WACE,GAAIltL,KAAK6rL,aAAa30K,SAAWlX,KAAK4d,MAAM8vK,kBAAoB1tL,KAAK4d,MAAMhkB,UAAW,CACpF,IAAMg2L,EAAY5vL,KAAK6rL,aAAa30K,QACpC04K,EAAUj3K,MAAM8C,OAAS,GACzBm0K,EAAUj3K,MAAM8C,OAASm0K,EAAUzqK,aAAe,OArhBxC,EAAAte,aAAgC,CAC5C4mL,WAAW,EACXT,uBAAwB,IACxBG,gBAAgB,EAChBQ,mBAAmB,GAohBvB,EA1hBA,CAAmC,aA6hBnC,SAASlB,GAAU7uK,EAAwB7Y,GACjC,QAAA5S,aAAA,4BACR,MAAqB,kBAAVA,EAEF6iB,OAAO7iB,GAETA,EAOT,SAASk7L,GAA0BzvK,GACjC,QAASA,EAAMkuK,mBAAqBluK,EAAMouK,oBExlB5C,IAAM,GAAmB,CACvBz4L,KAAM,eACN2uE,YAAa,2BACb4qH,aAAc,4BACd3oJ,MAAO,qBACPmqJ,WAAY,0BACZpwC,OAAQ,sBACRjwE,OAAQ,sBACRzb,QAAS,uBACTk8H,aAAc,sBAEd90L,UAAW,0BACX0zL,WAAY,2BACZE,WAAY,2BACZqC,YAAa,4BAEbv2K,SAAU,cACVN,SAAU,cACV82K,OAAQ,aAGV,SAASC,GAAenyK,GACd,IAAA4vK,EAAA,EAAAA,WAAYx0K,EAAA,EAAAA,SAAUi9D,EAAA,EAAAA,QAAStnC,EAAA,EAAAA,MAC/B40F,EAAA,EAAAA,QAASE,EAAA,EAAAA,MAEjB,OAAO,W,MAAM,MAAC,CACZlwI,KAAM,CACJi6L,GACEx0K,GAAY,CACV4C,MAAO2nH,EAAQjN,iBAEnBk3D,GAAc,CACZjxK,SAAUknH,EAAM9T,OAAOpzG,SACvBg/H,YAAa,EACbvhI,YAAa,GACbF,aAAc,EACd8C,WAAY,OACZnB,OAAQ,IAEV+xK,GACEv3G,GAAW,CACTywC,WAAS,KACP,EAAC+J,IAAuB,CACtBh1G,OAAQ,IAEX,OCrDJ,ICwMKu0K,GDxMCC,GAAsDr0C,GAIjE,IDuDI,SAAoBh+H,G,4BAEtB+wB,EAAA,EAAAA,MACA7kC,EAAA,EAAAA,UACAkP,EAAA,EAAAA,SACAi9D,EAAA,EAAAA,QACA38D,EAAA,EAAAA,SACA1f,EAAA,EAAAA,UACAu0L,EAAA,EAAAA,SACAb,EAAA,EAAAA,WACAE,EAAA,EAAAA,WACAa,EAAA,EAAAA,QACAZ,EAAA,EAAAA,UACAW,EAAA,EAAAA,gBACAb,EAAA,EAAAA,eACAG,EAAA,EAAAA,iBACAM,EAAA,EAAAA,gBAGM1qD,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAASuhC,EAAA,EAAAA,MAE3BhjF,EAAa8yE,GAAoB,GAAkB5kF,GAEnDuhJ,EAA4B,CAEhC9zK,WAAYknH,EAAelD,mBAC3BxkH,MAAQ5C,EAAiDsqH,EAAevC,aAArDuC,EAAepB,qBAClC7lH,QAAS,OACT4wJ,WAAY,SACZr0J,QAAS,SACTgE,WAAY,EACZI,WAAY,SACZ+vE,WAAY,EACZ25B,WAAS,KACP,EAAC+J,IAAuB,CACtBr0G,WAAY,SACZR,MAAO5C,EAAW,WAAa,cAElC,IAIGm3K,EAA4B,CAChC1sD,EAAM9T,OACN,CACE/zG,MAAO0nH,EAAepB,qBACtBl3F,QAAS,EACT07E,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,YAEV,KAICw0K,EAAoC,CACxCx0K,MAAO0nH,EAAevC,aACtBra,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,YAEV,IAGH,MAAO,CACLroB,KAAM,CACJktD,EAAWltD,KACXkwI,EAAM9T,OACNr2G,GAAYmnC,EAAWnnC,SACvBN,GAAYynC,EAAWznC,SACvBi9D,GAAWx1B,EAAWqvI,OACtBl2L,GAAa6mD,EAAW7mD,UACxB0zL,GAAc7sI,EAAW6sI,WACzBE,GAAc/sI,EAAW+sI,WACzBnpD,GACA,CACEnpH,SAAU,YAEZpR,GAEF0oD,QAAS,CACP/R,EAAW+R,QAEXg7H,GAAc,CACZ,CACEnxK,QAAS,OACTg0K,aAAc,cAAcjC,EAA+C9qD,EAAe1G,UAA5C0G,EAAetB,aAC7DtmH,MAAO,QAET1C,GAAY,CACVs3K,kBAAmBhtD,EAAelD,mBAClC1Z,WAAS,KACP,EAAC+J,IAAoB,GACnB/5D,YAAa,YxM9HlB,CACL42G,kBAAmB,OACnBC,qBAAsB,SwM+Hf,KAEFv0J,GAAY,CACX0tG,UAAW,CACT,SAAU,CACR4pE,kBAAoBlC,EAAsD9qD,EAAe1G,UAAnD0G,EAAenC,mBACrDza,WAAS,KACP,EAAC+J,IAAoB,GACnB6/D,kBAAmB,axMzI5B,CACLhjB,kBAAmB,OACnBC,qBAAsB,SwM0IX,MAIPt3F,GAAW,CACT,CACE/6D,SAAU,YAEZ,GACGkzK,EAAuD9qD,EAAe1G,UAApD0G,EAAe1E,oBAClC,EACA,mBAKR0vD,WAAY,CACV7tI,EAAW6tI,WACXjqD,GACA,CACEloH,OAAQ,aAAamnH,EAAetB,YACpCrtD,aAAcutB,EAAQg3B,eACtB98G,WAAYknH,EAAepF,gBAC3BtyE,OAAQ,OACRnwC,OAAQ,GACRY,QAAS,OACTm/H,cAAe,MACfyxB,WAAY,UACZ/xJ,SAAU,YAEZthB,GAAa,CACX20K,UAAW,OACX9yJ,OAAQ,OACRY,QAAS,SAGV45D,IACEj9D,GAAY,CACX0tG,UAAW,CACT,SAAU,CACRhwD,YAAa4sE,EAAenC,mBAC5Bza,WAAS,KACP,EAAC+J,IAAoB,GACnB/5D,YAAa,axMvLtB,CACL42G,kBAAmB,OACnBC,qBAAsB,SwMwLX,MAKTt3F,IACGu3G,GACD,GACGY,EAAuD9qD,EAAe1G,UAApD0G,EAAe1E,oBAClC18B,EAAQg3B,gBAEZlgH,GAAY,CACV09C,YAAa4sE,EAAelD,mBAC5B1Z,WAAS,KACP,EAAC+J,IAAoB,GACnB/5D,YAAa,YxMzMhB,CACL42G,kBAAmB,OACnBC,qBAAsB,SwM0MjB,GAED3hH,OAAQ,WAEV0hI,GAAc,CACZnxK,OAAQ,QAEVmxK,GACEr3G,GAAW,CACT95D,OAAQ,OACRuqG,UAAW,CACT,SAAU,CACRvqG,OAAQ,UAIhBqxK,GAAc,CACZ98J,KAAM,UACNvU,OAAQ,OACRhB,UAAW,QAEbqyK,GACEx0K,GAAY,CACV+xB,gBAAiB,eAGrBqjJ,IACGZ,GAAc,CACb92H,YAAa4sE,EAAe1G,UAC5BlW,UAAW,CACT,UAAW,CACThwD,YAAa4sE,EAAe1G,cAInCuxD,GACC70K,GAAY,CACVotG,WAAS,GACP,UAAW,CACTr9G,QAAS,MACTuS,MAAO0nH,EAAe1G,UACtB1hH,SAAU,WACVK,KAAM,EACNkY,OAAQ,KAEV,EAACg9F,IAAuB,CACtB/J,UAAW,CACT,UAAW,CACT9qG,MAAO,aACP6X,OAAQ,MAIf,KAGP0Q,MAAO,CACLs/F,EAAM9T,OACNlvE,EAAWtc,MACXkgG,GACA,CACE1vD,aAAc,EACdx4D,OAAQ,OACRC,WAAY,OACZ2uB,gBAAiB,cACjBnvB,MAAO0nH,EAAelC,UACtBxoH,QAAS,QACT8C,MAAO,OACPwrJ,SAAU,EACV9rB,aAAc,WACdlmF,QAAS,EACTwxD,WAAS,GACP,6BAA8B,CAAExxD,QAAS,GACzC,cAAe,CACb74C,QAAS,SAEX,EAACo0G,IAAuB,CACtBr0G,WAAY,SACZR,MAAO5C,EAAW,WAAa,cAElC,IAEHurH,GAAqB4rD,GACrBv2L,IACG6zL,GAAa,CACZhtI,EAAWovI,YACX,CACEl0K,OAAQ,SAGd/hB,GAAa,CACX20K,UAAW,UACX3xJ,WAAY,GACZiwE,SAAU,EACVhzE,WAAY,EACZE,cAAe,EACfsB,SAAU,OACVK,MAAO,QAET9hB,GACE8zL,GAAoB,CAClBryK,SAAU,UAEdgzK,IACGL,GAAmB,CAClBl0K,aAAc,IAElBlgB,GACEy0L,GAAW,CACTv0K,aAAc,IAElBd,GAAY,CACV,CACE+xB,gBAAiBu4F,EAAelD,mBAChCxkH,MAAO0nH,EAAevC,aACtBrqE,YAAa4sE,EAAelD,oBAE9BmE,GAAqB6rD,IAEvB5C,GAAc,CACZryK,UAAW,QAEb86D,IACGq3G,GAAc,CACb5mE,WAAS,KACP,EAAC+J,IAAuB,CACtBz2G,YAAa,GACbF,aAAc,IAEjB,IAELm8D,GACEr8E,IACC0zL,GAAc,CACb5mE,WAAS,KACP,EAAC+J,IAAuB,CACtB52G,WAAY,GAEf,IAEL0zK,GAEF/sK,KAAM,CACJ5mB,GAAa,CACXkgB,aAAc,GACdmzJ,WAAY,YAEd,CACEjxJ,cAAe,OACfd,SAAU,WACVwG,OAAQ,EACR+R,MAAO,EACPlY,IAAK,OACLgB,SAAU2uG,GAAcyE,OACxB/yG,WAAY,IAEd5D,GAAY,CACV4C,MAAO0nH,EAAevC,eAG1B7+D,YAAa,CACXzhB,EAAWyhB,YACX,CACEtmD,MAAO0nH,EAAexB,YACtBvlH,SAAUknH,EAAMjU,OAAOjzG,WAG3BuwK,aAAc,CACZrsI,EAAWqsI,aACX3hE,GAAoBc,cACpBwX,EAAMhU,MACN,CACE7zG,MAAO0nH,EAAe1G,UACtB1gH,OAAQ,EACRrC,WAAY,EACZwC,QAAS,OACT4wJ,WAAY,WAGhB/uB,OAAQ,CAACz9F,EAAWy9F,OAAQgyC,GAC5BjiH,OAAQ,CAACxtB,EAAWwtB,OAAQiiH,GAC5BxB,aAAc,CACZjuI,EAAWiuI,aACX,YACA,kBACA,CACEjzK,OAAQ,GACRC,MAAO,GACPS,OAAQ,OACRvD,QAAS,UACTmyB,gBAAiB,cACjBnvB,MAAO0nH,EAAen0C,KACtBu3B,UAAW,CACT,SAAU,CACRxxD,QAAS,EACTt5C,MAAO0nH,EAAelE,+BACtBr0F,gBAAiBu4F,EAAetD,wBAChCtZ,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,YACb96C,MAAO,aAEV,IAEH,SAAU,CAAEs5C,QAAS,KAGzBm5H,GAAW,CACT9yC,YAAa,KAGjBozC,WAAY,CACVtyK,QAAS,OACTZ,OAAQ,OACRwxJ,WAAY,UAEd2hB,WAAY,CACV1yK,OAAQ,UACRF,cAAe,OACf0F,OAAQ,EACR+R,MAAO,EACPlY,IAAK,OACLgB,SAAU2uG,GAAcyE,OACxB/yG,WAAY,IAEdgpH,mBAAoB,CAClBvwG,MAAO06J,GAAenyK,YCpcAne,EAAW,CACrCu8I,MAAO,cEDI,GAAYtpB,IACvB,SAAC/jF,EAAeq5I,G,8BACN9lF,EAAA,EAAAA,QAASqhC,EAAA,EAAAA,QAASD,EAAA,EAAAA,eAEpBykD,EAA0B,CAC9BvsK,MAAO,EACPD,KAAM,EACNmG,QAAS,EACT+R,OAAQ,EACRtX,OAAQ,QAGJo0K,EAAuC,CAC3Cr1K,SAAU,WACVQ,MAAO,EACP+X,MAAO,GACPlY,IAAK,EACLmG,OAAQ,GAgMV,OAAOgkH,GA7LkC,CACvC68C,qBAAsB,CACpBpxD,GAAcxiF,EAAO,CAAE0iF,kBAAmB02D,EAAyBt2D,MAAO,IAC1E,CACEp1G,QAAS,cACTqqG,UAAW,CACT,sBAAuB,CACrB8pE,qBAAsB,IACtBC,wBAAyB,IACzBC,YAAa,QAEf,sBAAuB,CACrBF,qBAAsB,IACtBC,wBAAyB,IACzBt0K,OAAQ,OAERuqG,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,aACPmvB,gBAAiB,SACjB5uB,OAAQ,uBACRw0K,iBAAkB,K3MnB3B,CACLrjB,kBAAmB,OACnBC,qBAAsB,S2MoBX,IAEH,mCAAoC,CAClCpxJ,OAAQ,OACRuqG,WAAS,KACP,EAAC+J,IAAuB,CACtBt0G,OAAQ,uBACRy0K,gBAAiB,KAEpB,OAKTlO,4BAA6B,CAC3Bh8D,UAAW,CACT,sBAAuB,CACrBA,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,SACPmvB,gBAAiB,aAEpB,IAEH,yBAA0B,CACxBnvB,MAAO0nH,EAAezC,mBACtBna,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WACP86C,YAAa,WACb3rB,gBAAiB,UAEpB,MAIPy3I,4BAA6B,CAC3B97D,UAAW,CACT,sBAAuB,CACrBA,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,SACPmvB,gBAAiB,c3MhExB,CACLuiI,kBAAmB,OACnBC,qBAAsB,S2MiEb,MAIPkV,mCAAoC,CAClC/7D,UAAW,CACT,sBAAuB,CACrBA,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,SACPmvB,gBAAiB,c3M7ExB,CACLuiI,kBAAmB,OACnBC,qBAAsB,S2M8Eb,MAIPoV,4BAA6B,CAC3BztH,QAAS,kBAEXgtH,uBAAqB,GACnBtpK,QAAS,EACT6C,OAAQ,OACRL,UAAW,aACXu5D,aAAc,EACd67G,qBAAsBtuF,EAAQg3B,eAC9Bu3D,wBAAyBvuF,EAAQg3B,eACjC/8G,OAAQ,aAAaonH,EAAQlN,oBAC7Bw6D,WAAY,OACZ37H,QAAS,cACTuqH,WAAY,OACZpjK,QAAS,eACTiyJ,eAAgB,OAChBnzJ,UAAW,SACXywC,OAAQ,UACR8uF,cAAe,MACfh/H,MAAO,GACP6nC,YAAa,EACbiT,UAAW,EACX+kF,YAAa,EACbrzG,aAAc,GACd,EAACuoF,IAAuB,CACtB,sBAAuB,CACrB70G,MAAO,eAGZ,GACDmnK,mBAAoB,EAAF,KACbwN,GAA4B,CAC/B7pE,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,cAGtB,KACDi4I,2BAA4B,EAAF,KACrBuN,GAA4B,CAC/B7pE,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,YAGtB,KACDq3I,8BAA+B,CAC7BpmK,cAAe,OACfG,OAAQ,OACRuqG,WAAS,GACP,SAAU,CACR96D,OAAQ,WAGV,sBAAuB,CACrB86D,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WACP86C,YAAa,WACb3rB,gBAAiB,UAEpB,IAEH,sBAAuB,CACrB27E,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,YAEV,KAEH,EAAC60G,IAAuB,CACtB70G,MAAO,WACPO,OAAQ,qBACR4uB,gBAAiB,UAEpB,IAGH2jI,yBAA0B,CACxBryJ,QAAS,OACTZ,OAAQ,OACR6/H,SAAU,SACVqzB,eAAgB,SAChB1B,WAAY,UAGd2V,6BAA8B,CAC5B1tH,QAAS,OACT/4C,OAAQ,OACRuqG,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,WACP86C,YAAa,WACb3rB,gBAAiB,U3MjLpB,CACLuiI,kBAAmB,OACnBC,qBAAsB,S2MkLjB,IAEH+U,uBAAwB,EAAF,GACjBnxD,GAAcxiF,EAAO,CAAE0iF,kBAAmB02D,EAAyBt2D,MAAO,MAIvCu2D,MCtNjC,GAAYt1D,IACvB,SAAC/jF,EAAeq5I,G,MACR8I,EAAkC,GAAoBniJ,GACtDoiJ,EAAmC,GAAqBpiJ,GACtD40F,EAAA,EAAAA,QAmDR,OAAOmC,GAAgBorD,EAlDiB,CACtCv9L,KAAM,CACJqlB,QAAS,QACT8C,MAAO,OACPD,OAAQ,OACRsvB,gBAAiB,cACjB5uB,OAAQ,OACRP,MARa,EAAA0nH,eAQSn0C,MAGxB2+E,YAAa,CACXlyJ,MAAO2nH,EAAQ/N,aACfzqF,gBAAiBw4F,EAAQ5M,eACzBjQ,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,YACb96C,MAAO,aAEV,IAGHglK,YAAa,CACXllK,MAAO,QAGTuyJ,YAAa,CACXryJ,MAAO2nH,EAAQhO,UACfxqF,gBAAiBw4F,EAAQ7M,cAG3Bw3C,aAAc,CACZtyJ,MAAO2nH,EAAQhO,UACfxqF,gBAAiBw4F,EAAQ7M,cAG3Bs3C,YAAa,CACXpyJ,MAAO2nH,EAAQhO,UACfxqF,gBAAiBw4F,EAAQ7M,cAG3B2qD,mBAAoB,CAClBzlK,MAAO2nH,EAAQhO,UACfxqF,gBAAiBw4F,EAAQ9M,sBAG3Bo3C,aAAc,CACZjyJ,MAAO2nH,EAAQhN,qBAIwCw6D,EAAmB/I,MCnDlF,4B,+CAcA,OAdgC,OACvB,YAAAlgL,OAAP,WACQ,iBAAEoS,EAAA,EAAAA,OAAQy0B,EAAA,EAAAA,MAEhB,OACE,gBAAC,GAAU,KACL3uC,KAAK4d,MAAK,CACd0iK,iBAAiB,kBACjBpmK,OAAQ,GAAUy0B,EAAQz0B,GAC1BypK,aAAc59B,GACd69B,oBAAqB79B,OAVhBirC,EAAU,GADtB,GAAa,aAAc,CAAC,QAAS,WAAW,IACpCA,GAAb,CAAgC,cHqMhC,SAAYhB,GAEV,mBAEA,qBAEA,yBAEA,qCAEA,yBAEA,yBAZF,CAAYA,QAAc,KIjM1B,I,SAAM,GAAgBrzC,KAQtB,eAkBE,WAAY/+H,G,MAAZ,EACE,YAAMA,IAAM,K,OAZN,EAAAqzK,WAAQ,MACbjB,GAAetvL,MAAO,OACvB,EAACsvL,GAAekB,SAAU,OAC1B,EAAClB,GAAe/3L,OAAQ,aACxB,EAAC+3L,GAAemB,SAAU,WAC1B,EAACnB,GAAeoB,eAAgB,UAChC,EAACpB,GAAen8K,SAAU,YAC1B,GAsIM,EAAAw9K,gBAAkB,WACxB,IAAMC,IAAe,EAAKC,oBAAsB,EAAKC,iBAC/CC,EAAc,CAClB,mBAAoB,EAAK1sL,MAAM2sL,QAC/B58J,KAAM,UAGR,OAAOw8J,EAAaG,EAAc,IA6B5B,EAAA5rK,SAAW,SAACg9H,GAClB,EAAK/nE,SAAS,CAAE62G,kBAAmB,EAAK5sL,MAAM4sL,oBApK9Cj0C,GAAuB,GACvB,EAAK34I,MAAQ,CACX2sL,QAASzzC,GAAM,cAEf2zC,aAAa,EACbD,kBAAkB,G,EAiKxB,OA3LoC,OA8B3B,YAAA7pL,OAAP,WACU,IAAA+pL,EAAA,WAAAA,YAIR,OAFA7xL,KAAKqkK,YAAcrkK,KAAKsoK,iBAEjBupB,EAAc7xL,KAAK8xL,mBAAqB9xL,KAAK+xL,qBAG9C,YAAAR,eAAR,WACE,OAAIvxL,KAAK4d,MAAMqzC,QACN,uBAAKnnD,UAAW9J,KAAKqkK,YAAYpzG,SAAUjxD,KAAK4d,MAAMqzC,SAExD,MAGD,YAAAugI,eAAR,WACQ,iBAAE5xB,EAAA,EAAAA,UAAWoyB,EAAA,EAAAA,iBACnB,OAAIpyB,EAEA,gBAAC,GAAU,CACT5mJ,UAAU,EACVlP,UAAW9J,KAAKqkK,YAAY4tB,UAC5B14K,QAASqmJ,EACT4L,UAAWwmB,GAAsC,CAAE7sD,SAAU,SAC7D/lH,MAAOpf,KAAK4d,MAAMs0K,uBAClBjnC,UAAWjrJ,KAAK4d,MAAMs0K,yBAIrB,MAGD,YAAAC,sBAAR,WACE,OAAInyL,KAAK4d,MAAMgiJ,UACN,uBAAK91J,UAAW9J,KAAKqkK,YAAY+tB,mBAAoBpyL,KAAKwxL,kBAE5D,MAGD,YAAAa,qBAAR,WACE,OAAKryL,KAAK4d,MAAMqzC,SAAWjxD,KAAK4d,MAAM00K,UAElC,uBAAKxoL,UAAW9J,KAAKqkK,YAAYstB,kBAC/B,gBAAC,GAAU,CACT34K,UAAU,EACVlP,UAAW9J,KAAKqkK,YAAYrpH,OAC5BzhC,QAASvZ,KAAK6lB,SACd2lJ,UAAW,CAAErmC,SAAUnlI,KAAK+E,MAAM4sL,iBAAmB,kBAAoB,qBACzE1mC,UAAWjrJ,KAAK4d,MAAM20K,wBAAuB,gBAC9BvyL,KAAK+E,MAAM4sL,oBAK3B,MAGD,YAAAa,aAAR,WACU,IAAAC,EAAA,WAAAA,oBACR,OACE,uBAAK3oL,UAAW9J,KAAKqkK,YAAYquB,cAAa,kBAC3CD,EACC,gBAACvnC,GAAI,KAAKunC,EAAmB,CAAE3oL,UAAW2I,GAAIzS,KAAKqkK,YAAY7jJ,KAAMiyK,EAAoB3oL,cAEzF,gBAACohJ,GAAI,CAAC/lB,SAAUnlI,KAAKixL,SAASjxL,KAAK4d,MAAM+0K,gBAAkB7oL,UAAW9J,KAAKqkK,YAAY7jJ,SAMvF,YAAAsxK,iBAAR,WACE,OACE,yBAAKhoL,UAAW9J,KAAKqkK,YAAY9wK,MAAUyM,KAAKqxL,mBAC9C,uBAAKvnL,UAAW9J,KAAKqkK,YAAYh7J,SAC9BrJ,KAAKwyL,eACLxyL,KAAK4yL,mBACL5yL,KAAKwxL,kBAEPxxL,KAAKuxL,mBAKJ,YAAAQ,kBAAR,WACE,OACE,yBAAKjoL,UAAW9J,KAAKqkK,YAAY9wK,MAAUyM,KAAKqxL,mBAC9C,uBAAKvnL,UAAW9J,KAAKqkK,YAAYh7J,SAC9BrJ,KAAKwyL,eACLxyL,KAAK4yL,mBACL5yL,KAAKqyL,uBACLryL,KAAKuxL,iBACLvxL,KAAKmyL,2BAMN,YAAAS,iBAAR,WACE,IAAMl5C,EAAclB,GAAsDx4I,KAAK4d,MAAOo6H,GAAuB,CAC3G,cAGF,OACE,uBACEluI,UAAW9J,KAAKqkK,YAAYl5J,KAC5BhT,GAAI6H,KAAK+E,MAAM2sL,QACf58J,KAAK,SAAQ,YACF90B,KAAK6yL,4BAEhB,0BAAM/oL,UAAW9J,KAAKqkK,YAAY7+I,WAAek0H,GAC/C,gBAAC,GAAa,KACZ,4BAAO15I,KAAK4d,MAAM/C,cAiBpB,YAAAytJ,eAAR,WACQ,iBAAE35H,EAAA,EAAAA,MAAO7kC,EAAA,EAAAA,UAAW6oL,EAAA,EAAAA,eAAgB/yB,EAAA,EAAAA,UAAW3uG,EAAA,EAAAA,QAASqhI,EAAA,EAAAA,UAAWT,EAAA,EAAAA,YACjEF,EAAA,WAAAA,iBAER,OAAO,GAAc3xL,KAAK4d,MAAM1D,OAAS,CACvCy0B,MAAOA,EACPgkJ,eAAgBA,GAAkB3C,GAAetvL,KACjDk/J,eAAyBngK,IAAdmgK,EACX3uG,aAAqBxxD,IAAZwxD,EACTqhI,UAAWA,EACXT,YAAaA,EACbF,iBAAkBA,EAClB7nL,UAAS,KAIL,YAAA+oL,yBAAR,WACE,OAAQ7yL,KAAK4d,MAAM+0K,gBACjB,KAAK3C,GAAemB,QACpB,KAAKnB,GAAe/3L,MACpB,KAAK+3L,GAAeoB,cAClB,MAAO,YAEX,MAAO,UApLK,EAAAvqL,aAAiC,CAC7C8rL,eAAgB3C,GAAetvL,KAC/Bk/J,eAAWngK,EACXoyL,aAAa,GAuLjB,EA3LA,CAAoC,aCT9B,GAAmB,CACvBt+L,KAAM,gBACN0E,MAAO,uBACPk5L,QAAS,yBACTC,cAAe,+BACfv9K,QAAS,yBACTq9K,QAAS,yBACTt3L,UAAW,0BACXk5L,WAAY,2BACZC,oBAAqB,oCACrBC,oBAAqB,oCACrB3pL,QAAS,wBACTqpL,cAAe,qBACfvnL,KAAM,qBACNqa,UAAW,0BACX4sK,kBAAmB,kCACnBT,iBAAkB,iCAClBM,UAAW,0BACXj3I,OAAQ,uBACRiW,QAAS,wBACTgiI,kBAAmB,mCAGf,KAAe,OAClBjD,GAAe/3L,OAAQ,kBACxB,GAAC+3L,GAAemB,SAAU,kBAC1B,GAACnB,GAAen8K,SAAU,oBAC1B,GAACm8K,GAAekB,SAAU,oBAC1B,GAAClB,GAAeoB,eAAgB,0BAChC,GAACpB,GAAetvL,MAAO,iBACxB,IAEKwyL,KAA2B,OAC9BlD,GAAe/3L,OAAQ,uBACxB,GAAC+3L,GAAemB,SAAU,uBAC1B,GAACnB,GAAen8K,SAAU,yBAC1B,GAACm8K,GAAekB,SAAU,0BAC1B,GAAClB,GAAeoB,eAAgB,uBAChC,GAACpB,GAAetvL,MAAO,SACxB,IAEK8tK,KAAS,OACZwhB,GAAe/3L,OAAQ,YACxB,GAAC+3L,GAAemB,SAAU,YAC1B,GAACnB,GAAen8K,SAAU,cAC1B,GAACm8K,GAAekB,SAAU,cAC1B,GAAClB,GAAeoB,eAAgB,oBAChC,GAACpB,GAAetvL,MAAO,WACxB,ICvDYyyL,GAAwDv3C,GAInE,IDqDuB,SAACh+H,G,cAEtB+wB,EAAA,EAAAA,MACA7kC,EAAA,EAAAA,UACA81J,EAAA,EAAAA,UACA0yB,EAAA,EAAAA,UACAT,EAAA,EAAAA,YACAF,EAAA,EAAAA,iBACA,IAAAgB,sBAAA,IAAiB,EAAjB,UAEMrvD,EAAA,EAAAA,eAAgBG,EAAA,EAAAA,MAElB2vD,EAAsB1iE,GAAkB,E/M5Db2iE,K+M8D3B5yI,EAAa8yE,GAAoB,GAAkB5kF,GAEnD2kJ,EAAsC,CAC1C/2K,SAAU2uG,GAAcsE,OACxB/zG,OAAQ,GACRmB,WAAY,OACZhB,MAAO0nH,EAAe/G,YACtB7V,WAAS,KACP,EAAC+J,IAAoB,O/MpDlB,CACL68C,kBAAmB,OACnBC,qBAAsB,S+MmDe,CACjC3xJ,MAAO,eAEV,IAGG23K,EAAkC,CACtCpiE,GAAcxiF,EAAO,CACnB8iF,MAAO,EACPJ,kBAAmB,CACjB65D,cAAe,OACfh2H,QAAS,uBAEXwB,YAAa,gBAEf,CACEq2B,WAAY,EACZrxE,MAAO,GACPD,OAAQ,GACR7C,QAAS,WACT8tG,UAAW,CACT,oBAAqB4sE,EACrB,SAAU,CACRvoJ,gBAAiB,eAEnB,UAAW,CACTA,gBAAiB,kBAMzB,MAAO,CACLx3C,KAAM,CACJktD,EAAWltD,KACXkwI,EAAM9T,OACNgjE,IAAmB3C,GAAe/3L,OAASwoD,EAAWxoD,MACtD06L,IAAmB3C,GAAemB,SAAW1wI,EAAW0wI,QACxDwB,IAAmB3C,GAAeoB,eAAiB3wI,EAAW2wI,cAC9DuB,IAAmB3C,GAAen8K,SAAW4sC,EAAW5sC,QACxD8+K,IAAmB3C,GAAekB,SAAWzwI,EAAWywI,QACxDW,EAAcpxI,EAAW7mD,UAAY6mD,EAAWqyI,YAC/CjB,GAAejyB,GAAan/G,EAAWsyI,qBACvClB,GAAeS,GAAa7xI,EAAWuyI,oBACxC,CACE52K,WAAYknH,EAAe,GAAgBqvD,IAC3C/2K,MAAO0nH,EAAe/G,YACtBgyC,UAAW,GACX7yJ,MAAO,OACPW,QAAS,OACTY,UAAW,aACXypG,WAAS,GACP,WAAY,CACV9qG,MAAO0nH,EAAezG,YACtBnW,UAAW,CACT,SAAU,CACR9qG,MAAO0nH,EAAexG,uBAI5B,EAACrM,IAAoB,O/MjHtB,CACL68C,kBAAmB,OACnBC,qBAAsB,S+MgHmB,CACjCnxJ,WAAY82K,GAA4BP,GACxCx2K,OAAQ,uBACRP,MAAO,eAEV,IAEHi2K,GAAe,CACbr2C,cAAe,UAEjB1xI,GAEFT,QAAS,CACPo3C,EAAWp3C,QACX,CACEgT,QAAS,OACTX,MAAO,OACPkB,WAAY,WAGhB81K,cAAe,CACbjyI,EAAWiyI,cACX,CACEn2K,SAAU2uG,GAAcyE,OACxBu3C,SAAU,GACVqH,UAAW,GACXlyJ,QAAS,OACT0wE,WAAY,EACZ7wE,OAAQ,mBAGZsE,KAAM,CACJ5E,MAAO0nH,EAAekrC,GAAUmkB,IAChCjsE,WAAS,KACP,EAAC+J,IAAoB,O/MpJpB,CACL68C,kBAAmB,OACnBC,qBAAsB,S+MmJiB,CACjC3xJ,MAAO,eAEV,IAEHzQ,KAAM,CACJs1C,EAAWt1C,K,KAET+7J,SAAU,EACV7qJ,QAAS,OACTwwE,SAAU,EACV3wE,OAAQ,GACLunH,EAAMhU,OAAK,CACd/I,WAAS,KACP,EAAC+J,IAAoB,K/MnKtB,CACL68C,kBAAmB,OACnBC,qBAAsB,S,M+MsKnB3N,GAAa,CACZrkB,YAAa,KAGjB/1H,UAAW,CACTi7B,EAAWj7B,UACX,CACE5I,WAAY,GACZ8pG,UAAW,CACT,WAAY,CACV1sG,YAAa,KAInBs4K,GAAa,CACXj3K,SAAU,UACV2B,WAAY,aAEb60K,GAAe,CAGdx2K,SAAU,SACV+/H,aAAc,WACdp+H,WAAY,WAEb60K,IACES,GAAa,CACZ5rE,WAAS,KACP,EAAC0sE,GAAsB,CACrB/3K,SAAU,UACV2B,WAAY,YAEf,IAEL20K,GAAoB,CAClBt2K,SAAU,UACV2B,WAAY,aAGhBo1K,kBAAmB3xI,EAAW2xI,kBAC9BT,iBAAkBlxI,EAAWkxI,iBAC7BM,UAAW,CAACxxI,EAAWwxI,UAAWsB,GAClCv4I,OAAQ,CAACyF,EAAWzF,OAAQu4I,GAC5BtiI,QAAS,CACP4gI,EAAcpxI,EAAWwQ,QAAUxQ,EAAWwyI,kBAC9C,CACE52K,QAAS,OACTwwE,SAAU,EACVE,WAAY,EACZwiF,UAAW,OACX/zB,cAAe,cACfyxB,WAAY,SACZ/wJ,OAAQ,eACRwqG,UAAW,CACT,0BAA2B,CACzBnjE,WAAY,KAIlBsuI,GAAe,CACb3pJ,aAAc,GAEhB03H,IACGiyB,GAAe,CACdt2C,YAAa,YC/PM97I,EAAW,CACtCu8I,MAAO,eCHT,IAGa,GAAYtpB,IACvB,SAAC/jF,EAAeq5I,EAA8BwL,GAC5C,IAAM1C,EAAkC,GAAoBniJ,GACtDoiJ,EAAmC,GAAqBpiJ,GAW9D,OAAO+2F,GACLorD,EAXyC,CACzCv9L,KAAM,CACJ2zK,SARyB,OASzBzrJ,OAVsB,QAYxB4Z,MAAO,CACL3Y,WAAYuuG,GAAYsF,WAO1BijE,EC4HA,SAAwB7kJ,G,sBACpB37C,EAAA,EAAAuwI,QAAYtwI,EAAA,EAAAqwI,eAEpB,MAAO,CACL/vI,KAAM,CACJw3C,gBAAiB93C,EAAEwrI,wBACnBtiH,OAAQ,aAAalpB,EAAEwrI,wBACvB7iH,MAAO3oB,EAAE8qI,kBACTrX,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,SACPmvB,gBAAiB,aACjB2rB,YAAa,clNnId,CACL42G,kBAAmB,OACnBC,qBAAsB,SkNoIlB,EAAC,IAAIx8C,GAAuB,YAAa,CACvCrK,UAAW,CACT,SAAU,CACRvqG,OAAQ,OACRm1G,aAAct+H,EAAE8jI,SAIvB,IAGHg3C,YAAa,CACX/iI,gBAAiB93C,EAAEmsI,+BACnBjjH,OAAQ,aAAalpB,EAAEmsI,+BACvBxjH,MAAO3oB,EAAE+qI,yBACTtX,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,SACPmvB,gBAAiB,YACjB2rB,YAAa,aAEhB,IAGHu3G,YAAa,CACXljI,gBAAiB93C,EAAE+rI,+BACnB7iH,OAAQ,aAAalpB,EAAE+rI,+BACvBpjH,MAAO3oB,EAAEgrI,yBACTvX,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,SACPmvB,gBAAiB,aACjB2rB,YAAa,clNtKd,CACL42G,kBAAmB,OACnBC,qBAAsB,SkNuKnB,IAGHW,aAAc,CACZnjI,gBAAiB93C,EAAE+rI,+BACnBpjH,MAAO3oB,EAAEgrI,0BAGX+vC,YAAa,CACXjjI,gBAAiB93C,EAAE+rI,+BACnBpjH,MAAO3oB,EAAEgrI,0BAGXojD,mBAAoB,CAClBt2I,gBAAiB93C,EAAE+rI,+BACnBpjH,MAAO3oB,EAAEgrI,0BAGX4vC,aAAc,CACZjyJ,MAAO3oB,EAAEutI,0BACTz1F,gBAAiB93C,EAAEktI,gCACnBzZ,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WACP86C,YAAa,WACb3rB,gBAAiB,UAEpB,IAIHw3I,qBAAsB,CACpB77D,WAAS,KACP,EAAC+J,IAAuB,CACtBt0G,OAAQ,QAEX,IAGH4mK,mBAAoB,EAAF,KA5Ob,CACL7nK,SAAU,WACVQ,MAAO,EACP+X,MAAO,GACPlY,IAAK,EACLmG,OAAQ,IAwO2B,CACjCqpB,gBAAiB/3C,EAAE8jI,MACnBpQ,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,UAGtB,KAEDm3I,sBAAuB,CACrBn3I,gBAAiB93C,EAAEwrI,wBACnB7iH,MAAO3oB,EAAE8qI,kBACTrX,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,cAEnB,YAAU,CACRA,gBAAiB93C,EAAEmsI,+BACnB1Y,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,aAEV,IAEJ,IAGHwmK,8BAA+B,CAC7Br3I,gBAAiB93C,EAAEktI,gCACnBzZ,UAAW,CACT,SAAU,CACR37E,gBAAiB93C,EAAEktI,mCAKzBkiD,6BAA8B,CAC5Bt3I,gBAAiB93C,EAAE+rI,+BACnBtY,UAAW,CACT,SAAU,CACR37E,gBAAiB93C,EAAE+rI,kCAKzBmjD,8BAA+B,CAC7Bp3I,gBAAiB93C,EAAE+rI,+BACnBtY,UAAW,CACT,SAAU,CACR37E,gBAAiB93C,EAAE+rI,kCAKzB6jD,oBAAqB,CACnBjnK,MAAO3oB,EAAE8qI,mBAGX+kD,4BAA6B,CAC3BlnK,MAAO5oB,EAAEsjI,gBAET5P,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,YAEV,KDvRS63K,CAAc9kJ,GCdxB,SAAyBA,G,cACrB17C,EAAA,EAAAqwI,eAAmBtwI,EAAA,EAAAuwI,QAErBzF,EAAmB7qI,EAAE6qI,iBACrB6B,EAA0B1sI,EAAE0sI,wBAC5BK,EAA0B/sI,EAAE+sI,wBAC5BC,EAA2BhtI,EAAEgtI,yBAE7BiB,EAAajuI,EAAEiuI,WACfO,EAAoBxuI,EAAEwuI,kBACtBZ,EAAqB5tI,EAAE4tI,mBACvBa,EAAoBzuI,EAAEyuI,kBACtBlD,EAA2BvrI,EAAEurI,yBAEnC,MAAO,CACLjrI,KAAM,CACJw3C,gBAAiB+yF,EACjBliH,MAAOslH,GAGT4sC,YAAa,CACX/iI,gBAAiBi1F,EACjBpkH,MAAO6lH,EACP/a,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,YACb96C,MAAO,aAEV,IAGHqyJ,YAAa,CACXljI,gBAAiB40F,EACjB/jH,MAAO8lH,GAGTwsC,aAAc,CACZnjI,gBAAiB40F,EACjB/jH,MAAO8lH,GAGTssC,YAAa,CACXjjI,gBAAiB40F,EACjB/jH,MAAO8lH,GAGT2/C,mBAAoB,CAClBt2I,gBAAiB40F,EACjB/jH,MAAO4iH,GAGTqvC,aAAc,CACZjyJ,MAAOilH,EACP91F,gBAAiBk1F,EACjBvZ,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WACP86C,YAAa,WACb3rB,gBAAiB,UAEpB,IAIHw3I,qBAAsB,CACpB77D,WAAS,KACP,EAAC+J,IAAuB,CACtBt0G,OAAQ,QAEX,IAGH+lK,sBAAuB,CACrBtmK,MAAO5oB,EAAE8jI,MACT/rF,gBAAiB,cACjB27E,UAAW,CACT,SAAU,CACR37E,gBAAiB/3C,EAAE0jI,aACnBhQ,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,aAEV,MAKPwmK,8BAA+B,CAC7Br3I,gBAAiB93C,EAAEgtI,yBACnBvZ,UAAW,CACT,SAAU,CACR37E,gBAAiB93C,EAAEgtI,4BAKzB8iD,mBAAoB,EAAF,KAzGb,CACL7nK,SAAU,WACVQ,MAAO,EACP+X,MAAO,GACPlY,IAAK,EACLmG,OAAQ,IAqG2B,CACjCqpB,gBAAiB/3C,EAAEujI,mBACnB7P,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,cAGtB,KAEDi4I,2BAA4B,CAC1Bj4I,gBAAiB4D,EAAM40F,QAAQhN,oBAGjC8rD,6BAA8B,CAC5Bt3I,gBAAiB/3C,EAAEyjI,qBACnB/P,UAAW,CACT,SAAU,CACR37E,gBAAiB/3C,EAAEyjI,wBAKzB0rD,8BAA+B,CAC7Bp3I,gBAAiB/3C,EAAEyjI,qBACnB/P,UAAW,CACT,SAAU,CACR37E,gBAAiB/3C,EAAEyjI,wBAKzBosD,oBAAqB,CACnBjnK,MAAO3oB,EAAEiuI,YAGX4hD,4BAA6B,CAC3BlnK,MAAO3oB,EAAE4tI,qBDvHwB6yD,CAAe/kJ,GAChDoiJ,EACA/I,MEpBN,4B,+CAaA,OAbmC,OAC1B,YAAAlgL,OAAP,WACQ,iBAAE,IAAA0rL,eAAA,IAAU,GAAV,EAAiBt5K,EAAA,EAAAA,OAAQy0B,EAAA,EAAAA,MAEjC,OACE,gBAAC,GAAU,KACL3uC,KAAK4d,MAAK,CACd0iK,iBAAkBkT,EAAU,qBAAuB,qBACnDt5K,OAAQ,GAAUy0B,EAAQz0B,EAAQs5K,GAClC5P,oBAAqB79B,OAThB4tC,EAAa,GADzB,GAAa,gBAAiB,CAAC,QAAS,WAAW,IACvCA,GAAb,CAAmC,aCDnC,4B,+CAIA,OAJmC,OAC1B,YAAA7rL,OAAP,WACE,OAAO,gBAAC,GAAa,KAAK9H,KAAK4d,MAAK,CAAE41K,SAAS,EAAM5P,oBAAqB79B,OAFjE6tC,EAAa,GADzB,GAAa,gBAAiB,CAAC,QAAS,WAAW,IACvCA,GAAb,CAAmC,aCTtBC,GAAS,SAAAriM,GAAC,OAAIA,aAAaslB,MAC3BiiD,GAAU,SAAApnE,GAAC,OAA8B,IAA1BC,OAAO6C,KAAK9C,GAAGuE,QAC9BoJ,GAAW,SAAA3N,GAAC,OAAS,MAALA,GAA0B,kBAANA,GACpCoB,GAAiB,SAACpB,GAAD,6BAAOqP,EAAP,iCAAOA,EAAP,yBAAgB,EAAApP,OAAOkB,UAAUC,gBAAe1B,KAAhC,SAAqCM,GAArC,OAA2CqP,KAC5E8yL,GAAgB,SAACniM,GAAD,OAAO2N,GAAS3N,IAAMonE,GAAQpnE,ICqC5C2oE,GAvCF,SAAPA,EAAQy5H,EAAKC,GACjB,GAAID,IAAQC,EAAK,MAAO,GAExB,IAAK10L,GAASy0L,KAASz0L,GAAS00L,GAAM,OAAOA,EAE7C,IAAM7iM,EAAI4iM,EACJ/hM,EAAIgiM,EAEJC,EAAgBriM,OAAO6C,KAAKtD,GAAG+N,QAAO,SAAC81C,EAAKviD,GAMhD,OALKM,GAAef,EAAGS,KACrBuiD,EAAIviD,QAAOgN,GAINu1C,IACN,IAEH,OAAI6+I,GAAO1iM,IAAM0iM,GAAO7hM,GAClBb,EAAEgyE,WAAanxE,EAAEmxE,UAAkB,GAChCnxE,EAGFJ,OAAO6C,KAAKzC,GAAGkN,QAAO,SAAC81C,EAAKviD,GACjC,IAAKM,GAAe5B,EAAGsB,GAErB,OADAuiD,EAAIviD,GAAOT,EAAES,GACNuiD,EAGT,IAAMimH,EAAa3gG,EAAKnpE,EAAEsB,GAAMT,EAAES,IAGlC,OAAIqhM,GAAc74B,IAAgB44B,GAAO54B,KAAgB64B,GAAc3iM,EAAEsB,KAAUqhM,GAAc9hM,EAAES,KAGnGuiD,EAAIviD,GAAOwoK,EACJjmH,GAHEA,IAIRi/I,I,SCpBCnjL,GAAU21H,GAAe,CAC3BytD,qBAAsB,CAClBC,MAAO,QACP39H,UAAW,OACX/6C,OAAQ,IAEZ24K,yBAA0B,CACtB59H,UAAW,OACX+kF,YAAa,QAEjB84C,SAAU,GAEVrwK,OAAQ,CACJ3H,QAAS,OACTm/H,cAAe,SACfF,SAAU,OACVqzB,eAAgB,gBAChBjuJ,UAAW,OACX7G,WAAY,OAEhB+1K,UAAW,CACP,2BAA4B,CACxBzzK,OAAQ,OACR,SAAU,CACNA,OAAO,oBACPw4D,aAAc,GAElB,UAAW,CACPx4D,OAAQ,SAGhBb,SAAU,CACNK,OAAQ,OACRg5D,aAAc,EACdx4D,OAAQ,sBAGhB,2BAA4B,CACxBA,OAAQ,OAER,uBAAwB,CACpBw4D,aAAc,MA8Bb2/G,GAAb,8BACI,WAAY12K,GAAmB,IAAD,oBAC1B,cAAMA,IAOF22K,aAAe,SAACh1K,EAAYi1K,GAChC,GAAIA,EAAS,CAET,IAAIC,EADJ,EAAK35G,SAAS,CAAE45G,UAAWF,IAE3B,IACIC,EAAkB3mL,KAAKqD,MAAMqjL,GACC,EAAKG,aAAaF,IAE5C,EAAK72K,MAAM07D,wBAAwB,iBAAkBm7G,GAEzD,EAAK72K,MAAM07D,wBAAwB,iBAAiB,GAExD,SACI,EAAK17D,MAAM07D,wBAAwB,iBAAiB,MArBlC,EA0BtBs7G,kBAAoB,WACxB,GAAI,EAAKh3K,MAAMxmB,cACX,OACI,kBAAC+7L,GAAD,CACIR,eAAgB3C,GAAe/3L,MAC/B45L,aAAa,GAFjB,kBA7BkB,EAsCtBgD,eAAiB,SAACt1K,GAEtBu1K,QAAQ,0EACR,EAAK/vL,MAAMgwL,aAAajuK,QACxB,EAAKg0D,SAAS,CACV45G,UAAW5mL,KAAKC,UAAU,GAAI,KAAM,GACpCgnL,aAAc,EAAKhwL,MAAMgwL,eAE7B,EAAKn3K,MAAM07D,wBAAwB,iBAAiB,GACpD,EAAK17D,MAAM07D,wBAAwB,iBAAkB9iF,gBAErDw+L,MAjD0B,EAoDtBC,YAAc,SAACvxL,GACnB,IAAQqxL,EAAiB,EAAKhwL,MAAtBgwL,aAKR,OAJAA,EAAa5qG,OAAOjzF,KAAqBwM,GAAOvL,IAChD,EAAK2iF,SAAS,CACVi6G,aAAcA,KAEX,GA1DmB,EA6DtBG,SAAW,SAACxxL,GAChB,IAAQqxL,EAAiB,EAAKhwL,MAAtBgwL,aACR,IAAKA,EAAa9rG,IAAI/xF,KAAqBwM,GAAOvL,IAAK,CACnD,IAAIg9L,EAAcJ,EAAa1qL,IAAInT,KAAqBwM,GAAOvL,IAC/D,EAAK2iF,SAAS,CACVi6G,aAAcI,IAGtB,OAAO,GArEmB,EAwEtBC,WAAa,SAACj9L,EAAYuL,GAC9B,MAAK,yBAA0BtC,KAA1B,GAAD,OAAmCjJ,IAC5B,EAAK88L,YAAYvxL,GAEjB,EAAKwxL,SAASxxL,IA5EC,EAgFtB2xL,UAAY,SAACl9L,EAAYuL,GAC7B,MAAK,6EAA8EtC,KAAKjJ,GAC7E,EAAK88L,YAAYvxL,GAEjB,EAAKwxL,SAASxxL,IApFC,EAwFtB4xL,SAAW,SAACn9L,EAAYuL,GAC5B,MAAkB,kBAAPvL,EACA,EAAK88L,YAAYvxL,GAEjB,EAAKwxL,SAASxxL,IA5FC,EAgGtB6xL,aAAe,SAACp9L,EAAYuL,GAChC,MAAkB,mBAAPvL,EACA,EAAK88L,YAAYvxL,GAEjB,EAAKwxL,SAASxxL,IApGC,EAwGtB8xL,gBAAkB,SAACr9L,EAAYuL,GACnC,MAAK,8BAA4CtC,KAAKjJ,GAC3C,EAAK88L,YAAYvxL,GAEjB,EAAKwxL,SAASxxL,IA5GC,EAiH9B+xL,cAAgB,SAACt9L,EAAYuL,GACzB1L,QAAQ09L,IAAIv9L,IAlHc,EAuH9Bw9L,aAAe,SAACx9L,EAAYuL,GACxB1L,QAAQ09L,IAAIv9L,IAxHc,EA4HtBw8L,aAAe,SAACH,GACpB,IAAIoB,GAA0B,EAiD9B,OAhDA,EAAKh4K,MAAM1mB,qBAAqBgH,KAAI,SAAC4vD,EAAOpqD,GACxC,OAAQoqD,EAAMv1D,gBACV,IAAK,gBACD,QAAI,EAAK68L,WAAWZ,EAAQ1mI,EAAM31D,IAAKuL,KAGnCkyL,GAA0B,GACnB,GAEf,IAAK,kBACD,QAAI,EAAKL,aAAaf,EAAQ1mI,EAAM31D,IAAKuL,KAGrCkyL,GAA0B,GACnB,GAEf,IAAK,eACD,QAAI,EAAKP,UAAUb,EAAQ1mI,EAAM31D,IAAKuL,KAGlCkyL,GAA0B,GACnB,GAEf,IAAK,kBACD,QAAI,EAAKN,SAASd,EAAQ1mI,EAAM31D,IAAKuL,KAGjCkyL,GAA0B,GACnB,GAEf,IAAK,qBACD,QAAI,EAAKJ,gBAAgBhB,EAAQ1mI,EAAM31D,IAAKuL,KAGxCkyL,GAA0B,GACnB,GAGf,IAAK,kBAGL,IAAK,mBAGL,QACI,OAAO,MAGZA,GA5KP,EAAK7wL,MAAS,CACV2vL,UAAW5mL,KAAKC,UAAU,EAAK6P,MAAMu3H,oBAAqB,KAAM,GAChE4/C,aAAc,IAAItiH,KAJI,EADlC,gCAmLI,WAAU,IAAD,OACDojH,EAASjiM,MAAMuN,KAAKnB,KAAK+E,MAAMgwL,cACnC,OACI,6BACK/0L,KAAK40L,oBAEFiB,EAAO3/L,OACH,kBAACi9L,GAAD,CACIR,eAAgB3C,GAAe/3L,MAC/B45L,aAAa,GAFjB,iFAKI,yBAAK/nL,UAAWgH,GAAQkT,QACnB6xK,EAAO33L,KAAI,SAAAjG,GAAK,OAAK,wBAAI6R,UAAWgH,GAAQujL,UAAWp8L,QAIhE,KAER,kBAACg4L,GAAD,CAAWnmL,UAAWgH,GAAQ8+K,UAAWv2K,UAAU,EAAMe,SAAU,SAACmF,EAAY+gC,GAAb,OAAmC,EAAKi0I,aAAah1K,EAAO+gC,IAAWjrB,MAAM,GAAGz7B,WAAS,EAACm8C,KAAM,GAAI5jD,MAAO6N,KAAK+E,MAAM2vL,YACzL,kBAAC,GAAD,CAAe5qL,UAAS,4BAAuBgH,GAAQsjL,0BAA4B76K,QAAS,WAAQ,EAAKqE,MAAMk4K,WAAa,EAAKl4K,MAAMk4K,YAAY9/K,UAAU+/K,UAAUC,UAAU,EAAKjxL,MAAM2vL,YAAcvpL,KAAK,SAC/M,kBAAC,GAAD,CAAerB,UAAS,4BAAuBgH,GAAQsjL,0BACnD76K,QAAO,wBAAE,+BAAAzT,EAAA,+EAEqBkQ,UAAU+/K,UAAUE,WAFzC,OAEKp1H,EAFL,OAGKq1H,EAAqBpoL,KAAKqD,MAAM0vD,GACtC,EAAKjjD,MAAM47D,mBAAmB08G,GAC9B,EAAKp7G,UAAS,SAAC/1E,GAAD,oBAAC,gBAAgBA,GAAjB,IAAwB2vL,UAAW7zH,OACjD,EAAKjjD,MAAMk4K,WAAa,EAAKl4K,MAAMk4K,YANlC,4GAaT3qL,KAAK,UAET,kBAAC,GAAD,CAAerB,UAAS,0BAAqBgH,GAAQojL,sBAAwB36K,QAAS,SAACgG,GAAiB,EAAKs1K,eAAet1K,IAAUpU,KAAK,sBAC3I,6BACA,6BAEA,gJA5NhB,GAAuC2K,IAAMmF,WAqOhCk7K,GAA0B,SAACh/L,GAEpC,cADOA,EAAe6T,UACf7T,GAmBIk9I,OAjBS,SAACtvI,EAAkB0rI,GAAnB,MAAoD,CACxE0E,oBAAoB,6BAAM76E,GAAK9jE,eAAyB2/L,GAAwBpxL,EAAM5N,kBAAnE,IAAqFuhF,oBAAqB3zE,EAAM5N,eAAeuhF,sBAClJthF,cAAe2N,EAAM3N,cACrBF,qBAAsB6N,EAAM7N,yBAKL,SAAC2M,GAAD,MAAmD,CAC1E21E,mBAAoB,SAACriF,GACjB0M,EAASmwI,GAAyBD,GAAYO,qBAAsBn9I,KAExEmiF,wBAAyB,SAACC,EAA2BpnF,GACjD0R,EAASmwI,GAAyBD,GAAYqiD,mCAAoC,CAAE18G,aAAcH,EAAmBpnF,MAAOA,SAIrHkiJ,CAGbigD,I,QC3UI+B,GAA0B90E,GAC5B,CACI31D,OAAQ,UACRvvC,QAAS,OACTi6K,YAAa,WAURC,GAAe,SAAC34K,GACzB,IAEqB44K,EAFdl9G,EAAkD17D,EAAlD07D,wBAAyB7nF,EAAyBmsB,EAAzBnsB,KAAMuF,EAAmB4mB,EAAnB5mB,eAUhCoB,GAReo+L,EAQqB/kM,EANgBG,OAAOihF,QAAQ1/E,MAAUqxB,MAAK,SAAAuG,GAAC,OAAIA,EAAE,KAAOyrK,KAExD,IAKxCC,EAA2Cr+L,IAAgBpB,EAC3D,CACE0lB,WAAY,SACZd,MAAO,WAET,GAIA86K,EAA6B,cAC/Br6K,QAAS,OACT4wJ,WAAY,SACZ1wJ,SAAU,QACPk6K,GAGDE,EAAuCv+L,IAAgBpB,EACvD,GACA,CAACg0C,QAAS,KAGe,2BAC3BzuB,SAAU,UACVF,QAAS,OACT4wJ,WAAY,UACT0pB,GAJwB,IAK3B/qI,OAAQ,YAEZ,OACI,yBACIryC,QAAS,WAAO+/D,EAAwB,iBAAkBlhF,IAC1D0R,UAAWusL,IAKX,0BAAM19K,MAAO+9K,GAAgBt+L,GAClB,WAAT3G,GAAqB,yBAAKknB,MAAO,CAAC4qC,WAAY,GAAIy2F,UAAW,UAAW48C,OAAO,eAAeC,KAAK,eAAevoG,YAAY,IAAIwoG,QAAQ,cAAcr7K,OAAO,MAAMC,MAAM,MAAMq7K,MAAM,8BAA6B,0BAAMvlM,EAAE,iWCzD7NwlM,GAAkB,SAACp5K,GAC5B,IAAQzlB,EAAwBylB,EAAxBzlB,GAAIhG,EAAoByrB,EAApBzrB,MAAOioB,EAAawD,EAAbxD,SAEb68K,EAAc74G,mBAAQ,WACxB,GAAGjsF,GAA0B,kBAAVA,EACf,IACI,OAAO2b,KAAKC,UAAU5b,EAAO,KAAM,GACrC,SACE,OAAOA,EAGf,OAAOA,IACR,CAACA,IACJ,OACI,kBAAC,WAAD,KACI,kBAAC89L,GAAD,CAAWr2L,UAAWgkB,EAAMhkB,UAAW+C,aAAcs6L,EAAax9K,OAAQ,SAACxZ,GACvE,IAAIqgD,EAAWrgD,EAAEjK,OAAO7D,MACrBmuD,GAAY,QAAQl/C,KAAKk/C,KACxBA,EAAWokB,SAASpkB,IAExBlmC,EAASjiB,EAAImoD,QClBvB,GAAgBq8F,KAEtB,eA4BE,WAAY/+H,EAAuB6iD,GAAnC,MACE,YAAM7iD,EAAO6iD,IAAQ,K,OAxBf,EAAAy2H,UAAY,cA6FZ,EAAAC,eAAiB,SACvBl2I,EACAm2I,EACAniB,QAAA,IAAAA,MAAA,IAEM,cACJj8J,EAAA,EAAAA,SACAq2K,EAAA,EAAAA,WACA59L,EAAA,EAAAA,KACAw5J,EAAA,EAAAA,UACAwJ,EAAA,EAAAA,eACAD,EAAA,EAAAA,gBACA,IAAAs5B,qBAAA,IAAgB,EAAhB,mBACAuJ,EAAA,EAAAA,mBACAC,EAAA,EAAAA,kBACAC,EAAA,EAAAA,YACAn4K,EAAA,EAAAA,MACAiW,EAAA,EAAAA,MAGF,OACE,uBAAKvrB,UAAW,EAAKu6J,YAAY9wK,KAAM6rB,MAAOA,GAC5C,gBAAConI,GAAU,MACX,2BACEziJ,KAAK,YACDsrL,EAAU,2BACWpa,EAAiB,2BAC1Ch0H,QAASA,EACTjoC,SAAUA,EACVlP,UAAW,EAAKu6J,YAAYhuJ,MAC5B8D,IAAK,EAAK+8K,UACVzlM,KAAMA,EACN0G,GAAI,EAAK+pJ,IACT9iI,MAAOA,EACPhF,SAAU,EAAK2vB,UACfvwB,QAAS,EAAK82I,SACd72I,OAAQ,EAAKs3B,QAAO,gBACL/3B,EAAQ,aACXiyI,GAAa51H,EAAK,kBACbo/H,EAAc,mBACb7N,GAAyB4N,EAAiBygB,EAAiB,qBAAoB,gBAClFqiB,EAAiB,eAClBC,EAAW,eACXH,EAAgB,QAAUn2I,EAAU,OAAS,WAE7D,yBAAOn3C,UAAW,EAAKu6J,YAAYhvI,MAAO82J,QAAS,EAAKjqC,KACtD,uBAAKp4I,UAAW,EAAKu6J,YAAYtjH,SAAQ,kBAAmBk0H,EAAiB,oBAC3E,gBAAC/pB,GAAI,GAAC/lB,SAAS,aAAgBkyD,EAAkB,CAAEvtL,UAAW,EAAKu6J,YAAYmzB,cAEhF1J,EAAc,EAAKlwK,MAAO,EAAKquK,mBAMhC,EAAA37B,SAAW,SAACzN,GACV,IAAAwsC,EAAA,QAAAA,WAEJA,GAAcA,EAAW71K,SAC3B61K,EAAW71K,QAAQqpI,IAIf,EAAA9xG,QAAU,SAAC8xG,GACT,IAAAwsC,EAAA,QAAAA,WAEJA,GAAcA,EAAW51K,QAC3B41K,EAAW51K,OAAOopI,IAId,EAAA94G,UAAY,SAAC84G,GACX,IAAAzoI,EAAA,QAAAA,SACF,UAAEu9I,EAAA,EAAAA,UAAW,EAAA8/B,iBAabr9K,GACFA,EAASyoI,EAAI8U,QAEkBl4J,IAA7B,EAAKme,MAAMw5K,eACb,EAAKt8G,SAAS,CAAE28G,iBAAiB,MAd/Br9K,GACFA,EAASyoI,GAAK8U,QAEWl4J,IAAvB,EAAKme,MAAMqjC,SACb,EAAK65B,SAAS,CAAE68E,WAAYA,MAe1B,EAAAs0B,eAAiB,SAACruK,GAChB,IAAAyX,EAAA,EAAAA,MAAOjW,EAAA,EAAAA,MAEf,OAAOiW,EACL,sCAAkB,OAAOvrB,UAAW,EAAKu6J,YAAYl5J,KAAMiU,MAAOA,GAC/DiW,GAED,MAzKJqoH,GAAuB,GASvB,EAAKwE,IAAM,EAAKtkI,MAAMzlB,IAAM8lJ,GAAM,aAClC,EAAKl5I,MAAQ,CACX4yJ,kBAAgCl4J,IAAlBme,EAAMqjC,QAAwBrjC,EAAMqjC,QAAUrjC,EAAMumE,gBAClEszG,wBAA4Ch4L,IAAxBme,EAAMw5K,cAA8Bx5K,EAAMw5K,cAAgBx5K,EAAM85K,uB,EA+J1F,OA1MkC,OASlB,EAAA1wL,yBAAd,SACE0gJ,EACAlD,GAEA,IAAMmzC,EAAuC,GAO7C,YANgCl4L,IAA5BioJ,EAAU0vC,gBACZO,EAAYF,kBAAoB/vC,EAAU0vC,oBAElB33L,IAAtBioJ,EAAUzmG,UACZ02I,EAAYhgC,YAAcjQ,EAAUzmG,SAE/BrvD,OAAO6C,KAAKkjM,GAAazhM,OAASyhM,EAAc,MA8BlD,YAAA7vL,OAAP,sBACQ,aACJgC,EAAA,EAAAA,UACAkP,EAAA,EAAAA,SACA4+K,EAAA,EAAAA,QACAjpJ,EAAA,EAAAA,MACAz0B,EAAA,EAAAA,OACA,IAAA4zK,qBAAA,IAAgB,EAAhB,sBACAvc,EAAA,EAAAA,YAGI,aAAE5Z,EAAA,EAAAA,UAAW8/B,EAAA,EAAAA,gBAYnB,OAVAz3L,KAAKqkK,YAAc,GAAcnqJ,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACTkP,SAAQ,EACRo+K,cAAeK,EACfx2I,QAAS02G,EACTnd,SAAsB,UAAZo9C,EACVC,yBAA0B/J,IAAkB9tL,KAAKisL,iBAG/C1a,EAEA,gBAAC,GAAU,CAACA,YAAaA,EAAav4J,SAAUA,IAC7C,SAACi8J,GAAuC,SAAKkiB,eAAex/B,EAAW8/B,EAA/B,MAKxCz3L,KAAKm3L,eAAex/B,EAAW8/B,IAGxC,sBAAW,4BAAa,C,IAAxB,WACE,QAASz3L,KAAK+E,MAAM0yL,iB,gCAGtB,sBAAW,sBAAO,C,IAAlB,WACE,QAASz3L,KAAK+E,MAAM4yJ,W,gCAGf,YAAAv3I,MAAP,WACMpgB,KAAKk3L,UAAUhgL,SACjBlX,KAAKk3L,UAAUhgL,QAAQkJ,SA7Fb,EAAAvZ,aAA+B,CAC3C+wL,QAAS,SAwMb,EA1MA,CAAkC,aCjB5B,GAAmB,CACvBrkM,KAAM,cACN8hC,MAAO,oBACP0rB,SAAU,uBACVy2I,UAAW,wBACXrsL,KAAM,oBCHK2sL,GAAoDl8C,GAI/D,IDMuB,SAACh+H,G,wCAChB9T,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAAO6rG,EAAA,EAAAA,SAAUv5F,EAAA,EAAAA,QAASjoC,EAAA,EAAAA,SAAU6+K,EAAA,EAAAA,yBAA0BT,EAAA,EAAAA,cACzE9zD,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAASqhC,EAAA,EAAAA,QAASE,EAAA,EAAAA,MAEpChjF,EAAa8yE,GAAoB,GAAkB5kF,GAEnDopJ,EAAqBz0D,EAAenF,uBAEpC65D,EAA4Bz0D,EAAQnN,iBAEpC6hE,EAAsB10D,EAAQrN,eAC9BgiE,EAAmC50D,EAAe5E,uBAClDy5D,EAA6B70D,EAAe5E,uBAC5C05D,EAA8B90D,EAAelB,oBAC7Ci2D,EAA6B/0D,EAAenC,mBAC5Cm3D,EAA0Ch1D,EAAerE,8BACzDs5D,EAA4Bj1D,EAAe5E,uBAG3C85D,EAAmCl1D,EAAerE,8BAClDw5D,EAAoCn1D,EAAerE,8BACnDy5D,EAA2Bp1D,EAAe1B,iBAC1C+2D,EAAoCr1D,EAAelB,oBACnDw2D,EAAoBt1D,EAAetC,SACnC63D,EAA4Bv1D,EAAevC,aAE3C+3D,EAAiC,E,GAEnCzvL,QAAS,KACTsrE,aAAcutB,EAAQg3B,eACtBh+G,SAAU,WACVQ,MAAO,GACPD,OAAQ,GACRF,IAAK,EACLC,KAAM,EACNJ,UAAW,aACX4rJ,YAAa,EACbC,YAAa,QACbvwG,YAAa19C,EAAWo/K,EAA8BF,EACtDa,mBAAoB,qCACpBC,mBA3CkC,QA4ClCC,yBA3CgC,+BA4ChC,EAACxoE,IAAuB,CACtB/5D,YAAa,c,IAKnB,MAAO,CACLnjE,KAAM,CACJktD,EAAWltD,KACX,CACE2nB,SAAU,WACVmB,QAAS,QAEXm+H,GAAY,WACZv5F,GAAW,cACVjoC,GAAY,aACbA,GAAY,eACXA,GAAY,EACVioC,IAAO,KACN,EAAC,WAAWR,EAAWM,WAAU,GAC/B2V,YAAa2hI,GACb,EAAC5nE,IAAuB,CACtB/5D,YAAa,aAEhB,GACD,EAAC,WAAWjW,EAAWM,UAAa,CAAE2V,YAAa2hI,GACnD,EAAC,WAAW53I,EAAW+2I,YAAW,GAChC57K,MAAOo8K,EACPhtJ,QAAS,KACT,EAACylF,IAAuB,CACtB70G,MAAO,aAEV,GACF,GACDqlC,IACGm2I,IAAa,KACZ,EAAC,WAAW32I,EAAWM,UAAa,CAClC3kC,WAAYo8K,EACZ9hI,YAAa+hI,GAEf,EAAC,WAAWh4I,EAAWM,UAAa,CAClC3kC,WAAYo8K,EACZ9hI,YAAa+hI,GAEf,EAAChoE,KAAoB,KACnB,EAAC,WAAWhwE,EAAWM,UAAa,CAClC3kC,WAAY,YACZs6C,YAAa,aAEf,EAAC,WAAWjW,EAAWM,UAAa,CAClC3kC,WAAY,aAEd,EAAC,iBAAiBqkC,EAAWM,UAAa,CACxC3kC,WAAY,aAEd,EAAC,iBAAiBqkC,EAAW+2I,WAAc,CACzC57K,MAAO,UAET,EAAC,WAAW6kC,EAAW+2I,WAAc,CACnC57K,MAAO,UAEV,GACF,GACHw7K,IAAa,KACX,EAAC,WAAW32I,EAAWM,SAAQ,aAAaN,EAAWM,SAAQ,WAAQ,GACrE2V,YAAa4hI,GACb,EAAC7nE,IAAuB,CACtB/5D,YAAa,cAEhB,GACD,EAAC,WAAWjW,EAAWM,UAAa,CAClC2V,YAAa4hI,GAEf,EAAC,WAAW73I,EAAW+2I,WAAc,CACnCxsJ,QAAS,KAEZ,I,KAEC,EAAC,WAAWyV,EAAWt1C,KAAI,aAAas1C,EAAWt1C,OAAM,GACvDyQ,MAAO88K,GACP,EAACjoE,IAAuB,CACtB70G,MAAO5C,EAAW,WAAa,cAElC,G,IAGLlP,GAEFuM,OAAK,GACH6E,SAAU,WACVkB,WAAY,OAEZ4uB,QAAS,GACT,EAAC,IAAI+lF,GAAuB,6BAA0B,GACpD77D,QAAS,aAAevmB,EAAM40F,QAAQnN,iBACtC80D,cAAe,OACf,EAACz6D,IAAuB,CACtBv7D,QAAS,wBAEZ,GACF,GACD7/B,MAAO,CACLorB,EAAWprB,MACXsZ,EAAM80F,MAAM9T,OACZ,CACEtzG,QAAS,OACT4wJ,WAAY4qB,EAA2B,SAAW,aAClDjsI,OAAQ5yC,EAAW,UAAY,UAC/BkC,SAAU,WACVukK,WAAY,QAEdjlC,GAAY,CACVgB,cAAe,cACfmzB,eAAgB,YAElB,CACE,YAAa,CACXzzJ,SAAU,WACVM,KAAM,EACNiY,MAAO,EACPlY,IAAK,EACLmG,OAAQ,EACRrY,QAAS,KACT2S,cAAe,UAIrB+kC,SAAU,CACRN,EAAWM,U,GAET7lC,SAAU,WACVmB,QAAS,OACT0wE,WAAY,EACZkgF,WAAY,SACZ0B,eAAgB,SAChBlzJ,OArLuB,OAsLvBC,MAtLuB,OAuLvBS,OAAQ,aAAa87K,EACrBtjH,aAAcutB,EAAQg3B,eACtB99G,UAAW,aACX29K,mBAAoB,mCACpBC,mBA1LgC,QA2LhCC,yBA1L8B,8BA6L9B59K,SAAU,SACV,SAAU+7K,EAAgB0B,EAAyB,MACnD,EAACroE,IAAoB,GACnB/5D,YAAa,c3N7Kd,CACL42G,kBAAmB,OACnBC,qBAAsB,S,G2N+KpB6pB,GAAiB,CACf1gI,YAAawhI,GAEd19C,EAQG,CACEj3F,WAAY,GAJd,CACEg4F,YAAa,IAKlBviI,IACEo+K,GACDn2I,IAAO,GACL7kC,WAAYm8K,EACZ7hI,YAAayhI,GACb,EAAC1nE,IAAuB,CACtBr0G,WAAY,YACZs6C,YAAa,aAEhB,GACH19C,IAAQ,GACN09C,YAAa0hI,GACb,EAAC3nE,IAAuB,CACtB/5D,YAAa,YAEhB,GACDzV,GACEjoC,IAAQ,GACNoD,WAAYu8K,EACZjiI,YAAa0hI,GACb,EAAC3nE,IAAuB,CACtBr0G,WAAY,UAEf,IAELo7K,UAAW,CACT/2I,EAAW+2I,W,GAETxsJ,QAASiW,EAAU,IAAM,IACzBrlC,MAAOm8K,GACP,EAACtnE,IAAoB,GACnB70G,MAAO5C,EAAW,WAAa,U3N9NhC,CACLs0J,kBAAmB,OACnBC,qBAAsB,S,I2NiOtBpiK,KAAM,CACJs1C,EAAWt1C,M,GAETyQ,MAAO5C,EAAW6/K,EAA4BD,EAC9Cr8K,SAAUknH,EAAM9T,OAAOpzG,SACvBK,WAAY,QACZ,EAAC6zG,IAAoB,GACnB70G,MAAO5C,EAAW,WAAa,c3N1OhC,CACLs0J,kBAAmB,OACnBC,qBAAsB,S,G2N4OnB/yB,EAIG,CACEe,YAAa,GAJf,CACEh4F,WAAY,YCvQG9jD,EAAW,CAAEu8I,MAAO,aCFlCk9C,GAAkB,SAACt7K,GAC5B,IAAQzlB,EAAwBylB,EAAxBzlB,GAAIhG,EAAoByrB,EAApBzrB,MAAOioB,EAAawD,EAAbxD,SACnB,OACI,kBAAC,WAAD,KACI,kBAAC09K,GAAD,CAAU3lM,MAAOA,EAAO8uD,QAAS9uD,EAAOioB,SAAU,SAACna,EAAQqgD,GAAwBlmC,EAASjiB,EAAImoD,QCuGtG,SAAU64I,GAAehnM,EAAeinM,EAAmB9sH,QAAA,IAAAA,MAAA,IAC/D,IAAM+sH,EAAMhkM,KAAKC,IAAIg3E,EAAM8sH,GAC3B,OAAO/jM,KAAK+3D,MAAMj7D,EAAQknM,GAAOA,ECzGnC,ICWYC,GDLNC,GAAqB7mE,IACzB,SAAC/jF,G,MACS20F,EAAA,EAAAA,eAEFk2D,EAA8Bl2D,EAAevC,aAC7C04D,EAAoCn2D,EAAelD,mBAEzD,MAAO,CACLr1F,gBAAiB0uJ,EACjBz9K,cAAe,OACf4vC,OAAQ,UACRhwC,MAAO49K,EACP9yE,WAAS,GACP,SAAU,CACRhwD,YAAa+iI,IAEf,EAAChpE,IAAuB,CACtB70G,MAAO,YAEV,OAKM89K,GAAuBhnE,IAClC,SAAC/jF,EAAegrJ,EAAoBC,G,UAC1Br2D,EAAA,EAAAA,QAASD,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAG3B23F,EAAuBt2D,EAAQnN,iBAC/B0jE,EAA8Bx2D,EAAepC,WAC7C64D,EAA8Bz2D,EAAepC,WAE7C84D,EAA+B12D,EAAetD,wBAC9Ci6D,EAA+B32D,EAAe3D,wBAqEpD,OAAO+F,GAnEyC,CAC9CnyI,KAAM,CACJ2hE,QAAS,OACT74C,QAAS,QACTZ,OAAQ,MACRC,MA/CmB,GAgDnB9C,QAAS,EACTmyB,gBAAiB,cACjB5vB,UAAW,SACXywC,OAAQ,UACRhwC,MAAOi+K,EACPnzE,UAAW,CACT,kBAAmB,CACjB/xC,aAAc,OAAOutB,EAAQg3B,eAAc,MAE7C,gBAAiB,CACfvkD,aAAc,KAAKutB,EAAQg3B,eAAc,UAI/C40C,YAAa,CACX/iI,gBAAiBivJ,EACjBp+K,MAAOk+K,GAET9rB,YAAa,CACXjjI,gBAAiBkvJ,EACjBr+K,MAAOm+K,EACPrzE,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,YACjBnvB,MAAO,iBAEV,IAEHqyJ,YAAa,CACXljI,gBAAiBkvJ,EACjBr+K,MAAOm+K,EACPrzE,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,YACjBnvB,MAAO,iBAEV,IAEHiyJ,aAAc,CACZ7iI,QAAS,GACT07E,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WACPovB,QAAS,GAEZ,IAEHxqB,KAAM,CACJjE,SA/FuB,EAgGvBi6C,UAAW,EACX+kF,YAAa,EACbrzG,aAAc,EACdqb,WAAY,IAK2C,GAOzDq2I,MAKO,GAAYlnE,IACvB,SAAC/jF,EAAeq5I,G,QACNzkD,EAAA,EAAAA,QAASD,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAASuhC,EAAA,EAAAA,MAEpCy2D,EAA4B52D,EAAetB,YAC3Cm4D,EAAgC72D,EAAepF,gBAC/Ck8D,EAAmC92D,EAAenC,mBAClDk5D,EAAmC/2D,EAAe1E,oBAElD07D,EAA2Bh3D,EAAelC,UAC1Cm5D,EAAmCh3D,EAAQzM,MAC3C0jE,EAAyCl3D,EAAe5E,uBAExD+7D,EAA8Bn3D,EAAevC,aAkInD,OAAO2E,GAhIkC,CACvCnyI,KAAM,CACJkwI,EAAM9T,OACN,CACEz6D,QAAS,OACTx5C,MAAO,OACPwrJ,SAvIgB,KA0IpBwzB,aAAc,CACZr+K,QAAS,cACT4wJ,WAAY,UAEd0tB,kBAAmB,CACjBl/K,OAhJe,GAiJf04K,MAAO,OACP54C,YAhJa,IAkJfq/C,gBAAiB,CACfn/K,OArJe,GAsJf04K,MAAO,QACP5wI,WArJa,IAuJfs3I,gBAAiB,CAKf3yJ,cAAe,GAEjB4yJ,mBAAoB,GACpBt6K,KAAM,CACJ5H,QAAS,QACT2D,SAAU2uG,GAAc2E,OAE1B4+C,aAAc,CACZ7yJ,MAAO6+K,GAETplK,MAAO,CACLrZ,cAAe,OAEfY,WAAYsuG,GAAc2E,OAE5B+xD,cAAe,GACfmZ,kBAAmB,CACjB1+K,QAAS,OACTnB,SAAU,WACVE,UAAW,aACXK,OAlLe,GAmLfyrJ,SAlLkB,GAmLlBxgD,UAAW,CAGT,SAAU,CACR1qG,cAAe,OACf3S,QAAS,KACT6R,SAAU,WACVM,KAAM,EACND,IAAK,EACLmG,OAAQ,EACR+R,MAAO,EACPuzI,YAAa,MACbC,YAAa,QACbvwG,YAAawjI,EACbvlH,aAAcutB,EAAQg3B,kBAI5B8hE,2BAA4B,CAC1Bt/K,MAAO,QAETu/K,yBAA0B,CACxBv0E,WAAS,GACP,SAAU,CACRhwD,YAAa0jI,IAEf,EAAC3pE,IAAuB,CACtB/J,UAAW,CACT,SAAU,CACRhwD,YAAa,eAIpB,IAEHwkI,yBAA0B,GAAmBb,EAAkCn4F,EAAQg3B,gBACvFiiE,0BAA2B5B,GAAmB5qJ,GAC9Ct4B,MAAO,CACL+E,UAAW,aACXkpH,UAAW,OACX2iC,YAAa,OACbv2I,KAAM,EACNxU,OAAQ,EACRK,SAAUknH,EAAM9T,OAAOpzG,SACvBD,WAAY,UACZV,MAAO0+K,EACPvvJ,gBAAiBovJ,EACjB1+K,OAAQ,OACR7C,QAAS,cACTs8C,QAAS,EACT74C,QAAS,QACT6qJ,SAAUk0B,GACVp+K,WAAY,SACZo+H,aAAc,WACd//H,SAAU,SACVuwC,OAAQ,OACR6zH,WAAY,OACZ9qG,aAAiButB,EAAQg3B,eAAc,QAAQh3B,EAAQg3B,gBAEzDmiE,kBAAmB,CACjBtwJ,gBAAiByvJ,EACjB5+K,MAAO2+K,EACP7zE,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,YACjB2rB,YAAa,YACb96C,MAAO,iBAEV,IAEH0/K,cAAe/B,GAAmB5qJ,GAClC4sJ,sBAAuB,CACrBl/K,QAAS,QACTZ,OAAQ,OACRmwC,OAAQ,WAEV4vI,8BAA+BjC,GAAmB5qJ,IAEdq5I,ME1Q7B,GAAgBt1D,IAC3B,SACEx4G,EACAlB,EACAi4B,EACAwqJ,EACAC,EACA5xL,GAEA,YAHA,IAAA4xL,MAA0B5iC,GAAStkJ,YACnC,IAAA1K,WAAA,GAEO,CACLvW,KAAMguH,GAAYrnG,EAAO3mB,KAAMuW,GAC/B4wL,aAAcn5E,GAAYrnG,EAAOwgL,aAAciB,GAAiCD,EAAexhL,IAC/FsG,KAAM+gG,GAAYrnG,EAAOsG,KAAMxH,GAAYkB,EAAOu0J,cAClDp5I,MAAOksF,GAAYrnG,EAAOmb,OAC1B0lK,kBAAmBx5E,GACjBrnG,EAAO6gL,kBACPa,GAAgCF,EAAexhL,IAC9ClB,GAAY,CACX,CACE0tG,UAAW,CACT,SAAUxsG,EAAO+gL,2BAGrBhqJ,GAAa,CAGXy1E,UAAW,CACT,KAAMxsG,EAAOghL,4BAInBliL,GAAYkB,EAAOihL,2BAErB9kL,MAAOkrG,GACL,sBACArnG,EAAO7D,OACN2C,GAAY,CACX0tG,UAAW,CACT,cAAexsG,EAAOmhL,oBAG1BriL,GAAYkB,EAAOohL,eAErBO,SAAUt6E,GAAYrnG,EAAOqhL,sBAAuBviL,GAAYkB,EAAOshL,mCAQ7E,SAASG,GAAiCD,EAAyBxhL,GACjE,OAAQwhL,GACN,KAAK5iC,GAAStkJ,MACZ,OAAO0F,EAAOygL,kBAChB,KAAK7hC,GAASnkJ,IACZ,OAAOuF,EAAO0gL,gBAChB,KAAK9hC,GAASv9I,IACZ,OAAOrB,EAAO2gL,gBAChB,KAAK/hC,GAASp3I,OACZ,OAAOxH,EAAO4gL,oBAOpB,SAASc,GAAgCF,EAAyBxhL,GAChE,OAAQwhL,GACN,KAAK5iC,GAASv9I,IACd,KAAKu9I,GAASp3I,OACZ,OAAOxH,EAAO8gL,2BAChB,QACE,MAAO,KDxDb,SAAY1B,GACV,oBACA,iCACA,eAHF,CAAYA,QAAqB,KAoCjC,mBAyBE,WAAY17K,GAAZ,MACE,YAAMA,IAAM,KAbN,EAAA8R,OAAS,cAST,EAAAosK,kBAAoB,IACpB,EAAAC,WAAa,GA+Nb,EAAAzrC,SAAW,SAACzN,GAEb,EAAKnzH,OAAOxY,WAIb,EAAK8kL,kBAAoB,EAAKj3L,MAAM02L,wBAA0BnC,GAAsB2C,cACtF,EAAKC,QAGP,EAAKxsK,OAAOxY,QAAQ8iB,SAEpB,EAAK8gD,SAAS,CAAE7pC,WAAW,IAEvB,EAAKrzB,MAAMpE,SACb,EAAKoE,MAAMpE,QAAQqpI,KAIf,EAAA9xG,QAAU,SAAC8xG,GACjB,EAAKkpC,UAAUlpC,GACf,EAAK/nE,SAAS,CAAE7pC,WAAW,IACvB,EAAKrzB,MAAMnE,QACb,EAAKmE,MAAMnE,OAAOopI,IAId,EAAAs5C,YAAc,SAAChqM,EAAeotB,GACpC,OAAI,EAAK3B,MAAMw2B,WACN,EAAKx2B,MAAMw2B,WAAWjiD,EAAOotB,GAE7B,EAAK68K,mBAAmBjqM,IAI3B,EAAAkqM,oBAAsB,SAACz+K,GACrB,QAAAw7K,UACR,YADQ,eF3PN,SAA6BjnM,GAOjC,IAAMmqM,EAAS,0BAA0BzyL,KAAKmL,OAAO7iB,IACrD,OAAKmqM,EAGDA,EAAO,IACDA,EAAO,GAAGpmM,OAEhBomM,EAAO,GACFA,EAAO,GAAGpmM,OAEZ,EARE,EEkPC,eAOF,EAAAkmM,mBAAqB,SAACjqM,GAC5B,GAAc,OAAVA,GAA0C,IAAxBA,EAAMwgC,OAAOz8B,QAAgBpB,MAAM2f,OAAOtiB,IAC9D,OAAO,EAAKoqM,gBAEd,IAAMj8I,EAAWjrD,KAAK0f,IAAI,EAAK6I,MAAM9I,IAAezf,KAAKyf,IAAI,EAAK8I,MAAM7I,IAAeN,OAAOtiB,KAC9F,OAAO6iB,OAAOsrC,IAGR,EAAAk8I,aAAe,SACrBrqM,EACAotB,GAEA,OAAI,EAAK3B,MAAM6+K,YACN,EAAK7+K,MAAM6+K,YAAYtqM,EAAOotB,GAE9B,EAAKm9K,oBAAoBvqM,IAO5B,EAAAuqM,oBAAsB,SAACvqM,GACvB,cAAE2iB,EAAA,EAAAA,IAAKujC,EAAA,EAAAA,KACTiI,EAAmBjrD,KAAK0f,IAAIN,OAAOtiB,GAASsiB,OAAO4jC,GAAOvjC,GAE9D,OADAwrC,EAAW64I,GAAe74I,EAAU,EAAKq8I,YAClC3nL,OAAOsrC,IAGR,EAAAs8I,aAAe,SACrBzqM,EACAotB,GAEA,OAAI,EAAK3B,MAAMi/K,YACN,EAAKj/K,MAAMi/K,YAAY1qM,EAAOotB,GAE9B,EAAKu9K,oBAAoB3qM,IAO5B,EAAA2qM,oBAAsB,SAAC3qM,GACvB,cAAE4iB,EAAA,EAAAA,IAAKsjC,EAAA,EAAAA,KACTiI,EAAmBjrD,KAAKyf,IAAIL,OAAOtiB,GAASsiB,OAAO4jC,GAAOtjC,GAE9D,OADAurC,EAAW64I,GAAe74I,EAAU,EAAKq8I,YAClC3nL,OAAOsrC,IAoBR,EAAAyrI,UAAY,SAACxsK,GACnB,QACiB9f,IAAf,EAAKtN,YACqBsN,IAA1B,EAAKs9L,kBACL,EAAKA,mBAAqB,EAAKR,gBAC/B,CACA,IAAMj8I,EAAW,EAAK67I,YAAa,EAAKY,iBAAkBx9K,GAE1D,EAAKw9K,sBAAmBt9L,OAEPA,IAAb6gD,GACF,EAAKi8I,gBAAkBj8I,EACvB,EAAKw6B,SAAS,CAAE3oF,MAAOmuD,KAGvB,EAAKw6B,SAAS,CAAE3oF,MAAO,EAAKoqM,oBAU1B,EAAAjQ,eAAiB,SAAC/sK,GACxB,IACMptB,EAD4BotB,EAAMvpB,OACV7D,MAC9B,EAAK4qM,iBAAmB5qM,EACxB,EAAK2oF,SAAS,CACZ3oF,MAAOA,KAWH,EAAA6qM,aAAe,SACrBC,EACAC,EACAC,EAIA59K,GAEA,IAAM+gC,EAA0B68I,EAAa,EAAKhrM,OAAS,GAAIotB,QAC9C9f,IAAb6gD,IACF,EAAKi8I,gBAAkBj8I,EACvB,EAAKw6B,SAAS,CAAE3oF,MAAOmuD,KAGrB,EAAK07I,mBAAqBiB,IAC5B,EAAKjB,iBAAmBiB,GAGtBA,IACF,EAAKG,2BAA6B,EAAKt9B,OAAOpuJ,YAAW,WACvD,EAAKsrL,aAAaC,EAAY,EAAKlB,WAAYoB,EAAc59K,KAC5D29K,KAOC,EAAAhB,MAAQ,WACV,EAAKkB,4BAA8B,IACrC,EAAKt9B,OAAO3sI,aAAa,EAAKiqK,4BAC9B,EAAKA,4BAA8B,IAGjC,EAAKpB,kBAAoB,EAAKj3L,MAAM02L,wBAA0BnC,GAAsB2C,eACtF,EAAKD,kBAAmB,EACxB,EAAKlhH,SAAS,CAAE2gH,sBAAuBnC,GAAsB2C,gBASzD,EAAAzkL,eAAiB,SAAC+H,GAQxB,GALIA,EAAMuD,QAAUsyH,IAAe71H,EAAMuD,QAAUsyH,IAAiB71H,EAAMuD,QAAUsyH,KAClF71H,EAAMC,iBACND,EAAM4D,mBAGJ,EAAKvF,MAAM5E,SACb,EAAKkjL,YADP,CAKA,IAAImB,EAAgB/D,GAAsB2C,YAE1C,OAAQ18K,EAAMuD,OACZ,KAAKsyH,GACHioD,EAAgB/D,GAAsBgE,GACtC,EAAKN,cAAa,EAAwB,EAAKlB,kBAAmB,EAAKU,aAAej9K,GACtF,MACF,KAAK61H,GACHioD,EAAgB/D,GAAsBiE,KACtC,EAAKP,cAAa,EAAwB,EAAKlB,kBAAmB,EAAKc,aAAer9K,GACtF,MACF,KAAK61H,GACH,EAAK22C,UAAUxsK,GACf,MACF,KAAK61H,GACC,EAAKjjJ,QAAU,EAAKoqM,iBACtB,EAAKzhH,SAAS,CAAE3oF,MAAO,EAAKoqM,kBAS9B,EAAKx3L,MAAM02L,wBAA0B4B,GACvC,EAAKviH,SAAS,CAAE2gH,sBAAuB4B,MASnC,EAAAG,aAAe,SAACj+K,IAClB,EAAK3B,MAAM5E,UAAYuG,EAAMuD,QAAUsyH,IAAe71H,EAAMuD,QAAUsyH,KACxE,EAAK8mD,SAKD,EAAAuB,sBAAwB,SAACl+K,GAC/B,EAAKy9K,cAAa,EAAuB,EAAKlB,kBAAmB,EAAKU,aAAej9K,IAG/E,EAAAm+K,sBAAwB,SAACn+K,GAC/B,EAAKy9K,cAAa,EAAuB,EAAKlB,kBAAmB,EAAKc,aAAer9K,IA3drFm+H,GAAuB,GAOjB,QAAAvrJ,aAAA,uB,YACQsN,IAAVtN,IACFA,EAA6B,kBAAdyrB,EAAM7I,IAAmBC,OAAO4I,EAAM7I,KAAO,KAE9D,EAAKwnL,gBAAkBpqM,EAGvB,EAAKwqM,WAAa,EAAKN,oBAAoBz+K,GAE3C,EAAK7Y,MAAQ,CACXksC,WAAW,EACX9+C,MAAK,EACLspM,sBAAuBnC,GAAsB2C,aAG/C,EAAKn8B,OAAS,IAAI,GAAM,GACxB,EAAKs9B,4BAA8B,EACnC,EAAKpZ,SAAW/lC,GAAM,SACtB,EAAK0/C,SAAW1/C,GAAM,SACtB,EAAK+9C,kBAAmB,EACxB,EAAKe,sBAAmBt9L,E,EAkc5B,OAzfgC,OA0DvB,YAAA6sG,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,WAMP,YAAAp8C,iCAAP,SAAwC0hD,QACf3lJ,IAAnB2lJ,EAASjzJ,QAEX6N,KAAKu8L,gBAAkBn3C,EAASjzJ,MAChC6N,KAAK86E,SAAS,CAAE3oF,MAAOizJ,EAASjzJ,SAElC6N,KAAK28L,WAAa38L,KAAKq8L,oBAAoBj3C,IAGtC,YAAAt9I,OAAP,sBACQ,aACJkR,EAAA,EAAAA,SACAqc,EAAA,EAAAA,MACAtgB,EAAA,EAAAA,IACAD,EAAA,EAAAA,IACA4mL,EAAA,EAAAA,cACAlwB,EAAA,EAAAA,UACAoyB,EAAA,EAAAA,oBACAC,EAAA,EAAAA,yBACAC,EAAA,EAAAA,oBACAC,EAAA,EAAAA,yBACA9yC,EAAA,EAAAA,UACAuJ,EAAA,EAAAA,gBACA,IAAAt6I,OACA,IAAA8jL,oBACA,IAAAC,sBACAtvJ,EAAA,EAAAA,MACA2oJ,EAAA,EAAAA,kBACAC,EAAA,EAAAA,YACA2G,EAAA,EAAAA,aACAC,EAAA,EAAAA,cACA5sB,EAAA,EAAAA,YACAznK,EAAA,EAAAA,UACAulL,EAAA,EAAAA,WACA+O,EAAA,EAAAA,gBAGI,aAAEntJ,EAAA,EAAAA,UAAWwqJ,EAAA,EAAAA,sBACbtpM,EAAQ6N,KAAK7N,MAEbsuD,EAAazgD,KAAK4d,MAAMi4J,cAC1B71K,KAAK4d,MAAMi4J,cAAclnI,EAAQ31B,EAAUi4B,EAAWwqJ,EAAuBC,EAAe5xL,GAC5F,GACE,GAAU6kC,EAAQq5I,GAClBhvK,EACAi4B,EACAwqJ,EACAC,EACA5xL,GAGA4vI,EAAclB,GAAqDx4I,KAAK4d,MAAO26H,GAAe,CAClG,SACA,UACA,cAGF,OACE,uBAAKzuI,UAAW22C,EAAWltD,MACxBmoM,IAAkB5iC,GAASp3I,SAAW8pJ,GAAan2I,IAClD,uBAAKvrB,UAAW22C,EAAWi6I,cACxBlvB,GAAa,gBAACtgB,GAAI,KAAKsgB,EAAS,CAAE1hK,UAAW22C,EAAWjgC,KAAI,cAAc,UAC1E6U,GACC,gBAAC+1J,GAAK,CAACjzL,GAAI6H,KAAKgkL,SAAUmI,QAASnsL,KAAK29L,SAAU7zL,UAAW22C,EAAWprB,MAAOrc,SAAUA,GACtFqc,IAKT,gBAAC,GAAU,CAACk8I,YAAaA,EAAav4J,SAAUA,IAC7C,SAACi8J,GAAuC,OACvC,2BACMv7B,EAAW,CACf5vI,UAAW22C,EAAWs6I,kBAAiB,aAC3B9vC,GAAaA,EAAS,gBACnBqsC,EAAiB,eAClBC,EAAW,kBACRtiB,EAAiB,qBAElC,2BACE9iL,MAAOA,EACPgG,GAAI,EAAKwlM,SACTvjL,SAAU,EAAK2vB,UACfqlJ,QAAS,EAAK9C,eACdxiL,UAAW22C,EAAWpqC,MACtBtS,KAAK,OACLuW,aAAa,MACbwa,KAAK,aAAY,kBACAO,GAAS,EAAK2uJ,SAAQ,gBAEb,kBAAjBka,EACHA,EACA/rM,IAAU2C,MAAM2f,OAAOtiB,IACvBsiB,OAAOtiB,QACPsN,EAAS,iBAGY,kBAAlB0+L,EACHA,GACChsM,GAAS2C,MAAM2f,OAAOtiB,IACvBA,OACAsN,EAAS,gBAEAsV,EAAG,gBACHD,EAAG,mBACA8xI,GAAyB4N,EAAiBygB,EAAiB,qBAC7Ex7J,OAAQ,EAAKs3B,QACb52B,IAAK,EAAKuV,OACVlW,QAAS,EAAK82I,SACd14I,UAAW,EAAKJ,eAChBkC,QAAS,EAAK8jL,aACdxkL,SAAUA,EAAQ,gBACHA,EAAQ,iBACR,EAAI,0BACMi8J,EAAiB,4BACtCoa,IAEN,wBAAMvlL,UAAW22C,EAAWo7I,UAC1B,gBAAC,GAAU,GACT3hL,OAAQw/K,GAAqB/qJ,GAAQ,EAAM0vJ,GAC3Cv0L,UAAW,cACXm3C,QAASw6I,IAA0BnC,GAAsBgE,GACzDtkL,SAAUA,EACVwyJ,UAAWoyB,EACXtmI,YAAa,EAAKmmI,sBAClBtoB,aAAc,EAAK+mB,MACnBt3B,UAAW,EAAKs3B,MAChB/mK,UAAW,EACX81H,UAAW4yC,EAAwB,qBAChB,GACfO,IAEN,gBAAC,GAAU,GACTlkL,OAAQw/K,GAAqB/qJ,GAAQ,EAAO2vJ,GAC5Cx0L,UAAW,gBACXm3C,QAASw6I,IAA0BnC,GAAsBiE,KACzDvkL,SAAUA,EACVwyJ,UAAWsyB,EACXxmI,YAAa,EAAKomI,sBAClBvoB,aAAc,EAAK+mB,MACnBt3B,UAAW,EAAKs3B,MAChB/mK,UAAW,EACX81H,UAAW8yC,EAAwB,qBAChB,GAzEc,SAgF1CrC,IAAkB5iC,GAASp3I,SAAW8pJ,GAAan2I,IAClD,uBAAKvrB,UAAW22C,EAAWi6I,cACxBlvB,GAAa,gBAACtgB,GAAI,CAAC/lB,SAAUqmC,EAAUrmC,SAAUr7H,UAAW22C,EAAWjgC,KAAI,cAAc,SACzF6U,GACC,gBAAC+1J,GAAK,CAACjzL,GAAI6H,KAAKgkL,SAAUmI,QAASnsL,KAAK29L,SAAU7zL,UAAW22C,EAAWprB,MAAOrc,SAAUA,GACtFqc,MASR,YAAAjV,MAAP,WACMpgB,KAAK0vB,OAAOxY,SACdlX,KAAK0vB,OAAOxY,QAAQkJ,SAOxB,sBAAW,oBAAK,C,IAAhB,WAKE,OAAOpgB,KAAK+E,MAAM5S,O,gCAgGZ,YAAA43C,UAAR,aAlVc,EAAAljC,aAA6B,CACzCwxC,KAAM,EACNtjC,IAAK,EACLD,IAAK,IACLkE,UAAU,EACV0iL,cAAe5iC,GAAStkJ,MACxB6gB,MAAO,GACPuoK,oBAAqB,CAAEz4D,SAAU,kBACjC24D,oBAAqB,CAAE34D,SAAU,qBATxBo5D,EAAU,GADtB,GAAa,aAAc,CAAC,QAAS,WAAW,IACpCA,GAAb,CAAgC,a,QEtDjB,SAASC,GAActsK,EAAM0gB,GAE1C,OADAA,EAA2B,MAAdA,EAAqB1gB,EAAKh8B,OAAS,GAAK08C,EAC9C,WAIL,IAHA,IAAI18C,EAASb,KAAKyf,IAAI7e,UAAUC,OAAS08C,EAAY,GACjDzkC,EAAOva,MAAMsC,GACbwN,EAAQ,EACLA,EAAQxN,EAAQwN,IACrByK,EAAKzK,GAASzN,UAAUyN,EAAQkvC,GAElC,OAAQA,GACN,KAAK,EAAG,OAAO1gB,EAAK7gC,KAAK2O,KAAMmO,GAC/B,KAAK,EAAG,OAAO+jB,EAAK7gC,KAAK2O,KAAM/J,UAAU,GAAIkY,GAC7C,KAAK,EAAG,OAAO+jB,EAAK7gC,KAAK2O,KAAM/J,UAAU,GAAIA,UAAU,GAAIkY,GAE7D,IAAInN,EAAOpN,MAAMg/C,EAAa,GAC9B,IAAKlvC,EAAQ,EAAGA,EAAQkvC,EAAYlvC,IAClC1C,EAAK0C,GAASzN,UAAUyN,GAG1B,OADA1C,EAAK4xC,GAAczkC,EACZ+jB,EAAKp8B,MAAMkK,KAAMgB,ICvBb,SAAS1B,GAAS7H,GAC/B,IAAIsM,SAActM,EAClB,MAAgB,aAATsM,GAAgC,WAATA,KAAuBtM,ECFxC,SAASgnM,GAAOhnM,GAC7B,OAAe,OAARA,ECDM,SAASinM,GAAYjnM,GAClC,YAAe,IAARA,ECCM,SAASknM,GAAUlnM,GAChC,OAAe,IAARA,IAAwB,IAARA,GAAwC,qBAAvBxD,KAAS5C,KAAKoG,GCHzC,SAAS6+G,GAAU7+G,GAChC,SAAUA,GAAwB,IAAjBA,EAAIm8E,UCCR,SAASgrH,GAAUntM,GAChC,IAAIof,EAAM,WAAapf,EAAO,IAC9B,OAAO,SAASgG,GACd,OAAOxD,KAAS5C,KAAKoG,KAASoZ,GCJnB+tL,UAAU,UCAVA,MAAU,UCAVA,MAAU,QCAVA,MAAU,UCAVA,MAAU,SCAVA,MAAU,UCAVA,MAAU,eCCrBC,GAAaD,GAAU,YAIvBE,GAAWvrM,KAAKgX,UAAYhX,KAAKgX,SAASiY,WACM,iBAAbu8K,WAA4C,mBAAZD,KACrED,GAAa,SAASpnM,GACpB,MAAqB,mBAAPA,IAAqB,IAIxBonM,UCZAD,MAAU,UCIdI,GACL5qM,MAAoB6qM,GAAa,IAAI5qM,SAAS,IAAIF,YAAY,KAEhE+qM,GAAyB,qBAARjtH,KAAuBgtH,GAAa,IAAIhtH,KCJzDktH,GAAaP,GAAU,YAQXI,UAJhB,SAAwBvnM,GACtB,OAAc,MAAPA,GAAeonM,GAAWpnM,EAAI2nM,UAAYC,GAAc5nM,EAAIqnE,SAGlBqgI,GCRpC7qM,SAAiBsqM,GAAU,SCF3B,SAAS31G,GAAIxxF,EAAKhF,GAC/B,OAAc,MAAPgF,GAAe1E,KAAe1B,KAAKoG,EAAKhF,GCDjD,IAAI6sM,GAAcV,GAAU,cAI3B,WACMU,GAAYrpM,aACfqpM,GAAc,SAAS7nM,GACrB,OAAOwxF,GAAIxxF,EAAK,YAHrB,GAQc6nM,UCXA,SAAStqM,GAASyC,GAC/B,OAAQ8nM,GAAS9nM,IAAQ1C,aAAU0C,KAAS3C,MAAM4qE,WAAWjoE,ICDhD,SAAS3C,GAAM2C,GAC5B,OAAO+nM,GAAS/nM,IAAQ5C,aAAO4C,GCJlB,SAASw4I,GAAS99I,GAC/B,OAAO,WACL,OAAOA,GCAI,SAASstM,GAAwBC,GAC9C,OAAO,SAASC,GACd,IAAIC,EAAeF,EAAgBC,GACnC,MAA8B,iBAAhBC,GAA4BA,GAAgB,GAAKA,GAAgBxqM,MCLpE,SAASyqM,GAAgBptM,GACtC,OAAO,SAASgF,GACd,OAAc,MAAPA,OAAc,EAASA,EAAIhF,ICAvBotM,UAAgB,cCEhBJ,MAAwBK,ICCnCC,GAAoB,8EAQT7rM,YAPf,SAAsBuD,GAGpB,OAAO9C,KAAgBA,aAAa8C,KAAS0nM,GAAW1nM,GAC1CuoM,GAAavoM,IAAQsoM,GAAkB3+L,KAAKnN,KAAS5C,KAAKoG,KAGtBw4I,IAAS,GCX9C4vD,MAAgB,UCoBhB,SAASI,GAAoBxoM,EAAKhD,GAC/CA,EAhBF,SAAqBA,GAEnB,IADA,IAAI65B,EAAO,GACFn9B,EAAIsD,EAAKyB,OAAQhF,EAAI,EAAGA,EAAIC,IAAKD,EAAGo9B,EAAK75B,EAAKvD,KAAM,EAC7D,MAAO,CACL6Z,SAAU,SAAStY,GAAO,OAAqB,IAAd67B,EAAK77B,IACtCsB,KAAM,SAAStB,GAEb,OADA67B,EAAK77B,IAAO,EACLgC,EAAKV,KAAKtB,KASdytM,CAAYzrM,GACnB,IAAI0rM,EAAahrM,KAAmBe,OAChCwJ,EAAcjI,EAAIiI,YAClB+C,EAAQo8L,GAAWn/L,IAAgBA,EAAY5M,WAAae,KAG5Do2B,EAAO,cAGX,IAFIg/D,GAAIxxF,EAAKwyB,KAAUx1B,EAAKsW,SAASkf,IAAOx1B,EAAKV,KAAKk2B,GAE/Ck2K,MACLl2K,EAAO90B,KAAmBgrM,MACd1oM,GAAOA,EAAIwyB,KAAUxnB,EAAMwnB,KAAUx1B,EAAKsW,SAASkf,IAC7Dx1B,EAAKV,KAAKk2B,GC7BD,SAASx1B,GAAKgD,GAC3B,IAAK6H,GAAS7H,GAAM,MAAO,GAC3B,GAAIjD,KAAY,OAAOA,aAAWiD,GAClC,IAAIhD,EAAO,GACX,IAAK,IAAIhC,KAAOgF,EAASwxF,GAAIxxF,EAAKhF,IAAMgC,EAAKV,KAAKtB,GAGlD,OADIwC,MAAYgrM,GAAoBxoM,EAAKhD,GAClCA,ECNM,SAASskE,GAAQthE,GAC9B,GAAW,MAAPA,EAAa,OAAO,EAGxB,IAAIvB,EAASkqM,GAAU3oM,GACvB,MAAqB,iBAAVvB,IACT3B,GAAQkD,IAAQ4oM,GAAS5oM,IAAQ6nM,GAAY7nM,IAC1B,IAAXvB,EACsB,IAAzBkqM,GAAU3rM,GAAKgD,ICbT,SAAS6oM,GAAQ1tM,EAAQ2tM,GACtC,IAAIC,EAAQ/rM,GAAK8rM,GAAQrqM,EAASsqM,EAAMtqM,OACxC,GAAc,MAAVtD,EAAgB,OAAQsD,EAE5B,IADA,IAAIuB,EAAM7F,OAAOgB,GACR1B,EAAI,EAAGA,EAAIgF,EAAQhF,IAAK,CAC/B,IAAIuB,EAAM+tM,EAAMtvM,GAChB,GAAIqvM,EAAM9tM,KAASgF,EAAIhF,MAAUA,KAAOgF,GAAM,OAAO,EAEvD,OAAO,ECNM,SAAS+G,GAAE/G,GACxB,OAAIA,aAAe+G,GAAU/G,EACvBuI,gBAAgBxB,QACtBwB,KAAKygM,SAAWhpM,GADiB,IAAI+G,GAAE/G,GCH1B,SAASipM,GAAaC,GACnC,OAAO,IAAIC,WACTD,EAAa7hI,QAAU6hI,EACvBA,EAAaE,YAAc,EAC3Bf,GAAca,IDGlBniM,GAAElL,QAAUA,KAGZkL,GAAE1L,UAAUX,MAAQ,WAClB,OAAO6N,KAAKygM,UAKdjiM,GAAE1L,UAAUqwE,QAAU3kE,GAAE1L,UAAUu5C,OAAS7tC,GAAE1L,UAAUX,MAEvDqM,GAAE1L,UAAUmB,SAAW,WACrB,OAAO+gB,OAAOhV,KAAKygM,WERrB,SAASK,GAAGh7L,EAAGC,EAAGg7L,EAAQC,GAGxB,GAAIl7L,IAAMC,EAAG,OAAa,IAAND,GAAW,EAAIA,IAAM,EAAIC,EAE7C,GAAS,MAALD,GAAkB,MAALC,EAAW,OAAO,EAEnC,GAAID,IAAMA,EAAG,OAAOC,IAAMA,EAE1B,IAAIhC,SAAc+B,EAClB,OAAa,aAAT/B,GAAgC,WAATA,GAAiC,iBAALgC,IAKzD,SAASk7L,EAAOn7L,EAAGC,EAAGg7L,EAAQC,GAExBl7L,aAAatH,KAAGsH,EAAIA,EAAE26L,UACtB16L,aAAavH,KAAGuH,EAAIA,EAAE06L,UAE1B,IAAI32L,EAAY7V,KAAS5C,KAAKyU,GAC9B,GAAIgE,IAAc7V,KAAS5C,KAAK0U,GAAI,OAAO,EAE3C,GAAIi5L,IAAgC,mBAAbl1L,GAAkCq1L,GAAWr5L,GAAI,CACtE,IAAKq5L,GAAWp5L,GAAI,OAAO,EAC3B+D,EA5Bc,oBA8BhB,OAAQA,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKhE,IAAM,GAAKC,EACzB,IAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,EAC/C,IAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EACjB,IAAK,kBACH,OAAOjS,KAAYqvE,QAAQ9xE,KAAKyU,KAAOhS,KAAYqvE,QAAQ9xE,KAAK0U,GAClE,IAAK,uBACL,IArDc,oBAuDZ,OAAOk7L,EAAOP,GAAa56L,GAAI46L,GAAa36L,GAAIg7L,EAAQC,GAG5D,IAAIE,EAA0B,mBAAdp3L,EAChB,IAAKo3L,GAAaC,GAAar7L,GAAI,CAE/B,GADiBg6L,GAAch6L,KACZg6L,GAAc/5L,GAAI,OAAO,EAC5C,GAAID,EAAEg5D,SAAW/4D,EAAE+4D,QAAUh5D,EAAE+6L,aAAe96L,EAAE86L,WAAY,OAAO,EACnEK,GAAY,EAEhB,IAAKA,EAAW,CACd,GAAgB,iBAALp7L,GAA6B,iBAALC,EAAe,OAAO,EAIzD,IAAIq7L,EAAQt7L,EAAEpG,YAAa2hM,EAAQt7L,EAAErG,YACrC,GAAI0hM,IAAUC,KAAWxC,GAAWuC,IAAUA,aAAiBA,GACtCvC,GAAWwC,IAAUA,aAAiBA,IACvC,gBAAiBv7L,GAAK,gBAAiBC,EAC7D,OAAO,EASXi7L,EAASA,GAAU,GACnB,IAAI9qM,GAFJ6qM,EAASA,GAAU,IAEC7qM,OACpB,KAAOA,KAGL,GAAI6qM,EAAO7qM,KAAY4P,EAAG,OAAOk7L,EAAO9qM,KAAY6P,EAQtD,GAJAg7L,EAAOhtM,KAAK+R,GACZk7L,EAAOjtM,KAAKgS,GAGRm7L,EAAW,CAGb,IADAhrM,EAAS4P,EAAE5P,UACI6P,EAAE7P,OAAQ,OAAO,EAEhC,KAAOA,KACL,IAAK4qM,GAAGh7L,EAAE5P,GAAS6P,EAAE7P,GAAS6qM,EAAQC,GAAS,OAAO,MAEnD,CAEL,IAAqBvuM,EAAjB+tM,EAAQ/rM,GAAKqR,GAGjB,GAFA5P,EAASsqM,EAAMtqM,OAEXzB,GAAKsR,GAAG7P,SAAWA,EAAQ,OAAO,EACtC,KAAOA,KAGL,GADAzD,EAAM+tM,EAAMtqM,IACN+yF,GAAIljF,EAAGtT,KAAQquM,GAAGh7L,EAAErT,GAAMsT,EAAEtT,GAAMsuM,EAAQC,GAAU,OAAO,EAMrE,OAFAD,EAAOjwK,MACPkwK,EAAOlwK,OACA,EAzGAmwK,CAAOn7L,EAAGC,EAAGg7L,EAAQC,GA6Gf,SAASM,GAAQx7L,EAAGC,GACjC,OAAO+6L,GAAGh7L,EAAGC,GCnIA,SAASw7L,GAAQ9pM,GAC9B,IAAK6H,GAAS7H,GAAM,MAAO,GAC3B,IAAIhD,EAAO,GACX,IAAK,IAAIhC,KAAOgF,EAAKhD,EAAKV,KAAKtB,GAG/B,OADIwC,MAAYgrM,GAAoBxoM,EAAKhD,GAClCA,ECHF,SAAS+sM,GAAgB/jD,GAC9B,IAAIvnJ,EAASkqM,GAAU3iD,GACvB,OAAO,SAAShmJ,GACd,GAAW,MAAPA,EAAa,OAAO,EAExB,IAAIhD,EAAO8sM,GAAQ9pM,GACnB,GAAI2oM,GAAU3rM,GAAO,OAAO,EAC5B,IAAK,IAAIvD,EAAI,EAAGA,EAAIgF,EAAQhF,IAC1B,IAAK2tM,GAAWpnM,EAAIgmJ,EAAQvsJ,KAAM,OAAO,EAK3C,OAAOusJ,IAAYgkD,KAAmB5C,GAAWpnM,EAAIiqM,MAMzD,IAAIA,GAAc,UAEdC,GAAa,CAAC,QAAS,UACvBC,GAAU,CAAC,MAFD,MAEiB,OAIpBC,GAAaF,GAAW1jM,OAAOyjM,GAAaE,IACnDH,GAAiBE,GAAW1jM,OAAO2jM,IACnCE,GAAa,CAAC,OAAO7jM,OAAO0jM,GAAYD,GAR9B,OCxBCxC,MAASsC,GAAgBK,IAAcjD,GAAU,OCAjDM,MAASsC,GAAgBC,IAAkB7C,GAAU,WCArDM,MAASsC,GAAgBM,IAAclD,GAAU,OCFjDA,MAAU,WCCV,SAAS5jK,GAAOvjC,GAI7B,IAHA,IAAI+oM,EAAQ/rM,GAAKgD,GACbvB,EAASsqM,EAAMtqM,OACf8kC,EAASpnC,MAAMsC,GACVhF,EAAI,EAAGA,EAAIgF,EAAQhF,IAC1B8pC,EAAO9pC,GAAKuG,EAAI+oM,EAAMtvM,IAExB,OAAO8pC,ECNM,SAAS8wC,GAAMr0E,GAI5B,IAHA,IAAI+oM,EAAQ/rM,GAAKgD,GACbvB,EAASsqM,EAAMtqM,OACf41E,EAAQl4E,MAAMsC,GACThF,EAAI,EAAGA,EAAIgF,EAAQhF,IAC1B46E,EAAM56E,GAAK,CAACsvM,EAAMtvM,GAAIuG,EAAI+oM,EAAMtvM,KAElC,OAAO46E,ECRM,SAAS1xC,GAAO3iC,GAG7B,IAFA,IAAI8jC,EAAS,GACTilK,EAAQ/rM,GAAKgD,GACRvG,EAAI,EAAGgF,EAASsqM,EAAMtqM,OAAQhF,EAAIgF,EAAQhF,IACjDqqC,EAAO9jC,EAAI+oM,EAAMtvM,KAAOsvM,EAAMtvM,GAEhC,OAAOqqC,ECNM,SAASgiH,GAAU9lJ,GAChC,IAAIu+K,EAAQ,GACZ,IAAK,IAAIvjL,KAAOgF,EACVonM,GAAWpnM,EAAIhF,KAAOujL,EAAMjiL,KAAKtB,GAEvC,OAAOujL,EAAMh+I,OCPA,SAAS+pK,GAAeC,EAAUC,GAC/C,OAAO,SAASxqM,GACd,IAAIvB,EAASD,UAAUC,OAEvB,GADI+rM,IAAUxqM,EAAM7F,OAAO6F,IACvBvB,EAAS,GAAY,MAAPuB,EAAa,OAAOA,EACtC,IAAK,IAAIiM,EAAQ,EAAGA,EAAQxN,EAAQwN,IAIlC,IAHA,IAAIvN,EAASF,UAAUyN,GACnBjP,EAAOutM,EAAS7rM,GAChBhF,EAAIsD,EAAKyB,OACJhF,EAAI,EAAGA,EAAIC,EAAGD,IAAK,CAC1B,IAAIuB,EAAMgC,EAAKvD,GACV+wM,QAAyB,IAAbxqM,EAAIhF,KAAiBgF,EAAIhF,GAAO0D,EAAO1D,IAG5D,OAAOgF,GCXIsqM,UAAeR,ICEfQ,MAAettM,ICFfstM,MAAeR,IAAS,GCKxB,SAASW,GAAWpvM,GACjC,IAAKwM,GAASxM,GAAY,MAAO,GACjC,GAAI4B,KAAc,OAAOA,aAAa5B,GACtC,IAAIqvM,EAPG,aAQPA,EAAKrvM,UAAYA,EACjB,IAAIyoC,EAAS,IAAI4mK,EAEjB,OADAA,EAAKrvM,UAAY,KACVyoC,ECVM,SAAS/oC,GAAOM,EAAW8qB,GACxC,IAAI2d,EAAS2mK,GAAWpvM,GAExB,OADI8qB,GAAOwkL,GAAU7mK,EAAQ3d,GACtB2d,ECJM,SAAS19B,GAAMpG,GAC5B,OAAK6H,GAAS7H,GACPlD,GAAQkD,GAAOA,EAAIzD,QAAUqX,GAAO,GAAI5T,GADpBA,ECHd,SAAS4qM,GAAI5qM,EAAK6qM,GAE/B,OADAA,EAAY7qM,GACLA,ECAM,SAAS8qM,GAAO79K,GAC7B,OAAOnwB,GAAQmwB,GAAQA,EAAO,CAACA,GCDlB,SAAS69K,GAAO79K,GAC7B,OAAOlmB,GAAE+jM,OAAO79K,GCLH,SAAS89K,GAAQ/qM,EAAKitB,GAEnC,IADA,IAAIxuB,EAASwuB,EAAKxuB,OACThF,EAAI,EAAGA,EAAIgF,EAAQhF,IAAK,CAC/B,GAAW,MAAPuG,EAAa,OACjBA,EAAMA,EAAIitB,EAAKxzB,IAEjB,OAAOgF,EAASuB,OAAM,ECCT,SAAS1F,GAAIa,EAAQ8xB,EAAM/nB,GACxC,IAAIxK,EAAQqwM,GAAQ5vM,EAAQ2vM,GAAO79K,IACnC,OAAOg6K,GAAYvsM,GAASwK,EAAexK,ECJ9B,SAAS82F,GAAIxxF,EAAKitB,GAG/B,IADA,IAAIxuB,GADJwuB,EAAO69K,GAAO79K,IACIxuB,OACThF,EAAI,EAAGA,EAAIgF,EAAQhF,IAAK,CAC/B,IAAIuB,EAAMiyB,EAAKxzB,GACf,IAAKuxM,GAAKhrM,EAAKhF,GAAM,OAAO,EAC5BgF,EAAMA,EAAIhF,GAEZ,QAASyD,ECbI,SAASwsM,GAASvwM,GAC/B,OAAOA,ECGM,SAASwwM,GAAQpC,GAE9B,OADAA,EAAQ6B,GAAU,GAAI7B,GACf,SAAS9oM,GACd,OAAO6oM,GAAQ7oM,EAAK8oM,ICHT,SAAS1tM,GAAS6xB,GAE/B,OADAA,EAAO69K,GAAO79K,GACP,SAASjtB,GACd,OAAO+qM,GAAQ/qM,EAAKitB,ICLT,SAASk+K,GAAW1wK,EAAMuuC,EAASoiI,GAChD,QAAgB,IAAZpiI,EAAoB,OAAOvuC,EAC/B,OAAoB,MAAZ2wK,EAAmB,EAAIA,GAC7B,KAAK,EAAG,OAAO,SAAS1wM,GACtB,OAAO+/B,EAAK7gC,KAAKovE,EAAStuE,IAG5B,KAAK,EAAG,OAAO,SAASA,EAAOuR,EAAOi8L,GACpC,OAAOztK,EAAK7gC,KAAKovE,EAAStuE,EAAOuR,EAAOi8L,IAE1C,KAAK,EAAG,OAAO,SAASmD,EAAa3wM,EAAOuR,EAAOi8L,GACjD,OAAOztK,EAAK7gC,KAAKovE,EAASqiI,EAAa3wM,EAAOuR,EAAOi8L,IAGzD,OAAO,WACL,OAAOztK,EAAKp8B,MAAM2qE,EAASxqE,YCPhB,SAAS8sM,GAAa5wM,EAAOsuE,EAASoiI,GACnD,OAAa,MAAT1wM,EAAsBuwM,GACtB7D,GAAW1sM,GAAeywM,GAAWzwM,EAAOsuE,EAASoiI,GACrDvjM,GAASnN,KAAWoC,GAAQpC,GAAewwM,GAAQxwM,GAChDU,GAASV,GCTH,SAAS6wM,GAAS7wM,EAAOsuE,GACtC,OAAOsiI,GAAa5wM,EAAOsuE,EAAS1oC,KCDvB,SAASyqD,GAAGrwF,EAAOsuE,EAASoiI,GACzC,OAAIrkM,GAAEwkM,WAAaA,GAAiBxkM,GAAEwkM,SAAS7wM,EAAOsuE,GAC/CsiI,GAAa5wM,EAAOsuE,EAASoiI,GCHvB,SAASI,GAAUxrM,EAAKurM,EAAUviI,GAC/CuiI,EAAWxgH,GAAGwgH,EAAUviI,GAIxB,IAHA,IAAI+/H,EAAQ/rM,GAAKgD,GACbvB,EAASsqM,EAAMtqM,OACfsoD,EAAU,GACL96C,EAAQ,EAAGA,EAAQxN,EAAQwN,IAAS,CAC3C,IAAIw/L,EAAa1C,EAAM98L,GACvB86C,EAAQ0kJ,GAAcF,EAASvrM,EAAIyrM,GAAaA,EAAYzrM,GAE9D,OAAO+mD,ECbM,SAASu7B,MCGT,SAASopH,GAAW1rM,GACjC,OAAW,MAAPA,EAAoBsiF,GACjB,SAASr1D,GACd,OAAO3yB,GAAI0F,EAAKitB,ICJL,SAAS+nB,GAAM95C,EAAGqwM,EAAUviI,GACzC,IAAI2iI,EAAQxvM,MAAMyB,KAAKyf,IAAI,EAAGniB,IAC9BqwM,EAAWJ,GAAWI,EAAUviI,EAAS,GACzC,IAAK,IAAIvvE,EAAI,EAAGA,EAAIyB,EAAGzB,IAAKkyM,EAAMlyM,GAAK8xM,EAAS9xM,GAChD,OAAOkyM,ECNM,SAASnhM,GAAO8S,EAAKD,GAKlC,OAJW,MAAPA,IACFA,EAAMC,EACNA,EAAM,GAEDA,EAAM1f,KAAK29B,MAAM39B,KAAK4M,UAAY6S,EAAMC,EAAM,IhBEvDvW,GAAE+jM,OAASA,GUCX/jM,GAAEwkM,SAAWA,GORElsL,YAAKm8E,KAAO,WACzB,OAAO,IAAIn8E,MAAOusL,WCEL,SAASC,GAAcplM,GACpC,IAAIqlM,EAAU,SAASn0L,GACrB,OAAOlR,EAAIkR,IAGTjZ,EAAS,MAAQ1B,GAAKyJ,GAAKkE,KAAK,KAAO,IACvCohM,EAAar5L,OAAOhU,GACpBstM,EAAgBt5L,OAAOhU,EAAQ,KACnC,OAAO,SAASqc,GAEd,OADAA,EAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BgxL,EAAWpiM,KAAKoR,GAAUA,EAAOjJ,QAAQk6L,EAAeF,GAAW/wL,GCb/D,QACb,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UCHQ8wL,MAAcI,ICAdJ,MCAAlpK,GAAOspK,KCAPllM,MAAEmlM,iBAAmB,CAClCC,SAAU,kBACVC,YAAa,mBACbpoH,OAAQ,oBCANqoH,GAAU,OAIVC,GAAU,CACZ,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAGRC,GAAe,4BAEnB,SAASC,GAAW70L,GAClB,MAAO,KAAO20L,GAAQ30L,GAQxB,IAAI80L,GAAiB,mBAMN,SAASh6I,GAAS/+C,EAAM+oH,EAAUmzC,IAC1CnzC,GAAYmzC,IAAanzC,EAAWmzC,GACzCnzC,EAAW+tE,GAAS,GAAI/tE,EAAU11H,GAAEmlM,kBAGpC,IAAIhB,EAAUx4L,OAAO,EAClB+pH,EAASz4C,QAAUqoH,IAAS3tM,QAC5B+9H,EAAS2vE,aAAeC,IAAS3tM,QACjC+9H,EAAS0vE,UAAYE,IAAS3tM,QAC/BiM,KAAK,KAAO,KAAM,KAGhBsB,EAAQ,EACRvN,EAAS,SACbgV,EAAK5B,QAAQo5L,GAAS,SAASvzL,EAAOqsE,EAAQooH,EAAaD,EAAUjtL,GAanE,OAZAxgB,GAAUgV,EAAKnX,MAAM0P,EAAOiT,GAAQpN,QAAQy6L,GAAcC,IAC1DvgM,EAAQiT,EAASvH,EAAMlZ,OAEnBulF,EACFtlF,GAAU,cAAgBslF,EAAS,iCAC1BooH,EACT1tM,GAAU,cAAgB0tM,EAAc,uBAC/BD,IACTztM,GAAU,OAASytM,EAAW,YAIzBx0L,KAETjZ,GAAU,OAEV,IAgBI2R,EAhBAq8L,EAAWjwE,EAASkwE,SACxB,GAAID,GAEF,IAAKD,GAAe9iM,KAAK+iM,GAAW,MAAM,IAAIvoM,MAC5C,sCAAwCuoM,QAI1ChuM,EAAS,mBAAqBA,EAAS,MACvCguM,EAAW,MAGbhuM,EAAS,4FAEPA,EAAS,gBAGX,IACE2R,EAAS,IAAIpU,SAASywM,EAAU,IAAKhuM,GACrC,MAAO8J,IAEP,MADAA,GAAE9J,OAASA,EACL8J,GAGR,IAAIiqD,EAAW,SAASt8C,GACtB,OAAO9F,EAAOzW,KAAK2O,KAAM4N,EAAMpP,KAMjC,OAFA0rD,EAAS/zD,OAAS,YAAcguM,EAAW,OAAShuM,EAAS,IAEtD+zD,EC7FM,SAAS3uB,GAAO9jC,EAAKitB,EAAM2lF,GAExC,IAAIn0G,GADJwuB,EAAO69K,GAAO79K,IACIxuB,OAClB,IAAKA,EACH,OAAO2oM,GAAWx0F,GAAYA,EAASh5G,KAAKoG,GAAO4yG,EAErD,IAAK,IAAIn5G,EAAI,EAAGA,EAAIgF,EAAQhF,IAAK,CAC/B,IAAI+4B,EAAc,MAAPxyB,OAAc,EAASA,EAAIitB,EAAKxzB,SAC9B,IAAT+4B,IACFA,EAAOogF,EACPn5G,EAAIgF,GAENuB,EAAMonM,GAAW50K,GAAQA,EAAK54B,KAAKoG,GAAOwyB,EAE5C,OAAOxyB,EClBT,IAAI4sM,GAAY,EACD,SAASx7L,GAASq1I,GAC/B,IAAI/lJ,IAAOksM,GAAY,GACvB,OAAOnmD,EAASA,EAAS/lJ,EAAKA,ECFjB,SAASkO,GAAM5O,GAC5B,IAAIsmB,EAAWvf,GAAE/G,GAEjB,OADAsmB,EAASumL,QAAS,EACXvmL,ECAM,SAASwmL,GAAaC,EAAYC,EAAWhkI,EAASikI,EAAgB1jM,GACnF,KAAM0jM,aAA0BD,GAAY,OAAOD,EAAW1uM,MAAM2qE,EAASz/D,GAC7E,IAAIxN,EAAO0uM,GAAWsC,EAAW1xM,WAC7ByoC,EAASipK,EAAW1uM,MAAMtC,EAAMwN,GACpC,OAAI1B,GAASi8B,GAAgBA,EACtB/nC,ECHT,IAAImxM,GAAUnG,IAAc,SAAStsK,EAAM0yK,GACzC,IAAIxrL,EAAcurL,GAAQvrL,YAU1B,OATY,SAARyrL,IAGF,IAFA,IAAI3pL,EAAW,EAAGhlB,EAAS0uM,EAAU1uM,OACjC8K,EAAOpN,MAAMsC,GACRhF,EAAI,EAAGA,EAAIgF,EAAQhF,IAC1B8P,EAAK9P,GAAK0zM,EAAU1zM,KAAOkoB,EAAcnjB,UAAUilB,KAAc0pL,EAAU1zM,GAE7E,KAAOgqB,EAAWjlB,UAAUC,QAAQ8K,EAAKjN,KAAKkC,UAAUilB,MACxD,OAAOqpL,GAAaryK,EAAM2yK,EAAO7kM,KAAMA,KAAMgB,OAKjD2jM,GAAQvrL,YAAc5a,GACPmmM,UCjBAnG,OAAc,SAAStsK,EAAMuuC,EAASz/D,GACnD,IAAK69L,GAAW3sK,GAAO,MAAM,IAAI5c,UAAU,qCAC3C,IAAIuvL,EAAQrG,IAAc,SAASsG,GACjC,OAAOP,GAAaryK,EAAM2yK,EAAOpkI,EAASzgE,KAAMgB,EAAK/C,OAAO6mM,OAE9D,OAAOD,KCJMpF,MAAwBW,ICDxB,SAAS2E,GAAQ1uL,EAAO2uL,EAAOC,EAAQ92J,GAEpD,GADAA,EAASA,GAAU,GACd62J,GAAmB,IAAVA,GAEP,GAAIA,GAAS,EAClB,OAAO72J,EAAOlwC,OAAOoY,QAFrB2uL,EAAQjtK,IAKV,IADA,IAAIvD,EAAM2Z,EAAOj4C,OACRhF,EAAI,EAAGgF,EAASkqM,GAAU/pL,GAAQnlB,EAAIgF,EAAQhF,IAAK,CAC1D,IAAIiB,EAAQkkB,EAAMnlB,GAClB,GAAIg0M,GAAY/yM,KAAWoC,GAAQpC,IAAUmtM,GAAYntM,IAEvD,GAAI6yM,EAAQ,EACVD,GAAQ5yM,EAAO6yM,EAAQ,EAAGC,EAAQ92J,GAClC3Z,EAAM2Z,EAAOj4C,YAGb,IADA,IAAI2Y,EAAI,EAAGhP,EAAM1N,EAAM+D,OAChB2Y,EAAIhP,GAAKsuC,EAAO3Z,KAASriC,EAAM0c,UAE9Bo2L,IACV92J,EAAO3Z,KAASriC,GAGpB,OAAOg8C,ECtBMqwJ,WAAc,SAAS/mM,EAAKhD,GAEzC,IAAIiP,GADJjP,EAAOswM,GAAQtwM,GAAM,GAAO,IACXyB,OACjB,GAAIwN,EAAQ,EAAG,MAAM,IAAI9H,MAAM,yCAC/B,KAAO8H,KAAS,CACd,IAAIjR,EAAMgC,EAAKiP,GACfjM,EAAIhF,GAAOC,GAAK+E,EAAIhF,GAAMgF,GAE5B,OAAOA,KCZM,SAAS0tM,GAAQjzK,EAAMkzK,GACpC,IAAID,EAAU,SAAVA,EAAmB1yM,GACrB,IAAI0gI,EAAQgyE,EAAQhyE,MAChBkyE,EAAU,IAAMD,EAASA,EAAOtvM,MAAMkK,KAAM/J,WAAaxD,GAE7D,OADKw2F,GAAIkqC,EAAOkyE,KAAUlyE,EAAMkyE,GAAWnzK,EAAKp8B,MAAMkK,KAAM/J,YACrDk9H,EAAMkyE,IAGf,OADAF,EAAQhyE,MAAQ,GACTgyE,ECPM3G,WAAc,SAAStsK,EAAMquC,EAAMv/D,GAChD,OAAO0Q,YAAW,WAChB,OAAOwgB,EAAKp8B,MAAM,KAAMkL,KACvBu/D,MCDUokI,MAAQryI,GAAO9zD,GAAG,GCClB,SAASgiJ,GAAStuH,EAAMquC,EAAM3iE,GAC3C,IAAIy0D,EAASoO,EAASz/D,EAAMu6B,EACxBtkB,EAAW,EACVrZ,IAASA,EAAU,IAExB,IAAI8iE,EAAQ,WACVzpD,GAA+B,IAApBrZ,EAAQgjJ,QAAoB,EAAI3tD,KAC3C5gC,EAAU,KACV92B,EAASrJ,EAAKp8B,MAAM2qE,EAASz/D,GACxBqxD,IAASoO,EAAUz/D,EAAO,OAG7BskM,EAAY,WACd,IAAIC,EAAOtyG,KACNh8E,IAAgC,IAApBrZ,EAAQgjJ,UAAmB3pI,EAAWsuL,GACvD,IAAIC,EAAYjlI,GAAQglI,EAAOtuL,GAc/B,OAbAwpD,EAAUzgE,KACVgB,EAAO/K,UACHuvM,GAAa,GAAKA,EAAYjlI,GAC5BlO,IACFl/B,aAAak/B,GACbA,EAAU,MAEZp7C,EAAWsuL,EACXhqK,EAASrJ,EAAKp8B,MAAM2qE,EAASz/D,GACxBqxD,IAASoO,EAAUz/D,EAAO,OACrBqxD,IAAgC,IAArBz0D,EAAQijJ,WAC7BxuF,EAAU3gD,WAAWgvD,EAAO8kI,IAEvBjqK,GAST,OANA+pK,EAAUnkD,OAAS,WACjBhuH,aAAak/B,GACbp7C,EAAW,EACXo7C,EAAUoO,EAAUz/D,EAAO,MAGtBskM,ECtCM,SAASryK,GAASf,EAAMquC,EAAMC,GAC3C,IAAInO,EAASp7C,EAAUjW,EAAMu6B,EAAQklC,EAEjCC,EAAQ,SAARA,IACF,IAAI+kI,EAASxyG,KAAQh8E,EACjBspD,EAAOklI,EACTpzI,EAAU3gD,WAAWgvD,EAAOH,EAAOklI,IAEnCpzI,EAAU,KACLmO,IAAWjlC,EAASrJ,EAAKp8B,MAAM2qE,EAASz/D,IAExCqxD,IAASrxD,EAAOy/D,EAAU,QAI/BilI,EAAYlH,IAAc,SAASmH,GAQrC,OAPAllI,EAAUzgE,KACVgB,EAAO2kM,EACP1uL,EAAWg8E,KACN5gC,IACHA,EAAU3gD,WAAWgvD,EAAOH,GACxBC,IAAWjlC,EAASrJ,EAAKp8B,MAAM2qE,EAASz/D,KAEvCu6B,KAQT,OALAmqK,EAAUvkD,OAAS,WACjBhuH,aAAak/B,GACbA,EAAUrxD,EAAOy/D,EAAU,MAGtBilI,ECjCM,SAASnuF,GAAKrlF,EAAMsgC,GACjC,OAAOmyI,GAAQnyI,EAAStgC,GCLX,SAAS0zK,GAAO5gK,GAC7B,OAAO,WACL,OAAQA,EAAUlvC,MAAMkK,KAAM/J,YCDnB,SAAS0P,KACtB,IAAI3E,EAAO/K,UACPue,EAAQxT,EAAK9K,OAAS,EAC1B,OAAO,WAGL,IAFA,IAAIhF,EAAIsjB,EACJ+mB,EAASv6B,EAAKwT,GAAO1e,MAAMkK,KAAM/J,WAC9B/E,KAAKqqC,EAASv6B,EAAK9P,GAAGG,KAAK2O,KAAMu7B,GACxC,OAAOA,GCRI,SAASxrB,GAAM08B,EAAOva,GACnC,OAAO,WACL,KAAMua,EAAQ,EACZ,OAAOva,EAAKp8B,MAAMkK,KAAM/J,YCFf,SAASwV,GAAOghC,EAAOva,GACpC,IAAI2rD,EACJ,OAAO,WAKL,QAJMpxC,EAAQ,IACZoxC,EAAO3rD,EAAKp8B,MAAMkK,KAAM/J,YAEtBw2C,GAAS,IAAGva,EAAO,MAChB2rD,GCJI8mH,UAAQl5L,GAAQ,GCDhB,SAASo6L,GAAQpuM,EAAKutC,EAAWy7B,GAC9Cz7B,EAAYw9C,GAAGx9C,EAAWy7B,GAE1B,IADA,IAAuBhuE,EAAnB+tM,EAAQ/rM,GAAKgD,GACRvG,EAAI,EAAGgF,EAASsqM,EAAMtqM,OAAQhF,EAAIgF,EAAQhF,IAEjD,GAAI8zC,EAAUvtC,EADdhF,EAAM+tM,EAAMtvM,IACYuB,EAAKgF,GAAM,OAAOhF,ECL/B,SAASqzM,GAA2B3pD,GACjD,OAAO,SAASl9I,EAAO+lC,EAAWy7B,GAChCz7B,EAAYw9C,GAAGx9C,EAAWy7B,GAG1B,IAFA,IAAIvqE,EAASkqM,GAAUnhM,GACnByE,EAAQy4I,EAAM,EAAI,EAAIjmJ,EAAS,EAC5BwN,GAAS,GAAKA,EAAQxN,EAAQwN,GAASy4I,EAC5C,GAAIn3G,EAAU/lC,EAAMyE,GAAQA,EAAOzE,GAAQ,OAAOyE,EAEpD,OAAQ,GCTGoiM,UAA2B,GCA3BA,OAA4B,GCE5B,SAASC,GAAY9mM,EAAOxH,EAAKurM,EAAUviI,GAIxD,IAFA,IAAItuE,GADJ6wM,EAAWxgH,GAAGwgH,EAAUviI,EAAS,IACZhpE,GACjBuuM,EAAM,EAAGC,EAAO7F,GAAUnhM,GACvB+mM,EAAMC,GAAM,CACjB,IAAIC,EAAM7wM,KAAK29B,OAAOgzK,EAAMC,GAAQ,GAChCjD,EAAS/jM,EAAMinM,IAAQ/zM,EAAO6zM,EAAME,EAAM,EAAQD,EAAOC,EAE/D,OAAOF,ECRM,SAASG,GAAkBhqD,EAAKiqD,EAAeL,GAC5D,OAAO,SAAS9mM,EAAO6f,EAAM0V,GAC3B,IAAItjC,EAAI,EAAGgF,EAASkqM,GAAUnhM,GAC9B,GAAkB,iBAAPu1B,EACL2nH,EAAM,EACRjrJ,EAAIsjC,GAAO,EAAIA,EAAMn/B,KAAKyf,IAAI0f,EAAMt+B,EAAQhF,GAE5CgF,EAASs+B,GAAO,EAAIn/B,KAAK0f,IAAIyf,EAAM,EAAGt+B,GAAUs+B,EAAMt+B,EAAS,OAE5D,GAAI6vM,GAAevxK,GAAOt+B,EAE/B,OAAO+I,EADPu1B,EAAMuxK,EAAY9mM,EAAO6f,MACHA,EAAO0V,GAAO,EAEtC,GAAI1V,IAASA,EAEX,OADA0V,EAAM4xK,EAAcpyM,KAAM3C,KAAK4N,EAAO/N,EAAGgF,GAASpB,MACpC,EAAI0/B,EAAMtjC,GAAK,EAE/B,IAAKsjC,EAAM2nH,EAAM,EAAIjrJ,EAAIgF,EAAS,EAAGs+B,GAAO,GAAKA,EAAMt+B,EAAQs+B,GAAO2nH,EACpE,GAAIl9I,EAAMu1B,KAAS1V,EAAM,OAAO0V,EAElC,OAAQ,GCjBG2xK,UAAkB,EAAGphK,GAAWghK,ICHhCI,OAAmB,EAAGE,ICAtB,SAAS7hL,GAAK/sB,EAAKutC,EAAWy7B,GAC3C,IACIhuE,GADYyyM,GAAYztM,GAAOstC,GAAY8gK,IAC3BpuM,EAAKutC,EAAWy7B,GACpC,QAAY,IAARhuE,IAA2B,IAATA,EAAY,OAAOgF,EAAIhF,GCHhC,SAAS6zM,GAAU7uM,EAAK8oM,GACrC,OAAO/7K,GAAK/sB,EAAKkrM,GAAQpC,ICEZ,SAASjuK,GAAK76B,EAAKurM,EAAUviI,GAE1C,IAAIvvE,EAAGgF,EACP,GAFA8sM,EAAWJ,GAAWI,EAAUviI,GAE5BykI,GAAYztM,GACd,IAAKvG,EAAI,EAAGgF,EAASuB,EAAIvB,OAAQhF,EAAIgF,EAAQhF,IAC3C8xM,EAASvrM,EAAIvG,GAAIA,EAAGuG,OAEjB,CACL,IAAI+oM,EAAQ/rM,GAAKgD,GACjB,IAAKvG,EAAI,EAAGgF,EAASsqM,EAAMtqM,OAAQhF,EAAIgF,EAAQhF,IAC7C8xM,EAASvrM,EAAI+oM,EAAMtvM,IAAKsvM,EAAMtvM,GAAIuG,GAGtC,OAAOA,EChBM,SAASyG,GAAIzG,EAAKurM,EAAUviI,GACzCuiI,EAAWxgH,GAAGwgH,EAAUviI,GAIxB,IAHA,IAAI+/H,GAAS0E,GAAYztM,IAAQhD,GAAKgD,GAClCvB,GAAUsqM,GAAS/oM,GAAKvB,OACxBsoD,EAAU5qD,MAAMsC,GACXwN,EAAQ,EAAGA,EAAQxN,EAAQwN,IAAS,CAC3C,IAAIw/L,EAAa1C,EAAQA,EAAM98L,GAASA,EACxC86C,EAAQ96C,GAASs/L,EAASvrM,EAAIyrM,GAAaA,EAAYzrM,GAEzD,OAAO+mD,ECTM,SAAS+nJ,GAAapqD,GAGnC,IAAIv5I,EAAU,SAASnL,EAAKurM,EAAUnlH,EAAM2oH,GAC1C,IAAIhG,GAAS0E,GAAYztM,IAAQhD,GAAKgD,GAClCvB,GAAUsqM,GAAS/oM,GAAKvB,OACxBwN,EAAQy4I,EAAM,EAAI,EAAIjmJ,EAAS,EAKnC,IAJKswM,IACH3oH,EAAOpmF,EAAI+oM,EAAQA,EAAM98L,GAASA,GAClCA,GAASy4I,GAEJz4I,GAAS,GAAKA,EAAQxN,EAAQwN,GAASy4I,EAAK,CACjD,IAAI+mD,EAAa1C,EAAQA,EAAM98L,GAASA,EACxCm6E,EAAOmlH,EAASnlH,EAAMpmF,EAAIyrM,GAAaA,EAAYzrM,GAErD,OAAOomF,GAGT,OAAO,SAASpmF,EAAKurM,EAAUnlH,EAAMpd,GACnC,IAAI+lI,EAAUvwM,UAAUC,QAAU,EAClC,OAAO0M,EAAQnL,EAAKmrM,GAAWI,EAAUviI,EAAS,GAAIod,EAAM2oH,ICrBjDD,UAAa,GCDbA,OAAc,GCCd,SAAS5wM,GAAO8B,EAAKutC,EAAWy7B,GAC7C,IAAIjiB,EAAU,GAKd,OAJAxZ,EAAYw9C,GAAGx9C,EAAWy7B,GAC1BnuC,GAAK76B,GAAK,SAAStF,EAAOuR,EAAO0M,GAC3B40B,EAAU7yC,EAAOuR,EAAO0M,IAAOouC,EAAQzqD,KAAK5B,MAE3CqsD,ECLM,SAASl+C,GAAO7I,EAAKutC,EAAWy7B,GAC7C,OAAO9qE,GAAO8B,EAAKmuM,GAAOpjH,GAAGx9C,IAAay7B,GCD7B,SAASgmI,GAAMhvM,EAAKutC,EAAWy7B,GAC5Cz7B,EAAYw9C,GAAGx9C,EAAWy7B,GAG1B,IAFA,IAAI+/H,GAAS0E,GAAYztM,IAAQhD,GAAKgD,GAClCvB,GAAUsqM,GAAS/oM,GAAKvB,OACnBwN,EAAQ,EAAGA,EAAQxN,EAAQwN,IAAS,CAC3C,IAAIw/L,EAAa1C,EAAQA,EAAM98L,GAASA,EACxC,IAAKshC,EAAUvtC,EAAIyrM,GAAaA,EAAYzrM,GAAM,OAAO,EAE3D,OAAO,ECRM,SAASiuB,GAAKjuB,EAAKutC,EAAWy7B,GAC3Cz7B,EAAYw9C,GAAGx9C,EAAWy7B,GAG1B,IAFA,IAAI+/H,GAAS0E,GAAYztM,IAAQhD,GAAKgD,GAClCvB,GAAUsqM,GAAS/oM,GAAKvB,OACnBwN,EAAQ,EAAGA,EAAQxN,EAAQwN,IAAS,CAC3C,IAAIw/L,EAAa1C,EAAQA,EAAM98L,GAASA,EACxC,GAAIshC,EAAUvtC,EAAIyrM,GAAaA,EAAYzrM,GAAM,OAAO,EAE1D,OAAO,ECRM,SAASsT,GAAStT,EAAKqnB,EAAMu/H,EAAWqoD,GAGrD,OAFKxB,GAAYztM,KAAMA,EAAMujC,GAAOvjC,KACZ,iBAAb4mJ,GAAyBqoD,KAAOroD,EAAY,GAChD16I,GAAQlM,EAAKqnB,EAAMu/H,IAAc,ECD3BmgD,WAAc,SAAS/mM,EAAKitB,EAAM1jB,GAC/C,IAAI2lM,EAAaz0K,EAQjB,OAPI2sK,GAAWn6K,GACbwN,EAAOxN,GAEPA,EAAO69K,GAAO79K,GACdiiL,EAAcjiL,EAAK1wB,MAAM,GAAI,GAC7B0wB,EAAOA,EAAKA,EAAKxuB,OAAS,IAErBgI,GAAIzG,GAAK,SAASgpE,GACvB,IAAIu3C,EAAS9lF,EACb,IAAK8lF,EAAQ,CAIX,GAHI2uF,GAAeA,EAAYzwM,SAC7BuqE,EAAU+hI,GAAQ/hI,EAASkmI,IAEd,MAAXlmI,EAAiB,OACrBu3C,EAASv3C,EAAQ/7C,GAEnB,OAAiB,MAAVszF,EAAiBA,EAASA,EAAOliH,MAAM2qE,EAASz/D,SCrB5C,SAAS4lM,GAAMnvM,EAAKhF,GACjC,OAAOyL,GAAIzG,EAAK5E,GAASJ,ICAZ,SAASo0M,GAAMpvM,EAAK8oM,GACjC,OAAO5qM,GAAO8B,EAAKkrM,GAAQpC,ICAd,SAASzrL,GAAIrd,EAAKurM,EAAUviI,GACzC,IACItuE,EAAOg6E,EADP5wC,GAAUxD,IAAU+uK,GAAgB/uK,IAExC,GAAgB,MAAZirK,GAAuC,iBAAZA,GAAyC,iBAAVvrM,EAAI,IAAyB,MAAPA,EAElF,IAAK,IAAIvG,EAAI,EAAGgF,GADhBuB,EAAMytM,GAAYztM,GAAOA,EAAMujC,GAAOvjC,IACTvB,OAAQhF,EAAIgF,EAAQhF,IAElC,OADbiB,EAAQsF,EAAIvG,KACSiB,EAAQopC,IAC3BA,EAASppC,QAIb6wM,EAAWxgH,GAAGwgH,EAAUviI,GACxBnuC,GAAK76B,GAAK,SAASkS,EAAGjG,EAAO0M,KAC3B+7D,EAAW62H,EAASr5L,EAAGjG,EAAO0M,IACf02L,GAAgB36H,KAAcp0C,KAAYwD,KAAYxD,OACnEwD,EAAS5xB,EACTm9L,EAAe36H,MAIrB,OAAO5wC,ECrBM,SAASxmB,GAAItd,EAAKurM,EAAUviI,GACzC,IACItuE,EAAOg6E,EADP5wC,EAASxD,IAAU+uK,EAAe/uK,IAEtC,GAAgB,MAAZirK,GAAuC,iBAAZA,GAAyC,iBAAVvrM,EAAI,IAAyB,MAAPA,EAElF,IAAK,IAAIvG,EAAI,EAAGgF,GADhBuB,EAAMytM,GAAYztM,GAAOA,EAAMujC,GAAOvjC,IACTvB,OAAQhF,EAAIgF,EAAQhF,IAElC,OADbiB,EAAQsF,EAAIvG,KACSiB,EAAQopC,IAC3BA,EAASppC,QAIb6wM,EAAWxgH,GAAGwgH,EAAUviI,GACxBnuC,GAAK76B,GAAK,SAASkS,EAAGjG,EAAO0M,KAC3B+7D,EAAW62H,EAASr5L,EAAGjG,EAAO0M,IACf02L,GAAgB36H,IAAap0C,KAAYwD,IAAWxD,OACjEwD,EAAS5xB,EACTm9L,EAAe36H,MAIrB,OAAO5wC,EClBT,IAAIwrK,GAAc,mEACH,SAASz2L,GAAQ7Y,GAC9B,OAAKA,EACDlD,GAAQkD,GAAazD,KAAM3C,KAAKoG,GAChC4oM,GAAS5oM,GAEJA,EAAI2X,MAAM23L,IAEf7B,GAAYztM,GAAayG,GAAIzG,EAAKirM,IAC/B1nK,GAAOvjC,GAPG,GCDJ,SAASuvM,GAAOvvM,EAAK9E,EAAG+zM,GACrC,GAAS,MAAL/zM,GAAa+zM,EAEf,OADKxB,GAAYztM,KAAMA,EAAMujC,GAAOvjC,IAC7BA,EAAIwK,GAAOxK,EAAIvB,OAAS,IAEjC,IAAI8wM,EAAS12L,GAAQ7Y,GACjBvB,EAASkqM,GAAU4G,GACvBr0M,EAAI0C,KAAKyf,IAAIzf,KAAK0f,IAAIpiB,EAAGuD,GAAS,GAElC,IADA,IAAI6gB,EAAO7gB,EAAS,EACXwN,EAAQ,EAAGA,EAAQ/Q,EAAG+Q,IAAS,CACtC,IAAIujM,EAAOhlM,GAAOyB,EAAOqT,GACrBmwL,EAAOF,EAAOtjM,GAClBsjM,EAAOtjM,GAASsjM,EAAOC,GACvBD,EAAOC,GAAQC,EAEjB,OAAOF,EAAOhzM,MAAM,EAAGrB,GCtBV,SAASw0M,GAAQ1vM,GAC9B,OAAOuvM,GAAOvvM,EAAKsgC,KCCN,SAASqvK,GAAO3vM,EAAKurM,EAAUviI,GAC5C,IAAI/8D,EAAQ,EAEZ,OADAs/L,EAAWxgH,GAAGwgH,EAAUviI,GACjBmmI,GAAM1oM,GAAIzG,GAAK,SAAStF,EAAOM,EAAK2d,GACzC,MAAO,CACLje,MAAOA,EACPuR,MAAOA,IACP2jM,SAAUrE,EAAS7wM,EAAOM,EAAK2d,OAEhC4nB,MAAK,SAASxc,EAAMiY,GACrB,IAAI3tB,EAAI0V,EAAK6rL,SACTthM,EAAI0tB,EAAM4zK,SACd,GAAIvhM,IAAMC,EAAG,CACX,GAAID,EAAIC,QAAW,IAAND,EAAc,OAAO,EAClC,GAAIA,EAAIC,QAAW,IAANA,EAAc,OAAQ,EAErC,OAAOyV,EAAK9X,MAAQ+vB,EAAM/vB,SACxB,SClBS,SAAS6yB,GAAM+wK,EAAUC,GACtC,OAAO,SAAS9vM,EAAKurM,EAAUviI,GAC7B,IAAIllC,EAASgsK,EAAY,CAAC,GAAI,IAAM,GAMpC,OALAvE,EAAWxgH,GAAGwgH,EAAUviI,GACxBnuC,GAAK76B,GAAK,SAAStF,EAAOuR,GACxB,IAAIjR,EAAMuwM,EAAS7wM,EAAOuR,EAAOjM,GACjC6vM,EAAS/rK,EAAQppC,EAAOM,MAEnB8oC,GCPIhF,WAAM,SAASgF,EAAQppC,EAAOM,GACvCw2F,GAAI1tD,EAAQ9oC,GAAM8oC,EAAO9oC,GAAKsB,KAAK5B,GAAaopC,EAAO9oC,GAAO,CAACN,MCFtDokC,OAAM,SAASgF,EAAQppC,EAAOM,GAC3C8oC,EAAO9oC,GAAON,KCCDokC,OAAM,SAASgF,EAAQppC,EAAOM,GACvCw2F,GAAI1tD,EAAQ9oC,GAAM8oC,EAAO9oC,KAAa8oC,EAAO9oC,GAAO,KCH3C8jC,OAAM,SAASgF,EAAQppC,EAAOq1M,GAC3CjsK,EAAOisK,EAAO,EAAI,GAAGzzM,KAAK5B,MACzB,GCFY,SAAS64D,GAAKvzD,GAC3B,OAAW,MAAPA,EAAoB,EACjBytM,GAAYztM,GAAOA,EAAIvB,OAASzB,GAAKgD,GAAKvB,OCJpC,SAASuxM,GAASt1M,EAAOM,EAAKgF,GAC3C,OAAOhF,KAAOgF,ECKD+mM,WAAc,SAAS/mM,EAAKhD,GACzC,IAAI8mC,EAAS,GAAIynK,EAAWvuM,EAAK,GACjC,GAAW,MAAPgD,EAAa,OAAO8jC,EACpBsjK,GAAWmE,IACTvuM,EAAKyB,OAAS,IAAG8sM,EAAWJ,GAAWI,EAAUvuM,EAAK,KAC1DA,EAAO8sM,GAAQ9pM,KAEfurM,EAAWyE,GACXhzM,EAAOswM,GAAQtwM,GAAM,GAAO,GAC5BgD,EAAM7F,OAAO6F,IAEf,IAAK,IAAIvG,EAAI,EAAGgF,EAASzB,EAAKyB,OAAQhF,EAAIgF,EAAQhF,IAAK,CACrD,IAAIuB,EAAMgC,EAAKvD,GACXiB,EAAQsF,EAAIhF,GACZuwM,EAAS7wM,EAAOM,EAAKgF,KAAM8jC,EAAO9oC,GAAON,GAE/C,OAAOopC,KCfMijK,OAAc,SAAS/mM,EAAKhD,GACzC,IAAwBgsE,EAApBuiI,EAAWvuM,EAAK,GAUpB,OATIoqM,GAAWmE,IACbA,EAAW4C,GAAO5C,GACdvuM,EAAKyB,OAAS,IAAGuqE,EAAUhsE,EAAK,MAEpCA,EAAOyJ,GAAI6mM,GAAQtwM,GAAM,GAAO,GAAQugB,QACxCguL,EAAW,SAAS7wM,EAAOM,GACzB,OAAQsY,GAAStW,EAAMhC,KAGpBi1M,GAAKjwM,EAAKurM,EAAUviI,MCfd,SAAS+lI,GAAQvnM,EAAOtM,EAAG+zM,GACxC,OAAO1yM,KAAM3C,KAAK4N,EAAO,EAAG5J,KAAKyf,IAAI,EAAG7V,EAAM/I,QAAe,MAALvD,GAAa+zM,EAAQ,EAAI/zM,KCFpE,SAAS2jC,GAAMr3B,EAAOtM,EAAG+zM,GACtC,OAAa,MAATznM,GAAiBA,EAAM/I,OAAS,EAAe,MAALvD,GAAa+zM,OAAQ,EAAS,GACnE,MAAL/zM,GAAa+zM,EAAcznM,EAAM,GAC9BunM,GAAQvnM,EAAOA,EAAM/I,OAASvD,GCFxB,SAASwb,GAAKlP,EAAOtM,EAAG+zM,GACrC,OAAO1yM,KAAM3C,KAAK4N,EAAY,MAALtM,GAAa+zM,EAAQ,EAAI/zM,GCFrC,SAASokB,GAAK9X,EAAOtM,EAAG+zM,GACrC,OAAa,MAATznM,GAAiBA,EAAM/I,OAAS,EAAe,MAALvD,GAAa+zM,OAAQ,EAAS,GACnE,MAAL/zM,GAAa+zM,EAAcznM,EAAMA,EAAM/I,OAAS,GAC7CiY,GAAKlP,EAAO5J,KAAKyf,IAAI,EAAG7V,EAAM/I,OAASvD,ICJjC,SAAS00C,GAAQpoC,GAC9B,OAAOtJ,GAAOsJ,EAAOitC,SCAR,SAAS64J,GAAQ9lM,EAAO+lM,GACrC,OAAO2C,GAAS1oM,EAAO+lM,GAAO,GCEjBxG,WAAc,SAASv/L,EAAOkP,GAE3C,OADAA,EAAO42L,GAAQ52L,GAAM,GAAM,GACpBxY,GAAOsJ,GAAO,SAAS9M,GAC5B,OAAQ4Y,GAASoD,EAAMhc,SCNZqsM,OAAc,SAASv/L,EAAO2oM,GAC3C,OAAO3sC,GAAWh8J,EAAO2oM,MCKZ,SAASC,GAAK5oM,EAAO6oM,EAAU9E,EAAUviI,GACjDk+H,GAAUmJ,KACbrnI,EAAUuiI,EACVA,EAAW8E,EACXA,GAAW,GAEG,MAAZ9E,IAAkBA,EAAWxgH,GAAGwgH,EAAUviI,IAG9C,IAFA,IAAIllC,EAAS,GACTwsK,EAAO,GACF72M,EAAI,EAAGgF,EAASkqM,GAAUnhM,GAAQ/N,EAAIgF,EAAQhF,IAAK,CAC1D,IAAIiB,EAAQ8M,EAAM/N,GACdi7E,EAAW62H,EAAWA,EAAS7wM,EAAOjB,EAAG+N,GAAS9M,EAClD21M,IAAa9E,GACV9xM,GAAK62M,IAAS57H,GAAU5wC,EAAOxnC,KAAK5B,GACzC41M,EAAO57H,GACE62H,EACJj4L,GAASg9L,EAAM57H,KAClB47H,EAAKh0M,KAAKo4E,GACV5wC,EAAOxnC,KAAK5B,IAEJ4Y,GAASwwB,EAAQppC,IAC3BopC,EAAOxnC,KAAK5B,GAGhB,OAAOopC,EC5BMijK,WAAc,SAASwJ,GACpC,OAAOH,GAAK9C,GAAQiD,GAAQ,GAAM,OCFrB,SAASC,GAAahpM,GAGnC,IAFA,IAAIs8B,EAAS,GACT2sK,EAAajyM,UAAUC,OAClBhF,EAAI,EAAGgF,EAASkqM,GAAUnhM,GAAQ/N,EAAIgF,EAAQhF,IAAK,CAC1D,IAAI4tB,EAAO7f,EAAM/N,GACjB,IAAI6Z,GAASwwB,EAAQzc,GAArB,CACA,IAAIjQ,EACJ,IAAKA,EAAI,EAAGA,EAAIq5L,GACTn9L,GAAS9U,UAAU4Y,GAAIiQ,GADFjQ,KAGxBA,IAAMq5L,GAAY3sK,EAAOxnC,KAAK+qB,IAEpC,OAAOyc,ECXM,SAAS4sK,GAAMlpM,GAI5B,IAHA,IAAI/I,EAAS+I,GAAS6V,GAAI7V,EAAOmhM,IAAWlqM,QAAU,EAClDqlC,EAAS3nC,MAAMsC,GAEVwN,EAAQ,EAAGA,EAAQxN,EAAQwN,IAClC63B,EAAO73B,GAASkjM,GAAM3nM,EAAOyE,GAE/B,OAAO63B,ECRMijK,UAAc2J,ICAd,SAASv1M,GAAOwd,EAAM4qB,GAEnC,IADA,IAAIO,EAAS,GACJrqC,EAAI,EAAGgF,EAASkqM,GAAUhwL,GAAOlf,EAAIgF,EAAQhF,IAChD8pC,EACFO,EAAOnrB,EAAKlf,IAAM8pC,EAAO9pC,GAEzBqqC,EAAOnrB,EAAKlf,GAAG,IAAMkf,EAAKlf,GAAG,GAGjC,OAAOqqC,ECXM,SAAShnB,GAAMC,EAAO63D,EAAMh0B,GAC7B,MAARg0B,IACFA,EAAO73D,GAAS,EAChBA,EAAQ,GAEL6jC,IACHA,EAAOg0B,EAAO73D,GAAS,EAAI,GAM7B,IAHA,IAAIte,EAASb,KAAKyf,IAAIzf,KAAKsyE,MAAM0E,EAAO73D,GAAS6jC,GAAO,GACpD9jC,EAAQ3gB,MAAMsC,GAETs+B,EAAM,EAAGA,EAAMt+B,EAAQs+B,IAAOhgB,GAAS6jC,EAC9C9jC,EAAMigB,GAAOhgB,EAGf,OAAOD,ECfM,SAAS6zL,GAAMnpM,EAAO2R,GACnC,GAAa,MAATA,GAAiBA,EAAQ,EAAG,MAAO,GAGvC,IAFA,IAAI2qB,EAAS,GACTrqC,EAAI,EAAGgF,EAAS+I,EAAM/I,OACnBhF,EAAIgF,GACTqlC,EAAOxnC,KAAKC,KAAM3C,KAAK4N,EAAO/N,EAAGA,GAAK0f,IAExC,OAAO2qB,ECRM,SAAS8sK,GAAYtqL,EAAUtmB,GAC5C,OAAOsmB,EAASumL,OAAS9lM,GAAE/G,GAAK4O,QAAU5O,ECG7B,SAASkxB,GAAMlxB,GAS5B,OARA66B,GAAKirH,GAAU9lJ,IAAM,SAAShG,GAC5B,IAAIygC,EAAO1zB,GAAE/M,GAAQgG,EAAIhG,GACzB+M,GAAE1L,UAAUrB,GAAQ,WAClB,IAAIuP,EAAO,CAAChB,KAAKygM,UAEjB,OADA1sM,KAAK+B,MAAMkL,EAAM/K,WACVoyM,GAAYroM,KAAMkyB,EAAKp8B,MAAM0I,GAAGwC,QAGpCxC,GCVT8zB,GAAK,CAAC,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,YAAY,SAAS7gC,GAC9E,IAAIumH,EAASrkH,KAAWlC,GACxB+M,GAAE1L,UAAUrB,GAAQ,WAClB,IAAIgG,EAAMuI,KAAKygM,SAOf,OANW,MAAPhpM,IACFugH,EAAOliH,MAAM2B,EAAKxB,WACJ,UAATxE,GAA6B,WAATA,GAAqC,IAAfgG,EAAIvB,eAC1CuB,EAAI,IAGR4wM,GAAYroM,KAAMvI,OAK7B66B,GAAK,CAAC,SAAU,OAAQ,UAAU,SAAS7gC,GACzC,IAAIumH,EAASrkH,KAAWlC,GACxB+M,GAAE1L,UAAUrB,GAAQ,WAClB,IAAIgG,EAAMuI,KAAKygM,SAEf,OADW,MAAPhpM,IAAaA,EAAMugH,EAAOliH,MAAM2B,EAAKxB,YAClCoyM,GAAYroM,KAAMvI,OAId+G,UCRXA,GAAImqB,GAAM2/K,GAEd9pM,GAAEA,EAAIA,GAESA,ICbT+pM,GAAchnF,GAChB,CACI7lG,MAAO,MACP,YAAa,CACT,UAAW,CACPi5D,aAAc,EACdx4D,OAAQ,qBAEZ,gBAAiB,CACbw4D,aAAc,EACdx4D,OAAO,wBAMVqsL,GAAkB,SAAC5qL,GAC5B,IAAQzlB,EAAwBylB,EAAxBzlB,GAAIhG,EAAoByrB,EAApBzrB,MAAOioB,EAAawD,EAAbxD,SAEbquL,EAAmBx1K,GAAS7Y,EAAS,KAiB3C,OACI,kBAAC,WAAD,KACI,yBAAKtQ,UAAWy+L,IACf,kBAAC,GAAD,CACE5rM,aAAcxK,EACdkmD,KAAM,EACNokJ,YArBiB,SAAC1+L,GAEzB,OADA0qM,EAAiBtwM,EAAIusE,SAAS3mE,GAAO,GAC9BiX,QAAQjX,EAAM,IAoBd8+L,YAjBiB,SAAC9+L,GAEzB,OADA0qM,EAAiBtwM,EAAIusE,SAAS3mE,GAAO,GAC9BiX,QAAQjX,EAAM,IAgBdq2C,WAbgB,SAACr2C,GAExB,OADoCqc,EAASjiB,EAAtC,4BAAPA,EAAiDusE,SAAS3mE,GAAqB,UACxEiX,OAAOjX,IAYP8/L,yBAA0B,sBAC1BE,yBAA0B,2BCnCnC,GAAgBphD,KAItB,eAqBE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,KATN,EAAA+mI,aAA+B,GAC/B,EAAA+jD,YAAc,cACd,EAAAC,OAAS,cACT,EAAAC,iBAAmB,cAEnB,EAAAC,iBAAmB,EACnB,EAAAC,wBAAyB,EAkQzB,EAAAC,kBAAoB,SAAC52M,GACnB,IAAAgsM,EAAA,QAAAA,cACR,QAAc1+L,IAAVtN,EACF,OAAOgsM,EAAgBA,EAAchsM,GAASA,EAAM8B,YAYhD,EAAA+0M,uBAAyB,SAACzpL,GAChC,GAAK,EAAKmpL,YAAYxxL,QAAtB,CAIM,IAKF+xL,EALE,UACAC,GADE,EAAAp0L,IAAK,EAAAC,KAAK,EAAAsjC,KAEZ8wJ,EAAiC,EAAKT,YAAYxxL,QAAQmK,wBAE1D+nL,GADwB,EAAKxrL,MAAMo0I,SAAsCm3C,EAAmB1tL,OAA9C0tL,EAAmBztL,OAC7BwtL,EAI1C,GAAK,EAAKtrL,MAAMo0I,SAIT,CACL,IAAMtwI,EAA6B,EAAK2nL,aAAa9pL,EAAO,EAAK3B,MAAMo0I,UAEvEi3C,GADWE,EAAmBznL,OAASA,GACb0nL,MAPF,CACxB,IAAM5tL,EAA2B,EAAK6tL,aAAa9pL,EAAO,EAAK3B,MAAMo0I,UAErEi3C,GADW,GAAO,EAAKrrL,MAAM+wB,OAASw6J,EAAmB11K,MAAQjY,EAAQA,EAAQ2tL,EAAmB3tL,MAC1E4tL,EAO5B,OAAOH,IAGD,EAAAK,yBAA2B,SAAC/pL,GAC5B,cAAEgqL,EAAA,EAAAA,OAAQx0L,EAAA,EAAAA,IAAKsjC,EAAA,EAAAA,KACrB,GAAIkxJ,EAAQ,CACV,IACMC,EAAmBz0L,EAAOsjC,EADX,EAAK2wJ,uBAAuBzpL,GAI/CiqL,GAAqB,EAAKzkM,MAAM0kM,YAChCD,EAAoB,EAAKzkM,MAAM0kM,YAA0B,EAAK1kM,MAAM5S,MAAmBq3M,EAEvF,EAAKV,wBAAyB,EAE9B,EAAKA,wBAAyB,EAGf,cAAfvpL,EAAMxb,KACR,EAAK4gJ,aAAa5wJ,KAChBk+B,GAAG/xB,OAAQ,YAAa,EAAKwpM,yBAAyB,GACtDz3K,GAAG/xB,OAAQ,UAAW,EAAKypM,sBAAsB,IAE3B,eAAfpqL,EAAMxb,MACf,EAAK4gJ,aAAa5wJ,KAChBk+B,GAAG/xB,OAAQ,YAAa,EAAKwpM,yBAAyB,GACtDz3K,GAAG/xB,OAAQ,WAAY,EAAKypM,sBAAsB,IAGtD,EAAKD,wBAAwBnqL,GAAO,IAG9B,EAAAmqL,wBAA0B,SAACnqL,EAAgCqqL,GACjE,GAAK,EAAKlB,YAAYxxL,QAAtB,CAIM,IAIFivH,EACA0jE,EALE,UAAE/0L,EAAA,EAAAA,IAAKC,EAAA,EAAAA,IAAKsjC,EAAA,EAAAA,KACZ6wJ,GAAiBp0L,EAAOC,GAAQsjC,EAChC4wJ,EAAe,EAAKD,uBAAuBzpL,GAM7C0pL,EAAgB5zM,KAAK29B,MAAMk2K,GAC7BW,EAAgB1jE,EAAerxH,EACtBm0L,EAAgB,EACzBY,EAAgB1jE,EAAepxH,GAE/B80L,EAAgB90L,EAAOsjC,EAAQ4wJ,EAC/B9iE,EAAepxH,EAAOsjC,EAAQhjD,KAAK+3D,MAAM67I,IAG3C,EAAKjM,aAAa72D,EAAc0jE,GAE3BD,IACHrqL,EAAMC,iBACND,EAAM4D,qBAmEF,EAAAwmL,qBAAuB,SAACpqL,GAE9B,EAAKu7D,SAAS,CACZ+uH,mBAAepqM,EACfqqM,wBAAoBrqM,IAGlB,EAAKme,MAAMmsL,WACb,EAAKnsL,MAAMmsL,UAAUxqL,EAAO,EAAKxa,MAAM5S,OAGzC,EAAK63M,qBAGC,EAAAA,kBAAoB,WAC1B,EAAKrlD,aAAavuJ,SAAQ,SAAA0pJ,GAAW,OAAAA,OACrC,EAAK6E,aAAe,IAGd,EAAAx1G,WAAa,SAAC5vB,GACpB,IAAIptB,EAEFA,EADE,EAAK22M,uBACC,EAAKlrL,MAAM6rL,YAAc,EAAK1kM,MAAM0kM,WAEpC,EAAK7rL,MAAMzrB,OAAS,EAAK4S,MAAM5S,MAEnC,cAAE2iB,EAAA,EAAAA,IAAKC,EAAA,EAAAA,IAAKsjC,EAAA,EAAAA,KAEdiiB,EAA2B,EAG/B,OAAQ/6C,EAAMuD,OACZ,KAAKyyH,GAAkBH,GAAe,EAAKx3H,MAAM+wB,OACjD,KAAKymG,GACH96E,GAASjiB,EAET,EAAK4xJ,uBACL,EAAKC,mBAAmB3qL,GAExB,MACF,KAAKg2H,GAAkBH,GAAgB,EAAKx3H,MAAM+wB,OAClD,KAAKymG,GACH96E,EAAOjiB,EAEP,EAAK4xJ,uBACL,EAAKC,mBAAmB3qL,GAExB,MAEF,KAAK61H,GACHjjJ,EAAQ4iB,EAER,EAAKk1L,uBACL,EAAKC,mBAAmB3qL,GAExB,MAEF,KAAK61H,GACHjjJ,EAAQ2iB,EAER,EAAKm1L,uBACL,EAAKC,mBAAmB3qL,GAExB,MAEF,QACE,OAGJ,IAAM+gC,EAAmBjrD,KAAK0f,IAAID,EAAezf,KAAKyf,IAAIC,EAAe5iB,EAASmoE,IAClF,EAAK0iI,aAAa18I,EAAUA,GAE5B/gC,EAAMC,iBACND,EAAM4D,kBAGN,EAAK23D,SAAS,CACZ+uH,mBAAepqM,EACfqqM,wBAAoBrqM,KAIhB,EAAA0qM,cAAgB,SAAC5qL,GACvB,EAAKupL,uBAAyBvpL,EAAMvpB,SAAW,EAAK4yM,iBAAiB1xL,SAG/D,EAAA+yL,qBAAuB,WAC7B,EAAKnqC,OAAO3sI,aAAa,EAAK01K,kBAGxB,EAAAqB,mBAAqB,SAAC3qL,GAC5B,EAAKspL,gBAAkB,EAAK/oC,OAAOpuJ,YAAW,WACxC,EAAKkM,MAAMmsL,WACb,EAAKnsL,MAAMmsL,UAAUxqL,EAAO,EAAKxa,MAAM5S,SAvhBL,MA0BtC,EAAK2tK,OAAS,IAAI,GAAM,GACxBpiB,GAAuB,GAEe,EAAK9/H,MAIvCA,EAAM2rL,QAC8B,EAAK3rL,MAK7C,EAAKskI,IAAMjE,GAAM,UAEjB,IAAM9rJ,OACYsN,IAAhBme,EAAMzrB,MAAsByrB,EAAMzrB,WAA+BsN,IAAvBme,EAAMjhB,aAA6BihB,EAAMjhB,aAAeihB,EAAM7I,IAEpG00L,OACiBhqM,IAArBme,EAAM6rL,WACF7rL,EAAM6rL,gBACsBhqM,IAA5Bme,EAAMwsL,kBACNxsL,EAAMwsL,kBACNxsL,EAAM7I,I,OAEZ,EAAKhQ,MAAQ,CACX5S,MAAOA,EACPs3M,WAAYA,EACZI,mBAAepqM,EACfqqM,wBAAoBrqM,G,EAoe1B,OAzhBgC,OAyDvB,YAAA6sG,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,UACZ9/I,KAAKgqM,qBAGA,YAAAliM,OAAP,W,UACQ,aACJmjJ,EAAA,EAAAA,UACAnhJ,EAAA,EAAAA,UACAkP,EAAA,EAAAA,SACAqc,EAAA,EAAAA,MACAvgB,EAAA,EAAAA,IACAC,EAAA,EAAAA,IACAs1L,EAAA,EAAAA,UACAjzB,EAAA,EAAAA,YACAplB,EAAA,EAAAA,SACA93I,EAAA,EAAAA,OACAy0B,EAAA,EAAAA,MACA27J,EAAA,EAAAA,eACAf,EAAA,EAAAA,OAEIp3M,EAAQ6N,KAAK7N,MACb03M,EAAgB7pM,KAAK6pM,cACrBC,EAAqB9pM,KAAK8pM,mBAC1BS,EAA6BvqM,KAAKwqM,YAAYX,GAC9CY,EAAkCzqM,KAAKwqM,YAAYV,GACnDY,EAAcJ,EAAiB,EAAIv1L,EAEnC41L,EAAgB3qM,KAAKwqM,YAAYE,GACjCE,EAAqBrB,EACvBgB,EAAqBE,EACrBp1M,KAAKg+B,IAAIs3K,EAAgBJ,GACvBM,EAAkBx1M,KAAK0f,IAAI,IAAMw1L,EAAoB,IAAMI,GAC3DG,EAAqBvB,EAASkB,EAA0Bp1M,KAAK0f,IAAIw1L,EAAoBI,GAErFI,EAAe/4C,EAAW,SAAW,QACrCg5C,EAAsBhyL,EAAW,GAAK,CAAEs+C,YAAat3D,KAAKspM,0BAC1D2B,EAAuBjyL,EAAW,GAAK,CAAE89J,aAAc92K,KAAKspM,0BAC5D4B,EAAoBlyL,EAAW,GAAK,CAAEpB,UAAW5X,KAAKmvC,YACtDg8J,EAAkBnyL,EAAW,GAAK,CAAEQ,QAASxZ,KAAKmqM,eAElD1pJ,EAAa,GAAcvmC,EAAQ,CACvCpQ,UAAS,EACTy/L,OAAM,EACNvwL,SAAQ,EACRg5I,SAAQ,EACRo5C,gBAAiBvB,IAAkB13M,GAAUo3M,GAAUO,IAAuB9pM,KAAKypM,WACnFY,UAAS,EACT17J,MAAOA,IAEH08J,EAAiBj0B,EACnB5+B,GAAqD4+B,EAAa7+B,SAClE94I,EAEE6rM,EAAc,CAClB,gBAAiBtyL,EACjB8b,KAAM,SACNK,SAAUnc,OAAWvZ,EAAY,EACjC,qBAAsBuZ,GAGlBuyL,EAAiB,EAAH,SAClBpzM,GAAI6H,KAAKkiJ,IACTp4I,UAAW2I,GAAIguC,EAAW+qJ,SAAUp0B,EAAattK,YAC9CkhM,GACAC,GACAC,GACAG,IACE9B,GAAM,OACN+B,GAAW,CACd,gBAAiBv2L,EACjB,gBAAiBD,EACjB,gBAAiB3iB,EACjB,iBAAkB6N,KAAK+oM,kBAAkB52M,GACzC,aAAc84J,GAAa51H,KAIzBo2K,EAAalC,EAChB,SACM+B,GACAH,GAAW,CACdhzM,GAAI,OAAO6H,KAAKkiJ,IAChB,gBAAiBliJ,KAAKypM,WACtB,gBAAiB30L,EACjB,gBAAiB3iB,EACjB,iBAAkB6N,KAAK+oM,kBAAkB52M,GACzC,aAAc,QAAO84J,GAAa51H,UAEpC51B,EAEEisM,EAAuBnC,EAC1B,SACM+B,GACAH,GAAW,CACdhzM,GAAI,OAAO6H,KAAKkiJ,IAChB,gBAAiBntI,EACjB,gBAAiB5iB,EACjB,gBAAiB6N,KAAKypM,WACtB,iBAAkBzpM,KAAK+oM,kBAAkB/oM,KAAKypM,YAC9C,aAAc,QAAOx+C,GAAa51H,UAEpC51B,EAEJ,OACE,uBAAKqK,UAAW22C,EAAWltD,MACxB8hC,GACC,gBAAC+1J,GAAK,GAACthL,UAAW22C,EAAWkrJ,YAAiB1gD,EAAY,GAAK,CAAEkhC,QAASnsL,KAAKkiJ,KAAM,CAAElpI,SAAUA,IAC9Fqc,GAGL,uBAAKvrB,UAAW22C,EAAWl0C,WACxBg9L,GAAUc,GACT,gBAACjf,GAAK,CAACthL,UAAW22C,EAAWmrJ,WAAY5yL,SAAUA,GAChDhZ,KAAK6rM,eAAe75C,EAAWhyJ,KAAK7N,MAAS6N,KAAKypM,aAGvD,2BAAS8B,GACP,uBAAKpxL,IAAKna,KAAK0oM,YAAa5+L,UAAW22C,EAAWvoC,MAC/CoyL,GACC,wBACExgM,UAAW2I,GAAIguC,EAAWqrJ,UAC1BnzL,MAAO3Y,KAAK+rM,4BAA4B/5C,EAAU24C,KAGrDpB,GACC,0BACEpvL,IAAKna,KAAK4oM,iBACV9+L,UAAW22C,EAAWurJ,MACtBrzL,MAAO3Y,KAAK+rM,4BAA4B/5C,EAAUy4C,IAC9CiB,IAGR,0BACEvxL,IAAKna,KAAK2oM,OACV7+L,UAAW22C,EAAWurJ,MACtBrzL,MAAO3Y,KAAK+rM,4BAA4B/5C,EAAUu4C,IAC9CkB,KAEJlC,GAAUe,IACV,wBACExgM,UAAW2I,GAAIguC,EAAWwrJ,cAAexrJ,EAAWyrJ,iBACpDvzL,OAAK,KAAI,EAACoyL,GAAeD,EAAqB,IAAG,KAGrD,wBACEhhM,UAAW2I,GAAIguC,EAAWwrJ,cAAexrJ,EAAW0rJ,eACpDxzL,OAAK,KAAI,EAACoyL,GAAeH,EAAqB,IAAG,KAEnD,wBACE9gM,UAAW2I,GAAIguC,EAAWwrJ,cAAexrJ,EAAWyrJ,iBACpDvzL,OAAK,KAAI,EAACoyL,GAAeF,EAAkB,IAAG,OAInDR,GACC,gBAACjf,GAAK,CAACthL,UAAW22C,EAAWmrJ,WAAY5yL,SAAUA,GAChDhZ,KAAK6rM,eAAetC,GAAUv3C,EAAWhyJ,KAAKypM,WAAczpM,KAAK7N,SAIxE,gBAACq0J,GAAU,QAKV,YAAApmI,MAAP,WACMpgB,KAAK2oM,OAAOzxL,SACdlX,KAAK2oM,OAAOzxL,QAAQkJ,SAIxB,sBAAW,oBAAK,C,IAAhB,WACE,GAAIpgB,KAAK4d,MAAM2rL,OACb,MAAO,CAACvpM,KAAKypM,WAAazpM,KAAK7N,Q,gCAInC,sBAAW,oBAAK,C,IAAhB,WACU,iBAAAA,aAAA,iBAAAA,MAAA,EACR,YAAuBsN,IAAnBO,KAAK4d,MAAM7I,UAAwCtV,IAAnBO,KAAK4d,MAAM9I,UAA+BrV,IAAVtN,OAClE,EAEOkD,KAAKyf,IAAI9U,KAAK4d,MAAM7I,IAAK1f,KAAK0f,IAAI/U,KAAK4d,MAAM9I,IAAK3iB,K,gCAI7D,sBAAY,4BAAa,C,IAAzB,WAGU,iBAAA03M,cACR,YADQ,oB,gCAIV,sBAAW,yBAAU,C,IAArB,WACQ,iBAAE,IAAAJ,kBAAA,IAAa,EAAb,WAAAA,WAAA,EACR,OAD4C,EAAAF,aACV9pM,IAAnBO,KAAK4d,MAAM7I,UAAwCtV,IAAnBO,KAAK4d,MAAM9I,UAAoCrV,IAAfgqM,EAGtEp0M,KAAKyf,IAAI9U,KAAK4d,MAAM7I,IAAK1f,KAAK0f,IAAI/U,KAAK4d,MAAM9I,IAAK20L,SAFzD,G,gCAMJ,sBAAY,iCAAkB,C,IAA9B,WAGU,iBAAAK,mBACR,YADQ,yB,gCAIF,YAAAU,YAAR,SAAoBr4M,GACZ,iBAAE4iB,EAAA,EAAAA,IAAKD,EAAA,EAAAA,IACb,OAAOA,IAAQC,EAAM,GAAM5iB,EAAS4iB,IAASD,EAAOC,GAAS,KAGvD,YAAA82L,eAAR,SAAuB15M,GACb,IAAAi6M,EAAA,WAAAA,YACR,OAAOA,EAAcA,EAAYj6M,GAASA,GAWpC,YAAA45M,4BAAR,SAAoC/5C,EAA+Bu4C,G,MAEjE,aAD0Bv4C,EAAW,SAAW,GAAOhyJ,KAAK4d,MAAM+wB,OAAS,QAAU,QAEtE47J,EAAqB,IAClC,GAwFI,YAAAlB,aAAR,SAAqB9pL,EAAgCyyI,GACnD,IAAIq6C,EACJ,OAAQ9sL,EAAMxb,MACZ,IAAK,YACL,IAAK,YACHsoM,EAAmBr6C,EAA4CzyI,EAAqB03E,QAArD13E,EAAqBy3E,QACpD,MACF,IAAK,aACL,IAAK,YACHq1G,EAAmBr6C,EAEdzyI,EAAqBm9E,QAAQ,GAAGzF,QADhC13E,EAAqBm9E,QAAQ,GAAG1F,QAIzC,OAAOq1G,GAGD,YAAAC,eAAR,SAAuBC,EAAsB1C,G,MAA7C,OACQ2C,EAAwBxsM,KAAK8oM,uBAC7B2D,EAAeF,KAAkBC,EAAwBxsM,KAAK+E,MAAM0kM,WAAazpM,KAAK+E,MAAM5S,OAClG6N,KAAK86E,WAAQ,MAER0xH,EAAwB,aAAe,SAAUD,EAClD,EAACC,EAAwB,qBAAuB,iBAAkB3C,E,IAEpE,WACQ,cAAEJ,EAAA,EAAAA,WAAYt3M,EAAA,EAAAA,MAChBs6M,GAAgB,EAAK7uL,MAAMxD,UAC7B,EAAKwD,MAAMxD,SACToyL,EAAwB/C,EAAct3M,EACtC,EAAKyrB,MAAM2rL,OAAS,CAACE,EAAat3M,QAAUsN,OAO9C,YAAAu9L,aAAR,SAAqB7qM,EAAe03M,GAC5B,iBAAExxJ,EAAA,EAAAA,KAAMq0J,EAAA,EAAAA,WAAYnD,EAAA,EAAAA,OAAQe,EAAA,EAAAA,eAC9BqC,EAAS,EACb,GAAI33M,SAASqjD,GACX,KAAOhjD,KAAK+3D,MAAM/U,EAAQhjD,KAAKC,IAAI,GAAIq3M,IAAWt3M,KAAKC,IAAI,GAAIq3M,KAAYt0J,GACzEs0J,IAKJ,IAAMJ,EAAe7sI,WAAWvtE,EAAMixE,QAAQupI,IAE1CD,IACF7C,EAAgB0C,GAGlB,IAAMK,EACJ5sM,KAAK8oM,yBAA2BwB,EAAiBiC,GAAgB,EAAIA,GAAgBvsM,KAAK6pM,eACtFgD,GACH7sM,KAAK8oM,yBAA2BwB,EAAiBiC,GAAgB,EAAIA,GAAgBvsM,KAAK8pM,sBAExFP,GAAUqD,GAA0BC,IACvC7sM,KAAKssM,eAAeC,EAAc1C,IAnbxB,EAAAhjM,aAA6B,CACzCwxC,KAAM,EACNtjC,IAAK,EACLD,IAAK,GACLu1L,WAAW,EACXrxL,UAAU,EACVg5I,UAAU,EACVolB,YAAa,GACbkzB,gBAAgB,GAghBpB,EAzhBA,CAAgC,aCxB1B,GAAmB,CACvB/2M,KAAM,YACN09H,QAAS,oBACTj4G,SAAU,qBACVm4B,IAAK,gBACLC,OAAQ,mBACR7kC,UAAW,sBACXi/L,SAAU,qBACVtzL,KAAM,iBACN8zL,MAAO,kBACPG,cAAe,mBACfD,gBAAiB,qBACjBN,WAAY,kBACZvB,UAAW,sBACXe,gBAAiB,4BACjBU,SAAU,sBCXCgB,GAAgDlxD,GAC3D,IDauB,SAACh+H,G,8BAChB9T,EAAA,EAAAA,UAAWijM,EAAA,EAAAA,oBAAqBp+J,EAAA,EAAAA,MAAOqjH,EAAA,EAAAA,SAAUh5I,EAAA,EAAAA,SAAUoyL,EAAA,EAAAA,gBAAiBf,EAAA,EAAAA,UAAWd,EAAA,EAAAA,OACvFjmE,EAAA,EAAAA,eACF7iF,EAAa8yE,GAAoB,GAAkB5kF,GAKnDq+J,EAA4B1pE,EAAerE,8BAC3CguE,EAA4B3pE,EAAe5E,uBAC3CwuE,EAAqC5pE,EAAejE,kCACpD8tE,EAAyB7pE,EAAerB,iBACxCmrE,EAA2B9pE,EAAejB,eAE1CgrE,EAA6B/pE,EAAevC,aAC5CusE,EAA+BhqE,EAAelD,mBAE9CmtE,EAAuBjqE,EAAepF,gBACtCsvE,EAAmBlqE,EAAerB,iBAClCwrE,EAA2BnqE,EAAejB,eAE1CqrE,GAA+B10L,GAAY,CAC/C+xB,gBAAiBiiK,EACjBtmF,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,aAEpB,IAGG4iK,GAAiC30L,GAAY,CACjD+xB,gBAAiBmiK,EACjBxmF,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,aAEhB,IAGGk3I,GAA2B50L,GAAY,CAC3C+xB,gBAAiBkiK,EACjBvmF,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,aAEpB,IAGG8iK,GAA6B70L,GAAY,CAC7CmD,OAAQ,aAAa6wL,EACrBtmF,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,aAEhB,IAGGo3I,GAAgClwL,EAAM5E,UAAY,CACtD+xB,gBAAiBu4F,EAAejE,kCAChC3Y,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,aAEpB,IAGH,MAAO,CACLx3C,KAAM,EAAF,CACFktD,EAAWltD,KACXo7C,EAAM80F,MAAM9T,OACZ,CACE8vD,WAAY,QAEdztB,GAAY,CACVzW,YAAa,IAEZ,CAAEviI,OAAgCvZ,EAArBghD,EAAWwwE,SACxB,CAACj4G,EAAWynC,EAAWznC,cAAWvZ,GAClC,CAAEuyJ,OAA4BvyJ,EAAjBghD,EAAWtP,KACxB,CAAC6gH,EAAWvxG,EAAWrP,YAAS3xC,GAAU,CAC7CqK,IAEF6hM,WAAY,CACV,CACE/yL,QAAS,GAEXm0L,GAEFxgM,UAAW,CACTk0C,EAAWl0C,UACX,CACE8P,QAAS,OACTi/H,SAAU,SACV2xB,WAAY,UAEdjb,GAAY,CACVxW,cAAe,SACf//H,OAAQ,OACRN,UAAW,SACXe,OAAQ,UAGZsvL,SAAU,EAAF,CACN/qJ,EAAW+qJ,UACVjC,GAAUp4E,GAAcxiF,GACzB,CACEvyB,WAAY,cACZD,OAAQ,OACR0wE,SAAU,EACVjwE,WAAY,GACZP,QAAS,OACT4wJ,WAAY,SACZvmD,WAAS,KACP,EAAC,YAAYjmE,EAAW0rJ,eAAkBuB,EAC1C,EAAC,WAAWjtJ,EAAW0rJ,eAAkByB,EACzC,EAAC,YAAYntJ,EAAWyrJ,iBAAoByB,EAC5C,EAAC,WAAWltJ,EAAWyrJ,iBAAoByB,EAC3C,EAAC,YAAYltJ,EAAWurJ,OAAU6B,EAClC,EAAC,WAAWptJ,EAAWurJ,OAAU6B,EACjC,EAAC,YAAYptJ,EAAWqrJ,UAAagC,EACrC,EAAC,WAAWrtJ,EAAWqrJ,UAAagC,EACpC,EAACr9E,IAAuB,CACtB68C,kBAAmB,QAEtB,IAEHtb,EACI,CACEv2I,OAAQ,OACRC,MAAO,GACP9C,QAAS,SAEX,CACE6C,OAAQ,GACRC,MAAO,OACP9C,QAAS,UAEZ,CAACyxL,EAAY5pJ,EAAW4pJ,eAAY5qM,GACpC,CAAC2rM,EAAkB3qJ,EAAW2qJ,qBAAkB3rM,IAErDusM,MAAO,CACLvrJ,EAAWurJ,MACXzC,GAAUp4E,GAAcxiF,EAAO,CAAE8iF,OAAQ,IACzC,CACEu1C,YAAa,EACbC,YAAa,QACbvwG,YAAa82I,EACb74H,aAAc,GACdv5D,UAAW,aACXgB,WAAYmxL,EACZlxL,QAAS,QACTX,MAAO,GACPD,OAAQ,GACRP,SAAU,YAEZ82I,EACI,CACEx2I,MAAO,EACPU,OAAQ,SACRukB,UAAW,mBAEb,CACEllB,KAAM,EACNklB,UAAW,GAAOkO,GAAS,kBAAoB,oBAErDy8J,GAAmB,CACjB7kH,WAAY,QAAQ8jC,GAAiC,IAAIA,IAE3DrxG,GAAY,CACV09C,YAAa+2I,EACb/mF,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,YAEhB,KAGLx+C,KAAM,CACJuoC,EAAWvoC,KACX,CACEmE,QAAS,OACTnB,SAAU,YAEZ82I,EACI,CACEv2I,OAAQ,OACRC,MAAO,EACPQ,OAAQ,SACRs/H,cAAe,kBAEjB,CACE9/H,MAAO,SAGfuwL,cAAe,CACb,CACEt3H,aAAc,EACdv5D,UAAW,cAEb42I,EACI,CACEt2I,MAAO,EACPD,OAAQ,QAEV,CACEA,OAAQ,EACRC,MAAO,SAGfywL,cAAe,CACb1rJ,EAAW0rJ,cACX,CACE/vL,WAAY+wL,EACZzmF,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,cAEpB,IAEHqgK,GAAmB,CACjB7kH,WAAY,SAAS8jC,GAAiC,IAAIA,IAE5DrxG,GAAY,CACVoD,WAAYixL,EACZ3mF,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,WACjB2rB,YAAa,YAEhB,KAGLw1I,gBAAiB,CACfzrJ,EAAWyrJ,gBACX,CACE9vL,WAAYgxL,EACZ1mF,WAAS,KACP,EAAC+J,IAAuB,CACtBt0G,OAAQ,wBAEX,IAEHivL,GAAmB,CACjB7kH,WAAY,SAAS8jC,GAAiC,IAAIA,IAE5DrxG,GAAY,CACVoD,WAAYkxL,EACZ5mF,WAAS,KACP,EAAC+J,IAAuB,CACtB/5D,YAAa,YAEhB,KAGLo1I,SAAU,CACRrrJ,EAAWqrJ,SACX,CACE5wL,SAAU,WACVkB,WAAYknH,EAAejB,eAC3B3b,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,cAEpB,IAEHntB,EAAM5E,UAAY,CAChBoD,WAAYknH,EAAelD,mBAC3B1Z,WAAS,KACP,EAAC+J,IAAuB,CACtB1lF,gBAAiB,YAEpB,IAEHntB,EAAMo0I,SACF,CACEt2I,MAAO,OACPD,OAAQ,MACRglB,UAAW,GAAOkO,GAAS,kBAAoB,oBAEjD,CACEjzB,MAAO,MACPD,OAAQ,OACRglB,UAAW,qBAGnBmrK,WAAY,CACVnrJ,EAAWmrJ,WACX,CACE7+G,WAAY,EACZrxE,MAAO,GACPkB,WAAY,KAEdo1I,EACI,CACE91I,OAAQ,SACRc,WAAY,SACZtB,MAAO,IAET,CACEQ,OAAQ,QACRc,WAAY,SACZtB,MAAO,aCxTjBjc,EACA,CACEu8I,MAAO,WCHLusD,GAAchnF,GAChB,CACI7lG,MAAO,QAGFqyL,GAAqB,SAACnwL,GAC/B,IAAQzlB,EAAwBylB,EAAxBzlB,GAAIhG,EAAoByrB,EAApBzrB,MAAOioB,EAAawD,EAAbxD,SAKnB,OACI,kBAAC,WAAD,KACI,yBAAKtQ,UAAWy+L,IAChB,kBAACuE,GAAD,CACI/3L,IAAK,EACLD,IAAK,IACLujC,KAAM,EACN17C,aAAc+nE,SAASvyE,GACvBioB,SAXW,SAAC4zL,GAAD,OAA0B5zL,EAASjiB,EAAD,UAAQ61M,EAAR,OAY7C5B,YAXc,SAACj6M,GAAD,gBAAsBA,EAAtB,MAYdk4M,WAAS,EACTC,gBAAc,O,aC5Bf,SAASjzJ,GAAez3C,EAAK1O,GAC1C,OCLa,SAAyB0O,GACtC,GAAIhM,MAAMW,QAAQqL,GAAM,OAAOA,EDIxB,CAAeA,IELT,SAA+BA,EAAK1O,GACjD,GAAsB,qBAAXe,QAA4BA,OAAO85C,YAAYn6C,OAAOgO,GAAjE,CACA,IAAI63C,EAAO,GACPC,GAAK,EACLC,GAAK,EACLH,OAAK/3C,EAET,IACE,IAAK,IAAiC83C,EAA7BryC,EAAKtF,EAAI3N,OAAO85C,cAAmB2L,GAAMH,EAAKryC,EAAG9F,QAAQuB,QAChE82C,EAAK1jD,KAAKwjD,EAAGplD,QAETjB,GAAKumD,EAAKvhD,SAAWhF,GAH8CwmD,GAAK,IAK9E,MAAO3/C,GACP4/C,GAAK,EACLH,EAAKz/C,EACL,QACA,IACO2/C,GAAsB,MAAhBxyC,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIyyC,EAAI,MAAMH,GAIlB,OAAOC,GFnBuB,CAAqB73C,EAAK1O,IAAM,OAAA+oF,GAAA,GAA2Br6E,EAAK1O,IGLjF,WACb,MAAM,IAAIokB,UAAU,6IHIgF,GIL/F,IAkBM24L,GAAY,kBAEZC,GAAa,YChBpB,SAAUC,GAAQj7K,EAAWjgC,EAAW0W,GAI5C,IAAIykM,EAAgB,GAEd78M,GAJNoY,GAAQ,MADR1W,GAAQ,KAMFwyG,EAAKvyE,EAAI,GACTnI,EAAIx5B,GAAK,EAAI8D,KAAKg+B,IAAKoyE,EAAK,EAAK,IACjCn0G,EAAIqY,EAAIpY,EAEd,OAAQ8D,KAAK29B,MAAMyyE,IACjB,KAAK,EACH2oG,EAAM,CAAC78M,EAAGw5B,EAAG,GACb,MAEF,KAAK,EACHqjL,EAAM,CAACrjL,EAAGx5B,EAAG,GACb,MAEF,KAAK,EACH68M,EAAM,CAAC,EAAG78M,EAAGw5B,GACb,MAEF,KAAK,EACHqjL,EAAM,CAAC,EAAGrjL,EAAGx5B,GACb,MAEF,KAAK,EACH68M,EAAM,CAACrjL,EAAG,EAAGx5B,GACb,MAEF,KAAK,EACH68M,EAAM,CAAC78M,EAAG,EAAGw5B,GAIjB,MAAO,CACL/4B,EAAGqD,KAAK+3D,MDvCiB,KCuCMghJ,EAAI,GAAK98M,IACxCyO,EAAG1K,KAAK+3D,MDxCiB,KCwCMghJ,EAAI,GAAK98M,IACxCyU,EAAG1Q,KAAK+3D,MDzCiB,KCyCMghJ,EAAI,GAAK98M,KC3CtC,SAAU+8M,GAAMl8M,EAAe2iB,EAAaC,GAChD,YADgD,IAAAA,MAAA,GACzC5iB,EAAQ4iB,EAAMA,EAAM5iB,EAAQ2iB,EAAMA,EAAM3iB,ECE3C,SAAUm8M,GAAQt8M,EAAW+N,EAAWgG,GAC5C,MAAO,CAACwoM,GAAgBv8M,GAAIu8M,GAAgBxuM,GAAIwuM,GAAgBxoM,IAAI3D,KAAK,IAI3E,SAASmsM,GAAgBtrI,GAEvB,IAAMpK,GADNoK,EAAMorI,GAAMprI,EHPe,MGQXhvE,SAAS,IAEzB,OAAsB,IAAf4kE,EAAI3iE,OAAe,IAAM2iE,EAAMA,ECLlC,SAAU21I,GAAmB5yL,GACjC,MAAO,ICLH,SAAkBsX,EAAWjgC,EAAW0W,GACtC,gBAEN,OAAO2kM,GAFC,EAAAt8M,EAAG,EAAA+N,EAAG,EAAAgG,GDIH0oM,CAAQ7yL,EAAMsX,EJTS,IAEL,KMMzB,SAAUw7K,GAAiB18M,EAAW+N,EAAWgG,EAAWD,EAAuB+yD,GACvF,ONH6B,MMGtB/yD,GAAsC,kBAANA,EAAiB,IAAI+yD,EAAQ,QAAQ7mE,EAAC,KAAK+N,EAAC,KAAKgG,EAAC,KAAKD,ENHjE,IMGoF,ICE7G,SAAU6oM,GAAS/yL,EAAe3oB,EAAW0W,GAC3C,kBAAE3X,EAAA,EAAAA,EAAG+N,EAAA,EAAAA,EAAGgG,EAAA,EAAAA,EACR8yD,EAAMy1I,GAAQt8M,EAAG+N,EAAGgG,GAE1B,cACK6V,GAAK,CACR3oB,EAAC,EACD0W,EAAC,EACD3X,EAAC,EACD+N,EAAC,EACDgG,EAAC,EACD8yD,IAAG,EACHppD,IAAKi/L,GAAiB18M,EAAG+N,EAAGgG,EAAG6V,EAAM9V,EAAG+yD,KCP5C,IAAM,GAAgB8jF,KAStB,eAcE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,K,OANN,EAAA+mI,aAA+B,GAC/B,EAAAyL,MAAQ,cACR,EAAAw+C,wBAAkC,EAClC,EAAA1qB,eAAiBjmC,GAAM,8BA4EvB,EAAA9uG,WAAa,SAAC0zG,GACZ,IAAAjnI,EAAA,QAAAA,MACF3oB,EAAA,EAAAA,EAAG0W,EAAA,EAAAA,EAEHklM,EAAYhsD,EAAG5/H,SAAW,GAAK,EAIrC,OAAQ4/H,EAAG//H,OACT,KAAKsyH,GACH,EAAKw5D,wBAAyB,EAC9BjlM,GAAKklM,EACL,MAEF,KAAKz5D,GACH,EAAKw5D,wBAAyB,EAC9BjlM,GAAKklM,EACL,MAEF,KAAKz5D,GACH,EAAKw5D,wBAAyB,EAC9B37M,GAAK47M,EACL,MAEF,KAAKz5D,GACH,EAAKw5D,wBAAyB,EAC9B37M,GAAK47M,EACL,MAEF,QACE,OAGJ,EAAKC,aAAajsD,EAAI8rD,GAAS/yL,EAAOyyL,GAAMp7M,ERlJZ,KQkJsCo7M,GAAM1kM,ERhJjD,QQqKrB,EAAAknC,aAAe,SAACgyG,GACtB,EAAK8B,aAAa5wJ,KAChBk+B,GAAG/xB,OAAQ,YAAa,EAAK6uM,cAA0C,GACvE98K,GAAG/xB,OAAQ,UAAW,EAAK8pM,mBAAmB,IAGhD,EAAK+E,aAAalsD,IAGZ,EAAAksD,aAAe,SAAClsD,GACtB,GAAK,EAAKuN,MAAMl5I,QAAhB,CAYA,IAAM83L,EAgBJ,SACJnsD,EACAosD,EACA17M,GAEA,IAAM27M,EAAW37M,EAAK8tB,wBAEhB8tL,GAAetsD,EAAG7rD,QAAUk4G,EAAS1zL,MAAQ0zL,EAASxzL,MACtD0zL,GAAevsD,EAAG5rD,QAAUi4G,EAAS3zL,KAAO2zL,EAASzzL,OAE3D,OAAOkzL,GACLM,EACAZ,GAAMh5M,KAAK+3D,MRzNqB,IQyNf+hJ,GRzNe,KQ0NhCd,GAAMh5M,KAAK+3D,MRxNgB,QQwNQgiJ,GRxNR,MQ2LVC,CAAaxsD,EAAI,EAAK99I,MAAM6W,MAAO,EAAKw0I,MAAMl5I,SAC3D83L,GACF,EAAKF,aAAajsD,EAAImsD,KAIlB,EAAAhF,kBAAoB,WAC1B,EAAKrlD,aAAavuJ,SAAQ,SAAA0pJ,GAAW,OAAAA,OACrC,EAAK6E,aAAe,IA3JpBjH,GAAuB,GAEvB,EAAK34I,MAAQ,CAAE6W,MAAOgC,EAAMhC,O,EA2JhC,OA9KwC,OAsBtC,sBAAW,oBAAK,C,IAAhB,WACE,OAAO5b,KAAK+E,MAAM6W,O,gCAGb,YAAA+tF,mBAAP,SACEq0C,EACAwG,GAIIxG,IAAch+I,KAAK4d,OAAS5d,KAAK4d,MAAMhC,OACzC5b,KAAK86E,SAAS,CAAEl/D,MAAO5b,KAAK4d,MAAMhC,SAI/B,YAAA0wF,qBAAP,WACEtsG,KAAKgqM,qBAGA,YAAAliM,OAAP,WACQ,iBAAEwnM,EAAA,EAAAA,QAAS3gK,EAAA,EAAAA,MAAO7kC,EAAA,EAAAA,UAAWoQ,EAAA,EAAAA,OAAQq1L,EAAA,EAAAA,gBAAiBtkD,EAAA,EAAAA,UAAWqpB,EAAA,EAAAA,gBAC/D14J,EAAA,WAAAA,MAEF6kC,EAAa,GAAcvmC,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACTwlM,QAAO,IAGHE,EAAYD,EAAiBhmM,QAAQ,MAAOyL,OAAO4G,EAAM3oB,IAAIsW,QAAQ,MAAOyL,OAAO4G,EAAMjS,IAE/F,OACE,uBACEwQ,IAAKna,KAAKowJ,MACVj7H,SAAU,EACVrrB,UAAW22C,EAAWltD,KACtBolB,MAAO,CAAEoyB,gBAAiByjK,GAAmB5yL,IAC7C07C,YAAat3D,KAAK6wC,aAClBj5B,UAAW5X,KAAKmvC,WAChBra,KAAK,SAAQ,iBAGG06K,EAAS,gBAIVxvM,KAAK4uM,uBAAyBhzL,EAAM3oB,EAAI2oB,EAAMjS,EAAC,gBAC/C,EAAC,gBR5FO,IQ6FO,aAClBshJ,EAAS,mBACHjrJ,KAAKkkL,eAAc,qBAClB,GAEnB,uBAAKp6K,UAAW22C,EAAWyhB,YAAa/pE,GAAI6H,KAAKkkL,gBAC9C5P,GAEH,uBAAKxqK,UAAW22C,EAAW2vE,QAC3B,uBAAKtmH,UAAW22C,EAAWgvJ,OAC3B,uBACE3lM,UAAW22C,EAAWurJ,MACtBrzL,MAAO,CAAE6C,KAAMI,EAAO3oB,EAAI,IAAKsoB,IRzGV,IQyGiCK,EAAOjS,EAAI,IAAKohC,gBAAiBnvB,EAAOnM,SA0C9F,YAAAq/L,aAAR,SAAqBjsD,EAAyEjnI,GACpF,IAAAxB,EAAA,WAAAA,SAEFs1L,EAAW1vM,KAAK+E,MAAM6W,MACxBA,EAAM3oB,IAAMy8M,EAASz8M,GAAK2oB,EAAMjS,IAAM+lM,EAAS/lM,IAI/CyQ,GACFA,EAASyoI,EAA8CjnI,GAGpDinI,EAAGzwD,mBACNpyF,KAAK86E,SAAS,CAAEl/D,MAAK,IACrBinI,EAAGrjI,oBAxIO,EAAA3Y,aAA8C,CAC1DyoM,QAAS,IACTrkD,UAAW,4BACXskD,gBAAiB,gCACjBj7B,gBAAiB,kGAwKrB,EA9KA,CAAwC,aCpBjC,ICCMq7B,GAAgE/zD,GAI3E,IDLuB,SAACh+H,G,MAChB9T,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAAO2gK,EAAA,EAAAA,QAClB/rE,EAAA,EAAAA,QAASrhC,EAAA,EAAAA,QAEjB,MAAO,CACL3uG,KAAM,CACJ,2BACA,CACE2nB,SAAU,WACVgtB,aAAc,EACd/rB,OAAQ,aAAaonH,EAAQ5M,eAC7BhiD,aAAcutB,EAAQg3B,eACtBguC,SAAUooC,EACV/gC,UAAW+gC,EACXp6I,QAAS,OAETwxD,WAAS,KACP,EAAC+J,IAAoB,KlZWtB,CACL68C,kBAAmB,OACnBC,qBAAsB,SkZThB,EAAC,IAAIx8C,GAAuB,YAAa,CACvC77D,QAAS,aAAaquE,EAAQnN,kBAEjC,IAEHtsH,GAEFsmH,MAAO,CACL,uBACA,CACEl1G,SAAU,WACVM,KAAM,EACNiY,MAAO,EACPlY,IAAK,EACLmG,OAAQ,EAGRtF,WAAY,sEAGhBqzL,KAAM,CACJ,sBACA,CACEv0L,SAAU,WACVM,KAAM,EACNiY,MAAO,EACPlY,IAAK,EACLmG,OAAQ,EACRtF,WAAY,yDAGhB4vL,MAAO,CACL,uBACA,CACE9wL,SAAU,WACVQ,MAAO,GACPD,OAAQ,GACRW,WAAY,QACZD,OAAQ,aAAaonH,EAAQlN,oBAC7B1hD,aAAc,MACd2vD,UAAWpiC,EAAQ62B,WACnBt4F,UAAW,wBACXimF,UAAW,CACT,UAAW,CACTxrG,SAAU,WACVM,KAAM,EACNiY,MAAO,EACPlY,IAAK,EACLmG,OAAQ,EACRvF,OAAQ,aAAaonH,EAAQzM,MAC7BniD,aAAc,MACdv5D,UAAW,aACX/R,QAAS,SAKjB64D,YAAaiwD,WCzEgB1yH,EAAW,CAAEu8I,MAAO,mBCI/C,GAAgBW,KAStB,eAQE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,K,OAJN,EAAA+mI,aAA+B,GAC/B,EAAAyL,MAAQ,cA6GR,EAAAjhH,WAAa,SAAC0zG,GACpB,IAAI1c,EAAe,EAAKh0I,MAClBy9M,EAAW,EAAKC,UAChBhB,EAAYhsD,EAAG5/H,SAAW,GAAK,EAIrC,OAAQ4/H,EAAG//H,OACT,KAAKsyH,GACHjP,GAAgB0oE,EAChB,MAEF,KAAKz5D,GACHjP,GAAgB0oE,EAChB,MAEF,KAAKz5D,GACHjP,EAAe,EACf,MAEF,KAAKiP,GACHjP,EAAeypE,EACf,MAEF,QACE,OAIJ,EAAK5S,aAAan6C,EAAIwrD,GAAMloE,EAAcypE,KAGpC,EAAA/+J,aAAe,SAACgyG,GACtB,IAAM3xB,EAAMx4D,GAAU,GAElBw4D,GACF,EAAKyzB,aAAa5wJ,KAChBk+B,GAAGi/F,EAAK,YAAa,EAAK69E,cAA0C,GACpE98K,GAAGi/F,EAAK,UAAW,EAAK84E,mBAAmB,IAI/C,EAAK+E,aAAalsD,IAGZ,EAAAksD,aAAe,SAAClsD,GACtB,GAAK,EAAKuN,MAAMl5I,QAAhB,CAIA,IAAM04L,EAAW,EAAKC,UAChBX,EAAW,EAAK9+C,MAAMl5I,QAAQmK,wBAE9ByuL,GAAqBjtD,EAAG7rD,QAAUk4G,EAAS1zL,MAAQ0zL,EAASxzL,MAC5D4kC,EAAW+tJ,GAAMh5M,KAAK+3D,MAAM0iJ,EAAoBF,GAAWA,GAEjE,EAAK5S,aAAan6C,EAAIviG,KAGhB,EAAA0pJ,kBAAoB,WAC1B,EAAKrlD,aAAavuJ,SAAQ,SAAA0pJ,GAAW,OAAAA,OACrC,EAAK6E,aAAe,IArKpBjH,GAAuB,GAUJ,QAAf,EAAKqyD,OAAqBnyL,EAAMoyL,cAAgBpyL,EAAMqyL,cACxD96L,GAAK,wFAGP,EAAKpQ,MAAQ,CACXohI,aAAcvoH,EAAMzrB,OAAS,G,EA2KnC,OArMqC,OA8BnC,sBAAW,oBAAK,C,IAAhB,WACE,OAAO6N,KAAK+E,MAAMohI,c,gCAGb,YAAAx8B,mBAAP,SAA0Bq0C,EAAwCwG,GAG5DxG,IAAch+I,KAAK4d,YAA8Bne,IAArBO,KAAK4d,MAAMzrB,OACzC6N,KAAK86E,SAAS,CAAEqrD,aAAcnmI,KAAK4d,MAAMzrB,SAItC,YAAAm6G,qBAAP,WACEtsG,KAAKgqM,qBAGA,YAAAliM,OAAP,WACE,IAAM/D,EAAO/D,KAAK+vM,MACZH,EAAW5vM,KAAK6vM,UAChB,aAEJI,EAAA,EAAAA,aACAD,EAAA,EAAAA,aACArhK,EAAA,EAAAA,MACA7kC,EAAA,EAAAA,UACAoQ,EAAA,EAAAA,OACA,IAAA+wI,iBAAA,IAAY,EAAZ,IAEI9kB,EAAenmI,KAAK7N,MAEpBsuD,EAAa,GAAcvmC,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACT/F,KAAI,IAGA+rM,EAAqB,IAAM3pE,EAAgBypE,EAEjD,OACE,uBACEz1L,IAAKna,KAAKowJ,MACVtmJ,UAAW22C,EAAWltD,KACtB4hC,SAAU,EACVvd,UAAW5X,KAAKmvC,WAChBmoB,YAAat3D,KAAK6wC,aAClB/b,KAAK,SAAQ,gBACEqxG,EAAY,iBAEXnxH,OAAOmxH,GAAa,gBACrB,EAAC,gBACDypE,EAAQ,aACX3kD,EAAS,qBACF,MAEf+kD,IAAgBC,IAClB,uBACEnmM,UAAW22C,EAAWyvJ,cAEtBv3L,MACEq3L,EACI,CACE5zL,WACW,iBAATrY,EACI,8BAA8BisM,EAAY,iBAC1C,2CAA2CA,EAAY,KAE/DC,IAIV,uBAAKnmM,UAAW22C,EAAW0vJ,YAAax3L,MAAO,CAAE6C,KAAMs0L,EAAoB,SAKjF,sBAAY,oBAAK,C,IAAjB,WAEQ,iBAAEM,EAAA,EAAAA,QAAS,IAAArsM,KACjB,YADiB,IAAO,EAAP,mB,gCAInB,sBAAY,wBAAS,C,IAArB,WACE,MAAsB,QAAf/D,KAAK+vM,MXtIa,IAKE,K,gCWoMrB,YAAA/S,aAAR,SAAqBn6C,EAAyEviG,GAC5F,GAAIA,IAAatgD,KAAK7N,MAAtB,CAIQ,IAAAioB,EAAA,WAAAA,SAEJA,GACFA,EAASyoI,EAA8CviG,GAGpDuiG,EAAGzwD,mBACNpyF,KAAK86E,SAAS,CACZqrD,aAAc7lF,IAEhBuiG,EAAGrjI,oBAjMO,EAAA3Y,aAA2C,CACvD1U,MAAO,GAmMX,EArMA,CAAqC,aCpB/Bk+M,GAAW,CACfj0L,WAAY,mBAAmB,CAC7B,UACA,QACA,WACA,cACA,cACA,WACA,cACA,WACA,cACA,cACA,WACA,YACAha,KAAK,KAAI,KAGPkuM,GAAa,CACjBC,gBACE,+JChBSC,GAA0D50D,GAIrE,IDeuB,SAACh+H,G,MAEhB+wB,EAAA,EAAAA,MAAO7kC,EAAA,EAAAA,UAAW,IAAA/F,YAAA,IAAO,EAAP,QAAc,IAAAqsM,QAAA,yBAChC7sE,EAAA,EAAAA,QAASrhC,EAAA,EAAAA,QAEjB,MAAO,CACL3uG,KAAM,CACJ,wBACA,CACE2nB,SAAU,WACVO,OAAQ,GACRysB,aAAc,EACd/rB,OAAQ,aAAaonH,EAAQ7M,aAC7B/hD,aAAcutB,EAAQg3B,eACtB99G,UAAW,aACX85C,QAAS,OAETwxD,WAAS,KACP,EAAC,IAAIqK,GAAuB,YAAa,CACvC77D,QAAS,aAAaquE,EAAQnN,kBAEjC,IAEHq6E,EAAqBH,GAAaD,GAClCvmM,GAEFomM,cAAe,CACb,+BACA,CACE7mM,QAAS,GACT6R,SAAU,WACVM,KAAM,EACNiY,MAAO,EACPlY,IAAK,EACLmG,OAAQ,IAGZyuL,YAAa,CACX,uBACA,YACA,CACEj1L,SAAU,WACVQ,MAAO,GACPD,OAAQ,GACRW,WAAY,QACZD,OAAQ,aAAaonH,EAAQlN,oBAC7B1hD,aAAc,MACd2vD,UAAWpiC,EAAQ62B,WACnBt4F,UAAW,wBACXllB,IAAK,gBChEiB9b,EAAW,CAAEu8I,MAAO,gBCA5C,SAAU00D,GAAS90L,GACvB,GAAKA,EAAL,CASA,IAAM+0L,EAA8BC,GAAMh1L,IAmG5C,SAAenM,GACb,GAAe,MAAXA,EAAI,IAA6B,IAAfA,EAAIvZ,QAAgB,mBAAmBkL,KAAKqO,GAChE,MAAO,CACLzd,EAAG0yE,SAASj1D,EAAIzb,MAAM,EAAG,GAAI,IAC7B+L,EAAG2kE,SAASj1D,EAAIzb,MAAM,EAAG,GAAI,IAC7B+R,EAAG2+D,SAASj1D,EAAIzb,MAAM,EAAG,GAAI,IAC7B8R,EdvHyB,KccuB+qM,CAAMj1L,IAkH5D,SAAenM,GACb,GAAe,MAAXA,EAAI,IAA6B,IAAfA,EAAIvZ,QAAgB,mBAAmBkL,KAAKqO,GAChE,MAAO,CACLzd,EAAG0yE,SAASj1D,EAAI,GAAKA,EAAI,GAAI,IAC7B1P,EAAG2kE,SAASj1D,EAAI,GAAKA,EAAI,GAAI,IAC7B1J,EAAG2+D,SAASj1D,EAAI,GAAKA,EAAI,GAAI,IAC7B3J,EdtIyB,KccuCgrM,CAAMl1L,IAgF5E,SAAenM,GACb,IAAML,EAAQK,EAAIL,MAAM,2BACxB,GAAIA,EAAO,CACT,IAAM2hM,IAAa3hM,EAAM,GACnB4hM,EAAoBD,EAAW,EAAI,EACnCtsK,EAAQr1B,EAAM,GAAGjN,MAAM,SAASjE,IAAIuW,QAE1C,GAAIgwB,EAAMvuC,SAAW86M,EAAmB,CACtC,IAAMl4I,ECvGN,SAAkB5lC,EAAWjgC,EAAW9B,GAC5C,IAAM8/M,ECHF,SAAkB/9K,EAAWjgC,EAAW9B,GAE5C,IAAMwY,EAAIxY,GADV8B,IAAM9B,EAAI,GAAKA,EAAI,IAAMA,GAAK,KAG9B,MAAO,CACL+hC,EAAGA,EACHjgC,EAAS,IAAN0W,EAAU,EAAM,EAAI1W,EAAK0W,EAAK,IACjCA,EAAGA,GDJOunM,CAAQh+K,EAAGjgC,EAAG9B,GAE1B,OAAOg9M,GAAQ8C,EAAI/9K,EAAG+9K,EAAIh+M,EAAGg+M,EAAItnM,GDoGhBwnM,CAAQ1sK,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAE/C,OADAq0B,EAAKhzD,EAAIirM,EAAsB,IAAXtsK,EAAM,GdvGD,IcwGlBq0B,IA1FyEs4I,CAAMx1L,GAC1F,OAAI+0L,GAcN,SAAyBlhM,GACvB,GAAwB,qBAAblF,SAET,OAEF,IAAMqiC,EAAOriC,SAASiJ,cAAc,OACpCo5B,EAAKj0B,MAAMoyB,gBAAkBt7B,EAE7Bm9B,EAAKj0B,MAAMuC,SAAW,WACtB0xB,EAAKj0B,MAAM4C,IAAM,UACjBqxB,EAAKj0B,MAAM6C,KAAO,UAClBoxB,EAAKj0B,MAAM8C,OAAS,MACpBmxB,EAAKj0B,MAAM+C,MAAQ,MACnBnR,SAAS6b,KAAK7S,YAAYq5B,GAC1B,IAAMykK,EAAiB/6I,iBAAiB1pB,GAClC0kK,EAAgBD,GAAkBA,EAAetmK,gBAMvD,GALAxgC,SAAS6b,KAAKjE,YAAYyqB,GAKJ,qBAAlB0kK,GAA0D,gBAAlBA,EAAiC,CAC3E,OAAQ7hM,EAAIkjB,QAEV,IAAK,cACL,IAAK,QACL,IAAK,YACH,MAAO,CAAE3gC,EAAG,EAAG+N,EAAG,EAAGgG,EAAG,EAAGD,EAAG,GAElC,OAGF,OAAO8qM,GAAMU,GAzCNC,CAAgB31L,IAgDzB,SAASg1L,GAAMnhM,GACb,GAAKA,EAAL,CAIA,IAAML,EAAQK,EAAIL,MAAM,2BACxB,GAAIA,EAAO,CACT,IAAM2hM,IAAa3hM,EAAM,GACnB4hM,EAAoBD,EAAW,EAAI,EACnCtsK,EAAQr1B,EAAM,GAAGjN,MAAM,SAASjE,IAAIuW,QAE1C,GAAIgwB,EAAMvuC,SAAW86M,EACnB,MAAO,CACLh/M,EAAGyyC,EAAM,GACT1kC,EAAG0kC,EAAM,GACT1+B,EAAG0+B,EAAM,GACT3+B,EAAGirM,EAAsB,IAAXtsK,EAAM,GdpFG,OiBCzB,SAAU+sK,GAAiB14I,GACvB,QAAAhzD,SAAA,MjBFqB,IiBErB,EAAqBC,EAAA,EAAAA,EAAGhG,EAAA,EAAAA,EAAG/N,EAAA,EAAAA,EAC7B,ECLF,SAAkBA,EAAW+N,EAAWgG,GAC5C,IAAImtB,EAAIu+K,IACF38L,EAAMzf,KAAKyf,IAAI9iB,EAAG+N,EAAGgG,GAErBi7I,EAAQlsI,EADFzf,KAAK0f,IAAI/iB,EAAG+N,EAAGgG,GA0B3B,OAtBc,IAAVi7I,EACF9tH,EAAI,EACKlhC,IAAM8iB,EACfoe,GAAMnzB,EAAIgG,GAAKi7I,EAAS,EACfjhJ,IAAM+U,EACfoe,GAAKntB,EAAI/T,GAAKgvJ,EAAQ,EACbj7I,IAAM+O,IACfoe,GAAKlhC,EAAI+N,GAAKihJ,EAAQ,IAGxB9tH,EAAI79B,KAAK+3D,MAAU,GAAJl6B,IAEP,IACNA,GAAK,KASA,CAAEA,EAAC,EAAEjgC,EALFoC,KAAK+3D,MAAsC,KAAvB,IAARt4C,EAAY,EAAIksI,EAAQlsI,IAK/BnL,EAFLtU,KAAK+3D,MAAOt4C,ElB5BK,IkB4BkB,MDtBvC,QAAEoe,EAAA,EAAAA,EAAGjgC,EAAA,EAAAA,EAAG0W,EAAA,EAAAA,EACRkvD,EAAMy1I,GAAQt8M,EAAG+N,EAAGgG,GAI1B,MAAO,CAAED,EAAC,EAAEC,EAAC,EAAEhG,EAAC,EAAEmzB,EAAC,EAAE2lC,IAAG,EAAE7mE,EAAC,EAAEiB,EAAC,EAAEwc,IAHpBi/L,GAAiB18M,EAAG+N,EAAGgG,EAAGD,EAAG+yD,GAGJlvD,EAAC,EAAEvX,EjBRX,IiBMD0T,GEAxB,SAAU4rM,GAAmBC,GACjC,IAAM/1L,EAAQ80L,GAASiB,GAEvB,GAAK/1L,EAIL,cACK41L,GAAiB51L,IAAO,CAC3BnM,IAAKkiM,ICbH,SAAUC,GAAQh2L,EAAe9V,GACrC,cACK8V,GAAK,CACR9V,EAAC,EACD1T,EpBN2B,IoBMN0T,EACrB2J,IAAKi/L,GAAiB9yL,EAAM5pB,EAAG4pB,EAAM7b,EAAG6b,EAAM7V,EAAGD,EAAG8V,EAAMi9C,OCLxD,SAAUg5I,GAAQj2L,EAAexpB,GACrC,IAAM0T,ErBHuB,IqBGD1T,EAC5B,cACKwpB,GAAK,CACRxpB,EAAC,EACD0T,EAAC,EACD2J,IAAKi/L,GAAiB9yL,EAAM5pB,EAAG4pB,EAAM7b,EAAG6b,EAAM7V,EAAGD,EAAG8V,EAAMi9C,OCkC9D,IAAM,GAAgB8jF,KAEhBm1D,GAAuC,CAAC,MAAO,IAAK,IAAK,IAAK,IAAK,KA6WzE,SAASC,GAAmBn0L,GAClB,IAAAhC,EAAA,EAAAA,MACR,MAAwB,kBAAVA,EAAqB81L,GAAmB91L,GAASA,EC/Z1D,ICIMo2L,GAA0Dp2D,GFiDvE,YA8BE,WAAYh+H,GAAZ,MACE,YAAMA,IAAM,KAkMN,EAAAq0L,aAAe,SAACpvD,EAAmCjnI,GACzD,EAAKkzL,aAAajsD,EAAIjnI,IAGhB,EAAAs2L,YAAc,SAACrvD,EAAmC3vH,GACxD,EAAK47K,aAAajsD,EGlRhB,SAAkBjnI,EAAesX,GAC/B,oBAAElhC,EAAA,EAAAA,EAAG+N,EAAA,EAAAA,EAAGgG,EAAA,EAAAA,EACR8yD,EAAMy1I,GAAQt8M,EAAG+N,EAAGgG,GAE1B,cACK6V,GAAK,CACRsX,EAAC,EACDlhC,EAAC,EACD+N,EAAC,EACDgG,EAAC,EACD8yD,IAAG,EACHppD,IAAKi/L,GAAiB18M,EAAG+N,EAAGgG,EAAG6V,EAAM9V,EAAG+yD,KHuQlBs5I,CAAQ,EAAKptM,MAAM6W,MAAOsX,KAI1C,EAAAk/K,aAAe,SAACvvD,EAAmC1wJ,GACzD,IAAMuoF,EAAmC,iBAAzB,EAAK98D,MAAMy0L,UAA+BR,GAAUD,GACpE,EAAK9C,aAAajsD,EAAInoE,EAAQ,EAAK31E,MAAM6W,MAAOvmB,KAAK+3D,MAAMj7D,MA0DrD,EAAA4+C,QAAU,SAACxxB,G,MACX,UAAE3D,EAAA,EAAAA,MAAO02L,EAAA,EAAAA,aACf,GAAKA,EAAL,CAKQ,II7Vez5I,EJ6Vf1mE,EAAA,EAAAA,MAAOwV,EAAA,EAAAA,UACT4qM,EAAsB,QAAd5qM,EACRyoM,EAAwB,MAAdzoM,EACV6qM,EAA+B,MAAd7qM,EACjBwR,EAAYo5L,EtB/VQ,EAIC,EsB4V3B,GAAIpgN,EAAM+D,QAAUijB,IAAco5L,IAAUz9M,MAAM2f,OAAOtiB,KAAU,CAEjE,IAAI68M,OAAQ,EACZ,GAAIuD,EACFvD,EAAW0C,GAAmB,OItWX74I,EJsW4B1mE,IIrWzC0mE,EAAI3iE,O1BCY,E0BAnB,SAEL2iE,EAAI3iE,Q1BAoB,E0BCnB2iE,EAAI32D,UAAU,E1BDK,G0BGrB22D,EAAI32D,UAAU,E1BLO,UsBqWjB,GAAIkuM,GAAWoC,EAAgB,CAEpCxD,GADgBoB,EAAUwB,GAAUC,IACjBj2L,EAAOyyL,GAAM55L,OAAOtiB,GtB1WhB,WsB4WvB68M,EAAWwC,GK7Wb,SAAqB51L,GACzB,MAAO,CACL5pB,EAAGq8M,GAAMzyL,EAAM5pB,E3BJU,K2BKzB+N,EAAGsuM,GAAMzyL,EAAM7b,E3BLU,K2BMzBgG,EAAGsoM,GAAMzyL,EAAM7V,E3BNU,K2BOzBD,EAAsB,kBAAZ8V,EAAM9V,EAAiBuoM,GAAMzyL,EAAM9V,E3BJlB,K2BIwC8V,EAAM9V,GLyWnE2sM,CAAW,OACN72L,KAAK,MACPjU,GAAY8M,OAAOtiB,GAAM,MAMhC,EAAK28M,aAAavvL,EAAOyvL,QAIzB,EAAKl0H,SAAS,CAAEw3H,kBAAc7yM,MAvShCi+I,GAAuB,GAEvB,IAAMg1D,EAAU90L,EAAM80L,QAYlBA,EAAQC,KAEVx9L,GAAK,4GAGP,EAAKpQ,MAAQ,CACX6W,MAAOm2L,GAAmBn0L,IAAU8zL,GAAmB,YAGzD,EAAKkB,oBAAsB,GAC3B,IAAwB,UAAAd,GAAA,eAAoB,CAAvC,IAAMnqM,EAAS,KAClB,EAAKirM,oBAAoBjrM,GAAa,EAAKkrM,cAAcngN,KAAK,EAAMiV,GAGtE,IAAMmrM,EAAiBC,EAAgBlsM,aAAa6rM,Q,OAEpD,EAAKM,YAAc,CAEjBhhN,EAAG4rB,EAAMq1L,UAAYP,EAAQn7E,KAAOu7E,EAAev7E,IACnDx3H,EAAG6d,EAAMs1L,YAAcR,EAAQp6E,OAASw6E,EAAex6E,MACvDvyH,EAAG6X,EAAMu1L,WAAaT,EAAQ16E,MAAQ86E,EAAe96E,KACrDlyH,EAAG8X,EAAMw1L,YAAcV,EAAQW,OAASP,EAAeO,MACvDx6I,IAAKj7C,EAAM01L,UAAYZ,EAAQ75I,KAAOi6I,EAAej6I,IACrDzmE,EAAGsgN,EAAQa,cAAgBT,EAAeS,cAI5C,EAAKC,SAAQ,SACRV,GAAc,CAEjBW,eAAgB,EAAKT,YAAYltM,EACjC4tM,sBAAuB,EAAKV,YAAY5gN,IACrCsgN,G,EAuRT,OAtWqC,OAmFnC,sBAAW,oBAAK,C,IAAhB,WACE,OAAO1yM,KAAK+E,MAAM6W,O,gCAGb,YAAA+tF,mBAAP,SAA0Bq0C,EAAwCwG,GAEhE,GAAIxG,IAAch+I,KAAK4d,MAAO,CAC5B,IAAMhC,EAAQm2L,GAAmB/xM,KAAK4d,OAClChC,GACF5b,KAAK8uM,kBAAarvM,EAAWmc,KAK5B,YAAA9T,OAAP,sBACQ8V,EAAQ5d,KAAK4d,MACb80L,EAAU1yM,KAAKwzM,SACfG,EAAa3zM,KAAKgzM,YAEtBrkK,EAAA,EAAAA,MACA7kC,EAAA,EAAAA,UACAoQ,EAAA,EAAAA,OACAm4L,EAAA,EAAAA,UAEA,IAAAuB,yBAAA,mBAEMh4L,EAAA,WAAAA,MACFi4L,EAAgC,iBAAdxB,EAClByB,EAAkB,CAAC,MAAO,IAAK,IAAK,IAAKD,EAAkB,IAAM,KACjEE,EAAUF,EAAkBj4L,EAAMxpB,EAAIwpB,EAAM9V,EAC5CkuM,EAAUH,EAAkBF,EAAWvhN,EAAIuhN,EAAW7tM,EAEtD26C,EAAa,GAAcvmC,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACTuoM,UAAS,IAGL4B,EAAyB,CAACN,EAAW3hN,EAAG4pB,EAAM5pB,EAAG2hN,EAAW5zM,EAAG6b,EAAM7b,EAAG4zM,EAAW5tM,EAAG6V,EAAM7V,GAC7F6tM,GAAwC,kBAAZG,GAC/BE,EAAuBlgN,KAAKigN,EAAYD,EAAO,KAEjD,IAAM9oD,EAAYynD,EAAQwB,oBAAoB3qM,QAAQ,MAAO0qM,EAAuB7xM,KAAK,MAEzF,OACE,uBAAK0H,UAAW22C,EAAWltD,KAAMuhC,KAAK,QAAO,aAAam2H,GACxD,uBAAKnhJ,UAAW22C,EAAW0zJ,OACzB,gBAACxE,GAAc,CACb/zL,MAAOA,EACPxB,SAAUpa,KAAKiyM,aACfhnD,UAAWynD,EAAQ0B,YACnB9/B,gBAAiBo+B,EAAQ2B,kBACzB9E,gBAAiBmD,EAAQ4B,kBACzBxqM,UAAW22C,EAAW8zJ,iBAExB,uBAAKzqM,UAAW22C,EAAW8gI,eACzB,uBAAKz3K,UAAW22C,EAAW+zJ,YACzB,gBAAChE,GAAW,CACV1mM,UAAU,SACV/F,KAAK,MAELknJ,UAAWynD,EAAQC,KAAOD,EAAQ+B,aAClCtiN,MAAOypB,EAAMsX,EACb9Y,SAAUpa,KAAKkyM,eAEf0B,GACA,gBAACpD,GAAW,CACV1mM,UAAU,WACV/F,KAAMsuM,EACNpnD,UAAW4oD,EAAkBnB,EAAQgB,sBAAwBhB,EAAQe,eACrEzD,aAAcp0L,EAAMi9C,IACpB1mE,MAAO4hN,EACP35L,SAAUpa,KAAKoyM,gBAIpBx0L,EAAM82L,aACL,uBAAK5qM,UAAW22C,EAAWk0J,gBACzB,uBACE7qM,UAAW22C,EAAWm0J,YAAc,cACpCj8L,MAAO,CACLoyB,gBAAiBnvB,EAAMnM,SASjC,yBAAO3F,UAAW22C,EAAWr8B,MAAO0Q,KAAK,QAAQ+/K,YAAY,IAAIC,YAAY,KAC3E,6BACE,sBAAIhrM,UAAW22C,EAAWs0J,aACxB,sBAAIjrM,UAAW22C,EAAWu0J,cAAerB,EAAW96I,KACpD,0BAAK86I,EAAW3hN,GAChB,0BAAK2hN,EAAW5zM,GAChB,0BAAK4zM,EAAW5tM,IACd6tM,GAAqB,sBAAI9pM,UAAW22C,EAAWw0J,gBAAiBjB,KAGtE,6BACE,0BACGF,EAAgB51M,KAAI,SAACg3M,GACpB,MAAc,MAATA,GAAyB,MAATA,IAAiBtB,EAIpC,sBAAInhN,IAAKyiN,GACP,gBAACjlB,GAAS,CACRnmL,UAAW22C,EAAWpqC,MACtB+D,SAAU,EAAKw4L,oBAAoBsC,GACnCz7L,OAAQ,EAAKs3B,QACb5+C,MAAO,EAAKgjN,iBAAiBD,GAC7B16L,YAAY,EACZywI,UAAW0oD,EAAWuB,GAAK,YACP,QAATA,EAAiB,iBAAcz1M,EAC1C6a,aAAa,SAZV,cAyBjB,YAAA66L,iBAAR,SAAyBxtM,GACjB,iBAAEiU,EAAA,EAAAA,MAAO02L,EAAA,EAAAA,aACf,OAAIA,GAAgBA,EAAa3qM,YAAcA,EACtC2qM,EAAangN,MAEJ,QAAdwV,EACKiU,EAAMjU,IAAc,GACU,kBAArBiU,EAAMjU,IAA4B7S,MAAM8mB,EAAMjU,IAGzD,GAFEqN,OAAO4G,EAAMjU,KAmBhB,YAAAkrM,cAAR,SAAsBlrM,EAA2B4X,EAA0C+gC,G,MACnF1kC,EAAQ5b,KAAK+E,MAAM6W,MACnB22L,EAAsB,QAAd5qM,EACRyoM,EAAwB,MAAdzoM,EACV6qM,EAA+B,MAAd7qM,EAKvB,GAJA24C,GAAYA,GAAY,IAAIjwB,OAAO,EAAGkiL,EtBhSZ,EAIC,IsB+RHA,EAAQtE,GAAYC,IACvB9sM,KAAKk/C,GAoB1B,GAdiB,KAAbA,IAGOiyJ,EtB7Se,IsBiTdjyJ,EAASpqD,OACVk6M,GAAWoC,EACV/9L,OAAO6rC,ItBxTQ,IsB0Tf7rC,OAAO6rC,ItB7TM,KsBoUlB,GAAItrC,OAAO4G,EAAMjU,MAAgB24C,EAIlCtgD,KAAK+E,MAAMutM,cACbtyM,KAAK86E,SAAS,CAAEw3H,kBAAc7yM,QAE3B,CAEL,IAAMuvM,EAAWuD,EACbb,GAAmB,IAAMpxJ,GACzBkyJ,EACAX,GAAQj2L,EAAOnH,OAAO6rC,IACtBkxJ,GAAiB,EAAD,KACX51L,KAAK,MAEPjU,GAAY8M,OAAO6rC,GAAS,KAEnCtgD,KAAK8uM,aAAavvL,EAAOyvL,QAnBzBhvM,KAAK86E,SAAS,CAAEw3H,aAAc,CAAE3qM,UAAS,EAAExV,MAAOmuD,MAkE9C,YAAAwuJ,aAAR,SAAqBjsD,EAAmDmsD,GACtE,GAAKA,EAAL,CAIM,iBAAEpzL,EAAA,EAAAA,MAAO02L,EAAA,EAAAA,aAIf,GAFyBtD,EAAS97K,IAAMtX,EAAMsX,GAAK87K,EAASv/L,MAAQmM,EAAMnM,KAElD6iM,EAAc,CAGpC,GAAIzvD,GAAM7iJ,KAAK4d,MAAMxD,WACnBpa,KAAK4d,MAAMxD,SAASyoI,EAAImsD,GACpBnsD,EAAGzwD,kBACL,OAGJpyF,KAAK86E,SAAS,CAAEl/D,MAAOozL,EAAUsD,kBAAc7yM,OAlWrC,EAAAoH,aAA2C,CACvDwrM,UAAW,QACXK,QAAS,CACPwB,oBAAqB,8BACrBr7I,IAAK,MACL0+D,IAAK,MACLe,MAAO,QACPN,KAAM,OACNq7E,MAAO,QACPE,aAAc,eACdkB,aAAc,MACdL,YAAa,GAAmBvtM,aAAaokJ,UAC7CqpD,kBAAmB,GAAmBztM,aAAa0oM,gBACnD8E,kBAAmB,GAAmBxtM,aAAaytK,kBAwVzD,EAtWA,CAAqC,cCrDZ,SAAC12J,GAChB,IAAA9T,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAAO0jK,EAAA,EAAAA,UAE1B,MAAO,CACL9+M,KAAM,CACJ,iBACAo7C,EAAM80F,MAAM9T,OACZ,CACEz0G,SAAU,WACV0/H,SAAU,KAEZ9wI,GAEFqqM,MAAO,CACL,uBACA,CACEv7L,QAAS,SAGbwL,MAAO,CACL,uBACA,CACEgxL,YAAa,QACb15L,MAAO,OACPgrG,UAAW,CACT,8CAA+C,CAC7C5sG,aAAc,MAKtBi7L,YAAa,CACXpmK,EAAM80F,MAAMhU,MACZ,CACE/I,UAAW,CACTz2D,GAAI,CACFl2C,cAAe,MAKvBi7L,aAAc,CACZt5L,MAAO,OAGTu5L,eAA8B,iBAAd5C,GAAgC,CAC9C32L,MAAO,OAETk5L,YAAa,CACX,6BACA,CACEl5L,MAAO,GACPD,OAAQ,GACRS,OAAQ,YACRC,OAAQ,sBAGZolK,cAAe,CACbllK,QAAS,QAEXm4L,WAAY,CACV3nH,SAAU,KAEZ8nH,eAAgB,CACd9nH,SAAU,KAEZx2E,MAAO,CACL,uBACA,CACEqF,MAAO,OACPS,OAAQ,OACRf,UAAW,aACXK,OAAQ,GACRirG,UAAW,CACT,iBAAkB,CAChB5sG,aAAc,GAEhB,wBAAyB,CACvBotJ,SAAU,OACVtuJ,QAAS,EACTwiI,aAAc,mBCxEI37I,EAAW,CAAEu8I,MAAO,gBIU5C,SAAUq5D,GAAWC,GACnB,oBAACnjN,EAAA,KAAOooC,EAAA,KAGRg7K,EAAW,SAAapjN,GAExBqjN,EAAUllC,IAAS,WAAM,kBAC7B/1I,GAAS,GACTg7K,EAASr+L,SAAU,MAEfu+L,EAAWnlC,IAAS,WAAM,kBAC9B/1I,GAAS,GACTg7K,EAASr+L,SAAU,MAEfwiB,EAAS42I,IAAS,WAAM,kBAAM,OAACilC,EAASr+L,QAAUu+L,IAAaD,QAErE,MAAO,CAACrjN,EAAO,CAAEqjN,QAAO,EAAEC,SAAQ,EAAE/7K,OAAM,ICxBtC,SAAUg8K,GAAS1/M,GAKvB,I,MAJI2/M,EAA+B,GAC7BC,EAAiBt7E,GAAYtkI,IAAWuU,SAGvCvU,IAAW4/M,EAAexvL,MAAM,CAErC,IAAsB,UAACpwB,EAAOgU,cAAe6Q,SAAvB,eAAmE,CAApF,IAAMysE,EAAO,KAEZA,IAAYtxF,GAAiE,UAApB,QAAnC,EAAAsxF,EAAQ7zE,aAAa,sBAAc,eAAE1J,gBAC7D4rM,EAAc5hN,KAAKuzF,GAIvB,IAAKtxF,EAAOgU,cACV,MAEFhU,EAASA,EAAOgU,cAQlB,OAJA2rM,EAAcv/M,SAAQ,SAAAia,GACpBA,EAAK/C,aAAa,cAAe,WAG5B,YAST,SAAoBqoM,GAClBA,EAAcv/M,SAAQ,SAAAia,GAEpBA,EAAK/C,aAAa,cAAe,YAXjCuoM,CAAWF,GACXA,EAAgB,ICvBpB,mBAcE,WAAmB/3L,GAAnB,MACE,YAAMA,IAAM,K,OAZN,EAAAwyI,MAAQ,cACR,EAAA0lD,aAAe,cACf,EAAAC,YAAc,cACd,EAAAC,WAAqB,EA0KrB,EAAAC,aAAe,SAACpzD,GAClB,EAAKjlI,MAAMpE,SACb,EAAKoE,MAAMpE,QAAQqpI,GAGrB,EAAKmzD,WAAY,GAGX,EAAAE,YAAc,SAACrzD,GACjB,EAAKjlI,MAAMnE,QACb,EAAKmE,MAAMnE,OAAOopI,GAGpB,IAAI3rD,EAAgB2rD,EAAG3rD,cACE,OAArB2rD,EAAG3rD,gBAMLA,EAAgB,EAAKy6D,eAAetrI,eAGjCkmI,GAAgB,EAAK6D,MAAMl5I,QAASggF,KACvC,EAAK8+G,WAAY,IAIb,EAAAG,oBAAsB,WAC5B,EAAKC,gBAAe,IAGd,EAAAC,mBAAqB,WAC3B,EAAKD,gBAAe,IAGd,EAAAA,eAAiB,SAACE,GACxB,IAAI,EAAK14L,MAAM5E,SAAf,CAIA,I1S/IF63G,EAGAm8B,E0S4IQupD,EAAiBD,IAAkB,EAAKN,UAC1C,EAAKD,YAAY7+L,QACjB,EAAK4+L,aAAa5+L,QAEtB,GAAI,EAAKk5I,MAAMl5I,QAAS,CACtB,IAAMs/L,EACJF,IAAkB,EAAKN,W1SrJ7BnlF,E0SsJ0B,EAAKu/B,MAAMl5I,a1SnJrC,KAAA81I,G0SmJmE,K1SnJnEA,GAAA,GAEOD,GACLl8B,E0SgJ4C0lF,E1S9I5CvpD,GACA,GACA,G0S4I2D,G1S1I3D,GACA,IA1CE,SACJn8B,EACA87B,EACAC,EACAI,GAEA,YAFA,IAAAA,OAAA,GAEOH,GACLh8B,EACA87B,EACAK,GACA,GACA,EACAJ,GACA,GACA,G0SsKQ6pD,CAAiB,EAAKrmD,MAAMl5I,QAASq/L,GAAe,GAAM,GAE5DC,IACE,EAAKE,UAAUF,GAGjB,EAAKp2L,QAELo2L,EAAcp2L,YA4Dd,EAAAu2L,gBAAkB,SAAC9zD,GACrB,EAAKjlI,MAAMigK,gBACb,EAAKjgK,MAAMigK,eAAeh7B,GAGxBA,EAAG7sJ,SAAW6sJ,EAAG9lF,eAAkB,EAAK25I,UAAU7zD,EAAG7sJ,UAGvD,EAAK4gN,oCAAsC/zD,EAAG7sJ,SAQ1C,EAAA6gN,kBAAoB,SAACh0D,GAC3B,IAAI,EAAKjlI,MAAM5E,UAIX89L,EAAcC,YAAY7gN,QAAU,IAAS4gN,EAAcC,YAAYD,EAAcC,YAAY7gN,OAAS,GAAI,CAChH,IAAMs/J,EAAiB,EAAK7D,eAAetrI,cAEtCkmI,GAAgB,EAAK6D,MAAMl5I,QAASs+I,KACvC,EAAKp1I,QACL,EAAK41L,WAAY,EACjBnzD,EAAGrjI,iBACHqjI,EAAG1/H,qBAKD,EAAA6zL,kBAAoB,SAACn0D,GAC3B,IAAI,EAAKjlI,MAAM5E,UAIX89L,EAAcC,YAAY7gN,QAAU,IAAS4gN,EAAcC,YAAYD,EAAcC,YAAY7gN,OAAS,GAAI,CAChH,IAAM+gN,EAAiBp0D,EAAG7sJ,OAEtBihN,IAAmB1qD,GAAgB,EAAK6D,MAAMl5I,QAAS+/L,KACzD,EAAK72L,QACL,EAAK41L,WAAY,EACjBnzD,EAAGrjI,iBACHqjI,EAAG1/H,qBAlUPu6H,GAAuB,G,EA0U3B,OA1VmC,OAmB1B,YAAA35C,kBAAP,WACE/jG,KAAKk3M,sBACLl3M,KAAKm3M,qBAAqBn3M,KAAK4d,QAE1B5d,KAAK4d,MAAM5E,UAAYhZ,KAAKowJ,MAAMl5I,SAAWlX,KAAK4d,MAAMw5L,2BAC3Dp3M,KAAKq3M,YAAc3B,GAAS11M,KAAKowJ,MAAMl5I,WAIpC,YAAAwsF,iCAAP,SAAwCgkD,GAC9B,IAAA4vD,EAAA,EAAAA,wBACJA,GAA2Bt3M,KAAKu3M,2CAA6CD,IAC/Et3M,KAAKu3M,yCAA2CD,GAGlDt3M,KAAKm3M,qBAAqBzvD,IAGrB,YAAA/9C,mBAAP,SAA0Bq0C,GACxB,IAAMw5D,OAC+B/3M,IAAnCu+I,EAAUy5D,sBAAqCz5D,EAAUy5D,qBACrDC,OACgCj4M,IAApCO,KAAK4d,MAAM65L,sBAAqCz3M,KAAK4d,MAAM65L,qBACvDE,OAAsCl4M,IAAvBu+I,EAAUhlI,UAAyBglI,EAAUhlI,SAC5D4+L,OAAsCn4M,IAAxBO,KAAK4d,MAAM5E,UAAyBhZ,KAAK4d,MAAM5E,UAE7Dw+L,GAA4BE,GAA6BC,IAAiBC,GAG9E53M,KAAKk3M,uBACAl3M,KAAKq3M,aAAer3M,KAAKowJ,MAAMl5I,SAAWlX,KAAK4d,MAAMw5L,2BACxDp3M,KAAKq3M,YAAc3B,GAAS11M,KAAKowJ,MAAMl5I,YAE/BsgM,IAA6BE,IAA8BC,GAAgBC,KAGrF53M,KAAK63M,0BACD73M,KAAKq3M,aACPr3M,KAAKq3M,gBAKJ,YAAA/qG,qBAAP,WAGKtsG,KAAK4d,MAAM5E,WACZhZ,KAAK4d,MAAM65L,sBACVlrD,GAAgBvsJ,KAAKowJ,MAAMl5I,QAASlX,KAAK2xJ,eAAetrI,gBAEzDrmB,KAAK63M,0BAIH73M,KAAK83M,uBACP93M,KAAK83M,uBACL93M,KAAK83M,0BAAuBr4M,GAG1BO,KAAK+3M,uBACP/3M,KAAK+3M,uBACL/3M,KAAK+3M,0BAAuBt4M,GAG1BO,KAAKq3M,aACPr3M,KAAKq3M,qBAIAr3M,KAAK42M,2CACL52M,KAAKu3M,0CAGP,YAAAzvM,OAAP,WACQ,iBAAEgC,EAAA,EAAAA,UAAW,IAAAkP,gBAAA,IAAW,GAAX,EAAkBy7I,EAAA,EAAAA,eAC/BC,EAAWlc,GAAqDx4I,KAAK4d,MAAO26H,IAE5Ey/D,EAAc,CAClB,eAAe,EACfr/L,MAAO,CACLqD,cAAe,OACfd,SAAU,SAEZia,SAAUnc,GAAY,EAAI,EAC1B,mBAAmB,GAGrB,OACE,2BACM07I,EAAQ,CACZ5qJ,UAAWA,EACXqQ,IAAKna,KAAKowJ,MAAK,kBACEqE,EACjBopB,eAAgB79K,KAAK22M,gBACrBn9L,QAASxZ,KAAKi2M,aACdx8L,OAAQzZ,KAAKk2M,cAEb,2BAAS8B,EAAW,CAAE79L,IAAKna,KAAK81M,aAAct8L,QAASxZ,KAAKm2M,uBAC3Dn2M,KAAK4d,MAAM/C,SACZ,2BAASm9L,EAAW,CAAE79L,IAAKna,KAAK+1M,YAAav8L,QAASxZ,KAAKq2M,wBAK1D,YAAAj2L,MAAP,WAEQ,iBAAE63L,EAAA,EAAAA,mCAAoCC,EAAA,EAAAA,uBAAwBC,EAAA,EAAAA,qBAEpE,GACEF,GACAj4M,KAAK42M,qCACLrqD,GAAgBvsJ,KAAKowJ,MAAMl5I,QAASlX,KAAK42M,qCAGzC52M,KAAKo4M,YAAYp4M,KAAK42M,yCANxB,CAUA,IAAMyB,EAC8B,kBAA3BH,EACHA,EACAA,GAA0BA,IAE5BI,EAA2C,KAE3Ct4M,KAAKowJ,MAAMl5I,UACuB,kBAAzBihM,EACTG,EAAuBt4M,KAAKowJ,MAAMl5I,QAAQqd,cAAc4jL,GAC/CA,EACTG,EAAuBH,EAAqBn4M,KAAKowJ,MAAMl5I,SAC9CmhM,IACTC,EAAuBt4M,KAAKowJ,MAAMl5I,QAAQqd,cAAc,IAAM8jL,IAI3DC,IACHA,EAAuBzrD,GACrB7sJ,KAAKowJ,MAAMl5I,QACXlX,KAAKowJ,MAAMl5I,QAAQ0c,YACnB,GACA,GACA,GACA,KAIF0kL,GACFt4M,KAAKo4M,YAAYE,KAIb,YAAAF,YAAR,SAAoBj6M,GACb6B,KAAK02M,UAAUv4M,IAClBywJ,GAAWzwJ,IAmEP,YAAA+4M,oBAAR,WACQ,iBAAEI,EAAA,EAAAA,wBAAyB,IAAAt+L,gBAAA,IAAW,GAAX,EAAkB,IAAAu/L,yBAAA,IAAoB,GAApB,EAE/Cv/L,IAIJ89L,EAAcC,YAAYhjN,KAAKiM,MAE/BA,KAAKu3M,yCAA2CD,GAE3Ct3M,KAAK2xJ,eAAetrI,cACpBkyL,GAAsBhsD,GAAgBvsJ,KAAKowJ,MAAMl5I,QAASlX,KAAKu3M,2CAClEv3M,KAAKogB,UAID,YAAAy3L,wBAAR,sBACUW,EAAA,WAAAA,uBAER1B,EAAcC,YAAcD,EAAcC,YAAYphN,QAAO,SAACxD,GAC5D,OAAO,IAASA,KAGlB,IAAM+xH,EAAMlkH,KAAK2xJ,eACXtrI,EAAgB69F,EAAI79F,cAEvBmyL,IACDx4M,KAAKu3M,0CAC0D,oBAAxDv3M,KAAKu3M,yCAAyCn3L,QACpDmsI,GAAgBvsJ,KAAKowJ,MAAMl5I,QAASmP,IAAkBA,IAAkB69F,EAAI99F,MAE7EpmB,KAAKo4M,YAAYp4M,KAAKu3M,2CAIlB,YAAAJ,qBAAR,SAA6B/xD,GACnB,QAAAqzD,mCAAA,SAAqC,IAAAhB,4BAAA,IAAuB,GAAvB,EAEzCA,IAAyBz3M,KAAK+3M,qBAChC/3M,KAAK+3M,qBAAuB9lL,GAAG/xB,OAAQ,QAASF,KAAK62M,mBAAmB,IAC9DY,GAAwBz3M,KAAK+3M,uBACvC/3M,KAAK+3M,uBACL/3M,KAAK+3M,0BAAuBt4M,GAGzBg5M,GAAgCz4M,KAAK83M,qBAE/BW,GAA+Bz4M,KAAK83M,uBAC7C93M,KAAK83M,uBACL93M,KAAK83M,0BAAuBr4M,GAH5BO,KAAK83M,qBAAuB7lL,GAAG/xB,OAAQ,QAASF,KAAKg3M,mBAAmB,IAmBpE,YAAAN,UAAR,SAAkBv4M,GAChB,OAAOA,IAAY6B,KAAK81M,aAAa5+L,SAAW/Y,IAAY6B,KAAK+1M,YAAY7+L,SAqCvE,YAAAy6I,aAAR,WACE,OAAOr3B,GAAYt6H,KAAKowJ,MAAMl5I,UAvVjB,EAAA6/L,YAA+B,GAyVhD,EA1VA,CAAmC,aCbtBxsF,GAAoBF,GAE3B,GAAmB,CACvB92H,KAAM,WACNmlN,KAAM,iBACNv/I,kBAAmB,6BACnBw/I,OAAQ,UACRC,MAAO,kBCCH,GAAgBj8D,KAEtB,eAGE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,KAEZ8/H,GAAuB,GACf,cAAAm7D,4BAAA,S,OACR,EAAKC,sBAAwBD,E,EAwBjC,OAhCiC,OAWxB,YAAA90G,kBAAP,YACG/jG,KAAK84M,uB1S+EJ,WACJ,IAAI50F,EAAMoW,KAENpW,GAAOA,EAAI99F,OAAS0oI,KACtB5qC,EAAI99F,KAAKhc,UAAUC,IAAI0kJ,IACvB7qC,EAAI99F,KAAKnV,iBAAiB,YAAas+I,GAAuB,CAAEJ,SAAS,EAAOh5I,SAAS,KAG3F24I,K0SvFiCiqD,IAG1B,YAAAzsG,qBAAP,YACGtsG,KAAK84M,uB1S2FJ,WACJ,GAAIhqD,GAA2B,EAAG,CAChC,IAAI5qC,EAAMoW,KAENpW,GAAOA,EAAI99F,MAAqC,IAA7B0oI,KACrB5qC,EAAI99F,KAAKhc,UAAUyoB,OAAOk8H,IAC1B7qC,EAAI99F,KAAKD,oBAAoB,YAAaopI,KAG5CT,M0SpG+BkqD,IAG1B,YAAAlxM,OAAP,WACQ,iBAAEyjB,EAAA,EAAA0tL,aAAsBnvM,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAAOz0B,EAAA,EAAAA,OAE1Cw6I,EAAWlc,GAAqDx4I,KAAK4d,MAAO26H,IAE5E93F,EAAa,GAAcvmC,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACTyhB,OAAM,IAGR,OAAO,2BAASmpI,EAAQ,CAAE5qJ,UAAW22C,EAAWltD,SAEpD,EAhCA,CAAiC,aCV3B,GAAmB,CACvBA,KAAM,aACN2lN,SAAU,oBCCCC,GAAkDv9D,GAI7D,IDFuB,SAACh+H,G,MAChB9T,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAAOq6G,EAAA,EAAAA,OAAQz9H,EAAA,EAAAA,OAE1Bg4G,EAAA,EAAAA,QAEF9iF,EAAa8yE,GAAoB,GAAkB5kF,GAEzD,MAAO,CACLp7C,KAAM,CACJktD,EAAWltD,KACXo7C,EAAM80F,MAAM9T,OACZ,CACE5kF,gBAAiBw4F,EAAQxM,mBACzBx7G,IAAK,EACLkY,MAAO,EACP/R,OAAQ,EACRlG,KAAM,EACNN,SAAU,WAEVwrG,WAAS,KACP,EAAC+J,IAAuB,CACtBt0G,OAAQ,uBACR6uB,QAAS,GAEZ,IAGHg+G,GAAU,CACRznG,WAAY,UAGdh2B,GAAU,CACRk1B,EAAWy4J,SACX,CACEnuK,gBAAiBw4F,EAAQvN,qBAI7BlsH,WCpCoBrK,EAAW,CACnCu8I,MAAO,YCJI,GAAgBtpB,IAC3B,SAAC5oH,EAAmBsvM,GAClB,MAAO,CACL7lN,KAAMguH,GACJz3G,EACAsvM,GAAc,CACZC,YAAa,OACb3yF,UAAW,CACT,MAAO,CACL+4D,WAAY,eCLpB65B,GACG,CACL9kM,MAAO,aACPwjD,KAAM,YACNqU,KAAM,YAJJitI,GAMG,CACL9kM,MAAO,YACPwjD,KAAM,YACNqU,KAAM,WAQV,eAKE,WAAYzuD,GAAZ,MACE,YAAMA,IAAM,K,OAJN,EAAA27L,kBAAoBD,GACpB,EAAAnnL,QAA0B,GAgD1B,EAAA0e,aAAe,SAACtxB,GACtB,IAAM+3C,EAAe,WAAe+kB,KAAK,EAAKz+D,MAAM/C,UAAkB+C,MAAM05C,YAM5E,OALIA,GACFA,EAAY/3C,GAGd,EAAKg6L,kBAAoBD,GAClB,EAAKE,aAAaj6L,IAGnB,EAAA+lK,WAAa,SAAC/lK,GACpB,IAAMqlJ,EAAa,WAAevoF,KAAK,EAAKz+D,MAAM/C,UAAkB+C,MAAMgnJ,UAM1E,OALIA,GACFA,EAAUrlJ,GAGZ,EAAKg6L,kBAAoBD,GAClB,EAAKG,YAAYl6L,IAGlB,EAAAm3J,cAAgB,SAACn3J,GACvB,IAAMu3J,EAAgB,WAAez6F,KAAK,EAAKz+D,MAAM/C,UAAkB+C,MAAMk5J,aAM7E,OALIA,GACFA,EAAav3J,GAGf,EAAKg6L,kBAAoBD,GAClB,EAAKE,aAAaj6L,IAGnB,EAAAm6L,YAAc,SAACn6L,GACrB,IAAMo6L,EAAc,WAAet9H,KAAK,EAAKz+D,MAAM/C,UAAkB+C,MAAM+7L,WACvEA,GACFA,EAAWp6L,GAGb,EAAKg6L,kBAAoBD,GACzB,EAAKG,YAAYl6L,IAGX,EAAAi6L,aAAe,SAACj6L,GAEtB,GAA4B,kBAAjBA,EAAMJ,QAAwC,IAAjBI,EAAMJ,OAC5C,OAAO,EAKT,KACG,EAAKvB,MAAMg8L,iBAAmB,EAAKC,iBAAiBt6L,EAAMvpB,OAAuB,EAAK4nB,MAAMg8L,iBAC5F,EAAKh8L,MAAMk8L,qBACV,EAAKD,iBAAiBt6L,EAAMvpB,OAAuB,EAAK4nB,MAAMk8L,sBAHlE,CAWA,EAAKC,SAAW,EAAKC,YAAYz6L,GAEjC,IAAMrE,EAAW,EAAK++L,oBAAoB16L,GAC1C,QAAiB9f,IAAbyb,EAAJ,CAIA,IAAMg/L,EAAW,EAAKC,4BAA4Bj/L,GAClD,EAAK0C,MAAMw8L,SAAW,EAAKx8L,MAAMw8L,QAAQ76L,EAAO26L,GAEhD,EAAKp/H,SAAS,CACZs+H,YAAY,EACZiB,aAAcn/L,IAKhB,EAAKiX,QAAU,CACbF,GAAG1nB,SAAS6b,KAAM,EAAKmzL,kBAAkBvhJ,KAAM,EAAKsiJ,SAAS,GAC7DroL,GAAG1nB,SAAS6b,KAAM,EAAKmzL,kBAAkBltI,KAAM,EAAKotI,aAAa,OAI7D,EAAAa,QAAU,SAAC/6L,GAEE,cAAfA,EAAMxb,MACRwb,EAAMC,iBAGR,IAAMtE,EAAW,EAAK++L,oBAAoB16L,GAC1C,GAAKrE,EAAL,CAKA,IAAMq/L,EAAc,EAAKC,uBAAuB,EAAKL,4BAA4Bj/L,IAC3Eu/L,EAAkBF,EAAYr/L,SAEpC,EAAK0C,MAAM88L,cAAgB,EAAK98L,MAAM88L,aAAan7L,EAAOg7L,GAE1D,EAAKz/H,SAAS,CACZ5/D,SAAUu/L,EACVJ,aAAcn/L,MAIV,EAAAu+L,YAAc,SAACl6L,GACrB,GAAK,EAAKxa,MAAMq0M,WAAhB,CAIA,IAAMl+L,EAAW,EAAK++L,oBAAoB16L,GAC1C,GAAKrE,EAAL,CAIA,IAAMy/L,EAAe,EAAKR,4BAA4Bj/L,GAGtD,EAAK4/D,SAAS,CACZs+H,YAAY,EACZiB,kBAAc56M,IAGhB,EAAKme,MAAMg9L,QAAU,EAAKh9L,MAAMg9L,OAAOr7L,EAAOo7L,GAE1C,EAAK/8L,MAAM1C,UACb,EAAK4/D,SAAS,CACZ5/D,SAAU,EAAK0C,MAAM1C,WAKzB,EAAKiX,QAAQ/7B,SAAQ,SAAA0pJ,GAAW,OAAAA,UA/KhC,EAAK/6I,MAAQ,CACXq0M,YAAY,EACZl+L,SAAU,EAAK0C,MAAM1C,UAAY,CAAE6P,EAAG,EAAGwI,EAAG,GAC5C8mL,kBAAc56M,G,EAwSpB,OAnTmC,OAe1B,YAAAkqG,mBAAP,SAA0Bq0C,IACpBh+I,KAAK4d,MAAM1C,UAAc8iI,EAAU9iI,UAAYlb,KAAK4d,MAAM1C,WAAa8iI,EAAU9iI,UACnFlb,KAAK86E,SAAS,CAAE5/D,SAAUlb,KAAK4d,MAAM1C,YAIlC,YAAAoxF,qBAAP,WACEtsG,KAAKmyB,QAAQ/7B,SAAQ,SAAA0pJ,GAAW,OAAAA,QAG3B,YAAAh4I,OAAP,WACE,IAAMkyC,EAAa,WAAeqiC,KAAKr8E,KAAK4d,MAAM/C,UAC1C+C,EAAA,EAAAA,MACA1C,EAAA,WAAAA,SACF,aAAE,IAAAA,SAAyBk+L,EAAA,EAAAA,WAC7BruL,EAAI8vL,EAAc9vL,EAClBwI,EAAIsnL,EAActnL,EAOtB,OALIrY,IAAak+L,IACfruL,EAAI7P,EAAS6P,EACbwI,EAAIrY,EAASqY,GAGR,eAAmBymB,EAAO,CAC/BrhC,MAAO,EAAF,KACAiF,EAAMjF,OAAK,CACd8nB,UAAW,aAAa1V,EAAC,OAAOwI,EAAC,QAEnCzpB,UAAW,GAAc8T,EAAM9T,UAAW9J,KAAK+E,MAAMq0M,YAAY7lN,KACjE+jE,YAAat3D,KAAK6wC,aAClB+zH,UAAW5kK,KAAKslL,WAChBxO,aAAc92K,KAAK02K,cACnBijC,WAAY35M,KAAK05M,eA+Ib,YAAAO,oBAAR,SAA4B16L,GAC1B,IAAMu7L,EAAW96M,KAAK+6M,gBAAgBx7L,GAGtC,QAAsB9f,IAAlBO,KAAK+5M,UAA2Be,EAApC,CAIA,IAAME,EAAmBF,GAAYv7L,EACrC,MAAO,CACLwL,EAAGiwL,EAAiBhkH,QACpBzjE,EAAGynL,EAAiB/jH,WAQhB,YAAA8jH,gBAAR,SAAwBx7L,GACtB,OACGA,EAAMo9E,eAAiB38F,KAAKi7M,sBAAsB17L,EAAMo9E,gBACxDp9E,EAAMka,gBAAkBz5B,KAAKi7M,sBAAsB17L,EAAMka,iBAQtD,YAAAugL,YAAR,SAAoBz6L,GAClB,IAAM27L,EACH37L,EAAMo9E,eAAiBp9E,EAAMo9E,cAAc,IAAQp9E,EAAMka,gBAAkBla,EAAMka,eAAe,GAEnG,GAAIyhL,EACF,OAAOA,EAAMn1I,YAOT,YAAA8zI,iBAAR,SAAyB17M,EAA6BsO,GACpD,IAAKtO,GAAWA,IAAYoM,SAAS6b,KACnC,OAAO,EAGT,IAAM+0L,EACFh9M,EAAQ8U,SAAW9U,EAAQgV,uBAA0BhV,EAAgB+U,kBAEzE,QAAKioM,IAIEA,EAAkB9pN,KAAK8M,EAASsO,IAAazM,KAAK65M,iBAAiB17M,EAAQ6L,cAAeyC,KAO3F,YAAAwuM,sBAAR,SAA8BG,GAC5B,QAAsB37M,IAAlBO,KAAK+5M,SAIT,IAAK,IAAI7oN,EAAI,EAAGA,EAAIkqN,EAAUllN,OAAQhF,IACpC,GAAIkqN,EAAUlqN,GAAG60E,aAAe/lE,KAAK+5M,SACnC,OAAOqB,EAAUlqN,IAWf,YAAAipN,4BAAR,SAAoCj/L,GAC1B,IAAAm/L,EAAA,WAAAA,aAIR,YAAqB56M,IAAjB46M,EACK,CACLr5D,MAAO,CAAEj2H,EAAG,EAAGwI,EAAG,GAClB8mL,aAAcn/L,EACdA,SAAQ,GAIL,CACL8lI,MAAO,CACLj2H,EAAG7P,EAAS6P,EAAIsvL,EAAatvL,EAC7BwI,EAAGrY,EAASqY,EAAI8mL,EAAa9mL,GAE/B8mL,aAAY,EACZn/L,SAAQ,IAQJ,YAAAs/L,uBAAR,SAA+BG,GACrB,IAAAz/L,EAAA,WAAAA,SACR,MAAO,CACLA,SAAU,CACR6P,EAAG7P,EAAS6P,EAAI4vL,EAAa35D,MAAMj2H,EACnCwI,EAAGrY,EAASqY,EAAIonL,EAAa35D,MAAMztH,GAErCytH,MAAO25D,EAAa35D,MACpBq5D,aAAcn/L,IAGpB,EAnTA,CAAmC,aCF7BmgM,GAAiC,CACrC7wC,sBAAsB,GAgBlB,GAAgB7tB,KCrCT2+D,GAA8C1/D,GDyC3D,YAqBE,WAAYh+H,GAAZ,MACE,YAAMA,IAAM,KAZN,EAAA29L,eAAiB,cAwPjB,EAAAC,8BAAgC,W,MAChCC,EAAalxM,SAASgqB,cAAc,YAAY,EAAKxvB,MAAM5M,GAAE,KAEnE,GAAIsjN,EAAY,CACd,IAAMC,EAAiBD,EAAWp6L,0BACR,QAAtB,IAAKzD,MAAM+9L,mBAAW,eAAEC,eAAiB,EAAKC,qBAAwB,EAAKC,sBAC7E,EAAKD,oBAAsB,CAAE9wL,GAAI2wL,EAAe3wL,EAAGwI,GAAImoL,EAAenoL,GACtE,EAAKuoL,oBAAsB,CAAE/wL,EAAG2wL,EAAe3wL,EAAGwI,EAAGmoL,EAAenoL,IAGtE,EAAKunD,SAAS,CACZihI,kBAAmBL,EAAengM,QAwChC,EAAAygM,oBAAsB,SAACC,GACzBA,EACE,EAAKnD,sBACPxpD,GAAyB2sD,EAAK,EAAK9pL,SAEnC68H,GAAqBitD,EAAK,EAAK9pL,SAGjC,EAAKA,QAAQC,IAAI,EAAK8pL,oBAExB,EAAKA,mBAAqBD,GAGpB,EAAAE,yBAA2B,WACjC,EAAKrhI,SAAS,CAAEshI,iBAAiB,KAG3B,EAAAC,cAAgB,WACtB,EAAKC,UAAY,EACjB,EAAKC,UAAY,EAEjB,EAAKzhI,SAAS,CACZshI,iBAAiB,EACjBI,sBAAsB,EACtB7D,QAAQ,EACR5tL,EAAG,EACHwI,EAAG,IAGD,EAAK3V,MAAM+9L,aAAe,EAAKc,qBACjC,EAAKtqL,QAAQC,IAAIlyB,OAAQ,QAAS,EAAK6lB,UAAU,GAI/C,EAAKnI,MAAM8+L,aACb,EAAK9+L,MAAM8+L,eAIP,EAAAlD,aAAe,WACrB,EAAK1+H,SAAS,CAAEshI,iBAAiB,EAAOI,sBAAsB,KAGxD,EAAAlC,QAAU,SAAC97M,EAAkE2sG,GAC7E,cAAEpgF,EAAA,EAAAA,EAAGwI,EAAA,EAAAA,EACX,EAAKunD,SAAS,EAAK6hI,oBAAoB,CAAE5xL,EAAGA,EAAIogF,EAAG61C,MAAMj2H,EAAGwI,EAAGA,EAAI43E,EAAG61C,MAAMztH,MAGtE,EAAAkmL,YAAc,WACpB,EAAKr5L,SAGC,EAAA2F,SAAW,SAACxG,GAKdA,EAAM8mC,QAAU9mC,EAAMizB,SAAWjzB,EAAMyG,UAAYovH,IAGjDmX,GAAgB,EAAK2vD,mBAAoB38L,EAAMvpB,UACjD,EAAK8kF,SAAS,CAAEshI,iBAAkB,EAAKr3M,MAAMq3M,kBAC7C78L,EAAMC,iBACND,EAAM4D,oBAOJ,EAAAgsB,WAAa,SAAC5vB,GACpB,GAAIA,EAAM8mC,QAAU9mC,EAAMizB,SAAWjzB,EAAMyG,UAAYovH,GAIrD,OAFA71H,EAAMC,sBACND,EAAM4D,kBAcR,GAVI,EAAKpe,MAAMq3M,kBAAoB78L,EAAM8mC,QAAU9mC,EAAMyG,UAAYovH,KACnE,EAAKt6D,SAAS,CAAEshI,iBAAiB,KAG/B,EAAKr3M,MAAMy3M,sBAAyBj9L,EAAMyG,UAAYovH,IAAmB71H,EAAMyG,UAAYovH,KAC7F,EAAKt6D,SAAS,CAAE0hI,sBAAsB,IACtCj9L,EAAMC,iBACND,EAAM4D,mBAGJ,EAAKpe,MAAMy3M,qBAAsB,CACnC,IAAII,GAAe,EACb57D,EAAQ,EAAK67D,cAAct9L,GAEjC,OAAQA,EAAMyG,SAEZ,KAAKovH,GACH,EAAKt6D,SAAS,CAAE/vD,EAAG,EAAKuxL,UAAW/oL,EAAG,EAAKgpL,YAC7C,KAAKnnE,GAGH,EAAKknE,UAAY,EACjB,EAAKC,UAAY,EACjB,EAAKzhI,SAAS,CAAE0hI,sBAAsB,IACtC,MAEF,KAAKpnE,GACH,EAAKt6D,SAAS,CACZvnD,EAAG,EAAKupL,qBAAqB,EAAK/3M,MAAMwuB,EAAIytH,KAE9C,MAEF,KAAK5L,GACH,EAAKt6D,SAAS,CACZvnD,EAAG,EAAKupL,qBAAqB,EAAK/3M,MAAMwuB,EAAIytH,KAE9C,MAEF,KAAK5L,GACH,EAAKt6D,SAAS,CACZ/vD,EAAG,EAAKgyL,qBAAqB,EAAKh4M,MAAMgmB,EAAIi2H,KAE9C,MAEF,KAAK5L,GACH,EAAKt6D,SAAS,CACZ/vD,EAAG,EAAKgyL,qBAAqB,EAAKh4M,MAAMgmB,EAAIi2H,KAE9C,MAEF,QACE47D,GAAe,EAIfA,IACFr9L,EAAMC,iBACND,EAAM4D,qBAkBJ,EAAA65L,yBAA2B,WACjC,EAAKV,UAAY,EAAKv3M,MAAMgmB,EAC5B,EAAKwxL,UAAY,EAAKx3M,MAAMwuB,EAC5B,EAAKunD,SAAS,CAAE0hI,sBAAsB,EAAMJ,iBAAiB,IAC7D,EAAKjqL,QAAQF,GAAG/xB,OAAQ,UAAW,EAAKivC,YAAY,IAG9C,EAAA8tK,wBAA0B,WAChC,EAAKX,UAAY,EACjB,EAAKC,UAAY,EACjB,EAAKzhI,SAAS,CAAE0hI,sBAAsB,IACtC,EAAKrqL,QAAQC,IAAIlyB,OAAQ,UAAW,EAAKivC,YAAY,IAG/C,EAAA+tK,kBAAoB,WACrB,EAAKT,sBACR,EAAKtqL,QAAQF,GAAG/xB,OAAQ,QAAS,EAAK6lB,UAAU,GAChD,EAAK02L,qBAAsB,IAvc7B,EAAK38C,OAAS,IAAI,GAAM,GACxB,EAAK3tI,QAAU,IAAI,GAAW,GAC9BurH,GAAuB,GAMvB,EAAK34I,MAAQ,CACX5M,GAAI8lJ,GAAM,SACV06D,OAAQ/6L,EAAM+6L,OACdxwJ,UAAWvqC,EAAM+6L,OACjBwE,cAAev/L,EAAM+6L,OACrB5tL,EAAG,EACHwI,EAAG,GAGL,EAAK+oL,UAAY,EACjB,EAAKC,UAAY,EAET,cAAA1D,4BAAA,S,OACR,EAAKC,sBAAwBD,E,EAqbjC,OAle+B,OAgDtB,YAAAn1G,iCAAP,SAAwC0hD,GACtCjyH,aAAanzB,KAAKo9M,oBAGdh4D,EAASuzD,SACN34M,KAAK+E,MAAM4zM,OAYd34M,KAAK86E,SAAS,CACZqiI,eAAe,EACfh1J,WAAW,KAZbnoD,KAAK86E,SAAS,CACZ69H,QAAQ,IAGNvzD,EAASu2D,aACX37M,KAAKk9M,uBAaN93D,EAASuzD,QAAU34M,KAAK+E,MAAM4zM,SACjC34M,KAAKo9M,mBAAqBp9M,KAAK8/J,OAAOpuJ,WAAW1R,KAAKq8M,cAA+C,IAAhC38I,WAAW6qD,KAChFvqH,KAAK86E,SAAS,CACZ3yB,WAAW,MAKV,YAAA47C,kBAAP,sBAGM/jG,KAAK+E,MAAM4zM,QAAU34M,KAAK+E,MAAMojD,YAClCnoD,KAAKk9M,oBACLzrM,uBAAsB,WAAM,OAAAC,WAAW,EAAK8pM,8BAAhB,QAIzB,YAAA7xG,mBAAP,SAA0Bq0C,EAAwBwG,GAAlD,WACOxG,EAAU26D,QAAWn0D,EAAUr8F,WAClCnoD,KAAK86E,SAAS,CACZ3yB,WAAW,KAGV61F,EAAU26D,QAAU34M,KAAK4d,MAAM+6L,QAClClnM,uBAAsB,WAAM,OAAAC,WAAW,EAAK8pM,8BAAhB,OAIzB,YAAAlvG,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,UACZ9/I,KAAKmyB,QAAQ2tH,WAGR,YAAAh4I,OAAP,WACQ,iBACJgC,EAAA,EAAAA,UACAuzM,EAAA,EAAAA,mBACAC,EAAA,EAAAA,2BACAhG,EAAA,EAAAA,wBACAY,EAAA,EAAAA,uBACAT,EAAA,EAAAA,qBACAe,EAAA,EAAAA,uBACA+E,EAAA,EAAAA,WACA9E,EAAA,EAAAA,4BACA+E,EAAA,EAAAA,cACA59C,EAAA,EAAAA,UACAyL,EAAA,EAAAA,WACAx1F,EAAA,EAAAA,QACAwjF,EAAA,EAAAA,eACAokD,EAAA,EAAAA,YACAvjM,EAAA,EAAAA,OACAwjM,EAAA,EAAAA,eACA/uK,EAAA,EAAAA,MACAgvK,EAAA,EAAAA,eAEArzC,EAAA,EAAAA,gBACAszC,EAAA,EAAAA,WACAC,EAAA,EAAAA,QACAlC,EAAA,EAAAA,YACAvE,EAAA,EAAAA,yBAEI,aAAEuB,EAAA,EAAAA,OAAQxwJ,EAAA,EAAAA,UAAWg1J,EAAA,EAAAA,cAAepB,EAAA,EAAAA,kBAAmBhxL,EAAA,EAAAA,EAAGwI,EAAA,EAAAA,EAAGipL,EAAA,EAAAA,qBAEnE,IAAK7D,EACH,OAAO,KAGT,IAAMmF,OAAgCr+M,IAAf4rK,EAA2B,GAAKA,EAAWvhK,UAC5Di0M,EAAqB,OAAPF,QAAO,IAAPA,IAAYN,IAAeK,EAEzCn9J,EAAa,GAAcvmC,EAAQ,CACvCy0B,MAAOA,EACP7kC,UAAS,EACTuzM,mBAAkB,EAClBC,2BAA0B,EAC1B3E,OAAM,EACNxwJ,UAAS,EACTg1J,cAAa,EACbpB,kBAAiB,EACjB4B,eAAc,EACdC,WAAU,EACVE,eAAc,EACdE,oBAAqBrC,IAAgBA,EAAYsC,qBAG7CC,EAAmB,EAAH,OACjB7C,IACAr7M,KAAK4d,MAAMytJ,YAAU,CACxBf,gBAAiBe,GAAcA,EAAWf,gBAAkBe,EAAWf,gBAAkBA,EACzFD,YAAauzC,EACb9zM,UAAW22C,EAAWm4J,QAElBuF,EACJ,gBAAC,GAAa,WACHn+M,KAAK+E,MAAM5M,GACpB4lJ,aAAc/9I,KAAKu7M,eACnBzxM,UAAW22C,EAAWi4J,KACtBpB,wBAAyBA,EACzBmB,4BAA6BmF,GAAcnF,IAAgC8E,EAC3E/E,uBAAwBA,EACxBf,qBAAsBmG,GAAcA,EAAanG,EACjDS,uBAAwBA,EACxBD,oCAAoC,EACpCx+L,OAAQ+iM,EAAuBx8M,KAAKi9M,6BAA0Bx9M,EAC9D23M,yBAA0BA,GAEzBuE,GAAea,GACd,uBAAK1yM,UAAW22C,EAAW29J,2BACxBzC,EAAY0C,sBACX,gBAACnzD,GAAI,KAAKywD,EAAY0C,wBAEtB,gBAACnzD,GAAI,CAAC/lB,SAAS,OAAOr7H,UAAW22C,EAAW69J,oBAIlD,uBAAKnkM,IAAKna,KAAKg8M,oBAAqBlyM,UAAW22C,EAAW0Y,kBAAiB,sBAAsB,GAC9FwiJ,GAAe37M,KAAK+E,MAAMq3M,iBACzB,gBAACT,EAAYl9L,KAAI,CACfX,MAAO,CACL,CAAErrB,IAAK,OAAQ0Y,KAAMwwM,EAAY4C,iBAAkBhlM,QAASvZ,KAAKg9M,0BACjE,CAAEvqN,IAAK,QAAS0Y,KAAMwwM,EAAY6C,kBAAmBjlM,QAASvZ,KAAKq8M,gBAErEz8C,UAAW5/J,KAAKm8M,yBAChBzgD,iBAAiB,EACjBD,aAAa,EACb0B,gBAAiBtR,GACjB2P,sBAAsB,EACtBxH,oBAAoB,EACpBh+J,OAAQgK,KAAKk8M,qBAGhBl8M,KAAK4d,MAAM/C,WAMlB,OAAIw+I,GAAmBZ,GAAehpC,MAElC,gBAACqC,GAAK,KAAKosF,GACT,gBAAC,GAAK,CACJppL,KAAMipL,EAAc,cAAgB,SAAQ,cAC/BH,EACbnpD,eAAgBgpD,EAChBjpD,gBAAiBkpD,EACjB99C,UAAWA,EACXnK,oBAAqB+iD,GAErB,uBAAK1uM,UAAW22C,EAAWltD,KAAMuhC,KAAO8oL,OAA0Bn+M,EAAb,aACjDm+M,GACA,gBAACzE,GAAO,GACNF,aAAcuE,EACdjkM,QAASgkM,OAAa99M,EAAamgK,EACnCi5C,qBAAsB74M,KAAK84M,uBACvBjjI,IAGP8lI,EACC,gBAAC,GAAa,CACZ/B,eAAgB+B,EAAYsC,oBAAsB,IAAIx9J,EAAWi4J,KAAKv2M,MAAM,KAAK,GACjF23M,oBAAoB,SACpBM,QAASp6M,KAAKw5M,aACdkB,aAAc16M,KAAKs6M,QACnBM,OAAQ56M,KAAKy5M,YACbv+L,SAAU,CAAE6P,EAAGA,EAAGwI,EAAGA,IAEpB4qL,GAGHA,KAOL,MAGF,YAAA/9L,MAAP,WACMpgB,KAAKu7M,eAAerkM,SACtBlX,KAAKu7M,eAAerkM,QAAQkJ,SAuBxB,YAAAu8L,oBAAR,SAA4BzhM,GAC1B,OAAKlb,KAAK4d,MAAM+9L,aAAgB37M,KAAK4d,MAAM+9L,YAAYC,aAGhD,CAAE7wL,EAAG/qB,KAAK+8M,qBAAqB7hM,EAAS6P,GAAIwI,EAAGvzB,KAAK88M,qBAAqB5hM,EAASqY,IAFhFrY,GAKH,YAAA4hM,qBAAR,SAA6BvpL,GAC3B,IAAMkrL,EAAcz+M,KAAK67M,oBACnB6C,EAAc1+M,KAAK87M,oBAOzB,OANI2C,IACFlrL,EAAIl+B,KAAKyf,IAAI2pM,EAAYlrL,EAAGA,IAE1BmrL,IACFnrL,EAAIl+B,KAAK0f,IAAI2pM,EAAYnrL,EAAGA,IAEvBA,GAGD,YAAAwpL,qBAAR,SAA6BhyL,GAC3B,IAAM0zL,EAAcz+M,KAAK67M,oBACnB6C,EAAc1+M,KAAK87M,oBAOzB,OANI2C,IACF1zL,EAAI11B,KAAKyf,IAAI2pM,EAAY1zL,EAAGA,IAE1B2zL,IACF3zL,EAAI11B,KAAK0f,IAAI2pM,EAAY3zL,EAAGA,IAEvBA,GAgJD,YAAA8xL,cAAR,SAAsBt9L,GACpB,IAAIyhI,EAAQ,GASZ,OARIzhI,EAAM0D,SACH1D,EAAMizB,UACTwuG,EAAQ,IAEDzhI,EAAMizB,UACfwuG,EAAQ,GAGHA,GA1cK,EAAAn6I,aAA4B,CACxC8xM,QAAQ,EACR6E,eAAe,EACfD,YAAY,EACZzzM,UAAW,GACXuzM,mBAAoB,IANXsB,EAAS,GADrB1lD,IACY0lD,GAAb,CAA+B,cNlCN,SAAC/gM,G,MAEtB9T,EAAA,EAAAA,UACAuzM,EAAA,EAAAA,mBACAC,EAAA,EAAAA,2BACA3E,EAAA,EAAAA,OACAxwJ,EAAA,EAAAA,UACAg1J,EAAA,EAAAA,cACApB,EAAA,EAAAA,kBACAptK,EAAA,EAAAA,MACAgvK,EAAA,EAAAA,eACAC,EAAA,EAAAA,WACAE,EAAA,EAAAA,eACAE,EAAA,EAAAA,oBAEMz6E,EAAA,EAAAA,QAASrhC,EAAA,EAAAA,QAASuhC,EAAA,EAAAA,MAEpBhjF,EAAa8yE,GAAoB,GAAkB5kF,GAEzD,MAAO,CACLp7C,KAAM,CACJktD,EAAWltD,KACXkwI,EAAM9T,OACN,CACE5kF,gBAAiB,cACjB7vB,SAAU0iM,EAAa,WAAa,QACpCniM,OAAQ,OACRC,MAAO,OACPW,QAAS,OACT4wJ,WAAY,SACZ0B,eAAgB,SAChB3jI,QAAS,EACThvB,cAAe,OACfuqE,WAAY,WAAWgkC,IAEzBozF,GAC+B,kBAAtB5B,GACPoB,GAAiB,CACflwC,WAAY,cAEhB0rC,GAAUl4J,EAAWk4J,OACrBxwJ,GAAa,CACXnd,QAAS,EACThvB,cAAe,QAEjBlS,GAEF4uM,KAAM,CACJj4J,EAAWi4J,KACX,CACEp0E,UAAWpiC,EAAQ+2B,YACnBtkD,aAAcutB,EAAQg3B,eACtBnuF,gBAAiBw4F,EAAQzM,MACzB17G,UAAW,aACXF,SAAU,WACVC,UAAW,OACX+5C,QAAS,wBACTx0C,UAAW,oBACXk6H,SAAU,oBACV2zB,UAAW,QACXrH,SAAU,QACVnlJ,UAAW,OACX00C,OAAQmnJ,EAAa9sF,GAASgB,WAAQryH,GAExCk+M,GAC+B,kBAAtB5B,GACPoB,GAAiB,CACf5hM,IAAKwgM,GAETiC,GAAuB,CACrBpyJ,OAAQ,QAEVyxJ,GAEFlkJ,kBAAmB,CACjB1Y,EAAW0Y,kBACX,CACEp3C,UAAW,OACX8qE,SAAU,EACVnsE,UAAW,QACXgmG,WAAS,KACP,EAAC,iDAAkD,CACjDhmG,UAAWxgB,OAAO+7B,aAErB,IAEHqhL,GAEF1E,MAAOgF,GAAc,CACnBE,EACAr9J,EAAWm4J,MACX,CACE19L,SAAU,SACVQ,MAAO,QACPD,OAAQ,UAGZ2iM,0BAA2B,CACzBljM,SAAU,WACVmB,QAAS,OACTsyJ,eAAgB,SAChBjzJ,MAAO,OACP9C,QAAS,WAEX0lM,iBAAkB,CAEhB/hM,SAAUknH,EAAM1T,WAAWxzG,SAC3Bb,MAAO,gBO/GXjc,EACA,CACEu8I,MAAO,QACPx3G,OAAQ,CAAC,QAAS,SAAU,8BCA1B,GAAgBm4G,KAEtB,eAGE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,K,OAEZ8/H,GAAuB,GACvB,EAAKwE,IAAMtkI,EAAMzlB,IAAM8lJ,K,EA2E3B,OAlFoC,OAU3B,YAAAn2I,OAAP,sBACQ8V,EAAQ5d,KAAK4d,MAEjBE,EAAA,EAAAA,MACA2jD,EAAA,EAAAA,YACAm9I,EAAA,EAAAA,aAGA,IAAAC,oBAAA,wBACA,IAAAtnB,mBAAA,IAAc,EAAd,YAGAr9K,EAAA,EAAAA,OACA4kM,EAAA,EAAAA,4BAGIC,EAAYvmE,GAChBx4I,KAAK4d,MACLo6H,GAEA8mE,EAA8B,GAAK,CAAC,WAGhCr+J,EAAa,GAAcvmC,EAAS,CAAEy0B,MAAO3uC,KAAK4d,MAAM+wB,QAGxDqwK,EjVaJ,SAAsBlhM,EAAY2jD,GACtC,OAAO3jD,EAAM5e,QAAO,SAAC62C,EAAaowF,EAAiBziI,GAMjD,OALIA,EAAQ+9D,IAAgB,EAC1B1rB,EAAKhiD,KAAK,CAACoyI,IAEXpwF,EAAKA,EAAK7/C,OAAS,GAAGnC,KAAKoyI,GAEtBpwF,IACN,IiVrB4BkpK,CAASnhM,EAAO2jD,GAEvCp4D,EACJ,2CACiBw1M,EAAY,eACbtnB,EACdp/L,GAAI6H,KAAKkiJ,IACTptH,KAAK,QACDiqL,EAAS,CACbj1M,UAAW22C,EAAWltD,OAEtB,6BACGyrN,EAAY9gN,KAAI,SAAC63C,EAAampK,GAC7B,OACE,sBAAIpqL,KAAM,MAAOriC,IAAK,EAAKyvJ,IAAM,IAAMg9D,EAAW,QAC/CnpK,EAAK73C,KAAI,SAACihN,EAAWC,GACpB,OACE,sBACEtqL,KAAM,eACNriC,IAAK,EAAKyvJ,IAAM,IAAMk9D,EAAY,QAClCt1M,UAAW22C,EAAW4+J,WAErBT,EAAaO,EAAMC,aAYtC,OAAON,EACLz1M,EAEA,gBAAC,GAAS,CACRqtJ,qBAAsB12J,KAAK4d,MAAM0hM,4BACjCx1M,UAAW22C,EAAW8+J,iBACtB9lM,OAAQzZ,KAAK4d,MAAMnE,QAElBpQ,IAIT,EAlFA,CAAoC,aCRvBm2M,GAAwD5jE,GAInE,ICRuB,SAACh+H,GACxB,MAAO,CACLrqB,KAAM,CACJqlB,QAAS,EACTs8C,QAAS,QAEXmqJ,UAAW,CACTzmM,QAAS,OCJf,0E,OA+CU,EAAAiN,SAAW,WACX,cAAEtM,EAAA,EAAAA,QAASP,EAAA,EAAAA,SAAU8F,EAAA,EAAAA,KAEvBvF,IAAYP,GACdO,EAAQuF,IAIJ,EAAA2gM,cAAgB,SAAC58D,GACjB,cAAE68D,EAAA,EAAAA,QAAS1mM,EAAA,EAAAA,SAAU8F,EAAA,EAAAA,KAAMo2J,EAAA,EAAAA,aAERA,GAAgBA,EAAaryB,KAE7B68D,GAAY1mM,GACnC0mM,EAAQ5gM,IAIJ,EAAAiwL,aAAe,SAAClsD,GAChB,cAAE68D,EAAA,EAAAA,QAAS1mM,EAAA,EAAAA,SAAU8F,EAAA,EAAAA,KAAMs2J,EAAA,EAAAA,YAETA,GAAeA,EAAYvyB,KAE3B68D,GAAY1mM,GAClC0mM,EAAQ5gM,IAIJ,EAAA6gM,cAAgB,SAAC98D,GACjB,cAAE68D,EAAA,EAAAA,QAAS1mM,EAAA,EAAAA,SAAUm8J,EAAA,EAAAA,aAEFA,GAAgBA,EAAatyB,KAE7B68D,GAAY1mM,GACnC0mM,KAII,EAAApvD,SAAW,WACX,cAAE92I,EAAA,EAAAA,QAASR,EAAA,EAAAA,SAAU8F,EAAA,EAAAA,KAEvBtF,IAAYR,GACdQ,EAAQsF,I,EAGd,OA5F0E,OAKjE,YAAAhX,OAAP,W,MACQ,aACJgX,EAAA,EAAAA,KACA3mB,EAAA,EAAAA,GACA2R,EAAA,EAAAA,UACAgrB,EAAA,EAAAA,KACAM,EAAA,EAAAA,SACApc,EAAA,EAAAA,SACA4lM,EAAA,EAAAA,aACAgB,EAAA,EAAAA,kBACAC,EAAA,EAAAA,oBACAn8M,EAAA,EAAAA,MACA2xB,EAAA,EAAAA,MACAwgJ,EAAA,EAAAA,cAGF,OACE,gBAACoS,GAAa,CACZ9vL,GAAIA,EAAE,aACMuL,EAAK,qBACE,EACnBsV,SAAUA,EACVlP,UAAW2I,GAAI3I,GAAS,KACtB,EAAC,GAAK+1M,GAAsBzqL,EAC5B,EAAC,GAAKwqL,GAAoB5mM,EAC1B,IACFO,QAASvZ,KAAK6lB,SACdqvJ,aAAcl1K,KAAKy/M,cACnBrqC,YAAap1K,KAAK+uM,aAClB55B,aAAcn1K,KAAK2/M,cACnBnmM,QAASxZ,KAAKswJ,SACdx7H,KAAMA,EAAI,gBACKM,EACf61H,UAAW51H,EACXjW,MAAOiW,EACPwgJ,cAAeA,GAEd+oC,EAAa9/L,KAzCN,EAAAjY,aAAe,CAC3BmS,UAAU,GA0Fd,EA5FA,CAA0E,aCUpE8mM,GAAyCptF,IAC7C,SACE/jF,EACA7kC,EACAw2K,EACA31B,EACA41B,EACAvnK,EACAioC,EACAtI,EACA6nI,GAEA,IAAMtmK,EAAS,GAAsBy0B,GACrC,OAAO83F,GAAe,CACpBlzI,KAAM,CACJ,YACA2mB,EAAO3mB,KACP+sL,EACAx2K,EACAm3C,GAAW,CAAC,aAAc/mC,EAAO8zJ,aACjCh1J,GAAY,CAAC,cAAekB,EAAO2zJ,eAClC70J,IACEioC,GAAW,CACVylE,UAAW,CACT,SAAUxsG,EAAO4zJ,YACjB,SAAU5zJ,EAAO6zJ,YACjB,UAAW7zJ,EAAO+zJ,cAGxBj1J,GAAYioC,GAAW,CAAC/mC,EAAOknK,sBAC9BpoK,GACCioC,GAAW,CACTylE,UAAW,CACT,SAAUxsG,EAAOmnK,mBACjB,UAAWnnK,EAAOonK,sBAI1BC,cAAe,CAAC,0BAA2BrnK,EAAOqnK,oBAKlD,GAAgB5kC,KAEtB,4B,+CAAgG,OAAxE,OAAwE,EAAhG,CAAwB,IAExB,0E,OAyEU,EAAAojE,qBAAuB,SAACC,GAE9B,OACE,uBACEl2M,UAAW,EAAKu6J,YAAYlyJ,IAC5B2kL,QAAQ,YACRD,KAAM6a,GAAmBsO,EAAYpkM,OAAkBnM,KAEtD,EAAKmO,MAAMqiM,OAAS,0BAAQC,GAAG,MAAMC,GAAG,MAAMnuN,EAAE,QAAW,wBAAM0pB,MAAM,OAAOD,OAAO,W,EAc9F,OA/F6C,OASpC,YAAA3T,OAAP,WACQ,iBACJgX,EAAA,EAAAA,KAEA,IAAAshM,gBAAA,iBAAAjoN,GAAA,EACAi9B,EAAA,EAAAA,SACApc,EAAA,EAAAA,SACAkB,EAAA,EAAAA,OACAy0B,EAAA,EAAAA,MACAsxK,EAAA,EAAAA,OACArkM,EAAA,EAAAA,MACArC,EAAA,EAAAA,QACAmmM,EAAA,EAAAA,QACAlmM,EAAA,EAAAA,QACA07J,EAAA,EAAAA,aACAE,EAAA,EAAAA,YACAD,EAAA,EAAAA,aACAkrC,EAAA,EAAAA,QACAzoM,EAAA,EAAAA,UACA6D,EAAA,EAAAA,OACAC,EAAA,EAAAA,MACAsrJ,EAAA,EAAAA,YAcF,OAXAhnK,KAAKqkK,YAAc,GAAcnqJ,EAAS,CACxCy0B,MAAOA,EACP31B,SAAQ,EACRoc,SAAQ,EACR6qL,OAAM,EACNK,QAAStgN,KAAKugN,aAAa3kM,GAC3BH,OAAM,EACNC,MAAK,EACLsrJ,YAAW,IAIX,gBAAC,GAAS,CACRloJ,KAAMA,EACN3mB,GAAOioN,EAAQ,IAAIthM,EAAK3mB,GAAE,IAAI2mB,EAAKpb,MACnCjR,IAAKqsB,EAAK3mB,GACV6gB,SAAUA,EACV8b,KAAM,WACN8pL,aAAc5+M,KAAK+/M,qBACnB3qL,SAAUA,EACV7b,QAASA,EACTmmM,QAASA,EACTlmM,QAASA,EACT6b,MAAOvW,EAAKuW,MACZvrB,UAAW9J,KAAKqkK,YAAYm8C,UAC5B3qC,cAAeiqC,GACfp8M,MAAOob,EAAKpb,MACZwxK,aAAcA,EACdE,YAAaA,EACbD,aAAcA,EACdkrC,QAASA,EACTzoM,UAAWA,KA2BT,YAAA2oM,aAAR,SAAqB5O,GAEnB,MAAsB,WADRD,GAAmBC,GACnB94I,KA5FF,EAAAhyD,aAAmD,CAC/Do5M,QAAQ,EACRjnM,UAAU,EACVoc,UAAU,GA2Fd,EA/FA,CAA6C,iBCnDvCqrL,GAAwB,CAC5BjlM,MAAO,EACPD,KAAM,EACNmG,QAAS,EACT+R,OAAQ,EACRtX,OAAQ,OACRm1G,aAAc,cCPHovF,GAA0E9kE,GAIrF,IDMuB,SAACh+H,G,cAEtB+wB,EAAA,EAAAA,MACA31B,EAAA,EAAAA,SACAoc,EAAA,EAAAA,SACA6qL,EAAA,EAAAA,OACAK,EAAA,EAAAA,QACA,IAAA7kM,cAAA,IAAS,EAlBa,GAkBtB,EACA,IAAAC,aAAA,IAAQ,EAnBc,GAmBtB,EACAsrJ,EAAA,EAAAA,YAEM1jC,EAAA,EAAAA,eAAgBC,EAAA,EAAAA,QAElBo9E,EAAsBp9E,EAAQ5M,eAC9BiqF,EAAsBr9E,EAAQ7M,aAC9BmqF,EAA6Bt9E,EAAQnN,iBACrC0qF,EAAsBv9E,EAAQjN,gBAG9ByqF,EAAwB/5C,IAE1BtrJ,EApCyB,GAEV,EADA,GAuCnB,MAAO,CAEL8kM,UAAW,CACTrvF,GAAcxiF,EAAO,CAAE8iF,OAAQ,EAAGv2G,SAAU,WAAYm2G,kBAAmBovF,KAC3E,CACE11K,gBAAiBu4F,EAAe3F,eAChC/kH,QAAS,EACTsC,SAAU,WACVE,UAAW,aACXiB,QAAS,eACTuvC,OAAQ,UACR6zH,WAAY,OACZ9qG,aAAc,EACdx4D,OAAQ,OACRV,OAAQA,EACRC,MAAOA,IAERukM,GAAU,CACTv5F,WAAS,KACP,EAAC,IAAIqK,GAAuB,mBAAoB,CAE9Cm6D,cAAkB61B,EAAwB,EAAC,MAE9C,IAGHd,GAAU,CACRtrI,aAAc,MACd+xC,WAAS,KACP,EAAC,IAAIqK,GAAuB,mBAAoB,CAC9C77D,QAAS,OACTwB,YAAa4sE,EAAevB,YAC5BptD,aAAc,MACdn5D,MAAOulM,EACPttL,OAAQstL,EACRxlM,KAAMwlM,EACNr/L,QAASq/L,EACTr6F,WAAS,KACP,EAAC+J,IAAuB,CACtBv7D,QAAS,wBAEZ,IAEJ,IAEH9/B,GAAY,CACVxc,QAnFiB,EAoFjBuD,OAAW4kM,EAAqB,YAAYH,EAC5Cl6F,WAAS,KACP,EAAC,mBAAoB,CACnBr9G,QAAS,KACToS,OAAQA,EACRC,MAAOA,EACPR,SAAU,WACVK,KAAMwlM,EACNvlM,MAAOulM,EACPpsI,aAAcsrI,EAAS,MAAQ,UAC/B37E,UAAW,mBAAmBu8E,GAEjC,KAEFzrL,GAAY,CACXsxF,WAAS,KACP,EAAC,8BAA+B,CAC9B37E,gBAAiBu4F,EAAe3F,eAChC/kH,QAtGa,EAuGbuD,OAAW4kM,EAAqB,YAAYJ,GAE9C,EAAC,WAAY,CACXjqJ,YAAa4sE,EAAe3F,eAC5B/kH,QAAS,EACT8tG,UAAW,CACT,SAAU,CACRhwD,YAAa/nB,EAAM40F,QAAQ7M,aAC3B99G,QA/GS,KAmHhB,IAEHI,GAAY,CACV4C,MAAO0nH,EAAe3C,iBACtB3kH,cAAe,OACfgvB,QAAS,IAEXs1K,IACGlrL,GAAY,CAEX2V,gBAAiB+1K,EACjBloM,QAAS,IAIfzG,IAAK,CACH,CACEuJ,MAAO,OACPD,OAAQ,QAEVwkM,GAAU,CACRtrI,aAAc,gBClIgBl1E,EAAW,CAAEu8I,MAAO,wBAAyB,GCU7E,GAAgBW,KAItB,eA0CE,WAAY/+H,GAAZ,IA2BMyb,EA3BN,EACE,YAAMzb,IAAM,K,OA9BG,EAAAojM,oBAA8B,IAIvC,EAAAC,mBAAqBvuF,IAAgB,SAAC50G,GAC5C,OAAOA,EAAM5f,KAAI,SAAC4gB,EAAMpb,GACtB,cAAYob,GAAI,CAAEpb,MAAOA,UAkHrB,EAAAw9M,cAAgB,SAACpiM,EAAuBpb,GACtC,cAAAy9M,kBACR,YADQ,yBACiBriM,EAAM,EAAKsiM,gBAO9B,EAAAC,yBAA2B,WAC7B,EAAKzjM,MAAM0jM,gBACb,EAAKC,cAAe,EACpB,EAAK3jM,MAAM0jM,kBASP,EAAAF,cAAgB,SAACtiM,GACvB,IAAMlB,EAAQ,EAAKA,MACbzlB,EAAK,EAAK+pJ,IAEhB,OACE,gBAACw+D,GAAmB,CAClB5hM,KAAMA,EACNshM,SAAUjoN,EACVyjB,MAAOkD,EAAKlD,MACZ1B,OAAQ0D,EAAM4jM,uBACdxoM,SAAU4E,EAAM5E,SAChBO,QAAS,EAAKkoM,aACd/B,QAAS,EAAKgC,mBACdloM,QAAS,EAAKmoM,mBACdvsL,cAAuC31B,IAA7B,EAAKsF,MAAMs0B,eAA+B,EAAKt0B,MAAMs0B,gBAAkBva,EAAKpb,MACtFu8M,OAA4B,WAApBriM,EAAMgkM,UACdvsL,MAAOvW,EAAKuW,MACZ6/I,aAAc,EAAKuqC,cACnBrqC,YAAa,EAAK25B,aAClB55B,aAAc,EAAKwqC,cACnBU,QAAS,EAAKwB,SACdjqM,UAAW,EAAKu3B,WAChB1zB,OAAQmC,EAAMkkM,WACdpmM,MAAOkC,EAAMmkM,UACb/6C,YAAappJ,EAAMokM,mBAQjB,EAAAvC,cAAgB,SAAC58D,GACvB,OAAK,EAAKjlI,MAAMqkM,cAIZ,EAAKC,mBAAqB,EAAKtkM,MAAM5E,UACvC6pI,EAAG9lF,cAAc38C,SAGZ,IAPG,EAAK8hM,oBAAsB,EAAKtkM,MAAM5E,UAa1C,EAAA+1L,aAAe,SAAClsD,GACtB,IAAK,EAAKjlI,MAAMqkM,aACd,OAAQ,EAAKC,oBAAsB,EAAKtkM,MAAM5E,SAGhD,IAAMonI,EAAgByC,EAAG9lF,cAQzB,OAJI,EAAKmlJ,kBAAsB33M,UAAY61I,IAAmB71I,SAAS8b,eACrE+5H,EAAchgI,SAGT,GAMD,EAAAu/L,cAAgB,SAAC98D,GACvB,IAAMs/D,EAAiB,EAAKvkM,MAAMwkM,yBAElC,GAAK,EAAKxkM,MAAMqkM,cAAiBE,GAAmB,EAAKD,mBAAoB,EAAKtkM,MAAM5E,SAQxF,IAHA,IAAMpM,EAAWrC,SAASsC,iBAAiBs1M,GAGlCz+M,EAAQ,EAAGA,EAAQkJ,EAAS1W,OAAQwN,GAAS,EACpD,GAAIkJ,EAASlJ,GAAOqH,SAAS83I,EAAG9lF,eAAgB,CAM9C,GAAKnwD,EAASlJ,GAAe43K,UAC3B,IACG1uK,EAASlJ,GAAe43K,YACzB,MAAOr7K,UAIR2M,EAASlJ,GAAuB0c,QAGnC,QAQE,EAAAyhM,SAAW,WACjB,EAAKQ,yBAMC,EAAAlzK,WAAa,SAAC0zG,GAElBA,EAAG//H,QAAUsyH,IACbyN,EAAG//H,QAAUsyH,IACbyN,EAAG//H,QAAUsyH,IACbyN,EAAG//H,QAAUsyH,IAEb,EAAKitE,yBAQD,EAAAA,sBAAwB,WACzB,EAAKH,uBAAqDziN,IAAjC,EAAK6iN,wBAIjC,EAAKJ,kBAAmB,GAHxB,EAAK71M,MAAM8mB,aAAa,EAAKmvL,yBAC7B,EAAKA,6BAA0B7iN,GAKjC,EAAK6iN,wBAA0B,EAAKj2M,MAAMqF,YAAW,WACnD,EAAKwwM,kBAAmB,IACvB,EAAKlB,sBAOF,EAAAU,mBAAqB,SAAC5iM,GACpB,IAAAyjM,EAAA,QAAAA,cAER,GAAIA,EACF,OAAOzjM,EAAOyjM,EAAczjM,EAAK3mB,GAAI2mB,EAAKlD,OAAS2mM,KAO/C,EAAAZ,mBAAqB,SAAC7iM,GACpB,IAAAwiM,EAAA,QAAAA,cACR,GAAIA,EACF,OAAIxiM,GACF,EAAKyiM,cAAe,EACbD,EAAcxiM,EAAK3mB,GAAI2mB,EAAKlD,SAEnC,EAAK2lM,cAAe,EACbD,MASL,EAAAG,aAAe,SAAC3iM,GACtB,IAAI,EAAKlB,MAAM5E,SAAf,CAIA,IAAMtV,EAAQob,EAAKpb,MAIfA,GAAS,GAAKA,IAAU,EAAKqB,MAAMs0B,gBACjC,EAAKzb,MAAM0jM,eAAiB,EAAKC,eACnC,EAAKA,cAAe,EACpB,EAAK3jM,MAAM0jM,iBAGT,EAAK1jM,MAAM4kM,gBACb,EAAK5kM,MAAM4kM,eAAe1jM,EAAK3mB,GAAI2mB,EAAKlD,QAIV,IAA5B,EAAKgC,MAAM6kM,cACb,EAAK3nI,SAAS,CACZzhD,cAAe31B,OA5SrB,EAAKw+I,IAAMtkI,EAAMzlB,IAAM8lJ,GAAM,qBAqB7B,EAAKikE,kBAAmB,EACxB,EAAK71M,MAAQ,IAAI,GAAM,GAGnBuR,EAAM8kM,aACRrpL,EAAgBspL,GAAkB/kM,EAAMglM,WAAYhlM,EAAM8kM,aAG5D,EAAK39M,MAAQ,CACXs0B,cAAa,G,EAmRnB,OA9V2C,OAuB3B,EAAAryB,yBAAd,SAAuCo+I,EAAmCrgJ,GACxE,IAAM89M,EAAmBz9D,EAASs9D,WAC9BC,GAAkBv9D,EAASw9D,WAAYx9D,EAASs9D,iBAChDjjN,EAGJ,OAAK2lJ,EAASq9D,mBAAqChjN,IAArBojN,IAI1BA,IAAqB99M,EAAMs0B,cACtB,CACLA,cAAewpL,GALV,MAiDJ,YAAAv2G,qBAAP,WACMtsG,KAAK4d,MAAM0jM,eAAiBthN,KAAKuhN,eACnCvhN,KAAKuhN,cAAe,EACpBvhN,KAAK4d,MAAM0jM,iBAEbthN,KAAKqM,MAAMyzI,WAGN,YAAAh4I,OAAP,WACQ,iBACJ86M,EAAA,EAAAA,WACAnhJ,EAAA,EAAAA,YAEA,IAAAo9I,oBAAA,iCACA,IAAAtnB,mBAAA,IAAc,EAAd,qBAEA+nB,EAAA,EAAAA,4BACAx1M,EAAA,EAAAA,UACAg1M,EAAA,EAAAA,4BACA5kM,EAAA,EAAAA,OACA4oM,EAAA,EAAAA,WAGIriK,EAAa,GAAcvmC,EAAS,CACxCy0B,MAAO3uC,KAAK4d,MAAM+wB,MAClB7kC,UAAS,EACTg5M,WAAU,IAGZ,OAAIF,EAAW1sN,OAAS,GAAKurE,EAAc,EAClC,KAGP,gBAAC+9I,GAAU,KACLx/M,KAAK4d,MAAK,CACdzlB,GAAI6H,KAAKkiJ,IACTpkI,MAAO9d,KAAKihN,mBAAmB2B,GAC/BnhJ,YAAaA,EACbm9I,aAAc5+M,KAAKkhN,cACnBrC,aAAcA,EACdtnB,YAAaA,EACb+nB,4BAA6BA,EAC7BR,4BAA6BA,EAC7BrlM,OAAQzZ,KAAKqhN,yBACb1yK,MAAO3uC,KAAK4d,MAAM+wB,MAClBz0B,OAAQ,CACN3mB,KAAMktD,EAAWltD,KACjB8rN,UAAW5+J,EAAW4+J,UACtBE,iBAAkB9+J,EAAW8+J,sBA9HvB,EAAA14M,aAAe,CAC3B+6M,UAAW,SACX5oM,UAAU,EACVsmM,6BAA6B,EAC7BwD,WAAY,IAyVhB,EA9VA,CAA2C,aAsW3C,SAASH,GAAkB7kM,EAA0B4kM,GACnD,IAAMrpL,EAAgB0L,GAAUjnB,GAAO,SAAAgB,GAAQ,OAAAA,EAAK3mB,KAAL,KAC/C,OAAOkhC,GAAiB,EAAIA,OAAgB55B,ECjY9C,IAAM,GAAmB,CACvB8/M,iBAAkB,qCCMPwD,GAAsEnnE,GAIjF,IDPuB,SAACh+H,GAChB,IAAA9T,EAAA,EAAAA,UAAW6kC,EAAA,EAAAA,MAInB,MAAO,CACLp7C,KAAM,CACJ2oB,OAAQ,QACRgoC,eAAgB,YAElBm7J,UAAW,CACTzmM,QAVsB,EAAAkqM,WAUC,GAEzBvD,iBAAkB,CAVDhsF,GAAoB,GAAkB5kF,GAW1C4wK,iBACX,CACEz4L,MAAO,OACPzK,QAAS,QACT6qJ,SAAU,SAEZp9J,WCb8BrK,EAAW,CAAEu8I,MAAO,sBCFlDrtG,GAAQy1F,KACR4+E,GAAgBv8E,GAAe,CACnCl6H,UAAW,CACT8P,QAAS,OACT4mM,SAAU,aACVh2C,WAAY,aACZ/kI,aAAc,SAEhB82I,OAAQ,CACNrwI,GAAM80F,MAAM1T,WACZ,CACEr/F,KAAM,WACNwyL,UAAU,aAAD,OAAev0K,GAAM40F,QAAQ9N,cACtC75G,MAAO+yB,GAAM40F,QAAQrN,eACrB75G,QAAS,OACT4wJ,WAAY,SACZvwJ,WAAYuuG,GAAYsF,SACxB33G,QAAS,wBAGbuqM,mBAAoB,CAClBv3J,OAAQ,UACR2vF,YAAa,QAEfn1H,KAAM,CACJsK,KAAM,WACN9X,QAAS,mBACTmJ,UAAW,SACX2kG,UAAW,CACT1zH,EAAG,CAAEkpB,OAAQ,UACb,gBAAiB,CAAEs6C,UAAW,GAC9B,eAAgB,CAAEtuB,aAAc,OAKhCk7K,GAAmB,CACvB7vN,KAAM,CACJqoB,MAAO+yB,GAAM40F,QAAQrN,eACrB3yE,WAAY,OACZiT,UAAW,MACX+kF,YAAa,OAEfuyB,YAAa,CACXlyJ,MAAO+yB,GAAM40F,QAAQtN,cAGnBotF,GAAyB,CAAEl+E,SAAU,UAmD5Bm+E,GA9CyD,SAAC1lM,GAEvE,IAAQtmB,EAAcsmB,EAAdtmB,WAER,KAAmE+9M,IAAW,GAA9E,GAAOkO,EAAP,YAA+BC,EAA/B,EAAsBhO,QAA8BiO,EAApD,EAA0ChO,SAEpCiO,EC3DF,SAAgBxlE,EAAiBylE,GAGrC,IAAMxpM,EAAM,SAAiCwpM,GAI7C,OAHKxpM,EAAIjD,UACPiD,EAAIjD,QAAU+mI,GAAMC,IAEf/jI,EAAIjD,QDoDK0sM,CAAM,SAElBpD,EAAY,CAChB,CAAEroN,GAAI,IAAKk9B,MAAM,oBAAuBzZ,MAAM,GAAD,OAAKtkB,GAAcsjJ,SAAU,SAG1E,OAEE,yBAAK9wI,UAAWk5M,GAAcG,mBAAqB5pM,QAASiqM,GACxD,kBAACT,GAAD,CACGthJ,YAAa,EACbqgJ,WAAY,GACZC,UAAW,GACXH,UAAW,SACXgB,WAAYpC,EACZ1B,6BAA2B,IAE5B,kBAACxD,GAAD,CACEmC,YAAaiG,EACb/K,OAAQ4K,EACR3jD,UAAW6jD,EACXpG,mBAAoB2F,GAAcz2M,UAClCixM,eAAe,GAEf,yBAAK1zM,UAAWk5M,GAAchkC,QAC5B,0BAAM7mL,GAAIurN,GAAV,mBACA,kBAAC,GAAD,CACExpM,OAAQkpM,GACR53C,UAAW63C,GACXp4D,UAAU,oBACV1xI,QAASkqM,KAEb,yBAAK35M,UAAWk5M,GAAc58L,MAC3BxI,EAAM/C,aEvGrB,SAASyB,GAAWmnH,GAChB,OAAOA,EAAMvlI,KAAI,SAACo7H,GAAD,iBAAmBA,EAAnB,QAA4Bl3H,KAAK,MAuBnCka,GAAW,CAAC,WAAY,cAAe,cACzCA,GAAW,CAAC,UAAW,iBAAkB,QAAS,eArB1D,ICqDGunM,GClCNpjK,GAAagmF,GAAe,CAChCr1F,OAAQ,CAAEolB,UAAW,QACrBzpD,OAAQ,CACNsP,QAAS,OACTm/H,cAAe,MACfD,YAAa,OACb9/H,OAAQ,WAINqoM,GAAiD,CACrD3P,MAAO,CAAEv7L,QAAS,IAClBrlB,KAAM,CACJqnJ,SAAU,IACVssB,SAAU,KAEZqtC,eAAgB,CAAE94L,OAAQ,MAmBfsoM,GAAgB,SAACnmM,GAC5B,IARkBomM,EAQZC,EAAmB,SAAnBA,EAAoB9xN,GACxB,GAAa,gBAAVA,EACD,MAAO,YAET,GAAGA,GAASA,EAAMs8D,WAAW,KAAM,CAEjC,IAAIy1J,EAAsBtmM,EAAMumM,oBAAoBhyN,EAAMoX,QAAQ,IAAK,IAAK,gBACxE66M,EAAmBxmM,EAAMumM,oBAAoBhyN,EAAMoX,QAAQ,IAAK,IAAK,MACrEqC,EAAMs4M,GAAuBE,EAIjC,OAHIF,GAAuBA,EAAoBz1J,WAAW,MAAU21J,GAAoBA,EAAiB31J,WAAW,QAClH7iD,EAAMq4M,EAAiBC,GAAuBE,IAE5Cx4M,GAGGA,GFnE4B,UEqEnC,OAAOzZ,GFrE4B,WEwE/BgG,EAAwBylB,EAAxBzlB,GAAIhG,EAAoByrB,EAApBzrB,MAAOioB,EAAawD,EAAbxD,SACnB,KAA4CmkE,oBA7B1BylI,EA6B8CC,EAAiB9xN,KA5BhE6xN,EAAU9tN,OAAS,GAAsB,MAAjB8tN,EAAU,GAC1CA,EAAUhwN,MAAM,GAElBgwN,GAyBP,GAAOK,EAAP,KAAuBC,EAAvB,KACA,KAAwFjP,IAAW,GAAnG,GAAOkP,EAAP,YAAsCC,EAAtC,EAA6BhP,QAAqCiP,EAAlE,EAAwDhP,SAElDiP,EAAUpmI,iBAAuB,MASjCqmI,EAAoB,SAACrkK,IARX,SAACA,GAEf,SAAIA,IAAa,uCAAwCl/C,KAAxC,IAAD,OAAkDk/C,KAO9DskK,CAAQtkK,GAQO,OAAbA,QAAkC7gD,IAAb6gD,IACvBgkK,EAAkBhkK,GACbikK,GACHC,MAVJF,EAAkBhkK,GAClBlmC,EAASjiB,EAAD,WAASmoD,IACbikK,GACFE,MA4BAI,EAAsB5xL,IAfR,SAAC6xL,GACnB1qM,EAASjiB,EAAI2sN,EAASr1M,KACtBg1M,IACAH,EAAkBQ,EAASjsJ,KACvB6rJ,EAAQxtM,UACW,YAAjB4tM,EAASr1M,KAAsC,YAAjBq1M,EAASr1M,IACzClF,SAASgqB,cAA8B,4CAA8ChqB,SAASgqB,cAA8B,0BAA2B5b,MAAM0D,QAAU,QAGvK9R,SAASgqB,cAA8B,4CAA8ChqB,SAASgqB,cAA8B,0BAA2B5b,MAAM0D,QAAU,YAM3H,KAGlD,OACE,yBAAKvS,UAAW22C,GAAW1zC,OAAQoN,IAAKuqM,GAEpC,kBAAC,GAAD,CAAoBptN,WAAY2sN,EAAiB9xN,IACjD,kBAAC6/M,GAAD,CACEp2L,MAAOqoM,EAAiB9xN,GACxBioB,SAAU,SAACna,EAAQ2b,GACjBipM,EAAoBjpM,IAEtB84L,aAAW,EACXx6L,OAAQ4pM,GACRpR,QAAS,CACPe,eAAgB,4FAChBC,sBAAuB,mGACvBe,aAAc,2FAEhBb,mBAAiB,KAIrB,yBAAK9pM,UAAW22C,GAAWrP,QACzB,kBAAC6+I,GAAD,CAAW99L,MAAOkyN,EAAgBv3B,aAAcy3B,EA3GjC,iHA2GuE,GAAIrmE,OAAO,IAAI9jI,SAAU,SAACna,EAAQqgD,GAAwBqkK,EAAkBrkK,SCrIpKG,GAAagmF,GAAe,CAChCr1F,OAAQ,CAAEolB,UAAW,QACrBzpD,OAAQ,CACN0O,OAAQ,QACRY,QAAS,OACTm/H,cAAe,MACfD,YAAa,UAKXuoE,GAAiD,CACrD3P,MAAO,CAAEv7L,QAAS,IAClBrlB,KAAM,CACJqnJ,SAAU,IACVssB,SAAU,KAEZqtC,eAAgB,CAAE94L,OAAQ,MAWtBspM,GAAiB,SAACC,GACtB,OAL2B,SAACA,GAC5B,OAAQA,EAAUz7M,QAAQ,YAAa,IAAKpH,MAAM,KAI3C8iN,CAAqBD,GAAW9mN,KAAI,SAACb,GACtC,OAAKvI,MAAM4vE,SAASrnE,IAGVqiE,WAAWriE,GACiB,IAA1BqiE,WAAWriE,GAEL,EALTqnE,SAASrnE,OASpB6nN,GAAsB,SAACF,GAC3B,OApBQxT,GAAiB,CAACx/M,GADN8mE,EAqBCisJ,GAAeC,IApBF,GAAIjlN,EAAG+4D,EAAK,GAAI/yD,EAAG+yD,EAAK,GAAIhzD,EAAGgzD,EAAK,KAAMrpD,IADzD,IAACqpD,GAgCTqsJ,GAAe,SAACvnM,GAC3B,IAAQzlB,EAAyBylB,EAAzBzlB,GAAIhG,EAAqByrB,EAArBzrB,MAAOioB,EAAcwD,EAAdxD,SACnB,KAA4CmkE,mBAAmB,gBAAVpsF,EAAyB,cAAgBA,EAAMoX,QAAQ,YAAa,KAAzH,GAAO86M,EAAP,KAAuBC,EAAvB,KACA,KAAwFjP,IAAW,GAAnG,GAAOkP,EAAP,YAAsCC,EAAtC,EAA6BhP,QAAqCiP,EAAlE,EAAwDhP,SAClDiP,EAAUpmI,iBAAuB,MAuB/BumI,EAAsB5xL,IApBV,SAAC6xL,GACnBL,IACA,IAAMpR,GAASyR,EAASh/M,GAAK,IAAM,EAAI,KAAOg/M,EAASh/M,GAAK,MAAQ,IAAM,IAAM,KAAKg/M,EAASh/M,EAC9FsU,EAASjiB,EAAD,eAAY2sN,EAAS9yN,EAArB,aAA2B8yN,EAAS/kN,EAApC,aAA0C+kN,EAAS/+M,EAAnD,aAAyDstM,EAAzD,MACRiR,EAAkB,GAAD,OAAIQ,EAAS9yN,EAAb,aAAmB8yN,EAAS/kN,EAA5B,aAAkC+kN,EAAS/+M,EAA3C,aAAiD++M,EAASh/M,IACvE4+M,EAAQxtM,UACU,IAAf4tM,EAAS9yN,GAA2B,IAAf8yN,EAAS/+M,GAA0B,IAAf++M,EAAS/kN,GAA4B,MAAf+kN,EAAS9yN,GAA6B,MAAf8yN,EAAS/+M,GAA4B,MAAf++M,EAAS/kN,EACxHwK,SAASgqB,cAA8B,4CAA8ChqB,SAASgqB,cAA8B,0BAA2B5b,MAAM0D,QAAU,QAKvK9R,SAASgqB,cAA8B,4CAA8ChqB,SAASgqB,cAA8B,0BAA2B5b,MAAM0D,QAAU,YAQ1H,KAY5Cg2L,EAAP,GAAoB9zH,mBAAyC,gBAA7D,MAEMomI,EAAoB,SAACrkK,IAZT,SAACA,GAAgC,IAAD,EAC9C,OAAsC,QAA1B,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAUlxC,MAAM,gBAA4D,KAA1B,OAARkxC,QAAQ,IAARA,GAAA,UAAAA,EAAUlxC,MAAM,eAAhB,eAAyBlZ,SACnD6uN,GAAezkK,GACNphD,QAAO,SAAC81C,EAAK7iD,GAAN,OAC5B6iD,GAAQ7iD,GAAS,OAAO,GAS9ByyN,CAAQtkK,GAQO,OAAbA,QAAkC7gD,IAAb6gD,IACvBgkK,EAAkBhkK,GACbikK,GACHC,MAVJF,EAAkBhkK,GAClBlmC,EAASjiB,EAAD,eAAamoD,EAAb,MACJikK,GACFE,MAYCntN,EAAuB,gBAAVnF,EAA0Bu/M,GAAmB,oBAAwBA,GAAmBv/M,IAAUu/M,GAAmB,WACpI0T,EAAuB,KAC3B,IACC,IAAIC,EAAuB3T,GAAmBv/M,GAC9CizN,EAAoB,eAAWC,EAAqBrzN,EAAhC,aAAsCqzN,EAAqBtlN,EAA3D,aAAiEslN,EAAqBt/M,EAAtF,aAA4Fs/M,EAAqBv/M,EAAjH,KACpB,MAAM8gE,IAKR,OACE,yBAAK98D,UAAW22C,GAAW1zC,OAAQoN,IAAKuqM,GACtC,kBAAC,GAAD,CAAoBptN,WAAY4tN,GAA8B,gBAAV/yN,EAA0B,mBAAqBizN,GAAwBjzN,IACzH,kBAAC6/M,GAAD,CACEp2L,MAAOtkB,EACP8iB,SAAU,SAACna,EAAQ2b,GACnBipM,EAAoBjpM,IAEpB84L,aAAW,EACXrC,UAAWA,EACXn4L,OAAQ4pM,GACRpR,QAAS,CACPe,eAAgB,4FAChBC,sBAAuB,mGACvBe,aAAc,8FAIpB,yBAAK3qM,UAAW22C,GAAWrP,QACzB,kBAAC6+I,GAAD,CAAWnD,aAAcy3B,EA/FF,0FA+FwC,GAAIpyN,MAAOkyN,EAAgBjqM,SAAU,SAACna,EAAQqgD,GAAuBqkK,EAAkBrkK,IAAY49F,OAAQ,QAASjwE,OAAQ,SC1FpLq3I,GA7D2B,CACtCC,aAAc,CACV,SACA,SACA,QACA,SACA,SACA,QACA,QACA,SACA,OACA,UAEJ3zG,QAAS,CACL,4BAEJ6xB,MAAO,CACH,UACA,gBACA,QACA,kBACA,YACA,QACA,cACA,UACA,UACA,eACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,QACA,kBACA,gBACA,eAEJ+hF,sBAAuB,CACnB,OACA,WACA,WAEJ1jK,gBAAiB,CACb,WACA,YAEJ7kC,UAAW,CACP,SACA,YACA,aACA,YAEJwoM,gBAAiB,CAAC,SAAU,OAC5BvqM,SACA,CAAC,OAAQ,SACTwqM,0BAA2B,CAAC,MAAO,MAAO,YHL9C,SAAY7B,GACV,uBACA,yBACA,uBAHF,CAAYA,QAA4B,KI7CxC,ICgQY8B,GDhQZ,2BAGU,KAAAC,MAAQ,EA0DlB,OArDS,YAAAC,cAAP,SAAqBjoN,GAGnB,IAFA,IAAMkoN,EAA0B,GAC5B96J,EAAO,EACF95D,EAAI,EAAGA,EAAI0M,EAAQ1H,OAAQhF,IAC9B0M,EAAQ1M,GAAGonL,WAAa,GAAqBC,SAAW36K,EAAQ1M,GAAGonL,WAAa,GAAqBj8K,OACvGypN,EAAwB/xN,KAAK7C,GACnB0M,EAAQ1M,GAAGygH,QACrB3mD,IAIJhrD,KAAK4lN,MAAQ56J,EACbhrD,KAAK+lN,yBAA2BD,EAChC9lN,KAAKgmN,eAAc,EAAOpoN,IAM5B,sBAAW,4BAAa,C,IAAxB,WACE,OAAOoC,KAAK4lN,O,gCAMd,sBAAW,4BAAa,C,IAAxB,WACE,OAAO5lN,KAAKgmN,gB,gCAQP,YAAAC,cAAP,SAAqBviN,GACnB,QAAcjE,IAAViE,EAAJ,CAOA,IADA,IAAIiT,EAAS,EACNjT,EAAQ1D,KAAK+lN,yBAAyBpvM,IAC3CA,IAGF,GAAI3W,KAAK+lN,yBAAyBpvM,KAAYjT,EAC5C,MAAM,IAAI9H,MAAM,+BAA+B8H,EAAK,iCAGtD,OAAOA,EAAQiT,EAAS,IAE5B,EA7DA,ICgQA,SAAYgvM,GAUV,+BAUA,qCAUA,uCAUA,uBAUA,qBAWA,+BAWA,+BAQA,uBAQA,+BAxFF,CAAYA,QAAS,KCpPrB,IAGKO,GAHC,GAAgBvpE,MAGtB,SAAKupE,GACH,uBACA,qCACA,mBACA,yCAJF,CAAKA,QAAoB,KAazB,I,eAAA,eA2CE,WAAYtoM,GAAZ,MACE,YAAMA,IAAM,KAjCN,EAAAuoM,OAAS,cAGT,EAAAC,mBAAoC,KACpC,EAAAC,wBAAmC,EAAKzoM,MAAM0oM,qBAAsB,EAAK1oM,MAAM2oM,2BAsOhF,EAAA9xL,QAAU,SAACouH,GACZ,EAAKjlI,MAAMgiJ,WAAa,EAAKh1J,UAC/B,EAAKgT,MAAMgiJ,UAAU/c,KAGlBA,GAAOA,IAAOA,EAAGzwD,mBACpB,EAAKhhF,SAaD,EAAAo1M,oBAAsB,SAACvK,GACzBA,EACE,EAAKnD,sBACPxpD,GAAyB2sD,EAAK,EAAK9pL,SAEnC68H,GAAqBitD,EAAK,EAAK9pL,SAGjC,EAAKA,QAAQC,IAAI,EAAK8pL,oBAExB,EAAKA,mBAAqBD,GAOpB,EAAAwK,oBAAsB,SAAC7oM,GAC7B,IAAK,EAAKA,MAAM2oM,4BAA8B,EAAK3oM,MAAM0oM,qBAAuB,EAAK1oM,MAAM8oM,eACzF,OAAO,KAED,cAAAH,iCAAA,qCACR,OACE,uBAAKz8M,UAAW,EAAKu6J,YAAYsiD,YAC9BJ,EAA0B3oM,EAAO,EAAKgpM,8BAKrC,EAAAA,2BAA6B,SAAChpM,G,MAC5BipM,EAAA,EAAAA,qBAAsBH,EAAA,EAAAA,eAAgB,IAAAI,sBAAA,IAAiB,EAAjB,oBAC9C,GAAIJ,EAAgB,CAClB,IAAMtD,EAAsD,QAAtC,EAAG,EAAK/+C,YAAYz+B,0BAAkB,eAAEmhF,cAE9D,OACE,iCACI,EAAKV,sBAAwBS,EAAe,EAAKlpM,MAAO,EAAKopM,gBAAiB,EAAKC,eACrF,gBAAC,GAAU,CACT/sM,OAAQkpM,EAERt5M,UAAW,EAAKu6J,YAAY0iD,YAC5BxtM,QAAS,EAAK2tM,cACdj8D,UAAW47D,EACXznM,MAAOynM,EAAoB,mBACV,EACjBr7C,UAAW,CAAErmC,SAAU,aAK/B,OAAO,MAGD,EAAA6hF,gBAAkB,SACxBppM,EACAsuI,EACAi7D,GAEQ,IAAAp+B,EAAA,EAAAA,WAAY,IAAAq+B,uBAAA,IAAkB,EAAlB,KAEpB,OAAIr+B,EAEA,uBAAKj/K,UAAW,EAAKu6J,YAAY2a,QAC/B,yBACE7mL,GAAIgvN,EACJryL,KAAK,UAAS,aACF,GACRsyL,EAAe,CACnBt9M,UAAW2I,GAAI,EAAK4xJ,YAAY0kB,WAAYq+B,EAAgBt9M,aAE3Di/K,IAKF,MAGD,EAAAs+B,cAAgB,SAACzpM,GACvB,OAAO,uBAAK9T,UAAW,EAAKu6J,YAAYh7J,SAAUuU,EAAM/C,WAGlD,EAAAysM,gBAAkB,SAAC1pM,GACjB,cAAA2pM,6BAAA,aACR,OAAIA,EAEA,uBAAKz9M,UAAW,EAAKu6J,YAAYmjD,QAC/B,uBAAK19M,UAAW,EAAKu6J,YAAYojD,aAAcF,MAI9C,MA4BD,EAAAG,WAAa,SAACC,GAChBA,IAAuBzB,GAAqBlyM,MAAQ,EAAK4J,MAAMgqM,QACjE,EAAKhqM,MAAMgqM,SAGb,EAAKxB,mBAAqB,EAAKtmD,OAAOpuJ,YAAW,WAC/C,EAAKopE,SAAS,CAAEv5B,WAAYomK,IAC5B,EAAKE,0BACJ,MAGG,EAAAC,6BAA+B,WACL,OAA5B,EAAK1B,oBACP,EAAKtmD,OAAO3sI,aAAa,EAAKizL,qBAI1B,EAAAc,cAAgB,SAACrkE,GACvB,EAAKpuH,QAAQouH,IAGP,EAAAglE,sBAAwB,WAC9B,EAAKE,wBAED,EAAKhjN,MAAMw8C,aAAe2kK,GAAqBlyM,MAAQ,EAAK4J,MAAMoqM,UACpE,EAAKpqM,MAAMoqM,WAGT,EAAKjjN,MAAMw8C,aAAe2kK,GAAqB+B,QAAU,EAAKrqM,MAAM8+L,aACtE,EAAK9+L,MAAM8+L,eA9WL,cAAA7D,4BAAA,S,OACR,EAAKC,sBAAwBD,EAE7B,EAAK/4C,OAAS,IAAI,GAAM,GACxB,EAAK3tI,QAAU,IAAI,GAAW,GAC9BurH,GAAuB,GAQvB,EAAK34I,MAAQ,CACXmjN,gBAAgB,EAEhB3mK,WAAY2kK,GAAqB+B,OACjC9vN,GAAI8lJ,GAAM,U,EAgWhB,OA/Z+B,OAmBf,EAAAj3I,yBAAd,SACE0gJ,EACAlD,GAEA,YAAyB/kJ,IAArBioJ,EAAUixD,OACL,MAGPjxD,EAAUixD,QACTn0D,EAAUjjG,aAAe2kK,GAAqB+B,QAC7CzjE,EAAUjjG,aAAe2kK,GAAqBiC,gBAK/CzgE,EAAUixD,QACVn0D,EAAUjjG,aAAe2kK,GAAqBlyM,MAC7CwwI,EAAUjjG,aAAe2kK,GAAqBkC,cAI3C,KAFE,CAAE7mK,WAAY2kK,GAAqBiC,iBAPnC,CAAE5mK,WAAY2kK,GAAqBkC,gBAoCvC,YAAArkH,kBAAP,WACE/jG,KAAKmyB,QAAQF,GAAG/xB,OAAQ,SAAUF,KAAK+nN,uBAEnC/nN,KAAKqoN,2BAA2BroN,KAAK4d,QACvC5d,KAAKmyB,QAAQF,GAAG1nB,SAAS6b,KAAM,YAAapmB,KAAKsoN,sBAAsB,GAGrEtoN,KAAK4d,MAAM+6L,QACb34M,KAAK86E,SAAS,CAAEv5B,WAAY2kK,GAAqBkC,iBAI9C,YAAAz+G,mBAAP,SAA0B4+G,EAA4B/8E,GACpD,IAAMg9E,EAA2BxoN,KAAKqoN,2BAA2BroN,KAAK4d,OAChE6qM,EAAmCzoN,KAAKqoN,2BAA2BE,GAErEvoN,KAAK+E,MAAMw8C,aAAeiqF,EAAcjqF,aAC1CvhD,KAAK8nN,+BACD9nN,KAAK+E,MAAMw8C,aAAe2kK,GAAqBkC,cACjDpoN,KAAK0nN,WAAWxB,GAAqBlyM,MAC5BhU,KAAK+E,MAAMw8C,aAAe2kK,GAAqBiC,iBACxDnoN,KAAK0nN,WAAWxB,GAAqB+B,SAIrCO,IAA6BC,EAC/BzoN,KAAKmyB,QAAQF,GAAG1nB,SAAS6b,KAAM,YAAapmB,KAAKsoN,sBAAsB,IAC7DE,GAA4BC,GACtCzoN,KAAKmyB,QAAQC,IAAI7nB,SAAS6b,KAAM,YAAapmB,KAAKsoN,sBAAsB,IAIrE,YAAAh8G,qBAAP,WACEtsG,KAAK8/J,OAAOhgB,UACZ9/I,KAAKmyB,QAAQ2tH,WAGR,YAAAh4I,OAAP,WACQ,iBACJ,IAAAgC,iBAAA,IAAY,EAAZ,KACAwtM,EAAA,EAAAA,wBAEAY,EAAA,EAAAA,uBACAwQ,EAAA,EAAAA,mBACAjR,EAAA,EAAAA,qBACAiP,EAAA,EAAAA,eACA39B,EAAA,EAAAA,WACA,IAAA4/B,uBAAA,IAAkB,EAAlB,KACAnQ,EAAA,EAAAA,uBAEA+E,EAAA,EAAAA,WACAqL,EAAA,EAAAA,iBACAC,EAAA,EAAAA,eACAC,EAAA,EAAAA,kBACAz9C,EAAA,EAAAA,WACA09C,EAAA,EAAAA,aACAC,EAAA,EAAAA,WACAjlN,EAAA,EAAAA,KACAmW,EAAA,EAAAA,OACAy0B,EAAA,EAAAA,MACAs6K,EAAA,EAAAA,YACA,IAAAC,2BAAA,IAAsB,EAAtB,qBACA,IAAA5C,0BAAA,IAAqB,EAArB,2BACA,IAAAQ,sBAAA,IAAiB,EAAjB,uBACA,IAAAqC,oBAAA,IAAe,EAAf,qBACA,IAAAC,sBAAA,IAAiB,EAAjB,uBAEI,aAAElB,EAAA,EAAAA,eAAgB3mK,EAAA,EAAAA,WAAYppD,EAAA,EAAAA,GAC9BkxN,EAAStlN,IAAS4hN,GAAU2D,gBAAkBvlN,IAAS4hN,GAAU4D,WAEjEC,EADQ,GAAO76K,GACS06K,GAAUA,EAClCI,EAAoB1lN,IAAS4hN,GAAU5xL,QAAUhwB,IAAS4hN,GAAU4D,WAAa,CAAE7tM,MAAOutM,GAAgB,GAC1GvvE,EAAclB,GAAqDx4I,KAAK4d,MAAO26H,IAC/EogE,EAAS34M,KAAK4K,SACd8+M,EACJnoK,IAAe2kK,GAAqBiC,iBAAmB5mK,IAAe2kK,GAAqBkC,cAI7F,GAFApoN,KAAKinN,cAAgBl+B,GAAc5wL,EAAK,eAEnCwgN,IAAW+Q,IAAgBZ,EAC9B,OAAO,KAGT9oN,KAAKqkK,YAAc,GAAcnqJ,EAAS,CACxCy0B,MAAOA,EACP7kC,UAAS,EACT6/M,uBAAwBjB,EAAqBA,EAAmB5+M,eAAYrK,EAC5EinN,eAAc,EACdiC,gBAAe,EACfe,YAAW,EACXxB,eAAc,EACdU,iBAAgB,EAChBY,cAAa,EACb7Q,OAAM,EACNmQ,kBAAiB,EACjB/kN,KAAI,EACJ6lN,oBAAqB5pN,KAAKqmN,uBAGtB,IAEFxwI,EAFIwuF,EAAF,KAAEA,YAAay0C,EAAf,KAAeA,sBAerB,OAZIyE,GAAc5E,IAChB9iI,EACE,gBAACsjI,GAAO,GACNrvM,UAAWu6J,EAAYxuF,QACvBojI,cAAc,EACd1/L,QAASsvM,EAAiBK,OAAsBzpN,EAChDo5M,qBAAsBC,GAClBiQ,KAMR,gBAACj3F,GAAK,KAAKu5C,GACT,gBAAC,GAAK,GACJv2I,KAAK,SAAQ,aACF,OACX2/H,eAAgBz0J,KAAKinN,cAAgBjnN,KAAKinN,mBAAgBxnN,EAC1DmgK,UAAW5/J,KAAKy0B,QAChB3qB,UAAWu6J,EAAYwlD,aACnBb,GAEJ,wCAAmBrQ,GAAU+Q,GAAiBhwE,EAAW,CAAEv/H,IAAKna,KAAKmmN,OAAQr8M,UAAWu6J,EAAY9wK,OACjGsiF,EACD,gBAAC,GAAa,GACZ2iI,uBAAwBA,EACxBf,wBAAuB8F,GAAeuL,IAAsBnQ,IAAkBlB,EAC9ES,uBAAwBA,EACxBO,6BAA6B,GACzBiQ,EAAkB,CACtB5+M,UAAWu6J,EAAYq0C,KACvB//L,MAAO8wM,EACPnS,wBAAyBA,IAEzB,uBAAKxtM,UAAWu6J,EAAY9zH,SAAQ,mBAAmB,GACpD+1K,EAAmBtmN,KAAK4d,MAAO5d,KAAKymN,sBAEvC,uBAAK38M,UAAWu6J,EAAYylD,eACxB9pN,KAAKqmN,uBAAyBK,IAC9BI,EAAe9mN,KAAK4d,MAAO5d,KAAKgnN,gBAAiBhnN,KAAKinN,eACxD,uBAAK9sM,IAAKna,KAAKwmN,oBAAqB18M,UAAWu6J,EAAYlrG,kBAAiB,sBAAsB,GAC/FgwJ,EAAanpN,KAAK4d,MAAO5d,KAAKqnN,gBAEhC+B,EAAeppN,KAAK4d,MAAO5d,KAAKsnN,uBASxC,YAAAtzM,KAAP,gBAC4BvU,IAAtBO,KAAK4d,MAAM+6L,SAIX34M,KAAK4K,UAIT5K,KAAK86E,SAAS,CAAEv5B,WAAY2kK,GAAqBkC,kBAG5C,YAAAh3M,MAAP,gBAC4B3R,IAAtBO,KAAK4d,MAAM+6L,QAIV34M,KAAK4K,UAIV5K,KAAK86E,SAAS,CAAEv5B,WAAY2kK,GAAqBiC,mBAcnD,sBAAW,uBAAQ,C,IAAnB,WACE,OACEnoN,KAAK+E,MAAMw8C,aAAe2kK,GAAqBlyM,MAC/ChU,KAAK+E,MAAMw8C,aAAe2kK,GAAqBkC,e,gCAkB3C,YAAAC,2BAAR,SAAmCzqM,GACjC,QAASA,EAAM2/L,cAAgB3/L,EAAM+6L,QAgF/B,YAAAoP,sBAAR,WACE,IAAM5uJ,EAAoBn5D,KAAKk8M,mBAC/B,GAAI/iJ,EAAmB,CACrB,IAAM19C,EAAS09C,EAAkB72C,aAC3B,EAAc62C,EAAkBh0C,aAEtCnlB,KAAK86E,SAAS,CACZotI,eAAgBzsM,EAAS,MAKvB,YAAA6sM,qBAAR,SAA6BzlE,GAC3B,IAAMsxD,EAAQn0M,KAAKmmN,OAAOjvM,QACtBlX,KAAK4K,UAAYupM,IAAUtxD,EAAGzwD,mBAC3Bm6D,GAAgB4nD,EAAOtxD,EAAG7sJ,UACzBgK,KAAK4d,MAAMmsM,aACb/pN,KAAK4d,MAAMmsM,aAAalnE,GAExB7iJ,KAAKy0B,QAAQouH,MAxXP,EAAAh8I,aAA4B,CACxCiiN,mBAAmB,EACnBnQ,YAAQl5M,EACR89M,YAAY,EACZmJ,gBAAgB,EAChB3iN,KAAM4hN,GAAUqE,eAyZpB,EA/ZA,CAA+B,aCzBzB,GAAmB,CACvBz2N,KAAM,WACNmlN,KAAM,gBACNnoK,SAAU,oBACVu5K,aAAc,wBACd3wJ,kBAAmB,6BACnBwtJ,WAAY,sBACZI,YAAa,4CACb/nC,OAAQ,kBACR+J,WAAY,sBACZ1/K,QAAS,mBACTm+M,OAAQ,kBACRC,YAAa,uBACb9O,OAAQ,UACR+N,eAAgB,2BAChBuD,WAAY,oBACZX,eAAgB,mBAChBU,cAAe,eACfr6F,OAAQ,eACRE,MAAO,eACPq6F,WAAY,kBACZC,WAAY,eACZp2L,OAAQ,mBACRw1L,WAAY,wBAGRa,GACE,OADFA,GAEE,OAFFA,GAGA,IAHAA,GAKC,IALDA,GAMC,IANDA,GAOA,IAGAC,GACE,OADFA,GAEE,EAFFA,GAGA,GAHAA,GAIA,IAJAA,GAKA,IAKAC,KAAmB,OACtB,6BAAkD,CACjD5uM,MAlBE,KAoBL,IAEK6uM,KAAoB,OACvB,6BAAiD,CAChD7uM,MAAO0uM,IAET,GAAC,8BAAkD,CACjD1uM,MAAO0uM,IAEV,IAEKI,KAAmB,OACtB,6BAAqD,CACpDhvM,KAAM6uM,GACN3uM,MAAO0uM,IAET,GAAC,8BAAmD,CAClD5uM,KAAM6uM,IAET,IAEKI,KAAwB,OAC3B,8BAAmD,CAClDjvM,KAAM6uM,GACN3uM,MAAO0uM,IAEV,IAEKM,KAAwB,OAC3B,8BAAmD,CAClDlvM,KAAM6uM,IAET,IAIK,GAAsB,SAACtmN,GAC3B,IAAI2iH,EAKJ,OAAQ3iH,GACN,KAAK4hN,GAAUqE,cACbtjG,EAAY,EAAH,GACJ4jG,IAEL,MACF,KAAK3E,GAAUh2F,OACbjJ,EAAY,EAAH,KACJ4jG,IACAC,IAEL,MACF,KAAK5E,GAAU91F,MACbnJ,EAAY,EAAH,OACJ4jG,IACAC,IACAC,IAEL,MACF,KAAK7E,GAAUuE,WACbxjG,EAAY,EAAH,SACJ4jG,IACAC,IACAC,IACAC,IAEL,MACF,KAAK9E,GAAUwE,WACbzjG,EAAY,EAAH,SACJ4jG,IACAC,IACAC,IACAE,IAOT,OAAOhkG,GAKHikG,GAAsB,CAC1B3wM,YAAa,OACbF,aAAc,QChJH8wM,GAA8ChvE,GACzD,IDkJuB,SAACh+H,G,MAEtB9T,EAAA,EAAAA,UACA6/M,EAAA,EAAAA,uBACAjD,EAAA,EAAAA,eACAiC,EAAA,EAAAA,gBACAe,EAAA,EAAAA,YACAxB,EAAA,EAAAA,eACAU,EAAA,EAAAA,iBACAY,EAAA,EAAAA,cACA7Q,EAAA,EAAAA,OACAmQ,EAAA,EAAAA,kBACAc,EAAA,EAAAA,oBACAj7K,EAAA,EAAAA,MACA,IAAA5qC,YAAA,IAAO,EAAP,mBAEMm+F,EAAA,EAAAA,QAASuhC,EAAA,EAAAA,MAAOH,EAAA,EAAAA,eAClB7iF,EAAa8yE,GAAoB,GAAkB5kF,GACnDk8K,EAAgB9mN,IAAS4hN,GAAU5xL,QAAUhwB,IAAS4hN,GAAU4D,WAEtE,MAAO,CACLh2N,KAAM,CACJktD,EAAWltD,KACXo7C,EAAM80F,MAAM9T,OACZgpF,GAAUl4J,EAAWk4J,OACrB+N,GAAkBjmK,EAAWimK,eAC7B,CACE1qM,cAAe,OACfd,SAAU,WACVK,IAAK,EACLC,KAAM,EACNiY,MAAO,EACP/R,OAAQ,GAEVmpM,GAAiBrB,GAAiB/oK,EAAW1sB,OAC7C82L,IAAkBrB,GAAiB/oK,EAAW8oK,WAC9Cz/M,GAEF+rE,QAAS,CACP,CACE75D,cAAe,OACf4vC,OAAQ,WAEV+sJ,GAAU+Q,GAAev+F,GAAoB+B,WAC5CyrF,GAAU+Q,GAAev+F,GAAoBmC,YAEhDu8F,YAAa,EACVlR,IACE+Q,GACDZ,GAAqB,CACnBvnK,WAAY,WAGlBm3J,KAAM,CACJj4J,EAAWi4J,KACX,CACE3tK,gBAAiBu4F,EAAe3F,eAChC2G,UAAWpiC,EAAQ+2B,YACnBj9G,cAAe,OACfd,SAAU,WACVmB,QAAS,OACTm/H,cAAe,SACf2rB,UAAW,SACXplJ,UAAW,OACX+oM,wBAAyB,QACzBppM,OAAQ,EACRnG,IAAK,EAELC,KAAM6uM,GACN52L,MAAO42L,GACP3uM,MAAO0uM,GACP1jG,UAAW,GAAF,OACN+J,IAAuB,CACtBogE,WAAY,aAAavtD,EAAe7D,cACxCixD,YAAa,aAAaptD,EAAe7D,eAC1C,GACE,GAAoB17H,KAG3BA,IAAS4hN,GAAUsE,YAAc,CAC/BzuM,KAAM6uM,IAERtmN,IAAS4hN,GAAU2D,gBAAkB,CACnC9tM,KAAM6uM,GACN52L,MAAO42L,GACP3uM,MAAO0uM,IAETrmN,IAAS4hN,GAAU4D,YAAc,CAC/B91L,MAAO,OACPjY,KAAM,GAERqvM,GAAiB,CACfjwE,SAAU,SAEZ+9D,GAAU+Q,IAAgBF,GAAiBr+F,GAAoBK,eAC/DmtF,GAAU+Q,GAAeF,GAAiBr+F,GAAoBS,eAC7D+sF,GAAU+Q,IAAgBF,GAAiBr+F,GAAoBqB,gBAC/DmsF,GAAU+Q,GAAeF,GAAiBr+F,GAAoBiB,gBAC/Du9F,GAEFp5K,SAAU,CACRkQ,EAAWlQ,SACX,CACEimB,UAAW,IAEbozJ,GAAuB,CACrBpzJ,UAAW,YAGfmwJ,WAAY,CACVlmK,EAAWkmK,WACX,CACEtqM,QAAS,OACTsyJ,eAAgB,YAElBi7C,GAAuB,CACrBnuM,OA3HiB,SA8HrBquM,aAAc,CACZrpK,EAAWqpK,aACX,CACEztM,QAAS,OACTm/H,cAAe,SACf3uD,SAAU,EACV9qE,UAAW,WAGfi9J,OAAQ,CACNv+H,EAAWu+H,OACX2rC,GACA,CACE3wE,UAAW,cAEb0sE,IACGkD,GAAuB,CACtB/8H,SAAU,GAEd+8H,GAAuB,CAErB78H,WAAY,IAGhBg8F,WAAY,CACVtoI,EAAWsoI,WACXtlD,EAAM3T,OACN,CACEl0G,MAAO0nH,EAAetC,SACtBpkH,WAAY,OACZM,aAAc,aACduuK,SAAU,aACVxuK,UAAW,aACX8tM,QAAS,QAEXpC,GAEFxvJ,kBAAmB,CACjB1Y,EAAW0Y,kBACX,CACEp3C,UAAW,QAEb6mM,GAAoB,CAClB/7H,SAAU,IAGdxjF,QAAS,CACPo3C,EAAWp3C,QACXshN,GACA,CACE5wM,cAAe,KAGnBytM,OAAQ,CACN/mK,EAAW+mK,OACX,CAEEz6H,WAAY,EACZm2H,UAAW,wBACX38H,WAAY,WAAW8jC,GAAiC,IAAIA,IAE9D69F,GAAkB,CAChB9rM,WAAYknH,EAAe3F,eAC3BqtF,eAAgB1nF,EAAe7D,gBAGnCgoF,YAAa,CACXhnK,EAAWgnK,YACXkD,GACA,CACE5wM,cAAe,GACfF,WAAY,KAGhB+rH,mBAAoB,CAClBmhF,YAAa,CACXxzN,KAAM,CACJktD,EAAWsmK,YACX,CACExrE,YAAa,GACb3/H,MAAO+yB,EAAM40F,QAAQnN,iBACrB75G,SAAU2uG,GAAc2E,OAE1B+5F,GAAuB,CACrBruE,YAAa,EACb9/H,OAAQ,OACRC,MAAO,SAGXoyJ,YAAa,CACXlyJ,MAAO+yB,EAAM40F,QAAQrN,0BCjW7Bz2H,EACA,CACEu8I,MAAO,UCZL,SAAUivE,GAAsBrtN,EAA8BstN,GAElE,IADA,IAAMC,EAAuC,GACzB,MAAAD,EAAA,eAAiB,CAAhC,IACGpjM,EAASlqB,EADD,MAGVkqB,GACFqjM,EAAgBp3N,KAAK+zB,GAIzB,OAAOqjM,ECuCT,I,SACM,GAAgBxuE,KActB,eAyBE,WAAY/+H,GAAZ,MACE,YAAMA,IAAM,KArBN,EAAA48J,MAAQ,cACR,EAAA2N,WAAa,cACb,EAAAijC,UAAY,cAMH,EAAAC,iBAA2B,IAIpC,EAAAC,cAAsC,IAAI,GAE1C,EAAAC,uBC5E+B,SAAC5jN,GACxC,IAAI6jN,EAEJ,OAAO,SAAChpI,GACDgpI,IACHA,EAAiB,IAAI/4I,IAErB+qE,GAAgB71I,EAAW,CACzB2kG,qBAAsB,WACpBk/G,EAAep1N,SAAQ,SAAC+B,GAAe,OAAA68G,qBAAA,UAK7C,IAAMkrC,EAAYzuI,uBAAsB,WACtC+5M,EAAerhI,OAAO+1D,GACtB19D,OAGFgpI,EAAenhN,IAAI61I,IDyDY,CAA0B,GAmTnD,EAAAn2G,UAAY,SAClBxqB,EACA3hB,EACA8F,EACAu9C,EACAwqK,GAGM,cAAErxM,EAAA,EAAAA,SAAU2vL,EAAA,EAAAA,UAClB,GAAI3vL,GAAY2vL,EAAW,CAGzB,IAAM2hB,EAAaD,EAAa,OAAM7tN,EAAQ8F,IAAM,CAAE0xB,UAAW6rB,IAAYrjD,EAAQ8F,GAErF0W,GAAYA,EAAS,EAAD,KAAMmF,GAAK,CAAEvpB,OAAQ,EAAKo1N,UAAUl0M,UAA0Bw0M,EAAYhoN,GAC9FqmM,GAAaA,EAAU2hB,EAAYhoN,KAK/B,EAAAioN,gBAAkB,WAExB,OAAO,EAAK/tM,MAAMxE,aAAe,EAAKwE,MAAMguM,aAuEtC,EAAAC,UAAY,SAAC/tM,EAA0BguM,GACrC,cAAAC,4BAAA,aACR,OAAOjuM,EAAM5f,KAAI,SAAAhN,GAAK,OAAAA,EAAA,QAAQkR,KAAK2pN,IAI7B,EAAAC,eAAiB,SAACluM,GACxB,OAAO,gCAAG,EAAK+tM,UAAU/tM,KAInB,EAAAmuM,qBAAuB,SAACruM,GAC9B,OAAK,EAAK+tM,kBAGH,gCAAG,EAAKA,mBAFN,MAMH,EAAAO,mBAAqB,SAACtuM,GACpB,IAAAi/J,EAAA,EAAAA,aAAcsvC,EAAA,EAAAA,WAChB,UAAE9yD,EAAA,EAAAA,eAAgB+yD,EAAA,EAAAA,cAElBC,EAAUhzD,GAAmBZ,GAAe9oC,OAE5C28F,EAAc,EAAKjoD,YAAYz+B,mBAChC,EAAKy+B,YAAYz+B,mBAAmBuuE,WACrC10M,EAEAikK,OAAejkK,EACfmkK,OAAkBnkK,EAOtB,MANsB,SAAlB2sN,EACFxoD,EAAkB,EAAKwnD,UAAUl0M,QAAU,EAAKk0M,UAAUl0M,QAAQuvB,YAAc,EAEhFi9H,EAAe0oD,IAAkB,EAAKhB,UAAUl0M,QAAU,EAAKk0M,UAAUl0M,QAAQuvB,YAAc,GAG1F4lL,EACL,gBAACzB,GAAK,GACJjS,QAAQ,EACRkQ,gBAAgB,EAChBjpD,UAAW,EAAK2sD,WAChB7F,gBAAgB,EAChBxsM,OAAQoyM,GACJH,GAEH,EAAKK,qBAAqB5uM,IAG7B,gBAAC,GAAO,GACN2hJ,eAAe,EACfb,SAAU,EACV4M,YAAY,EACZ9P,sBAAsB,EACtB2B,gBAAiBtR,GACjB6X,aAAcA,EACdE,gBAAiBA,GACbiZ,EAAY,CAChB/yK,UAAW,EAAKu6J,YAAY/E,QAC5BtpK,OAAQ,EAAKo1N,UAAUl0M,QACvB0oJ,UAAW,EAAK2sD,WAChBxoD,SAAU,EAAK6W,UACfpV,aAAc,EAAKinD,gBAElB,EAAKD,qBAAqB5uM,KAMzB,EAAA8uM,mBAAqB,SAAC9uM,GAC5B,OAAO,gBAACstI,GAAI,CAACphJ,UAAW,EAAKu6J,YAAYsoD,UAAWxnF,SAAS,cAAa,eAAc,KAgClF,EAAAynF,cAAgB,SAAChvM,GACf,QAAAghM,oBAAA,wBAEJp4G,EAA+C,CAAE1oF,MAAO,IACxD+uM,EAA8B,GAE5BC,EAAa,WACjB,IAAMC,EAAWvmH,EAAMruG,GACnB,CACE,uBAAK28B,KAAK,QAAQriC,IAAK+zG,EAAMruG,GAAE,kBAAmBquG,EAAMruG,IACrDquG,EAAM1oF,QAGX0oF,EAAM1oF,MAEV+uM,EAAe,EAAIA,EAAiBE,GAEpCvmH,EAAQ,CAAE1oF,MAAO,KAyCnB,OAPAF,EAAMhgB,QAAQxH,SAAQ,SAAC0oB,EAAuBpb,IA/BT,SAACob,EAAuBpb,GAY3D,OAAQob,EAAKw5J,UACX,KAAKurC,GAA6BxnN,OAChCmqG,EAAM1oF,MAAM5nB,OAAS,GAAK42N,IAE1B,IAAM30N,EAAK,EAAK+pJ,IAAMpjI,EAAKrsB,IAC3B+zG,EAAM1oF,MAAM/pB,KAAK6qN,EAAa,EAAD,GAAGzmN,GAAE,GAAK2mB,GAAI,CAAEpb,MAAK,IAAI,EAAKw9M,gBAC3D16G,EAAMruG,GAAKA,EACX,MACF,KAAK0rN,GAA6BtrC,QAChC70K,EAAQ,GAAK8iG,EAAM1oF,MAAM/pB,KAAK6qN,EAAa,EAAD,KAAM9/L,GAAI,CAAEpb,MAAK,IAAI,EAAKw9M,gBAEpE16G,EAAM1oF,MAAM5nB,OAAS,GAAK42N,IAC1B,MACF,QACEtmH,EAAM1oF,MAAM/pB,KAAK6qN,EAAa,EAAD,KAAM9/L,GAAI,CAAEpb,MAAK,IAAI,EAAKw9M,iBAM3D8L,CAA6BluM,EAAMpb,MAIrC8iG,EAAM1oF,MAAM5nB,OAAS,GAAK42N,IAEnB,gCAAGD,IAGJ,EAAA3L,cAAgB,SAACpiM,GACvB,OAAQA,EAAKw5J,UACX,KAAKurC,GAA6BtrC,QAChC,OAAO,EAAKQ,iBAAiBj6J,GAC/B,KAAK+kM,GAA6BxnN,OAChC,OAAO,EAAK4wN,cAAcnuM,GAC5B,QACE,OAAO,EAAKsiM,cAActiM,KAsBxB,EAAAsiM,cAAgB,SAACtiM,GACf,cAAAouM,sBAAA,0BACA,UAAAhC,uBAAA,WACFiC,SACW1tN,IAAfqf,EAAKpb,QAAuBwnN,IAAkBA,EAAgBvnN,QAAQmb,EAAKpb,QAAU,EAGjFwrK,EAAgBpwJ,EAAK6yF,OACvB,EAAK0yD,YAAY+oD,mBACjBD,IAAoC,IAAlBruM,EAAK9F,SACvB,EAAKqrJ,YAAYgpD,gCACjBF,EACA,EAAK9oD,YAAYipD,sBACC,IAAlBxuM,EAAK9F,SACL,EAAKqrJ,YAAYkpD,qBACjB,EAAKlpD,YAAYmpD,aAEb,IAAApuM,aAAA,eAEFquM,EAAwB,EAAKppD,YAAYz+B,mBAC1C,EAAKy+B,YAAYz+B,mBAAmB8nF,qBAIrCjuN,EAEJ,OAAQ,EAAKme,MAAM6tM,YAyBjB,gBAAC3zB,GAAQ,CACP3/L,GAAI,EAAKw1N,QAAU7uM,EAAKpb,MACxBjR,IAAKqsB,EAAKrsB,IACVumB,SAAU8F,EAAK9F,SACfoB,SAAU,EAAKy1J,aAAa/wJ,GAC5BuwK,WAAU,GACR,gBAAiB89B,EACjBj4C,aAAc,EAAKvF,kBAAkBj9K,KAAK,EAAMosB,GAChDq2J,aAAc,EAAKkG,kBAAkB3oL,KAAK,EAAMosB,GAChDs2J,YAAa,EAAKjF,iBAAiBz9K,KAAK,EAAMosB,GAC9CgW,KAAM,UACF,CACF,aAAchW,EAAKpb,MACnB,qBAAsBob,EAAK9F,WAG/Bqc,MAAOvW,EAAK3T,KACZiU,MAAOA,EAEP0uK,cAAe,EAAK8/B,mBAAmBl7N,KAAK,EAAMosB,GAClDhV,UAAWolK,EACXjuH,QAASksK,EACTjzM,OAAQuzM,EACRn2B,kBAAmB,EAAKg0B,cAAcrF,cAAcnnM,EAAKpb,OACzD6zL,YAAa,EAAK+zB,cAAcuC,gBAhDlC,gBAAC5lC,GAAa,CACZ9vL,GAAI,EAAKw1N,QAAU7uM,EAAKpb,MACxBjR,IAAKqsB,EAAKrsB,IAAG,aACDqsB,EAAKpb,MAAK,qBACFob,EAAK9F,SACzBA,SAAU8F,EAAK9F,SACflP,UAAWolK,EACX31J,QAAS,EAAKs2J,aAAa/wJ,GAE3Bo2J,aAAc,EAAKvF,kBAAkBj9K,KAAK,EAAMosB,GAEhDq2J,aAAc,EAAKkG,kBAAkB3oL,KAAK,EAAMosB,GAEhDs2J,YAAa,EAAKjF,iBAAiBz9K,KAAK,EAAMosB,GAC9CgW,KAAK,SAAQ,gBACEq4L,EAAiB,OAAS,QACzCliE,UAAWnsI,EAAKmsI,UAChB7rI,MAAOA,EAAK,gBACG,EAAKksM,cAAcrF,cAAcnnM,EAAKpb,OAAM,eAC7C,EAAK4nN,cAAcuC,eAEhCX,EAAepuM,EAAM,EAAKgvM,mBAiCzB,EAAAA,gBAAkB,SAAChvM,GACzB,OAAO,wBAAMhV,UAAW,EAAKu6J,YAAY0pD,oBAAqBjvM,EAAK3T,OAI7D,EAAAyiN,mBAAqB,SAAC9uM,GACpB,cAAAouM,eACR,YADQ,2BACcpuM,EAAM,EAAKgvM,kBAG3B,EAAArB,cAAgB,SAAClrD,GACnB,EAAK4mB,WAAWjxK,SAGlB,EAAKq0M,wBAAuB,WAC1B,IAAML,EAAkB,EAAKnmN,MAAMmmN,gBACnC,GAAI,EAAK/iC,WAAWjxK,QAClB,GAAIg0M,GAAmBA,EAAgB,KAAO,EAAKttM,MAAMhgB,QAAQstN,EAAgB,IAAIlyM,SAAU,CAC7F,IAAM7a,EAA8Bm8H,KAAeuwC,eAAkB,EAAK3oB,IAAG,QAAQgpE,EAAgB,IACjG/sN,GACF,EAAKgqL,WAAWjxK,QAAQ+nC,aAAa9gD,QAGvC,EAAKgqL,WAAWjxK,QAAQkJ,WAM3B,EAAKrb,MAAMipN,mBAAqB,EAAKjpN,MAAMipN,oBAAsBzsD,EAAW3H,YAC/E,EAAK9+E,SAAS,CACZkzI,kBAAmBzsD,EAAW3H,cAK5B,EAAAiW,aAAe,SAAC/wJ,GACtB,OAAO,SAACS,GACDT,EAAK9F,WACR,EAAKi1M,iBAAiB1uM,EAAOT,EAAKpb,OAC7B,EAAKka,MAAM6tM,aAEd,EAAK3wI,SAAS,CACZ69H,QAAQ,OAWV,EAAA/9B,UAAY,WACb,EAAKC,oBAA+Cp7K,IAA9B,EAAKq7K,qBAI9B,EAAKD,eAAgB,GAHrB1nJ,aAAa,EAAK2nJ,sBAClB,EAAKA,0BAAuBr7K,GAK9B,EAAKq7K,qBAAuBppK,YAAW,WACrC,EAAKmpK,eAAgB,IACpB,EAAKwwC,mBAuBF,EAAAhwC,kBAAoB,SAACv8J,EAAW+jI,GACtC,IAAI,EAAKm4B,2BASL,EAAKR,MAAMtjK,QACb,GAAK,EAAKsjK,MAAMtjK,QAAgBokK,UAC9B,IACG,EAAKd,MAAMtjK,QAAgBokK,YAC5B,MAAOr7K,UAIT,EAAKu6K,MAAMtjK,QAAQkJ,SASjB,EAAAmsM,WAAa,WACnB,EAAKzxI,SAAS,CAAE69H,QAAQ,KA6ClB,EAAAuV,gBAAkB,SAACrrE,GAER,EAAKsrE,gBAMtB,EAAKrzI,SAAS,CAAE0lF,UAAU,IAEtB,EAAKz7J,MAAM4zM,QAIX,EAAK/6L,MAAMnE,QACb,EAAKmE,MAAMnE,OAAOopI,KAId,EAAAurE,mBAAqB,SAACvrE,GAG5B,IADiB,EAAKsrE,gBAOtB,EAAK50C,yBAA2B,EAAKC,aAAa32B,IAE9C,EAAKjlI,MAAMhG,YACb,EAAKgG,MAAMhG,UAAUirI,IACjBA,EAAGzwD,mBAFT,CAOA,IAAIxqC,EACEvuB,EAAgB,EAAKt0B,MAAMmmN,gBAAgBh1N,OAAS,EAAK6O,MAAMmmN,gBAAgB,IAAM,EACrFmD,EAAiCxrE,EAAGx8F,QAAUw8F,EAAG/lF,QACjD67I,EAAS,EAAK5zM,MAAM4zM,OAE1B,OAAQ91D,EAAG//H,OACT,KAAKsyH,GACH,EAAKt6D,SAAS,CACZ69H,QAASA,IAEX,MAEF,KAAKvjE,GACH,IAAKujE,EACH,OAGF,EAAK79H,SAAS,CACZ69H,QAAQ,IAEV,MAEF,KAAKvjE,GACH,GAAIi5E,EAAgC,CAClC,GAAI1V,EAAQ,CACV,EAAK79H,SAAS,CAAE69H,QAAQ,IACxB,MAGF,OAEE,EAAK/6L,MAAM6tM,YACb,EAAK3wI,SAAS,CAAE69H,QAAQ,IACd,EAAKwV,gBACfvmK,EAAW,EAAK0mK,WAAWzrE,GAAK,EAAGxpH,EAAgB,EAAGA,IAExD,MAEF,KAAK+7G,GACCi5E,IACFxrE,EAAG1/H,kBACH0/H,EAAGrjI,kBAEA6uM,IAAmC1V,GAAW,EAAK/6L,MAAM6tM,YAC5D,EAAK3wI,SAAS,CAAE69H,QAAQ,IACd,EAAKwV,gBACfvmK,EAAW,EAAK0mK,WAAWzrE,EAAI,EAAGxpH,EAAgB,EAAGA,IAEvD,MAEF,KAAK+7G,GACE,EAAKx3H,MAAM6tM,cACd7jK,EAAW,EAAK0mK,WAAWzrE,EAAI,EAAG,EAAGxpH,IAEvC,MAEF,KAAK+7G,GACE,EAAKx3H,MAAM6tM,cACd7jK,EAAW,EAAK0mK,WAAWzrE,GAAK,EAAG,EAAKjlI,MAAMhgB,QAAQ1H,OAAS,EAAGmjC,IAEpE,MAEF,KAAK+7G,GAEH,MAEF,QACE,OAGAxtF,IAAavuB,IACfwpH,EAAG1/H,kBACH0/H,EAAGrjI,oBAIC,EAAA+uM,iBAAmB,SAAC1rE,GAG1B,IADiB,EAAKsrE,cACtB,CAIA,IAAMj0C,EAAkB,EAAKF,mBAAmBn3B,GAC1C81D,EAAS,EAAK5zM,MAAM4zM,OAE1B,IAAI,EAAK/6L,MAAMlE,UACb,EAAKkE,MAAMlE,QAAQmpI,IACfA,EAAGzwD,kBAFT,CAMA,OAAQywD,EAAG//H,OACT,KAAKsyH,GACH,EAAKt6D,SAAS,CACZ69H,QAASA,IAEX,MAEF,QAIE,YAHIz+B,GAAmBy+B,GACrB,EAAK79H,SAAS,CAAE69H,QAAQ,KAK9B91D,EAAG1/H,kBACH0/H,EAAGrjI,oBA0BG,EAAAgvM,eAAiB,SAAC3rE,GACxB,IAAIsR,EAIJ,EAAKolB,yBAA2B,EAAKC,aAAa32B,GAClD,IAAMwrE,EAAiCxrE,EAAGx8F,QAAUw8F,EAAG/lF,QAEvD,OAAQ+lF,EAAG//H,OACT,KAAKsyH,GACCi5E,EACF,EAAKvzI,SAAS,CAAE69H,QAAQ,IAEpB,EAAKn+B,MAAMtjK,UACbi9I,EAAiBrH,GAAiB,EAAK0tB,MAAMtjK,QAAS,EAAKsjK,MAAMtjK,QAAQ2yC,WAA0B,IAGvG,MAIF,KAAKurF,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACH,MAEF,KAAKA,IACEi5E,GAAkC,EAAK7zC,MAAMtjK,UAChDi9I,EAAiBzH,GAAkB,EAAK8tB,MAAMtjK,QAAS,EAAKsjK,MAAMtjK,QAAQ0c,YAA2B,IAEvG,MAEF,KAAKwhH,GACH,EAAKt6D,SAAS,CAAE69H,QAAQ,IACxB,MAEF,KAAKvjE,GAEH,YADA,EAAKt6D,SAAS,CAAE69H,QAAQ,IAG1B,QACE,OAGAxkD,GACFA,EAAe/zI,QAGjByiI,EAAG1/H,kBACH0/H,EAAGrjI,kBAGG,EAAAivM,aAAe,SAAC5rE,GACE,EAAKm3B,mBAAmBn3B,IAEzB,EAAK99I,MAAM4zM,SAChC,EAAK79H,SAAS,CAAE69H,QAAQ,IACxB91D,EAAGrjI,mBAIC,EAAAkvM,iBAAmB,SAAC7rE,GAC1B,IAAI,EAAKjlI,MAAMrE,UACb,EAAKqE,MAAMrE,QAAQspI,IACfA,EAAGzwD,kBAFT,CAOQ,IAAAumH,EAAA,QAAAA,OACS,EAAKwV,eAEJ,EAAKQ,sBACrB,EAAK7zI,SAAS,CACZ69H,QAASA,IAIb,EAAKiW,mBAAoB,IAGnB,EAAAC,qBAAuB,WAC7B,EAAKD,mBAAoB,GAGnB,EAAAt+D,SAAW,SAACzN,GAGlB,IAFiB,EAAKsrE,cAEP,CACT,EAAKvwM,MAAMpE,SACb,EAAKoE,MAAMpE,QAAQqpI,GAErB,IAAM99I,EAAwF,CAAEy7J,UAAU,GACtG,EAAKmuD,uBACN5pN,EAAsD4zM,QAAS,GAGlE,EAAK79H,SAAS/1E,KAQV,EAAAopN,YAAyC,WACzC,IAAAn1M,EAAA,QAAAA,SAEEm6F,EAAA,QAAAA,WAOR,YAJiB1zG,IAAbuZ,IACFA,EAAWm6F,GAGNn6F,GAGD,EAAAizK,eAAiB,SAACruK,GAChB,IAAAyX,EAAA,EAAAA,MAAO/b,EAAA,EAAAA,SAAUN,EAAA,EAAAA,SAEnBkzK,EAAc,EAAK7nB,YAAYz+B,mBAChC,EAAKy+B,YAAYz+B,mBAAmBvwG,WACrC51B,EAEJ,OAAO41B,EACL,gBAAC+1J,GAAK,CACJthL,UAAW,EAAKu6J,YAAYhvI,MAC5Bl9B,GAAI,EAAK6rL,SACT1qK,SAAUA,EACVY,OAAQgyK,EACRlzK,SAAUA,GAETqc,GAED,MA3mCJqoH,GAAuB,GAEf,IA2CJwtE,EA3CIO,EAAA,EAAAA,YAAanjC,EAAA,EAAAA,YAAawmC,EAAA,EAAAA,aAAcvlC,EAAA,EAAAA,mBAAoBwlC,EAAA,EAAAA,oBAAqBnxN,EAAA,EAAAA,Q,OAqCzF,EAAKskJ,IAAMtkI,EAAMzlB,IAAM8lJ,GAAM,YAC7B,EAAK+lC,SAAW,EAAK9hC,IAAM,SAC3B,EAAKyrE,QAAU,EAAKzrE,IAAM,QAC1B,EAAK8sE,UAAY,EAAK9sE,IAAM,UAC5B,EAAK24B,eAAgB,EAKnBqwC,EADEO,EACgB,EAAKwD,oBACrBrxN,OACwB6B,IAAxBsvN,EAAoCA,EAAsBD,GAG1C,EAAKG,oBACrBrxN,OACwB6B,IAAvB8pL,EAAmCA,EAAqBjB,GAI7D,EAAKgjC,cAAczF,cAAcjoN,GAEjC,EAAKmH,MAAQ,CACX4zM,QAAQ,EACRuS,gBAAe,EACf1qD,UAAU,EACVwtD,uBAAmBvuN,G,EAsjCzB,OAnpCkC,OAoGhC,sBAAW,8BAAe,C,IAA1B,WAIE,OAAOwrN,GAHC,WAAArtN,QACA,WAAAstN,kB,gCAKH,YAAA5+G,qBAAP,WACEn5E,aAAanzB,KAAK86K,uBAGb,YAAAp3E,iCAAP,SAAwC0hD,GAGtC,IAAI8pE,EAIEC,EAAmB/pE,EAASxnJ,UAAYoC,KAAK4d,MAAMhgB,aAiBzB6B,IAA9B2lJ,EAbE8pE,EAFA9pE,EAASqmE,YACP0D,QAAqD1vN,IAAjC2lJ,EAAS2pE,oBACb,sBAEA,eAGhBI,QAAoD1vN,IAAhC2lJ,EAASmkC,mBACb,qBAEA,gBAMnBnkC,EAAS8pE,KAAqBlvN,KAAK4d,MAAMsxM,KAAoBC,GAE9DnvN,KAAK86E,SAAS,CACZowI,gBAAiBlrN,KAAKivN,oBAAoB7pE,EAASxnJ,QAASwnJ,EAAS8pE,OAKpE,YAAAvlH,mBAAP,SAA0Bq0C,EAA2BwG,IAC1B,IAArBA,EAAUm0D,SAAyC,IAAtB34M,KAAK+E,MAAM4zM,SAC1C34M,KAAKm7K,eAAgB,EAEjBn7K,KAAK4d,MAAMgiJ,WACb5/J,KAAK4d,MAAMgiJ,cAKV,YAAA93J,OAAP,e,IAAA,OACQ3P,EAAK6H,KAAKkiJ,IAEVtkI,EAAQ5d,KAAK4d,MAEjB9T,EAAA,EAAAA,UACAurB,EAAA,EAAAA,MACAz3B,EAAA,EAAAA,QACAqtJ,EAAA,EAAAA,UACA3xI,EAAA,EAAAA,SACAwzK,EAAA,EAAAA,aACAvb,EAAA,EAAAA,YACA,IAAAr3J,OACAy0B,EAAA,EAAAA,MACAw9K,EAAA,EAAAA,WACAtvC,EAAA,EAAAA,aACA,IAAAuyC,qBAAA,IAAgB,EAAhB,iBACA,IAAAC,yBAAA,IAAoB,EAApB,0BACA,IAAAC,yBAAA,IAAoB,EAApB,0BACA,IAAAxhC,qBAAA,IAAgB,EAAhB,sBAEI,aAAE6qB,EAAA,EAAAA,OAAQuS,EAAA,EAAAA,gBAAiB8C,EAAA,EAAAA,kBAE3BuB,EAAsB3xM,EAAM2xM,qBAAuB3xM,EAAM4xM,qBAAuBxvN,KAAK2rN,gBAGvF/tN,IAAYoC,KAAKsrN,cAAcmE,eACjCzvN,KAAKsrN,cAAczF,cAAcjoN,GAGnC,IAAMutN,EAAkBF,GAAsBrtN,EAASstN,GACjDx2D,EAAWlc,GAAe56H,EAAO26H,IAEjCv/H,EAAWhZ,KAAKmuN,cAEhBuB,EAAiBv3N,EAAK,gBACtBw3N,EAAuB32M,OACzBvZ,EACAk5M,GAAqC,IAA3BuS,EAAgBh1N,QAAgBg1N,EAAgB,IAAM,EAChElrN,KAAK2tN,QAAUzC,EAAgB,QAC/BzrN,EAEJO,KAAKqkK,YAAc,GAAcurD,EAAY,CAC3CjhL,MAAK,EACL7kC,UAAS,EACT+lN,YAAa/iC,GAAgBA,EAAa52L,OAAS,GACnDi4L,WAAY94J,EACZsjL,OAAM,EACNr/L,SAAQ,EACRN,SAAQ,EACR82M,wBAAyB3E,EAAgBj1N,OACzC65N,eAA0B,QAAZ,EAAE5D,SAAU,eAAEriN,UAC5BkmN,iBAA8B,QAAd,EAAEnzC,SAAY,eAAE/yK,UAChCkkN,kBAAmBA,IAGrB,IAAM5/B,IAA6BtB,GAAgBA,EAAa52L,OAAS,EAEzE,OACE,uBAAK4T,UAAW9J,KAAKqkK,YAAY9wK,MAC9Bu6L,EAAc9tL,KAAK4d,MAAO5d,KAAKisL,gBAChC,gBAAC,GAAU,CAAC1a,YAAaA,EAAav4J,SAAUA,IAC7C,SAACi8J,GAAuC,OACvC,2BACMA,EAAgB,sBACAj8J,EACpBmB,IAAK,EAAKixM,UACVjzN,GAAIA,EACJg9B,SAAUnc,GAAY,EAAI,EAC1B8b,KAAK,WAAU,gBACD,UAAS,gBACR6jL,EAAS,OAAS,QAAO,aAC5B1tD,EAAS,kBAEnB51H,IAAU41H,EAAYrE,GAAyB,EAAKo9B,SAAU,EAAKgrC,gBAAavvN,EAAS,mBAEzEmnJ,GAChBquB,EAAiB,oBACjBmZ,EAAkB,EAAKlsC,IAAM,qBAAkBziJ,GAChD,wBACsBkwN,EAAoB,gBAC5Br2M,EAAQ,gBACRN,EAAQ,gBACR2/L,EAAS,EAAKgV,aAAUluN,GACnCi1J,EAAQ,CACZ5qJ,UAAW,EAAKu6J,YAAY9uI,SAC5B9b,OAAQ,EAAKy0M,gBACbt2M,UAAW,EAAKw2M,mBAChB10M,QAAS,EAAK60M,iBACdh1M,QAAS,EAAKm1M,iBACdp3J,YAAa,EAAKu3J,qBAClBr1M,QAAS,EAAK82I,WAEd,wBAAMn4J,GAAI,EAAK62N,UAAWllN,UAAW,EAAKu6J,YAAYjlJ,MAAK,YAAY,SAAQ,eAAc,GAE3F+rM,EAAgBj1N,OACZk5N,EAAcjE,EAAiB,EAAKa,gBACpCuD,EAAoB3xM,EAAO,EAAKquM,uBAEtC,wBAAMniN,UAAW,EAAKu6J,YAAY4rD,kBAC/BX,EAAkB1xM,EAAO,EAtCS,yBA2C1C+6L,GAAU0W,EAAkB,EAAD,KAAMzxM,GAAK,CAAEgiJ,UAAW5/J,KAAKusN,aAAcvsN,KAAKksN,oBAC3E99B,GACC,uBAAKt5J,KAAK,QAAQ38B,GAAIu3N,EAAgB5lN,UAAW9J,KAAKqkK,YAAYyoB,cAC/DA,KAOJ,YAAA1sK,MAAP,SAAa8vM,GACPlwN,KAAKorN,UAAUl0M,UACjBlX,KAAKorN,UAAUl0M,QAAQkJ,QAEnB8vM,GACFlwN,KAAK86E,SAAS,CACZ69H,QAAQ,MAMT,YAAAsV,iBAAP,SAAwB1uM,EAAwC7b,GAAhE,WACQ,aAAE9F,EAAA,EAAAA,QAAS0qL,EAAA,EAAAA,YAAawmC,EAAA,EAAAA,aAAcrD,EAAA,EAAAA,YAAa0E,EAAA,EAAAA,iBACjD,aAAAjF,uBAAA,WACFjqK,IAAmBiqK,GAAkBA,EAAgBvnN,QAAQD,IAAU,EACzE0sN,EAAuB,GAK3B,GAHA1sN,EAAQrO,KAAKyf,IAAI,EAAGzf,KAAK0f,IAAInX,EAAQ1H,OAAS,EAAGwN,SAG7BjE,IAAhB6oL,QAA8C7oL,IAAjBqvN,GAKjC,GAAKrD,GAAgB0E,GAAoBzsN,IAAUwnN,EAAgB,GAAnE,CAEO,GAAIO,EAET,GADA2E,EAAalF,EAAkBlrN,KAAKqwN,WAAWnF,GAAmB,GAC9DjqK,EAAS,CACX,IAAM/lC,EAAWk1M,EAAWzsN,QAAQD,GAChCwX,GAAY,GAEdk1M,EAAWxsN,OAAOsX,EAAU,QAI9Bk1M,EAAWr8N,KAAK2P,QAIlB0sN,EAAa,CAAC1sN,GAGhB6b,EAAMqzE,UAEN5yF,KAAK86E,SACH,CACEowI,gBAAiBkF,IAEnB,WACE,EAAKrmL,UAAUxqB,EAAO3hB,EAAS8F,EAAOu9C,EAASwqK,YA9BjDzrN,KAAK+pC,UAAUxqB,EAAO3hB,EAAS8F,EAAOu9C,EAASwqK,IA4D3C,YAAA4E,WAAR,SAAmBpxN,GAEjB,IADA,IAAMqxN,EAAW,GACK,MAAArxN,EAAA,eAAO,CAAxB,IAAMd,EAAO,KAChBmyN,EAASv8N,KAAKoK,GAEhB,OAAOmyN,GAUD,YAAAhC,WAAR,SACE/uM,EACAgxM,EACA7sN,EACA21B,GAEQ,IAAAz7B,EAAA,WAAAA,QAER,GAAIy7B,IAAkB31B,GAA4B,IAAnB9F,EAAQ1H,OACrC,OAAOmjC,EAWL31B,GAAS9F,EAAQ1H,OACnBwN,EAAQ,EACCA,EAAQ,IACjBA,EAAQ9F,EAAQ1H,OAAS,GAK3B,IAFA,IAAIs6N,EAAc,EAGhB5yN,EAAQ8F,GAAO40K,WAAa,GAAqBj8K,QACjDuB,EAAQ8F,GAAO40K,WAAa,GAAqBC,SACjD36K,EAAQ8F,GAAOsV,UACf,CAEA,GAAIw3M,GAAe5yN,EAAQ1H,OACzB,OAAOmjC,EAGL31B,EAAQ6sN,EAAY,EACtB7sN,EAAQ9F,EAAQ1H,OACPwN,EAAQ6sN,GAAa3yN,EAAQ1H,SACtCwN,GAAS,GAGXA,GAAgB6sN,EAChBC,IAIF,OADAxwN,KAAKiuN,iBAAiB1uM,EAAO7b,GACtBA,GA+ED,YAAA8oN,qBAAR,SAA6B5uM,GACnB,QAAA6yM,oBAAA,2BAAmCp7L,EAAA,EAAAA,MAAO41H,EAAA,EAAAA,UAAWwgE,EAAA,EAAAA,YAE7D,OACE,uBACE3hN,UAAW9J,KAAKqkK,YAAYqsD,qBAC5B94M,UAAW5X,KAAKwuN,eAChB90M,QAAS1Z,KAAKyuN,aACdt0M,IAAKna,KAAKw6K,MACVrlJ,SAAU,GAEV,gBAAC,GAAS,CACRhb,IAAKna,KAAKmoL,WACVnxJ,UAAWq1H,GAAmB2F,SAC9B75J,GAAI6H,KAAK2tN,QACT7jN,UAAW9J,KAAKqkK,YAAYssD,cAC5B77L,KAAK,UAAS,aACFm2H,EAAS,kBACJ51H,IAAU41H,EAAYjrJ,KAAKgkL,cAAWvkL,EAAS,uBAC1CgsN,GAErBgF,EAAa7yM,EAAO5d,KAAK4sN,kBA+E1B,YAAA7zC,iBAAR,SAAyBj6J,GACf,IAAApb,EAAA,EAAAA,MAAOjR,EAAA,EAAAA,IACf,OAAIiR,EAAS,EACJ,uBAAKoxB,KAAK,YAAYriC,IAAKA,EAAKqX,UAAW9J,KAAKqkK,YAAYusD,kBAE9D,MAGD,YAAA3D,cAAR,SAAsBnuM,GACZ,iBAAAouM,sBAAA,6BACAz6N,EAAA,EAAAA,IAAK0F,EAAA,EAAAA,GACb,OACE,uBAAKA,GAAIA,EAAI1F,IAAKA,EAAKqX,UAAW9J,KAAKqkK,YAAYwsD,oBAChD3D,EAAepuM,EAAM9e,KAAK8tN,mBAyJzB,YAAAn+C,kBAAR,SAA0B7wJ,EAAW+jI,GAC/B7iJ,KAAKg7K,2BAIan4B,EAAG9lF,cACX38C,SAGR,YAAA+vJ,iBAAR,SAAyBrxJ,EAAW+jI,GAClC,IAAMzC,EAAgByC,EAAG9lF,cACzB/8D,KAAKm7K,eAAgB,EAEhBn7K,KAAK66K,eAAiBtwK,SAAS8b,gBAAkB+5H,GAItDA,EAAchgI,SA0BR,YAAA46J,wBAAR,WACE,OAAQh7K,KAAK66K,gBAAkB76K,KAAKm7K,eAQ9B,YAAA8zC,oBAAR,SACErxN,EACA0qL,GAEA,QAAoB7oL,IAAhB6oL,EACF,OAAItoL,KAAK4d,MAAM6tM,YACNzrN,KAAK8wN,uBAAuBlzN,IAGX,KADpBy7B,EAAgBr5B,KAAK2iN,kBAAkB/kN,EAAS,OACxB,CAACy7B,GAAiB,GAC3C,IAAKzlC,MAAMW,QAAQ+zL,GAExB,OAA0B,KADpBjvJ,EAAgBr5B,KAAK2iN,kBAAkB/kN,EAAS0qL,IACxB,CAACjvJ,GAAiB,GAIlD,IADA,IAAM6xL,EAA4B,GAChB,MAAA5iC,EAAA,eAAa,CAA1B,IACGjvJ,EADG5mC,EAAG,MAEO,KADb4mC,EAAgBr5B,KAAK2iN,kBAAkB/kN,EAASnL,KAC9By4N,EAAgBn3N,KAAKslC,GAE/C,OAAO6xL,GAGD,YAAA4F,uBAAR,SAA+BlzN,GAC7B,OAAOA,EACJM,KAAI,SAAC4pB,EAAyBpkB,GAAkB,OAACokB,EAAOsN,SAAW1xB,GAAnB,KAChD/N,QAAO,SAAA+N,GAAS,WAAAA,MAGb,YAAAi/M,kBAAR,SAA0B/kN,EAA4B0qL,GACpD,OAAOvjJ,GAAUnnC,GAAS,SAAAkqB,GAExB,OAAmB,MAAfwgK,EACKxgK,EAAOr1B,MAAQ61L,IAGbxgK,EAAOsN,YAActN,EAAO8gK,eA2JnC,YAAApP,aAAR,SAAqB32B,GACnB,OAAOA,EAAG//H,QAAUsyH,IAA2B,SAAXyN,EAAGpwJ,KAajC,YAAAunL,mBAAR,SAA2Bn3B,GACzB,IAAMo3B,EAA2Bj6K,KAAKu5K,0BAA4Bv5K,KAAKw5K,aAAa32B,GAEpF,OADA7iJ,KAAKu5K,0BAA2B,IACvBU,KAA8B1iB,MAAWC,OAkJ5C,YAAAm3D,mBAAR,WACU,IAAAnuD,EAAA,WAAAA,SACAuwD,EAAA,WAAAA,oBACR,OAAQ/wN,KAAK4uN,oBAA6C,IAAxBmC,IAAiCvwD,GAhpCvD,EAAA35J,aAAe,CAC3BjJ,QAAS,IAFAozN,EAAY,GADxB/3D,IACY+3D,GAAb,CAAkC,aElD5B,GAAmB,CACvBz9N,KAAM,wBACN8hC,MAAO,oBACPE,SAAU,cACVnW,MAAO,oBACP6wM,iBAAkB,+BAClBtD,UAAW,wBACXrtD,QAAS,sBACT60C,MAAO,oBACPwc,cAAe,oBACfnD,aAAc,mBACdoD,gBAAiB,sBACjB7C,mBAAoB,yBACpB8C,mBAAoB,qBACpBI,mBAAoB,iCACpBC,cAAe,+BAMXC,KAAuB,OACvB1gG,GAAoB,KzclCxB,yFyckCuDlnH,QAAQ,UAAW,KAAK,KzcLxE,CACL+jK,kBAAmB,OACnBC,qBAAsB,SycMzB,IAEK6jD,GAAgD,CACpD1qG,UAAW,GAAF,SACN+J,IAAuB,CACtB1lF,gBAAiB,YACjB2rB,YAAa,YACb96C,MAAO,iBACR,IACEu1M,KAIDE,GAAqC,CACzC3qG,WAAS,MACP,GAAC+J,IAAuB,CACtB/5D,YAAa,aAEhB,KAGG46J,GAAwB5gG,GAAkB,EzcpDZ,K0cJvB6gG,GAAoD31E,GAI/D,IDsD6E,SAAAh+H,G,0BAE3E+wB,EAAA,EAAAA,MACAkhL,EAAA,EAAAA,SACA1hC,EAAA,EAAAA,SACArkL,EAAA,EAAAA,UACA6uM,EAAA,EAAAA,OACA3/L,EAAA,EAAAA,SACAM,EAAA,EAAAA,SACAw2M,EAAA,EAAAA,uBACAC,EAAA,EAAAA,eACAC,EAAA,EAAAA,iBACAhC,EAAA,EAAAA,kBAGF,IAAKr/K,EACH,MAAM,IAAI/yC,MAAM,mEAGlB,IAAM41N,EAAmBj+F,GAAoB,GAAkB5kF,GACvD40F,EAAA,EAAAA,QAASD,EAAA,EAAAA,eAAgBphC,EAAA,EAAAA,QAASuhC,EAAA,EAAAA,MAEpCguF,EAAuD,CAC3D71M,MAAO0nH,EAAezB,qBAGlB6vF,EAA0D,CAC9D91M,MAAO0nH,EAAejC,cAGlBswF,EAA2B,CAC/Bj7J,YAAa4sE,EAAe1G,WAGxBg1F,EAA4B,CAChCJ,EAAiBhE,aACjB,CACEziL,gBAAiB,cACjB3vB,UAAW,aACXwwC,OAAQ,UACRvvC,QAAS,OACT4wJ,WAAY,SACZr0J,QAAS,QACT8C,MAAO,OACP6yJ,UAzEuB,GA0EvB3xJ,WAAY,GACZnB,OAAQ,EACRP,SAAU,WACViB,OAAQ,wBACRw4D,aAAc,EACd82G,SAAU,aACVvuK,aAAc,aACd/B,UAAW,OAEX,2BAA4B,CAC1BO,MAAO,UAKPm2M,EAA8BvuF,EAAexD,0BAE7CgyF,EAAgB,SAAClpC,G,MACrB,YADqB,IAAAA,OAAA,GACd,CACLliE,WAAS,GACP,gBAAiB,CACf,CACE9qG,MAAO0nH,EAAezB,oBACtB92F,gBAAkB69I,EAAwDipC,EAA3CvuF,EAAe/C,2BAEhD6wF,IAEF,UAAW,CACT,CACErmL,gBAAkB69I,EAA6BipC,EAAhB,eAEjCT,IAEF,WAAY,CACV,CACEx1M,MAAO0nH,EAAezB,oBACtB92F,gBAAkB69I,EAA6CtlD,EAAe/C,0BAA/C+C,EAAejF,gBAEhD+yF,KAEF,EAAC,IAAIrgG,GAAuB,kBAAmB,CAC7Cv1G,KAAM,EACND,IAAK,EACLmG,OAAQ,EACR+R,MAAO,GAET,EAACg9F,IAAuB,CACtBt0G,OAAQ,QAEX,KAICmxM,EAAoB,EACrBsE,EAAiB,CACpB,CACE7mL,gBAAiB8mL,EACjBj2M,MAAO0nH,EAAezB,qBAExBiwF,GAAc,GACdV,KAGI7D,EAAoB,EACrBqE,EAAiB,CACpB,CACEh2M,MAAO0nH,EAAevC,aACtBn1E,OAAQ,UACR86D,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,WACPO,OAAQ,QAEX,MAIC41M,EACJ/D,IAAsBn1D,GAAcn3I,OAC7BwgF,EAAQg3B,eAAc,IAAIh3B,EAAQg3B,eAAc,OACnD,OAAOh3B,EAAQg3B,eAAc,IAAIh3B,EAAQg3B,eAEzC84F,EACJhE,IAAsBn1D,GAAcn3I,OAChC,OAAOwgF,EAAQg3B,eAAc,IAAIh3B,EAAQg3B,eACtCh3B,EAAQg3B,eAAc,IAAIh3B,EAAQg3B,eAAc,OAEzD,MAAO,CACL3lI,KAAM,CAACi+N,EAAiBj+N,KAAMuW,GAC9BurB,MAAOm8L,EAAiBn8L,MACxBE,SAAU,CACRi8L,EAAiBj8L,SACjB8uG,GACAZ,EAAM9T,OACN,CACE/zG,MAAO0nH,EAAejC,aACtB3qE,YAAa4sE,EAAevB,YAC5B7mH,SAAU,WACVg6C,QAAS,EACTuqH,WAAY,OACZ/4D,WAAS,KACP,EAAC,YAAc8qG,EAAiBpyM,OAAQ,EACrCpG,GAAYy4M,EACb,CAAE/6J,YAAaiiJ,EAASp1E,EAAQnN,iBAAmBmN,EAAQrN,gBAC3Dm7F,IAEF,EAAC,YAAcG,EAAiBpyM,OAAQ,EACrCpG,GAAYy4M,EACb,CAAE/qG,WAAS,KAAI,EAAC+J,IAAuB,CAAE70G,MAAO,aAAa,KAG/D,EAAC,iBAAkB,CACjB,CACEI,cAAe,OACf3S,QAAS,KACT6R,SAAU,WACVE,UAAW,aACXG,IAAK,MACLC,KAAM,MACNE,MAAO,OACPD,OAAQ,OAERU,OAASnD,EAAiD,OAAtC,aAAauqH,EAAQ9N,aACzC9gD,aAAc,MAEd+xC,WAAS,KACP,EAAC+J,IAAuB,CACtB70G,MAAO,aAEV,KAGL,EAAC,aAAe41M,EAAiBpyM,OAAQ,EACtCpG,GAAYy4M,EACb,CAAE/6J,YAAa6sE,EAAQ9N,cACvB47F,IAGF,EAAC,YAAcG,EAAiB7E,YAAa3zM,GAAY04M,EACzD,EAAC,YAAcF,EAAiB7E,WAAY,EACzC3zM,GAAY04M,EACb,CAAEhrG,WAAS,KAAI,EAAC+J,IAAuB,CAAE70G,MAAO,aAAa,KAE/D,EAAC,aAAe41M,EAAiB7E,YAAa3zM,GAAY04M,EAE1D,EAAC,YAAcF,EAAiBP,qBAC7Bj4M,GAAY04M,EACf,EAAC,YAAcF,EAAiBP,qBAC7Bj4M,GAAY04M,EACf,EAAC,aAAeF,EAAiBP,qBAC9Bj4M,GAAY04M,EAEf,EAAC,YAAcF,EAAiBN,eAAgBS,EAChD,EAAC,aAAeH,EAAiBN,eAAgBS,EAClD,IAEHhZ,GAAU,UACV3/L,GAAY,cACZM,GAAY,cACZA,IACG60K,GAAY,CACXznE,WAAS,GACP,UAAW,CACTr9G,QAAS,MACTuS,MAAO0nH,EAAe1G,UACtB1hH,SAAU,WACVK,KAAM,EACNkY,OAAQ,KAEV,EAACg9F,IAAuB,CACtB/J,UAAW,CACT,SAAU,CACRjzF,OAAQ,MAIf,KAGPrU,MAAO,CACLoyM,EAAiBpyM,MACjBilH,GACA,CACEt5F,gBAAiBu4F,EAAepF,gBAChC8oC,YAAa,EACbC,YAAa,QACbvwG,YAAa4sE,EAAetB,YAC5BrtD,aAAcgkI,EAASoZ,EAAwB7vH,EAAQg3B,eACvDttE,OAAQ,UACRvvC,QAAS,QACTZ,OAzQgB,GA0QhBmB,WAAYq1M,GACZr5M,QAAS,eACTsC,SAAU,WACVG,SAAU,SACV2B,WAAY,SACZo+H,aAAc,YAEhB00E,GAA0B,CAAC0B,EAAiBP,mBAAoB,CAAEr1M,MAAO0nH,EAAepB,uBACxF2tF,GAAY,CAAC2B,EAAiBN,cAAeS,GAC7C34M,GAAY,CACV+xB,gBAAiBu4F,EAAelD,mBAChCjkH,OAAQ,OACRP,MAAO0nH,EAAevC,aACtBn1E,OAAQ,UACR86D,WAAS,KACP,EAAC+J,IAAoB,GACnBt0G,OAAQ,qBACRP,MAAO,WACPmvB,gBAAiB,Uzc7RpB,CACLuiI,kBAAmB,OACnBC,qBAAsB,Syc8RjB,KAGL0iD,iBAAkB,CAChBuB,EAAiBvB,iBACjB,CACE/0M,SAAU,WACVK,IAAK,EACLkY,MAAO,EACPhY,OAxSgB,GAyShBmB,WAAYq1M,KAEbj5M,GAAY,CACX4yC,OAAQ,YAGZ+gK,UAAW,CACT6E,EAAiB7E,UACjB,CAAE/wM,MAAO2nH,EAAQnN,iBAAkB75G,SAAUknH,EAAMhU,MAAMlzG,SAAUP,cAAe,QAClFhD,GAAY,CACV4C,MAAO0nH,EAAevC,aACtBra,WAAS,KACP,EAAC+J,IAAoB,GAAK70G,MAAO,YzctTlC,CACL0xJ,kBAAmB,OACnBC,qBAAsB,SycqTjB,KAGLuf,aAAc,EAAF,GAAIlxK,MAAO0nH,EAAe1G,WAAcjuF,EAAM80F,MAAMhU,OAAK,CAAE51G,WAAY,IACnFylJ,QAAS,CACPkyD,EAAiBlyD,QACjB,CACEh7B,UAAWpiC,EAAQ62B,WACnBpkD,aAAcq9I,EACdtrG,WAAS,KACP,EAAC,oBAAqB,CAAE/xC,aAAcq9I,GACvC,IAEHhC,GAEFU,qBAAsB,CAAEhqG,UAAW,CAAE,UAAW,CAAExxD,QAAS,KAC3Dy7J,cAAe,CAACa,EAAiBb,cAAe,CAAEt0M,QAAS,UAC3DmxM,aAAc,EAAIoE,EAAiB,CAAEE,MACrCxE,qBAAsBA,EACtBC,qBAAsBA,EACtBF,gCAAiC,CAACC,EAAsBC,EAAsB,CAAExiL,gBAAiB,gBACjGqiL,mBAAoB,EAAIwE,EAAiB,CAAE,CAAEv1M,QAAS,UACtDu0M,gBAAiB,CAACY,EAAiBZ,gBAAiB,CAAEn1M,OAAQ,EAAGsvB,gBAAiBu4F,EAAe9D,cACjGuuF,mBAAoB,CAClByD,EAAiBzD,mBACjB,CACE1yM,SAAU,SACV2B,WAAY,SACZo+H,aAAc,WACd8rB,SAAU,EACVtsB,SAAU,OACV6wC,SAAU,aACVvuK,aAAc,aACdhB,OAAQ,QAGZ20M,mBAAoB,CAClBW,EAAiBX,mB,OAEZptF,EAAM9T,QAAM,CACfjzG,WAAYuuG,GAAYsF,SACxB30G,MAAO0nH,EAAexE,WACtB1iH,WAAY,OACZ2uB,gBAAiB,cACjB5uB,OAAQ,OACRV,OAlWqB,GAmWrBmB,WAnWqB,GAoWrBgvC,OAAQ,UACRhzC,QAAS,QACT6mK,WAAY,OACZtkK,UAAW,OACXurG,WAAS,KACP,EAAC+J,IAAoB,GACnB70G,MAAO,Yzc5WV,CACL0xJ,kBAAmB,OACnBC,qBAAsB,S,MycgXtB3nC,mBAAoB,CAClBvwG,MAAO,CAAE9hC,KAAM,CAAE8oB,QAAS,iBAC1BqxM,gBAAiB,CACfn6N,KAAM,CACJqlB,QAAS,GAEXyc,MAAO,CACL2kH,UAAW,UACXphI,QAAS,QACT8C,MAAO,SAGXy4L,MAAO,CACL5gN,KAAM,CAACw8N,GACPrX,KAAM,CACJhyF,WAAS,KAEP,EAAC4qG,IAAwB,CAEvB51M,MAAO,KAEV,IAEHouM,aAAc,CAAElxM,QAAS,sBChaNnZ,EAAW,CACpCu8I,MAAO,aCPHk2E,GAA2C,CAAE38L,SAAU,CAAE7Z,MAAO,MA8DzDy2M,GAAmB,SAACv0M,GAC7B,IAAOzlB,EAAwBylB,EAAxBzlB,GAAIhG,EAAoByrB,EAApBzrB,MAAOioB,EAAawD,EAAbxD,SAClB,KAAwCtE,IAAMyoE,WAA9C,GAAO6zI,EAAP,KAAqBC,EAArB,KAeMC,EA9DiB,SAACn6N,GACxB,OAAOA,GACH,IAAK,oBACL,IAAK,4BACL,IAAK,6BACL,IAAK,qCAED,MAAO,eAEX,IAAK,gBACL,IAAK,cAED,MAAO,QAEX,IAAK,wBAED,MAAO,wBAEX,IAAK,kBAED,MAAO,kBAEX,IAAK,2BAED,MAAO,YACX,IAAK,WACD,MAAO,WACX,IAAK,4BACD,MAAO,4BACX,IAAK,kBACL,IAAK,0BACD,MAAO,kBACX,IAAK,UACL,QAEI,MAAO,WA2BYo6N,CAAmBp6N,GAKxCq6N,EAAmDlN,GAAgBgN,GA3EjEp0N,KAAI,SAAC4pB,GAAD,MACR,CACIr1B,IAAKq1B,EACL3c,KAAM2c,MA2Ed,OACG,kBAACypM,GAAD,CACKjpC,YAAa8pC,GAA4C,IAA5BA,EAAa3/N,IAAuB,MAAO2/N,EAAa3/N,SAAOgN,EAC5F2a,SAxBS,SACTmF,EACAuI,EACApkB,GAEA,IAAI+uN,EAAe,OAAG3qM,QAAH,IAAGA,OAAH,EAAGA,EAAQ3c,KACZ,QAAfsnN,IACCA,GAAa,GAEjBr4M,EAASjiB,EAAIs6N,GACbJ,EAAgBvqM,IAgBhB1O,aAAuB,IAAVjnB,EAAkB,MAAOA,EACtCyL,QAAS40N,EACTt4M,OAAQg4M,M,6BCjFdzxK,I,YAAagmF,GAAe,CAC9BnrH,SAAU,CACN45C,QAAS,OACT,SAAU,CACN/4C,OAAO,kBAIfu2M,yBAA0B,CACtBr2M,QAAS,OACTm6C,UAAW,EACXjT,WAAY,WAIPovK,GAAgB,SAAC/0M,GAC1B,IAAQzlB,EAAsCylB,EAAtCzlB,GAAIhG,EAAkCyrB,EAAlCzrB,MAAOioB,EAA2BwD,EAA3BxD,SAAUzd,EAAiBihB,EAAjBjhB,aAE7B,KAAoC4hF,mBAASpsF,GAA7C,GAAOygO,EAAP,KAAmBC,EAAnB,KAEA,OACI,kBAAC,WAAD,KAGI,kBAAC,KAAD,CACI1gO,MAAOygO,EACPj2N,aAAci2N,EACdE,cAAe,SAAAjxN,GAAI,OAAIgxN,EAAchxN,IACrC4X,OAAQ,SAACxZ,EAAQqgD,GAAwBlmC,EAASjiB,EAAI8H,EAAEjK,OAAO7D,QAC/D8b,UAAW,SAAApM,GAAI,OAAIA,GAAQoM,qBAAUpM,EAAMmJ,aAAU+H,GAAI,QACzD6F,QAAS,GACTD,MAAO,CAEH4D,SAAU,GACVo4D,aAAc,EACdx4D,OAAO,oBACPoyJ,UAAW,GACX7tJ,UAAW,IACXrF,SAAU,OACV65C,QAAS,QAEbp8C,kBAAmB2nC,GAAWnlC,WAGjC3e,GAAgB,kBAAC,GAAD,CAAemN,UAAW22C,GAAWiyK,yBAA0BvnN,KAAK,uBAAuBoO,QAAS,WAAQa,EAASjiB,EAAIwE,GAAek2N,EAAcl2N,Q,mmDC7CnL,IAAMkrB,GAAQ,CACV4C,KADU,OAEVC,KAFU,OAGVzR,KAHU,OAIVpX,KAJU,OAKVsJ,KAAM,QAGJ6vB,GAASppC,cAAf,IAEAi2B,gB,IA6CqB3R,G,uBACjB,G,sNACI,KAEA,oB,EACA,gB,EAEA,aAAoB,uBAApB,I,EACA,OAAc,iBAAd,I,EACA,YAAmB,sBAAnB,I,EACA,UAAiB,oBAAjB,I,EACA,MAAa,gBAAb,I,qTAWIlW,KARY,MAEZ+yN,EAFY,eAOT5kN,GAPS,sH,KAUhB,sBAEI0Z,MAAOkrM,O,gDAMXA,EAUD,EAVCA,aACA7pM,EASD,EATCA,OACAz3B,EAQD,EARCA,KACAk9C,EAOD,EAPCA,MACAxlB,EAMD,EANCA,WAKGhb,GACJ,EALC6kN,SAKD,EAJCC,iBAID,EAHCpiN,IAGD,EAFCuJ,SAED,4GACKpa,KAAJ,aACQ2uC,IAAU3uC,KAAK4d,MAAnB,M,KACI,sBAEI+wB,MAFJ,EAGI9mB,MAAOkrM,MAGP7pM,IAAWlpB,KAAK4d,MAAhBsL,QACGC,IAAenpB,KAAK4d,MAD3B,Y,KAGI,0BAGAnsB,IAASuO,KAAKkzN,WAAlB,W,KACI,0B,sDAM4B,EAApBD,mBACQjzN,KAAK4d,MAAjC,mB,6CAII5d,KAAJ,a,KACI,qB,KACA,mB,6BAID7B,G,KACH,iBACI6B,KAAK4d,MAAT,U,KACI,oB,0CAIOzrB,EAAkB,EAAlBA,MAAUgc,EAAQ,gBACzBnO,KAAJ,Y,KACI,qB,KAGJ,WAAkB,IAAI,GAAJ,EAAeA,KAAf,mBACdoa,SAAUpa,KAAKmzN,cADnB,I,KAKA,oB,wCAIInzN,KAAK4d,MAAT,S,SAEQ,SAEA,KADa5d,KAAKkzN,WAAlB,W,KAEI,qB,IAGEE,EAAcpzN,KAAKkzN,WAAzB,MACIlzN,KAAK4d,MAAMzrB,QAAf,G,KACI,kBAEN,MAAO4F,G,KACL,S,oCAMJiI,KAAJ,Y,KACI,2B,kCAKAA,KAAJ,Y,KACI,yB,8BAKAA,KAAJ,Y,KACI,qB,qCAQAA,KAJC,MAEDizN,EAFC,mBAGDpiN,EAHC,M,OAMEiF,6BAICqE,IAAKna,KAAKqzN,e,gCA9IUp4M,aAoJpC/E,aAAmB,CAEf/jB,MAAO+qH,eAAoB,CACvBA,KADuB,OAEvBA,KAFuB,MAGvBA,KAHuB,OAIvBA,KAJuB,KAKvBA,KAPW,SASf7qH,KAAM6qH,WATS,IAUfzrH,KAAMyrH,KAVS,OAWfh0F,OAAQg0F,KAXO,OAYf/zF,WAAY+zF,KAZG,OAaf7zE,eAAgB6zE,KAbD,KAef9iG,SAAU8iG,KAfK,KAgBf11F,QAAS01F,KAhBM,KAiBfr0F,aAAcq0F,KAjBC,KAmBf12F,IAAK02F,KAnBU,OAoBf9zF,IAAK8zF,KApBU,OAqBfvuE,MAAOuuE,KArBQ,OAsBfniG,QAASmiG,KAtBM,KAuBf3kD,cAAe2kD,KAvBA,KAwBf53F,UAAW43F,KAxBI,KAyBfhjF,OAAQgjF,KAzBO,KA0Bf61G,aAAc71G,aAAkBA,WA1BjB,KA6BfrsG,IAAKqsG,eAAoB,CAACA,KAAD,OAAmBA,KA7B7B,cA8Bf+1G,iBAAkB/1G,KA9BH,OA+Bf81G,SAAU91G,KAAUhrF,MAGxBhc,gBAAsB,CAClBrF,IADkB,MAElBxe,KAAMw1B,GAFY,KAGlB9M,SAHkB,EAIlBmf,QAJkB,EAKlBq+B,eALkB,EAMlBjzC,WANkB,EAOlB+jB,gBAAgB,GAMpBnzB,Y,aCzPMuqC,GAAagmF,GAAe,CAC9BnrH,SAAU,CAAE45C,QAAS,QACrBw9J,yBAA0B,CACtBr2M,QAAS,OACTm6C,UAAW,EACXjT,WAAY,QAGhBh3C,UAAW,CACP,QAAS,CACLkP,OAAQ,KAEZ,cAAe,CACXU,OAAQ,+BACR,mBAAoB,CAChB4uB,gBAAiB,UACjBslJ,aAAc,+BACd,8DAA+D,CAC3Dh0K,QAAS,WAMzBuzK,UAAW,CACPt0K,SAAU,CACNK,OAAQ,QAEZ5B,cAAe,MAIjBu5M,GAA6B/xG,GAC/B,CACIllG,QAAS,OACT4wJ,WAAY,SACZ/wJ,OAAQ,WAIVq3M,GAAwBhyG,GAC1B,CACIhlG,SAAU,UACVF,QAAS,OACTi6K,YAAa,SACb1qI,OAAQ,YAIV4nK,GAAoBjyG,GACtB,CACIllG,QAAS,OACT4wJ,WAAY,SACZ1wJ,SAAU,OACVX,MAAO,UACPc,WAAY,OACZkvC,OAAQ,YAGH6nK,GAAuB,SAAC71M,GACjC,IAAQzlB,EAAiDylB,EAAjDzlB,GAAIhG,EAA6CyrB,EAA7CzrB,MAAOioB,EAAsCwD,EAAtCxD,SAEnB,GAFyDwD,EAA5BjhB,aAA4BihB,EAAd5S,UAE3C,GAAsCuzE,oBAAS,GAA/C,IAAOm1I,EAAP,KAAoBC,EAApB,KAEA11I,qBAAU,WACN01I,GAAe,KAChB,IAUH,OACI,oCACI,yBACIp6M,QAAS,WAAQo6M,GAAgBD,IACjC5pN,UAAWwpN,IAEX,0BAAMxpN,UAAWypN,IACb,kBAACroE,GAAD,CAAM/lB,SAAUuuF,EAAc,oBAAsB,sBAExD,0BAAM5pN,UAAW0pN,IACZ,8BAIJE,GAAgB,kBAACzjC,GAAD,CAAWnmL,UAAW22C,GAAWmvI,UAAWv2K,UAAU,EAAOgc,MAAM,GAAGz7B,WAAS,EAACm8C,KAAM,GAAI5jD,MAAO2b,KAAKC,UAAL,6BAAmBpX,gBAAgBi9N,yBAAyB,UAAaC,IAAW,KAAM,KAIhN,yBAAK/pN,UAAW22C,GAAWl0C,WACvB,kBAAC,GAAD,CACIpa,MAAOA,EAEPsnB,OA7BM,SAACxZ,GAAY,IAAD,EACxB9N,EAAQ2b,KAAKqD,MAAL,UAAWlR,EAAEjK,cAAb,aAAW,EAAUu+B,cAAc,YAAYpiC,OAC7DioB,EAASjiB,EAAIhG,IA4BDE,KAAM,OACNumB,QAAS,GACTD,MAAO,CACH2D,WAAY,sCACZC,SAAU,GACVJ,OAAQ,kBACRoyJ,UAAW,GACX7tJ,UAAW,IACXrF,SAAU,OACV65C,QAAS,QAEbp8C,kBAAmB2nC,GAAWnlC,cC9FrCw4M,GAAb,8BACI,WAAYl2M,GAAmB,IAAD,oBAC1B,cAAMA,IASVumM,oBAAsB,SAAC1xN,GAA6D,IAAnDgG,EAAkD,uDAAnB,eACpDtB,EAAmB,EAAKymB,MAAxBzmB,eACR,OAAO,EAAK8yB,KAAuB,SAAlBxxB,EAA2BtB,EAAmC,qBAAlBsB,EAAuCtB,EAAc,GAAd,cAAuCA,EAAesB,GAAgBhG,IAV1K,EAAKsS,MAAS,CACV2vL,UAAW,IAHW,EADlC,8BAgBI,SAA2Bj9L,EAAQhF,GAC/B,OAAIgF,EAGGA,EAAIhF,GAFA,OAlBnB,oBAuBI,WAAU,IAAD,SACL,EAAqDuN,KAAK4d,MAAlD1mB,EAAR,EAAQA,qBAAsBmhF,EAA9B,EAA8BA,mBACxBrrC,EAAW,UAAGhtC,KAAK+E,MAAM2vL,iBAAd,aAAG,EAAsBq/B,oBACpCC,EAA+B98N,EAAqBvB,QAAO,SAAApE,GAAC,OAAIy7C,GAAeA,EAAY92C,QAAU,IACnG3E,EAAE6G,YAAY27N,oBAAoBpwN,QAAQqpC,EAAYra,SAAW,GAAKphC,EAAE4G,GAAG47N,oBAAoBpwN,QAAQqpC,EAAYra,SAAW,MACtI,OAAS,oCAET,kBAACs9J,GAAD,CAAWr2L,WAAW,EACtBwf,YAAa,8CACbgB,SAAU,SAACna,EAAQqgD,GAAuB,EAAKw6B,SAAS,CACpD45G,UAAWp0I,OAEf,yBAAK3nC,MAAO,CAAC+C,MAAO,OAAQD,OAAQ,EAAGsvB,gBAAiB,QAAS7uB,OAAQ,YAErE83M,GAAgCA,EAA6B99N,OAAS89N,EAA6B91N,KAAI,SAAC4vD,GAAD,OACnG,kBAAC,GAAD,CACIr7D,IAAKq7D,EAAM31D,GACX21D,MAAOA,EACP37D,MAAO,EAAKgyN,oBAAoBr2J,EAAM31D,GAAI21D,EAAMr1D,eAChD2hB,SAAUi+D,EACV8rI,oBAAqB,SAAC1xN,EAAKgG,GAAN,OAAwB,EAAK0rN,oBAAoB1xN,EAAKgG,GAAiBq1D,EAAMr1D,qBAItG,6BACI,oEAhDpB,GAA2Cqd,IAAMmF,WAuElCo5H,OAdS,SAACtvI,EAAkB0rI,GAAnB,MAAoD,CACxEl5I,YAAawN,EAAMxN,YACnB49I,oBAAoB,6BAAM76E,GAAK9jE,eAAyB2/L,GAAwBpxL,EAAM5N,kBAAnE,IAAqFuhF,oBAAqB3zE,EAAM5N,eAAeuhF,sBAClJxhF,qBAAsB6N,EAAM7N,qBAC5BC,eAAgB4N,EAAM5N,mBAIC,SAAC0M,GAAD,MAAmD,CAC1Ew0E,mBAAoB,SAACC,EAA0BnmF,EAAYsG,GACvDoL,EAASmwI,GAAyBD,GAAYkgF,qBAAsB,CAAE37I,iBAAkBA,EAAkBnmF,MAAOA,EAAOsG,cAAeA,SAIhI47I,CAGby/E,ICpFII,GAAc3yG,GAChB,CACIhlG,SAAU,OACVG,WAAY,MACZ3C,cAAe,KAWVo6M,GAA6B,SAACv2M,GACvC,IAAQkwC,EAA4BlwC,EAA5BkwC,MAAO37D,EAAqByrB,EAArBzrB,MACPiG,GAD4BwlB,EAAdxD,SACM0zC,EAApB11D,aAAaD,EAAO21D,EAAP31D,GAEfi8N,EAA4B,SAAC97I,EAA0BnmF,GACzDyrB,EAAMxD,SAASk+D,EAAkBnmF,EAAO27D,EAAMr1D,gBAiClD,OACI,yBAAKqR,UAAWoqN,IACK,WAAhB97N,GAA4BA,EADjC,IAC+D,WAAhBA,GAA4B,qCAAWD,EAAX,MAhCxD,SAAC4L,GACpB,OAAQA,GACJ,KAAK1Q,KAAe8G,gBAChB,OAAO,kBAAC,GAAD,CAAiBhC,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,IAChF,KAAKkB,KAAeuF,gBAChB,OAAO,kBAAC,GAAD,CAAiBT,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,IAChF,KAAKkB,KAAe0F,mBAChB,OAAO,kBAAC,GAAD,CAAoBZ,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,IACnF,KAAKkB,KAAeqF,cAChB,OAAO,kBAAC,GAAD,CAAeP,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,EAAOgyN,oBAAqBvmM,EAAMumM,sBAChH,KAAK9wN,KAAe2F,iBAChB,OAAO,kBAAC,GAAD,CAAkBb,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,IACjF,KAAKkB,KAAesF,aAChB,OAAO,kBAAC,GAAD,CAAcR,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,GpBnDjD,0BoBoD5B,KAAKkB,KAAeqJ,cAChB,OAAO,kBAAC,GAAD,CAAevE,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,GAAS,GAAIwK,aAAcmxD,EAAMnxD,eAC/G,KAAKtJ,KAAe2J,qBAChB,OAAO,kBAAC,GAAD,CACH7E,GAAIA,EAAIiiB,SAAUg6M,EAClBjiO,MAAOA,GAAS,GAAIwK,aAAcmxD,EAAMnxD,aACxCqO,UAAW4S,EAAMumM,oBAAoB,YAAa,UAE1D,KAAK9wN,KAAe8J,eAChB,OAAO,kBAAC,GAAD,MACX,KAAK9J,KAAemF,gBACpB,QACI,OAAO,kBAAC,GAAD,CAAiBoB,UAAWk0D,EAAMl0D,UAAWzB,GAAIA,EAAIiiB,SAAUg6M,EAA2BjiO,MAAOA,KAQ3GkiO,CAAevmK,EAAMv1D,kBCpE5B+6N,GAA6B/xG,GAC/B,CACIllG,QAAS,OACT4wJ,WAAY,SAEZr0J,QAAS,YACT6C,OAAQ,kBACRc,SAAU,kBACVvC,YAAa,kBACbF,aAAc,kBACdqC,OAAQ,+BACR,cAAe,mBACf,eAAgB,mBAChB,WAAc,mBACdP,MAAO,qBACP,gBAAiB,qBAInB04M,GAA8B/yG,GAChC,CACIvnG,YAAa,kBACbF,aAAc,oBAIhBy5M,GAAwBhyG,GAC1B,CACIhlG,SAAU,UACVF,QAAS,OACTi6K,YAAa,SACb1qI,OAAQ,UACRrI,WAAY,SAIdiwK,GAAoBjyG,GACtB,CACIllG,QAAS,OACT4wJ,WAAY,SACZ1wJ,SAAU,OACVX,MAAO,UACPc,WAAY,OACZkvC,OAAQ,YAYH2oK,GAAgC,SAAC32M,GAC1C,IAAQi1D,EACRj1D,EADQi1D,QAAS15E,EACjBykB,EADiBzkB,YAA6Bk/E,GAC9Cz6D,EAD8BzmB,eAC9BymB,EAD8Cy6D,oBAAoB8rI,EAClEvmM,EADkEumM,oBAElE,KAAsC5lI,oBAAS,GAA/C,GAAOm1I,EAAP,KAAoBC,EAApB,KAiBA,OAfA11I,qBAAU,WACN01I,GAAe,KAChB,CAACx6N,IAcA,gCACI,uBACIogB,QAAS,WAAMo6M,GAAgBD,IAC/B5pN,UAAS,UAAKwpN,KAGd,wBAAMxpN,UAAW0pN,IACZr6N,GAEL,uBAAK2Q,UAAWypN,IACZ,gBAACroE,GAAD,CAAM/lB,SAAUuuF,EAAc,mBAAqB,qBAIvDA,EACQ,4BACA,uBAAM5pN,UAAS,UAAKwqN,KACfzhJ,EAAQ30E,KAAI,SAAC4vD,GAAD,OACL,gBAAC,GAAD,CACIA,MAAOA,EACPr7D,IAAKq7D,EAAM31D,GACXhG,MAAOgyN,EAAoBr2J,EAAM31D,GAAI21D,EAAMr1D,eAC3C2hB,SAAUi+D,EACV8rI,oBAAqB,SAAC1xN,EAAKgG,GAAN,OAAwB0rN,EAAoB1xN,EAAKgG,GAAiBq1D,EAAMr1D,wBCpG/H+7N,GAAuBjzG,GACzB,CACIllG,QAAS,QACT0F,UAAW,OACXlI,WAAY,OACZE,cAAe,OACf,qBAAsB,CAClBs2K,aAAc,gCAElB,6BAA8B,CAC1B3vK,UAAW,WAMjB+zM,GAA0BlzG,GAC5B,CACIr5E,aAAc,SA0BTwsL,GAAb,8BACI,WAAY92M,GAAmB,IAAD,oBAC1B,cAAMA,IAGV+2M,0BAA4B,WACxB,MAAiD,EAAK/2M,MAA9C1mB,EAAR,EAAQA,qBAAsBF,EAA9B,EAA8BA,eACxB49N,EAAwC,GAoB9C,OAlBA19N,EAAqBd,SAAQ,SAAC03D,GACtBA,EAAMz1D,WAAarB,IACf82D,EAAM30D,YACFy7N,EAAkB9mK,EAAM30D,aACxBy7N,EAAkB9mK,EAAM30D,aAAapF,KAAK+5D,GAE1C8mK,EAAkB9mK,EAAM30D,aAAe,CAAC20D,GAGxC8mK,EAAkBC,cAClBD,EAAkBC,cAAc9gO,KAAK+5D,GAErC8mK,EAAkBC,cAAgB,CAAC/mK,OAM5C8mK,GA1BmB,EA6B9BzQ,oBAAsB,SAAC1xN,GAA6D,IAAnDgG,EAAkD,uDAAnB,eACpDtB,EAAmB,EAAKymB,MAAxBzmB,eAEF29N,EAAmC,SAAlBr8N,EAA2BtB,EAAmC,qBAAlBsB,EAAuCtB,EAAc,GAAd,cAAuCA,EAAesB,GAEhK,OAAO,EAAKwxB,KAAK6qM,EAAgBriO,IAlCP,EA4C9BsiO,sCAAwC,SAACH,GACrC,MAA+C,EAAKh3M,MAA5CzmB,EAAR,EAAQA,eAAgBkhF,EAAxB,EAAwBA,mBACxB,OACI,oCACKzmF,OAAO6C,KAAKmgO,GAAmB12N,KAAI,SAACzL,EAAKiR,GACtC,MAAY,kBAARjR,EACO,yBAAKA,IAAKA,EAAKqX,UAAW2qN,IACpBG,EAAkBniO,GAAKyL,KAAI,SAAC4vD,GAAD,OACxB,kBAAC,GAAD,CACIr7D,IAAKq7D,EAAM31D,GACX21D,MAAOA,EACP37D,MAAO,EAAKgyN,oBAAoBr2J,EAAM31D,GAAI21D,EAAMr1D,eAChD2hB,SAAUi+D,EACV8rI,oBAAqB,SAAC1xN,EAAKgG,GAAN,OAAwB,EAAK0rN,oBAAoB1xN,EAAKgG,GAAiBq1D,EAAMr1D,sBAM/G,kBAAC,GAAD,CACKhG,IAAKA,EACLogF,QAAS+hJ,EAAkBniO,GAC3B0G,YAAa1G,EACb0E,eAAgBA,EAChBkhF,mBAAoBA,EACpB8rI,oBAAqB,EAAKA,2BArE5B,EADlC,8BAsCI,SAA2B1sN,EAAQhF,GAC/B,OAAIgF,EAGGA,EAAIhF,GAFA,OAxCnB,oBA8EI,WACI,IAAQuE,EAAmBgJ,KAAK4d,MAAxB5mB,eACFg+N,EAAsBh1N,KAAK20N,4BAEjC,OACI,kBAAC,WAAD,KACI,4BAAK39N,GAEL,yBAAK8S,UAAW0qN,IACXx0N,KAAK+0N,sCAAsCC,SAvFhE,GAA8Cl/M,IAAMmF,WA2GrCo5H,OAbS,SAACtvI,EAAkB0rI,GAAnB,MAAoD,CACxEz5I,eAAgB+N,EAAM/N,eACtBE,qBAAsB6N,EAAM7N,qBAC5BC,eAAgB4N,EAAM5N,mBAGC,SAAC0M,GAAD,MAAmD,CAC1Ew0E,mBAAoB,SAACC,EAA0BnmF,EAAYsG,GACvDoL,EAASmwI,GAAyBD,GAAYkgF,qBAAsB,CAAE37I,iBAAkBA,EAAkBnmF,MAAOA,EAAOsG,cAAeA,SAKhI47I,CAGbqgF,IC5HIO,GAAgB1zG,GAClB,CACIjlG,WAAY,sBAId44M,GAAkB3zG,GACpB,CACIllG,QAAS,OACT4wJ,WAAY,SAEZojB,aAAc,+BAEdx2K,WAAY,GACZE,cAAe,GAEfC,YAAa,OACbF,aAAc,SAMhBq7M,GAAc5zG,GAChB,CACI/qD,UAAW,SAWb4+J,GAAkB7zG,GACpB,CACI3oG,QAAS,OACTiB,WAAY,MACZE,cAAe,MACf,YAAa,CACTsC,QAAS,OACTH,OAAQ,8BACRm0K,aAAc,iBACdglC,kBAAmB,mBACnB/kC,kBAAmB,qBACnB5/J,KAAM,EACNmqH,OAAQ,EACRp/H,OAAQ,GACR,iBAAkB,CACdwxJ,WAAY,UACZ1xB,YAAa,UACbrzG,cAAe,EACftvB,QAAS,uBACTmB,cAAe,GACf6C,WAAY,GACZnB,OAAQ,OACR,2BAA4B,CAExB,iBAAkB,CACdc,SAAU,MAKtB,gDAAiD,CAC7C,gBAAiB,MACjB2rB,cAAe,EACfooJ,kBAlCU,UAmCV+kC,kBAAmB,QACnB34M,WAAY,IACZ6pE,WAAY,kBACZ3qE,MAAO,qBAEP,UAAW,CACPS,QAAS,YAYvBi5M,GAAgC/zG,GAClC,CACIvnG,YAAa,kBACbyB,OAAQ,MACRiF,UAAW,OAEXqB,UAAW,OACXwzM,mBAAoB,OACpB,0BAA2B,CAEvB,wBAAyB,CACrBn5M,WAhEU,UAiEVs6C,YAAY,GAAD,OAjED,UAiEC,iBAGnB,wBAAyB,CACrBv6C,OAAQ,qBAEZ,2BAA4B,CACxBw4D,aAAc,EACdx4D,OAAQ,oBACR,kBAAmB,CACfA,OAAO,aAAD,OA3EI,WA4EVw4D,aAAc,GAElB,uBAAwB,CACpBA,aAAc,IAItB,eAAgB,CACZ,qBAAsB,CAClBA,aAAc,EACdx4D,OAAQ,qBAGZ,UAAW,CACPA,OAAO,aAAD,OA1FI,WA2FVw4D,aAAc,IAGtB,sBAAuB,CACnBv4D,WA/Fc,UAgGds6C,YAAY,GAAD,OAhGG,UAgGH,eACX,kBAAmB,CACft6C,WAAY,UACZs6C,YAAY,yBAQtB8+J,GAAmCj0G,GACrC,CACIs5B,OAAQ,KAIV46E,GAAc,CAAE96E,YAAa,IA4BtB+6E,GAAb,8BACI,WAAY93M,GAAmB,IAAD,oBAC1B,cAAMA,IAIF+3M,iBAAmB,WACvB,IAAIC,EAAwB,GAEpB5+N,EAAmB,EAAK4mB,MAAxB5mB,eAER,IAAK,IAAIqB,KAAYlF,KACjByiO,EAAsB7hO,KAClB,kBAAC,GAAD,CACItB,IAAK4F,EACL5G,KAAM4G,EACNrB,eAAgBA,EAChBsiF,wBAAyB,EAAK17D,MAAM07D,2BAMhD,OAAOs8I,GAtBmB,EADlC,gCA0BI,WAAU,IAAD,OACL,OACI,yBAAK9rN,UAAS,kBAAamrN,IAAiB94E,IAAI,OAC5C,yBAAKryI,UAAS,sBAAiBorN,KAC3B,yBAAKprN,UAAU,kCACX,wBAAIA,UAAU,6CAA6C9J,KAAK4d,MAAMi4M,SACtE,yBAAK/rN,UAAU,yEAAyE6O,MAAO,CAAE+C,MAAO,EAAGD,OAAQ,MACnH,yBAAK3R,UAAU,6BAA4B,0BAAMA,UAAU,yCAAyC6O,MAAO,CAAE4D,SAAU,GAAIG,WAAY,MAA5F,YAE3C,yBAAK5S,UAAU,6BAA4B,0BAAMA,UAAU,oCAAoC6O,MAAO,CAAE4D,SAAU,GAAIG,WAAY,MAAvF,4BAC3C,uBAAG0C,MAAM,gBAAgBtV,UAAU,mCAAmC6O,MAAO,CAACizC,OAAS,UAAWrI,WAAY,GAAIy2F,UAAW,UAAWzqG,KAAMvvC,KAAK4d,MAAMk4M,iBAAkB9/N,OAAO,SAAS8+K,IAAI,sBAAsBv7J,QAAS,cAG1N,yBAAMw9K,MAAM,6BAA6Br7K,MAAM,KAAKD,OAAO,KAAKq7K,QAAQ,eACpE,0BAAOD,KAAK,eAAerlM,EAAE,qvBAIzC,yBAAKsY,UAAU,SAMX,yBAAKA,UAAU,8BACX,4BAAQ/F,KAAK,SAAS+F,UAAU,kBAAkByP,QAAS,kBAAM7H,YAAW,kBAAM,EAAKkM,MAAMm4M,OAAO,EAAKn4M,MAAMu3H,uBAAsB,KAArI,WACA,4BAAQpxI,KAAK,SAAS+F,UAAU,oBAAoByP,QAASvZ,KAAK4d,MAAMW,SAAxE,eAIZ,yBAAKzU,UAAS,+CAA0CsrN,KACpD,yBAAKtrN,UAAU,uCACX,kBAACqhL,GAAD,CAAO6qC,aAAW,iCACd,kBAAC,GAAD,CAAWlsN,UAAWqrN,GAAapsC,WAAW,OAEtC/oL,KAAK4d,MAAMrmB,aAAe,yBAAKuS,UAAU,WACrC,yBAAKA,UAAS,2CAAsCwrN,KAChD,kBAACr7E,GAAD,CAAO9wI,OAAQssN,GAAa3rN,UAAS,UAAK0rN,KACrCx1N,KAAK21N,qBAGd,yBAAK7rN,UAAS,2CAAsCwrN,KAChD,kBAAC,GAAD,CAA0Bh8I,wBAAyBt5E,KAAK4d,MAAM07D,6BAK9E,kBAAC,GAAD,CAAWyvG,WAAW,eAClB,kBAAC,GAAD,CAAmB+M,UAAW91L,KAAK4d,MAAMk4K,eAUrD,kBAAC,GAAY91L,KAAK4d,aApFtC,GAAmC9H,IAAMmF,WA6G1Bo5H,OAfS,SAACtvI,EAAkB0rI,GAAnB,MAAoD,CACxEz5I,eAAgB+N,EAAM/N,eACtBO,YAAawN,EAAMxN,YACnB49I,oBAAoB,6BAAM76E,GAAK9jE,eAAyB2/L,GAAwBpxL,EAAM5N,kBAAnE,IAAqFuhF,oBAAqB3zE,EAAM5N,eAAeuhF,0BAG3H,SAAC70E,GAAD,MAAmD,CAC1Ew0E,mBAAoB,SAACC,EAA0BnmF,GAC3C0R,EAASmwI,GAAyBD,GAAYkgF,qBAAsB,CAAE37I,iBAAkBA,EAAkBnmF,MAAOA,MAErHmnF,wBAAyB,SAACC,EAA2BpnF,GACjD0R,EAASmwI,GAAyBD,GAAYqiD,mCAAoC,CAAE18G,aAAcH,EAAmBpnF,MAAOA,SAIrHkiJ,CAGbqhF,ICtTaO,GAbf,8BACE,WAAYr4M,GAAa,IAAD,E3gBiBM49G,EAAoC59H,E2gBjB1C,iBACtB,cAAMggB,Q3gBgBsB,KAAA49G,E2gBfZ,iF3gBeYA,EAFP,mFAGvB,CACE,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACAplI,SAAQ,SAAC8/N,GAA8D,OAAAA,EAAW16F,EAAX,MAEzE,K2gBxCwB,EAD1B,gCAME,WACE,OACE,kBAAC,GAAD,CAAegZ,MAAOx0I,KAAK4d,MAAM42H,MAAOhZ,QAASx7H,KAAK4d,MAAM49G,QAASq6F,QAAS71N,KAAK4d,MAAMi4M,QAASC,iBAAkB91N,KAAK4d,MAAMk4M,iBAAkBv3M,QAASve,KAAK4d,MAAMW,QAASw3M,OAAQ/1N,KAAK4d,MAAMm4M,OAAQjgC,UAAW91L,KAAK4d,MAAMk4K,gBARrO,GAAyBhgL,IAAMmF,W,6BCDlBxW,G,MAAW0xN,E,SCKbC,GAAsB,KACpBvhF,GAAO,SAACj3H,GACnBw4M,GAAiBx4M,EACjB,IAAMy4M,EAAW9rN,SAASsgK,eAAe,sBACtCwrD,GACDC,IAAS7hH,uBAAuB4hH,GAGlC,IAAMnwN,ECb8BvD,uBAAY8B,GAAU1N,KAAiB4iF,kCDc3E28I,IAASxuN,OACP,kBAAC,GAAD,CAAU5B,MAAOA,EAAOzT,IAAKmrB,EAAM42H,OACjC,kBAAC,GAAQ52H,IAEXrT,SAASsgK,eAAe,wBAGfmqB,GAAe,WAC1BngD,GAAKuhF","file":"druid_webchat_editor.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/webchat-editor/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 59);\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","export enum Category {\n // The order of this enum will effect\n // the order they render on the webapp\n Search = \"Search\",\n General = \"General\",\n Layout = 'Layout',\n ColorAndPaddings = 'Color & Paddings',\n Fonts = 'Fonts',\n Buttons = 'Buttons',\n ChatBubble = 'Chat Bubble',\n Avatar = 'Avatar',\n ConnectivityUI = 'Connectivity UI',\n SendBox = 'Send Box',\n SuggestedActions = 'Suggested Actions',\n TimestampAndStatus = 'Timestamp and Status',\n ToastUI = 'Toast UI',\n TranscriptOverlayButtons = 'Transcript Overlay Buttons',\n Miscellaneous = 'Miscellaneous',\n CustomCSS = 'Custom Styling',\n Handlers = \"Custom Handlers\",\n Localization = \"Localization\"\n\n}\n\nexport enum SubCategory {\n AvatarChatBubble = 'Bot Chat Bubble',\n AvatarSettings = 'Avatar Settings',\n BotAvatar = 'Bot Avatar',\n Border = 'Border',\n BorderDisabled = 'Border (Disabled)',\n ButtonColors = 'Button Colors',\n ButtonDefault = 'Button: Default',\n ButtonOnFocus = 'Button: On Focus',\n ButtonOnHover = 'Button: On Hover',\n CarouselFlipper = 'Carousel Flipper',\n ChatBox = 'Chat Box',\n Colors = 'Colors',\n ConnectivityStyling = 'Connectivity Styling',\n Container = 'Container',\n Cookies = 'Cookies',\n Error = 'Error',\n Common = 'Common',\n Header ='Header',\n Icons = 'Icons',\n Info = 'Info',\n Layout = 'Layout',\n NotificationTimeout = 'Notification Timeout',\n ScrollToEndButton = 'Button: Scroll to end',\n SlowConnectionTimeOut = 'Slow Connection Timeout',\n SpinnerAnimation = 'Spinner Animation',\n Status= 'Status',\n Success = 'Success',\n TimeStamp = \"Timestamp\",\n ToasterLayout = 'Toaster Layout',\n ToasterStyling = 'Toaster Styling',\n TypingAnimation = 'Typing Animation',\n UploadThumbnail = 'Upload Thumbnail',\n UserAvatar = 'User Avatar',\n UserChatBubble = 'User Chat Bubble',\n Warn = 'Warn',\n}\n\nexport enum UISelectorType {\n booleanSelector = 'booleanSelector',\n colorSelector = 'colorSelector',\n defaultSelector = 'defaultSelector',\n dropDownSelector = 'dropDownSelector',\n integerSelector = 'integerSelector',\n percentageSelector = 'percentageSelector',\n rgbaSelector = 'rgbaSelector',\n reactSelector = 'reactSelector',\n localizationSelector = 'localizationSelector',\n searchSelector = 'searchSelector'\n}\n","// Current version.\nexport var VERSION = '1.13.2';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\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 defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\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 = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import { customizationEntries } from '../webchatEditor/constants/customizationEntries'\nimport { Category, SubCategory, UISelectorType } from \"../utilities/types\"\nimport { ContainerName } from \"./reducers/AppReducer\";\nimport * as merge from 'deepmerge';\nimport { isPlainObject } from 'is-plain-object';\n\ndeclare const DruidWebchat_v2: any;\n\n\nexport interface CustomizationEntry {\n id: string,\n category: Category,\n subCategory?: SubCategory,\n displayName: string,\n uiSelectorType: UISelectorType // TODO create uiSelectorType interface \n isAdvancedOption?: boolean,\n containerName?: ContainerName,\n multiline?: boolean,\n defaultValue?: any\n}\n\nexport interface IAppState {\n // Active category to be rendered in middle pane\n activeCategory: Category,\n // Value of UI elements that determine style option value stored here\n customizationEntries: CustomizationEntry[],\n // Value of current style options stored here\n webchatOptions: WebchatOptions;\n jsonIsInvalid: boolean;\n // Closes Modal for color switch when user selects other color selectors. This will fixes having a modal open for each colorSelector\n displayColorModal: boolean;\n colorValue: string;\n initialized: boolean;\n \n}\n\n// TODO: Figure out way to get strongly types style Options obj that maps to https://github.com/microsoft/BotFramework-WebChat/blob/master/packages/component/src/Styles/defaultStyleOptions.js\nexport interface WebchatOptions {\n styleOptions: any,\n UI: any,\n middlewares: any,\n localization: any,\n languages: any\n customDruidStyleSet: any\n }\n\n export const loadConfigurationValue =\n {\n// \"isDisabled\": false,\n// \"accessibilityFeaturesEnabled\": false,\n// \"backgroundTrafficEnabled\": true,\n// \"conversationTokenEnabled\": true,\n// \"cookieDomain\": \"\",\n// \"druidCookiesExpirationInDays\": 1,\n// \"druidWebChatIsOpenedEnabled\": true,\n// \"druidShowGroupTimestamp\": 10000,\n// \"extendedLocalizedString\": {\n// \"timeSent\": \" - %1\",\n// \"suggestedActionsInputPlaceholder\": \"\"\n// },\n// \"instrumentationKey\": \"\",\n// \"notificationsEnabled\": false,\n// \"queryParams\": \"\",\n// \"serviceNetworkStatusEnabled\": true,\n// \"UI\": {\n// \"autoExpandEnabled\": false,\n// \"autoScrollEnabled\": false,\n// \"chatHeaderHeight\": \"38px\",\n// \"chatTitle\": \" Mihai-test-bot\",\n// \"chatTitle_faIcon\": \"\",\n// \"containerElement\": null,\n// \"contextMenuIcon\": \"fa-plus-circle\",\n// \"druidLayoutVersionDecorator\": \"druid-v2\",\n// \"expandWidth\": \"unset\",\n// \"floatRight\": \"10%\",\n// \"failedToLoadMessage\": \"Failed to load\",\n// \"fullScreenMode\": false,\n// \"fullScreenMode_leftRightClass\": \"col-md-3\",\n// \"fullScreenMode_mainChatClass\": \"col-md-6\",\n// \"goBackButton\": false,\n// \"height\": \"90vh\",\n// \"iconCloseChat\": \"fa-angle-down\",\n// \"iconSendSvgType\": 2,\n// \"inputIconsAlignment\": \"left\",\n// \"inputPlaceholder\": \"Type your message here...\",\n// \"loadingOverlayActive\": true,\n// \"minWidth\": \"25vw\",\n// \"position\": \"right\",\n// \"typingMessageBackground\": null,\n// \"visibleAtScrollTop\": false,\n// \"width\": \"430px\",\n// \"headerOptions\": {\n// \"showAvatar\": true\n// }\n// },\n// \"disabled\": false,\n// \"styleOptions\": {\n// \"accent\": \"olive\"\n// },\n// \"webChatEventHandler\": \"(action, currentDruidState) => {if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY' && DruidWebchat_v2.isNewActivity(currentDruidState, action.payload.activity)) {if(action.payload.activity.text == \\\"disable\\\") {console.error('gigel')}}}\",\n// \"middlewares\": {},\n// \"languages\": [\n// {\n// \"displayName\": \"Arabic\",\n// \"nativeName\": \"العربية\",\n// \"name\": \"ar\",\n// \"isDefault\": false,\n// \"icon\": \"famfamfam-flags sa\",\n// \"id\": 2\n// },\n// {\n// \"displayName\": \"Croatian\",\n// \"nativeName\": \"hrvatski\",\n// \"name\": \"hr\",\n// \"isDefault\": false,\n// \"icon\": \"famfamfam-flags hr\",\n// \"id\": 24\n// },\n// {\n// \"displayName\": \"Danish\",\n// \"nativeName\": \"dansk\",\n// \"name\": \"da\",\n// \"isDefault\": false,\n// \"icon\": \"famfamfam-flags dk\",\n// \"id\": 26\n// },\n// {\n// \"displayName\": \"English (United States)\",\n// \"nativeName\": \"English (United States)\",\n// \"name\": \"en-US\",\n// \"isDefault\": false,\n// \"icon\": \"famfamfam-flags us\",\n// \"id\": 1\n// },\n// {\n// \"displayName\": \"Portuguese\",\n// \"nativeName\": \"português\",\n// \"name\": \"pt\",\n// \"isDefault\": false,\n// \"icon\": \"famfamfam-flags pt\",\n// \"id\": 20\n// },\n// {\n// \"displayName\": \"Romanian\",\n// \"nativeName\": \"română\",\n// \"name\": \"ro\",\n// \"isDefault\": true,\n// \"icon\": \"famfamfam-flags ro\",\n// \"id\": 15\n// }\n// ]\n}\n\nexport const defaultWebchatOptions = (mergeWith: Partial<WebchatOptions> = {}) => merge.all<WebchatOptions>([DruidWebchat_v2.webChatDefaultOptions, loadConfigurationValue, mergeWith], { isMergeableObject: isPlainObject });\n\nexport const initialAppState: IAppState = {\n activeCategory: Category.General,\n customizationEntries: customizationEntries,\n // webchatOptions: {\n // styleOptions: {\n // ...defaultStyleOptions, \n // ...DruidWebchat_v2.overridenBFStyleOptions\n // },\n // UI: DruidWebchat_v2.getMe\n // },\n webchatOptions: defaultWebchatOptions(),\n jsonIsInvalid: false,\n displayColorModal: false,\n colorValue: '#ffffff',\n initialized: false\n}\n","module.exports = require(\"regenerator-runtime\");\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}","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import { Container } from \"react-bootstrap\";\nimport { CustomizationEntry } from \"../../Redux/reduxState\";\nimport { Category, SubCategory, UISelectorType } from \"../../utilities/types\";\n\nconst colorAndPaddingEntries: CustomizationEntry[] = [\n\n\n {\n id: 'chatTitle',\n displayName: 'Chat Title',\n category: Category.ColorAndPaddings,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"UI\"\n },\n {\n id: 'accent',\n displayName: 'Accent',\n category: Category.ColorAndPaddings,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'backgroundColor',\n displayName: 'Background Color',\n category: Category.ColorAndPaddings,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n // { id: 'cardEmphasisBackgroundColor', \n // displayName: 'Card Emphasis Background Color',\n // category: Category.ColorAndPaddings,\n // uiSelectorType: UISelectorType.colorSelector,\n // },\n {\n id: 'paddingRegular',\n displayName: 'Padding Regular',\n category: Category.ColorAndPaddings,\n uiSelectorType: UISelectorType.integerSelector,\n },\n // { // removed because not used anymore\n // id: 'paddingWide',\n // displayName: 'Padding Wide',\n // category: Category.ColorAndPaddings,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n {\n id: 'subtle',\n displayName: 'Subtle',\n category: Category.ColorAndPaddings,\n uiSelectorType: UISelectorType.colorSelector,\n },\n];\n\nconst fontEntries: CustomizationEntry[] = [\n {\n id: 'fontSizeSmall',\n displayName: 'Font Size Small',\n category: Category.Fonts,\n uiSelectorType: UISelectorType.percentageSelector,\n },\n // {\n // id: 'monospaceFont',\n // displayName: 'Monospace Font',\n // category: Category.Fonts,\n // uiSelectorType: UISelectorType.dropDownSelector,\n // },\n {\n id: 'primaryFont',\n displayName: 'Primary Font',\n category: Category.Fonts,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'rootFontSize',\n displayName: 'Root Font Size',\n category: Category.Fonts,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'transcriptFontSize',\n displayName: 'Transcript Font Size',\n category: Category.Fonts,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'headerFontSize',\n displayName: 'Header Font Size',\n category: Category.Fonts,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'sendBoxFontSize',\n displayName: 'SendBox Font Size',\n category: Category.Fonts,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'lineHeight',\n displayName: 'Line Height - in REM',\n category: Category.Fonts,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'messageActivityWordBreak',\n displayName: 'Message Activity Word Break',\n category: Category.Fonts,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n];\n\nconst avatarEntries: CustomizationEntry[] = [\n {\n id: 'avatarBorderRadius',\n displayName: 'Avatar Border Radius',\n category: Category.Avatar,\n subCategory: SubCategory.AvatarSettings,\n uiSelectorType: UISelectorType.percentageSelector,\n },\n {\n id: 'avatarSize',\n displayName: 'Avatar Size',\n category: Category.Avatar,\n subCategory: SubCategory.AvatarSettings,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'botAvatarBackgroundColor',\n displayName: 'Background Color',\n category: Category.Avatar,\n subCategory: SubCategory.BotAvatar,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n {\n id: 'botAvatarImage',\n displayName: 'Image',\n category: Category.Avatar,\n subCategory: SubCategory.BotAvatar,\n uiSelectorType: UISelectorType.defaultSelector,\n },\n // {\n // id: 'botAvatarInitials',\n // displayName: 'Initials',\n // category: Category.Avatar,\n // subCategory: SubCategory.BotAvatar,\n // uiSelectorType: UISelectorType.defaultSelector,\n // },\n {\n id: 'userAvatarBackgroundColor',\n displayName: 'Background Color',\n category: Category.Avatar,\n subCategory: SubCategory.UserAvatar,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n {\n id: 'userAvatarImage',\n displayName: 'Image',\n category: Category.Avatar,\n subCategory: SubCategory.UserAvatar,\n uiSelectorType: UISelectorType.defaultSelector,\n },\n // {\n // id: 'userAvatarInitials',\n // displayName: 'Initials',\n // category: Category.Avatar,\n // subCategory: SubCategory.UserAvatar,\n // uiSelectorType: UISelectorType.defaultSelector,\n // },\n];\n\nconst buttonsEntries: CustomizationEntry[] = [\n {\n id: 'buttonsPadding',\n displayName: 'Padding',\n category: Category.Buttons,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsBorderRadius',\n displayName: 'Border Radius',\n category: Category.Buttons,\n subCategory: SubCategory.Layout,\n\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsTextColor',\n displayName: 'Text Color',\n category: Category.Buttons,\n subCategory: SubCategory.Colors,\n\n uiSelectorType: UISelectorType.colorSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsBorderColor',\n displayName: 'Border Color',\n category: Category.Buttons,\n subCategory: SubCategory.Colors,\n\n uiSelectorType: UISelectorType.colorSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsBackgroundColor',\n displayName: 'Background Color',\n category: Category.Buttons,\n subCategory: SubCategory.Colors,\n\n uiSelectorType: UISelectorType.colorSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsBackgroundColorOnHover',\n displayName: 'Hover Background Color',\n category: Category.Buttons,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsTextColorOnHover',\n displayName: 'Hover Text Color',\n category: Category.Buttons,\n subCategory: SubCategory.Colors,\n\n uiSelectorType: UISelectorType.colorSelector,\n containerName: \"UI\"\n },\n {\n id: 'buttonsBorderColorOnHover',\n displayName: 'Hover Border Color',\n category: Category.Buttons,\n subCategory: SubCategory.Colors,\n\n uiSelectorType: UISelectorType.colorSelector,\n containerName: \"UI\"\n },\n {\n id: 'v2_contextMenu_icon',\n displayName: 'Context menu icon',\n category: Category.Buttons,\n subCategory: SubCategory.Icons,\n uiSelectorType: UISelectorType.defaultSelector,\n multiline: true,\n containerName: \"UI\"\n },\n {\n id: 'v2_minimize_icon',\n displayName: 'Minimize icon',\n category: Category.Buttons,\n subCategory: SubCategory.Icons,\n uiSelectorType: UISelectorType.defaultSelector,\n multiline: true,\n containerName: \"UI\"\n },\n {\n id: 'v2_containerElement_expand_icon',\n displayName: 'Expand chat icon',\n category: Category.Buttons,\n subCategory: SubCategory.Icons,\n uiSelectorType: UISelectorType.defaultSelector,\n multiline: true,\n containerName: \"UI\"\n },\n {\n id: 'v2_containerElement_collapse_icon',\n displayName: 'Collapse chat icon',\n category: Category.Buttons,\n subCategory: SubCategory.Icons,\n uiSelectorType: UISelectorType.defaultSelector,\n multiline: true,\n containerName: \"UI\"\n }\n \n];\nconst chatBubbleEntries: CustomizationEntry[] = [\n {\n id: 'bubbleBackground',\n displayName: 'Background',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'bubbleTextColor',\n displayName: 'Text Color',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'bubbleBorderColor',\n displayName: 'Border Color',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'bubbleBorderRadius',\n displayName: 'Border Radius',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleBorderStyle',\n displayName: 'Border Style',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'bubbleBorderWidth',\n displayName: 'Border Width',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleNubSize',\n displayName: 'Nub Size',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleNubOffset',\n displayName: 'Nub Offset',\n category: Category.ChatBubble,\n subCategory: SubCategory.AvatarChatBubble,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'bubbleFromUserBackground',\n displayName: 'Background',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'bubbleFromUserTextColor',\n displayName: 'Text Color',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'bubbleFromUserBorderColor',\n displayName: 'Border Color',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'bubbleFromUserBorderRadius',\n displayName: 'Border Radius',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleFromUserBorderStyle',\n displayName: 'Border Style',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'bubbleFromUserBorderWidth',\n displayName: 'Border Width',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleFromUserNubSize',\n displayName: 'Nub Size',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleFromUserNubOffset',\n displayName: 'Nub Offset',\n category: Category.ChatBubble,\n subCategory: SubCategory.UserChatBubble,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'bubbleImageHeight',\n displayName: 'Image Height',\n category: Category.ChatBubble,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleMaxWidth',\n displayName: 'Max Width',\n category: Category.ChatBubble,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleMinHeight',\n displayName: 'Min Height',\n category: Category.ChatBubble,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'bubbleMinWidth',\n displayName: 'Min Width',\n category: Category.ChatBubble,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n];\n\nconst sendBoxEntries: CustomizationEntry[] = [\n {\n id: 'sendBoxHeight',\n displayName: 'Height',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'sendBoxMaxHeight',\n displayName: 'Max Height',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'druidSendBoxPaddingLeftRight',\n displayName: 'Padding Left and Right',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n {\n id: 'druidSendBoxPaddingTop',\n displayName: 'Padding Top',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n {\n id: 'druidSendBoxPaddingBottom',\n displayName: 'Padding Bottom',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n\n {\n id: 'druidSendBoxTextBoxPadding',\n displayName: 'Inner padding',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n {\n id: 'druidSendBoxInnerPaddingLeftRight',\n displayName: 'Inner padding Left and Right',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n {\n id: 'druidSendBoxInnerPaddingTopBottom',\n displayName: 'Inner padding Top and Bottom',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n\n // not used -> hidden by default and should stay hidden\n // { id: 'hideSendBox', \n // displayName: 'Hide Send Box', \n // category: Category.SendBox,\n // subCategory: SubCategory.Layout,\n // uiSelectorType: UISelectorType.booleanSelector,\n // },\n {\n id: 'hideDruidSendBox',\n displayName: 'Hide Send Box',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"UI\"\n },\n {\n id: 'hideUploadButton',\n displayName: 'Hide Upload Button',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'emojiPickerEnabled',\n displayName: 'Enable Emoji Picker',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"UI\"\n },\n {\n id: 'replyToMessageEnabled',\n displayName: 'Enable replying to messages',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"UI\"\n },\n {\n id: 'sendBoxTextWrap',\n displayName: 'Text Wrap',\n category: Category.SendBox,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.booleanSelector\n },\n {\n id: 'sendBoxTextColor',\n displayName: 'Text Color',\n category: Category.SendBox,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxBackground',\n displayName: 'Background Color',\n category: Category.SendBox,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n\n },\n {\n id: 'sendBoxDisabledTextColor',\n displayName: 'Disabled Text Color',\n category: Category.SendBox,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxPlaceholderColor',\n displayName: 'Placeholder Color',\n category: Category.SendBox,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxButtonColor',\n displayName: 'Default',\n category: Category.SendBox,\n subCategory: SubCategory.ButtonColors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxButtonColorOnDisabled',\n displayName: 'On Disabled',\n category: Category.SendBox,\n subCategory: SubCategory.ButtonColors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxButtonColorOnFocus',\n displayName: 'On Focus',\n category: Category.SendBox,\n subCategory: SubCategory.ButtonColors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxButtonColorOnHover',\n displayName: 'On Hover',\n category: Category.SendBox,\n subCategory: SubCategory.ButtonColors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'microphoneButtonColorOnDictate',\n displayName: 'Microphone Button Color On Dictate',\n category: Category.SendBox,\n subCategory: SubCategory.ButtonColors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'sendBoxBorderBottom',\n displayName: 'Bottom',\n category: Category.SendBox,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'sendBoxBorderLeft',\n displayName: 'Left',\n category: Category.SendBox,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'sendBoxBorderRight',\n displayName: 'Right',\n category: Category.SendBox,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'sendBoxBorderTop',\n displayName: 'Top',\n category: Category.SendBox,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'druidSendBoxInnerBorderRadius',\n displayName: 'Inner Border Radius',\n category: Category.SendBox,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"UI\"\n },\n];\n\nconst suggestedActionsEntries: CustomizationEntry[] = [\n {\n id: 'suggestedActionBackground',\n displayName: 'Background Color',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'suggestedActionTextColor',\n displayName: 'Color',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'suggestedActionDisabledBackground',\n displayName: 'Background Color (Disabled)',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'suggestedActionDisabledTextColor',\n displayName: 'Text Color (Disabled)',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Colors,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'suggestedActionBorderColor',\n displayName: 'Border',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'suggestedActionBorderRadius',\n displayName: 'Radius',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'suggestedActionBorderStyle',\n displayName: 'Style',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'suggestedActionBorderWidth',\n displayName: 'Width',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Border,\n uiSelectorType: UISelectorType.integerSelector,\n },\n // {\n // id: 'suggestedActionDisabledBackground',\n // displayName: 'Color',\n // category: Category.SuggestedActions,\n // subCategory: SubCategory.BorderDisabled,\n // uiSelectorType: UISelectorType.colorSelector,\n // },\n {\n id: 'suggestedActionDisabledBorderColor',\n displayName: 'Border',\n category: Category.SuggestedActions,\n subCategory: SubCategory.BorderDisabled,\n uiSelectorType: UISelectorType.colorSelector,\n },\n //MM: NOT USED\n // { \n // id: 'suggestedActionDisabledBorderRadius',\n // displayName: 'Radius',\n // category: Category.SuggestedActions,\n // subCategory: SubCategory.BorderDisabled,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n {\n id: 'suggestedActionDisabledBorderStyle',\n displayName: 'Style',\n category: Category.SuggestedActions,\n subCategory: SubCategory.BorderDisabled,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'suggestedActionDisabledBorderWidth',\n displayName: 'Width',\n category: Category.SuggestedActions,\n subCategory: SubCategory.BorderDisabled,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'suggestedActionHeight',\n displayName: 'Height',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n // {\n // id: 'suggestedActionImageHeight',\n // displayName: 'Image Height',\n // category: Category.SuggestedActions,\n // subCategory: SubCategory.Layout,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n {\n id: 'suggestedActionLayout',\n displayName: 'Layout',\n category: Category.SuggestedActions,\n subCategory: SubCategory.Layout,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n //MM: REMOVED\n // {\n // id: 'suggestedActionsCarouselFlipperCursor',\n // displayName: 'Cursor',\n // category: Category.SuggestedActions,\n // subCategory: SubCategory.CarouselFlipper,\n // uiSelectorType: UISelectorType.dropDownSelector,\n // },\n {\n id: 'suggestedActionsCarouselFlipperBoxWidth',\n displayName: 'Box Width',\n category: Category.SuggestedActions,\n subCategory: SubCategory.CarouselFlipper,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'suggestedActionsCarouselFlipperSize',\n displayName: 'Size',\n category: Category.SuggestedActions,\n subCategory: SubCategory.CarouselFlipper,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'suggestedActionsStackedHeight',\n displayName: \"Max Height (0 value for auto)\",\n category: Category.SuggestedActions,\n subCategory: SubCategory.Container,\n uiSelectorType: UISelectorType.integerSelector,\n },\n // MM: REMOVED\n // {\n // id: 'suggestedActionsStackedOverflow',\n // displayName: \"Overflow Setting\",\n // category: Category.SuggestedActions,\n // subCategory: SubCategory.Container,\n // uiSelectorType: UISelectorType.dropDownSelector,\n // },\n];\n\nconst timestampAndStatusEntries: CustomizationEntry[] = [\n {\n id: 'groupTimestamp',\n displayName: \"Group Timestamp\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.TimeStamp,\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'sendTimeout',\n displayName: \"Send Timeout\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.TimeStamp,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'sendTimeoutForAttachments',\n displayName: \"Send Timeout for Attachments\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.TimeStamp,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'timestampColor',\n displayName: \"Color\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.TimeStamp,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'timestampFormat',\n displayName: \"Format\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.TimeStamp,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'customTimestampFormat',\n displayName: \"Custom Timestamp Format\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.TimeStamp,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n //// STATUS\n {\n id: 'activityStatusReadColor',\n displayName: \"Status Read Color\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.Status,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'activityStatusBotName',\n displayName: \"Status Bot Name\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.Status,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'activityStatusShowBotName',\n displayName: \"Show Bot Name\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.Status,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'activityStatusUserName',\n displayName: \"Status User Name\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.Status,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n\n {\n id: 'activityStatusShowUserName',\n displayName: \"Show User Name\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.Status,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'botActivitiesActionsEnabled',\n displayName: \"Show Actions for Bot Messages\",\n category: Category.TimestampAndStatus,\n subCategory: SubCategory.Status,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n }\n \n];\n\nconst trascriptOverlayButtonsEntries: CustomizationEntry[] = [\n {\n id: 'transcriptOverlayButtonColor',\n displayName: \"Color\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ButtonDefault,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'transcriptOverlayButtonBackground',\n displayName: \"Background Color\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ButtonDefault,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n // {\n // id: 'newMessagesButtonFontSize',\n // displayName: \"New Message Button Font Size\",\n // category: Category.TranscriptOverlayButtons,\n // subCategory: SubCategory.ButtonDefault,\n // uiSelectorType: UISelectorType.percentageSelector,\n // },\n {\n id: 'transcriptOverlayButtonColorOnFocus',\n displayName: \"Color\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ButtonOnFocus,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n {\n id: 'transcriptOverlayButtonBackgroundOnFocus',\n displayName: \"Background Color\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ButtonOnFocus,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n {\n id: 'transcriptOverlayButtonColorOnHover',\n displayName: \"Color\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ButtonOnHover,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n {\n id: 'transcriptOverlayButtonBackgroundOnHover',\n displayName: \"Background Color\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ButtonOnHover,\n uiSelectorType: UISelectorType.rgbaSelector,\n },\n {\n id: 'scrollToEndButtonBehavior',\n displayName: \"Behavior\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ScrollToEndButton,\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'scrollToEndButtonFontSize',\n displayName: \"Button Font Size\",\n category: Category.TranscriptOverlayButtons,\n subCategory: SubCategory.ScrollToEndButton,\n uiSelectorType: UISelectorType.percentageSelector,\n },\n \n];\n\nconst connectivityUIEntries: CustomizationEntry[] = [\n // {\n // id: 'connectivityIconPadding',\n // displayName: \"Icon Padding\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'connectivityMarginLeftRight',\n // displayName: \"Margin - Left and Right\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'connectivityMarginTopBottom',\n // displayName: \"Margin - Top and Bottom\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'connectivityTextSize',\n // displayName: \"Text Size\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.percentageSelector,\n // },\n // {\n // id: 'failedConnectivity',\n // displayName: \"Failed Connectivity Color\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.colorSelector,\n // },\n // {\n // id: 'slowConnectivity',\n // displayName: \"Slow Connectivity Color\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.colorSelector,\n // },\n // {\n // id: 'notificationText',\n // displayName: \"Notification Text Color\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.ConnectivityStyling,\n // uiSelectorType: UISelectorType.colorSelector,\n // },\n // {\n // id: 'typingAnimationBackgroundImage',\n // displayName: \"Background Image (url)\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.TypingAnimation,\n // uiSelectorType: UISelectorType.defaultSelector,\n // },\n // {\n // id: 'typingAnimationDuration',\n // displayName: \"Duration\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.TypingAnimation,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'typingAnimationHeight',\n // displayName: \"Height\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.TypingAnimation,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'typingAnimationWidth',\n // displayName: \"Width\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.TypingAnimation,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'spinnerAnimationBackgroundImage',\n // displayName: \"Background Image (url)\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.SpinnerAnimation,\n // uiSelectorType: UISelectorType.dropDownSelector,\n // },\n // {\n // id: 'spinnerAnimationHeight',\n // displayName: \"Height\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.SpinnerAnimation,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'spinnerAnimationWidth',\n // displayName: \"Width\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.SpinnerAnimation,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'spinnerAnimationPadding',\n // displayName: \"Padding\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.SpinnerAnimation,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'enableUploadThumbnail',\n // displayName: \"Enable\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.UploadThumbnail,\n // uiSelectorType: UISelectorType.booleanSelector,\n // },\n // {\n // id: 'uploadThumbnailContentType',\n // displayName: \"Type\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.UploadThumbnail,\n // uiSelectorType: UISelectorType.dropDownSelector,\n // },\n // {\n // id: 'uploadThumbnailHeight',\n // displayName: \"Height\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.UploadThumbnail,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'uploadThumbnailWidth',\n // displayName: \"Width\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.UploadThumbnail,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'uploadThumbnailQuality',\n // displayName: \"Quality\",\n // category: Category.ConnectivityUI,\n // subCategory: SubCategory.UploadThumbnail,\n // uiSelectorType: UISelectorType.defaultSelector,\n // },\n {\n id: 'slowConnectionAfter',\n displayName: \"Slow Connection After\",\n category: Category.ConnectivityUI,\n subCategory: SubCategory.SlowConnectionTimeOut,\n uiSelectorType: UISelectorType.integerSelector,\n },\n];\n\nconst toastUIEntries: CustomizationEntry[] = [\n {\n id: 'hideToaster',\n displayName: \"Hide Toaster\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterLayout,\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'toasterHeight',\n displayName: \"Height\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterLayout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'toasterMaxHeight',\n displayName: \"Max Height\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterLayout,\n uiSelectorType: UISelectorType.integerSelector,\n },\n // {\n // id: 'toasterSingularMaxHeight',\n // displayName: \"Singular Max Height\",\n // category: Category.ToastUI,\n // subCategory: SubCategory.ToasterLayout,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n {\n id: 'toastFontSize',\n displayName: \"Font Size\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterStyling,\n uiSelectorType: UISelectorType.percentageSelector,\n },\n {\n id: 'toastIconWidth',\n displayName: \"Icon Width\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterStyling,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'toastSeparatorColor',\n displayName: \"Separator Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterStyling,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastTextPadding',\n displayName: \"Text Padding\",\n category: Category.ToastUI,\n subCategory: SubCategory.ToasterStyling,\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'toastErrorColor',\n displayName: \"Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Error,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastErrorBackgroundColor',\n displayName: \"Background Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Error,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastInfoColor',\n displayName: \"Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Info,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastInfoBackgroundColor',\n displayName: \"Background Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Info,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastSuccessColor',\n displayName: \"Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Success,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastSuccessBackgroundColor',\n displayName: \"Background Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Success,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastWarnColor',\n displayName: \"Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Warn,\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'toastWarnBackgroundColor',\n displayName: \"Background Color\",\n category: Category.ToastUI,\n subCategory: SubCategory.Warn,\n uiSelectorType: UISelectorType.colorSelector,\n },\n //MM: REMOVED\n // {\n // id: 'notificationDebounceTimeout',\n // displayName: \"Notification Debounce Timeout\",\n // category: Category.ToastUI,\n // subCategory: SubCategory.NotificationTimeout,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n];\n\nconst miscellaneousEntries: CustomizationEntry[] = [\n {\n id: 'richCardWrapTitle',\n displayName: 'Rich Card Wrap Title',\n category: Category.Miscellaneous,\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'disableTyping',\n displayName: 'Disable Typing',\n category: Category.Miscellaneous,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"UI\"\n },\n {\n id: 'disableTypingAnimation',\n displayName: 'Disable Typing Animation',\n category: Category.Miscellaneous,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"UI\"\n },\n {\n id: 'showTypingName',\n displayName: 'Show typing name',\n category: Category.Miscellaneous,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"UI\"\n },\n // {\n // id: 'rootHeight',\n // displayName: 'Root Height',\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.percentageSelector,\n // },\n // {\n // id: 'rootWidth',\n // displayName: 'Root Width',\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.percentageSelector,\n // },\n // {\n // id: 'rootZIndex',\n // displayName: 'Root Index',\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'hideScrollToEndButton',\n // displayName: 'Hide Scroll To End Button',\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.booleanSelector,\n // },\n // {\n // id: 'showSpokenText',\n // displayName: 'Show Spoken Text',\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.booleanSelector,\n // },\n // {\n // id: 'videoHeight',\n // displayName: \"Video Height\",\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.integerSelector,\n // },\n // {\n // id: 'emojiSet',\n // displayName: \"Emoji Set\",\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.defaultSelector,\n // },\n // {\n // id: 'markdownRespectCRLF',\n // displayName: 'Markdown Respect CRLF',\n // category: Category.Miscellaneous,\n // uiSelectorType: UISelectorType.booleanSelector,\n // },\n];\nconst layoutEntries: CustomizationEntry[] = [\n // height?: Nullable<string | number>,\n // width?: Nullable<string | number>,\n // minWidth?: Nullable<string | number>,\n {\n id: 'autoExpandEnabled',\n displayName: 'Auto Expand',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'closeButtonEnabled',\n displayName: 'Show default Close Button',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'fullScreenMode',\n displayName: 'Fullscreen Mode',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n }, \n {\n id: 'showPoweredBy',\n displayName: 'Show \"Powered by Druid\"',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'activityWrapperClassEnabled',\n displayName: 'Wrap bot activities with classes',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'height',\n displayName: 'Chat Height',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'width',\n displayName: 'Chat Width',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'minWidth',\n displayName: 'Chat Minimum Width',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'position',\n displayName: 'Position (left/right)',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.dropDownSelector,\n },\n {\n id: 'floatRight',\n displayName: 'Float',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'bottom',\n displayName: 'Bottom',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'top',\n displayName: 'Top',\n category: Category.Layout,\n subCategory: SubCategory.Common,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n //// CHAT BOX\n {\n id: 'chatBoxBorderRadius',\n displayName: 'Border Radius',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'chatBoxBottomRadius',\n displayName: 'Bottom Radius',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'chatBoxBorderColor',\n displayName: 'Border Color',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'transcriptLinkColor',\n displayName: 'Link Color',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'chatBoxBorderSize',\n displayName: 'Border Size',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.integerSelector,\n },\n {\n id: 'resizableEnabled',\n displayName: 'Enable Resize',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'autoScrollSnapOnPage',\n displayName: 'Auto Scroll',\n category: Category.Layout,\n subCategory: SubCategory.ChatBox,\n uiSelectorType: UISelectorType.booleanSelector,\n },\n //// HEADER\n {\n id: 'headerTextColor',\n displayName: 'Text Color',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'headerTextColorOnHover',\n displayName: 'Hover Text Color',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'headerButtonColorOnFocus',\n displayName: 'Focus Button Color',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n // {\n // id: 'headerFontSize',\n // displayName: 'Font Size',\n // category: Category.Layout,\n // subCategory: SubCategory.Header,\n // containerName: \"UI\",\n // uiSelectorType: UISelectorType.defaultSelector,\n // },\n {\n id: 'headerBottomBorderRadius',\n displayName: 'Bottom Border Radius',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'headerOuterPadding',\n displayName: 'Outer Padding',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.defaultSelector,\n },\n {\n id: 'headerBackground',\n displayName: 'Background Color',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.colorSelector,\n },\n {\n id: 'showCloseButton',\n displayName: 'Show Close Button',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'showChangeSideButton',\n displayName: 'Show Change Side Button',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'showLanguageSelector',\n displayName: 'Show Language Selector Button',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'showAvatar',\n displayName: 'Header - Show Avatar',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'showVoiceInputSelector',\n displayName: 'Show Voice Input Selector',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'showReload',\n displayName: 'Header - Show Reload Button',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n {\n id: 'showReset',\n displayName: 'Header - Show Reset Button',\n category: Category.Layout,\n subCategory: SubCategory.Header,\n containerName: \"UI.headerOptions\",\n uiSelectorType: UISelectorType.booleanSelector,\n },\n];\nconst customCSSEntries: CustomizationEntry[] = [\n {\n id: 'customDruidStyleSet',\n displayName: 'Druid StyleSet - JSON',\n category: Category.CustomCSS,\n containerName: \"root\",\n uiSelectorType: UISelectorType.defaultSelector,\n multiline: true\n },\n {\n id: 'restylingsEnabled',\n displayName: 'Druid New Layout',\n category: Category.CustomCSS,\n containerName: \"UI\",\n uiSelectorType: UISelectorType.booleanSelector,\n }\n]\n\nconst customHandlers: CustomizationEntry[] = [\n {\n id: 'webChatEventHandler',\n displayName: 'Webchat Event Handlers',\n category: Category.Handlers,\n uiSelectorType: UISelectorType.reactSelector,\n containerName: \"root\",\n multiline: true,\n defaultValue: \n `(action, currentDruidState) => {\n if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY' && DruidWebchat_v2.isNewActivity(currentDruidState, action.payload.activity)) {\n if(action.payload.activity.type === \"event\" && action.payload.activity.name == \"disableEvent\") {\n DruidWebchat_v2.disableChat();\n }\n }\n }`\n },\n {\n id: 'activityStatusMiddleware',\n displayName: 'ActivityStatus Middleware',\n category: Category.Handlers,\n uiSelectorType: UISelectorType.reactSelector,\n containerName: \"middlewares\",\n multiline: true,\n defaultValue: \"({ dispatch }) => next => (args)=> (<> { next(args) }</>)\"\n },\n {\n id: 'cardActionMiddleware',\n displayName: 'CardAction Middleware',\n category: Category.Handlers,\n uiSelectorType: UISelectorType.reactSelector,\n containerName: \"middlewares\",\n multiline: true,\n defaultValue: `({ dispatch }) => next => (args) => {\n const { cardAction} = args;\n console.log(\\`clicked \\${cardAction.value}\\`);\n return next(args);\n }`\n },\n {\n id: 'attachmentMiddleware',\n displayName: 'Attachment Middleware',\n category: Category.Handlers,\n uiSelectorType: UISelectorType.reactSelector,\n containerName: \"middlewares\",\n multiline: true,\n defaultValue: \"({ dispatch }) => next => (args)=> (<> { next(args) } </>)\"\n\n },\n {\n id: 'activityMiddleware',\n displayName: 'Activity Middleware',\n category: Category.Handlers,\n uiSelectorType: UISelectorType.reactSelector,\n containerName: \"middlewares\",\n multiline: true,\n defaultValue: ` () => next => (...setupArgs) => {\n const [card] = setupArgs;\n const activity = card.activity;\n if ( activity.type == 'message' && activity.text) {\n return (...renderArgs) => (\n (<>\n {\n next(card)(...renderArgs)\n }\n </>)\n );\n }\n return next(...setupArgs);\n }`\n\n },\n {\n id: 'scrollToEndButtonMiddleware',\n displayName: 'ScrollToEnd Button Middleware',\n category: Category.Handlers,\n uiSelectorType: UISelectorType.reactSelector,\n containerName: \"root\",\n multiline: true,\n defaultValue: `() => (next) => (args)=> (props) => {\n const nextRender = next(args);\n return nextRender ? <>{next(args)(props)}</> : <></>;\n }`\n }\n];\n\nconst generalEntries: CustomizationEntry[] = [\n {\n id: 'isDisabled',\n displayName: 'Disable webchat',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'queryParams',\n displayName: 'queryParams',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n {\n id: 'backgroundTrafficEnabled',\n displayName: 'Background Traffic Enabled',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'authorizationUrl',\n displayName: 'authorizationUrl',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n {\n id: 'authorizationBaseUrl',\n displayName: 'authorizationBaseUrl',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n {\n id: 'withCredentials',\n displayName: 'Calls withCredentials',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'withCredentials_authorization',\n displayName: 'Authorization call withCredentials',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'notificationsEnabled',\n displayName: 'Enable Notifications',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'otherServicesEndpointIndex',\n displayName: 'Other Services Endpoint Index',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.integerSelector,\n containerName: \"root\"\n },\n {\n id: 'heartBeatUrl',\n displayName: '\\'Heartbeat\\' Url',\n category: Category.General,\n subCategory: SubCategory.Common,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n // {\n // id: 'userId',\n // displayName: 'userId',\n // category: Category.General,\n // uiSelectorType: UISelectorType.defaultSelector,\n // containerName: \"root\"\n // },\n // {\n // id: 'username',\n // displayName: 'username',\n // category: Category.General,\n // uiSelectorType: UISelectorType.defaultSelector,\n // containerName: \"root\"\n // },\n //// COOKIES\n \n {\n id: 'conversationTokenEnabled',\n displayName: 'conversationTokenEnabled',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'druidCookiesExpirationInDays',\n displayName: 'druidCookiesExpirationInDays - Can be fractional (ex: 1/48 for 30minutes)',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n {\n id: 'conversationToken_namePrefix',\n displayName: 'conversationToken_namePrefix',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n {\n id: 'druidWebChatIsOpenedEnabled',\n displayName: 'druidWebChatIsOpenedEnabled',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'druidWebChatIsOpened_namePrefix',\n displayName: 'druidWebChatIsOpened_namePrefix',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n {\n id: 'druidCookieConsentEnabled',\n displayName: 'druidCookieConsent',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.booleanSelector,\n containerName: \"root\"\n },\n {\n id: 'cookieDomain',\n displayName: 'cookieDomain',\n category: Category.General,\n subCategory: SubCategory.Cookies,\n uiSelectorType: UISelectorType.defaultSelector,\n containerName: \"root\"\n },\n];\n\nconst localizationEntry: CustomizationEntry = {\n id: 'localization',\n displayName: 'Localization',\n category: Category.Localization,\n uiSelectorType: UISelectorType.localizationSelector,\n containerName: \"root\"\n};\n\nconst searchEntry: CustomizationEntry = {\n id: 'search',\n displayName: 'Search',\n category: Category.Search,\n uiSelectorType: UISelectorType.searchSelector,\n containerName: \"root\"\n};\n\nexport const customizationEntries: CustomizationEntry[] = [\n ...colorAndPaddingEntries,\n ...fontEntries,\n ...avatarEntries,\n ...buttonsEntries,\n ...chatBubbleEntries,\n ...sendBoxEntries,\n ...suggestedActionsEntries,\n ...timestampAndStatusEntries,\n ...trascriptOverlayButtonsEntries,\n ...connectivityUIEntries,\n ...toastUIEntries,\n ...miscellaneousEntries,\n ...layoutEntries,\n ...customCSSEntries,\n ...customHandlers,\n ...generalEntries,\n searchEntry,\n localizationEntry,\n \n];\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// A packages cache that makes sure that we don't inject the same packageName twice in the same bundle -\n// this cache is local to the module closure inside this bundle\nconst packagesCache: { [name: string]: string } = {};\n\n// Cache access to window to avoid IE11 memory leak.\nlet _win: Window | undefined = undefined;\n\ntry {\n _win = window;\n} catch (e) {\n /* no-op */\n}\n\nexport function setVersion(packageName: string, packageVersion: string): void {\n if (typeof _win !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const packages = ((_win as any).__packages__ = (_win as any).__packages__ || {});\n\n // We allow either the global packages or local packages caches to invalidate so testing can\n // just clear the global to set this state\n if (!packages[packageName] || !packagesCache[packageName]) {\n packagesCache[packageName] = packageVersion;\n const versions = (packages[packageName] = packages[packageName] || []);\n versions.push(packageVersion);\n }\n }\n}\n","import { initializeIcons as i } from './fabric-icons';\nimport { initializeIcons as i0 } from './fabric-icons-0';\nimport { initializeIcons as i1 } from './fabric-icons-1';\nimport { initializeIcons as i2 } from './fabric-icons-2';\nimport { initializeIcons as i3 } from './fabric-icons-3';\nimport { initializeIcons as i4 } from './fabric-icons-4';\nimport { initializeIcons as i5 } from './fabric-icons-5';\nimport { initializeIcons as i6 } from './fabric-icons-6';\nimport { initializeIcons as i7 } from './fabric-icons-7';\nimport { initializeIcons as i8 } from './fabric-icons-8';\nimport { initializeIcons as i9 } from './fabric-icons-9';\nimport { initializeIcons as i10 } from './fabric-icons-10';\nimport { initializeIcons as i11 } from './fabric-icons-11';\nimport { initializeIcons as i12 } from './fabric-icons-12';\nimport { initializeIcons as i13 } from './fabric-icons-13';\nimport { initializeIcons as i14 } from './fabric-icons-14';\nimport { initializeIcons as i15 } from './fabric-icons-15';\nimport { initializeIcons as i16 } from './fabric-icons-16';\nimport { initializeIcons as i17 } from './fabric-icons-17';\n\nimport { IIconOptions } from '@uifabric/styling';\nimport { registerIconAliases } from './iconAliases';\nconst DEFAULT_BASE_URL = 'https://spoppe-b.azureedge.net/files/fabric-cdn-prod_20210407.001/assets/icons/';\n\nexport function initializeIcons(baseUrl: string = DEFAULT_BASE_URL, options?: IIconOptions): void {\n [\n i,\n i0,\n i1,\n i2,\n i3,\n i4,\n i5,\n i6,\n i7,\n i8,\n i9,\n i10,\n i11,\n i12,\n i13,\n i14,\n i15,\n i16,\n i17,\n ].forEach((initialize: (url: string, options?: IIconOptions) => void) => initialize(baseUrl, options));\n\n registerIconAliases();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nexport { IconNames } from './IconNames';\n\nimport './version';\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 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}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: /@[\\w-](?:[^;{\\s]|\\s+(?![\\s{]))*(?:;|(?=\\s*\\{))/,\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\tpattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/* @flow */\n/* global global */\n\nimport * as React from 'react';\n\ntype Props = React.ElementConfig<'div'> & {\n // Props for the component\n value: string,\n onValueChange: (value: string) => mixed,\n highlight: (value: string) => string | React.Node,\n tabSize: number,\n insertSpaces: boolean,\n ignoreTabKey: boolean,\n padding: number | string,\n style?: {},\n\n // Props for the textarea\n textareaId?: string,\n textareaClassName?: string,\n autoFocus?: boolean,\n disabled?: boolean,\n form?: string,\n maxLength?: number,\n minLength?: number,\n name?: string,\n placeholder?: string,\n readOnly?: boolean,\n required?: boolean,\n onClick?: (e: MouseEvent) => mixed,\n onFocus?: (e: FocusEvent) => mixed,\n onBlur?: (e: FocusEvent) => mixed,\n onKeyUp?: (e: KeyboardEvent) => mixed,\n onKeyDown?: (e: KeyboardEvent) => mixed,\n\n // Props for the hightlighted code’s pre element\n preClassName?: string,\n};\n\ntype State = {\n capture: boolean,\n};\n\ntype Record = {\n value: string,\n selectionStart: number,\n selectionEnd: number,\n};\n\ntype History = {\n stack: Array<Record & { timestamp: number }>,\n offset: number,\n};\n\nconst KEYCODE_ENTER = 13;\nconst KEYCODE_TAB = 9;\nconst KEYCODE_BACKSPACE = 8;\nconst KEYCODE_Y = 89;\nconst KEYCODE_Z = 90;\nconst KEYCODE_M = 77;\nconst KEYCODE_PARENS = 57;\nconst KEYCODE_BRACKETS = 219;\nconst KEYCODE_QUOTE = 222;\nconst KEYCODE_BACK_QUOTE = 192;\nconst KEYCODE_ESCAPE = 27;\n\nconst HISTORY_LIMIT = 100;\nconst HISTORY_TIME_GAP = 3000;\n\nconst isWindows = 'navigator' in global && /Win/i.test(navigator.platform);\nconst isMacLike =\n 'navigator' in global && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n\nconst className = 'npm__react-simple-code-editor__textarea';\n\nconst cssText = /* CSS */ `\n/**\n * Reset the text fill color so that placeholder is visible\n */\n.${className}:empty {\n -webkit-text-fill-color: inherit !important;\n}\n\n/**\n * Hack to apply on some CSS on IE10 and IE11\n */\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n /**\n * IE doesn't support '-webkit-text-fill-color'\n * So we use 'color: transparent' to make the text transparent on IE\n * Unlike other browsers, it doesn't affect caret color in IE\n */\n .${className} {\n color: transparent !important;\n }\n\n .${className}::selection {\n background-color: #accef7 !important;\n color: transparent !important;\n }\n}\n`;\n\nexport default class Editor extends React.Component<Props, State> {\n static defaultProps = {\n tabSize: 2,\n insertSpaces: true,\n ignoreTabKey: false,\n padding: 0,\n };\n\n state = {\n capture: true,\n };\n\n componentDidMount() {\n this._recordCurrentState();\n }\n\n _recordCurrentState = () => {\n const input = this._input;\n\n if (!input) return;\n\n // Save current state of the input\n const { value, selectionStart, selectionEnd } = input;\n\n this._recordChange({\n value,\n selectionStart,\n selectionEnd,\n });\n };\n\n _getLines = (text: string, position: number) =>\n text.substring(0, position).split('\\n');\n\n _recordChange = (record: Record, overwrite?: boolean = false) => {\n const { stack, offset } = this._history;\n\n if (stack.length && offset > -1) {\n // When something updates, drop the redo operations\n this._history.stack = stack.slice(0, offset + 1);\n\n // Limit the number of operations to 100\n const count = this._history.stack.length;\n\n if (count > HISTORY_LIMIT) {\n const extras = count - HISTORY_LIMIT;\n\n this._history.stack = stack.slice(extras, count);\n this._history.offset = Math.max(this._history.offset - extras, 0);\n }\n }\n\n const timestamp = Date.now();\n\n if (overwrite) {\n const last = this._history.stack[this._history.offset];\n\n if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {\n // A previous entry exists and was in short interval\n\n // Match the last word in the line\n const re = /[^a-z0-9]([a-z0-9]+)$/i;\n\n // Get the previous line\n const previous = this._getLines(last.value, last.selectionStart)\n .pop()\n .match(re);\n\n // Get the current line\n const current = this._getLines(record.value, record.selectionStart)\n .pop()\n .match(re);\n\n if (previous && current && current[1].startsWith(previous[1])) {\n // The last word of the previous line and current line match\n // Overwrite previous entry so that undo will remove whole word\n this._history.stack[this._history.offset] = { ...record, timestamp };\n\n return;\n }\n }\n }\n\n // Add the new operation to the stack\n this._history.stack.push({ ...record, timestamp });\n this._history.offset++;\n };\n\n _updateInput = (record: Record) => {\n const input = this._input;\n\n if (!input) return;\n\n // Update values and selection state\n input.value = record.value;\n input.selectionStart = record.selectionStart;\n input.selectionEnd = record.selectionEnd;\n\n this.props.onValueChange(record.value);\n };\n\n _applyEdits = (record: Record) => {\n // Save last selection state\n const input = this._input;\n const last = this._history.stack[this._history.offset];\n\n if (last && input) {\n this._history.stack[this._history.offset] = {\n ...last,\n selectionStart: input.selectionStart,\n selectionEnd: input.selectionEnd,\n };\n }\n\n // Save the changes\n this._recordChange(record);\n this._updateInput(record);\n };\n\n _undoEdit = () => {\n const { stack, offset } = this._history;\n\n // Get the previous edit\n const record = stack[offset - 1];\n\n if (record) {\n // Apply the changes and update the offset\n this._updateInput(record);\n this._history.offset = Math.max(offset - 1, 0);\n }\n };\n\n _redoEdit = () => {\n const { stack, offset } = this._history;\n\n // Get the next edit\n const record = stack[offset + 1];\n\n if (record) {\n // Apply the changes and update the offset\n this._updateInput(record);\n this._history.offset = Math.min(offset + 1, stack.length - 1);\n }\n };\n\n _handleKeyDown = (e: *) => {\n const { tabSize, insertSpaces, ignoreTabKey, onKeyDown } = this.props;\n\n if (onKeyDown) {\n onKeyDown(e);\n\n if (e.defaultPrevented) {\n return;\n }\n }\n\n if (e.keyCode === KEYCODE_ESCAPE) {\n e.target.blur();\n }\n\n const { value, selectionStart, selectionEnd } = e.target;\n\n const tabCharacter = (insertSpaces ? ' ' : '\\t').repeat(tabSize);\n\n if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.state.capture) {\n // Prevent focus change\n e.preventDefault();\n\n if (e.shiftKey) {\n // Unindent selected lines\n const linesBeforeCaret = this._getLines(value, selectionStart);\n const startLine = linesBeforeCaret.length - 1;\n const endLine = this._getLines(value, selectionEnd).length - 1;\n const nextValue = value\n .split('\\n')\n .map((line, i) => {\n if (\n i >= startLine &&\n i <= endLine &&\n line.startsWith(tabCharacter)\n ) {\n return line.substring(tabCharacter.length);\n }\n\n return line;\n })\n .join('\\n');\n\n if (value !== nextValue) {\n const startLineText = linesBeforeCaret[startLine];\n\n this._applyEdits({\n value: nextValue,\n // Move the start cursor if first line in selection was modified\n // It was modified only if it started with a tab\n selectionStart: startLineText.startsWith(tabCharacter)\n ? selectionStart - tabCharacter.length\n : selectionStart,\n // Move the end cursor by total number of characters removed\n selectionEnd: selectionEnd - (value.length - nextValue.length),\n });\n }\n } else if (selectionStart !== selectionEnd) {\n // Indent selected lines\n const linesBeforeCaret = this._getLines(value, selectionStart);\n const startLine = linesBeforeCaret.length - 1;\n const endLine = this._getLines(value, selectionEnd).length - 1;\n const startLineText = linesBeforeCaret[startLine];\n\n this._applyEdits({\n value: value\n .split('\\n')\n .map((line, i) => {\n if (i >= startLine && i <= endLine) {\n return tabCharacter + line;\n }\n\n return line;\n })\n .join('\\n'),\n // Move the start cursor by number of characters added in first line of selection\n // Don't move it if it there was no text before cursor\n selectionStart: /\\S/.test(startLineText)\n ? selectionStart + tabCharacter.length\n : selectionStart,\n // Move the end cursor by total number of characters added\n selectionEnd:\n selectionEnd + tabCharacter.length * (endLine - startLine + 1),\n });\n } else {\n const updatedSelection = selectionStart + tabCharacter.length;\n\n this._applyEdits({\n // Insert tab character at caret\n value:\n value.substring(0, selectionStart) +\n tabCharacter +\n value.substring(selectionEnd),\n // Update caret position\n selectionStart: updatedSelection,\n selectionEnd: updatedSelection,\n });\n }\n } else if (e.keyCode === KEYCODE_BACKSPACE) {\n const hasSelection = selectionStart !== selectionEnd;\n const textBeforeCaret = value.substring(0, selectionStart);\n\n if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {\n // Prevent default delete behaviour\n e.preventDefault();\n\n const updatedSelection = selectionStart - tabCharacter.length;\n\n this._applyEdits({\n // Remove tab character at caret\n value:\n value.substring(0, selectionStart - tabCharacter.length) +\n value.substring(selectionEnd),\n // Update caret position\n selectionStart: updatedSelection,\n selectionEnd: updatedSelection,\n });\n }\n } else if (e.keyCode === KEYCODE_ENTER) {\n // Ignore selections\n if (selectionStart === selectionEnd) {\n // Get the current line\n const line = this._getLines(value, selectionStart).pop();\n const matches = line.match(/^\\s+/);\n\n if (matches && matches[0]) {\n e.preventDefault();\n\n // Preserve indentation on inserting a new line\n const indent = '\\n' + matches[0];\n const updatedSelection = selectionStart + indent.length;\n\n this._applyEdits({\n // Insert indentation character at caret\n value:\n value.substring(0, selectionStart) +\n indent +\n value.substring(selectionEnd),\n // Update caret position\n selectionStart: updatedSelection,\n selectionEnd: updatedSelection,\n });\n }\n }\n } else if (\n e.keyCode === KEYCODE_PARENS ||\n e.keyCode === KEYCODE_BRACKETS ||\n e.keyCode === KEYCODE_QUOTE ||\n e.keyCode === KEYCODE_BACK_QUOTE\n ) {\n let chars;\n\n if (e.keyCode === KEYCODE_PARENS && e.shiftKey) {\n chars = ['(', ')'];\n } else if (e.keyCode === KEYCODE_BRACKETS) {\n if (e.shiftKey) {\n chars = ['{', '}'];\n } else {\n chars = ['[', ']'];\n }\n } else if (e.keyCode === KEYCODE_QUOTE) {\n if (e.shiftKey) {\n chars = ['\"', '\"'];\n } else {\n chars = [\"'\", \"'\"];\n }\n } else if (e.keyCode === KEYCODE_BACK_QUOTE && !e.shiftKey) {\n chars = ['`', '`'];\n }\n\n // If text is selected, wrap them in the characters\n if (selectionStart !== selectionEnd && chars) {\n e.preventDefault();\n\n this._applyEdits({\n value:\n value.substring(0, selectionStart) +\n chars[0] +\n value.substring(selectionStart, selectionEnd) +\n chars[1] +\n value.substring(selectionEnd),\n // Update caret position\n selectionStart,\n selectionEnd: selectionEnd + 2,\n });\n }\n } else if (\n (isMacLike\n ? // Trigger undo with ⌘+Z on Mac\n e.metaKey && e.keyCode === KEYCODE_Z\n : // Trigger undo with Ctrl+Z on other platforms\n e.ctrlKey && e.keyCode === KEYCODE_Z) &&\n !e.shiftKey &&\n !e.altKey\n ) {\n e.preventDefault();\n\n this._undoEdit();\n } else if (\n (isMacLike\n ? // Trigger redo with ⌘+Shift+Z on Mac\n e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey\n : isWindows\n ? // Trigger redo with Ctrl+Y on Windows\n e.ctrlKey && e.keyCode === KEYCODE_Y\n : // Trigger redo with Ctrl+Shift+Z on other platforms\n e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) &&\n !e.altKey\n ) {\n e.preventDefault();\n\n this._redoEdit();\n } else if (\n e.keyCode === KEYCODE_M &&\n e.ctrlKey &&\n (isMacLike ? e.shiftKey : true)\n ) {\n e.preventDefault();\n\n // Toggle capturing tab key so users can focus away\n this.setState(state => ({\n capture: !state.capture,\n }));\n }\n };\n\n _handleChange = (e: *) => {\n const { value, selectionStart, selectionEnd } = e.target;\n\n this._recordChange(\n {\n value,\n selectionStart,\n selectionEnd,\n },\n true\n );\n\n this.props.onValueChange(value);\n };\n\n _history: History = {\n stack: [],\n offset: -1,\n };\n\n _input: ?HTMLTextAreaElement;\n\n get session() {\n return {\n history: this._history,\n };\n }\n\n set session(session: { history: History }) {\n this._history = session.history;\n }\n\n render() {\n const {\n value,\n style,\n padding,\n highlight,\n textareaId,\n textareaClassName,\n autoFocus,\n disabled,\n form,\n maxLength,\n minLength,\n name,\n placeholder,\n readOnly,\n required,\n onClick,\n onFocus,\n onBlur,\n onKeyUp,\n /* eslint-disable no-unused-vars */\n onKeyDown,\n onValueChange,\n tabSize,\n insertSpaces,\n ignoreTabKey,\n /* eslint-enable no-unused-vars */\n preClassName,\n ...rest\n } = this.props;\n\n const contentStyle = {\n paddingTop: padding,\n paddingRight: padding,\n paddingBottom: padding,\n paddingLeft: padding,\n };\n\n const highlighted = highlight(value);\n\n return (\n <div {...rest} style={{ ...styles.container, ...style }}>\n <textarea\n ref={c => (this._input = c)}\n style={{\n ...styles.editor,\n ...styles.textarea,\n ...contentStyle,\n }}\n className={\n className + (textareaClassName ? ` ${textareaClassName}` : '')\n }\n id={textareaId}\n value={value}\n onChange={this._handleChange}\n onKeyDown={this._handleKeyDown}\n onClick={onClick}\n onKeyUp={onKeyUp}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n form={form}\n maxLength={maxLength}\n minLength={minLength}\n name={name}\n placeholder={placeholder}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n data-gramm={false}\n />\n <pre\n className={preClassName}\n aria-hidden=\"true\"\n style={{ ...styles.editor, ...styles.highlight, ...contentStyle }}\n {...(typeof highlighted === 'string'\n ? { dangerouslySetInnerHTML: { __html: highlighted + '<br />' } }\n : { children: highlighted })}\n />\n {/* eslint-disable-next-line react/no-danger */}\n <style type=\"text/css\" dangerouslySetInnerHTML={{ __html: cssText }} />\n </div>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'relative',\n textAlign: 'left',\n boxSizing: 'border-box',\n padding: 0,\n overflow: 'hidden',\n },\n textarea: {\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n resize: 'none',\n color: 'inherit',\n overflow: 'hidden',\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n WebkitTextFillColor: 'transparent',\n },\n highlight: {\n position: 'relative',\n pointerEvents: 'none',\n },\n editor: {\n margin: 0,\n border: 0,\n background: 'none',\n boxSizing: 'inherit',\n display: 'inherit',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n fontStyle: 'inherit',\n fontVariantLigatures: 'inherit',\n fontWeight: 'inherit',\n letterSpacing: 'inherit',\n lineHeight: 'inherit',\n tabSize: 'inherit',\n textIndent: 'inherit',\n textRendering: 'inherit',\n textTransform: 'inherit',\n whiteSpace: 'pre-wrap',\n wordBreak: 'keep-all',\n overflowWrap: 'break-word',\n },\n};\n","/*!\n * jsoneditor.js\n *\n * @brief\n * JSONEditor is a web-based tool to view, edit, format, and validate JSON.\n * It has various modes such as a tree editor, a code editor, and a plain text\n * editor.\n *\n * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+\n *\n * @license\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy\n * of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n *\n * Copyright (c) 2011-2022 Jos de Jong, http://jsoneditoronline.org\n *\n * @author Jos de Jong, <wjosdejong@gmail.com>\n * @version 9.7.3\n * @date 2022-03-04\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSONEditor\"] = factory();\n\telse\n\t\troot[\"JSONEditor\"] = factory();\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 897:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"x\": function() { return /* binding */ ContextMenu; }\n/* harmony export */ });\n/* harmony import */ var _createAbsoluteAnchor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(602);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(791);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(907);\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n/**\n * A context menu\n * @param {Object[]} items Array containing the menu structure\n * TODO: describe structure\n * @param {Object} [options] Object with options. Available options:\n * {function} close Callback called when the\n * context menu is being closed.\n * {boolean} limitHeight Whether ContextMenu height should be\n * limited or not.\n * @constructor\n */\n\nvar ContextMenu = /*#__PURE__*/function () {\n function ContextMenu(items, options) {\n _classCallCheck(this, ContextMenu);\n\n this.dom = {};\n var me = this;\n var dom = this.dom;\n this.anchor = undefined;\n this.items = items;\n this.eventListeners = {};\n this.selection = undefined; // holds the selection before the menu was opened\n\n this.onClose = options ? options.close : undefined;\n this.limitHeight = options ? options.limitHeight : false; // create root element\n\n var root = document.createElement('div');\n root.className = 'jsoneditor-contextmenu-root';\n dom.root = root; // create a container element\n\n var menu = document.createElement('div');\n menu.className = 'jsoneditor-contextmenu';\n dom.menu = menu;\n root.appendChild(menu); // create a list to hold the menu items\n\n var list = document.createElement('ul');\n list.className = 'jsoneditor-menu';\n menu.appendChild(list);\n dom.list = list;\n dom.items = []; // list with all buttons\n // create a (non-visible) button to set the focus to the menu\n\n var focusButton = document.createElement('button');\n focusButton.type = 'button';\n dom.focusButton = focusButton;\n var li = document.createElement('li');\n li.style.overflow = 'hidden';\n li.style.height = '0';\n li.appendChild(focusButton);\n list.appendChild(li);\n\n function createMenuItems(list, domItems, items) {\n items.forEach(function (item) {\n if (item.type === 'separator') {\n // create a separator\n var separator = document.createElement('div');\n separator.className = 'jsoneditor-separator';\n\n var _li = document.createElement('li');\n\n _li.appendChild(separator);\n\n list.appendChild(_li);\n } else {\n var domItem = {}; // create a menu item\n\n var _li2 = document.createElement('li');\n\n list.appendChild(_li2); // create a button in the menu item\n\n var button = document.createElement('button');\n button.type = 'button';\n button.className = item.className;\n domItem.button = button;\n\n if (item.title) {\n button.title = item.title;\n }\n\n if (item.click) {\n button.onclick = function (event) {\n event.preventDefault();\n me.hide();\n item.click();\n };\n }\n\n _li2.appendChild(button); // create the contents of the button\n\n\n if (item.submenu) {\n // add the icon to the button\n var divIcon = document.createElement('div');\n divIcon.className = 'jsoneditor-icon';\n button.appendChild(divIcon);\n var divText = document.createElement('div');\n divText.className = 'jsoneditor-text' + (item.click ? '' : ' jsoneditor-right-margin');\n divText.appendChild(document.createTextNode(item.text));\n button.appendChild(divText);\n var buttonSubmenu;\n\n if (item.click) {\n // submenu and a button with a click handler\n button.className += ' jsoneditor-default';\n var buttonExpand = document.createElement('button');\n buttonExpand.type = 'button';\n domItem.buttonExpand = buttonExpand;\n buttonExpand.className = 'jsoneditor-expand';\n var buttonExpandInner = document.createElement('div');\n buttonExpandInner.className = 'jsoneditor-expand';\n buttonExpand.appendChild(buttonExpandInner);\n\n _li2.appendChild(buttonExpand);\n\n if (item.submenuTitle) {\n buttonExpand.title = item.submenuTitle;\n }\n\n buttonSubmenu = buttonExpand;\n } else {\n // submenu and a button without a click handler\n var divExpand = document.createElement('div');\n divExpand.className = 'jsoneditor-expand';\n button.appendChild(divExpand);\n buttonSubmenu = button;\n } // attach a handler to expand/collapse the submenu\n\n\n buttonSubmenu.onclick = function (event) {\n event.preventDefault();\n\n me._onExpandItem(domItem);\n\n buttonSubmenu.focus();\n }; // create the submenu\n\n\n var domSubItems = [];\n domItem.subItems = domSubItems;\n var ul = document.createElement('ul');\n domItem.ul = ul;\n ul.className = 'jsoneditor-menu';\n ul.style.height = '0';\n\n _li2.appendChild(ul);\n\n createMenuItems(ul, domSubItems, item.submenu);\n } else {\n // no submenu, just a button with clickhandler\n var icon = document.createElement('div');\n icon.className = 'jsoneditor-icon';\n button.appendChild(icon);\n var text = document.createElement('div');\n text.className = 'jsoneditor-text';\n text.appendChild(document.createTextNode((0,_i18n__WEBPACK_IMPORTED_MODULE_2__/* .translate */ .Iu)(item.text)));\n button.appendChild(text);\n }\n\n domItems.push(domItem);\n }\n });\n }\n\n createMenuItems(list, this.dom.items, items); // TODO: when the editor is small, show the submenu on the right instead of inline?\n // calculate the max height of the menu with one submenu expanded\n\n this.maxHeight = 0; // height in pixels\n\n items.forEach(function (item) {\n var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24;\n me.maxHeight = Math.max(me.maxHeight, height);\n });\n }\n /**\n * Get the currently visible buttons\n * @return {Array.<HTMLElement>} buttons\n * @private\n */\n\n\n _createClass(ContextMenu, [{\n key: \"_getVisibleButtons\",\n value: function _getVisibleButtons() {\n var buttons = [];\n var me = this;\n this.dom.items.forEach(function (item) {\n buttons.push(item.button);\n\n if (item.buttonExpand) {\n buttons.push(item.buttonExpand);\n }\n\n if (item.subItems && item === me.expandedItem) {\n item.subItems.forEach(function (subItem) {\n buttons.push(subItem.button);\n\n if (subItem.buttonExpand) {\n buttons.push(subItem.buttonExpand);\n } // TODO: change to fully recursive method\n\n });\n }\n });\n return buttons;\n }\n /**\n * Attach the menu to an anchor\n * @param {HTMLElement} anchor Anchor where the menu will be attached as sibling.\n * @param {HTMLElement} frame The root of the JSONEditor window\n * @param {Boolean=} ignoreParent ignore anchor parent in regard to the calculation of the position, needed when the parent position is absolute\n */\n\n }, {\n key: \"show\",\n value: function show(anchor, frame, ignoreParent) {\n this.hide(); // determine whether to display the menu below or above the anchor\n\n var showBelow = true;\n var parent = anchor.parentNode;\n var anchorRect = anchor.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n var frameRect = frame.getBoundingClientRect();\n var me = this;\n this.dom.absoluteAnchor = (0,_createAbsoluteAnchor__WEBPACK_IMPORTED_MODULE_0__/* .createAbsoluteAnchor */ .w)(anchor, frame, function () {\n me.hide();\n });\n\n if (anchorRect.bottom + this.maxHeight < frameRect.bottom) {// fits below -> show below\n } else if (anchorRect.top - this.maxHeight > frameRect.top) {\n // fits above -> show above\n showBelow = false;\n } else {// doesn't fit above nor below -> show below\n }\n\n var topGap = ignoreParent ? 0 : anchorRect.top - parentRect.top; // position the menu\n\n if (showBelow) {\n // display the menu below the anchor\n var anchorHeight = anchor.offsetHeight;\n this.dom.menu.style.left = '0';\n this.dom.menu.style.top = topGap + anchorHeight + 'px';\n this.dom.menu.style.bottom = '';\n } else {\n // display the menu above the anchor\n this.dom.menu.style.left = '0';\n this.dom.menu.style.top = '';\n this.dom.menu.style.bottom = '0px';\n }\n\n if (this.limitHeight) {\n var margin = 10; // make sure there is a little margin left\n\n var maxPossibleMenuHeight = showBelow ? frameRect.bottom - anchorRect.bottom - margin : anchorRect.top - frameRect.top - margin;\n this.dom.list.style.maxHeight = maxPossibleMenuHeight + 'px';\n this.dom.list.style.overflowY = 'auto';\n } // attach the menu to the temporary, absolute anchor\n // parent.insertBefore(this.dom.root, anchor);\n\n\n this.dom.absoluteAnchor.appendChild(this.dom.root); // move focus to the first button in the context menu\n\n this.selection = (0,_util__WEBPACK_IMPORTED_MODULE_1__.getSelection)();\n this.anchor = anchor;\n setTimeout(function () {\n me.dom.focusButton.focus();\n }, 0);\n\n if (ContextMenu.visibleMenu) {\n ContextMenu.visibleMenu.hide();\n }\n\n ContextMenu.visibleMenu = this;\n }\n /**\n * Hide the context menu if visible\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n // remove temporary absolutely positioned anchor\n if (this.dom.absoluteAnchor) {\n this.dom.absoluteAnchor.destroy();\n delete this.dom.absoluteAnchor;\n } // remove the menu from the DOM\n\n\n if (this.dom.root.parentNode) {\n this.dom.root.parentNode.removeChild(this.dom.root);\n\n if (this.onClose) {\n this.onClose();\n }\n }\n\n if (ContextMenu.visibleMenu === this) {\n ContextMenu.visibleMenu = undefined;\n }\n }\n /**\n * Expand a submenu\n * Any currently expanded submenu will be hided.\n * @param {Object} domItem\n * @private\n */\n\n }, {\n key: \"_onExpandItem\",\n value: function _onExpandItem(domItem) {\n var me = this;\n var alreadyVisible = domItem === this.expandedItem; // hide the currently visible submenu\n\n var expandedItem = this.expandedItem;\n\n if (expandedItem) {\n // var ul = expandedItem.ul;\n expandedItem.ul.style.height = '0';\n expandedItem.ul.style.padding = '';\n setTimeout(function () {\n if (me.expandedItem !== expandedItem) {\n expandedItem.ul.style.display = '';\n (0,_util__WEBPACK_IMPORTED_MODULE_1__.removeClassName)(expandedItem.ul.parentNode, 'jsoneditor-selected');\n }\n }, 300); // timeout duration must match the css transition duration\n\n this.expandedItem = undefined;\n }\n\n if (!alreadyVisible) {\n var ul = domItem.ul;\n ul.style.display = 'block'; // eslint-disable-next-line no-unused-expressions\n\n ul.clientHeight; // force a reflow in Firefox\n\n setTimeout(function () {\n if (me.expandedItem === domItem) {\n var childsHeight = 0;\n\n for (var i = 0; i < ul.childNodes.length; i++) {\n childsHeight += ul.childNodes[i].clientHeight;\n }\n\n ul.style.height = childsHeight + 'px';\n ul.style.padding = '5px 10px';\n }\n }, 0);\n (0,_util__WEBPACK_IMPORTED_MODULE_1__.addClassName)(ul.parentNode, 'jsoneditor-selected');\n this.expandedItem = domItem;\n }\n }\n /**\n * Handle onkeydown event\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var target = event.target;\n var keynum = event.which;\n var handled = false;\n var buttons, targetIndex, prevButton, nextButton;\n\n if (keynum === 27) {\n // ESC\n // hide the menu on ESC key\n // restore previous selection and focus\n if (this.selection) {\n (0,_util__WEBPACK_IMPORTED_MODULE_1__.setSelection)(this.selection);\n }\n\n if (this.anchor) {\n this.anchor.focus();\n }\n\n this.hide();\n handled = true;\n } else if (keynum === 9) {\n // Tab\n if (!event.shiftKey) {\n // Tab\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n\n if (targetIndex === buttons.length - 1) {\n // move to first button\n buttons[0].focus();\n handled = true;\n }\n } else {\n // Shift+Tab\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n\n if (targetIndex === 0) {\n // move to last button\n buttons[buttons.length - 1].focus();\n handled = true;\n }\n }\n } else if (keynum === 37) {\n // Arrow Left\n if (target.className === 'jsoneditor-expand') {\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n prevButton = buttons[targetIndex - 1];\n\n if (prevButton) {\n prevButton.focus();\n }\n }\n\n handled = true;\n } else if (keynum === 38) {\n // Arrow Up\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n prevButton = buttons[targetIndex - 1];\n\n if (prevButton && prevButton.className === 'jsoneditor-expand') {\n // skip expand button\n prevButton = buttons[targetIndex - 2];\n }\n\n if (!prevButton) {\n // move to last button\n prevButton = buttons[buttons.length - 1];\n }\n\n if (prevButton) {\n prevButton.focus();\n }\n\n handled = true;\n } else if (keynum === 39) {\n // Arrow Right\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n nextButton = buttons[targetIndex + 1];\n\n if (nextButton && nextButton.className === 'jsoneditor-expand') {\n nextButton.focus();\n }\n\n handled = true;\n } else if (keynum === 40) {\n // Arrow Down\n buttons = this._getVisibleButtons();\n targetIndex = buttons.indexOf(target);\n nextButton = buttons[targetIndex + 1];\n\n if (nextButton && nextButton.className === 'jsoneditor-expand') {\n // skip expand button\n nextButton = buttons[targetIndex + 2];\n }\n\n if (!nextButton) {\n // move to first button\n nextButton = buttons[0];\n }\n\n if (nextButton) {\n nextButton.focus();\n handled = true;\n }\n\n handled = true;\n } // TODO: arrow left and right\n\n\n if (handled) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }]);\n\n return ContextMenu;\n}(); // currently displayed context menu, a singleton. We may only have one visible context menu\n\nContextMenu.visibleMenu = undefined;\n\n/***/ }),\n\n/***/ 436:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Q\": function() { return /* binding */ ErrorTable; }\n/* harmony export */ });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\n * Show errors and schema warnings in a clickable table view\n * @param {Object} config\n * @property {boolean} errorTableVisible\n * @property {function (boolean) : void} onToggleVisibility\n * @property {function (number)} [onFocusLine]\n * @property {function (number)} onChangeHeight\n * @constructor\n */\nvar ErrorTable = /*#__PURE__*/function () {\n function ErrorTable(config) {\n _classCallCheck(this, ErrorTable);\n\n this.errorTableVisible = config.errorTableVisible;\n this.onToggleVisibility = config.onToggleVisibility;\n\n this.onFocusLine = config.onFocusLine || function () {};\n\n this.onChangeHeight = config.onChangeHeight;\n this.dom = {};\n var validationErrorsContainer = document.createElement('div');\n validationErrorsContainer.className = 'jsoneditor-validation-errors-container';\n this.dom.validationErrorsContainer = validationErrorsContainer;\n var additionalErrorsIndication = document.createElement('div');\n additionalErrorsIndication.style.display = 'none';\n additionalErrorsIndication.className = 'jsoneditor-additional-errors fadein';\n additionalErrorsIndication.textContent = \"Scroll for more \\u25BF\";\n this.dom.additionalErrorsIndication = additionalErrorsIndication;\n validationErrorsContainer.appendChild(additionalErrorsIndication);\n var validationErrorIcon = document.createElement('span');\n validationErrorIcon.className = 'jsoneditor-validation-error-icon';\n validationErrorIcon.style.display = 'none';\n this.dom.validationErrorIcon = validationErrorIcon;\n var validationErrorCount = document.createElement('span');\n validationErrorCount.className = 'jsoneditor-validation-error-count';\n validationErrorCount.style.display = 'none';\n this.dom.validationErrorCount = validationErrorCount;\n this.dom.parseErrorIndication = document.createElement('span');\n this.dom.parseErrorIndication.className = 'jsoneditor-parse-error-icon';\n this.dom.parseErrorIndication.style.display = 'none';\n }\n\n _createClass(ErrorTable, [{\n key: \"getErrorTable\",\n value: function getErrorTable() {\n return this.dom.validationErrorsContainer;\n }\n }, {\n key: \"getErrorCounter\",\n value: function getErrorCounter() {\n return this.dom.validationErrorCount;\n }\n }, {\n key: \"getWarningIcon\",\n value: function getWarningIcon() {\n return this.dom.validationErrorIcon;\n }\n }, {\n key: \"getErrorIcon\",\n value: function getErrorIcon() {\n return this.dom.parseErrorIndication;\n }\n }, {\n key: \"toggleTableVisibility\",\n value: function toggleTableVisibility() {\n this.errorTableVisible = !this.errorTableVisible;\n this.onToggleVisibility(this.errorTableVisible);\n }\n }, {\n key: \"setErrors\",\n value: function setErrors(errors, errorLocations) {\n var _this = this;\n\n // clear any previous errors\n if (this.dom.validationErrors) {\n this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors);\n this.dom.validationErrors = null;\n this.dom.additionalErrorsIndication.style.display = 'none';\n } // create the table with errors\n // keep default behavior for parse errors\n\n\n if (this.errorTableVisible && errors.length > 0) {\n var validationErrors = document.createElement('div');\n validationErrors.className = 'jsoneditor-validation-errors';\n var table = document.createElement('table');\n table.className = 'jsoneditor-text-errors';\n validationErrors.appendChild(table);\n var tbody = document.createElement('tbody');\n table.appendChild(tbody);\n errors.forEach(function (error) {\n var line;\n\n if (!isNaN(error.line)) {\n line = error.line;\n } else if (error.dataPath) {\n var errLoc = errorLocations.find(function (loc) {\n return loc.path === error.dataPath;\n });\n\n if (errLoc) {\n line = errLoc.line + 1;\n }\n }\n\n var trEl = document.createElement('tr');\n trEl.className = !isNaN(line) ? 'jump-to-line' : '';\n\n if (error.type === 'error') {\n trEl.className += ' parse-error';\n } else {\n trEl.className += ' validation-error';\n }\n\n var td1 = document.createElement('td');\n var button = document.createElement('button');\n button.className = 'jsoneditor-schema-error';\n td1.appendChild(button);\n trEl.appendChild(td1);\n var td2 = document.createElement('td');\n td2.style = 'white-space: nowrap;';\n td2.textContent = !isNaN(line) ? 'Ln ' + line : '';\n trEl.appendChild(td2);\n\n if (typeof error === 'string') {\n var td34 = document.createElement('td');\n td34.colSpan = 2;\n var pre = document.createElement('pre');\n pre.appendChild(document.createTextNode(error));\n td34.appendChild(pre);\n trEl.appendChild(td34);\n } else {\n var td3 = document.createElement('td');\n td3.appendChild(document.createTextNode(error.dataPath || ''));\n trEl.appendChild(td3);\n var td4 = document.createElement('td');\n\n var _pre = document.createElement('pre');\n\n _pre.appendChild(document.createTextNode(error.message.replace(/<br>/gi, '\\n')));\n\n td4.appendChild(_pre);\n trEl.appendChild(td4);\n }\n\n trEl.onclick = function () {\n _this.onFocusLine(line);\n };\n\n tbody.appendChild(trEl);\n });\n this.dom.validationErrors = validationErrors;\n this.dom.validationErrorsContainer.appendChild(validationErrors);\n this.dom.additionalErrorsIndication.title = errors.length + ' errors total';\n\n if (this.dom.validationErrorsContainer.clientHeight < this.dom.validationErrorsContainer.scrollHeight) {\n this.dom.additionalErrorsIndication.style.display = 'block';\n\n this.dom.validationErrorsContainer.onscroll = function () {\n _this.dom.additionalErrorsIndication.style.display = _this.dom.validationErrorsContainer.clientHeight > 0 && _this.dom.validationErrorsContainer.scrollTop === 0 ? 'block' : 'none';\n };\n } else {\n this.dom.validationErrorsContainer.onscroll = undefined;\n }\n\n var height = this.dom.validationErrorsContainer.clientHeight + (this.dom.statusBar ? this.dom.statusBar.clientHeight : 0); // this.content.style.marginBottom = (-height) + 'px';\n // this.content.style.paddingBottom = height + 'px';\n\n this.onChangeHeight(height);\n } else {\n this.onChangeHeight(0);\n } // update the status bar\n\n\n var validationErrorsCount = errors.filter(function (error) {\n return error.type !== 'error';\n }).length;\n\n if (validationErrorsCount > 0) {\n this.dom.validationErrorCount.style.display = 'inline';\n this.dom.validationErrorCount.innerText = validationErrorsCount;\n this.dom.validationErrorCount.onclick = this.toggleTableVisibility.bind(this);\n this.dom.validationErrorIcon.style.display = 'inline';\n this.dom.validationErrorIcon.title = validationErrorsCount + ' schema validation error(s) found';\n this.dom.validationErrorIcon.onclick = this.toggleTableVisibility.bind(this);\n } else {\n this.dom.validationErrorCount.style.display = 'none';\n this.dom.validationErrorIcon.style.display = 'none';\n } // update the parse error icon\n\n\n var hasParseErrors = errors.some(function (error) {\n return error.type === 'error';\n });\n\n if (hasParseErrors) {\n var line = errors[0].line;\n this.dom.parseErrorIndication.style.display = 'block';\n this.dom.parseErrorIndication.title = !isNaN(line) ? 'parse error on line ' + line : 'parse error - check that the json is valid';\n this.dom.parseErrorIndication.onclick = this.toggleTableVisibility.bind(this);\n } else {\n this.dom.parseErrorIndication.style.display = 'none';\n }\n }\n }]);\n\n return ErrorTable;\n}();\n\n/***/ }),\n\n/***/ 474:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"R\": function() { return /* binding */ FocusTracker; }\n/* harmony export */ });\n\n/**\n * @constructor FocusTracker\n * A custom focus tracker for a DOM element with complex internal DOM structure\n * @param {[Object]} config A set of configurations for the FocusTracker\n * {DOM Object} target * The DOM object to track (required)\n * {Function} onFocus onFocus callback\n * {Function} onBlur onBlur callback\n *\n * @return\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar FocusTracker = /*#__PURE__*/function () {\n function FocusTracker(config) {\n _classCallCheck(this, FocusTracker);\n\n this.target = config.target || null;\n\n if (!this.target) {\n throw new Error('FocusTracker constructor called without a \"target\" to track.');\n }\n\n this.onFocus = typeof config.onFocus === 'function' ? config.onFocus : null;\n this.onBlur = typeof config.onBlur === 'function' ? config.onBlur : null;\n this._onClick = this._onEvent.bind(this);\n\n this._onKeyUp = function (event) {\n if (event.which === 9 || event.keyCode === 9) {\n this._onEvent(event);\n }\n }.bind(this);\n\n this.focusFlag = false;\n this.firstEventFlag = true;\n /*\n Adds required (click and keyup) event listeners to the 'document' object\n to track the focus of the given 'target'\n */\n\n if (this.onFocus || this.onBlur) {\n document.addEventListener('click', this._onClick);\n document.addEventListener('keyup', this._onKeyUp);\n }\n }\n /**\n * Removes the event listeners on the 'document' object\n * that were added to track the focus of the given 'target'\n */\n\n\n _createClass(FocusTracker, [{\n key: \"destroy\",\n value: function destroy() {\n document.removeEventListener('click', this._onClick);\n document.removeEventListener('keyup', this._onKeyUp);\n\n this._onEvent({\n target: document.body\n }); // calling _onEvent with body element in the hope that the FocusTracker is added to an element inside the body tag\n\n }\n /**\n * Tracks the focus of the target and calls the onFocus and onBlur\n * event callbacks if available.\n * @param {Event} [event] The 'click' or 'keyup' event object,\n * from the respective events set on\n * document object\n * @private\n */\n\n }, {\n key: \"_onEvent\",\n value: function _onEvent(event) {\n var target = event.target;\n var focusFlag;\n\n if (target === this.target) {\n focusFlag = true;\n } else if (this.target.contains(target) || this.target.contains(document.activeElement)) {\n focusFlag = true;\n } else {\n focusFlag = false;\n }\n\n if (focusFlag) {\n if (!this.focusFlag) {\n // trigger the onFocus callback\n if (this.onFocus) {\n this.onFocus({\n type: 'focus',\n target: this.target\n });\n }\n\n this.focusFlag = true;\n }\n } else {\n if (this.focusFlag || this.firstEventFlag) {\n // trigger the onBlur callback\n if (this.onBlur) {\n this.onBlur({\n type: 'blur',\n target: this.target\n });\n }\n\n this.focusFlag = false;\n /*\n When switching from one mode to another in the editor, the FocusTracker gets recreated.\n At that time, this.focusFlag will be init to 'false' and will fail the above if condition, when blur occurs\n this.firstEventFlag is added to overcome that issue\n */\n\n if (this.firstEventFlag) {\n this.firstEventFlag = false;\n }\n }\n }\n }\n }]);\n\n return FocusTracker;\n}();\n\n/***/ }),\n\n/***/ 161:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ace = __webpack_require__(170); // may be undefined in case of minimalist bundle\n\n\nvar VanillaPicker = __webpack_require__(37); // may be undefined in case of minimalist bundle\n\n\nvar _require = __webpack_require__(38),\n treeModeMixins = _require.treeModeMixins;\n\nvar _require2 = __webpack_require__(956),\n textModeMixins = _require2.textModeMixins;\n\nvar _require3 = __webpack_require__(341),\n previewModeMixins = _require3.previewModeMixins;\n\nvar _require4 = __webpack_require__(791),\n clear = _require4.clear,\n extend = _require4.extend,\n getInnerText = _require4.getInnerText,\n getInternetExplorerVersion = _require4.getInternetExplorerVersion,\n parse = _require4.parse;\n\nvar _require5 = __webpack_require__(744),\n tryRequireAjv = _require5.tryRequireAjv;\n\nvar _require6 = __webpack_require__(558),\n showTransformModal = _require6.showTransformModal;\n\nvar _require7 = __webpack_require__(210),\n showSortModal = _require7.showSortModal;\n\nvar Ajv = tryRequireAjv();\n\nif (typeof Promise === 'undefined') {\n console.error('Promise undefined. Please load a Promise polyfill in the browser in order to use JSONEditor');\n}\n/**\n * @constructor JSONEditor\n * @param {Element} container Container element\n * @param {Object} [options] Object with options. available options:\n * {String} mode Editor mode. Available values:\n * 'tree' (default), 'view',\n * 'form', 'text', and 'code'.\n * {function} onChange Callback method, triggered\n * on change of contents.\n * Does not pass the contents itself.\n * See also `onChangeJSON` and\n * `onChangeText`.\n * {function} onChangeJSON Callback method, triggered\n * in modes on change of contents,\n * passing the changed contents\n * as JSON.\n * Only applicable for modes\n * 'tree', 'view', and 'form'.\n * {function} onChangeText Callback method, triggered\n * in modes on change of contents,\n * passing the changed contents\n * as stringified JSON.\n * {function} onError Callback method, triggered\n * when an error occurs\n * {Boolean} search Enable search box.\n * True by default\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {Boolean} history Enable history (undo/redo).\n * True by default\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {String} name Field name for the root node.\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {Number} indentation Number of indentation\n * spaces. 4 by default.\n * Only applicable for\n * modes 'text' and 'code'\n * {boolean} escapeUnicode If true, unicode\n * characters are escaped.\n * false by default.\n * {boolean} sortObjectKeys If true, object keys are\n * sorted before display.\n * false by default.\n * {function} onSelectionChange Callback method,\n * triggered on node selection change\n * Only applicable for modes\n * 'tree', 'view', and 'form'\n * {function} onTextSelectionChange Callback method,\n * triggered on text selection change\n * Only applicable for modes\n * {HTMLElement} modalAnchor The anchor element to apply an\n * overlay and display the modals in a\n * centered location.\n * Defaults to document.body\n * 'text' and 'code'\n * {function} onEvent Callback method, triggered\n * when an event occurs in\n * a JSON field or value.\n * Only applicable for\n * modes 'form', 'tree' and\n * 'view'\n * {function} onFocus Callback method, triggered\n * when the editor comes into focus,\n * passing an object {type, target},\n * Applicable for all modes\n * {function} onBlur Callback method, triggered\n * when the editor goes out of focus,\n * passing an object {type, target},\n * Applicable for all modes\n * {function} onClassName Callback method, triggered\n * when a Node DOM is rendered. Function returns\n * a css class name to be set on a node.\n * Only applicable for\n * modes 'form', 'tree' and\n * 'view'\n * {Number} maxVisibleChilds Number of children allowed for a node\n * in 'tree', 'view', or 'form' mode before\n * the \"show more/show all\" buttons appear.\n * 100 by default.\n *\n * @param {Object | undefined} json JSON object\n */\n\n\nfunction JSONEditor(container, options, json) {\n if (!(this instanceof JSONEditor)) {\n throw new Error('JSONEditor constructor called without \"new\".');\n } // check for unsupported browser (IE8 and older)\n\n\n var ieVersion = getInternetExplorerVersion();\n\n if (ieVersion !== -1 && ieVersion < 9) {\n throw new Error('Unsupported browser, IE9 or newer required. ' + 'Please install the newest version of your browser.');\n }\n\n if (options) {\n // check for deprecated options\n if (options.error) {\n console.warn('Option \"error\" has been renamed to \"onError\"');\n options.onError = options.error;\n delete options.error;\n }\n\n if (options.change) {\n console.warn('Option \"change\" has been renamed to \"onChange\"');\n options.onChange = options.change;\n delete options.change;\n }\n\n if (options.editable) {\n console.warn('Option \"editable\" has been renamed to \"onEditable\"');\n options.onEditable = options.editable;\n delete options.editable;\n } // warn if onChangeJSON is used when mode can be `text` or `code`\n\n\n if (options.onChangeJSON) {\n if (options.mode === 'text' || options.mode === 'code' || options.modes && (options.modes.indexOf('text') !== -1 || options.modes.indexOf('code') !== -1)) {\n console.warn('Option \"onChangeJSON\" is not applicable to modes \"text\" and \"code\". ' + 'Use \"onChangeText\" or \"onChange\" instead.');\n }\n } // validate options\n\n\n if (options) {\n Object.keys(options).forEach(function (option) {\n if (JSONEditor.VALID_OPTIONS.indexOf(option) === -1) {\n console.warn('Unknown option \"' + option + '\". This option will be ignored');\n }\n });\n }\n }\n\n if (arguments.length) {\n this._create(container, options, json);\n }\n}\n/**\n * Configuration for all registered modes. Example:\n * {\n * tree: {\n * mixin: TreeEditor,\n * data: 'json'\n * },\n * text: {\n * mixin: TextEditor,\n * data: 'text'\n * }\n * }\n *\n * @type { Object.<String, {mixin: Object, data: String} > }\n */\n\n\nJSONEditor.modes = {}; // debounce interval for JSON schema validation in milliseconds\n\nJSONEditor.prototype.DEBOUNCE_INTERVAL = 150;\nJSONEditor.VALID_OPTIONS = ['ajv', 'schema', 'schemaRefs', 'templates', 'ace', 'theme', 'autocomplete', 'onChange', 'onChangeJSON', 'onChangeText', 'onEditable', 'onError', 'onEvent', 'onModeChange', 'onNodeName', 'onValidate', 'onCreateMenu', 'onSelectionChange', 'onTextSelectionChange', 'onClassName', 'onFocus', 'onBlur', 'colorPicker', 'onColorPicker', 'timestampTag', 'timestampFormat', 'escapeUnicode', 'history', 'search', 'mode', 'modes', 'name', 'indentation', 'sortObjectKeys', 'navigationBar', 'statusBar', 'mainMenuBar', 'languages', 'language', 'enableSort', 'enableTransform', 'limitDragging', 'maxVisibleChilds', 'onValidationError', 'modalAnchor', 'popupAnchor', 'createQuery', 'executeQuery', 'queryDescription'];\n/**\n * Create the JSONEditor\n * @param {Element} container Container element\n * @param {Object} [options] See description in constructor\n * @param {Object | undefined} json JSON object\n * @private\n */\n\nJSONEditor.prototype._create = function (container, options, json) {\n this.container = container;\n this.options = options || {};\n this.json = json || {};\n var mode = this.options.mode || this.options.modes && this.options.modes[0] || 'tree';\n this.setMode(mode);\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\nJSONEditor.prototype.destroy = function () {};\n/**\n * Set JSON object in editor\n * @param {Object | undefined} json JSON data\n */\n\n\nJSONEditor.prototype.set = function (json) {\n this.json = json;\n};\n/**\n * Get JSON from the editor\n * @returns {Object} json\n */\n\n\nJSONEditor.prototype.get = function () {\n return this.json;\n};\n/**\n * Set string containing JSON for the editor\n * @param {String | undefined} jsonText\n */\n\n\nJSONEditor.prototype.setText = function (jsonText) {\n this.json = parse(jsonText);\n};\n/**\n * Get stringified JSON contents from the editor\n * @returns {String} jsonText\n */\n\n\nJSONEditor.prototype.getText = function () {\n return JSON.stringify(this.json);\n};\n/**\n * Set a field name for the root node.\n * @param {String | undefined} name\n */\n\n\nJSONEditor.prototype.setName = function (name) {\n if (!this.options) {\n this.options = {};\n }\n\n this.options.name = name;\n};\n/**\n * Get the field name for the root node.\n * @return {String | undefined} name\n */\n\n\nJSONEditor.prototype.getName = function () {\n return this.options && this.options.name;\n};\n/**\n * Change the mode of the editor.\n * JSONEditor will be extended with all methods needed for the chosen mode.\n * @param {String} mode Available modes: 'tree' (default), 'view', 'form',\n * 'text', and 'code'.\n */\n\n\nJSONEditor.prototype.setMode = function (mode) {\n // if the mode is the same as current mode (and it's not the first time), do nothing.\n if (mode === this.options.mode && this.create) {\n return;\n }\n\n var container = this.container;\n var options = extend({}, this.options);\n var oldMode = options.mode;\n var data;\n var name;\n options.mode = mode;\n var config = JSONEditor.modes[mode];\n\n if (!config) {\n throw new Error('Unknown mode \"' + options.mode + '\"');\n }\n\n var asText = config.data === 'text';\n name = this.getName();\n data = this[asText ? 'getText' : 'get'](); // get text or json\n\n this.destroy();\n clear(this);\n extend(this, config.mixin);\n this.create(container, options);\n this.setName(name);\n this[asText ? 'setText' : 'set'](data); // set text or json\n\n if (typeof config.load === 'function') {\n try {\n config.load.call(this);\n } catch (err) {\n console.error(err);\n }\n }\n\n if (typeof options.onModeChange === 'function' && mode !== oldMode) {\n try {\n options.onModeChange(mode, oldMode);\n } catch (err) {\n console.error(err);\n }\n }\n};\n/**\n * Get the current mode\n * @return {string}\n */\n\n\nJSONEditor.prototype.getMode = function () {\n return this.options.mode;\n};\n/**\n * Throw an error. If an error callback is configured in options.error, this\n * callback will be invoked. Else, a basic alert window with the error message\n * will be shown to the user.\n * @param {Error} err\n * @private\n */\n\n\nJSONEditor.prototype._onError = function (err) {\n if (this.options && typeof this.options.onError === 'function') {\n this.options.onError(err);\n } else {\n alert(err.toString());\n }\n};\n/**\n * Set a JSON schema for validation of the JSON object.\n * To remove the schema, call JSONEditor.setSchema(null)\n * @param {Object | null} schema\n * @param {Object.<string, Object>=} schemaRefs Schemas that are referenced using the `$ref` property from the JSON schema that are set in the `schema` option,\n + the object structure in the form of `{reference_key: schemaObject}`\n */\n\n\nJSONEditor.prototype.setSchema = function (schema, schemaRefs) {\n // compile a JSON schema validator if a JSON schema is provided\n if (schema) {\n var ajv;\n\n try {\n // grab ajv from options if provided, else create a new instance\n if (this.options.ajv) {\n ajv = this.options.ajv;\n } else {\n ajv = Ajv({\n allErrors: true,\n verbose: true,\n schemaId: 'auto',\n $data: true\n }); // support both draft-04 and draft-06 alongside the latest draft-07\n\n ajv.addMetaSchema(__webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ajv/lib/refs/json-schema-draft-04.json'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())));\n ajv.addMetaSchema(__webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ajv/lib/refs/json-schema-draft-06.json'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())));\n }\n } catch (err) {\n console.warn('Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.');\n }\n\n if (ajv) {\n if (schemaRefs) {\n for (var ref in schemaRefs) {\n ajv.removeSchema(ref); // When updating a schema - old refs has to be removed first\n\n if (schemaRefs[ref]) {\n ajv.addSchema(schemaRefs[ref], ref);\n }\n }\n\n this.options.schemaRefs = schemaRefs;\n }\n\n this.validateSchema = ajv.compile(schema); // add schema to the options, so that when switching to an other mode,\n // the set schema is not lost\n\n this.options.schema = schema;\n this.options.schemaRefs = schemaRefs; // validate now\n\n this.validate();\n }\n\n this.refresh(); // update DOM\n } else {\n // remove current schema\n this.validateSchema = null;\n this.options.schema = null;\n this.options.schemaRefs = null;\n this.validate(); // to clear current error messages\n\n this.refresh(); // update DOM\n }\n};\n/**\n * Validate current JSON object against the configured JSON schema\n * Throws an exception when no JSON schema is configured\n */\n\n\nJSONEditor.prototype.validate = function () {// must be implemented by treemode and textmode\n};\n/**\n * Refresh the rendered contents\n */\n\n\nJSONEditor.prototype.refresh = function () {// can be implemented by treemode and textmode\n};\n/**\n * Register a plugin with one ore multiple modes for the JSON Editor.\n *\n * A mode is described as an object with properties:\n *\n * - `mode: String` The name of the mode.\n * - `mixin: Object` An object containing the mixin functions which\n * will be added to the JSONEditor. Must contain functions\n * create, get, getText, set, and setText. May have\n * additional functions.\n * When the JSONEditor switches to a mixin, all mixin\n * functions are added to the JSONEditor, and then\n * the function `create(container, options)` is executed.\n * - `data: 'text' | 'json'` The type of data that will be used to load the mixin.\n * - `[load: function]` An optional function called after the mixin\n * has been loaded.\n *\n * @param {Object | Array} mode A mode object or an array with multiple mode objects.\n */\n\n\nJSONEditor.registerMode = function (mode) {\n var i, prop;\n\n if (Array.isArray(mode)) {\n // multiple modes\n for (i = 0; i < mode.length; i++) {\n JSONEditor.registerMode(mode[i]);\n }\n } else {\n // validate the new mode\n if (!('mode' in mode)) throw new Error('Property \"mode\" missing');\n if (!('mixin' in mode)) throw new Error('Property \"mixin\" missing');\n if (!('data' in mode)) throw new Error('Property \"data\" missing');\n var name = mode.mode;\n\n if (name in JSONEditor.modes) {\n throw new Error('Mode \"' + name + '\" already registered');\n } // validate the mixin\n\n\n if (typeof mode.mixin.create !== 'function') {\n throw new Error('Required function \"create\" missing on mixin');\n }\n\n var reserved = ['setMode', 'registerMode', 'modes'];\n\n for (i = 0; i < reserved.length; i++) {\n prop = reserved[i];\n\n if (prop in mode.mixin) {\n throw new Error('Reserved property \"' + prop + '\" not allowed in mixin');\n }\n }\n\n JSONEditor.modes[name] = mode;\n }\n}; // register tree, text, and preview modes\n\n\nJSONEditor.registerMode(treeModeMixins);\nJSONEditor.registerMode(textModeMixins);\nJSONEditor.registerMode(previewModeMixins); // expose some of the libraries that can be used customized\n\nJSONEditor.ace = ace;\nJSONEditor.Ajv = Ajv;\nJSONEditor.VanillaPicker = VanillaPicker; // expose some utils (this is undocumented, unofficial)\n\nJSONEditor.showTransformModal = showTransformModal;\nJSONEditor.showSortModal = showSortModal;\nJSONEditor.getInnerText = getInnerText; // default export for TypeScript ES6 projects\n\nJSONEditor[\"default\"] = JSONEditor;\nmodule.exports = JSONEditor;\n\n/***/ }),\n\n/***/ 617:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"x\": function() { return /* binding */ ModeSwitcher; }\n/* harmony export */ });\n/* harmony import */ var _ContextMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(897);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(907);\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n/**\n * Create a select box to be used in the editor menu's, which allows to switch mode\n * @param {HTMLElement} container\n * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view', 'preview'\n * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view', 'preview'\n * @param {function(mode: string)} onSwitch Callback invoked on switch\n * @constructor\n */\n\nvar ModeSwitcher = /*#__PURE__*/function () {\n function ModeSwitcher(container, modes, current, onSwitch) {\n _classCallCheck(this, ModeSwitcher);\n\n // available modes\n var availableModes = {\n code: {\n text: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeCodeText'),\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeCodeTitle'),\n click: function click() {\n onSwitch('code');\n }\n },\n form: {\n text: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeFormText'),\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeFormTitle'),\n click: function click() {\n onSwitch('form');\n }\n },\n text: {\n text: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeTextText'),\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeTextTitle'),\n click: function click() {\n onSwitch('text');\n }\n },\n tree: {\n text: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeTreeText'),\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeTreeTitle'),\n click: function click() {\n onSwitch('tree');\n }\n },\n view: {\n text: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeViewText'),\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeViewTitle'),\n click: function click() {\n onSwitch('view');\n }\n },\n preview: {\n text: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modePreviewText'),\n title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modePreviewTitle'),\n click: function click() {\n onSwitch('preview');\n }\n }\n }; // list the selected modes\n\n var items = [];\n\n for (var i = 0; i < modes.length; i++) {\n var mode = modes[i];\n var item = availableModes[mode];\n\n if (!item) {\n throw new Error('Unknown mode \"' + mode + '\"');\n }\n\n item.className = 'jsoneditor-type-modes' + (current === mode ? ' jsoneditor-selected' : '');\n items.push(item);\n } // retrieve the title of current mode\n\n\n var currentMode = availableModes[current];\n\n if (!currentMode) {\n throw new Error('Unknown mode \"' + current + '\"');\n }\n\n var currentTitle = currentMode.text; // create the html element\n\n var box = document.createElement('button');\n box.type = 'button';\n box.className = 'jsoneditor-modes jsoneditor-separator';\n box.textContent = currentTitle + \" \\u25BE\";\n box.title = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('modeEditorTitle');\n\n box.onclick = function () {\n var menu = new _ContextMenu__WEBPACK_IMPORTED_MODULE_0__/* .ContextMenu */ .x(items);\n menu.show(box, container);\n };\n\n var frame = document.createElement('div');\n frame.className = 'jsoneditor-modes';\n frame.style.position = 'relative';\n frame.appendChild(box);\n container.appendChild(frame);\n this.dom = {\n container: container,\n box: box,\n frame: frame\n };\n }\n /**\n * Set focus to switcher\n */\n\n\n _createClass(ModeSwitcher, [{\n key: \"focus\",\n value: function focus() {\n this.dom.box.focus();\n }\n /**\n * Destroy the ModeSwitcher, remove from DOM\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.dom && this.dom.frame && this.dom.frame.parentNode) {\n this.dom.frame.parentNode.removeChild(this.dom.frame);\n }\n\n this.dom = null;\n }\n }]);\n\n return ModeSwitcher;\n}();\n\n/***/ }),\n\n/***/ 170:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar ace;\n\nif (window.ace) {\n // use the already loaded instance of Ace\n ace = window.ace;\n} else {\n try {\n // load Ace editor\n ace = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ace-builds/src-noconflict/ace'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); // load required Ace plugins\n\n __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ace-builds/src-noconflict/mode-json'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n\n __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ace-builds/src-noconflict/ext-searchbox'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); // embed Ace json worker\n // https://github.com/ajaxorg/ace/issues/3913\n\n\n var jsonWorkerDataUrl = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module '../generated/worker-json-data-url'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n\n ace.config.setModuleUrl('ace/mode/json_worker', jsonWorkerDataUrl);\n } catch (err) {// failed to load Ace (can be minimalist bundle).\n // No worries, the editor will fall back to plain text if needed.\n }\n}\n\nmodule.exports = ace;\n\n/***/ }),\n\n/***/ 864:\n/***/ (function() {\n\n/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\nwindow.ace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function (acequire, exports, module) {\n exports.isDark = false;\n exports.cssClass = 'ace-jsoneditor';\n exports.cssText = \".ace-jsoneditor .ace_gutter {\\nbackground: #ebebeb;\\ncolor: #333\\n}\\n\\n.ace-jsoneditor.ace_editor {\\nline-height: 1.3;\\nbackground-color: #fff;\\n}\\n.ace-jsoneditor .ace_print-margin {\\nwidth: 1px;\\nbackground: #e8e8e8\\n}\\n.ace-jsoneditor .ace_scroller {\\nbackground-color: #FFFFFF\\n}\\n.ace-jsoneditor .ace_text-layer {\\ncolor: gray\\n}\\n.ace-jsoneditor .ace_variable {\\ncolor: #1a1a1a\\n}\\n.ace-jsoneditor .ace_cursor {\\nborder-left: 2px solid #000000\\n}\\n.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\\nborder-left: 0px;\\nborder-bottom: 1px solid #000000\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_selection {\\nbackground: lightgray\\n}\\n.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\\nbox-shadow: 0 0 3px 0px #FFFFFF;\\nborder-radius: 2px\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_step {\\nbackground: rgb(255, 255, 0)\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_bracket {\\nmargin: -1px 0 0 -1px;\\nborder: 1px solid #BFBFBF\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_active-line {\\nbackground: #FFFBD1\\n}\\n.ace-jsoneditor .ace_gutter-active-line {\\nbackground-color : #dcdcdc\\n}\\n.ace-jsoneditor .ace_marker-layer .ace_selected-word {\\nborder: 1px solid lightgray\\n}\\n.ace-jsoneditor .ace_invisible {\\ncolor: #BFBFBF\\n}\\n.ace-jsoneditor .ace_keyword,\\n.ace-jsoneditor .ace_meta,\\n.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\\ncolor: #AF956F\\n}\\n.ace-jsoneditor .ace_keyword.ace_operator {\\ncolor: #484848\\n}\\n.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\\ncolor: #96DC5F\\n}\\n.ace-jsoneditor .ace_constant.ace_language {\\ncolor: darkorange\\n}\\n.ace-jsoneditor .ace_constant.ace_numeric {\\ncolor: red\\n}\\n.ace-jsoneditor .ace_constant.ace_character.ace_entity {\\ncolor: #BF78CC\\n}\\n.ace-jsoneditor .ace_invalid {\\ncolor: #FFFFFF;\\nbackground-color: #FF002A;\\n}\\n.ace-jsoneditor .ace_fold {\\nbackground-color: #AF956F;\\nborder-color: #000000\\n}\\n.ace-jsoneditor .ace_storage,\\n.ace-jsoneditor .ace_support.ace_class,\\n.ace-jsoneditor .ace_support.ace_function,\\n.ace-jsoneditor .ace_support.ace_other,\\n.ace-jsoneditor .ace_support.ace_type {\\ncolor: #C52727\\n}\\n.ace-jsoneditor .ace_string {\\ncolor: green\\n}\\n.ace-jsoneditor .ace_comment {\\ncolor: #BCC8BA\\n}\\n.ace-jsoneditor .ace_entity.ace_name.ace_tag,\\n.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\\ncolor: #606060\\n}\\n.ace-jsoneditor .ace_markup.ace_underline {\\ntext-decoration: underline\\n}\\n.ace-jsoneditor .ace_indent-guide {\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y\\n}\";\n var dom = acequire('../lib/dom');\n dom.importCssString(exports.cssText, exports.cssClass);\n});\n\n/***/ }),\n\n/***/ 589:\n/***/ (function(__unused_webpack_module, exports) {\n\n/* Jison generated parser */\nvar jsonlint = function () {\n var parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"JSONString\": 3,\n \"STRING\": 4,\n \"JSONNumber\": 5,\n \"NUMBER\": 6,\n \"JSONNullLiteral\": 7,\n \"NULL\": 8,\n \"JSONBooleanLiteral\": 9,\n \"TRUE\": 10,\n \"FALSE\": 11,\n \"JSONText\": 12,\n \"JSONValue\": 13,\n \"EOF\": 14,\n \"JSONObject\": 15,\n \"JSONArray\": 16,\n \"{\": 17,\n \"}\": 18,\n \"JSONMemberList\": 19,\n \"JSONMember\": 20,\n \":\": 21,\n \",\": 22,\n \"[\": 23,\n \"]\": 24,\n \"JSONElementList\": 25,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 4: \"STRING\",\n 6: \"NUMBER\",\n 8: \"NULL\",\n 10: \"TRUE\",\n 11: \"FALSE\",\n 14: \"EOF\",\n 17: \"{\",\n 18: \"}\",\n 21: \":\",\n 22: \",\",\n 23: \"[\",\n 24: \"]\"\n },\n productions_: [0, [3, 1], [5, 1], [7, 1], [9, 1], [9, 1], [12, 2], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [15, 2], [15, 3], [20, 3], [19, 1], [19, 3], [16, 2], [16, 3], [25, 1], [25, 3]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n\n switch (yystate) {\n case 1:\n // replace escaped characters with actual character\n this.$ = yytext.replace(/\\\\(\\\\|\")/g, \"$\" + \"1\").replace(/\\\\n/g, '\\n').replace(/\\\\r/g, '\\r').replace(/\\\\t/g, '\\t').replace(/\\\\v/g, '\\v').replace(/\\\\f/g, '\\f').replace(/\\\\b/g, '\\b');\n break;\n\n case 2:\n this.$ = Number(yytext);\n break;\n\n case 3:\n this.$ = null;\n break;\n\n case 4:\n this.$ = true;\n break;\n\n case 5:\n this.$ = false;\n break;\n\n case 6:\n return this.$ = $$[$0 - 1];\n break;\n\n case 13:\n this.$ = {};\n break;\n\n case 14:\n this.$ = $$[$0 - 1];\n break;\n\n case 15:\n this.$ = [$$[$0 - 2], $$[$0]];\n break;\n\n case 16:\n this.$ = {};\n this.$[$$[$0][0]] = $$[$0][1];\n break;\n\n case 17:\n this.$ = $$[$0 - 2];\n $$[$0 - 2][$$[$0][0]] = $$[$0][1];\n break;\n\n case 18:\n this.$ = [];\n break;\n\n case 19:\n this.$ = $$[$0 - 1];\n break;\n\n case 20:\n this.$ = [$$[$0]];\n break;\n\n case 21:\n this.$ = $$[$0 - 2];\n $$[$0 - 2].push($$[$0]);\n break;\n }\n },\n table: [{\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 12: 1,\n 13: 2,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15]\n }, {\n 1: [3]\n }, {\n 14: [1, 16]\n }, {\n 14: [2, 7],\n 18: [2, 7],\n 22: [2, 7],\n 24: [2, 7]\n }, {\n 14: [2, 8],\n 18: [2, 8],\n 22: [2, 8],\n 24: [2, 8]\n }, {\n 14: [2, 9],\n 18: [2, 9],\n 22: [2, 9],\n 24: [2, 9]\n }, {\n 14: [2, 10],\n 18: [2, 10],\n 22: [2, 10],\n 24: [2, 10]\n }, {\n 14: [2, 11],\n 18: [2, 11],\n 22: [2, 11],\n 24: [2, 11]\n }, {\n 14: [2, 12],\n 18: [2, 12],\n 22: [2, 12],\n 24: [2, 12]\n }, {\n 14: [2, 3],\n 18: [2, 3],\n 22: [2, 3],\n 24: [2, 3]\n }, {\n 14: [2, 4],\n 18: [2, 4],\n 22: [2, 4],\n 24: [2, 4]\n }, {\n 14: [2, 5],\n 18: [2, 5],\n 22: [2, 5],\n 24: [2, 5]\n }, {\n 14: [2, 1],\n 18: [2, 1],\n 21: [2, 1],\n 22: [2, 1],\n 24: [2, 1]\n }, {\n 14: [2, 2],\n 18: [2, 2],\n 22: [2, 2],\n 24: [2, 2]\n }, {\n 3: 20,\n 4: [1, 12],\n 18: [1, 17],\n 19: 18,\n 20: 19\n }, {\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 13: 23,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15],\n 24: [1, 21],\n 25: 22\n }, {\n 1: [2, 6]\n }, {\n 14: [2, 13],\n 18: [2, 13],\n 22: [2, 13],\n 24: [2, 13]\n }, {\n 18: [1, 24],\n 22: [1, 25]\n }, {\n 18: [2, 16],\n 22: [2, 16]\n }, {\n 21: [1, 26]\n }, {\n 14: [2, 18],\n 18: [2, 18],\n 22: [2, 18],\n 24: [2, 18]\n }, {\n 22: [1, 28],\n 24: [1, 27]\n }, {\n 22: [2, 20],\n 24: [2, 20]\n }, {\n 14: [2, 14],\n 18: [2, 14],\n 22: [2, 14],\n 24: [2, 14]\n }, {\n 3: 20,\n 4: [1, 12],\n 20: 29\n }, {\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 13: 30,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15]\n }, {\n 14: [2, 19],\n 18: [2, 19],\n 22: [2, 19],\n 24: [2, 19]\n }, {\n 3: 5,\n 4: [1, 12],\n 5: 6,\n 6: [1, 13],\n 7: 3,\n 8: [1, 9],\n 9: 4,\n 10: [1, 10],\n 11: [1, 11],\n 13: 31,\n 15: 7,\n 16: 8,\n 17: [1, 14],\n 23: [1, 15]\n }, {\n 18: [2, 17],\n 22: [2, 17]\n }, {\n 18: [2, 15],\n 22: [2, 15]\n }, {\n 22: [2, 21],\n 24: [2, 21]\n }],\n defaultActions: {\n 16: [2, 6]\n },\n parseError: function parseError(str, hash) {\n throw new Error(str);\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n // semantic value stack\n lstack = [],\n // location stack\n table = this.table,\n yytext = '',\n yylineno = 0,\n yyleng = 0,\n recovering = 0,\n TERROR = 2,\n EOF = 1; //this.reductionCount = this.shiftCount = 0;\n\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n if (typeof this.lexer.yylloc == 'undefined') this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n if (typeof this.yy.parseError === 'function') this.parseError = this.yy.parseError;\n\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n\n function lex() {\n var token;\n token = self.lexer.lex() || 1; // $end = 1\n // if token isn't its numeric value, convert\n\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n\n return token;\n }\n\n var symbol,\n preErrorSymbol,\n state,\n action,\n a,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n\n while (true) {\n // retreive state number from top of stack\n state = stack[stack.length - 1]; // use default actions if available\n\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol == null) symbol = lex(); // read action for current state and first input\n\n action = table[state] && table[state][symbol];\n } // handle parse error\n\n\n _handle_error: if (typeof action === 'undefined' || !action.length || !action[0]) {\n if (!recovering) {\n // Report error\n expected = [];\n\n for (p in table[state]) {\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n\n var errStr = '';\n\n if (this.lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(', ') + \", got '\" + this.terminals_[symbol] + \"'\";\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + \": Unexpected \" + (symbol == 1\n /*EOF*/\n ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n\n this.parseError(errStr, {\n text: this.lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: this.lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n } // just recovered from another error\n\n\n if (recovering == 3) {\n if (symbol == EOF) {\n throw new Error(errStr || 'Parsing halted.');\n } // discard current lookahead and grab another\n\n\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n symbol = lex();\n } // try to recover from error\n\n\n while (1) {\n // check for error recovery rule in this state\n if (TERROR.toString() in table[state]) {\n break;\n }\n\n if (state == 0) {\n throw new Error(errStr || 'Parsing halted.');\n }\n\n popStack(1);\n state = stack[stack.length - 1];\n }\n\n preErrorSymbol = symbol; // save the lookahead token\n\n symbol = TERROR; // insert generic error symbol as new lookahead\n\n state = stack[stack.length - 1];\n action = table[state] && table[state][TERROR];\n recovering = 3; // allow 3 real symbols to be shifted before reporting a new error\n } // this shouldn't happen, unless resolve defaults are off\n\n\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n\n switch (action[0]) {\n case 1:\n // shift\n //this.shiftCount++;\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]); // push state\n\n symbol = null;\n\n if (!preErrorSymbol) {\n // normal execution/no error\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0) recovering--;\n } else {\n // error just occurred, resume old lookahead f/ before error\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n\n break;\n\n case 2:\n // reduce\n //this.reductionCount++;\n len = this.productions_[action[1]][1]; // perform semantic action\n\n yyval.$ = vstack[vstack.length - len]; // default to $$ = $1\n // default location, uses first token for firsts, last for lasts\n\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n\n if (typeof r !== 'undefined') {\n return r;\n } // pop off stack\n\n\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n\n stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)\n\n vstack.push(yyval.$);\n lstack.push(yyval._$); // goto new state = table[STATE][NONTERMINAL]\n\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n\n case 3:\n // accept\n return true;\n }\n }\n\n return true;\n }\n };\n /* Jison generated lexer */\n\n var lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parseError) {\n this.yy.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n setInput: function setInput(input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n return this;\n },\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/\\n/);\n if (lines) this.yylineno++;\n this._input = this._input.slice(1);\n return ch;\n },\n unput: function unput(ch) {\n this._input = ch + this._input;\n return this;\n },\n more: function more() {\n this._more = true;\n return this;\n },\n less: function less(n) {\n this._input = this.match.slice(n) + this._input;\n },\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n upcomingInput: function upcomingInput() {\n var next = this.match;\n\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n\n if (!this._input) this.done = true;\n var token, match, tempMatch, index, col, lines;\n\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n\n var rules = this._currentRules();\n\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n\n if (match) {\n lines = match[0].match(/\\n.*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - 1 : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.yyleng = this.yytext.length;\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;else return;\n }\n\n if (this._input === \"\") {\n return this.EOF;\n } else {\n this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n lex: function lex() {\n var r = this.next();\n\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n popState: function popState() {\n return this.conditionStack.pop();\n },\n _currentRules: function _currentRules() {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n },\n topState: function topState() {\n return this.conditionStack[this.conditionStack.length - 2];\n },\n pushState: function begin(condition) {\n this.begin(condition);\n }\n };\n lexer.options = {};\n\n lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n\n switch ($avoiding_name_collisions) {\n case 0:\n /* skip whitespace */\n break;\n\n case 1:\n return 6;\n break;\n\n case 2:\n yy_.yytext = yy_.yytext.substr(1, yy_.yyleng - 2);\n return 4;\n break;\n\n case 3:\n return 17;\n break;\n\n case 4:\n return 18;\n break;\n\n case 5:\n return 23;\n break;\n\n case 6:\n return 24;\n break;\n\n case 7:\n return 22;\n break;\n\n case 8:\n return 21;\n break;\n\n case 9:\n return 10;\n break;\n\n case 10:\n return 11;\n break;\n\n case 11:\n return 8;\n break;\n\n case 12:\n return 14;\n break;\n\n case 13:\n return 'INVALID';\n break;\n }\n };\n\n lexer.rules = [/^(?:\\s+)/, /^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/, /^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/, /^(?:\\{)/, /^(?:\\})/, /^(?:\\[)/, /^(?:\\])/, /^(?:,)/, /^(?::)/, /^(?:true\\b)/, /^(?:false\\b)/, /^(?:null\\b)/, /^(?:$)/, /^(?:.)/];\n lexer.conditions = {\n \"INITIAL\": {\n \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],\n \"inclusive\": true\n }\n };\n ;\n return lexer;\n }();\n\n parser.lexer = lexer;\n return parser;\n}();\n\nif (true) {\n exports.parser = jsonlint;\n exports.parse = jsonlint.parse.bind(jsonlint);\n}\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(module) {\n\n\"use strict\";\n/*!\n * Selectr 2.4.0\n * https://github.com/Mobius1/Selectr\n *\n * Released under the MIT license\n */\n\n/**\n * Default configuration options\n * @type {Object}\n */\n\nvar defaultConfig = {\n /**\n * Emulates browser behaviour by selecting the first option by default\n * @type {Boolean}\n */\n defaultSelected: true,\n\n /**\n * Sets the width of the container\n * @type {String}\n */\n width: \"auto\",\n\n /**\n * Enables/ disables the container\n * @type {Boolean}\n */\n disabled: false,\n\n /**\n * Enables / disables the search function\n * @type {Boolean}\n */\n searchable: true,\n\n /**\n * Enable disable the clear button\n * @type {Boolean}\n */\n clearable: false,\n\n /**\n * Sort the tags / multiselect options\n * @type {Boolean}\n */\n sortSelected: false,\n\n /**\n * Allow deselecting of select-one options\n * @type {Boolean}\n */\n allowDeselect: false,\n\n /**\n * Close the dropdown when scrolling (@AlexanderReiswich, #11)\n * @type {Boolean}\n */\n closeOnScroll: false,\n\n /**\n * Allow the use of the native dropdown (@jonnyscholes, #14)\n * @type {Boolean}\n */\n nativeDropdown: false,\n\n /**\n * Set the main placeholder\n * @type {String}\n */\n placeholder: \"Select an option...\",\n\n /**\n * Allow the tagging feature\n * @type {Boolean}\n */\n taggable: false,\n\n /**\n * Set the tag input placeholder (@labikmartin, #21, #22)\n * @type {String}\n */\n tagPlaceholder: \"Enter a tag...\"\n};\n/**\n * Event Emitter\n */\n\nvar Events = function Events() {};\n/**\n * Event Prototype\n * @type {Object}\n */\n\n\nEvents.prototype = {\n /**\n * Add custom event listener\n * @param {String} event Event type\n * @param {Function} func Callback\n * @return {Void}\n */\n on: function on(event, func) {\n this._events = this._events || {};\n this._events[event] = this._events[event] || [];\n\n this._events[event].push(func);\n },\n\n /**\n * Remove custom event listener\n * @param {String} event Event type\n * @param {Function} func Callback\n * @return {Void}\n */\n off: function off(event, func) {\n this._events = this._events || {};\n if (event in this._events === false) return;\n\n this._events[event].splice(this._events[event].indexOf(func), 1);\n },\n\n /**\n * Fire a custom event\n * @param {String} event Event type\n * @return {Void}\n */\n emit: function emit(event\n /* , args... */\n ) {\n this._events = this._events || {};\n if (event in this._events === false) return;\n\n for (var i = 0; i < this._events[event].length; i++) {\n this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n }\n};\n/**\n * Event mixin\n * @param {Object} obj\n * @return {Object}\n */\n\nEvents.mixin = function (obj) {\n var props = ['on', 'off', 'emit'];\n\n for (var i = 0; i < props.length; i++) {\n if (typeof obj === 'function') {\n obj.prototype[props[i]] = Events.prototype[props[i]];\n } else {\n obj[props[i]] = Events.prototype[props[i]];\n }\n }\n\n return obj;\n};\n/**\n * Helpers\n * @type {Object}\n */\n\n\nvar util = {\n extend: function extend(src, props) {\n props = props || {};\n var p;\n\n for (p in src) {\n if (src.hasOwnProperty(p)) {\n if (!props.hasOwnProperty(p)) {\n props[p] = src[p];\n }\n }\n }\n\n return props;\n },\n each: function each(a, b, c) {\n if (\"[object Object]\" === Object.prototype.toString.call(a)) {\n for (var d in a) {\n if (Object.prototype.hasOwnProperty.call(a, d)) {\n b.call(c, d, a[d], a);\n }\n }\n } else {\n for (var e = 0, f = a.length; e < f; e++) {\n b.call(c, e, a[e], a);\n }\n }\n },\n createElement: function createElement(e, a) {\n var d = document,\n el = d.createElement(e);\n\n if (a && \"[object Object]\" === Object.prototype.toString.call(a)) {\n var i;\n\n for (i in a) {\n if (i in el) el[i] = a[i];else if (\"html\" === i) el.textContent = a[i];else if (\"text\" === i) {\n var t = d.createTextNode(a[i]);\n el.appendChild(t);\n } else el.setAttribute(i, a[i]);\n }\n }\n\n return el;\n },\n hasClass: function hasClass(a, b) {\n if (a) return a.classList ? a.classList.contains(b) : !!a.className && !!a.className.match(new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\"));\n },\n addClass: function addClass(a, b) {\n if (!util.hasClass(a, b)) {\n if (a.classList) {\n a.classList.add(b);\n } else {\n a.className = a.className.trim() + \" \" + b;\n }\n }\n },\n removeClass: function removeClass(a, b) {\n if (util.hasClass(a, b)) {\n if (a.classList) {\n a.classList.remove(b);\n } else {\n a.className = a.className.replace(new RegExp(\"(^|\\\\s)\" + b.split(\" \").join(\"|\") + \"(\\\\s|$)\", \"gi\"), \" \");\n }\n }\n },\n closest: function closest(el, fn) {\n return el && el !== document.body && (fn(el) ? el : util.closest(el.parentNode, fn));\n },\n isInt: function isInt(val) {\n return typeof val === 'number' && isFinite(val) && Math.floor(val) === val;\n },\n debounce: function debounce(a, b, c) {\n var d;\n return function () {\n var e = this,\n f = arguments,\n g = function g() {\n d = null;\n if (!c) a.apply(e, f);\n },\n h = c && !d;\n\n clearTimeout(d);\n d = setTimeout(g, b);\n\n if (h) {\n a.apply(e, f);\n }\n };\n },\n rect: function rect(el, abs) {\n var w = window;\n var r = el.getBoundingClientRect();\n var x = abs ? w.pageXOffset : 0;\n var y = abs ? w.pageYOffset : 0;\n return {\n bottom: r.bottom + y,\n height: r.height,\n left: r.left + x,\n right: r.right + x,\n top: r.top + y,\n width: r.width\n };\n },\n includes: function includes(a, b) {\n return a.indexOf(b) > -1;\n },\n truncate: function truncate(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n};\n\nfunction isset(obj, prop) {\n return obj.hasOwnProperty(prop) && (obj[prop] === true || obj[prop].length);\n}\n/**\n * Append an item to the list\n * @param {Object} item\n * @param {Object} custom\n * @return {Void}\n */\n\n\nfunction appendItem(item, parent, custom) {\n if (item.parentNode) {\n if (!item.parentNode.parentNode) {\n parent.appendChild(item.parentNode);\n }\n } else {\n parent.appendChild(item);\n }\n\n util.removeClass(item, \"excluded\");\n\n if (!custom) {\n item.textContent = item.textContent + ''; // clear highlighting\n }\n}\n/**\n * Render the item list\n * @return {Void}\n */\n\n\nvar render = function render() {\n if (this.items.length) {\n var f = document.createDocumentFragment();\n\n if (this.config.pagination) {\n var pages = this.pages.slice(0, this.pageIndex);\n util.each(pages, function (i, items) {\n util.each(items, function (j, item) {\n appendItem(item, f, this.customOption);\n }, this);\n }, this);\n } else {\n util.each(this.items, function (i, item) {\n appendItem(item, f, this.customOption);\n }, this);\n }\n\n if (f.childElementCount) {\n util.removeClass(this.items[this.navIndex], \"active\");\n this.navIndex = f.querySelector(\".selectr-option\").idx;\n util.addClass(this.items[this.navIndex], \"active\");\n }\n\n this.tree.appendChild(f);\n }\n};\n/**\n * Dismiss / close the dropdown\n * @param {obj} e\n * @return {void}\n */\n\n\nvar dismiss = function dismiss(e) {\n var target = e.target;\n\n if (!this.container.contains(target) && (this.opened || util.hasClass(this.container, \"notice\"))) {\n this.close();\n }\n};\n/**\n * Build a list item from the HTMLOptionElement\n * @param {int} i HTMLOptionElement index\n * @param {HTMLOptionElement} option\n * @param {bool} group Has parent optgroup\n * @return {void}\n */\n\n\nvar createItem = function createItem(option, data) {\n data = data || option;\n var content = this.customOption ? this.config.renderOption(data) : option.textContent;\n var opt = util.createElement(\"li\", {\n \"class\": \"selectr-option\",\n html: content,\n role: \"treeitem\",\n \"aria-selected\": false\n });\n opt.idx = option.idx;\n this.items.push(opt);\n\n if (option.defaultSelected) {\n this.defaultSelected.push(option.idx);\n }\n\n if (option.disabled) {\n opt.disabled = true;\n util.addClass(opt, \"disabled\");\n }\n\n return opt;\n};\n/**\n * Build the container\n * @return {Void}\n */\n\n\nvar build = function build() {\n this.requiresPagination = this.config.pagination && this.config.pagination > 0; // Set width\n\n if (isset(this.config, \"width\")) {\n if (util.isInt(this.config.width)) {\n this.width = this.config.width + \"px\";\n } else {\n if (this.config.width === \"auto\") {\n this.width = \"100%\";\n } else if (util.includes(this.config.width, \"%\")) {\n this.width = this.config.width;\n }\n }\n }\n\n this.container = util.createElement(\"div\", {\n \"class\": \"selectr-container\"\n }); // Custom className\n\n if (this.config.customClass) {\n util.addClass(this.container, this.config.customClass);\n } // Mobile device\n\n\n if (this.mobileDevice) {\n util.addClass(this.container, \"selectr-mobile\");\n } else {\n util.addClass(this.container, \"selectr-desktop\");\n } // Hide the HTMLSelectElement and prevent focus\n\n\n this.el.tabIndex = -1; // Native dropdown\n\n if (this.config.nativeDropdown || this.mobileDevice) {\n util.addClass(this.el, \"selectr-visible\");\n } else {\n util.addClass(this.el, \"selectr-hidden\");\n }\n\n this.selected = util.createElement(\"div\", {\n \"class\": \"selectr-selected\",\n disabled: this.disabled,\n tabIndex: 1,\n // enable tabIndex (#9)\n \"aria-expanded\": false\n });\n this.label = util.createElement(this.el.multiple ? \"ul\" : \"span\", {\n \"class\": \"selectr-label\"\n });\n var dropdown = util.createElement(\"div\", {\n \"class\": \"selectr-options-container\"\n });\n this.tree = util.createElement(\"ul\", {\n \"class\": \"selectr-options\",\n role: \"tree\",\n \"aria-hidden\": true,\n \"aria-expanded\": false\n });\n this.notice = util.createElement(\"div\", {\n \"class\": \"selectr-notice\"\n });\n this.el.setAttribute(\"aria-hidden\", true);\n\n if (this.disabled) {\n this.el.disabled = true;\n }\n\n if (this.el.multiple) {\n util.addClass(this.label, \"selectr-tags\");\n util.addClass(this.container, \"multiple\"); // Collection of tags\n\n this.tags = []; // Collection of selected values\n\n this.selectedValues = this.getSelectedProperties('value'); // Collection of selected indexes\n\n this.selectedIndexes = this.getSelectedProperties('idx');\n }\n\n this.selected.appendChild(this.label);\n\n if (this.config.clearable) {\n this.selectClear = util.createElement(\"button\", {\n \"class\": \"selectr-clear\",\n type: \"button\"\n });\n this.container.appendChild(this.selectClear);\n util.addClass(this.container, \"clearable\");\n }\n\n if (this.config.taggable) {\n var li = util.createElement('li', {\n \"class\": 'input-tag'\n });\n this.input = util.createElement(\"input\", {\n \"class\": \"selectr-tag-input\",\n placeholder: this.config.tagPlaceholder,\n tagIndex: 0,\n autocomplete: \"off\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\",\n role: \"textbox\",\n type: \"search\"\n });\n li.appendChild(this.input);\n this.label.appendChild(li);\n util.addClass(this.container, \"taggable\");\n this.tagSeperators = [\",\"];\n\n if (this.config.tagSeperators) {\n this.tagSeperators = this.tagSeperators.concat(this.config.tagSeperators);\n }\n }\n\n if (this.config.searchable) {\n this.input = util.createElement(\"input\", {\n \"class\": \"selectr-input\",\n tagIndex: -1,\n autocomplete: \"off\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\",\n role: \"textbox\",\n type: \"search\"\n });\n this.inputClear = util.createElement(\"button\", {\n \"class\": \"selectr-input-clear\",\n type: \"button\"\n });\n this.inputContainer = util.createElement(\"div\", {\n \"class\": \"selectr-input-container\"\n });\n this.inputContainer.appendChild(this.input);\n this.inputContainer.appendChild(this.inputClear);\n dropdown.appendChild(this.inputContainer);\n }\n\n dropdown.appendChild(this.notice);\n dropdown.appendChild(this.tree); // List of items for the dropdown\n\n this.items = []; // Establish options\n\n this.options = []; // Check for options in the element\n\n if (this.el.options.length) {\n this.options = [].slice.call(this.el.options);\n } // Element may have optgroups so\n // iterate element.children instead of element.options\n\n\n var group = false,\n j = 0;\n\n if (this.el.children.length) {\n util.each(this.el.children, function (i, element) {\n if (element.nodeName === \"OPTGROUP\") {\n group = util.createElement(\"ul\", {\n \"class\": \"selectr-optgroup\",\n role: \"group\",\n html: \"<li class='selectr-optgroup--label'>\" + element.label + \"</li>\"\n });\n util.each(element.children, function (x, el) {\n el.idx = j;\n group.appendChild(createItem.call(this, el, group));\n j++;\n }, this);\n } else {\n element.idx = j;\n createItem.call(this, element);\n j++;\n }\n }, this);\n } // Options defined by the data option\n\n\n if (this.config.data && Array.isArray(this.config.data)) {\n this.data = [];\n var optgroup = false,\n option;\n group = false;\n j = 0;\n util.each(this.config.data, function (i, opt) {\n // Check for group options\n if (isset(opt, \"children\")) {\n optgroup = util.createElement(\"optgroup\", {\n label: opt.text\n });\n group = util.createElement(\"ul\", {\n \"class\": \"selectr-optgroup\",\n role: \"group\",\n html: \"<li class='selectr-optgroup--label'>\" + opt.text + \"</li>\"\n });\n util.each(opt.children, function (x, data) {\n option = new Option(data.text, data.value, false, data.hasOwnProperty(\"selected\") && data.selected === true);\n option.disabled = isset(data, \"disabled\");\n this.options.push(option);\n optgroup.appendChild(option);\n option.idx = j;\n group.appendChild(createItem.call(this, option, data));\n this.data[j] = data;\n j++;\n }, this);\n } else {\n option = new Option(opt.text, opt.value, false, opt.hasOwnProperty(\"selected\") && opt.selected === true);\n option.disabled = isset(opt, \"disabled\");\n this.options.push(option);\n option.idx = j;\n createItem.call(this, option, opt);\n this.data[j] = opt;\n j++;\n }\n }, this);\n }\n\n this.setSelected(true);\n var first;\n this.navIndex = 0;\n\n for (var i = 0; i < this.items.length; i++) {\n first = this.items[i];\n\n if (!util.hasClass(first, \"disabled\")) {\n util.addClass(first, \"active\");\n this.navIndex = i;\n break;\n }\n } // Check for pagination / infinite scroll\n\n\n if (this.requiresPagination) {\n this.pageIndex = 1; // Create the pages\n\n this.paginate();\n }\n\n this.container.appendChild(this.selected);\n this.container.appendChild(dropdown);\n this.placeEl = util.createElement(\"div\", {\n \"class\": \"selectr-placeholder\"\n }); // Set the placeholder\n\n this.setPlaceholder();\n this.selected.appendChild(this.placeEl); // Disable if required\n\n if (this.disabled) {\n this.disable();\n }\n\n this.el.parentNode.insertBefore(this.container, this.el);\n this.container.appendChild(this.el);\n};\n/**\n * Navigate through the dropdown\n * @param {obj} e\n * @return {void}\n */\n\n\nvar navigate = function navigate(e) {\n e = e || window.event; // Filter out the keys we don\"t want\n\n if (!this.items.length || !this.opened || !util.includes([13, 38, 40], e.which)) {\n this.navigating = false;\n return;\n }\n\n e.preventDefault();\n\n if (e.which === 13) {\n if (this.config.taggable && this.input.value.length > 0) {\n return false;\n }\n\n return this.change(this.navIndex);\n }\n\n var direction,\n prevEl = this.items[this.navIndex];\n\n switch (e.which) {\n case 38:\n direction = 0;\n\n if (this.navIndex > 0) {\n this.navIndex--;\n }\n\n break;\n\n case 40:\n direction = 1;\n\n if (this.navIndex < this.items.length - 1) {\n this.navIndex++;\n }\n\n }\n\n this.navigating = true; // Instead of wasting memory holding a copy of this.items\n // with disabled / excluded options omitted, skip them instead\n\n while (util.hasClass(this.items[this.navIndex], \"disabled\") || util.hasClass(this.items[this.navIndex], \"excluded\")) {\n if (direction) {\n this.navIndex++;\n } else {\n this.navIndex--;\n }\n\n if (this.searching) {\n if (this.navIndex > this.tree.lastElementChild.idx) {\n this.navIndex = this.tree.lastElementChild.idx;\n break;\n } else if (this.navIndex < this.tree.firstElementChild.idx) {\n this.navIndex = this.tree.firstElementChild.idx;\n break;\n }\n }\n } // Autoscroll the dropdown during navigation\n\n\n var r = util.rect(this.items[this.navIndex]);\n\n if (!direction) {\n if (this.navIndex === 0) {\n this.tree.scrollTop = 0;\n } else if (r.top - this.optsRect.top < 0) {\n this.tree.scrollTop = this.tree.scrollTop + (r.top - this.optsRect.top);\n }\n } else {\n if (this.navIndex === 0) {\n this.tree.scrollTop = 0;\n } else if (r.top + r.height > this.optsRect.top + this.optsRect.height) {\n this.tree.scrollTop = this.tree.scrollTop + (r.top + r.height - (this.optsRect.top + this.optsRect.height));\n } // Load another page if needed\n\n\n if (this.navIndex === this.tree.childElementCount - 1 && this.requiresPagination) {\n load.call(this);\n }\n }\n\n if (prevEl) {\n util.removeClass(prevEl, \"active\");\n }\n\n util.addClass(this.items[this.navIndex], \"active\");\n};\n/**\n * Add a tag\n * @param {HTMLElement} item\n */\n\n\nvar addTag = function addTag(item) {\n var that = this,\n r;\n var docFrag = document.createDocumentFragment();\n var option = this.options[item.idx];\n var data = this.data ? this.data[item.idx] : option;\n var content = this.customSelected ? this.config.renderSelection(data) : option.textContent;\n var tag = util.createElement(\"li\", {\n \"class\": \"selectr-tag\",\n html: content\n });\n var btn = util.createElement(\"button\", {\n \"class\": \"selectr-tag-remove\",\n type: \"button\"\n });\n tag.appendChild(btn); // Set property to check against later\n\n tag.idx = item.idx;\n tag.tag = option.value;\n this.tags.push(tag);\n\n if (this.config.sortSelected) {\n var tags = this.tags.slice(); // Deal with values that contain numbers\n\n r = function r(val, arr) {\n val.replace(/(\\d+)|(\\D+)/g, function (that, $1, $2) {\n arr.push([$1 || Infinity, $2 || \"\"]);\n });\n };\n\n tags.sort(function (a, b) {\n var x = [],\n y = [],\n ac,\n bc;\n\n if (that.config.sortSelected === true) {\n ac = a.tag;\n bc = b.tag;\n } else if (that.config.sortSelected === 'text') {\n ac = a.textContent;\n bc = b.textContent;\n }\n\n r(ac, x);\n r(bc, y);\n\n while (x.length && y.length) {\n var ax = x.shift();\n var by = y.shift();\n var nn = ax[0] - by[0] || ax[1].localeCompare(by[1]);\n if (nn) return nn;\n }\n\n return x.length - y.length;\n });\n util.each(tags, function (i, tg) {\n docFrag.appendChild(tg);\n });\n this.label.textContent = \"\";\n } else {\n docFrag.appendChild(tag);\n }\n\n if (this.config.taggable) {\n this.label.insertBefore(docFrag, this.input.parentNode);\n } else {\n this.label.appendChild(docFrag);\n }\n};\n/**\n * Remove a tag\n * @param {HTMLElement} item\n * @return {void}\n */\n\n\nvar removeTag = function removeTag(item) {\n var tag = false;\n util.each(this.tags, function (i, t) {\n if (t.idx === item.idx) {\n tag = t;\n }\n }, this);\n\n if (tag) {\n this.label.removeChild(tag);\n this.tags.splice(this.tags.indexOf(tag), 1);\n }\n};\n/**\n * Load the next page of items\n * @return {void}\n */\n\n\nvar load = function load() {\n var tree = this.tree;\n var scrollTop = tree.scrollTop;\n var scrollHeight = tree.scrollHeight;\n var offsetHeight = tree.offsetHeight;\n var atBottom = scrollTop >= scrollHeight - offsetHeight;\n\n if (atBottom && this.pageIndex < this.pages.length) {\n var f = document.createDocumentFragment();\n util.each(this.pages[this.pageIndex], function (i, item) {\n appendItem(item, f, this.customOption);\n }, this);\n tree.appendChild(f);\n this.pageIndex++;\n this.emit(\"selectr.paginate\", {\n items: this.items.length,\n total: this.data.length,\n page: this.pageIndex,\n pages: this.pages.length\n });\n }\n};\n/**\n * Clear a search\n * @return {void}\n */\n\n\nvar clearSearch = function clearSearch() {\n if (this.config.searchable || this.config.taggable) {\n this.input.value = null;\n this.searching = false;\n\n if (this.config.searchable) {\n util.removeClass(this.inputContainer, \"active\");\n }\n\n if (util.hasClass(this.container, \"notice\")) {\n util.removeClass(this.container, \"notice\");\n util.addClass(this.container, \"open\");\n this.input.focus();\n }\n\n util.each(this.items, function (i, item) {\n // Items that didn't match need the class\n // removing to make them visible again\n util.removeClass(item, \"excluded\"); // Remove the span element for underlining matched items\n\n if (!this.customOption) {\n item.textContent = item.textContent + ''; // clear highlighting\n }\n }, this);\n }\n};\n/**\n * Query matching for searches\n * @param {string} query\n * @param {string} text\n */\n\n\nvar match = function match(query, text) {\n var result = new RegExp(query, \"i\").exec(text);\n\n if (result) {\n var start = result.index;\n var end = result.index + result[0].length;\n return {\n before: text.substring(0, start),\n match: text.substring(start, end),\n after: text.substring(end)\n };\n }\n\n return null;\n}; // Main Lib\n\n\nvar Selectr = function Selectr(el, config) {\n config = config || {};\n\n if (!el) {\n throw new Error(\"You must supply either a HTMLSelectElement or a CSS3 selector string.\");\n }\n\n this.el = el; // CSS3 selector string\n\n if (typeof el === \"string\") {\n this.el = document.querySelector(el);\n }\n\n if (this.el === null) {\n throw new Error(\"The element you passed to Selectr can not be found.\");\n }\n\n if (this.el.nodeName.toLowerCase() !== \"select\") {\n throw new Error(\"The element you passed to Selectr is not a HTMLSelectElement.\");\n }\n\n this.render(config);\n};\n/**\n * Render the instance\n * @param {object} config\n * @return {void}\n */\n\n\nSelectr.prototype.render = function (config) {\n if (this.rendered) return; // Merge defaults with user set config\n\n this.config = util.extend(defaultConfig, config); // Store type\n\n this.originalType = this.el.type; // Store tabIndex\n\n this.originalIndex = this.el.tabIndex; // Store defaultSelected options for form reset\n\n this.defaultSelected = []; // Store the original option count\n\n this.originalOptionCount = this.el.options.length;\n\n if (this.config.multiple || this.config.taggable) {\n this.el.multiple = true;\n } // Disabled?\n\n\n this.disabled = isset(this.config, \"disabled\");\n this.opened = false;\n\n if (this.config.taggable) {\n this.config.searchable = false;\n }\n\n this.navigating = false;\n this.mobileDevice = false;\n\n if (/Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test(navigator.userAgent)) {\n this.mobileDevice = true;\n }\n\n this.customOption = this.config.hasOwnProperty(\"renderOption\") && typeof this.config.renderOption === \"function\";\n this.customSelected = this.config.hasOwnProperty(\"renderSelection\") && typeof this.config.renderSelection === \"function\"; // Enable event emitter\n\n Events.mixin(this);\n build.call(this);\n this.bindEvents();\n this.update();\n this.optsRect = util.rect(this.tree);\n this.rendered = true; // Fixes macOS Safari bug #28\n\n if (!this.el.multiple) {\n this.el.selectedIndex = this.selectedIndex;\n }\n\n var that = this;\n setTimeout(function () {\n that.emit(\"selectr.init\");\n }, 20);\n};\n\nSelectr.prototype.getSelected = function () {\n var selected = this.el.querySelectorAll('option:checked');\n return selected;\n};\n\nSelectr.prototype.getSelectedProperties = function (prop) {\n var selected = this.getSelected();\n var values = [].slice.call(selected).map(function (option) {\n return option[prop];\n }).filter(function (i) {\n return i !== null && i !== undefined;\n });\n return values;\n};\n/**\n * Attach the required event listeners\n */\n\n\nSelectr.prototype.bindEvents = function () {\n var that = this;\n this.events = {};\n this.events.dismiss = dismiss.bind(this);\n this.events.navigate = navigate.bind(this);\n this.events.reset = this.reset.bind(this);\n\n if (this.config.nativeDropdown || this.mobileDevice) {\n this.container.addEventListener(\"touchstart\", function (e) {\n if (e.changedTouches[0].target === that.el) {\n that.toggle();\n }\n });\n\n if (this.config.nativeDropdown || this.mobileDevice) {\n this.container.addEventListener(\"click\", function (e) {\n e.preventDefault(); // Jos: Added to prevent emitting clear directly after select\n\n e.stopPropagation(); // Jos: Added to prevent emitting clear directly after select\n\n if (e.target === that.el) {\n that.toggle();\n }\n });\n }\n\n var getChangedOptions = function getChangedOptions(last, current) {\n var added = [],\n removed = last.slice(0);\n var idx;\n\n for (var i = 0; i < current.length; i++) {\n idx = removed.indexOf(current[i]);\n if (idx > -1) removed.splice(idx, 1);else added.push(current[i]);\n }\n\n return [added, removed];\n }; // Listen for the change on the native select\n // and update accordingly\n\n\n this.el.addEventListener(\"change\", function (e) {\n if (that.el.multiple) {\n var indexes = that.getSelectedProperties('idx');\n var changes = getChangedOptions(that.selectedIndexes, indexes);\n util.each(changes[0], function (i, idx) {\n that.select(idx);\n }, that);\n util.each(changes[1], function (i, idx) {\n that.deselect(idx);\n }, that);\n } else {\n if (that.el.selectedIndex > -1) {\n that.select(that.el.selectedIndex);\n }\n }\n });\n } // Open the dropdown with Enter key if focused\n\n\n if (this.config.nativeDropdown) {\n this.container.addEventListener(\"keydown\", function (e) {\n if (e.key === \"Enter\" && that.selected === document.activeElement) {\n // Show the native\n that.toggle(); // Focus on the native multiselect\n\n setTimeout(function () {\n that.el.focus();\n }, 200);\n }\n });\n } // Non-native dropdown\n\n\n this.selected.addEventListener(\"click\", function (e) {\n if (!that.disabled) {\n that.toggle();\n }\n\n e.preventDefault();\n e.stopPropagation(); // Jos: Added to prevent emitting clear directly after select\n }); // Remove tag\n\n this.label.addEventListener(\"click\", function (e) {\n if (util.hasClass(e.target, \"selectr-tag-remove\")) {\n that.deselect(e.target.parentNode.idx);\n }\n }); // Clear input\n\n if (this.selectClear) {\n this.selectClear.addEventListener(\"click\", this.clear.bind(this));\n } // Prevent text selection\n\n\n this.tree.addEventListener(\"mousedown\", function (e) {\n e.preventDefault();\n }); // Select / deselect items\n\n this.tree.addEventListener(\"click\", function (e) {\n e.preventDefault(); // Jos: Added to prevent emitting clear directly after select\n\n e.stopPropagation(); // Jos: Added to prevent emitting clear directly after select\n\n var item = util.closest(e.target, function (el) {\n return el && util.hasClass(el, \"selectr-option\");\n });\n\n if (item) {\n if (!util.hasClass(item, \"disabled\")) {\n if (util.hasClass(item, \"selected\")) {\n if (that.el.multiple || !that.el.multiple && that.config.allowDeselect) {\n that.deselect(item.idx);\n }\n } else {\n that.select(item.idx);\n }\n\n if (that.opened && !that.el.multiple) {\n that.close();\n }\n }\n }\n }); // Mouseover list items\n\n this.tree.addEventListener(\"mouseover\", function (e) {\n if (util.hasClass(e.target, \"selectr-option\")) {\n if (!util.hasClass(e.target, \"disabled\")) {\n util.removeClass(that.items[that.navIndex], \"active\");\n util.addClass(e.target, \"active\");\n that.navIndex = [].slice.call(that.items).indexOf(e.target);\n }\n }\n }); // Searchable\n\n if (this.config.searchable) {\n // Show / hide the search input clear button\n this.input.addEventListener(\"focus\", function (e) {\n that.searching = true;\n });\n this.input.addEventListener(\"blur\", function (e) {\n that.searching = false;\n });\n this.input.addEventListener(\"keyup\", function (e) {\n that.search();\n\n if (!that.config.taggable) {\n // Show / hide the search input clear button\n if (this.value.length) {\n util.addClass(this.parentNode, \"active\");\n } else {\n util.removeClass(this.parentNode, \"active\");\n }\n }\n }); // Clear the search input\n\n this.inputClear.addEventListener(\"click\", function (e) {\n that.input.value = null;\n clearSearch.call(that);\n\n if (!that.tree.childElementCount) {\n render.call(that);\n }\n });\n }\n\n if (this.config.taggable) {\n this.input.addEventListener(\"keyup\", function (e) {\n that.search();\n\n if (that.config.taggable && this.value.length) {\n var val = this.value.trim();\n\n if (e.which === 13 || util.includes(that.tagSeperators, e.key)) {\n util.each(that.tagSeperators, function (i, k) {\n val = val.replace(k, '');\n });\n var option = that.add({\n value: val,\n text: val,\n selected: true\n }, true);\n\n if (!option) {\n this.value = '';\n that.setMessage('That tag is already in use.');\n } else {\n that.close();\n clearSearch.call(that);\n }\n }\n }\n });\n }\n\n this.update = util.debounce(function () {\n // Optionally close dropdown on scroll / resize (#11)\n if (that.opened && that.config.closeOnScroll) {\n that.close();\n }\n\n if (that.width) {\n that.container.style.width = that.width;\n }\n\n that.invert();\n }, 50);\n\n if (this.requiresPagination) {\n this.paginateItems = util.debounce(function () {\n load.call(this);\n }, 50);\n this.tree.addEventListener(\"scroll\", this.paginateItems.bind(this));\n } // Dismiss when clicking outside the container\n\n\n document.addEventListener(\"click\", this.events.dismiss);\n window.addEventListener(\"keydown\", this.events.navigate);\n window.addEventListener(\"resize\", this.update);\n window.addEventListener(\"scroll\", this.update); // Listen for form.reset() (@ambrooks, #13)\n\n if (this.el.form) {\n this.el.form.addEventListener(\"reset\", this.events.reset);\n }\n};\n/**\n * Check for selected options\n * @param {bool} reset\n */\n\n\nSelectr.prototype.setSelected = function (reset) {\n // Select first option as with a native select-one element - #21, #24\n if (!this.config.data && !this.el.multiple && this.el.options.length) {\n // Browser has selected the first option by default\n if (this.el.selectedIndex === 0) {\n if (!this.el.options[0].defaultSelected && !this.config.defaultSelected) {\n this.el.selectedIndex = -1;\n }\n }\n\n this.selectedIndex = this.el.selectedIndex;\n\n if (this.selectedIndex > -1) {\n this.select(this.selectedIndex);\n }\n } // If we're changing a select-one to select-multiple via the config\n // and there are no selected options, the first option will be selected by the browser\n // Let's prevent that here.\n\n\n if (this.config.multiple && this.originalType === \"select-one\" && !this.config.data) {\n if (this.el.options[0].selected && !this.el.options[0].defaultSelected) {\n this.el.options[0].selected = false;\n }\n }\n\n util.each(this.options, function (i, option) {\n if (option.selected && option.defaultSelected) {\n this.select(option.idx);\n }\n }, this);\n\n if (this.config.selectedValue) {\n this.setValue(this.config.selectedValue);\n }\n\n if (this.config.data) {\n if (!this.el.multiple && this.config.defaultSelected && this.el.selectedIndex < 0) {\n this.select(0);\n }\n\n var j = 0;\n util.each(this.config.data, function (i, opt) {\n // Check for group options\n if (isset(opt, \"children\")) {\n util.each(opt.children, function (x, item) {\n if (item.hasOwnProperty(\"selected\") && item.selected === true) {\n this.select(j);\n }\n\n j++;\n }, this);\n } else {\n if (opt.hasOwnProperty(\"selected\") && opt.selected === true) {\n this.select(j);\n }\n\n j++;\n }\n }, this);\n }\n};\n/**\n * Destroy the instance\n * @return {void}\n */\n\n\nSelectr.prototype.destroy = function () {\n if (!this.rendered) return;\n this.emit(\"selectr.destroy\"); // Revert to select-single if programtically set to multiple\n\n if (this.originalType === 'select-one') {\n this.el.multiple = false;\n }\n\n if (this.config.data) {\n this.el.textContent = \"\";\n } // Remove the className from select element\n\n\n util.removeClass(this.el, 'selectr-hidden'); // Remove reset listener from parent form\n\n if (this.el.form) {\n util.off(this.el.form, \"reset\", this.events.reset);\n } // Remove event listeners attached to doc and win\n\n\n util.off(document, \"click\", this.events.dismiss);\n util.off(document, \"keydown\", this.events.navigate);\n util.off(window, \"resize\", this.update);\n util.off(window, \"scroll\", this.update); // Replace the container with the original select element\n\n this.container.parentNode.replaceChild(this.el, this.container);\n this.rendered = false;\n};\n/**\n * Change an options state\n * @param {Number} index\n * @return {void}\n */\n\n\nSelectr.prototype.change = function (index) {\n var item = this.items[index],\n option = this.options[index];\n\n if (option.disabled) {\n return;\n }\n\n if (option.selected && util.hasClass(item, \"selected\")) {\n this.deselect(index);\n } else {\n this.select(index);\n }\n\n if (this.opened && !this.el.multiple) {\n this.close();\n }\n};\n/**\n * Select an option\n * @param {Number} index\n * @return {void}\n */\n\n\nSelectr.prototype.select = function (index) {\n var item = this.items[index],\n options = [].slice.call(this.el.options),\n option = this.options[index];\n\n if (this.el.multiple) {\n if (util.includes(this.selectedIndexes, index)) {\n return false;\n }\n\n if (this.config.maxSelections && this.tags.length === this.config.maxSelections) {\n this.setMessage(\"A maximum of \" + this.config.maxSelections + \" items can be selected.\", true);\n return false;\n }\n\n this.selectedValues.push(option.value);\n this.selectedIndexes.push(index);\n addTag.call(this, item);\n } else {\n var data = this.data ? this.data[index] : option;\n this.label.textContent = this.customSelected ? this.config.renderSelection(data) : option.textContent;\n this.selectedValue = option.value;\n this.selectedIndex = index;\n util.each(this.options, function (i, o) {\n var opt = this.items[i];\n\n if (i !== index) {\n if (opt) {\n util.removeClass(opt, \"selected\");\n }\n\n o.selected = false;\n o.removeAttribute(\"selected\");\n }\n }, this);\n }\n\n if (!util.includes(options, option)) {\n this.el.add(option);\n }\n\n item.setAttribute(\"aria-selected\", true);\n util.addClass(item, \"selected\");\n util.addClass(this.container, \"has-selected\");\n option.selected = true;\n option.setAttribute(\"selected\", \"\");\n this.emit(\"selectr.change\", option);\n this.emit(\"selectr.select\", option);\n};\n/**\n * Deselect an option\n * @param {Number} index\n * @return {void}\n */\n\n\nSelectr.prototype.deselect = function (index, force) {\n var item = this.items[index],\n option = this.options[index];\n\n if (this.el.multiple) {\n var selIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(selIndex, 1);\n var valIndex = this.selectedValues.indexOf(option.value);\n this.selectedValues.splice(valIndex, 1);\n removeTag.call(this, item);\n\n if (!this.tags.length) {\n util.removeClass(this.container, \"has-selected\");\n }\n } else {\n if (!force && !this.config.clearable && !this.config.allowDeselect) {\n return false;\n }\n\n this.label.textContent = \"\";\n this.selectedValue = null;\n this.el.selectedIndex = this.selectedIndex = -1;\n util.removeClass(this.container, \"has-selected\");\n }\n\n this.items[index].setAttribute(\"aria-selected\", false);\n util.removeClass(this.items[index], \"selected\");\n option.selected = false;\n option.removeAttribute(\"selected\");\n this.emit(\"selectr.change\", null);\n this.emit(\"selectr.deselect\", option);\n};\n/**\n * Programmatically set selected values\n * @param {String|Array} value - A string or an array of strings\n */\n\n\nSelectr.prototype.setValue = function (value) {\n var isArray = Array.isArray(value);\n\n if (!isArray) {\n value = value.toString().trim();\n } // Can't pass array to select-one\n\n\n if (!this.el.multiple && isArray) {\n return false;\n }\n\n util.each(this.options, function (i, option) {\n if (isArray && util.includes(value.toString(), option.value) || option.value === value) {\n this.change(option.idx);\n }\n }, this);\n};\n/**\n * Set the selected value(s)\n * @param {bool} toObject Return only the raw values or an object\n * @param {bool} toJson Return the object as a JSON string\n * @return {mixed} Array or String\n */\n\n\nSelectr.prototype.getValue = function (toObject, toJson) {\n var value;\n\n if (this.el.multiple) {\n if (toObject) {\n if (this.selectedIndexes.length) {\n value = {};\n value.values = [];\n util.each(this.selectedIndexes, function (i, index) {\n var option = this.options[index];\n value.values[i] = {\n value: option.value,\n text: option.textContent\n };\n }, this);\n }\n } else {\n value = this.selectedValues.slice();\n }\n } else {\n if (toObject) {\n var option = this.options[this.selectedIndex];\n value = {\n value: option.value,\n text: option.textContent\n };\n } else {\n value = this.selectedValue;\n }\n }\n\n if (toObject && toJson) {\n value = JSON.stringify(value);\n }\n\n return value;\n};\n/**\n * Add a new option or options\n * @param {object} data\n */\n\n\nSelectr.prototype.add = function (data, checkDuplicate) {\n if (data) {\n this.data = this.data || [];\n this.items = this.items || [];\n this.options = this.options || [];\n\n if (Array.isArray(data)) {\n // We have an array on items\n util.each(data, function (i, obj) {\n this.add(obj, checkDuplicate);\n }, this);\n } // User passed a single object to the method\n // or Selectr passed an object from an array\n else if (\"[object Object]\" === Object.prototype.toString.call(data)) {\n if (checkDuplicate) {\n var dupe = false;\n util.each(this.options, function (i, option) {\n if (option.value.toLowerCase() === data.value.toLowerCase()) {\n dupe = true;\n }\n });\n\n if (dupe) {\n return false;\n }\n }\n\n var option = util.createElement('option', data);\n this.data.push(data); // Add the new option to the list\n\n this.options.push(option); // Add the index for later use\n\n option.idx = this.options.length > 0 ? this.options.length - 1 : 0; // Create a new item\n\n createItem.call(this, option); // Select the item if required\n\n if (data.selected) {\n this.select(option.idx);\n }\n\n return option;\n } // We may have had an empty select so update\n // the placeholder to reflect the changes.\n\n\n this.setPlaceholder(); // Recount the pages\n\n if (this.config.pagination) {\n this.paginate();\n }\n\n return true;\n }\n};\n/**\n * Remove an option or options\n * @param {Mixed} o Array, integer (index) or string (value)\n * @return {Void}\n */\n\n\nSelectr.prototype.remove = function (o) {\n var options = [];\n\n if (Array.isArray(o)) {\n util.each(o, function (i, opt) {\n if (util.isInt(opt)) {\n options.push(this.getOptionByIndex(opt));\n } else if (typeof o === \"string\") {\n options.push(this.getOptionByValue(opt));\n }\n }, this);\n } else if (util.isInt(o)) {\n options.push(this.getOptionByIndex(o));\n } else if (typeof o === \"string\") {\n options.push(this.getOptionByValue(o));\n }\n\n if (options.length) {\n var index;\n util.each(options, function (i, option) {\n index = option.idx; // Remove the HTMLOptionElement\n\n this.el.remove(option); // Remove the reference from the option array\n\n this.options.splice(index, 1); // If the item has a parentNode (group element) it needs to be removed\n // otherwise the render function will still append it to the dropdown\n\n var parentNode = this.items[index].parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this.items[index]);\n } // Remove reference from the items array\n\n\n this.items.splice(index, 1); // Reset the indexes\n\n util.each(this.options, function (i, opt) {\n opt.idx = i;\n this.items[i].idx = i;\n }, this);\n }, this); // We may have had an empty select now so update\n // the placeholder to reflect the changes.\n\n this.setPlaceholder(); // Recount the pages\n\n if (this.config.pagination) {\n this.paginate();\n }\n }\n};\n/**\n * Remove all options\n */\n\n\nSelectr.prototype.removeAll = function () {\n // Clear any selected options\n this.clear(true); // Remove the HTMLOptionElements\n\n util.each(this.el.options, function (i, option) {\n this.el.remove(option);\n }, this); // Empty the dropdown\n\n util.truncate(this.tree); // Reset variables\n\n this.items = [];\n this.options = [];\n this.data = [];\n this.navIndex = 0;\n\n if (this.requiresPagination) {\n this.requiresPagination = false;\n this.pageIndex = 1;\n this.pages = [];\n } // Update the placeholder\n\n\n this.setPlaceholder();\n};\n/**\n * Perform a search\n * @param {string} query The query string\n */\n\n\nSelectr.prototype.search = function (string) {\n if (this.navigating) return;\n string = string || this.input.value;\n var f = document.createDocumentFragment(); // Remove message\n\n this.removeMessage(); // Clear the dropdown\n\n util.truncate(this.tree);\n\n if (string.length > 1) {\n // Check the options for the matching string\n util.each(this.options, function (i, option) {\n var item = this.items[option.idx];\n var includes = util.includes(option.textContent.toLowerCase(), string.toLowerCase());\n\n if (includes && !option.disabled) {\n appendItem(item, f, this.customOption);\n util.removeClass(item, \"excluded\"); // Underline the matching results\n\n if (!this.customOption) {\n item.textContent = '';\n var result = match(string, option.textContent);\n\n if (result) {\n item.appendChild(document.createTextNode(result.before));\n var highlight = document.createElement('span');\n highlight.className = 'selectr-match';\n highlight.appendChild(document.createTextNode(result.match));\n item.appendChild(highlight);\n item.appendChild(document.createTextNode(result.after));\n }\n }\n } else {\n util.addClass(item, \"excluded\");\n }\n }, this);\n\n if (!f.childElementCount) {\n if (!this.config.taggable) {\n this.setMessage(\"no results.\");\n }\n } else {\n // Highlight top result (@binary-koan #26)\n var prevEl = this.items[this.navIndex];\n var firstEl = f.firstElementChild;\n util.removeClass(prevEl, \"active\");\n this.navIndex = firstEl.idx;\n util.addClass(firstEl, \"active\");\n }\n } else {\n render.call(this);\n }\n\n this.tree.appendChild(f);\n};\n/**\n * Toggle the dropdown\n * @return {void}\n */\n\n\nSelectr.prototype.toggle = function () {\n if (!this.disabled) {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n};\n/**\n * Open the dropdown\n * @return {void}\n */\n\n\nSelectr.prototype.open = function () {\n var that = this;\n\n if (!this.options.length) {\n return false;\n }\n\n if (!this.opened) {\n this.emit(\"selectr.open\");\n }\n\n this.opened = true;\n\n if (this.mobileDevice || this.config.nativeDropdown) {\n util.addClass(this.container, \"native-open\");\n\n if (this.config.data) {\n // Dump the options into the select\n // otherwise the native dropdown will be empty\n util.each(this.options, function (i, option) {\n this.el.add(option);\n }, this);\n }\n\n return;\n }\n\n util.addClass(this.container, \"open\");\n render.call(this);\n this.invert();\n this.tree.scrollTop = 0;\n util.removeClass(this.container, \"notice\");\n this.selected.setAttribute(\"aria-expanded\", true);\n this.tree.setAttribute(\"aria-hidden\", false);\n this.tree.setAttribute(\"aria-expanded\", true);\n\n if (this.config.searchable && !this.config.taggable) {\n setTimeout(function () {\n that.input.focus(); // Allow tab focus\n\n that.input.tabIndex = 0;\n }, 10);\n }\n};\n/**\n * Close the dropdown\n * @return {void}\n */\n\n\nSelectr.prototype.close = function () {\n if (this.opened) {\n this.emit(\"selectr.close\");\n }\n\n this.opened = false;\n\n if (this.mobileDevice || this.config.nativeDropdown) {\n util.removeClass(this.container, \"native-open\");\n return;\n }\n\n var notice = util.hasClass(this.container, \"notice\");\n\n if (this.config.searchable && !notice) {\n this.input.blur(); // Disable tab focus\n\n this.input.tabIndex = -1;\n this.searching = false;\n }\n\n if (notice) {\n util.removeClass(this.container, \"notice\");\n this.notice.textContent = \"\";\n }\n\n util.removeClass(this.container, \"open\");\n util.removeClass(this.container, \"native-open\");\n this.selected.setAttribute(\"aria-expanded\", false);\n this.tree.setAttribute(\"aria-hidden\", true);\n this.tree.setAttribute(\"aria-expanded\", false);\n util.truncate(this.tree);\n clearSearch.call(this);\n};\n/**\n * Enable the element\n * @return {void}\n */\n\n\nSelectr.prototype.enable = function () {\n this.disabled = false;\n this.el.disabled = false;\n this.selected.tabIndex = this.originalIndex;\n\n if (this.el.multiple) {\n util.each(this.tags, function (i, t) {\n t.lastElementChild.tabIndex = 0;\n });\n }\n\n util.removeClass(this.container, \"selectr-disabled\");\n};\n/**\n * Disable the element\n * @param {boolean} container Disable the container only (allow value submit with form)\n * @return {void}\n */\n\n\nSelectr.prototype.disable = function (container) {\n if (!container) {\n this.el.disabled = true;\n }\n\n this.selected.tabIndex = -1;\n\n if (this.el.multiple) {\n util.each(this.tags, function (i, t) {\n t.lastElementChild.tabIndex = -1;\n });\n }\n\n this.disabled = true;\n util.addClass(this.container, \"selectr-disabled\");\n};\n/**\n * Reset to initial state\n * @return {void}\n */\n\n\nSelectr.prototype.reset = function () {\n if (!this.disabled) {\n this.clear();\n this.setSelected(true);\n util.each(this.defaultSelected, function (i, idx) {\n this.select(idx);\n }, this);\n this.emit(\"selectr.reset\");\n }\n};\n/**\n * Clear all selections\n * @return {void}\n */\n\n\nSelectr.prototype.clear = function (force) {\n if (this.el.multiple) {\n // Loop over the selectedIndexes so we don't have to loop over all the options\n // which can be costly if there are a lot of them\n if (this.selectedIndexes.length) {\n // Copy the array or we'll get an error\n var indexes = this.selectedIndexes.slice();\n util.each(indexes, function (i, idx) {\n this.deselect(idx);\n }, this);\n }\n } else {\n if (this.selectedIndex > -1) {\n this.deselect(this.selectedIndex, force);\n }\n }\n\n this.emit(\"selectr.clear\");\n};\n/**\n * Return serialised data\n * @param {boolean} toJson\n * @return {mixed} Returns either an object or JSON string\n */\n\n\nSelectr.prototype.serialise = function (toJson) {\n var data = [];\n util.each(this.options, function (i, option) {\n var obj = {\n value: option.value,\n text: option.textContent\n };\n\n if (option.selected) {\n obj.selected = true;\n }\n\n if (option.disabled) {\n obj.disabled = true;\n }\n\n data[i] = obj;\n });\n return toJson ? JSON.stringify(data) : data;\n};\n/**\n * Localised version of serialise() method\n */\n\n\nSelectr.prototype.serialize = function (toJson) {\n return this.serialise(toJson);\n};\n/**\n * Sets the placeholder\n * @param {String} placeholder\n */\n\n\nSelectr.prototype.setPlaceholder = function (placeholder) {\n // Set the placeholder\n placeholder = placeholder || this.config.placeholder || this.el.getAttribute(\"placeholder\");\n\n if (!this.options.length) {\n placeholder = \"No options available\";\n }\n\n this.placeEl.textContent = placeholder;\n};\n/**\n * Paginate the option list\n * @return {Array}\n */\n\n\nSelectr.prototype.paginate = function () {\n if (this.items.length) {\n var that = this;\n this.pages = this.items.map(function (v, i) {\n return i % that.config.pagination === 0 ? that.items.slice(i, i + that.config.pagination) : null;\n }).filter(function (pages) {\n return pages;\n });\n return this.pages;\n }\n};\n/**\n * Display a message\n * @param {String} message The message\n */\n\n\nSelectr.prototype.setMessage = function (message, close) {\n if (close) {\n this.close();\n }\n\n util.addClass(this.container, \"notice\");\n this.notice.textContent = message;\n};\n/**\n * Dismiss the current message\n */\n\n\nSelectr.prototype.removeMessage = function () {\n util.removeClass(this.container, \"notice\");\n this.notice.textContent = \"\";\n};\n/**\n * Keep the dropdown within the window\n * @return {void}\n */\n\n\nSelectr.prototype.invert = function () {\n var rt = util.rect(this.selected),\n oh = this.tree.parentNode.offsetHeight,\n wh = window.innerHeight,\n doInvert = rt.top + rt.height + oh > wh;\n\n if (doInvert) {\n util.addClass(this.container, \"inverted\");\n this.isInverted = true;\n } else {\n util.removeClass(this.container, \"inverted\");\n this.isInverted = false;\n }\n\n this.optsRect = util.rect(this.tree);\n};\n/**\n * Get an option via it's index\n * @param {Integer} index The index of the HTMLOptionElement required\n * @return {HTMLOptionElement}\n */\n\n\nSelectr.prototype.getOptionByIndex = function (index) {\n return this.options[index];\n};\n/**\n * Get an option via it's value\n * @param {String} value The value of the HTMLOptionElement required\n * @return {HTMLOptionElement}\n */\n\n\nSelectr.prototype.getOptionByValue = function (value) {\n var option = false;\n\n for (var i = 0, l = this.options.length; i < l; i++) {\n if (this.options[i].value.trim() === value.toString().trim()) {\n option = this.options[i];\n break;\n }\n }\n\n return option;\n};\n\nmodule.exports = Selectr;\n\n/***/ }),\n\n/***/ 188:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EX\": function() { return /* binding */ SIZE_LARGE; },\n/* harmony export */ \"WF\": function() { return /* binding */ MAX_PREVIEW_CHARACTERS; },\n/* harmony export */ \"oW\": function() { return /* binding */ PREVIEW_HISTORY_LIMIT; },\n/* harmony export */ \"qD\": function() { return /* binding */ DEFAULT_MODAL_ANCHOR; }\n/* harmony export */ });\nvar DEFAULT_MODAL_ANCHOR = document.body;\nvar SIZE_LARGE = 10 * 1024 * 1024; // 10 MB\n\nvar MAX_PREVIEW_CHARACTERS = 20000;\nvar PREVIEW_HISTORY_LIMIT = 2 * 1024 * 1024 * 1024; // 2 GB\n\n/***/ }),\n\n/***/ 602:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"w\": function() { return /* binding */ createAbsoluteAnchor; }\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(791);\n\n/**\n * Create an anchor element absolutely positioned in the `parent`\n * element.\n * @param {HTMLElement} anchor\n * @param {HTMLElement} parent\n * @param {function(HTMLElement)} [onDestroy] Callback when the anchor is destroyed\n * @param {boolean} [destroyOnMouseOut=false] If true, anchor will be removed on mouse out\n * @returns {HTMLElement}\n */\n\nfunction createAbsoluteAnchor(anchor, parent, onDestroy) {\n var destroyOnMouseOut = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var root = getRootNode(anchor);\n var eventListeners = {};\n var anchorRect = anchor.getBoundingClientRect();\n var parentRect = parent.getBoundingClientRect();\n var absoluteAnchor = document.createElement('div');\n absoluteAnchor.className = 'jsoneditor-anchor';\n absoluteAnchor.style.position = 'absolute';\n absoluteAnchor.style.left = anchorRect.left - parentRect.left + 'px';\n absoluteAnchor.style.top = anchorRect.top - parentRect.top + 'px';\n absoluteAnchor.style.width = anchorRect.width - 2 + 'px';\n absoluteAnchor.style.height = anchorRect.height - 2 + 'px';\n absoluteAnchor.style.boxSizing = 'border-box';\n parent.appendChild(absoluteAnchor);\n\n function destroy() {\n // remove temporary absolutely positioned anchor\n if (absoluteAnchor && absoluteAnchor.parentNode) {\n absoluteAnchor.parentNode.removeChild(absoluteAnchor); // remove all event listeners\n // all event listeners are supposed to be attached to document.\n\n for (var name in eventListeners) {\n if (hasOwnProperty(eventListeners, name)) {\n var fn = eventListeners[name];\n\n if (fn) {\n (0,_util__WEBPACK_IMPORTED_MODULE_0__.removeEventListener)(root, name, fn);\n }\n\n delete eventListeners[name];\n }\n }\n\n if (typeof onDestroy === 'function') {\n onDestroy(anchor);\n }\n }\n }\n\n function isOutside(target) {\n return target !== absoluteAnchor && !(0,_util__WEBPACK_IMPORTED_MODULE_0__.isChildOf)(target, absoluteAnchor);\n } // create and attach event listeners\n\n\n function destroyIfOutside(event) {\n if (isOutside(event.target)) {\n destroy();\n }\n }\n\n eventListeners.mousedown = (0,_util__WEBPACK_IMPORTED_MODULE_0__.addEventListener)(root, 'mousedown', destroyIfOutside);\n eventListeners.mousewheel = (0,_util__WEBPACK_IMPORTED_MODULE_0__.addEventListener)(root, 'mousewheel', destroyIfOutside);\n\n if (destroyOnMouseOut) {\n var destroyTimer = null;\n\n absoluteAnchor.onmouseover = function () {\n clearTimeout(destroyTimer);\n destroyTimer = null;\n };\n\n absoluteAnchor.onmouseout = function () {\n if (!destroyTimer) {\n destroyTimer = setTimeout(destroy, 200);\n }\n };\n }\n\n absoluteAnchor.destroy = destroy;\n return absoluteAnchor;\n}\n/**\n * Node.getRootNode shim\n * @param {HTMLElement} node node to check\n * @return {HTMLElement} node's rootNode or `window` if there is ShadowDOM is not supported.\n */\n\nfunction getRootNode(node) {\n return typeof node.getRootNode === 'function' ? node.getRootNode() : window;\n}\n\nfunction hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/***/ }),\n\n/***/ 907:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Iu\": function() { return /* binding */ translate; },\n/* harmony export */ \"cC\": function() { return /* binding */ setLanguages; },\n/* harmony export */ \"m0\": function() { return /* binding */ setLanguage; }\n/* harmony export */ });\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(987);\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_polyfills__WEBPACK_IMPORTED_MODULE_0__);\n\n/* eslint-disable no-template-curly-in-string */\n\n\nvar _defs = {\n en: {\n array: 'Array',\n auto: 'Auto',\n appendText: 'Append',\n appendTitle: 'Append a new field with type \\'auto\\' after this field (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Select the type of the field to be appended',\n appendTitleAuto: 'Append a new field with type \\'auto\\' (Ctrl+Shift+Ins)',\n ascending: 'Ascending',\n ascendingTitle: 'Sort the childs of this ${type} in ascending order',\n actionsMenu: 'Click to open the actions menu (Ctrl+M)',\n cannotParseFieldError: 'Cannot parse field into JSON',\n cannotParseValueError: 'Cannot parse value into JSON',\n collapseAll: 'Collapse all fields',\n compactTitle: 'Compact JSON data, remove all whitespaces (Ctrl+Shift+I)',\n descending: 'Descending',\n descendingTitle: 'Sort the childs of this ${type} in descending order',\n drag: 'Drag to move this field (Alt+Shift+Arrows)',\n duplicateKey: 'duplicate key',\n duplicateText: 'Duplicate',\n duplicateTitle: 'Duplicate selected fields (Ctrl+D)',\n duplicateField: 'Duplicate this field (Ctrl+D)',\n duplicateFieldError: 'Duplicate field name',\n empty: 'empty',\n expandAll: 'Expand all fields',\n expandTitle: 'Click to expand/collapse this field (Ctrl+E). \\n' + 'Ctrl+Click to expand/collapse including all childs.',\n formatTitle: 'Format JSON data, with proper indentation and line feeds (Ctrl+I)',\n insert: 'Insert',\n insertTitle: 'Insert a new field with type \\'auto\\' before this field (Ctrl+Ins)',\n insertSub: 'Select the type of the field to be inserted',\n object: 'Object',\n ok: 'Ok',\n redo: 'Redo (Ctrl+Shift+Z)',\n removeText: 'Remove',\n removeTitle: 'Remove selected fields (Ctrl+Del)',\n removeField: 'Remove this field (Ctrl+Del)',\n repairTitle: 'Repair JSON: fix quotes and escape characters, remove comments and JSONP notation, turn JavaScript objects into JSON.',\n searchTitle: 'Search fields and values',\n searchNextResultTitle: 'Next result (Enter)',\n searchPreviousResultTitle: 'Previous result (Shift + Enter)',\n selectNode: 'Select a node...',\n showAll: 'show all',\n showMore: 'show more',\n showMoreStatus: 'displaying ${visibleChilds} of ${totalChilds} items.',\n sort: 'Sort',\n sortTitle: 'Sort the childs of this ${type}',\n sortTitleShort: 'Sort contents',\n sortFieldLabel: 'Field:',\n sortDirectionLabel: 'Direction:',\n sortFieldTitle: 'Select the nested field by which to sort the array or object',\n sortAscending: 'Ascending',\n sortAscendingTitle: 'Sort the selected field in ascending order',\n sortDescending: 'Descending',\n sortDescendingTitle: 'Sort the selected field in descending order',\n string: 'String',\n transform: 'Transform',\n transformTitle: 'Filter, sort, or transform the childs of this ${type}',\n transformTitleShort: 'Filter, sort, or transform contents',\n extract: 'Extract',\n extractTitle: 'Extract this ${type}',\n transformQueryTitle: 'Enter a JMESPath query',\n transformWizardLabel: 'Wizard',\n transformWizardFilter: 'Filter',\n transformWizardSortBy: 'Sort by',\n transformWizardSelectFields: 'Select fields',\n transformQueryLabel: 'Query',\n transformPreviewLabel: 'Preview',\n type: 'Type',\n typeTitle: 'Change the type of this field',\n openUrl: 'Ctrl+Click or Ctrl+Enter to open url in new window',\n undo: 'Undo last action (Ctrl+Z)',\n validationCannotMove: 'Cannot move a field into a child of itself',\n autoType: 'Field type \"auto\". ' + 'The field type is automatically determined from the value ' + 'and can be a string, number, boolean, or null.',\n objectType: 'Field type \"object\". ' + 'An object contains an unordered set of key/value pairs.',\n arrayType: 'Field type \"array\". ' + 'An array contains an ordered collection of values.',\n stringType: 'Field type \"string\". ' + 'Field type is not determined from the value, ' + 'but always returned as string.',\n modeEditorTitle: 'Switch Editor Mode',\n modeCodeText: 'Code',\n modeCodeTitle: 'Switch to code highlighter',\n modeFormText: 'Form',\n modeFormTitle: 'Switch to form editor',\n modeTextText: 'Text',\n modeTextTitle: 'Switch to plain text editor',\n modeTreeText: 'Tree',\n modeTreeTitle: 'Switch to tree editor',\n modeViewText: 'View',\n modeViewTitle: 'Switch to tree view',\n modePreviewText: 'Preview',\n modePreviewTitle: 'Switch to preview mode',\n examples: 'Examples',\n \"default\": 'Default',\n containsInvalidProperties: 'Contains invalid properties',\n containsInvalidItems: 'Contains invalid items'\n },\n es: {\n array: 'Matriz',\n auto: 'Auto',\n appendText: 'Agregar',\n appendTitle: 'Agregue un nuevo campo con el tipo \\'auto\\' después de este campo (Ctrl + Shift + Ins)',\n appendSubmenuTitle: 'Seleccione el tipo de campo que se agregará',\n appendTitleAuto: 'Agregue un nuevo campo con el tipo \\'auto\\' (Ctrl + Shift + Ins)',\n ascending: 'Ascendente',\n ascendingTitle: 'Ordene los elementos secundarios de este ${type} en orden ascendente',\n actionsMenu: 'Haga clic para abrir el menú de acciones (Ctrl + M)',\n cannotParseFieldError: 'No se puede parsear el campo en JSON',\n cannotParseValueError: 'No se puede parsear el valor en JSON',\n collapseAll: 'Contraer todos los campos',\n compactTitle: 'Compactar datos JSON, eliminar todos los espacios en blanco (Ctrl + Shift + I)',\n descending: 'Descendente',\n descendingTitle: 'Ordene los hijos de este ${type} en orden descendente',\n drag: 'Arrastre para mover este campo (Alt + Mayús + Flechas)',\n duplicateKey: 'llave duplicada',\n duplicateText: 'Duplicar',\n duplicateTitle: 'Duplicar campos seleccionados (Ctrl + D)',\n duplicateField: 'Duplicar este campo (Ctrl + D)',\n duplicateFieldError: 'Nombre de campo duplicado',\n empty: 'vacio',\n expandAll: 'Expandir todos los campos',\n expandTitle: 'Haga clic para expandir/contraer este campo (Ctrl + E). \\n ' + ' Ctrl+Clic para expandir/contraer incluyendo todos los niños.',\n formatTitle: 'Formatee los datos JSON, con la sangrÃa y los avances de lÃnea adecuados (Ctrl + I)',\n insert: 'Insertar',\n insertTitle: 'Inserte un nuevo campo con el tipo \\'auto\\' antes de este campo (Ctrl + Ins)',\n insertSub: 'Seleccione el tipo de campo a insertar',\n object: 'Objeto',\n ok: 'Ok',\n redo: 'Rehacer (Ctrl+Mayús+Z)',\n removeText: 'Eliminar',\n removeTitle: 'Eliminar campos seleccionados (Ctrl+Supr)',\n removeField: 'Eliminar este campo (Ctrl+Supr)',\n repairTitle: 'Reparar JSON: corrija comillas y caracteres de escape, elimine comentarios y notación JSONP, convierta objetos JavaScript en JSON.',\n searchTitle: 'Campos de búsqueda y valores',\n searchNextResultTitle: 'Siguiente resultado (Entrar)',\n searchPreviousResultTitle: 'Resultado anterior (Shift + Enter)',\n selectNode: 'Seleccione un nodo...',\n showAll: 'mostrar todo',\n showMore: 'mostrar más',\n showMoreStatus: 'mostrando ${visibleChilds} de ${totalChilds} elementos.',\n sort: 'Ordenar',\n sortTitle: 'Ordene los hijos de este ${type}',\n sortTitleShort: 'Ordenar contenidos',\n sortFieldLabel: 'Campo:',\n sortDirectionLabel: 'Dirección:',\n sortFieldTitle: 'Seleccione el campo anidado por el cual ordenar la matriz u objeto',\n sortAscending: 'Ascendente',\n sortAscendingTitle: 'Ordenar el campo seleccionado en orden ascendente',\n sortDescending: 'Descendente',\n sortDescendingTitle: 'Ordenar por el campo seleccionado, en orden descendente',\n string: 'Texto',\n transform: 'Transformar',\n transformTitle: 'Filtrar, ordenar o transformar los hijos de este ${type}',\n transformTitleShort: 'Filtrar, ordenar o transformar contenidos',\n extract: 'Extraer',\n extractTitle: 'Extrae este ${type}',\n transformQueryTitle: 'Ingrese una consulta JMESPath',\n transformWizardLabel: 'Wizard',\n transformWizardFilter: 'Filtro',\n transformWizardSortBy: 'Ordenar por',\n transformWizardSelectFields: 'Seleccione un campo',\n transformQueryLabel: 'Consulta',\n transformPreviewLabel: 'Vista Previa',\n type: 'Tipo',\n typeTitle: 'Cambiar el tipo de campo',\n openUrl: 'Ctrl+Click o Ctrl+Enter para abrir la URL en una nueva ventana',\n undo: 'Deshacer la última acción (Ctrl+Z)',\n validationCannotMove: 'No se puede mover un campo a un hijo de sà mismo.',\n autoType: 'Field type \"auto\". ' + 'The field type is automatically determined from the value ' + 'and can be a string, number, boolean, or null.',\n objectType: 'Tipo de campo \"objeto\". ' + ' Un objeto contiene un conjunto desordenado de pares clave/valor.',\n arrayType: 'Tipo de campo \"matriz\". ' + ' Una matriz contiene una colección ordenada de valores.',\n stringType: 'Tipo de campo \"cadena\". ' + ' El tipo de campo no se determina a partir del valor, ' + ' pero siempre se devuelve como una cadena.',\n modeEditorTitle: 'Cambiar modo de editor',\n modeCodeText: 'Codigo',\n modeCodeTitle: 'Cambiar al resaltador de código',\n modeFormText: 'Formulario',\n modeFormTitle: 'Cambiar al editor de formularios',\n modeTextText: 'Texto',\n modeTextTitle: 'Cambiar al editor de texto sin formato',\n modeTreeText: 'Arbol',\n modeTreeTitle: 'Cambiar al editor de árbol',\n modeViewText: 'Vista',\n modeViewTitle: 'Cambiar a la vista de árbol',\n modePreviewText: 'Vista Previa',\n modePreviewTitle: 'Cambiar al modo de vista previa',\n examples: 'Ejemplos',\n \"default\": 'Predeterminado',\n containsInvalidProperties: 'Contiene propiedades no validas',\n containsInvalidItems: 'Contiene items no validos'\n },\n 'zh-CN': {\n array: '数组',\n auto: '自动',\n appendText: 'è¿½åŠ ',\n appendTitle: '在æ¤å—段åŽè¿½åŠ 一个类型为“autoâ€çš„æ–°å—段 (Ctrl+Shift+Ins)',\n appendSubmenuTitle: '选择è¦è¿½åŠ çš„å—段类型',\n appendTitleAuto: 'è¿½åŠ ç±»åž‹ä¸ºâ€œautoâ€çš„æ–°å—段 (Ctrl+Shift+Ins)',\n ascending: 'å‡åº',\n ascendingTitle: 'å‡åºæŽ’列${type}çš„å节点',\n actionsMenu: '点击打开动作èœå•(Ctrl+M)',\n cannotParseFieldError: 'æ— æ³•å°†å—段解æžä¸ºJSON',\n cannotParseValueError: 'æ— æ³•å°†å€¼è§£æžä¸ºJSON',\n collapseAll: '缩进所有å—段',\n compactTitle: '压缩JSONæ•°æ®ï¼Œåˆ é™¤æ‰€æœ‰ç©ºæ ¼ (Ctrl+Shift+I)',\n descending: 'é™åº',\n descendingTitle: 'é™åºæŽ’列${type}çš„å节点',\n drag: '拖拽移动该节点(Alt+Shift+Arrows)',\n duplicateKey: 'é‡å¤é”®',\n duplicateText: 'å¤åˆ¶',\n duplicateTitle: 'å¤åˆ¶é€‰ä¸å—段(Ctrl+D)',\n duplicateField: 'å¤åˆ¶è¯¥å—段(Ctrl+D)',\n duplicateFieldError: 'é‡å¤çš„å—段å称',\n empty: '清空',\n expandAll: '展开所有å—段',\n expandTitle: '点击 展开/收缩 该å—段(Ctrl+E). \\n' + 'Ctrl+Click 展开/收缩 包å«æ‰€æœ‰å节点.',\n formatTitle: '使用适当的缩进和æ¢è¡Œç¬¦æ ¼å¼åŒ–JSONæ•°æ® (Ctrl+I)',\n insert: 'æ’å…¥',\n insertTitle: '在æ¤å—段å‰æ’入类型为“autoâ€çš„æ–°å—段 (Ctrl+Ins)',\n insertSub: '选择è¦æ’入的å—段类型',\n object: '对象',\n ok: 'Ok',\n redo: 'é‡åš (Ctrl+Shift+Z)',\n removeText: '移除',\n removeTitle: '移除选ä¸å—段 (Ctrl+Del)',\n removeField: '移除该å—段 (Ctrl+Del)',\n repairTitle: 'ä¿®å¤JSON:修å¤å¼•å·å’Œè½¬ä¹‰ç¬¦ï¼Œåˆ 除注释和JSONP表示法,将JavaScript对象转æ¢ä¸ºJSON。',\n selectNode: '选择一个节点...',\n showAll: '展示全部',\n showMore: '展示更多',\n showMoreStatus: '显示${totalChilds}çš„${visibleChilds}项目.',\n sort: '排åº',\n sortTitle: '排åº${type}çš„å节点',\n sortTitleShort: '内容排åº',\n sortFieldLabel: 'å—段:',\n sortDirectionLabel: 'æ–¹å‘:',\n sortFieldTitle: '选择用于对数组或对象排åºçš„嵌套å—段',\n sortAscending: 'å‡åºæŽ’åº',\n sortAscendingTitle: '按照该å—段å‡åºæŽ’åº',\n sortDescending: 'é™åºæŽ’åº',\n sortDescendingTitle: '按照该å—段é™åºæŽ’åº',\n string: 'å—符串',\n transform: 'å˜æ¢',\n transformTitle: 'ç›é€‰ï¼ŒæŽ’åºï¼Œæˆ–者转æ¢${type}çš„å节点',\n transformTitleShort: 'ç›é€‰ï¼ŒæŽ’åºï¼Œæˆ–者转æ¢å†…容',\n extract: 'æå–',\n extractTitle: 'æå–这个 ${type}',\n transformQueryTitle: '输入JMESPath查询',\n transformWizardLabel: 'å‘导',\n transformWizardFilter: 'ç›é€‰',\n transformWizardSortBy: '排åº',\n transformWizardSelectFields: '选择å—段',\n transformQueryLabel: '查询',\n transformPreviewLabel: '预览',\n type: '类型',\n typeTitle: '更改å—段类型',\n openUrl: 'Ctrl+Click 或者 Ctrl+Enter 在新窗å£æ‰“开链接',\n undo: '撤销上次动作 (Ctrl+Z)',\n validationCannotMove: 'æ— æ³•å°†å—段移入其å节点',\n autoType: 'å—段类型 \"auto\". ' + 'å—段类型由值自动确定 ' + 'å¯ä»¥ä¸º string,number,boolean,或者 null.',\n objectType: 'å—段类型 \"object\". ' + '对象包å«ä¸€ç»„æ— åºçš„é”®/值对.',\n arrayType: 'å—段类型 \"array\". ' + '数组包å«å€¼çš„有åºé›†åˆ.',\n stringType: 'å—段类型 \"string\". ' + 'å—段类型由值自动确定,' + '但始终作为å—符串返回.',\n modeCodeText: '代ç ',\n modeCodeTitle: '切æ¢è‡³ä»£ç 高亮',\n modeFormText: '表å•',\n modeFormTitle: '切æ¢è‡³è¡¨å•ç¼–辑',\n modeTextText: '文本',\n modeTextTitle: '切æ¢è‡³æ–‡æœ¬ç¼–辑',\n modeTreeText: 'æ ‘',\n modeTreeTitle: '切æ¢è‡³æ ‘编辑',\n modeViewText: '视图',\n modeViewTitle: '切æ¢è‡³æ ‘视图',\n modePreviewText: '预览',\n modePreviewTitle: '切æ¢è‡³é¢„览模å¼',\n examples: '例å',\n \"default\": '缺çœ',\n containsInvalidProperties: '包å«æ— 效的属性',\n containsInvalidItems: '包å«æ— 效项目'\n },\n 'pt-BR': {\n array: 'Lista',\n auto: 'Automatico',\n appendText: 'Adicionar',\n appendTitle: 'Adicionar novo campo com tipo \\'auto\\' depois deste campo (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Selecione o tipo do campo a ser adicionado',\n appendTitleAuto: 'Adicionar novo campo com tipo \\'auto\\' (Ctrl+Shift+Ins)',\n ascending: 'Ascendente',\n ascendingTitle: 'Organizar filhor do tipo ${type} em crescente',\n actionsMenu: 'Clique para abrir o menu de ações (Ctrl+M)',\n cannotParseFieldError: 'Não é possÃvel analisar o campo no JSON',\n cannotParseValueError: 'Não é possÃvel analisar o valor em JSON',\n collapseAll: 'Fechar todos campos',\n compactTitle: 'Dados JSON compactos, remova todos os espaços em branco (Ctrl+Shift+I)',\n descending: 'Descendente',\n descendingTitle: 'Organizar o filhos do tipo ${type} em decrescente',\n duplicateKey: 'chave duplicada',\n drag: 'Arraste para mover este campo (Alt+Shift+Arrows)',\n duplicateText: 'Duplicar',\n duplicateTitle: 'Duplicar campos selecionados (Ctrl+D)',\n duplicateField: 'Duplicar este campo (Ctrl+D)',\n duplicateFieldError: 'Nome do campo duplicado',\n empty: 'vazio',\n expandAll: 'Expandir todos campos',\n expandTitle: 'Clique para expandir/encolher este campo (Ctrl+E). \\n' + 'Ctrl+Click para expandir/encolher incluindo todos os filhos.',\n formatTitle: 'Formate dados JSON, com recuo e feeds de linha adequados (Ctrl+I)',\n insert: 'Inserir',\n insertTitle: 'Inserir um novo campo do tipo \\'auto\\' antes deste campo (Ctrl+Ins)',\n insertSub: 'Selecionar o tipo de campo a ser inserido',\n object: 'Objeto',\n ok: 'Ok',\n redo: 'Refazer (Ctrl+Shift+Z)',\n removeText: 'Remover',\n removeTitle: 'Remover campos selecionados (Ctrl+Del)',\n removeField: 'Remover este campo (Ctrl+Del)',\n repairTitle: 'Repare JSON: corrija aspas e caracteres de escape, remova comentários e notação JSONP, transforme objetos JavaScript em JSON.',\n selectNode: 'Selecione um nódulo...',\n showAll: 'mostrar todos',\n showMore: 'mostrar mais',\n showMoreStatus: 'exibindo ${visibleChilds} de ${totalChilds} itens.',\n sort: 'Organizar',\n sortTitle: 'Organizar os filhos deste ${type}',\n sortTitleShort: 'Organizar os filhos',\n sortFieldLabel: 'Campo:',\n sortDirectionLabel: 'Direção:',\n sortFieldTitle: 'Selecione um campo filho pelo qual ordenar o array ou objeto',\n sortAscending: 'Ascendente',\n sortAscendingTitle: 'Ordenar o campo selecionado por ordem ascendente',\n sortDescending: 'Descendente',\n sortDescendingTitle: 'Ordenar o campo selecionado por ordem descendente',\n string: 'Texto',\n transform: 'Transformar',\n transformTitle: 'Filtrar, ordenar ou transformar os filhos deste ${type}',\n transformTitleShort: 'Filtrar, ordenar ou transformar conteúdos',\n transformQueryTitle: 'Insira uma expressão JMESPath',\n transformWizardLabel: 'Assistente',\n transformWizardFilter: 'Filtro',\n transformWizardSortBy: 'Ordenar por',\n transformWizardSelectFields: 'Selecionar campos',\n transformQueryLabel: 'Expressão',\n transformPreviewLabel: 'Visualizar',\n type: 'Tipo',\n typeTitle: 'Mudar o tipo deste campo',\n openUrl: 'Ctrl+Click ou Ctrl+Enter para abrir link em nova janela',\n undo: 'Desfazer último ação (Ctrl+Z)',\n validationCannotMove: 'Não pode mover um campo como filho dele mesmo',\n autoType: 'Campo do tipo \"auto\". ' + 'O tipo do campo é determinao automaticamente a partir do seu valor ' + 'e pode ser texto, número, verdade/falso ou nulo.',\n objectType: 'Campo do tipo \"objeto\". ' + 'Um objeto contém uma lista de pares com chave e valor.',\n arrayType: 'Campo do tipo \"lista\". ' + 'Uma lista contem uma coleção de valores ordenados.',\n stringType: 'Campo do tipo \"string\". ' + 'Campo do tipo nao é determinado através do seu valor, ' + 'mas sempre retornara um texto.',\n examples: 'Exemplos',\n \"default\": 'Revelia',\n containsInvalidProperties: 'Contém propriedades inválidas',\n containsInvalidItems: 'Contém itens inválidos'\n },\n tr: {\n array: 'Dizin',\n auto: 'Otomatik',\n appendText: 'Ekle',\n appendTitle: 'Bu alanın altına \\'otomatik\\' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Eklenecek alanın tipini seç',\n appendTitleAuto: '\\'Otomatik\\' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)',\n ascending: 'Artan',\n ascendingTitle: '${type}\\'ın alt tiplerini artan düzende sırala',\n actionsMenu: 'Aksiyon menüsünü açmak için tıklayın (Ctrl+M)',\n collapseAll: 'Tüm alanları kapat',\n descending: 'Azalan',\n descendingTitle: '${type}\\'ın alt tiplerini azalan düzende sırala',\n drag: 'Bu alanı taşımak için sürükleyin (Alt+Shift+Arrows)',\n duplicateKey: 'Var olan anahtar',\n duplicateText: 'AÅŸağıya kopyala',\n duplicateTitle: 'Seçili alanlardan bir daha oluÅŸtur (Ctrl+D)',\n duplicateField: 'Bu alandan bir daha oluÅŸtur (Ctrl+D)',\n duplicateFieldError: 'Duplicate field name',\n cannotParseFieldError: 'Alan JSON\\'a ayrıştırılamıyor',\n cannotParseValueError: 'JSON\\'a deÄŸer ayrıştırılamıyor',\n empty: 'boÅŸ',\n expandAll: 'Tüm alanları aç',\n expandTitle: 'Bu alanı açmak/kapatmak için tıkla (Ctrl+E). \\n' + 'Alt alanlarda dahil tüm alanları açmak için Ctrl+Click ',\n insert: 'Ekle',\n insertTitle: 'Bu alanın üstüne \\'otomatik\\' tipinde yeni bir alan ekle (Ctrl+Ins)',\n insertSub: 'Araya eklenecek alanın tipini seç',\n object: 'Nesne',\n ok: 'Tamam',\n redo: 'Yeniden yap (Ctrl+Shift+Z)',\n removeText: 'Kaldır',\n removeTitle: 'Seçilen alanları kaldır (Ctrl+Del)',\n removeField: 'Bu alanı kaldır (Ctrl+Del)',\n selectNode: 'Bir nesne seç...',\n showAll: 'tümünü göster',\n showMore: 'daha fazla göster',\n showMoreStatus: '${totalChilds} alanın ${visibleChilds} alt alanları gösteriliyor',\n sort: 'Sırala',\n sortTitle: '${type}\\'ın alt alanlarını sırala',\n sortTitleShort: 'İçerikleri sırala',\n sortFieldLabel: 'Alan:',\n sortDirectionLabel: 'Yön:',\n sortFieldTitle: 'Diziyi veya nesneyi sıralamak için iç içe geçmiÅŸ alanı seçin',\n sortAscending: 'Artan',\n sortAscendingTitle: 'Seçili alanı artan düzende sırala',\n sortDescending: 'Azalan',\n sortDescendingTitle: 'Seçili alanı azalan düzende sırala',\n string: 'Karakter Dizisi',\n transform: 'Dönüştür',\n transformTitle: '${type}\\'ın alt alanlarını filtrele, sırala veya dönüştür',\n transformTitleShort: 'İçerikleri filterele, sırala veya dönüştür',\n transformQueryTitle: 'JMESPath sorgusu gir',\n transformWizardLabel: 'Sihirbaz',\n transformWizardFilter: 'Filtre',\n transformWizardSortBy: 'Sırala',\n transformWizardSelectFields: 'Alanları seç',\n transformQueryLabel: 'Sorgu',\n transformPreviewLabel: 'Önizleme',\n type: 'Tip',\n typeTitle: 'Bu alanın tipini deÄŸiÅŸtir',\n openUrl: 'URL\\'i yeni bir pencerede açmak için Ctrl+Click veya Ctrl+Enter',\n undo: 'Son deÄŸiÅŸikliÄŸi geri al (Ctrl+Z)',\n validationCannotMove: 'Alt alan olarak taşınamıyor',\n autoType: 'Alan tipi \"otomatik\". ' + 'Alan türü otomatik olarak deÄŸerden belirlenir' + 've bir dize, sayı, boolean veya null olabilir.',\n objectType: 'Alan tipi \"nesne\". ' + 'Bir nesne, sıralanmamış bir anahtar / deÄŸer çifti kümesi içerir.',\n arrayType: 'Alan tipi \"dizi\". ' + 'Bir dizi, düzenli deÄŸerler koleksiyonu içerir.',\n stringType: 'Alan tipi \"karakter dizisi\". ' + 'Alan türü deÄŸerden belirlenmez,' + 'ancak her zaman karakter dizisi olarak döndürülür.',\n modeCodeText: 'Kod',\n modeCodeTitle: 'Kod vurgulayıcıya geç',\n modeFormText: 'Form',\n modeFormTitle: 'Form düzenleyiciye geç',\n modeTextText: 'Metin',\n modeTextTitle: 'Düz metin düzenleyiciye geç',\n modeTreeText: 'AÄŸaç',\n modeTreeTitle: 'AÄŸaç düzenleyiciye geç',\n modeViewText: 'Görünüm',\n modeViewTitle: 'AÄŸaç görünümüne geç',\n examples: 'Örnekler',\n \"default\": 'Varsayılan',\n containsInvalidProperties: 'Geçersiz özellikler içeriyor',\n containsInvalidItems: 'Geçersiz öğeler içeriyor'\n },\n ja: {\n array: 'é…列',\n auto: 'オート',\n appendText: 'è¿½åŠ ',\n appendTitle: '次ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«\"オート\"ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’è¿½åŠ (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'è¿½åŠ ã™ã‚‹ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®åž‹ã‚’é¸æŠžã—ã¦ãã ã•ã„',\n appendTitleAuto: '\"オート\"ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’è¿½åŠ (Ctrl+Shift+Ins)',\n ascending: 'æ˜‡é †',\n ascendingTitle: '${type}ã®åè¦ç´ ã‚’æ˜‡é †ã«ä¸¦ã¹æ›¿ãˆ',\n actionsMenu: 'クリックã—ã¦ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é–‹ã (Ctrl+M)',\n collapseAll: 'ã™ã¹ã¦ã‚’折りãŸãŸã‚€',\n descending: 'é™é †',\n descendingTitle: '${type}ã®åè¦ç´ ã‚’é™é †ã«ä¸¦ã¹æ›¿ãˆ',\n drag: 'ドラッグã—ã¦é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’移動 (Alt+Shift+Arrows)',\n duplicateKey: '複製ã‚ー',\n duplicateText: '複製',\n duplicateTitle: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’複製 (Ctrl+D)',\n duplicateField: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’複製 (Ctrl+D)',\n duplicateFieldError: 'フィールドåãŒé‡è¤‡ã—ã¦ã„ã¾ã™',\n cannotParseFieldError: 'JSONã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’解æžã§ãã¾ã›ã‚“',\n cannotParseValueError: 'JSONã®å€¤ã‚’解æžã§ãã¾ã›ã‚“',\n empty: '空',\n expandAll: 'ã™ã¹ã¦ã‚’展開',\n expandTitle: 'クリックã—ã¦ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’展開/折りãŸãŸã‚€ (Ctrl+E). \\n' + 'Ctrl+Click ã§ã™ã¹ã¦ã®åè¦ç´ を展開/折りãŸãŸã‚€',\n insert: '挿入',\n insertTitle: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å‰ã«æ–°ã—ã„フィールドを挿入 (Ctrl+Ins)',\n insertSub: '挿入ã™ã‚‹ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®åž‹ã‚’é¸æŠž',\n object: 'オブジェクト',\n ok: '実行',\n redo: 'ã‚„ã‚Šç›´ã™ (Ctrl+Shift+Z)',\n removeText: '削除',\n removeTitle: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’削除 (Ctrl+Del)',\n removeField: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’削除 (Ctrl+Del)',\n selectNode: 'ノードをé¸æŠž...',\n showAll: 'ã™ã¹ã¦ã‚’表示',\n showMore: 'ã‚‚ã£ã¨è¦‹ã‚‹',\n showMoreStatus: '${totalChilds}個ã®ã‚¢ã‚¤ãƒ†ãƒ ã®ã†ã¡ ${visibleChilds}個を表示ã—ã¦ã„ã¾ã™ã€‚',\n sort: '並ã¹æ›¿ãˆ',\n sortTitle: '${type}ã®åè¦ç´ を並ã¹æ›¿ãˆ',\n sortTitleShort: '並ã¹æ›¿ãˆ',\n sortFieldLabel: 'フィールド:',\n sortDirectionLabel: 'é †åº:',\n sortFieldTitle: 'é…列ã¾ãŸã¯ã‚ªãƒ–ジェクトを並ã³æ›¿ãˆã‚‹ãŸã‚ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’é¸æŠž',\n sortAscending: 'æ˜‡é †',\n sortAscendingTitle: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’æ˜‡é †ã«ä¸¦ã³æ›¿ãˆ',\n sortDescending: 'é™é †',\n sortDescendingTitle: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’é™é †ã«ä¸¦ã³æ›¿ãˆ',\n string: 'æ–‡å—列',\n transform: '変æ›',\n transformTitle: '${type}ã®åè¦ç´ をフィルター・並ã³æ›¿ãˆãƒ»å¤‰æ›ã™ã‚‹',\n transformTitleShort: '内容をフィルター・並ã³æ›¿ãˆãƒ»å¤‰æ›ã™ã‚‹',\n extract: '抽出',\n extractTitle: '${type}を抽出',\n transformQueryTitle: 'JMESPathクエリを入力',\n transformWizardLabel: 'ウィザード',\n transformWizardFilter: 'フィルター',\n transformWizardSortBy: '並ã³æ›¿ãˆ',\n transformWizardSelectFields: 'フィールドをé¸æŠž',\n transformQueryLabel: 'クエリ',\n transformPreviewLabel: 'プレビュー',\n type: 'åž‹',\n typeTitle: 'é¸æŠžä¸ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®åž‹ã‚’変更',\n openUrl: 'Ctrl+Click ã¾ãŸã¯ Ctrl+Enter 㧠新è¦ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§URLã‚’é–‹ã',\n undo: 'å…ƒã«æˆ»ã™ (Ctrl+Z)',\n validationCannotMove: 'åè¦ç´ ã«ç§»å‹•ã§ãã¾ã›ã‚“ ',\n autoType: 'オート: ' + 'フィールドã®åž‹ã¯å€¤ã‹ã‚‰è‡ªå‹•çš„ã«æ±ºå®šã•ã‚Œã¾ã™ã€‚ ' + '(æ–‡å—列・数値・ブール・null)',\n objectType: 'オブジェクト: ' + 'オブジェクトã¯é †åºãŒæ±ºã¾ã£ã¦ã„ãªã„ã‚ーã¨å€¤ã®ãƒšã‚¢çµ„ã¿åˆã‚ã›ã§ã™ã€‚',\n arrayType: 'é…列: ' + 'é…列ã¯é †åºãŒæ±ºã¾ã£ã¦ã„る値ã®é›†åˆä½“ã§ã™ã€‚',\n stringType: 'æ–‡å—列: ' + 'フィールド型ã¯å€¤ã‹ã‚‰æ±ºå®šã•ã‚Œã¾ã›ã‚“ãŒã€' + '常ã«æ–‡å—列ã¨ã—ã¦è¿”ã•ã‚Œã¾ã™ã€‚',\n modeCodeText: 'コードモード',\n modeCodeTitle: 'ãƒã‚¤ãƒ©ã‚¤ãƒˆãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆ',\n modeFormText: 'フォームモード',\n modeFormTitle: 'フォームモードã«åˆ‡ã‚Šæ›¿ãˆ',\n modeTextText: 'テã‚ストモード',\n modeTextTitle: 'テã‚ストモードã«åˆ‡ã‚Šæ›¿ãˆ',\n modeTreeText: 'ツリーモード',\n modeTreeTitle: 'ツリーモードã«åˆ‡ã‚Šæ›¿ãˆ',\n modeViewText: 'ビューモード',\n modeViewTitle: 'ビューモードã«åˆ‡ã‚Šæ›¿ãˆ',\n modePreviewText: 'プレビュー',\n modePreviewTitle: 'プレビューã«åˆ‡ã‚Šæ›¿ãˆ',\n examples: '例',\n \"default\": 'デフォルト',\n containsInvalidProperties: '無効ãªãƒ—ãƒãƒ‘ティãŒå«ã¾ã‚Œã¦ã„ã¾ã™',\n containsInvalidItems: '無効ãªã‚¢ã‚¤ãƒ†ãƒ ãŒå«ã¾ã‚Œã¦ã„ã¾ã™'\n },\n 'fr-FR': {\n array: 'Liste',\n auto: 'Auto',\n appendText: 'Ajouter',\n appendTitle: 'Ajouter un champ de type \\'auto\\' après ce champ (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Sélectionner le type du champ à ajouter',\n appendTitleAuto: 'Ajouter un champ de type \\'auto\\' (Ctrl+Shift+Ins)',\n ascending: 'Ascendant',\n ascendingTitle: 'Trier les enfants de ce ${type} par ordre ascendant',\n actionsMenu: 'Ouvrir le menu des actions (Ctrl+M)',\n collapseAll: 'Regrouper',\n descending: 'Descendant',\n descendingTitle: 'Trier les enfants de ce ${type} par ordre descendant',\n drag: 'Déplacer (Alt+Shift+Arrows)',\n duplicateKey: 'Dupliquer la clé',\n duplicateText: 'Dupliquer',\n duplicateTitle: 'Dupliquer les champs sélectionnés (Ctrl+D)',\n duplicateField: 'Dupliquer ce champ (Ctrl+D)',\n duplicateFieldError: 'Dupliquer le nom de champ',\n cannotParseFieldError: 'Champ impossible à parser en JSON',\n cannotParseValueError: 'Valeur impossible à parser en JSON',\n empty: 'vide',\n expandAll: 'Étendre',\n expandTitle: 'Étendre/regrouper ce champ (Ctrl+E). \\n' + 'Ctrl+Click pour étendre/regrouper avec tous les champs.',\n insert: 'Insérer',\n insertTitle: 'Insérer un champ de type \\'auto\\' avant ce champ (Ctrl+Ins)',\n insertSub: 'Sélectionner le type de champ à insérer',\n object: 'Objet',\n ok: 'Ok',\n redo: 'Rejouer (Ctrl+Shift+Z)',\n removeText: 'Supprimer',\n removeTitle: 'Supprimer les champs sélectionnés (Ctrl+Del)',\n removeField: 'Supprimer ce champ (Ctrl+Del)',\n searchTitle: 'Rechercher champs et valeurs',\n searchNextResultTitle: 'Résultat suivant (Enter)',\n searchPreviousResultTitle: 'Résultat précédent (Shift + Enter)',\n selectNode: 'Sélectionner un nÅ“ud...',\n showAll: 'voir tout',\n showMore: 'voir plus',\n showMoreStatus: '${visibleChilds} éléments affichés de ${totalChilds}.',\n sort: 'Trier',\n sortTitle: 'Trier les champs de ce ${type}',\n sortTitleShort: 'Trier',\n sortFieldLabel: 'Champ:',\n sortDirectionLabel: 'Direction:',\n sortFieldTitle: 'Sélectionner les champs permettant de trier les listes et objet',\n sortAscending: 'Ascendant',\n sortAscendingTitle: 'Trier les champs sélectionnés par ordre ascendant',\n sortDescending: 'Descendant',\n sortDescendingTitle: 'Trier les champs sélectionnés par ordre descendant',\n string: 'Chaîne',\n transform: 'Transformer',\n transformTitle: 'Filtrer, trier, or transformer les enfants de ce ${type}',\n transformTitleShort: 'Filtrer, trier ou transformer le contenu',\n extract: 'Extraire',\n extractTitle: 'Extraire ce ${type}',\n transformQueryTitle: 'Saisir une requête JMESPath',\n transformWizardLabel: 'Assistant',\n transformWizardFilter: 'Filtrer',\n transformWizardSortBy: 'Trier par',\n transformWizardSelectFields: 'Sélectionner les champs',\n transformQueryLabel: 'Requête',\n transformPreviewLabel: 'Prévisualisation',\n type: 'Type',\n typeTitle: 'Changer le type de ce champ',\n openUrl: 'Ctrl+Click ou Ctrl+Enter pour ouvrir l\\'url dans une autre fenêtre',\n undo: 'Annuler la dernière action (Ctrl+Z)',\n validationCannotMove: 'Cannot move a field into a child of itself',\n autoType: 'Champe de type \"auto\". ' + 'Ce type de champ est automatiquement déterminé en fonction de la valeur ' + 'et peut être de type \"chaîne\", \"nombre\", \"booléen\" ou null.',\n objectType: 'Champ de type \"objet\". ' + 'Un objet contient un ensemble non ordonné de paires clé/valeur.',\n arrayType: 'Champ de type \"liste\". ' + 'Une liste contient une collection ordonnée de valeurs.',\n stringType: 'Champ de type \"chaîne\". ' + 'Ce type de champ n\\'est pas déterminé en fonction de la valeur, ' + 'mais retourne systématiquement une chaîne de caractères.',\n modeEditorTitle: 'Changer mode d\\'édition',\n modeCodeText: 'Code',\n modeCodeTitle: 'Activer surlignage code',\n modeFormText: 'Formulaire',\n modeFormTitle: 'Activer formulaire',\n modeTextText: 'Texte',\n modeTextTitle: 'Activer éditeur texte',\n modeTreeText: 'Arbre',\n modeTreeTitle: 'Activer éditeur arbre',\n modeViewText: 'Lecture seule',\n modeViewTitle: 'Activer vue arbre',\n modePreviewText: 'Prévisualisation',\n modePreviewTitle: 'Activer mode prévisualiser',\n examples: 'Exemples',\n \"default\": 'Défaut',\n containsInvalidProperties: 'Contient des propriétés non valides',\n containsInvalidItems: 'Contient des éléments invalides'\n },\n de: {\n array: 'Auflistung',\n auto: 'Auto',\n appendText: 'anhängen',\n appendTitle: 'Fügen Sie nach diesem Feld ein neues Feld mit dem Typ \\'auto\\' ein (Strg+Umschalt+Ein)',\n appendSubmenuTitle: 'Wählen Sie den Typ des neuen Feldes',\n appendTitleAuto: 'Ein neues Feld vom Typ \\'auto\\' hinzufügen (Strg+Umschalt+Ein)',\n ascending: 'Aufsteigend',\n ascendingTitle: 'Sortieren Sie die Elemente dieses ${type} in aufsteigender Reihenfolge',\n actionsMenu: 'Klicken Sie zum Öffnen des Aktionsmenüs (Strg+M)',\n cannotParseFieldError: 'Feld kann nicht in JSON geparst werden',\n cannotParseValueError: 'Wert kann nicht in JSON geparst werden',\n collapseAll: 'Alle Felder zuklappen',\n compactTitle: 'JSON-Daten verdichten, alle Leerzeichen entfernen (Strg+Umschalt+\\\\)',\n descending: 'Absteigend',\n descendingTitle: 'Sortieren Sie die Elemente dieses ${type} in absteigender Reihenfolge',\n drag: 'Ziehen, um dieses Feld zu verschieben (Alt+Umschalt+Pfeile)',\n duplicateKey: 'Doppelter Schlüssel',\n duplicateText: 'Duplikat',\n duplicateTitle: 'Ausgewählte Felder duplizieren (Strg+D)',\n duplicateField: 'Dieses Feld duplizieren (Strg+D)',\n duplicateFieldError: 'Doppelter Feldname',\n empty: 'leer',\n expandAll: 'Alle Felder anzeigen',\n expandTitle: 'Klicken Sie, um dieses Feld zu erweitern/zu kollabieren (Strg+E). \\nStrg+Klicken Sie, um dieses Feld einschließlich aller Elemente zu erweitern/zu kollabieren.',\n formatTitle: 'JSON-Daten mit korrekter Einrückung und Zeilenvorschüben formatieren (Strg+\\\\)',\n insert: 'einfügen',\n insertTitle: 'Fügen Sie vor diesem Feld ein neues Feld mit dem Typ \\'auto\\' ein (Strg+Einfg)',\n insertSub: 'Wählen Sie den Typ des neuen Feldes',\n object: 'Objekt',\n ok: 'Ok',\n redo: 'Wiederholen (Strg+Umschalt+Z)',\n removeText: 'entfernen',\n removeTitle: 'Ausgewählte Felder entfernen (Strg+Entf)',\n removeField: 'Dieses Feld entfernen (Strg+Entf)',\n repairTitle: 'JSON reparieren: Anführungszeichen und Escape-Zeichen korrigieren, Kommentare und JSONP-Notation entfernen, JavaScript-Objekte in JSON umwandeln.',\n searchTitle: 'Suchfelder und Werte',\n searchNextResultTitle: 'Nächstes Ergebnis (Enter)',\n searchPreviousResultTitle: 'Vorheriges Ergebnis (Umschalt + Eingabe)',\n selectNode: 'Wählen Sie einen Knoten aus...',\n showAll: 'alle anzeigen',\n showMore: 'mehr anzeigen',\n showMoreStatus: 'Anzeige von ${visibleChilds} von ${totalChilds}-Elementen.',\n sort: 'Sortieren',\n sortTitle: 'Sortieren Sie die Elemente dieses ${type}',\n sortTitleShort: 'Inhalt sortieren',\n sortFieldLabel: 'Feld:',\n sortDirectionLabel: 'Richtung:',\n sortFieldTitle: 'Wählen Sie das verschachtelte Feld, nach dem das Array oder Objekt sortiert werden soll.',\n sortAscending: 'Aufsteigend',\n sortAscendingTitle: 'Sortieren Sie das ausgewählte Feld in aufsteigender Reihenfolge',\n sortDescending: 'Absteigend',\n sortDescendingTitle: 'Sortieren Sie das ausgewählte Feld in absteigender Reihenfolge',\n string: 'Zeichenfolge',\n transform: 'Verwandeln',\n transformTitle: 'Die Elemente dieses ${type} filtern, sortieren oder transformieren',\n transformTitleShort: 'Inhalte filtern, sortieren oder transformieren',\n extract: 'Auszug',\n extractTitle: 'Extrahieren Sie diesen ${type}',\n transformQueryTitle: 'Eine JMESPath-Abfrage eingeben',\n transformWizardLabel: 'Zauberer',\n transformWizardFilter: 'Filter',\n transformWizardSortBy: 'Sortieren nach',\n transformWizardSelectFields: 'Felder auswählen',\n transformQueryLabel: 'Anfrage',\n transformPreviewLabel: 'Vorschau',\n type: 'Geben Sie ein.',\n typeTitle: 'Ändern Sie den Typ dieses Feldes',\n openUrl: 'Strg+Klicken oder Strg+Eingabe, um die URL in einem neuen Fenster zu öffnen',\n undo: 'Letzte Aktion rückgängig machen (Strg+Z)',\n validationCannotMove: 'Kann ein Feld nicht in ein Kind seiner selbst verschieben',\n autoType: 'Feldtyp \"auto\". Der Feldtyp wird automatisch aus dem Wert bestimmt und kann ein String, eine Zahl, boolesch oder null sein.',\n objectType: 'Feldtyp \"Objekt\". Ein Objekt enthält eine ungeordnete Menge von Schlüssel/Wert-Paaren.',\n arrayType: 'Feldtyp \"Array\". Ein Array enthält eine geordnete Sammlung von Werten.',\n stringType: 'Feldtyp \"Zeichenfolge\". Der Feldtyp wird nicht aus dem Wert bestimmt, sondern immer als Zeichenfolge zurückgegeben.',\n modeEditorTitle: 'Editor-Modus umschalten',\n modeCodeText: 'Code',\n modeCodeTitle: 'Umschalten auf Code-Highlighter',\n modeFormText: 'Formular',\n modeFormTitle: 'Zum Formular-Editor wechseln',\n modeTextText: 'Text',\n modeTextTitle: 'Zum Editor für einfachen Text wechseln',\n modeTreeText: 'Baum',\n modeTreeTitle: 'Zum Baum-Editor wechseln',\n modeViewText: 'Siehe',\n modeViewTitle: 'Zur Baumansicht wechseln',\n modePreviewText: 'Vorschau',\n modePreviewTitle: 'In den Vorschau-Modus wechseln',\n examples: 'Beispiele',\n \"default\": 'Standardmäßig',\n containsInvalidProperties: 'Enthält ungültige Eigenschaften',\n containsInvalidItems: 'Enthält ungültige Elemente'\n },\n ru: {\n array: 'МаÑÑив',\n auto: 'Ðвто',\n appendText: 'Добавить',\n appendTitle: 'Добавить новое поле Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ \\'авто\\' поÑле Ñтого Ð¿Ð¾Ð»Ñ (Ctrl+Shift+Ins)',\n appendSubmenuTitle: 'Выбрать тип Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ',\n appendTitleAuto: 'Добавить новое поле Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ \\'авто\\' (Ctrl+Shift+Ins)',\n ascending: 'По возраÑтанию',\n ascendingTitle: 'Сортировать ${type} по возраÑтанию',\n actionsMenu: 'Ðажмите Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¼ÐµÐ½ÑŽ дейÑтвий (Ctrl+M)',\n cannotParseFieldError: 'Ðевозможно преобразовать поле в JSON',\n cannotParseValueError: 'Ðевозможно преобразовать значение в JSON',\n collapseAll: 'Свернуть вÑе',\n compactTitle: 'ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ JSON (Ctrl+Shift+I)',\n descending: 'По убыванию',\n descendingTitle: 'Сортировать ${type} по убыванию',\n drag: 'ПотÑните Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñтого Ð¿Ð¾Ð»Ñ (Alt+Shift+Arrows)',\n duplicateKey: 'повторÑющийÑÑ ÐºÐ»ÑŽÑ‡',\n duplicateText: 'Дублировать',\n duplicateTitle: 'Дублирование полей (Ctrl+D)',\n duplicateField: 'Дублировать поле (Ctrl+D)',\n duplicateFieldError: 'Дублирование Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ñ',\n empty: 'пуÑтой',\n expandAll: 'Развернуть вÑе',\n expandTitle: 'Ðажмите Ð´Ð»Ñ Ñ€Ð°ÑкрытиÑ/ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ð»Ñ (Ctrl+E)\\n' + 'или Ctrl+Click Ð´Ð»Ñ Ñ€Ð°ÑкрытиÑ/ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð²Ñех потомков.',\n formatTitle: 'Форматирование JSON (Ctrl+I)',\n insert: 'Ð’Ñтавить',\n insertTitle: 'Ð’Ñтавить новое поле Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ \\'авто\\' перед Ñтим полем (Ctrl+Ins)',\n insertSub: 'Выбрать тип Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð²Ñтавки',\n object: 'Объект',\n ok: 'ОК',\n redo: 'Повторить (Ctrl+Shift+Z)',\n removeText: 'Удалить',\n removeTitle: 'Удалить выбранные Ð¿Ð¾Ð»Ñ (Ctrl+Del)',\n removeField: 'Удалить поле (Ctrl+Del)',\n repairTitle: 'ВоÑÑтановите JSON: иÑправьте кавычки и escape-Ñимволы, удалите комментарии и нотацию JSONP, модифицируйте объекты JavaScript в JSON.',\n searchTitle: 'ПоиÑк',\n searchNextResultTitle: 'Следующий результат (Enter)',\n searchPreviousResultTitle: 'Предыдущий результат (Shift + Enter)',\n selectNode: 'Выбор узла...',\n showAll: 'показать вÑе',\n showMore: 'больше',\n showMoreStatus: '${visibleChilds} из ${totalChilds}',\n sort: 'Сортировка',\n sortTitle: 'Сортировка потомков типа ${type}',\n sortTitleShort: 'Сортировка Ñодержимого',\n sortFieldLabel: 'Поле:',\n sortDirectionLabel: 'Ðаправление:',\n sortFieldTitle: 'Выберите поле Ð´Ð»Ñ Ñортировки маÑÑива или объекта',\n sortAscending: 'По возраÑтанию',\n sortAscendingTitle: 'Сортировка выбранного Ð¿Ð¾Ñ€Ñ Ð¿Ð¾ возраÑтанию',\n sortDescending: 'По убыванию',\n sortDescendingTitle: 'Сортировка выбранного Ð¿Ð¾Ñ€Ñ Ð¿Ð¾ убыванию',\n string: 'Строка',\n transform: 'МодификациÑ',\n transformTitle: 'ФильтрациÑ, Ñортировка или Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… типа ${type}',\n transformTitleShort: 'ФильтрациÑ, Ñортировка или Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…',\n extract: 'Извлечение',\n extractTitle: 'Извлечь тип ${type}',\n transformQueryTitle: 'Введите JMESpath запроÑ',\n transformWizardLabel: 'МаÑтер',\n transformWizardFilter: 'Фильтр',\n transformWizardSortBy: 'Сортировка',\n transformWizardSelectFields: 'ПолÑ',\n transformQueryLabel: 'ЗапроÑ',\n transformPreviewLabel: 'ПроÑмотр',\n type: 'Тип',\n typeTitle: 'Изменить тип Ñтого полÑ',\n openUrl: 'Ctrl+Click или Ctrl+Enter Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ url в новом окне',\n undo: 'Отменить (Ctrl+Z)',\n validationCannotMove: 'Поле не может быть перемещено в потомка',\n autoType: 'Тип Ð¿Ð¾Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки определÑетÑÑ Ð¿Ð¾ значению ' + 'и может быть Ñтрокой, чиÑлом, логичеÑким значением или null.',\n objectType: 'Объект Ñодержит неупорÑдоченный набор пар ключ/значение.',\n arrayType: 'МаÑÑив Ñодержит упорÑдоченный набор значений.',\n stringType: 'Тип Ð¿Ð¾Ð»Ñ Ð½Ðµ определÑетÑÑ Ð¸Ð· значениÑ, ' + 'но вÑегда возвращаетÑÑ ÐºÐ°Ðº Ñтрока.',\n modeEditorTitle: 'Переключение режима редактора',\n modeCodeText: 'Код',\n modeCodeTitle: 'Переключить в режим редактора кода',\n modeFormText: 'Форма',\n modeFormTitle: 'Переключить в режим формы',\n modeTextText: 'ТекÑÑ‚',\n modeTextTitle: 'Переключить в режим редактора текÑта',\n modeTreeText: 'Дерево',\n modeTreeTitle: 'Переключить в режим редактора дерева',\n modeViewText: 'ПроÑмотр дерева',\n modeViewTitle: 'Переключить в режим проÑмотра дерева',\n modePreviewText: 'ПроÑмотр',\n modePreviewTitle: 'Переключить в режим проÑмотра',\n examples: 'Примеры',\n \"default\": 'По умолчанию',\n containsInvalidProperties: 'Содержит недопуÑтимые ÑвойÑтва',\n containsInvalidItems: 'Содержит недопуÑтимые Ñлементы'\n },\n ko: {\n array: 'ë°°ì—´',\n auto: 'ìžë™',\n appendText: '추가',\n appendTitle: 'ì„ íƒí•œ 요소 ì•„ëž˜ì— \"ìžë™\" 요소를 추가합니다. (Ctrl + Shift + Ins)',\n appendSubmenuTitle: 'ì¶”ê°€í• ìš”ì†Œì˜ ìœ í˜•ì„ ì„ íƒí•´ì£¼ì„¸ìš”.',\n appendTitleAuto: '\"ìžë™\" 요소를 추가합니다. (Ctrl + Shift + Ins)',\n ascending: '오름차순',\n ascendingTitle: 'ì„ íƒí•œ ${type}ì˜ í•˜ìœ„ 요소를 오름차순 ì •ë ¬í•©ë‹ˆë‹¤.',\n actionsMenu: '메뉴 열기 (Ctrl + M)',\n cannotParseFieldError: 'JSONì˜ ìš”ì†Œë¥¼ í•´ì„í• ìˆ˜ 없습니다.',\n cannotParseValueError: 'JSONì˜ ê°’ì„ í•´ì„í• ìˆ˜ 없습니다.',\n collapseAll: 'ëª¨ë‘ ì ‘ê¸°',\n compactTitle: 'ëª¨ë“ ê³µë°±ì„ ì œê±°í•˜ì—¬ JSON ë°ì´í„°ë¥¼ 작게 만ë“니다. (Ctrl + Shift + I)',\n descending: '내림차순',\n descendingTitle: 'ì„ íƒí•œ ${type}ì˜ í•˜ìœ„ 요소를 내림차순으로 ì •ë ¬',\n drag: '드래그하여 요소를 ì´ë™í•©ë‹ˆë‹¤. (Alt + Shift + Arrows)',\n duplicateKey: 'ë³µì œí‚¤',\n duplicateText: 'ë³µì œ',\n duplicateTitle: 'ì„ íƒí•œ 요소를 ë³µì œí•©ë‹ˆë‹¤. (Ctrl + D)',\n duplicateField: 'ì„ íƒí•œ 요소를 ë³µì œí•©ë‹ˆë‹¤. (Ctrl + D)',\n duplicateFieldError: '요소 ì´ë¦„ì´ ì¤‘ë³µë˜ì—ˆìŠµë‹ˆë‹¤.',\n empty: '비어있ìŒ',\n expandAll: 'ëª¨ë‘ ì—´ê¸°',\n expandTitle: 'í´ë¦í•˜ì—¬ 요소를 열거나 닫습니다. (Ctrl + E) \\nCtrl + Click으로 ëª¨ë“ í•˜ìœ„ 요소를 열거나 닫습니다.',\n formatTitle: 'ì ì ˆí•œ 들여쓰기 ë° ì¤„ë°”ê¿ˆìœ¼ë¡œ JSON ë°ì´í„°ë¥¼ ì •í˜•í™”í•©ë‹ˆë‹¤. (Ctrl + I)',\n insert: '삽입',\n insertTitle: 'ì„ íƒí•œ 요소 ìœ„ì— ìƒˆìš”ì†Œë¥¼ 삽입합니다. (Ctrl + Ins)',\n insertSub: 'ì‚½ìž…í• ìš”ì†Œì˜ ìœ í˜•ì„ ì„ íƒí•´ì£¼ì„¸ìš”.',\n object: 'ê°ì²´',\n ok: '확ì¸',\n redo: '다시 실행 (Ctrl + Shift + Z)',\n removeText: 'ì‚ì œ',\n removeTitle: 'ì„ íƒí•œ 요소를 ì‚ì œí•©ë‹ˆë‹¤. (Ctrl + Del)',\n removeField: 'ì„ íƒí•œ 요소를 ì‚ì œí•©ë‹ˆë‹¤. (Ctrl + Del)',\n repairTitle: 'JSON êµì •: JSON ë‚´ì˜ ì£¼ì„ê³¼ JSONP í‘œê¸°ë²•ì„ ì§€ìš°ê³ ë”°ì˜´í‘œì™€ ì´ìŠ¤ì¼€ì´í”„ 문ìžë¥¼ ìˆ˜ì •í•©ë‹ˆë‹¤.',\n searchTitle: '요소 ë˜ëŠ” ê°’ 찾기',\n searchNextResultTitle: '다ìŒìœ¼ë¡œ 찾기 (Enter)',\n searchPreviousResultTitle: 'ì´ì „으로 찾기 (Shift + Enter)',\n selectNode: '요소를 ì„ íƒí•´ì£¼ì„¸ìš”...',\n showAll: '모ë‘보기',\n showMore: 'ë”보기',\n showMoreStatus: '${totalChilds} ê°œì˜ í•ëª© 중 ${visibleChilds} 개를 표시합니다.',\n sort: 'ì •ë ¬',\n sortTitle: 'ì„ íƒí•œ ${type}ì˜ í•˜ìœ„ 요소를 ì •ë ¬í•©ë‹ˆë‹¤.',\n sortTitleShort: 'ì •ë ¬',\n sortFieldLabel: '요소:',\n sortDirectionLabel: '순서:',\n sortFieldTitle: 'ë°°ì—´ì´ë‚˜ ê°ì²´ë¥¼ ì •ë ¬í•˜ëŠ” 요소를 ì„ íƒí•´ì£¼ì„¸ìš”.',\n sortAscending: '오름차순',\n sortAscendingTitle: 'ì„ íƒí•œ 요소를 오름차순으로 ì •ë ¬í•©ë‹ˆë‹¤.',\n sortDescending: '내림차순',\n sortDescendingTitle: 'ì„ íƒí•œ 요소를 내림차순으로 ì •ë ¬í•©ë‹ˆë‹¤.',\n string: '문ìž',\n transform: '변환',\n transformTitle: 'ì„ íƒí•œ ${type}ì˜ í•˜ìœ„ 요소를 필터하거나 ì •ë ¬ ë˜ëŠ” 변환합니다.',\n transformTitleShort: 'ë‚´ìš©ì„ í•„í„°í•˜ê±°ë‚˜ ì •ë ¬ ë˜ëŠ” 변환합니다.',\n extract: '추출',\n extractTitle: 'ì„ íƒí•œ ${type}ì˜ ê°’ì„ ìµœìƒìœ„ì— ìœ„ì¹˜ì‹œí‚µë‹ˆë‹¤.',\n transformQueryTitle: 'JMESPath 쿼리를 ìž…ë ¥í•´ì£¼ì„¸ìš”.',\n transformWizardLabel: '마법사',\n transformWizardFilter: 'í•„í„°',\n transformWizardSortBy: 'ì •ë ¬',\n transformWizardSelectFields: '요소를 ì„ íƒí•´ì£¼ì„¸ìš”.',\n transformQueryLabel: '쿼리',\n transformPreviewLabel: '미리보기',\n type: 'ìœ í˜•',\n typeTitle: 'ì„ íƒí•œ ìš”ì†Œì˜ ìœ í˜•ì„ ë³€ê²½í•©ë‹ˆë‹¤.',\n openUrl: 'Ctrl + Click ë˜ëŠ” Ctrl + Enterë¡œ 새 ì°½ì—ì„œ URL 열기',\n undo: '실행 취소 (Ctrl + Z)',\n validationCannotMove: '하위 요소로 ì´ë™í• 수 없습니다.',\n autoType: 'ìžë™: ìš”ì†Œì˜ í˜•ì‹ì´ ê°’ì˜ ìœ í˜•ìœ¼ë¡œ ê²°ì •ë©ë‹ˆë‹¤. 문ìž, 숫ìž, 부울, ë˜ëŠ” null만 허용ë©ë‹ˆë‹¤.',\n objectType: 'ê°ì²´: 순서대로 나열ë˜ì§€ ì•Šì€ ì´ë¦„/ê°’ ìŒìœ¼ë¡œ ì´ë£¨ì–´ì§„ 집합입니다.',\n arrayType: 'ë°°ì—´: 순서대로 ë‚˜ì—´ëœ ê°’ì˜ ì§‘í•©ìž…ë‹ˆë‹¤.',\n stringType: '문ìž: ìš”ì†Œì˜ ìœ í˜•ì´ ê°’ì—ì„œ ê²°ì •ë˜ì§€ 않지만 í•ìƒ 문ìžë¡œ 반환ë©ë‹ˆë‹¤.',\n modeEditorTitle: '편집기 ìœ í˜• 변경',\n modeCodeText: '코드',\n modeCodeTitle: 'í˜•ì‹ êµì •ì„ ë„와주는 ê¸°ëŠ¥ì´ í¬í•¨ëœ ë¬¸ìž íŽ¸ì§‘ê¸°',\n modeFormText: 'ìž…ë ¥ ì–‘ì‹',\n modeFormTitle: 'ì •í•´ì§„ ìš”ì†Œì— ê°’ì„ ìž…ë ¥í•˜ëŠ” 편집기',\n modeTextText: '문ìž',\n modeTextTitle: '단순 ë¬¸ìž íŽ¸ì§‘ê¸°',\n modeTreeText: '트리',\n modeTreeTitle: '트리 구조로 표시ë˜ëŠ” 편집기',\n modeViewText: '보기',\n modeViewTitle: 'ì½ê¸°ì „ìš© 트리 구조로 JSONì„ í‘œì‹œ',\n modePreviewText: '미리보기',\n modePreviewTitle: 'ì½ê¸°ì „ìš© 문ìžë¡œ JSONì„ í‘œì‹œ',\n examples: 'ì˜ˆì œ',\n \"default\": '기본값',\n containsInvalidProperties: 'ìž˜ëª»ëœ ì†ì„±ì´ í¬í•¨ë˜ì–´ 있습니다.',\n containsInvalidItems: 'ìž˜ëª»ëœ í•ëª©ì´ í¬í•¨ë˜ì–´ 있습니다'\n }\n};\n\nvar _locales = Object.keys(_defs);\n\nvar _defaultLang = 'en';\nvar userLang = typeof navigator !== 'undefined' ? navigator.language || navigator.userLanguage : undefined;\n\nvar _lang = _locales.find(function (l) {\n return l === userLang;\n}) || _defaultLang;\n\nfunction setLanguage(lang) {\n if (!lang) {\n return;\n }\n\n var langFound = _locales.find(function (l) {\n return l === lang;\n });\n\n if (langFound) {\n _lang = langFound;\n } else {\n console.error('Language not found');\n }\n}\nfunction setLanguages(languages) {\n if (!languages) {\n return;\n }\n\n var _loop = function _loop(language) {\n var langFound = _locales.find(function (l) {\n return l === language;\n });\n\n if (!langFound) {\n _locales.push(language);\n }\n\n _defs[language] = Object.assign({}, _defs[_defaultLang], _defs[language], languages[language]);\n };\n\n for (var language in languages) {\n _loop(language);\n }\n}\nfunction translate(key, data, lang) {\n if (!lang) {\n lang = _lang;\n }\n\n var text = _defs[lang][key] || _defs[_defaultLang][key] || key;\n\n if (data) {\n for (var dataKey in data) {\n text = text.replace('${' + dataKey + '}', data[dataKey]);\n }\n }\n\n return text;\n}\n\n/***/ }),\n\n/***/ 56:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"J\": function() { return /* binding */ executeQuery; },\n/* harmony export */ \"r\": function() { return /* binding */ createQuery; }\n/* harmony export */ });\n/* harmony import */ var jmespath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(156);\n/* harmony import */ var jmespath__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jmespath__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(791);\n\n\n/**\n * Build a JMESPath query based on query options coming from the wizard\n * @param {JSON} json The JSON document for which to build the query.\n * Used for context information like determining\n * the type of values (string or number)\n * @param {QueryOptions} queryOptions\n * @return {string} Returns a query (as string)\n */\n\nfunction createQuery(json, queryOptions) {\n var sort = queryOptions.sort,\n filter = queryOptions.filter,\n projection = queryOptions.projection;\n var query = '';\n\n if (filter) {\n var examplePath = filter.field !== '@' ? ['0'].concat((0,_util__WEBPACK_IMPORTED_MODULE_1__.parsePath)('.' + filter.field)) : ['0'];\n var exampleValue = (0,_util__WEBPACK_IMPORTED_MODULE_1__.get)(json, examplePath);\n var value1 = typeof exampleValue === 'string' ? filter.value : (0,_util__WEBPACK_IMPORTED_MODULE_1__.parseString)(filter.value);\n query += '[? ' + filter.field + ' ' + filter.relation + ' ' + '`' + JSON.stringify(value1) + '`' + ']';\n } else {\n query += Array.isArray(json) ? '[*]' : '@';\n }\n\n if (sort) {\n if (sort.direction === 'desc') {\n query += ' | reverse(sort_by(@, &' + sort.field + '))';\n } else {\n query += ' | sort_by(@, &' + sort.field + ')';\n }\n }\n\n if (projection) {\n if (query[query.length - 1] !== ']') {\n query += ' | [*]';\n }\n\n if (projection.fields.length === 1) {\n query += '.' + projection.fields[0];\n } else if (projection.fields.length > 1) {\n query += '.{' + projection.fields.map(function (value) {\n var parts = value.split('.');\n var last = parts[parts.length - 1];\n return last + ': ' + value;\n }).join(', ') + '}';\n } else {// values.length === 0\n // ignore\n }\n }\n\n return query;\n}\n/**\n * Execute a JMESPath query\n * @param {JSON} json\n * @param {string} query\n * @return {JSON} Returns the transformed JSON\n */\n\nfunction executeQuery(json, query) {\n return jmespath__WEBPACK_IMPORTED_MODULE_0___default().search(json, query);\n}\n\n/***/ }),\n\n/***/ 987:\n/***/ (function() {\n\nif (typeof Element !== 'undefined') {\n // Polyfill for array remove\n (function () {\n function polyfill(item) {\n if (typeof item !== 'undefined') {\n if ('remove' in item) {\n return;\n }\n\n Object.defineProperty(item, 'remove', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function remove() {\n if (this.parentNode !== undefined) {\n this.parentNode.removeChild(this);\n }\n }\n });\n }\n }\n\n if (typeof window.Element !== 'undefined') {\n polyfill(window.Element.prototype);\n }\n\n if (typeof window.CharacterData !== 'undefined') {\n polyfill(window.CharacterData.prototype);\n }\n\n if (typeof window.DocumentType !== 'undefined') {\n polyfill(window.DocumentType.prototype);\n }\n })();\n} // simple polyfill for Array.findIndex\n\n\nif (!Array.prototype.findIndex) {\n // eslint-disable-next-line no-extend-native\n Object.defineProperty(Array.prototype, 'findIndex', {\n value: function value(predicate) {\n for (var i = 0; i < this.length; i++) {\n var element = this[i];\n\n if (predicate.call(this, element, i, this)) {\n return i;\n }\n }\n\n return -1;\n },\n configurable: true,\n writable: true\n });\n} // Polyfill for Array.find\n\n\nif (!Array.prototype.find) {\n // eslint-disable-next-line no-extend-native\n Object.defineProperty(Array.prototype, 'find', {\n value: function value(predicate) {\n var i = this.findIndex(predicate);\n return this[i];\n },\n configurable: true,\n writable: true\n });\n} // Polyfill for String.trim\n\n\nif (!String.prototype.trim) {\n // eslint-disable-next-line no-extend-native\n String.prototype.trim = function () {\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n };\n}\n\n/***/ }),\n\n/***/ 341:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"previewModeMixins\": function() { return /* binding */ previewModeMixins; }\n});\n\n// EXTERNAL MODULE: ./node_modules/jsonrepair/lib/umd/jsonrepair.min.js\nvar jsonrepair_min = __webpack_require__(928);\nvar jsonrepair_min_default = /*#__PURE__*/__webpack_require__.n(jsonrepair_min);\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(188);\n// EXTERNAL MODULE: ./src/js/ErrorTable.js\nvar ErrorTable = __webpack_require__(436);\n// EXTERNAL MODULE: ./src/js/FocusTracker.js\nvar FocusTracker = __webpack_require__(474);\n;// CONCATENATED MODULE: ./src/js/History.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/**\n * Keep track on any history, be able\n * @param {function} onChange\n * @param {function} calculateItemSize\n * @param {number} limit Maximum size of all items in history\n * @constructor\n */\nvar History = /*#__PURE__*/function () {\n function History(onChange, calculateItemSize, limit) {\n _classCallCheck(this, History);\n\n this.onChange = onChange;\n\n this.calculateItemSize = calculateItemSize || function () {\n return 1;\n };\n\n this.limit = limit;\n this.items = [];\n this.index = -1;\n }\n\n _createClass(History, [{\n key: \"add\",\n value: function add(item) {\n // limit number of items in history so that the total size doesn't\n // always keep at least one item in memory\n while (this._calculateHistorySize() > this.limit && this.items.length > 1) {\n this.items.shift();\n this.index--;\n } // cleanup any redo action that are not valid anymore\n\n\n this.items = this.items.slice(0, this.index + 1);\n this.items.push(item);\n this.index++;\n this.onChange();\n }\n }, {\n key: \"_calculateHistorySize\",\n value: function _calculateHistorySize() {\n var calculateItemSize = this.calculateItemSize;\n var totalSize = 0;\n this.items.forEach(function (item) {\n totalSize += calculateItemSize(item);\n });\n return totalSize;\n }\n }, {\n key: \"undo\",\n value: function undo() {\n if (!this.canUndo()) {\n return;\n }\n\n this.index--;\n this.onChange();\n return this.items[this.index];\n }\n }, {\n key: \"redo\",\n value: function redo() {\n if (!this.canRedo()) {\n return;\n }\n\n this.index++;\n this.onChange();\n return this.items[this.index];\n }\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.index > 0;\n }\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.index < this.items.length - 1;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.items = [];\n this.index = -1;\n this.onChange();\n }\n }]);\n\n return History;\n}();\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(907);\n// EXTERNAL MODULE: ./src/js/jmespathQuery.js\nvar jmespathQuery = __webpack_require__(56);\n// EXTERNAL MODULE: ./src/js/ModeSwitcher.js\nvar ModeSwitcher = __webpack_require__(617);\n// EXTERNAL MODULE: ./src/js/showSortModal.js\nvar showSortModal = __webpack_require__(210);\n// EXTERNAL MODULE: ./src/js/showTransformModal.js + 1 modules\nvar showTransformModal = __webpack_require__(558);\n// EXTERNAL MODULE: ./src/js/textmode.js + 1 modules\nvar textmode = __webpack_require__(956);\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(791);\n;// CONCATENATED MODULE: ./src/js/previewmode.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar previewmode_textmode = textmode.textModeMixins[0].mixin; // create a mixin with the functions for text mode\n\nvar previewmode = {};\n/**\n * Create a JSON document preview, suitable for processing of large documents\n * @param {Element} container\n * @param {Object} [options] Object with options. See docs for details.\n * @private\n */\n\npreviewmode.create = function (container) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof options.statusBar === 'undefined') {\n options.statusBar = true;\n } // setting default for previewmode\n\n\n options.mainMenuBar = options.mainMenuBar !== false;\n options.enableSort = options.enableSort !== false;\n options.enableTransform = options.enableTransform !== false;\n options.createQuery = options.createQuery || jmespathQuery/* createQuery */.r;\n options.executeQuery = options.executeQuery || jmespathQuery/* executeQuery */.J;\n this.options = options; // indentation\n\n if (typeof options.indentation === 'number') {\n this.indentation = Number(options.indentation);\n } else {\n this.indentation = 2; // number of spaces\n } // language\n\n\n (0,i18n/* setLanguages */.cC)(this.options.languages);\n (0,i18n/* setLanguage */.m0)(this.options.language); // determine mode\n\n this.mode = 'preview';\n var me = this;\n this.container = container;\n this.dom = {};\n this.json = undefined;\n this.text = ''; // TODO: JSON Schema support\n // create a debounced validate function\n\n this._debouncedValidate = (0,util.debounce)(this.validate.bind(this), this.DEBOUNCE_INTERVAL);\n this.width = container.clientWidth;\n this.height = container.clientHeight;\n this.frame = document.createElement('div');\n this.frame.className = 'jsoneditor jsoneditor-mode-preview';\n\n this.frame.onclick = function (event) {\n // prevent default submit action when the editor is located inside a form\n event.preventDefault();\n }; // setting the FocusTracker on 'this.frame' to track the editor's focus event\n\n\n var focusTrackerConfig = {\n target: this.frame,\n onFocus: this.options.onFocus || null,\n onBlur: this.options.onBlur || null\n };\n this.frameFocusTracker = new FocusTracker/* FocusTracker */.R(focusTrackerConfig);\n this.content = document.createElement('div');\n this.content.className = 'jsoneditor-outer';\n this.dom.busy = document.createElement('div');\n this.dom.busy.className = 'jsoneditor-busy';\n this.dom.busyContent = document.createElement('span');\n this.dom.busyContent.textContent = 'busy...';\n this.dom.busy.appendChild(this.dom.busyContent);\n this.content.appendChild(this.dom.busy);\n this.dom.previewContent = document.createElement('pre');\n this.dom.previewContent.className = 'jsoneditor-preview';\n this.dom.previewText = document.createTextNode('');\n this.dom.previewContent.appendChild(this.dom.previewText);\n this.content.appendChild(this.dom.previewContent);\n\n if (this.options.mainMenuBar) {\n (0,util.addClassName)(this.content, 'has-main-menu-bar'); // create menu\n\n this.menu = document.createElement('div');\n this.menu.className = 'jsoneditor-menu';\n this.frame.appendChild(this.menu); // create format button\n\n var buttonFormat = document.createElement('button');\n buttonFormat.type = 'button';\n buttonFormat.className = 'jsoneditor-format';\n buttonFormat.title = (0,i18n/* translate */.Iu)('formatTitle');\n this.menu.appendChild(buttonFormat);\n\n buttonFormat.onclick = function handleFormat() {\n me.executeWithBusyMessage(function () {\n try {\n me.format();\n } catch (err) {\n me._onError(err);\n }\n }, 'formatting...');\n }; // create compact button\n\n\n var buttonCompact = document.createElement('button');\n buttonCompact.type = 'button';\n buttonCompact.className = 'jsoneditor-compact';\n buttonCompact.title = (0,i18n/* translate */.Iu)('compactTitle');\n this.menu.appendChild(buttonCompact);\n\n buttonCompact.onclick = function handleCompact() {\n me.executeWithBusyMessage(function () {\n try {\n me.compact();\n } catch (err) {\n me._onError(err);\n }\n }, 'compacting...');\n }; // create sort button\n\n\n if (this.options.enableSort) {\n var _sort = document.createElement('button');\n\n _sort.type = 'button';\n _sort.className = 'jsoneditor-sort';\n _sort.title = (0,i18n/* translate */.Iu)('sortTitleShort');\n\n _sort.onclick = function () {\n me._showSortModal();\n };\n\n this.menu.appendChild(_sort);\n } // create transform button\n\n\n if (this.options.enableTransform) {\n var transform = document.createElement('button');\n transform.type = 'button';\n transform.title = (0,i18n/* translate */.Iu)('transformTitleShort');\n transform.className = 'jsoneditor-transform';\n\n transform.onclick = function () {\n me._showTransformModal();\n };\n\n this.dom.transform = transform;\n this.menu.appendChild(transform);\n } // create repair button\n\n\n var buttonRepair = document.createElement('button');\n buttonRepair.type = 'button';\n buttonRepair.className = 'jsoneditor-repair';\n buttonRepair.title = (0,i18n/* translate */.Iu)('repairTitle');\n this.menu.appendChild(buttonRepair);\n\n buttonRepair.onclick = function () {\n if (me.json === undefined) {\n // only repair if we don't have valid JSON\n me.executeWithBusyMessage(function () {\n try {\n me.repair();\n } catch (err) {\n me._onError(err);\n }\n }, 'repairing...');\n }\n }; // create history and undo/redo buttons\n\n\n if (this.options.history !== false) {\n // default option value is true\n var onHistoryChange = function onHistoryChange() {\n me.dom.undo.disabled = !me.history.canUndo();\n me.dom.redo.disabled = !me.history.canRedo();\n };\n\n var calculateItemSize = function calculateItemSize(item) {\n return (// times two to account for the json object\n item.text.length * 2\n );\n };\n\n this.history = new History(onHistoryChange, calculateItemSize, constants/* PREVIEW_HISTORY_LIMIT */.oW); // create undo button\n\n var undo = document.createElement('button');\n undo.type = 'button';\n undo.className = 'jsoneditor-undo jsoneditor-separator';\n undo.title = (0,i18n/* translate */.Iu)('undo');\n\n undo.onclick = function () {\n var action = me.history.undo();\n\n if (action) {\n me._applyHistory(action);\n }\n };\n\n this.menu.appendChild(undo);\n this.dom.undo = undo; // create redo button\n\n var redo = document.createElement('button');\n redo.type = 'button';\n redo.className = 'jsoneditor-redo';\n redo.title = (0,i18n/* translate */.Iu)('redo');\n\n redo.onclick = function () {\n var action = me.history.redo();\n\n if (action) {\n me._applyHistory(action);\n }\n };\n\n this.menu.appendChild(redo);\n this.dom.redo = redo; // force enabling/disabling the undo/redo button\n\n this.history.onChange();\n } // create mode box\n\n\n if (this.options && this.options.modes && this.options.modes.length) {\n this.modeSwitcher = new ModeSwitcher/* ModeSwitcher */.x(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\n // switch mode and restore focus\n try {\n me.setMode(mode);\n me.modeSwitcher.focus();\n } catch (err) {\n me._onError(err);\n }\n });\n }\n }\n\n this.errorTable = new ErrorTable/* ErrorTable */.Q({\n errorTableVisible: true,\n onToggleVisibility: function onToggleVisibility() {\n me.validate();\n },\n onFocusLine: null,\n onChangeHeight: function onChangeHeight(height) {\n // TODO: change CSS to using flex box, remove setting height using JavaScript\n var statusBarHeight = me.dom.statusBar ? me.dom.statusBar.clientHeight : 0;\n var totalHeight = height + statusBarHeight + 1;\n me.content.style.marginBottom = -totalHeight + 'px';\n me.content.style.paddingBottom = totalHeight + 'px';\n }\n });\n this.frame.appendChild(this.content);\n this.frame.appendChild(this.errorTable.getErrorTable());\n this.container.appendChild(this.frame);\n\n if (options.statusBar) {\n (0,util.addClassName)(this.content, 'has-status-bar');\n var statusBar = document.createElement('div');\n this.dom.statusBar = statusBar;\n statusBar.className = 'jsoneditor-statusbar';\n this.frame.appendChild(statusBar);\n this.dom.fileSizeInfo = document.createElement('span');\n this.dom.fileSizeInfo.className = 'jsoneditor-size-info';\n this.dom.fileSizeInfo.innerText = '';\n statusBar.appendChild(this.dom.fileSizeInfo);\n this.dom.arrayInfo = document.createElement('span');\n this.dom.arrayInfo.className = 'jsoneditor-size-info';\n this.dom.arrayInfo.innerText = '';\n statusBar.appendChild(this.dom.arrayInfo);\n statusBar.appendChild(this.errorTable.getErrorCounter());\n statusBar.appendChild(this.errorTable.getWarningIcon());\n statusBar.appendChild(this.errorTable.getErrorIcon());\n }\n\n this._renderPreview();\n\n this.setSchema(this.options.schema, this.options.schemaRefs);\n};\n\npreviewmode._renderPreview = function () {\n var text = this.getText();\n this.dom.previewText.nodeValue = (0,util.limitCharacters)(text, constants/* MAX_PREVIEW_CHARACTERS */.WF);\n\n if (this.dom.fileSizeInfo) {\n this.dom.fileSizeInfo.innerText = 'Size: ' + (0,util.formatSize)(text.length);\n }\n\n if (this.dom.arrayInfo) {\n if (Array.isArray(this.json)) {\n this.dom.arrayInfo.innerText = 'Array: ' + this.json.length + ' items';\n } else {\n this.dom.arrayInfo.innerText = '';\n }\n }\n};\n/**\n * Handle a change:\n * - Validate JSON schema\n * - Send a callback to the onChange listener if provided\n * @private\n */\n\n\npreviewmode._onChange = function () {\n // validate JSON schema (if configured)\n this._debouncedValidate(); // trigger the onChange callback\n\n\n if (this.options.onChange) {\n try {\n this.options.onChange();\n } catch (err) {\n console.error('Error in onChange callback: ', err);\n }\n } // trigger the onChangeJSON callback\n\n\n if (this.options.onChangeJSON) {\n try {\n this.options.onChangeJSON(this.get());\n } catch (err) {\n console.error('Error in onChangeJSON callback: ', err);\n }\n } // trigger the onChangeText callback\n\n\n if (this.options.onChangeText) {\n try {\n this.options.onChangeText(this.getText());\n } catch (err) {\n console.error('Error in onChangeText callback: ', err);\n }\n }\n};\n/**\n * Open a sort modal\n * @private\n */\n\n\npreviewmode._showSortModal = function () {\n var me = this;\n\n function onSort(json, sortedBy) {\n if (Array.isArray(json)) {\n var sortedArray = (0,util.sort)(json, sortedBy.path, sortedBy.direction);\n me.sortedBy = sortedBy;\n\n me._setAndFireOnChange(sortedArray);\n }\n\n if ((0,util.isObject)(json)) {\n var sortedObject = (0,util.sortObjectKeys)(json, sortedBy.direction);\n me.sortedBy = sortedBy;\n\n me._setAndFireOnChange(sortedObject);\n }\n }\n\n this.executeWithBusyMessage(function () {\n var container = me.options.modalAnchor || constants/* DEFAULT_MODAL_ANCHOR */.qD;\n var json = me.get();\n\n me._renderPreview(); // update array count\n\n\n (0,showSortModal.showSortModal)(container, json, function (sortedBy) {\n me.executeWithBusyMessage(function () {\n onSort(json, sortedBy);\n }, 'sorting...');\n }, me.sortedBy);\n }, 'parsing...');\n};\n/**\n * Open a transform modal\n * @private\n */\n\n\npreviewmode._showTransformModal = function () {\n var _this = this;\n\n this.executeWithBusyMessage(function () {\n var _this$options = _this.options,\n createQuery = _this$options.createQuery,\n executeQuery = _this$options.executeQuery,\n modalAnchor = _this$options.modalAnchor,\n queryDescription = _this$options.queryDescription;\n\n var json = _this.get();\n\n _this._renderPreview(); // update array count\n\n\n (0,showTransformModal.showTransformModal)({\n container: modalAnchor || constants/* DEFAULT_MODAL_ANCHOR */.qD,\n json: json,\n queryDescription: queryDescription,\n // can be undefined\n createQuery: createQuery,\n executeQuery: executeQuery,\n onTransform: function onTransform(query) {\n _this.executeWithBusyMessage(function () {\n var updatedJson = executeQuery(json, query);\n\n _this._setAndFireOnChange(updatedJson);\n }, 'transforming...');\n }\n });\n }, 'parsing...');\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\npreviewmode.destroy = function () {\n if (this.frame && this.container && this.frame.parentNode === this.container) {\n this.container.removeChild(this.frame);\n }\n\n if (this.modeSwitcher) {\n this.modeSwitcher.destroy();\n this.modeSwitcher = null;\n }\n\n this._debouncedValidate = null;\n\n if (this.history) {\n this.history.clear();\n this.history = null;\n } // Removing the FocusTracker set to track the editor's focus event\n\n\n this.frameFocusTracker.destroy();\n};\n/**\n * Compact the code in the text editor\n */\n\n\npreviewmode.compact = function () {\n var json = this.get();\n var text = JSON.stringify(json); // we know that in this case the json is still the same, so we pass json too\n\n this._setTextAndFireOnChange(text, json);\n};\n/**\n * Format the code in the text editor\n */\n\n\npreviewmode.format = function () {\n var json = this.get();\n var text = JSON.stringify(json, null, this.indentation); // we know that in this case the json is still the same, so we pass json too\n\n this._setTextAndFireOnChange(text, json);\n};\n/**\n * Repair the code in the text editor\n */\n\n\npreviewmode.repair = function () {\n var text = this.getText();\n\n try {\n var repairedText = jsonrepair_min_default()(text);\n\n this._setTextAndFireOnChange(repairedText);\n } catch (err) {// repair was not successful, do nothing\n }\n};\n/**\n * Set focus to the editor\n */\n\n\npreviewmode.focus = function () {\n // we don't really have a place to focus,\n // let's focus on the transform button\n this.dom.transform.focus();\n};\n/**\n * Set json data in the editor\n * @param {*} json\n */\n\n\npreviewmode.set = function (json) {\n if (this.history) {\n this.history.clear();\n }\n\n this._set(json);\n};\n/**\n * Update data. Same as calling `set` in text/code mode.\n * @param {*} json\n */\n\n\npreviewmode.update = function (json) {\n this._set(json);\n};\n/**\n * Set json data\n * @param {*} json\n */\n\n\npreviewmode._set = function (json) {\n this.text = undefined;\n this.json = json;\n\n this._renderPreview();\n\n this._pushHistory(); // validate JSON schema\n\n\n this._debouncedValidate();\n};\n\npreviewmode._setAndFireOnChange = function (json) {\n this._set(json);\n\n this._onChange();\n};\n/**\n * Get json data\n * @return {*} json\n */\n\n\npreviewmode.get = function () {\n if (this.json === undefined) {\n var text = this.getText();\n this.json = (0,util.parse)(text); // this can throw an error\n }\n\n return this.json;\n};\n/**\n * Get the text contents of the editor\n * @return {String} jsonText\n */\n\n\npreviewmode.getText = function () {\n if (this.text === undefined) {\n this.text = JSON.stringify(this.json, null, this.indentation);\n\n if (this.options.escapeUnicode === true) {\n this.text = (0,util.escapeUnicodeChars)(this.text);\n }\n }\n\n return this.text;\n};\n/**\n * Set the text contents of the editor\n * @param {String} jsonText\n */\n\n\npreviewmode.setText = function (jsonText) {\n if (this.history) {\n this.history.clear();\n }\n\n this._setText(jsonText);\n};\n/**\n * Update the text contents\n * @param {string} jsonText\n */\n\n\npreviewmode.updateText = function (jsonText) {\n // don't update if there are no changes\n if (this.getText() === jsonText) {\n return;\n }\n\n this._setText(jsonText);\n};\n/**\n * Set the text contents of the editor\n * @param {string} jsonText\n * @param {*} [json] Optional JSON instance of the text\n * @private\n */\n\n\npreviewmode._setText = function (jsonText, json) {\n if (this.options.escapeUnicode === true) {\n this.text = (0,util.escapeUnicodeChars)(jsonText);\n } else {\n this.text = jsonText;\n }\n\n this.json = json;\n\n this._renderPreview();\n\n if (this.json === undefined) {\n var me = this;\n this.executeWithBusyMessage(function () {\n try {\n // force parsing the json now, else it will be done in validate without feedback\n me.json = me.get();\n\n me._renderPreview();\n\n me._pushHistory();\n } catch (err) {// no need to throw an error, validation will show an error\n }\n }, 'parsing...');\n } else {\n this._pushHistory();\n }\n\n this._debouncedValidate();\n};\n/**\n * Set text and fire onChange callback\n * @param {string} jsonText\n * @param {*} [json] Optional JSON instance of the text\n * @private\n */\n\n\npreviewmode._setTextAndFireOnChange = function (jsonText, json) {\n this._setText(jsonText, json);\n\n this._onChange();\n};\n/**\n * Apply history to the current state\n * @param {{json?: JSON, text?: string}} action\n * @private\n */\n\n\npreviewmode._applyHistory = function (action) {\n this.json = action.json;\n this.text = action.text;\n\n this._renderPreview();\n\n this._debouncedValidate();\n};\n/**\n * Push the current state to history\n * @private\n */\n\n\npreviewmode._pushHistory = function () {\n if (!this.history) {\n return;\n }\n\n var action = {\n text: this.text,\n json: this.json\n };\n this.history.add(action);\n};\n/**\n * Execute a heavy, blocking action.\n * Before starting the action, show a message on screen like \"parsing...\"\n * @param {function} fn\n * @param {string} message\n */\n\n\npreviewmode.executeWithBusyMessage = function (fn, message) {\n var size = this.getText().length;\n\n if (size > constants/* SIZE_LARGE */.EX) {\n var me = this;\n (0,util.addClassName)(me.frame, 'busy');\n me.dom.busyContent.innerText = message;\n setTimeout(function () {\n fn();\n (0,util.removeClassName)(me.frame, 'busy');\n me.dom.busyContent.innerText = '';\n }, 100);\n } else {\n fn();\n }\n}; // TODO: refactor into composable functions instead of this shaky mixin-like structure\n\n\npreviewmode.validate = previewmode_textmode.validate;\npreviewmode._renderErrors = previewmode_textmode._renderErrors; // define modes\n\nvar previewModeMixins = [{\n mode: 'preview',\n mixin: previewmode,\n data: 'json'\n}];\n\n/***/ }),\n\n/***/ 210:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"showSortModal\": function() { return /* binding */ showSortModal; }\n/* harmony export */ });\n/* harmony import */ var picomodal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(483);\n/* harmony import */ var picomodal__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(picomodal__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(907);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(791);\n\n\n\n/**\n * Show advanced sorting modal\n * @param {HTMLElement} container The container where to center\n * the modal and create an overlay\n * @param {JSON} json The JSON data to be sorted.\n * @param {function} onSort Callback function, invoked with\n * an object containing the selected\n * path and direction\n * @param {Object} options\n * Available options:\n * - {string} path The selected path\n * - {'asc' | 'desc'} direction The selected direction\n */\n\nfunction showSortModal(container, json, onSort, options) {\n var paths = Array.isArray(json) ? (0,_util__WEBPACK_IMPORTED_MODULE_2__.getChildPaths)(json) : [''];\n var selectedPath = options && options.path && (0,_util__WEBPACK_IMPORTED_MODULE_2__.contains)(paths, options.path) ? options.path : paths[0];\n var selectedDirection = options && options.direction || 'asc';\n var content = '<div class=\"pico-modal-contents\">' + '<div class=\"pico-modal-header\">' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sort') + '</div>' + '<form>' + '<table>' + '<tbody>' + '<tr>' + ' <td>' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortFieldLabel') + ' </td>' + ' <td class=\"jsoneditor-modal-input\">' + ' <div class=\"jsoneditor-select-wrapper\">' + ' <select id=\"field\" title=\"' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortFieldTitle') + '\">' + ' </select>' + ' </div>' + ' </td>' + '</tr>' + '<tr>' + ' <td>' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortDirectionLabel') + ' </td>' + ' <td class=\"jsoneditor-modal-input\">' + ' <div id=\"direction\" class=\"jsoneditor-button-group\">' + '<input type=\"button\" ' + 'value=\"' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortAscending') + '\" ' + 'title=\"' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortAscendingTitle') + '\" ' + 'data-value=\"asc\" ' + 'class=\"jsoneditor-button-first jsoneditor-button-asc\"/>' + '<input type=\"button\" ' + 'value=\"' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortDescending') + '\" ' + 'title=\"' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('sortDescendingTitle') + '\" ' + 'data-value=\"desc\" ' + 'class=\"jsoneditor-button-last jsoneditor-button-desc\"/>' + ' </div>' + ' </td>' + '</tr>' + '<tr>' + '<td colspan=\"2\" class=\"jsoneditor-modal-input jsoneditor-modal-actions\">' + ' <input type=\"submit\" id=\"ok\" value=\"' + (0,_i18n__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .Iu)('ok') + '\" />' + '</td>' + '</tr>' + '</tbody>' + '</table>' + '</form>' + '</div>';\n picomodal__WEBPACK_IMPORTED_MODULE_0___default()({\n parent: container,\n content: content,\n overlayClass: 'jsoneditor-modal-overlay',\n overlayStyles: {\n backgroundColor: 'rgb(1,1,1)',\n opacity: 0.3\n },\n modalClass: 'jsoneditor-modal jsoneditor-modal-sort'\n }).afterCreate(function (modal) {\n var form = modal.modalElem().querySelector('form');\n var ok = modal.modalElem().querySelector('#ok');\n var field = modal.modalElem().querySelector('#field');\n var direction = modal.modalElem().querySelector('#direction');\n\n function preprocessPath(path) {\n return path === '' ? '@' : path[0] === '.' ? path.slice(1) : path;\n }\n\n paths.forEach(function (path) {\n var option = document.createElement('option');\n option.text = preprocessPath(path);\n option.value = path;\n field.appendChild(option);\n });\n\n function setDirection(value) {\n direction.value = value;\n direction.className = 'jsoneditor-button-group jsoneditor-button-group-value-' + direction.value;\n }\n\n field.value = selectedPath || paths[0];\n setDirection(selectedDirection || 'asc');\n\n direction.onclick = function (event) {\n setDirection(event.target.getAttribute('data-value'));\n };\n\n ok.onclick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n modal.close();\n onSort({\n path: field.value,\n direction: direction.value\n });\n };\n\n if (form) {\n // form is not available when JSONEditor is created inside a form\n form.onsubmit = ok.onclick;\n }\n }).afterClose(function (modal) {\n modal.destroy();\n }).show();\n}\n\n/***/ }),\n\n/***/ 558:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"showTransformModal\": function() { return /* binding */ showTransformModal; }\n});\n\n// EXTERNAL MODULE: ./node_modules/picomodal/src/picoModal.js\nvar picoModal = __webpack_require__(483);\nvar picoModal_default = /*#__PURE__*/__webpack_require__.n(picoModal);\n// EXTERNAL MODULE: ./src/js/assets/selectr/selectr.js\nvar selectr = __webpack_require__(879);\nvar selectr_default = /*#__PURE__*/__webpack_require__.n(selectr);\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(907);\n;// CONCATENATED MODULE: ./src/js/jsonUtils.js\n\n/**\n * Convert part of a JSON object to a JSON string.\n * Use case is to stringify a small part of a large JSON object so you can see\n * a preview.\n *\n * @param {*} value\n * The value to convert to a JSON string.\n *\n * @param {number | string | null} [space]\n * A String or Number object that's used to insert white space into the output\n * JSON string for readability purposes. If this is a Number, it indicates the\n * number of space characters to use as white space; this number is capped at 10\n * if it's larger than that. Values less than 1 indicate that no space should be\n * used. If this is a String, the string (or the first 10 characters of the string,\n * if it's longer than that) is used as white space. If this parameter is not\n * provided (or is null), no white space is used.\n *\n * @param {number} [limit] Maximum size of the string output.\n *\n * @returns {string | undefined} Returns the string representation of the JSON object.\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction stringifyPartial(value, space, limit) {\n var _space; // undefined by default\n\n\n if (typeof space === 'number') {\n if (space > 10) {\n _space = repeat(' ', 10);\n } else if (space >= 1) {\n _space = repeat(' ', space);\n } // else ignore\n\n } else if (typeof space === 'string' && space !== '') {\n _space = space;\n }\n\n var output = stringifyValue(value, _space, '', limit);\n return output.length > limit ? slice(output, limit) + '...' : output;\n}\n/**\n * Stringify a value\n * @param {*} value\n * @param {string} space\n * @param {string} indent\n * @param {number} limit\n * @return {string | undefined}\n */\n\nfunction stringifyValue(value, space, indent, limit) {\n // boolean, null, number, string, or date\n if (typeof value === 'boolean' || value instanceof Boolean || value === null || typeof value === 'number' || value instanceof Number || typeof value === 'string' || value instanceof String || value instanceof Date) {\n return JSON.stringify(value);\n } // array\n\n\n if (Array.isArray(value)) {\n return stringifyArray(value, space, indent, limit);\n } // object (test lastly!)\n\n\n if (value && _typeof(value) === 'object') {\n return stringifyObject(value, space, indent, limit);\n }\n\n return undefined;\n}\n/**\n * Stringify an array\n * @param {Array} array\n * @param {string} space\n * @param {string} indent\n * @param {number} limit\n * @return {string}\n */\n\n\nfunction stringifyArray(array, space, indent, limit) {\n var childIndent = space ? indent + space : undefined;\n var str = space ? '[\\n' : '[';\n\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n\n if (space) {\n str += childIndent;\n }\n\n if (typeof item !== 'undefined' && typeof item !== 'function') {\n str += stringifyValue(item, space, childIndent, limit);\n } else {\n str += 'null';\n }\n\n if (i < array.length - 1) {\n str += space ? ',\\n' : ',';\n } // stop as soon as we're exceeding the limit\n\n\n if (str.length > limit) {\n return str + '...';\n }\n }\n\n str += space ? '\\n' + indent + ']' : ']';\n return str;\n}\n/**\n * Stringify an object\n * @param {Object} object\n * @param {string} space\n * @param {string} indent\n * @param {number} limit\n * @return {string}\n */\n\n\nfunction stringifyObject(object, space, indent, limit) {\n var childIndent = space ? indent + space : undefined;\n var first = true;\n var str = space ? '{\\n' : '{';\n\n if (typeof object.toJSON === 'function') {\n return stringifyValue(object.toJSON(), space, indent, limit);\n }\n\n for (var key in object) {\n if (jsonUtils_hasOwnProperty(object, key)) {\n var value = object[key];\n\n if (first) {\n first = false;\n } else {\n str += space ? ',\\n' : ',';\n }\n\n str += space ? childIndent + '\"' + key + '\": ' : '\"' + key + '\":';\n str += stringifyValue(value, space, childIndent, limit); // stop as soon as we're exceeding the limit\n\n if (str.length > limit) {\n return str + '...';\n }\n }\n }\n\n str += space ? '\\n' + indent + '}' : '}';\n return str;\n}\n/**\n * Repeat a string a number of times.\n * Simple linear solution, we only need up to 10 iterations in practice\n * @param {string} text\n * @param {number} times\n * @return {string}\n */\n\n\nfunction repeat(text, times) {\n var res = '';\n\n while (times-- > 0) {\n res += text;\n }\n\n return res;\n}\n/**\n * Limit the length of text\n * @param {string} text\n * @param {number} [limit]\n * @return {string}\n */\n\n\nfunction slice(text, limit) {\n return typeof limit === 'number' ? text.slice(0, limit) : text;\n}\n/**\n * Test whether some text contains a JSON array, i.e. the first\n * non-white space character is a [\n * @param {string} jsonText\n * @return {boolean}\n */\n\n\nfunction containsArray(jsonText) {\n return /^\\s*\\[/.test(jsonText);\n}\n\nfunction jsonUtils_hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(791);\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(188);\n;// CONCATENATED MODULE: ./src/js/showTransformModal.js\n\n\n\n\n\n\nvar DEFAULT_DESCRIPTION = 'Enter a <a href=\"http://jmespath.org\" target=\"_blank\">JMESPath</a> query to filter, sort, or transform the JSON data.<br/>' + 'To learn JMESPath, go to <a href=\"http://jmespath.org/tutorial.html\" target=\"_blank\">the interactive tutorial</a>.';\n/**\n * Show advanced filter and transform modal using JMESPath\n * @param {Object} params\n * @property {HTMLElement} container The container where to center\n * the modal and create an overlay\n * @property {JSON} json The json data to be transformed\n * @property {string} [queryDescription] Optional custom description explaining\n * the transform functionality\n * @property {function} createQuery Function called to create a query\n * from the wizard form\n * @property {function} executeQuery Execute a query for the preview pane\n * @property {function} onTransform Callback invoked with the created\n * query as callback\n */\n\nfunction showTransformModal(_ref) {\n var container = _ref.container,\n json = _ref.json,\n _ref$queryDescription = _ref.queryDescription,\n queryDescription = _ref$queryDescription === void 0 ? DEFAULT_DESCRIPTION : _ref$queryDescription,\n createQuery = _ref.createQuery,\n executeQuery = _ref.executeQuery,\n onTransform = _ref.onTransform;\n var value = json;\n var content = '<label class=\"pico-modal-contents\">' + '<div class=\"pico-modal-header\">' + (0,i18n/* translate */.Iu)('transform') + '</div>' + '<p>' + queryDescription + '</p>' + '<div class=\"jsoneditor-jmespath-label\">' + (0,i18n/* translate */.Iu)('transformWizardLabel') + ' </div>' + '<div id=\"wizard\" class=\"jsoneditor-jmespath-block jsoneditor-jmespath-wizard\">' + ' <table class=\"jsoneditor-jmespath-wizard-table\">' + ' <tbody>' + ' <tr>' + ' <th>' + (0,i18n/* translate */.Iu)('transformWizardFilter') + '</th>' + ' <td class=\"jsoneditor-jmespath-filter\">' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-filter-field\" >' + ' <select id=\"filterField\">' + ' </select>' + ' </div>' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-filter-relation\" >' + ' <select id=\"filterRelation\">' + ' <option value=\"==\">==</option>' + ' <option value=\"!=\">!=</option>' + ' <option value=\"<\"><</option>' + ' <option value=\"<=\"><=</option>' + ' <option value=\">\">></option>' + ' <option value=\">=\">>=</option>' + ' </select>' + ' </div>' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-filter-value\" >' + ' <input type=\"text\" class=\"value\" placeholder=\"value...\" id=\"filterValue\" />' + ' </div>' + ' </td>' + ' </tr>' + ' <tr>' + ' <th>' + (0,i18n/* translate */.Iu)('transformWizardSortBy') + '</th>' + ' <td class=\"jsoneditor-jmespath-filter\">' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-sort-field\">' + ' <select id=\"sortField\">' + ' </select>' + ' </div>' + ' <div class=\"jsoneditor-inline jsoneditor-jmespath-sort-order\" >' + ' <select id=\"sortOrder\">' + ' <option value=\"asc\">Ascending</option>' + ' <option value=\"desc\">Descending</option>' + ' </select>' + ' </div>' + ' </td>' + ' </tr>' + ' <tr id=\"selectFieldsPart\">' + ' <th>' + (0,i18n/* translate */.Iu)('transformWizardSelectFields') + '</th>' + ' <td class=\"jsoneditor-jmespath-filter\">' + ' <select class=\"jsoneditor-jmespath-select-fields\" id=\"selectFields\" multiple></select>' + ' </td>' + ' </tr>' + ' </tbody>' + ' </table>' + '</div>' + '<div class=\"jsoneditor-jmespath-label\">' + (0,i18n/* translate */.Iu)('transformQueryLabel') + ' </div>' + '<div class=\"jsoneditor-jmespath-block\">' + ' <textarea id=\"query\" ' + ' rows=\"4\" ' + ' autocomplete=\"off\" ' + ' autocorrect=\"off\" ' + ' autocapitalize=\"off\" ' + ' spellcheck=\"false\"' + ' title=\"' + (0,i18n/* translate */.Iu)('transformQueryTitle') + '\">[*]</textarea>' + '</div>' + '<div class=\"jsoneditor-jmespath-label\">' + (0,i18n/* translate */.Iu)('transformPreviewLabel') + ' </div>' + '<div class=\"jsoneditor-jmespath-block\">' + ' <textarea id=\"preview\" ' + ' class=\"jsoneditor-transform-preview\"' + ' readonly> </textarea>' + '</div>' + '<div class=\"jsoneditor-jmespath-block jsoneditor-modal-actions\">' + ' <input type=\"submit\" id=\"ok\" value=\"' + (0,i18n/* translate */.Iu)('ok') + '\" autofocus />' + '</div>' + '</div>';\n picoModal_default()({\n parent: container,\n content: content,\n overlayClass: 'jsoneditor-modal-overlay',\n overlayStyles: {\n backgroundColor: 'rgb(1,1,1)',\n opacity: 0.3\n },\n modalClass: 'jsoneditor-modal jsoneditor-modal-transform',\n focus: false\n }).afterCreate(function (modal) {\n var elem = modal.modalElem();\n var wizard = elem.querySelector('#wizard');\n var ok = elem.querySelector('#ok');\n var filterField = elem.querySelector('#filterField');\n var filterRelation = elem.querySelector('#filterRelation');\n var filterValue = elem.querySelector('#filterValue');\n var sortField = elem.querySelector('#sortField');\n var sortOrder = elem.querySelector('#sortOrder');\n var selectFields = elem.querySelector('#selectFields');\n var query = elem.querySelector('#query');\n var preview = elem.querySelector('#preview');\n\n if (!Array.isArray(value)) {\n wizard.style.fontStyle = 'italic';\n wizard.textContent = '(wizard not available for objects, only for arrays)';\n }\n\n var sortablePaths = (0,util.getChildPaths)(json);\n sortablePaths.forEach(function (path) {\n var formattedPath = preprocessPath(path);\n var filterOption = document.createElement('option');\n filterOption.text = formattedPath;\n filterOption.value = formattedPath;\n filterField.appendChild(filterOption);\n var sortOption = document.createElement('option');\n sortOption.text = formattedPath;\n sortOption.value = formattedPath;\n sortField.appendChild(sortOption);\n });\n var selectablePaths = (0,util.getChildPaths)(json, true).filter(function (path) {\n return path !== '';\n });\n\n if (selectablePaths.length > 0) {\n selectablePaths.forEach(function (path) {\n var formattedPath = preprocessPath(path);\n var option = document.createElement('option');\n option.text = formattedPath;\n option.value = formattedPath;\n selectFields.appendChild(option);\n });\n } else {\n var selectFieldsPart = elem.querySelector('#selectFieldsPart');\n\n if (selectFieldsPart) {\n selectFieldsPart.style.display = 'none';\n }\n }\n\n var selectrFilterField = new (selectr_default())(filterField, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'field...'\n });\n var selectrFilterRelation = new (selectr_default())(filterRelation, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'compare...'\n });\n var selectrSortField = new (selectr_default())(sortField, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'field...'\n });\n var selectrSortOrder = new (selectr_default())(sortOrder, {\n defaultSelected: false,\n clearable: true,\n allowDeselect: true,\n placeholder: 'order...'\n });\n var selectrSelectFields = new (selectr_default())(selectFields, {\n multiple: true,\n clearable: true,\n defaultSelected: false,\n placeholder: 'select fields...'\n });\n selectrFilterField.on('selectr.change', generateQueryFromWizard);\n selectrFilterRelation.on('selectr.change', generateQueryFromWizard);\n filterValue.oninput = generateQueryFromWizard;\n selectrSortField.on('selectr.change', generateQueryFromWizard);\n selectrSortOrder.on('selectr.change', generateQueryFromWizard);\n selectrSelectFields.on('selectr.change', generateQueryFromWizard);\n\n elem.querySelector('.pico-modal-contents').onclick = function (event) {\n // prevent the first clear button (in any select box) from getting\n // focus when clicking anywhere in the modal. Only allow clicking links.\n if (event.target.nodeName !== 'A') {\n event.preventDefault();\n }\n };\n\n function preprocessPath(path) {\n return path === '' ? '@' : path[0] === '.' ? path.slice(1) : path;\n }\n\n function updatePreview() {\n try {\n var transformed = executeQuery(value, query.value);\n preview.className = 'jsoneditor-transform-preview';\n preview.value = stringifyPartial(transformed, 2, constants/* MAX_PREVIEW_CHARACTERS */.WF);\n ok.disabled = false;\n } catch (err) {\n preview.className = 'jsoneditor-transform-preview jsoneditor-error';\n preview.value = err.toString();\n ok.disabled = true;\n }\n }\n\n var debouncedUpdatePreview = (0,util.debounce)(updatePreview, 300);\n\n function tryCreateQuery(json, queryOptions) {\n try {\n query.value = createQuery(json, queryOptions);\n ok.disabled = false;\n debouncedUpdatePreview();\n } catch (err) {\n var message = 'Error: an error happened when executing \"createQuery\": ' + (err.message || err.toString());\n query.value = '';\n ok.disabled = true;\n preview.className = 'jsoneditor-transform-preview jsoneditor-error';\n preview.value = message;\n }\n }\n\n function generateQueryFromWizard() {\n var queryOptions = {};\n\n if (filterField.value && filterRelation.value && filterValue.value) {\n queryOptions.filter = {\n field: filterField.value,\n relation: filterRelation.value,\n value: filterValue.value\n };\n }\n\n if (sortField.value && sortOrder.value) {\n queryOptions.sort = {\n field: sortField.value,\n direction: sortOrder.value\n };\n }\n\n if (selectFields.value) {\n var fields = [];\n\n for (var i = 0; i < selectFields.options.length; i++) {\n if (selectFields.options[i].selected) {\n var selectedField = selectFields.options[i].value;\n fields.push(selectedField);\n }\n }\n\n queryOptions.projection = {\n fields: fields\n };\n }\n\n tryCreateQuery(json, queryOptions);\n }\n\n query.oninput = debouncedUpdatePreview;\n\n ok.onclick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n modal.close();\n onTransform(query.value);\n }; // initialize with empty query\n\n\n tryCreateQuery(json, {});\n setTimeout(function () {\n query.select();\n query.focus();\n query.selectionStart = 3;\n query.selectionEnd = 3;\n });\n }).afterClose(function (modal) {\n modal.destroy();\n }).show();\n}\n\n/***/ }),\n\n/***/ 956:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"textModeMixins\": function() { return /* binding */ textModeMixins; }\n});\n\n// EXTERNAL MODULE: ./node_modules/jsonrepair/lib/umd/jsonrepair.min.js\nvar jsonrepair_min = __webpack_require__(928);\nvar jsonrepair_min_default = /*#__PURE__*/__webpack_require__.n(jsonrepair_min);\n// EXTERNAL MODULE: ./src/js/ace/index.js\nvar ace = __webpack_require__(170);\nvar ace_default = /*#__PURE__*/__webpack_require__.n(ace);\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(188);\n// EXTERNAL MODULE: ./src/js/ErrorTable.js\nvar ErrorTable = __webpack_require__(436);\n// EXTERNAL MODULE: ./src/js/FocusTracker.js\nvar FocusTracker = __webpack_require__(474);\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(907);\n// EXTERNAL MODULE: ./src/js/jmespathQuery.js\nvar jmespathQuery = __webpack_require__(56);\n// EXTERNAL MODULE: ./src/js/ModeSwitcher.js\nvar ModeSwitcher = __webpack_require__(617);\n// EXTERNAL MODULE: ./src/js/showSortModal.js\nvar showSortModal = __webpack_require__(210);\n// EXTERNAL MODULE: ./src/js/showTransformModal.js + 1 modules\nvar showTransformModal = __webpack_require__(558);\n// EXTERNAL MODULE: ./src/js/tryRequireThemeJsonEditor.js\nvar tryRequireThemeJsonEditor = __webpack_require__(49);\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(791);\n;// CONCATENATED MODULE: ./src/js/validationUtils.js\n\n/**\n * Execute custom validation if configured.\n *\n * Returns a promise resolving with the custom errors (or an empty array).\n */\n\nfunction validateCustom(json, onValidate) {\n if (!onValidate) {\n return Promise.resolve([]);\n }\n\n try {\n var customValidateResults = onValidate(json);\n var resultPromise = (0,util.isPromise)(customValidateResults) ? customValidateResults : Promise.resolve(customValidateResults);\n return resultPromise.then(function (customValidationPathErrors) {\n if (Array.isArray(customValidationPathErrors)) {\n return customValidationPathErrors.filter(function (error) {\n var valid = (0,util.isValidValidationError)(error);\n\n if (!valid) {\n console.warn('Ignoring a custom validation error with invalid structure. ' + 'Expected structure: {path: [...], message: \"...\"}. ' + 'Actual error:', error);\n }\n\n return valid;\n }).map(function (error) {\n return (// change data structure into the structure matching the JSON schema errors\n {\n dataPath: (0,util.stringifyPath)(error.path),\n message: error.message,\n type: 'customValidation'\n }\n );\n });\n } else {\n return [];\n }\n });\n } catch (err) {\n return Promise.reject(err);\n }\n}\n;// CONCATENATED MODULE: ./src/js/textmode.js\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n // create a mixin with the functions for text mode\n\nvar textmode = {};\nvar DEFAULT_THEME = 'ace/theme/jsoneditor';\n/**\n * Create a text editor\n * @param {Element} container\n * @param {Object} [options] Object with options. See docs for details.\n * @private\n */\n\ntextmode.create = function (container) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof options.statusBar === 'undefined') {\n options.statusBar = true;\n } // setting default for textmode\n\n\n options.mainMenuBar = options.mainMenuBar !== false;\n options.enableSort = options.enableSort !== false;\n options.enableTransform = options.enableTransform !== false;\n options.createQuery = options.createQuery || jmespathQuery/* createQuery */.r;\n options.executeQuery = options.executeQuery || jmespathQuery/* executeQuery */.J;\n this.options = options; // indentation\n\n if (typeof options.indentation === 'number') {\n this.indentation = Number(options.indentation);\n } else {\n this.indentation = 2; // number of spaces\n } // language\n\n\n (0,i18n/* setLanguages */.cC)(this.options.languages);\n (0,i18n/* setLanguage */.m0)(this.options.language); // grab ace from options if provided\n\n var _ace = options.ace ? options.ace : (ace_default()); // TODO: make the option options.ace deprecated, it's not needed anymore (see #309)\n // determine mode\n\n\n this.mode = options.mode === 'code' ? 'code' : 'text';\n\n if (this.mode === 'code') {\n // verify whether Ace editor is available and supported\n if (typeof _ace === 'undefined') {\n this.mode = 'text';\n console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.');\n }\n } // determine theme\n\n\n this.theme = options.theme || DEFAULT_THEME;\n\n if (this.theme === DEFAULT_THEME && _ace) {\n (0,tryRequireThemeJsonEditor/* tryRequireThemeJsonEditor */.O)();\n }\n\n if (options.onTextSelectionChange) {\n this.onTextSelectionChange(options.onTextSelectionChange);\n }\n\n var me = this;\n this.container = container;\n this.dom = {};\n this.aceEditor = undefined; // ace code editor\n\n this.textarea = undefined; // plain text editor (fallback when Ace is not available)\n\n this.validateSchema = null;\n this.annotations = [];\n this.lastSchemaErrors = undefined; // create a debounced validate function\n\n this._debouncedValidate = (0,util.debounce)(this._validateAndCatch.bind(this), this.DEBOUNCE_INTERVAL);\n this.width = container.clientWidth;\n this.height = container.clientHeight;\n this.frame = document.createElement('div');\n this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;\n\n this.frame.onclick = function (event) {\n // prevent default submit action when the editor is located inside a form\n event.preventDefault();\n };\n\n this.frame.onkeydown = function (event) {\n me._onKeyDown(event);\n }; // setting the FocusTracker on 'this.frame' to track the editor's focus event\n\n\n var focusTrackerConfig = {\n target: this.frame,\n onFocus: this.options.onFocus || null,\n onBlur: this.options.onBlur || null\n };\n this.frameFocusTracker = new FocusTracker/* FocusTracker */.R(focusTrackerConfig);\n this.content = document.createElement('div');\n this.content.className = 'jsoneditor-outer';\n\n if (this.options.mainMenuBar) {\n (0,util.addClassName)(this.content, 'has-main-menu-bar'); // create menu\n\n this.menu = document.createElement('div');\n this.menu.className = 'jsoneditor-menu';\n this.frame.appendChild(this.menu); // create format button\n\n var buttonFormat = document.createElement('button');\n buttonFormat.type = 'button';\n buttonFormat.className = 'jsoneditor-format';\n buttonFormat.title = (0,i18n/* translate */.Iu)('formatTitle');\n this.menu.appendChild(buttonFormat);\n\n buttonFormat.onclick = function () {\n try {\n me.format();\n\n me._onChange();\n } catch (err) {\n me._onError(err);\n }\n }; // create compact button\n\n\n var buttonCompact = document.createElement('button');\n buttonCompact.type = 'button';\n buttonCompact.className = 'jsoneditor-compact';\n buttonCompact.title = (0,i18n/* translate */.Iu)('compactTitle');\n this.menu.appendChild(buttonCompact);\n\n buttonCompact.onclick = function () {\n try {\n me.compact();\n\n me._onChange();\n } catch (err) {\n me._onError(err);\n }\n }; // create sort button\n\n\n if (this.options.enableSort) {\n var _sort = document.createElement('button');\n\n _sort.type = 'button';\n _sort.className = 'jsoneditor-sort';\n _sort.title = (0,i18n/* translate */.Iu)('sortTitleShort');\n\n _sort.onclick = function () {\n me._showSortModal();\n };\n\n this.menu.appendChild(_sort);\n } // create transform button\n\n\n if (this.options.enableTransform) {\n var transform = document.createElement('button');\n transform.type = 'button';\n transform.title = (0,i18n/* translate */.Iu)('transformTitleShort');\n transform.className = 'jsoneditor-transform';\n\n transform.onclick = function () {\n me._showTransformModal();\n };\n\n this.menu.appendChild(transform);\n } // create repair button\n\n\n var buttonRepair = document.createElement('button');\n buttonRepair.type = 'button';\n buttonRepair.className = 'jsoneditor-repair';\n buttonRepair.title = (0,i18n/* translate */.Iu)('repairTitle');\n this.menu.appendChild(buttonRepair);\n\n buttonRepair.onclick = function () {\n try {\n me.repair();\n\n me._onChange();\n } catch (err) {\n me._onError(err);\n }\n }; // create undo/redo buttons\n\n\n if (this.mode === 'code') {\n // create undo button\n var undo = document.createElement('button');\n undo.type = 'button';\n undo.className = 'jsoneditor-undo jsoneditor-separator';\n undo.title = (0,i18n/* translate */.Iu)('undo');\n\n undo.onclick = function () {\n _this.aceEditor.getSession().getUndoManager().undo();\n };\n\n this.menu.appendChild(undo);\n this.dom.undo = undo; // create redo button\n\n var redo = document.createElement('button');\n redo.type = 'button';\n redo.className = 'jsoneditor-redo';\n redo.title = (0,i18n/* translate */.Iu)('redo');\n\n redo.onclick = function () {\n _this.aceEditor.getSession().getUndoManager().redo();\n };\n\n this.menu.appendChild(redo);\n this.dom.redo = redo;\n } // create mode box\n\n\n if (this.options && this.options.modes && this.options.modes.length) {\n this.modeSwitcher = new ModeSwitcher/* ModeSwitcher */.x(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\n // switch mode and restore focus\n try {\n me.setMode(mode);\n me.modeSwitcher.focus();\n } catch (err) {\n me._onError(err);\n }\n });\n }\n\n if (this.mode === 'code') {\n var poweredBy = document.createElement('a');\n poweredBy.appendChild(document.createTextNode('powered by ace'));\n poweredBy.href = 'https://ace.c9.io/';\n poweredBy.target = '_blank';\n poweredBy.className = 'jsoneditor-poweredBy';\n\n poweredBy.onclick = function () {\n // TODO: this anchor falls below the margin of the content,\n // therefore the normal a.href does not work. We use a click event\n // for now, but this should be fixed.\n window.open(poweredBy.href, poweredBy.target, 'noreferrer');\n };\n\n this.menu.appendChild(poweredBy);\n }\n }\n\n var emptyNode = {};\n var isReadOnly = this.options.onEditable && _typeof(this.options.onEditable === 'function') && !this.options.onEditable(emptyNode);\n this.frame.appendChild(this.content);\n this.container.appendChild(this.frame);\n\n if (this.mode === 'code') {\n this.editorDom = document.createElement('div');\n this.editorDom.style.height = '100%'; // TODO: move to css\n\n this.editorDom.style.width = '100%'; // TODO: move to css\n\n this.content.appendChild(this.editorDom);\n\n var aceEditor = _ace.edit(this.editorDom);\n\n var aceSession = aceEditor.getSession();\n aceEditor.$blockScrolling = Infinity;\n aceEditor.setTheme(this.theme);\n aceEditor.setOptions({\n readOnly: isReadOnly\n });\n aceEditor.setShowPrintMargin(false);\n aceEditor.setFontSize('14px');\n aceSession.setMode('ace/mode/json');\n aceSession.setTabSize(this.indentation);\n aceSession.setUseSoftTabs(true);\n aceSession.setUseWrapMode(true); // replace ace setAnnotations with custom function that also covers jsoneditor annotations\n\n var originalSetAnnotations = aceSession.setAnnotations;\n\n aceSession.setAnnotations = function (annotations) {\n originalSetAnnotations.call(this, annotations && annotations.length ? annotations : me.annotations);\n }; // disable Ctrl+L quickkey of Ace (is used by the browser to select the address bar)\n\n\n aceEditor.commands.bindKey('Ctrl-L', null);\n aceEditor.commands.bindKey('Command-L', null); // disable the quickkeys we want to use for Format and Compact\n\n aceEditor.commands.bindKey('Ctrl-\\\\', null);\n aceEditor.commands.bindKey('Command-\\\\', null);\n aceEditor.commands.bindKey('Ctrl-Shift-\\\\', null);\n aceEditor.commands.bindKey('Command-Shift-\\\\', null);\n this.aceEditor = aceEditor; // register onchange event\n\n aceEditor.on('change', this._onChange.bind(this));\n aceEditor.on('changeSelection', this._onSelect.bind(this));\n } else {\n // load a plain text textarea\n var textarea = document.createElement('textarea');\n textarea.className = 'jsoneditor-text';\n textarea.spellcheck = false;\n this.content.appendChild(textarea);\n this.textarea = textarea;\n this.textarea.readOnly = isReadOnly; // register onchange event\n\n if (this.textarea.oninput === null) {\n this.textarea.oninput = this._onChange.bind(this);\n } else {\n // oninput is undefined. For IE8-\n this.textarea.onchange = this._onChange.bind(this);\n }\n\n textarea.onselect = this._onSelect.bind(this);\n textarea.onmousedown = this._onMouseDown.bind(this);\n textarea.onblur = this._onBlur.bind(this);\n }\n\n this._updateHistoryButtons();\n\n this.errorTable = new ErrorTable/* ErrorTable */.Q({\n errorTableVisible: this.mode === 'text',\n onToggleVisibility: function onToggleVisibility() {\n me._validateAndCatch();\n },\n onFocusLine: function onFocusLine(line) {\n me.isFocused = true;\n\n if (!isNaN(line)) {\n me.setTextSelection({\n row: line,\n column: 1\n }, {\n row: line,\n column: 1000\n });\n }\n },\n onChangeHeight: function onChangeHeight(height) {\n // TODO: change CSS to using flex box, remove setting height using JavaScript\n var statusBarHeight = me.dom.statusBar ? me.dom.statusBar.clientHeight : 0;\n var totalHeight = height + statusBarHeight + 1;\n me.content.style.marginBottom = -totalHeight + 'px';\n me.content.style.paddingBottom = totalHeight + 'px';\n }\n });\n this.frame.appendChild(this.errorTable.getErrorTable());\n\n if (options.statusBar) {\n (0,util.addClassName)(this.content, 'has-status-bar');\n this.curserInfoElements = {};\n var statusBar = document.createElement('div');\n this.dom.statusBar = statusBar;\n statusBar.className = 'jsoneditor-statusbar';\n this.frame.appendChild(statusBar);\n var lnLabel = document.createElement('span');\n lnLabel.className = 'jsoneditor-curserinfo-label';\n lnLabel.innerText = 'Ln:';\n var lnVal = document.createElement('span');\n lnVal.className = 'jsoneditor-curserinfo-val';\n lnVal.innerText = '1';\n statusBar.appendChild(lnLabel);\n statusBar.appendChild(lnVal);\n var colLabel = document.createElement('span');\n colLabel.className = 'jsoneditor-curserinfo-label';\n colLabel.innerText = 'Col:';\n var colVal = document.createElement('span');\n colVal.className = 'jsoneditor-curserinfo-val';\n colVal.innerText = '1';\n statusBar.appendChild(colLabel);\n statusBar.appendChild(colVal);\n this.curserInfoElements.colVal = colVal;\n this.curserInfoElements.lnVal = lnVal;\n var countLabel = document.createElement('span');\n countLabel.className = 'jsoneditor-curserinfo-label';\n countLabel.innerText = 'characters selected';\n countLabel.style.display = 'none';\n var countVal = document.createElement('span');\n countVal.className = 'jsoneditor-curserinfo-count';\n countVal.innerText = '0';\n countVal.style.display = 'none';\n this.curserInfoElements.countLabel = countLabel;\n this.curserInfoElements.countVal = countVal;\n statusBar.appendChild(countVal);\n statusBar.appendChild(countLabel);\n statusBar.appendChild(this.errorTable.getErrorCounter());\n statusBar.appendChild(this.errorTable.getWarningIcon());\n statusBar.appendChild(this.errorTable.getErrorIcon());\n }\n\n this.setSchema(this.options.schema, this.options.schemaRefs);\n};\n/**\n * Handle a change:\n * - Validate JSON schema\n * - Send a callback to the onChange listener if provided\n * @private\n */\n\n\ntextmode._onChange = function () {\n var _this2 = this;\n\n if (this.onChangeDisabled) {\n return;\n } // enable/disable undo/redo buttons\n\n\n setTimeout(function () {\n if (_this2._updateHistoryButtons) {\n _this2._updateHistoryButtons();\n }\n }); // validate JSON schema (if configured)\n\n this._debouncedValidate(); // trigger the onChange callback\n\n\n if (this.options.onChange) {\n try {\n this.options.onChange();\n } catch (err) {\n console.error('Error in onChange callback: ', err);\n }\n } // trigger the onChangeText callback\n\n\n if (this.options.onChangeText) {\n try {\n this.options.onChangeText(this.getText());\n } catch (err) {\n console.error('Error in onChangeText callback: ', err);\n }\n }\n};\n\ntextmode._updateHistoryButtons = function () {\n if (this.aceEditor && this.dom.undo && this.dom.redo) {\n var undoManager = this.aceEditor.getSession().getUndoManager();\n\n if (undoManager && undoManager.hasUndo && undoManager.hasRedo) {\n this.dom.undo.disabled = !undoManager.hasUndo();\n this.dom.redo.disabled = !undoManager.hasRedo();\n }\n }\n};\n/**\n * Open a sort modal\n * @private\n */\n\n\ntextmode._showSortModal = function () {\n try {\n var onSort = function onSort(sortedBy) {\n if (Array.isArray(json)) {\n var sortedJson = (0,util.sort)(json, sortedBy.path, sortedBy.direction);\n me.sortedBy = sortedBy;\n me.update(sortedJson);\n }\n\n if ((0,util.isObject)(json)) {\n var _sortedJson = (0,util.sortObjectKeys)(json, sortedBy.direction);\n\n me.sortedBy = sortedBy;\n me.update(_sortedJson);\n }\n };\n\n var me = this;\n var container = this.options.modalAnchor || constants/* DEFAULT_MODAL_ANCHOR */.qD;\n var json = this.get();\n (0,showSortModal.showSortModal)(container, json, onSort, me.sortedBy);\n } catch (err) {\n this._onError(err);\n }\n};\n/**\n * Open a transform modal\n * @private\n */\n\n\ntextmode._showTransformModal = function () {\n var _this3 = this;\n\n try {\n var _this$options = this.options,\n modalAnchor = _this$options.modalAnchor,\n _createQuery = _this$options.createQuery,\n _executeQuery = _this$options.executeQuery,\n queryDescription = _this$options.queryDescription;\n var json = this.get();\n (0,showTransformModal.showTransformModal)({\n container: modalAnchor || constants/* DEFAULT_MODAL_ANCHOR */.qD,\n json: json,\n queryDescription: queryDescription,\n // can be undefined\n createQuery: _createQuery,\n executeQuery: _executeQuery,\n onTransform: function onTransform(query) {\n var updatedJson = _executeQuery(json, query);\n\n _this3.update(updatedJson);\n }\n });\n } catch (err) {\n this._onError(err);\n }\n};\n/**\n * Handle text selection\n * Calculates the cursor position and selection range and updates menu\n * @private\n */\n\n\ntextmode._onSelect = function () {\n this._updateCursorInfo();\n\n this._emitSelectionChange();\n};\n/**\n * Event handler for keydown. Handles shortcut keys\n * @param {Event} event\n * @private\n */\n\n\ntextmode._onKeyDown = function (event) {\n var keynum = event.which || event.keyCode;\n var handled = false;\n\n if (keynum === 73 && event.ctrlKey) {\n if (event.shiftKey) {\n // Ctrl+Shift+I\n this.compact();\n\n this._onChange();\n } else {\n // Ctrl+I\n this.format();\n\n this._onChange();\n }\n\n handled = true;\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this._updateCursorInfo();\n\n this._emitSelectionChange();\n};\n/**\n * Event handler for mousedown.\n * @private\n */\n\n\ntextmode._onMouseDown = function () {\n this._updateCursorInfo();\n\n this._emitSelectionChange();\n};\n/**\n * Event handler for blur.\n * @private\n */\n\n\ntextmode._onBlur = function () {\n var me = this; // this allows to avoid blur when clicking inner elements (like the errors panel)\n // just make sure to set the isFocused to true on the inner element onclick callback\n\n setTimeout(function () {\n if (!me.isFocused) {\n me._updateCursorInfo();\n\n me._emitSelectionChange();\n }\n\n me.isFocused = false;\n });\n};\n/**\n * Update the cursor info and the status bar, if presented\n */\n\n\ntextmode._updateCursorInfo = function () {\n var me = this;\n var line, col, count;\n\n if (this.textarea) {\n setTimeout(function () {\n // this to verify we get the most updated textarea cursor selection\n var selectionRange = (0,util.getInputSelection)(me.textarea);\n\n if (selectionRange.startIndex !== selectionRange.endIndex) {\n count = selectionRange.endIndex - selectionRange.startIndex;\n }\n\n if (count && me.cursorInfo && me.cursorInfo.line === selectionRange.end.row && me.cursorInfo.column === selectionRange.end.column) {\n line = selectionRange.start.row;\n col = selectionRange.start.column;\n } else {\n line = selectionRange.end.row;\n col = selectionRange.end.column;\n }\n\n me.cursorInfo = {\n line: line,\n column: col,\n count: count\n };\n\n if (me.options.statusBar) {\n updateDisplay();\n }\n }, 0);\n } else if (this.aceEditor && this.curserInfoElements) {\n var curserPos = this.aceEditor.getCursorPosition();\n var selectedText = this.aceEditor.getSelectedText();\n line = curserPos.row + 1;\n col = curserPos.column + 1;\n count = selectedText.length;\n me.cursorInfo = {\n line: line,\n column: col,\n count: count\n };\n\n if (this.options.statusBar) {\n updateDisplay();\n }\n }\n\n function updateDisplay() {\n if (me.curserInfoElements.countVal.innerText !== count) {\n me.curserInfoElements.countVal.innerText = count;\n me.curserInfoElements.countVal.style.display = count ? 'inline' : 'none';\n me.curserInfoElements.countLabel.style.display = count ? 'inline' : 'none';\n }\n\n me.curserInfoElements.lnVal.innerText = line;\n me.curserInfoElements.colVal.innerText = col;\n }\n};\n/**\n * emits selection change callback, if given\n * @private\n */\n\n\ntextmode._emitSelectionChange = function () {\n if (this._selectionChangedHandler) {\n var currentSelection = this.getTextSelection();\n\n this._selectionChangedHandler(currentSelection.start, currentSelection.end, currentSelection.text);\n }\n};\n/**\n * refresh ERROR annotations state\n * error annotations are handled by the ace json mode (ace/mode/json)\n * validation annotations are handled by this mode\n * therefore in order to refresh we send only the annotations of error type in order to maintain its state\n * @private\n */\n\n\ntextmode._refreshAnnotations = function () {\n var session = this.aceEditor && this.aceEditor.getSession();\n\n if (session) {\n var errEnnotations = session.getAnnotations().filter(function (annotation) {\n return annotation.type === 'error';\n });\n session.setAnnotations(errEnnotations);\n }\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\ntextmode.destroy = function () {\n // remove old ace editor\n if (this.aceEditor) {\n this.aceEditor.destroy();\n this.aceEditor = null;\n }\n\n if (this.frame && this.container && this.frame.parentNode === this.container) {\n this.container.removeChild(this.frame);\n }\n\n if (this.modeSwitcher) {\n this.modeSwitcher.destroy();\n this.modeSwitcher = null;\n }\n\n this.textarea = null;\n this._debouncedValidate = null; // Removing the FocusTracker set to track the editor's focus event\n\n this.frameFocusTracker.destroy();\n};\n/**\n * Compact the code in the text editor\n */\n\n\ntextmode.compact = function () {\n var json = this.get();\n var text = JSON.stringify(json);\n this.updateText(text);\n};\n/**\n * Format the code in the text editor\n */\n\n\ntextmode.format = function () {\n var json = this.get();\n var text = JSON.stringify(json, null, this.indentation);\n this.updateText(text);\n};\n/**\n * Repair the code in the text editor\n */\n\n\ntextmode.repair = function () {\n var text = this.getText();\n\n try {\n var repairedText = jsonrepair_min_default()(text);\n this.updateText(repairedText);\n } catch (err) {// repair was not successful, do nothing\n }\n};\n/**\n * Set focus to the formatter\n */\n\n\ntextmode.focus = function () {\n if (this.textarea) {\n this.textarea.focus();\n }\n\n if (this.aceEditor) {\n this.aceEditor.focus();\n }\n};\n/**\n * Resize the formatter\n */\n\n\ntextmode.resize = function () {\n if (this.aceEditor) {\n var force = false;\n this.aceEditor.resize(force);\n }\n};\n/**\n * Set json data in the formatter\n * @param {*} json\n */\n\n\ntextmode.set = function (json) {\n this.setText(JSON.stringify(json, null, this.indentation));\n};\n/**\n * Update data. Same as calling `set` in text/code mode.\n * @param {*} json\n */\n\n\ntextmode.update = function (json) {\n this.updateText(JSON.stringify(json, null, this.indentation));\n};\n/**\n * Get json data from the formatter\n * @return {*} json\n */\n\n\ntextmode.get = function () {\n var text = this.getText();\n return (0,util.parse)(text); // this can throw an error\n};\n/**\n * Get the text contents of the editor\n * @return {String} jsonText\n */\n\n\ntextmode.getText = function () {\n if (this.textarea) {\n return this.textarea.value;\n }\n\n if (this.aceEditor) {\n return this.aceEditor.getValue();\n }\n\n return '';\n};\n/**\n * Set the text contents of the editor and optionally clear the history\n * @param {String} jsonText\n * @param {boolean} clearHistory Only applicable for mode 'code'\n * @private\n */\n\n\ntextmode._setText = function (jsonText, clearHistory) {\n var _this4 = this;\n\n var text = this.options.escapeUnicode === true ? (0,util.escapeUnicodeChars)(jsonText) : jsonText;\n\n if (this.textarea) {\n this.textarea.value = text;\n }\n\n if (this.aceEditor) {\n // prevent emitting onChange events while setting new text\n this.onChangeDisabled = true;\n this.aceEditor.setValue(text, -1);\n this.onChangeDisabled = false;\n\n if (clearHistory) {\n // prevent initial undo action clearing the initial contents\n var me = this;\n setTimeout(function () {\n if (me.aceEditor) {\n me.aceEditor.session.getUndoManager().reset();\n }\n });\n }\n\n setTimeout(function () {\n if (_this4._updateHistoryButtons) {\n _this4._updateHistoryButtons();\n }\n });\n } // validate JSON schema\n\n\n this._debouncedValidate();\n};\n/**\n * Set the text contents of the editor\n * @param {String} jsonText\n */\n\n\ntextmode.setText = function (jsonText) {\n this._setText(jsonText, true);\n};\n/**\n * Update the text contents\n * @param {string} jsonText\n */\n\n\ntextmode.updateText = function (jsonText) {\n // don't update if there are no changes\n if (this.getText() === jsonText) {\n return;\n }\n\n this._setText(jsonText, false);\n};\n/**\n * Validate current JSON object against the configured JSON schema\n * Throws an exception when no JSON schema is configured\n */\n\n\ntextmode.validate = function () {\n var _this5 = this;\n\n var schemaErrors = [];\n var parseErrors = [];\n var json;\n\n try {\n json = this.get(); // this can fail when there is no valid json\n // execute JSON schema validation (ajv)\n\n if (this.validateSchema) {\n var valid = this.validateSchema(json);\n\n if (!valid) {\n schemaErrors = this.validateSchema.errors.map(function (error) {\n error.type = 'validation';\n return (0,util.improveSchemaError)(error);\n });\n }\n } // execute custom validation and after than merge and render all errors\n // TODO: implement a better mechanism for only using the last validation action\n\n\n this.validationSequence = (this.validationSequence || 0) + 1;\n var me = this;\n var seq = this.validationSequence;\n return validateCustom(json, this.options.onValidate).then(function (customValidationErrors) {\n // only apply when there was no other validation started whilst resolving async results\n if (seq === me.validationSequence) {\n var errors = schemaErrors.concat(parseErrors).concat(customValidationErrors);\n\n me._renderErrors(errors);\n\n if (typeof _this5.options.onValidationError === 'function' && (0,util.isValidationErrorChanged)(errors, _this5.lastSchemaErrors)) {\n _this5.options.onValidationError.call(_this5, errors);\n }\n\n _this5.lastSchemaErrors = errors;\n }\n\n return _this5.lastSchemaErrors;\n });\n } catch (err) {\n if (this.getText()) {\n // try to extract the line number from the jsonlint error message\n var match = /\\w*line\\s*(\\d+)\\w*/g.exec(err.message);\n var line;\n\n if (match) {\n line = +match[1];\n }\n\n parseErrors = [{\n type: 'error',\n message: err.message.replace(/\\n/g, '<br>'),\n line: line\n }];\n }\n\n this._renderErrors(parseErrors);\n\n if (typeof this.options.onValidationError === 'function' && (0,util.isValidationErrorChanged)(parseErrors, this.lastSchemaErrors)) {\n this.options.onValidationError.call(this, parseErrors);\n }\n\n this.lastSchemaErrors = parseErrors;\n return Promise.resolve(this.lastSchemaErrors);\n }\n};\n\ntextmode._validateAndCatch = function () {\n this.validate()[\"catch\"](function (err) {\n console.error('Error running validation:', err);\n });\n};\n\ntextmode._renderErrors = function (errors) {\n var jsonText = this.getText();\n var errorPaths = [];\n errors.reduce(function (acc, curr) {\n if (typeof curr.dataPath === 'string' && acc.indexOf(curr.dataPath) === -1) {\n acc.push(curr.dataPath);\n }\n\n return acc;\n }, errorPaths);\n var errorLocations = (0,util.getPositionForPath)(jsonText, errorPaths); // render annotations in Ace Editor (if any)\n\n if (this.aceEditor) {\n this.annotations = errorLocations.map(function (errLoc) {\n var validationErrors = errors.filter(function (err) {\n return err.dataPath === errLoc.path;\n });\n var message = validationErrors.map(function (err) {\n return err.message;\n }).join('\\n');\n\n if (message) {\n return {\n row: errLoc.line,\n column: errLoc.column,\n text: 'Schema validation error' + (validationErrors.length !== 1 ? 's' : '') + ': \\n' + message,\n type: 'warning',\n source: 'jsoneditor'\n };\n }\n\n return {};\n });\n\n this._refreshAnnotations();\n } // render errors in the errors table (if any)\n\n\n this.errorTable.setErrors(errors, errorLocations); // update the height of the ace editor\n\n if (this.aceEditor) {\n var force = false;\n this.aceEditor.resize(force);\n }\n};\n/**\n * Get the selection details\n * @returns {{start:{row:Number, column:Number},end:{row:Number, column:Number},text:String}}\n */\n\n\ntextmode.getTextSelection = function () {\n var selection = {};\n\n if (this.textarea) {\n var selectionRange = (0,util.getInputSelection)(this.textarea);\n\n if (this.cursorInfo && this.cursorInfo.line === selectionRange.end.row && this.cursorInfo.column === selectionRange.end.column) {\n // selection direction is bottom => up\n selection.start = selectionRange.end;\n selection.end = selectionRange.start;\n } else {\n selection = selectionRange;\n }\n\n return {\n start: selection.start,\n end: selection.end,\n text: this.textarea.value.substring(selectionRange.startIndex, selectionRange.endIndex)\n };\n }\n\n if (this.aceEditor) {\n var aceSelection = this.aceEditor.getSelection();\n var selectedText = this.aceEditor.getSelectedText();\n var range = aceSelection.getRange();\n var lead = aceSelection.getSelectionLead();\n\n if (lead.row === range.end.row && lead.column === range.end.column) {\n selection = range;\n } else {\n // selection direction is bottom => up\n selection.start = range.end;\n selection.end = range.start;\n }\n\n return {\n start: {\n row: selection.start.row + 1,\n column: selection.start.column + 1\n },\n end: {\n row: selection.end.row + 1,\n column: selection.end.column + 1\n },\n text: selectedText\n };\n }\n};\n/**\n * Callback registration for selection change\n * @param {selectionCallback} callback\n *\n * @callback selectionCallback\n */\n\n\ntextmode.onTextSelectionChange = function (callback) {\n if (typeof callback === 'function') {\n this._selectionChangedHandler = (0,util.debounce)(callback, this.DEBOUNCE_INTERVAL);\n }\n};\n/**\n * Set selection on editor's text\n * @param {{row:Number, column:Number}} startPos selection start position\n * @param {{row:Number, column:Number}} endPos selected end position\n */\n\n\ntextmode.setTextSelection = function (startPos, endPos) {\n if (!startPos || !endPos) return;\n\n if (this.textarea) {\n var startIndex = (0,util.getIndexForPosition)(this.textarea, startPos.row, startPos.column);\n var endIndex = (0,util.getIndexForPosition)(this.textarea, endPos.row, endPos.column);\n\n if (startIndex > -1 && endIndex > -1) {\n if (this.textarea.setSelectionRange) {\n this.textarea.focus();\n this.textarea.setSelectionRange(startIndex, endIndex);\n } else if (this.textarea.createTextRange) {\n // IE < 9\n var range = this.textarea.createTextRange();\n range.collapse(true);\n range.moveEnd('character', endIndex);\n range.moveStart('character', startIndex);\n range.select();\n }\n\n var rows = (this.textarea.value.match(/\\n/g) || []).length + 1;\n var lineHeight = this.textarea.scrollHeight / rows;\n var selectionScrollPos = startPos.row * lineHeight;\n this.textarea.scrollTop = selectionScrollPos > this.textarea.clientHeight ? selectionScrollPos - this.textarea.clientHeight / 2 : 0;\n }\n } else if (this.aceEditor) {\n var _range = {\n start: {\n row: startPos.row - 1,\n column: startPos.column - 1\n },\n end: {\n row: endPos.row - 1,\n column: endPos.column - 1\n }\n };\n this.aceEditor.selection.setRange(_range);\n this.aceEditor.scrollToLine(startPos.row - 1, true);\n }\n};\n\nfunction load() {\n try {\n this.format();\n } catch (err) {// in case of an error, just move on, failing formatting is not a big deal\n }\n} // define modes\n\n\nvar textModeMixins = [{\n mode: 'text',\n mixin: textmode,\n data: 'text',\n load: load\n}, {\n mode: 'code',\n mixin: textmode,\n data: 'text',\n load: load\n}];\n\n/***/ }),\n\n/***/ 38:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"treeModeMixins\": function() { return /* binding */ treeModeMixins; }\n});\n\n;// CONCATENATED MODULE: ./src/js/autocomplete.js\n\n\nvar defaultFilterFunction = {\n start: function start(token, match, config) {\n return match.indexOf(token) === 0;\n },\n contain: function contain(token, match, config) {\n return match.indexOf(token) > -1;\n }\n};\nfunction autocomplete(config) {\n config = config || {};\n config.filter = config.filter || 'start';\n config.trigger = config.trigger || 'keydown';\n config.confirmKeys = config.confirmKeys || [39, 35, 9]; // right, end, tab\n\n config.caseSensitive = config.caseSensitive || false; // autocomplete case sensitive\n\n var fontSize = '';\n var fontFamily = '';\n var wrapper = document.createElement('div');\n wrapper.style.position = 'relative';\n wrapper.style.outline = '0';\n wrapper.style.border = '0';\n wrapper.style.margin = '0';\n wrapper.style.padding = '0';\n var dropDown = document.createElement('div');\n dropDown.className = 'autocomplete dropdown';\n dropDown.style.position = 'absolute';\n dropDown.style.visibility = 'hidden';\n var spacer;\n var leftSide; // <-- it will contain the leftSide part of the textfield (the bit that was already autocompleted)\n\n var createDropDownController = function createDropDownController(elem, rs) {\n var rows = [];\n var ix = 0;\n var oldIndex = -1; // TODO: move this styling in JS to SCSS\n\n var onMouseOver = function onMouseOver() {\n this.style.backgroundColor = '#ddd';\n };\n\n var onMouseOut = function onMouseOut() {\n this.style.backgroundColor = '';\n };\n\n var onMouseDown = function onMouseDown() {\n p.hide();\n p.onmouseselection(this.__hint, p.rs);\n };\n\n var p = {\n rs: rs,\n hide: function hide() {\n elem.style.visibility = 'hidden'; // rs.hideDropDown();\n },\n refresh: function refresh(token, array) {\n elem.style.visibility = 'hidden';\n ix = 0;\n elem.textContent = '';\n var vph = window.innerHeight || document.documentElement.clientHeight;\n var rect = elem.parentNode.getBoundingClientRect();\n var distanceToTop = rect.top - 6; // heuristic give 6px\n\n var distanceToBottom = vph - rect.bottom - 6; // distance from the browser border.\n\n rows = [];\n var filterFn = typeof config.filter === 'function' ? config.filter : defaultFilterFunction[config.filter];\n var filtered = !filterFn ? [] : array.filter(function (match) {\n return filterFn(config.caseSensitive ? token : token.toLowerCase(), config.caseSensitive ? match : match.toLowerCase(), config);\n });\n rows = filtered.map(function (row) {\n var divRow = document.createElement('div');\n divRow.className = 'item'; // divRow.style.color = config.color;\n\n divRow.onmouseover = onMouseOver;\n divRow.onmouseout = onMouseOut;\n divRow.onmousedown = onMouseDown;\n divRow.__hint = row;\n divRow.textContent = '';\n divRow.appendChild(document.createTextNode(row.substring(0, token.length)));\n var b = document.createElement('b');\n b.appendChild(document.createTextNode(row.substring(token.length)));\n divRow.appendChild(b);\n elem.appendChild(divRow);\n return divRow;\n });\n\n if (rows.length === 0) {\n return; // nothing to show.\n }\n\n if (rows.length === 1 && (token.toLowerCase() === rows[0].__hint.toLowerCase() && !config.caseSensitive || token === rows[0].__hint && config.caseSensitive)) {\n return; // do not show the dropDown if it has only one element which matches what we have just displayed.\n }\n\n if (rows.length < 2) return;\n p.highlight(0);\n\n if (distanceToTop > distanceToBottom * 3) {\n // Heuristic (only when the distance to the to top is 4 times more than distance to the bottom\n elem.style.maxHeight = distanceToTop + 'px'; // we display the dropDown on the top of the input text\n\n elem.style.top = '';\n elem.style.bottom = '100%';\n } else {\n elem.style.top = '100%';\n elem.style.bottom = '';\n elem.style.maxHeight = distanceToBottom + 'px';\n }\n\n elem.style.visibility = 'visible';\n },\n highlight: function highlight(index) {\n if (oldIndex !== -1 && rows[oldIndex]) {\n rows[oldIndex].className = 'item';\n }\n\n rows[index].className = 'item hover';\n oldIndex = index;\n },\n move: function move(step) {\n // moves the selection either up or down (unless it's not possible) step is either +1 or -1.\n if (elem.style.visibility === 'hidden') return ''; // nothing to move if there is no dropDown. (this happens if the user hits escape and then down or up)\n\n if (ix + step === -1 || ix + step === rows.length) return rows[ix].__hint; // NO CIRCULAR SCROLLING.\n\n ix += step;\n p.highlight(ix);\n return rows[ix].__hint; // txtShadow.value = uRows[uIndex].__hint ;\n },\n onmouseselection: function onmouseselection() {} // it will be overwritten.\n\n };\n return p;\n };\n\n function setEndOfContenteditable(contentEditableElement) {\n var range, selection;\n\n if (document.createRange) {\n // Firefox, Chrome, Opera, Safari, IE 9+\n range = document.createRange(); // Create a range (a range is a like the selection but invisible)\n\n range.selectNodeContents(contentEditableElement); // Select the entire contents of the element with the range\n\n range.collapse(false); // collapse the range to the end point. false means collapse to end rather than the start\n\n selection = window.getSelection(); // get the selection object (allows you to change selection)\n\n selection.removeAllRanges(); // remove any selections already made\n\n selection.addRange(range); // make the range you have just created the visible selection\n } else if (document.selection) {\n // IE 8 and lower\n range = document.body.createTextRange(); // Create a range (a range is a like the selection but invisible)\n\n range.moveToElementText(contentEditableElement); // Select the entire contents of the element with the range\n\n range.collapse(false); // collapse the range to the end point. false means collapse to end rather than the start\n\n range.select(); // Select the range (make it the visible selection\n }\n }\n\n function calculateWidthForText(text) {\n if (spacer === undefined) {\n // on first call only.\n spacer = document.createElement('span');\n spacer.style.visibility = 'hidden';\n spacer.style.position = 'fixed';\n spacer.style.outline = '0';\n spacer.style.margin = '0';\n spacer.style.padding = '0';\n spacer.style.border = '0';\n spacer.style.left = '0';\n spacer.style.whiteSpace = 'pre';\n spacer.style.fontSize = fontSize;\n spacer.style.fontFamily = fontFamily;\n spacer.style.fontWeight = 'normal';\n document.body.appendChild(spacer);\n }\n\n spacer.textContent = text;\n return spacer.getBoundingClientRect().right;\n }\n\n var rs = {\n onArrowDown: function onArrowDown() {},\n // defaults to no action.\n onArrowUp: function onArrowUp() {},\n // defaults to no action.\n onEnter: function onEnter() {},\n // defaults to no action.\n onTab: function onTab() {},\n // defaults to no action.\n startFrom: 0,\n options: [],\n element: null,\n elementHint: null,\n elementStyle: null,\n wrapper: wrapper,\n // Only to allow easy access to the HTML elements to the final user (possibly for minor customizations)\n show: function show(element, startPos, options) {\n var _this = this;\n\n this.startFrom = startPos;\n this.wrapper.remove();\n\n if (this.elementHint) {\n this.elementHint.remove();\n this.elementHint = null;\n }\n\n if (fontSize === '') {\n fontSize = window.getComputedStyle(element).getPropertyValue('font-size');\n }\n\n if (fontFamily === '') {\n fontFamily = window.getComputedStyle(element).getPropertyValue('font-family');\n }\n\n dropDown.style.marginLeft = '0';\n dropDown.style.marginTop = element.getBoundingClientRect().height + 'px';\n this.options = options.map(String);\n\n if (this.element !== element) {\n this.element = element;\n this.elementStyle = {\n zIndex: this.element.style.zIndex,\n position: this.element.style.position,\n backgroundColor: this.element.style.backgroundColor,\n borderColor: this.element.style.borderColor\n };\n }\n\n this.element.style.zIndex = 3;\n this.element.style.position = 'relative';\n this.element.style.backgroundColor = 'transparent';\n this.element.style.borderColor = 'transparent';\n this.elementHint = element.cloneNode();\n this.elementHint.className = 'autocomplete hint';\n this.elementHint.style.zIndex = 2;\n this.elementHint.style.position = 'absolute';\n\n this.elementHint.onfocus = function () {\n _this.element.focus();\n };\n\n if (this.element.addEventListener) {\n this.element.removeEventListener('keydown', keyDownHandler);\n this.element.addEventListener('keydown', keyDownHandler, false);\n this.element.removeEventListener('blur', onBlurHandler);\n this.element.addEventListener('blur', onBlurHandler, false);\n }\n\n wrapper.appendChild(this.elementHint);\n wrapper.appendChild(dropDown);\n element.parentElement.appendChild(wrapper);\n this.repaint(element);\n },\n setText: function setText(text) {\n this.element.innerText = text;\n },\n getText: function getText() {\n return this.element.innerText;\n },\n hideDropDown: function hideDropDown() {\n this.wrapper.remove();\n\n if (this.elementHint) {\n this.elementHint.remove();\n this.elementHint = null;\n dropDownController.hide();\n this.element.style.zIndex = this.elementStyle.zIndex;\n this.element.style.position = this.elementStyle.position;\n this.element.style.backgroundColor = this.elementStyle.backgroundColor;\n this.element.style.borderColor = this.elementStyle.borderColor;\n }\n },\n repaint: function repaint(element) {\n var text = element.innerText;\n text = text.replace('\\n', '');\n var optionsLength = this.options.length; // breaking text in leftSide and token.\n\n var token = text.substring(this.startFrom);\n leftSide = text.substring(0, this.startFrom);\n\n for (var i = 0; i < optionsLength; i++) {\n var opt = this.options[i];\n\n if (!config.caseSensitive && opt.toLowerCase().indexOf(token.toLowerCase()) === 0 || config.caseSensitive && opt.indexOf(token) === 0) {\n // <-- how about upperCase vs. lowercase\n this.elementHint.innerText = leftSide + token + opt.substring(token.length);\n this.elementHint.realInnerText = leftSide + opt;\n break;\n }\n } // moving the dropDown and refreshing it.\n\n\n dropDown.style.left = calculateWidthForText(leftSide) + 'px';\n dropDownController.refresh(token, this.options);\n this.elementHint.style.width = calculateWidthForText(this.elementHint.innerText) + 10 + 'px';\n var wasDropDownHidden = dropDown.style.visibility === 'hidden';\n\n if (!wasDropDownHidden) {\n this.elementHint.style.width = calculateWidthForText(this.elementHint.innerText) + dropDown.clientWidth + 'px';\n }\n }\n };\n var dropDownController = createDropDownController(dropDown, rs);\n\n var keyDownHandler = function (e) {\n // console.log(\"Keydown:\" + e.keyCode);\n e = e || window.event;\n var keyCode = e.keyCode;\n if (this.elementHint == null) return;\n\n if (keyCode === 33) {\n return;\n } // page up (do nothing)\n\n\n if (keyCode === 34) {\n return;\n } // page down (do nothing);\n\n\n if (keyCode === 27) {\n // escape\n rs.hideDropDown();\n rs.element.focus();\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n var text = this.element.innerText;\n text = text.replace('\\n', '');\n\n if (config.confirmKeys.indexOf(keyCode) >= 0) {\n // (autocomplete triggered)\n if (keyCode === 9) {\n if (this.elementHint.innerText.length === 0) {\n rs.onTab();\n }\n }\n\n if (this.elementHint.innerText.length > 0) {\n // if there is a hint\n if (this.element.innerText !== this.elementHint.realInnerText) {\n this.element.innerText = this.elementHint.realInnerText;\n rs.hideDropDown();\n setEndOfContenteditable(this.element);\n\n if (keyCode === 9) {\n rs.element.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n }\n\n return;\n }\n\n if (keyCode === 13) {\n // enter (autocomplete triggered)\n if (this.elementHint.innerText.length === 0) {\n // if there is a hint\n rs.onEnter();\n } else {\n var wasDropDownHidden = dropDown.style.visibility === 'hidden';\n dropDownController.hide();\n\n if (wasDropDownHidden) {\n rs.hideDropDown();\n rs.element.focus();\n rs.onEnter();\n return;\n }\n\n this.element.innerText = this.elementHint.realInnerText;\n rs.hideDropDown();\n setEndOfContenteditable(this.element);\n e.preventDefault();\n e.stopPropagation();\n }\n\n return;\n }\n\n if (keyCode === 40) {\n // down\n var token = text.substring(this.startFrom);\n var m = dropDownController.move(+1);\n\n if (m === '') {\n rs.onArrowDown();\n }\n\n this.elementHint.innerText = leftSide + token + m.substring(token.length);\n this.elementHint.realInnerText = leftSide + m;\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n if (keyCode === 38) {\n // up\n var _token = text.substring(this.startFrom);\n\n var _m = dropDownController.move(-1);\n\n if (_m === '') {\n rs.onArrowUp();\n }\n\n this.elementHint.innerText = leftSide + _token + _m.substring(_token.length);\n this.elementHint.realInnerText = leftSide + _m;\n e.preventDefault();\n e.stopPropagation();\n }\n }.bind(rs);\n\n var onBlurHandler = function onBlurHandler(e) {\n rs.hideDropDown(); // console.log(\"Lost focus.\");\n };\n\n dropDownController.onmouseselection = function (text, rs) {\n rs.element.innerText = rs.elementHint.innerText = leftSide + text;\n rs.hideDropDown();\n window.setTimeout(function () {\n rs.element.focus();\n setEndOfContenteditable(rs.element);\n }, 1);\n };\n\n return rs;\n}\n// EXTERNAL MODULE: ./src/js/ContextMenu.js\nvar ContextMenu = __webpack_require__(897);\n// EXTERNAL MODULE: ./src/js/FocusTracker.js\nvar FocusTracker = __webpack_require__(474);\n;// CONCATENATED MODULE: ./src/js/Highlighter.js\n\n/**\n * The highlighter can highlight/unhighlight a node, and\n * animate the visibility of a context menu.\n * @constructor Highlighter\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar Highlighter = /*#__PURE__*/function () {\n function Highlighter() {\n _classCallCheck(this, Highlighter);\n\n this.locked = false;\n }\n /**\n * Hightlight given node and its childs\n * @param {Node} node\n */\n\n\n _createClass(Highlighter, [{\n key: \"highlight\",\n value: function highlight(node) {\n if (this.locked) {\n return;\n }\n\n if (this.node !== node) {\n // unhighlight current node\n if (this.node) {\n this.node.setHighlight(false);\n } // highlight new node\n\n\n this.node = node;\n this.node.setHighlight(true);\n } // cancel any current timeout\n\n\n this._cancelUnhighlight();\n }\n /**\n * Unhighlight currently highlighted node.\n * Will be done after a delay\n */\n\n }, {\n key: \"unhighlight\",\n value: function unhighlight() {\n if (this.locked) {\n return;\n }\n\n var me = this;\n\n if (this.node) {\n this._cancelUnhighlight(); // do the unhighlighting after a small delay, to prevent re-highlighting\n // the same node when moving from the drag-icon to the contextmenu-icon\n // or vice versa.\n\n\n this.unhighlightTimer = setTimeout(function () {\n me.node.setHighlight(false);\n me.node = undefined;\n me.unhighlightTimer = undefined;\n }, 0);\n }\n }\n /**\n * Cancel an unhighlight action (if before the timeout of the unhighlight action)\n * @private\n */\n\n }, {\n key: \"_cancelUnhighlight\",\n value: function _cancelUnhighlight() {\n if (this.unhighlightTimer) {\n clearTimeout(this.unhighlightTimer);\n this.unhighlightTimer = undefined;\n }\n }\n /**\n * Lock highlighting or unhighlighting nodes.\n * methods highlight and unhighlight do not work while locked.\n */\n\n }, {\n key: \"lock\",\n value: function lock() {\n this.locked = true;\n }\n /**\n * Unlock highlighting or unhighlighting nodes\n */\n\n }, {\n key: \"unlock\",\n value: function unlock() {\n this.locked = false;\n }\n }]);\n\n return Highlighter;\n}();\n// EXTERNAL MODULE: ./src/js/i18n.js\nvar i18n = __webpack_require__(907);\n// EXTERNAL MODULE: ./src/js/jmespathQuery.js\nvar jmespathQuery = __webpack_require__(56);\n// EXTERNAL MODULE: ./src/js/ModeSwitcher.js\nvar ModeSwitcher = __webpack_require__(617);\n// EXTERNAL MODULE: ./node_modules/javascript-natural-sort/naturalSort.js\nvar naturalSort = __webpack_require__(233);\nvar naturalSort_default = /*#__PURE__*/__webpack_require__.n(naturalSort);\n// EXTERNAL MODULE: ./src/js/createAbsoluteAnchor.js\nvar createAbsoluteAnchor = __webpack_require__(602);\n// EXTERNAL MODULE: ./src/js/util.js\nvar util = __webpack_require__(791);\n;// CONCATENATED MODULE: ./src/js/appendNodeFactory.js\n\n\n\n\n\n/**\n * A factory function to create an AppendNode, which depends on a Node\n * @param {Node} Node\n */\n\nfunction appendNodeFactory(Node) {\n /**\n * @constructor AppendNode\n * @extends Node\n * @param {TreeEditor} editor\n * Create a new AppendNode. This is a special node which is created at the\n * end of the list with childs for an object or array\n */\n function AppendNode(editor) {\n /** @type {TreeEditor} */\n this.editor = editor;\n this.dom = {};\n }\n\n AppendNode.prototype = new Node();\n /**\n * Return a table row with an append button.\n * @return {Element} dom TR element\n */\n\n AppendNode.prototype.getDom = function () {\n // TODO: implement a new solution for the append node\n var dom = this.dom;\n\n if (dom.tr) {\n return dom.tr;\n }\n\n this._updateEditability(); // a row for the append button\n\n\n var trAppend = document.createElement('tr');\n trAppend.className = 'jsoneditor-append';\n trAppend.node = this;\n dom.tr = trAppend; // TODO: consistent naming\n\n if (this.editor.options.mode === 'tree') {\n // a cell for the dragarea column\n dom.tdDrag = document.createElement('td'); // create context menu\n\n var tdMenu = document.createElement('td');\n dom.tdMenu = tdMenu;\n var menu = document.createElement('button');\n menu.type = 'button';\n menu.className = 'jsoneditor-button jsoneditor-contextmenu-button';\n menu.title = 'Click to open the actions menu (Ctrl+M)';\n dom.menu = menu;\n tdMenu.appendChild(dom.menu);\n } // a cell for the contents (showing text 'empty')\n\n\n var tdAppend = document.createElement('td');\n var domText = document.createElement('div');\n domText.appendChild(document.createTextNode('(' + (0,i18n/* translate */.Iu)('empty') + ')'));\n domText.className = 'jsoneditor-readonly';\n tdAppend.appendChild(domText);\n dom.td = tdAppend;\n dom.text = domText;\n this.updateDom();\n return trAppend;\n };\n /**\n * Append node doesn't have a path\n * @returns {null}\n */\n\n\n AppendNode.prototype.getPath = function () {\n return null;\n };\n /**\n * Append node doesn't have an index\n * @returns {null}\n */\n\n\n AppendNode.prototype.getIndex = function () {\n return null;\n };\n /**\n * Update the HTML dom of the Node\n */\n\n\n AppendNode.prototype.updateDom = function (options) {\n var dom = this.dom;\n var tdAppend = dom.td;\n\n if (tdAppend) {\n tdAppend.style.paddingLeft = this.getLevel() * 24 + 26 + 'px'; // TODO: not so nice hard coded offset\n }\n\n var domText = dom.text;\n\n if (domText) {\n domText.firstChild.nodeValue = '(' + (0,i18n/* translate */.Iu)('empty') + ' ' + this.parent.type + ')';\n } // attach or detach the contents of the append node:\n // hide when the parent has childs, show when the parent has no childs\n\n\n var trAppend = dom.tr;\n\n if (!this.isVisible()) {\n if (dom.tr.firstChild) {\n if (dom.tdDrag) {\n trAppend.removeChild(dom.tdDrag);\n }\n\n if (dom.tdMenu) {\n trAppend.removeChild(dom.tdMenu);\n }\n\n trAppend.removeChild(tdAppend);\n }\n } else {\n if (!dom.tr.firstChild) {\n if (dom.tdDrag) {\n trAppend.appendChild(dom.tdDrag);\n }\n\n if (dom.tdMenu) {\n trAppend.appendChild(dom.tdMenu);\n }\n\n trAppend.appendChild(tdAppend);\n }\n }\n };\n /**\n * Check whether the AppendNode is currently visible.\n * the AppendNode is visible when its parent has no childs (i.e. is empty).\n * @return {boolean} isVisible\n */\n\n\n AppendNode.prototype.isVisible = function () {\n return this.parent.childs.length === 0;\n };\n /**\n * Show a contextmenu for this node\n * @param {HTMLElement} anchor The element to attach the menu to.\n * @param {function} [onClose] Callback method called when the context menu\n * is being closed.\n */\n\n\n AppendNode.prototype.showContextMenu = function (anchor, onClose) {\n var node = this;\n var appendSubmenu = [{\n text: (0,i18n/* translate */.Iu)('auto'),\n className: 'jsoneditor-type-auto',\n title: (0,i18n/* translate */.Iu)('autoType'),\n click: function click() {\n node._onAppend('', '', 'auto');\n }\n }, {\n text: (0,i18n/* translate */.Iu)('array'),\n className: 'jsoneditor-type-array',\n title: (0,i18n/* translate */.Iu)('arrayType'),\n click: function click() {\n node._onAppend('', []);\n }\n }, {\n text: (0,i18n/* translate */.Iu)('object'),\n className: 'jsoneditor-type-object',\n title: (0,i18n/* translate */.Iu)('objectType'),\n click: function click() {\n node._onAppend('', {});\n }\n }, {\n text: (0,i18n/* translate */.Iu)('string'),\n className: 'jsoneditor-type-string',\n title: (0,i18n/* translate */.Iu)('stringType'),\n click: function click() {\n node._onAppend('', '', 'string');\n }\n }];\n node.addTemplates(appendSubmenu, true);\n var items = [// create append button\n {\n text: (0,i18n/* translate */.Iu)('appendText'),\n title: (0,i18n/* translate */.Iu)('appendTitleAuto'),\n submenuTitle: (0,i18n/* translate */.Iu)('appendSubmenuTitle'),\n className: 'jsoneditor-insert',\n click: function click() {\n node._onAppend('', '', 'auto');\n },\n submenu: appendSubmenu\n }];\n\n if (this.editor.options.onCreateMenu) {\n var path = node.parent.getPath();\n items = this.editor.options.onCreateMenu(items, {\n type: 'append',\n path: path,\n paths: [path]\n });\n }\n\n var menu = new ContextMenu/* ContextMenu */.x(items, {\n close: onClose\n });\n menu.show(anchor, this.editor.getPopupAnchor());\n };\n /**\n * Handle an event. The event is caught centrally by the editor\n * @param {Event} event\n */\n\n\n AppendNode.prototype.onEvent = function (event) {\n var type = event.type;\n var target = event.target || event.srcElement;\n var dom = this.dom; // highlight the append nodes parent\n\n var menu = dom.menu;\n\n if (target === menu) {\n if (type === 'mouseover') {\n this.editor.highlighter.highlight(this.parent);\n } else if (type === 'mouseout') {\n this.editor.highlighter.unhighlight();\n }\n } // context menu events\n\n\n if (type === 'click' && target === dom.menu) {\n var highlighter = this.editor.highlighter;\n highlighter.highlight(this.parent);\n highlighter.lock();\n (0,util.addClassName)(dom.menu, 'jsoneditor-selected');\n this.showContextMenu(dom.menu, function () {\n (0,util.removeClassName)(dom.menu, 'jsoneditor-selected');\n highlighter.unlock();\n highlighter.unhighlight();\n });\n }\n\n if (type === 'keydown') {\n this.onKeyDown(event);\n }\n };\n\n return AppendNode;\n}\n;// CONCATENATED MODULE: ./src/js/showMoreNodeFactory.js\n\n\n\n/**\n * A factory function to create an ShowMoreNode, which depends on a Node\n * @param {function} Node\n */\n\nfunction showMoreNodeFactory(Node) {\n /**\n * @constructor ShowMoreNode\n * @extends Node\n * @param {TreeEditor} editor\n * @param {Node} parent\n * Create a new ShowMoreNode. This is a special node which is created\n * for arrays or objects having more than 100 items\n */\n function ShowMoreNode(editor, parent) {\n /** @type {TreeEditor} */\n this.editor = editor;\n this.parent = parent;\n this.dom = {};\n }\n\n ShowMoreNode.prototype = new Node();\n /**\n * Return a table row with an append button.\n * @return {Element} dom TR element\n */\n\n ShowMoreNode.prototype.getDom = function () {\n if (this.dom.tr) {\n return this.dom.tr;\n }\n\n this._updateEditability(); // display \"show more\"\n\n\n if (!this.dom.tr) {\n var me = this;\n var parent = this.parent;\n var showMoreButton = document.createElement('a');\n showMoreButton.appendChild(document.createTextNode((0,i18n/* translate */.Iu)('showMore')));\n showMoreButton.href = '#';\n\n showMoreButton.onclick = function (event) {\n // TODO: use callback instead of accessing a method of the parent\n parent.visibleChilds = Math.floor(parent.visibleChilds / parent.getMaxVisibleChilds() + 1) * parent.getMaxVisibleChilds();\n me.updateDom();\n parent.showChilds();\n event.preventDefault();\n return false;\n };\n\n var showAllButton = document.createElement('a');\n showAllButton.appendChild(document.createTextNode((0,i18n/* translate */.Iu)('showAll')));\n showAllButton.href = '#';\n\n showAllButton.onclick = function (event) {\n // TODO: use callback instead of accessing a method of the parent\n parent.visibleChilds = Infinity;\n me.updateDom();\n parent.showChilds();\n event.preventDefault();\n return false;\n };\n\n var moreContents = document.createElement('div');\n var moreText = document.createTextNode(this._getShowMoreText());\n moreContents.className = 'jsoneditor-show-more';\n moreContents.appendChild(moreText);\n moreContents.appendChild(showMoreButton);\n moreContents.appendChild(document.createTextNode('. '));\n moreContents.appendChild(showAllButton);\n moreContents.appendChild(document.createTextNode('. '));\n var tdContents = document.createElement('td');\n tdContents.appendChild(moreContents);\n var moreTr = document.createElement('tr');\n\n if (this.editor.options.mode === 'tree') {\n moreTr.appendChild(document.createElement('td'));\n moreTr.appendChild(document.createElement('td'));\n }\n\n moreTr.appendChild(tdContents);\n moreTr.className = 'jsoneditor-show-more';\n this.dom.tr = moreTr;\n this.dom.moreContents = moreContents;\n this.dom.moreText = moreText;\n }\n\n this.updateDom();\n return this.dom.tr;\n };\n /**\n * Update the HTML dom of the Node\n */\n\n\n ShowMoreNode.prototype.updateDom = function (options) {\n if (this.isVisible()) {\n // attach to the right child node (the first non-visible child)\n this.dom.tr.node = this.parent.childs[this.parent.visibleChilds];\n\n if (!this.dom.tr.parentNode) {\n var nextTr = this.parent._getNextTr();\n\n if (nextTr) {\n nextTr.parentNode.insertBefore(this.dom.tr, nextTr);\n }\n } // update the counts in the text\n\n\n this.dom.moreText.nodeValue = this._getShowMoreText(); // update left margin\n\n this.dom.moreContents.style.marginLeft = (this.getLevel() + 1) * 24 + 'px';\n } else {\n if (this.dom.tr && this.dom.tr.parentNode) {\n this.dom.tr.parentNode.removeChild(this.dom.tr);\n }\n }\n };\n\n ShowMoreNode.prototype._getShowMoreText = function () {\n return (0,i18n/* translate */.Iu)('showMoreStatus', {\n visibleChilds: this.parent.visibleChilds,\n totalChilds: this.parent.childs.length\n }) + ' ';\n };\n /**\n * Check whether the ShowMoreNode is currently visible.\n * the ShowMoreNode is visible when it's parent has more childs than\n * the current visibleChilds\n * @return {boolean} isVisible\n */\n\n\n ShowMoreNode.prototype.isVisible = function () {\n return this.parent.expanded && this.parent.childs.length > this.parent.visibleChilds;\n };\n /**\n * Handle an event. The event is caught centrally by the editor\n * @param {Event} event\n */\n\n\n ShowMoreNode.prototype.onEvent = function (event) {\n var type = event.type;\n\n if (type === 'keydown') {\n this.onKeyDown(event);\n }\n };\n\n return ShowMoreNode;\n}\n// EXTERNAL MODULE: ./src/js/showSortModal.js\nvar js_showSortModal = __webpack_require__(210);\n// EXTERNAL MODULE: ./src/js/showTransformModal.js + 1 modules\nvar js_showTransformModal = __webpack_require__(558);\n// EXTERNAL MODULE: ./src/js/constants.js\nvar constants = __webpack_require__(188);\n;// CONCATENATED MODULE: ./src/js/Node.js\n\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction Node_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Node_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction Node_createClass(Constructor, protoProps, staticProps) { if (protoProps) Node_defineProperties(Constructor.prototype, protoProps); if (staticProps) Node_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n/**\n * @constructor Node\n * Create a new Node\n * @param {./treemode} editor\n * @param {Object} [params] Can contain parameters:\n * {string} field\n * {boolean} fieldEditable\n * {*} value\n * {String} type Can have values 'auto', 'array',\n * 'object', or 'string'.\n */\n\nvar Node = /*#__PURE__*/function () {\n function Node(editor, params) {\n Node_classCallCheck(this, Node);\n\n /** @type {./treemode} */\n this.editor = editor;\n this.dom = {};\n this.expanded = false;\n\n if (params && params instanceof Object) {\n this.setField(params.field, params.fieldEditable);\n\n if ('value' in params) {\n this.setValue(params.value, params.type);\n }\n\n if ('internalValue' in params) {\n this.setInternalValue(params.internalValue);\n }\n } else {\n this.setField('');\n this.setValue(null);\n }\n\n this._debouncedOnChangeValue = (0,util.debounce)(this._onChangeValue.bind(this), Node.prototype.DEBOUNCE_INTERVAL);\n this._debouncedOnChangeField = (0,util.debounce)(this._onChangeField.bind(this), Node.prototype.DEBOUNCE_INTERVAL); // starting value for visible children\n\n this.visibleChilds = this.getMaxVisibleChilds();\n }\n\n Node_createClass(Node, [{\n key: \"getMaxVisibleChilds\",\n value: function getMaxVisibleChilds() {\n return this.editor && this.editor.options && this.editor.options.maxVisibleChilds ? this.editor.options.maxVisibleChilds : DEFAULT_MAX_VISIBLE_CHILDS;\n }\n /**\n * Determine whether the field and/or value of this node are editable\n * @private\n */\n\n }, {\n key: \"_updateEditability\",\n value: function _updateEditability() {\n this.editable = {\n field: true,\n value: true\n };\n\n if (this.editor) {\n this.editable.field = this.editor.options.mode === 'tree';\n this.editable.value = this.editor.options.mode !== 'view';\n\n if ((this.editor.options.mode === 'tree' || this.editor.options.mode === 'form') && typeof this.editor.options.onEditable === 'function') {\n var getValue = this.getValue.bind(this);\n var editable = this.editor.options.onEditable({\n field: this.field,\n\n get value() {\n return getValue();\n },\n\n path: this.getPath()\n });\n\n if (typeof editable === 'boolean') {\n this.editable.field = editable;\n this.editable.value = editable;\n } else if (_typeof(editable) === 'object' && editable !== null) {\n if (typeof editable.field === 'boolean') this.editable.field = editable.field;\n if (typeof editable.value === 'boolean') this.editable.value = editable.value;\n } else {\n console.error('Invalid return value for function onEditable.', 'Actual value:', editable, '.', 'Either a boolean or object { field: boolean, value: boolean } expected.');\n this.editable.field = false;\n this.editable.value = false;\n }\n }\n }\n }\n /**\n * Get the path of this node\n * @return {{string|number}[]} Array containing the path to this node.\n * Element is a number if is the index of an array, a string otherwise.\n */\n\n }, {\n key: \"getPath\",\n value: function getPath() {\n var node = this;\n var path = [];\n\n while (node) {\n var field = node.getName();\n\n if (field !== undefined) {\n path.unshift(field);\n }\n\n node = node.parent;\n }\n\n return path;\n }\n /**\n * Get the internal path of this node, a list with the child indexes.\n * @return {String[]} Array containing the internal path to this node\n */\n\n }, {\n key: \"getInternalPath\",\n value: function getInternalPath() {\n var node = this;\n var internalPath = [];\n\n while (node) {\n if (node.parent) {\n internalPath.unshift(node.getIndex());\n }\n\n node = node.parent;\n }\n\n return internalPath;\n }\n /**\n * Get node serializable name\n * @returns {String|Number}\n */\n\n }, {\n key: \"getName\",\n value: function getName() {\n return !this.parent ? undefined // do not add an (optional) field name of the root node\n : this.parent.type !== 'array' ? this.field : this.index;\n }\n /**\n * Find child node by serializable path\n * @param {Array<String>} path\n */\n\n }, {\n key: \"findNodeByPath\",\n value: function findNodeByPath(path) {\n if (!path) {\n return;\n }\n\n if (path.length === 0) {\n return this;\n }\n\n if (path.length && this.childs && this.childs.length) {\n for (var i = 0; i < this.childs.length; ++i) {\n if ('' + path[0] === '' + this.childs[i].getName()) {\n return this.childs[i].findNodeByPath(path.slice(1));\n }\n }\n }\n }\n /**\n * Find child node by an internal path: the indexes of the childs nodes\n * @param {Array<String>} internalPath\n * @return {Node | undefined} Returns the node if the path exists.\n * Returns undefined otherwise.\n */\n\n }, {\n key: \"findNodeByInternalPath\",\n value: function findNodeByInternalPath(internalPath) {\n if (!internalPath) {\n return undefined;\n }\n\n var node = this;\n\n for (var i = 0; i < internalPath.length && node; i++) {\n var childIndex = internalPath[i];\n node = node.childs[childIndex];\n }\n\n return node;\n }\n /**\n * @typedef {{value: String|Object|Number|Boolean, path: Array.<String|Number>}} SerializableNode\n *\n * Returns serializable representation for the node\n * @return {SerializableNode}\n */\n\n }, {\n key: \"serialize\",\n value: function serialize() {\n return {\n value: this.getValue(),\n path: this.getPath()\n };\n }\n /**\n * Find a Node from a JSON path like '.items[3].name'\n * @param {string} jsonPath\n * @return {Node | null} Returns the Node when found, returns null if not found\n */\n\n }, {\n key: \"findNode\",\n value: function findNode(jsonPath) {\n var path = (0,util.parsePath)(jsonPath);\n var node = this;\n\n var _loop = function _loop() {\n var prop = path.shift();\n\n if (typeof prop === 'number') {\n if (node.type !== 'array') {\n throw new Error('Cannot get child node at index ' + prop + ': node is no array');\n }\n\n node = node.childs[prop];\n } else {\n // string\n if (node.type !== 'object') {\n throw new Error('Cannot get child node ' + prop + ': node is no object');\n }\n\n node = node.childs.filter(function (child) {\n return child.field === prop;\n })[0];\n }\n };\n\n while (node && path.length > 0) {\n _loop();\n }\n\n return node;\n }\n /**\n * Find all parents of this node. The parents are ordered from root node towards\n * the original node.\n * @return {Array.<Node>}\n */\n\n }, {\n key: \"findParents\",\n value: function findParents() {\n var parents = [];\n var parent = this.parent;\n\n while (parent) {\n parents.unshift(parent);\n parent = parent.parent;\n }\n\n return parents;\n }\n /**\n *\n * @param {{dataPath: string, keyword: string, message: string, params: Object, schemaPath: string} | null} error\n * @param {Node} [child] When this is the error of a parent node, pointing\n * to an invalid child node, the child node itself\n * can be provided. If provided, clicking the error\n * icon will set focus to the invalid child node.\n */\n\n }, {\n key: \"setError\",\n value: function setError(error, child) {\n this.error = error;\n this.errorChild = child;\n\n if (this.dom && this.dom.tr) {\n this.updateError();\n }\n }\n /**\n * Render the error\n */\n\n }, {\n key: \"updateError\",\n value: function updateError() {\n var _this = this;\n\n var error = this.fieldError || this.valueError || this.error;\n var tdError = this.dom.tdError;\n\n if (error && this.dom && this.dom.tr) {\n (0,util.addClassName)(this.dom.tr, 'jsoneditor-validation-error');\n\n if (!tdError) {\n tdError = document.createElement('td');\n this.dom.tdError = tdError;\n this.dom.tdValue.parentNode.appendChild(tdError);\n }\n\n var button = document.createElement('button');\n button.type = 'button';\n button.className = 'jsoneditor-button jsoneditor-schema-error';\n\n var destroy = function destroy() {\n if (_this.dom.popupAnchor) {\n _this.dom.popupAnchor.destroy(); // this will trigger the onDestroy callback\n\n }\n };\n\n var onDestroy = function onDestroy() {\n delete _this.dom.popupAnchor;\n };\n\n var createPopup = function createPopup(destroyOnMouseOut) {\n var frame = _this.editor.frame;\n _this.dom.popupAnchor = (0,createAbsoluteAnchor/* createAbsoluteAnchor */.w)(button, _this.editor.getPopupAnchor(), onDestroy, destroyOnMouseOut);\n var popupWidth = 200; // must correspond to what's configured in the CSS\n\n var buttonRect = button.getBoundingClientRect();\n var frameRect = frame.getBoundingClientRect();\n var position = frameRect.width - buttonRect.x > popupWidth / 2 + 20 ? 'jsoneditor-above' : 'jsoneditor-left';\n var popover = document.createElement('div');\n popover.className = 'jsoneditor-popover ' + position;\n popover.appendChild(document.createTextNode(error.message));\n\n _this.dom.popupAnchor.appendChild(popover);\n };\n\n button.onmouseover = function () {\n if (!_this.dom.popupAnchor) {\n createPopup(true);\n }\n };\n\n button.onfocus = function () {\n destroy();\n createPopup(false);\n };\n\n button.onblur = function () {\n destroy();\n }; // when clicking the error icon, expand all nodes towards the invalid\n // child node, and set focus to the child node\n\n\n var child = this.errorChild;\n\n if (child) {\n button.onclick = function showInvalidNode() {\n child.findParents().forEach(function (parent) {\n parent.expand(false);\n });\n child.scrollTo(function () {\n child.focus();\n });\n };\n } // apply the error message to the node\n\n\n while (tdError.firstChild) {\n tdError.removeChild(tdError.firstChild);\n }\n\n tdError.appendChild(button);\n } else {\n if (this.dom.tr) {\n (0,util.removeClassName)(this.dom.tr, 'jsoneditor-validation-error');\n }\n\n if (tdError) {\n this.dom.tdError.parentNode.removeChild(this.dom.tdError);\n delete this.dom.tdError;\n }\n }\n }\n /**\n * Get the index of this node: the index in the list of childs where this\n * node is part of\n * @return {number | null} Returns the index, or null if this is the root node\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex() {\n if (this.parent) {\n var index = this.parent.childs.indexOf(this);\n return index !== -1 ? index : null;\n } else {\n return -1;\n }\n }\n /**\n * Set parent node\n * @param {Node} parent\n */\n\n }, {\n key: \"setParent\",\n value: function setParent(parent) {\n this.parent = parent;\n }\n /**\n * Set field\n * @param {String} field\n * @param {boolean} [fieldEditable]\n */\n\n }, {\n key: \"setField\",\n value: function setField(field, fieldEditable) {\n this.field = field;\n this.previousField = field;\n this.fieldEditable = fieldEditable === true;\n }\n /**\n * Get field\n * @return {String}\n */\n\n }, {\n key: \"getField\",\n value: function getField() {\n if (this.field === undefined) {\n this._getDomField();\n }\n\n return this.field;\n }\n /**\n * Set value. Value is a JSON structure or an element String, Boolean, etc.\n * @param {*} value\n * @param {String} [type] Specify the type of the value. Can be 'auto',\n * 'array', 'object', or 'string'\n */\n\n }, {\n key: \"setValue\",\n value: function setValue(value, type) {\n var childValue, child;\n var i, j;\n var updateDom = false;\n var previousChilds = this.childs;\n this.type = this._getType(value); // check if type corresponds with the provided type\n\n if (type && type !== this.type) {\n if (type === 'string' && this.type === 'auto') {\n this.type = type;\n } else {\n throw new Error('Type mismatch: ' + 'cannot cast value of type \"' + this.type + ' to the specified type \"' + type + '\"');\n }\n }\n\n if (this.type === 'array') {\n // array\n if (!this.childs) {\n this.childs = [];\n }\n\n for (i = 0; i < value.length; i++) {\n childValue = value[i];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n if (i < this.childs.length) {\n // reuse existing child, keep its state\n child = this.childs[i];\n child.fieldEditable = false;\n child.index = i;\n child.setValue(childValue);\n } else {\n // create a new child\n child = new Node(this.editor, {\n value: childValue\n });\n var visible = i < this.getMaxVisibleChilds();\n this.appendChild(child, visible, updateDom);\n }\n }\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length; j >= value.length; j--) {\n this.removeChild(this.childs[j], updateDom);\n }\n } else if (this.type === 'object') {\n // object\n if (!this.childs) {\n this.childs = [];\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length - 1; j >= 0; j--) {\n if (!Node_hasOwnProperty(value, this.childs[j].field)) {\n this.removeChild(this.childs[j], updateDom);\n }\n }\n\n i = 0;\n\n for (var childField in value) {\n if (Node_hasOwnProperty(value, childField)) {\n childValue = value[childField];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n var _child = this.findChildByProperty(childField);\n\n if (_child) {\n // reuse existing child, keep its state\n _child.setField(childField, true);\n\n _child.setValue(childValue);\n } else {\n // create a new child, append to the end\n var newChild = new Node(this.editor, {\n field: childField,\n value: childValue\n });\n\n var _visible = i < this.getMaxVisibleChilds();\n\n this.appendChild(newChild, _visible, updateDom);\n }\n }\n\n i++;\n }\n }\n\n this.value = ''; // sort object keys during initialization. Must not trigger an onChange action\n\n if (this.editor.options.sortObjectKeys === true) {\n var triggerAction = false;\n this.sort([], 'asc', triggerAction);\n }\n } else {\n // value\n this.hideChilds();\n delete this.append;\n delete this.showMore;\n delete this.expanded;\n delete this.childs;\n this.value = value;\n } // recreate the DOM if switching from an object/array to auto/string or vice versa\n // needed to recreated the expand button for example\n\n\n if (Array.isArray(previousChilds) !== Array.isArray(this.childs)) {\n this.recreateDom();\n }\n\n this.updateDom({\n updateIndexes: true\n });\n this.previousValue = this.value; // used only to check for changes in DOM vs JS model\n }\n /**\n * Set internal value\n * @param {*} internalValue Internal value structure keeping type,\n * order and duplicates in objects\n */\n\n }, {\n key: \"setInternalValue\",\n value: function setInternalValue(internalValue) {\n var childValue, child, visible;\n var i, j;\n var notUpdateDom = false;\n var previousChilds = this.childs;\n this.type = internalValue.type;\n\n if (internalValue.type === 'array') {\n // array\n if (!this.childs) {\n this.childs = [];\n }\n\n for (i = 0; i < internalValue.childs.length; i++) {\n childValue = internalValue.childs[i];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n if (i < this.childs.length) {\n // reuse existing child, keep its state\n child = this.childs[i];\n child.fieldEditable = false;\n child.index = i;\n child.setInternalValue(childValue);\n } else {\n // create a new child\n child = new Node(this.editor, {\n internalValue: childValue\n });\n visible = i < this.getMaxVisibleChilds();\n this.appendChild(child, visible, notUpdateDom);\n }\n }\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length; j >= internalValue.childs.length; j--) {\n this.removeChild(this.childs[j], notUpdateDom);\n }\n } else if (internalValue.type === 'object') {\n // object\n if (!this.childs) {\n this.childs = [];\n }\n\n for (i = 0; i < internalValue.childs.length; i++) {\n childValue = internalValue.childs[i];\n\n if (childValue !== undefined && !(childValue instanceof Function)) {\n if (i < this.childs.length) {\n // reuse existing child, keep its state\n child = this.childs[i];\n delete child.index;\n child.setField(childValue.field, true);\n child.setInternalValue(childValue.value);\n } else {\n // create a new child\n child = new Node(this.editor, {\n field: childValue.field,\n internalValue: childValue.value\n });\n visible = i < this.getMaxVisibleChilds();\n this.appendChild(child, visible, notUpdateDom);\n }\n }\n } // cleanup redundant childs\n // we loop backward to prevent issues with shifting index numbers\n\n\n for (j = this.childs.length; j >= internalValue.childs.length; j--) {\n this.removeChild(this.childs[j], notUpdateDom);\n }\n } else {\n // value\n this.hideChilds();\n delete this.append;\n delete this.showMore;\n delete this.expanded;\n delete this.childs;\n this.value = internalValue.value;\n } // recreate the DOM if switching from an object/array to auto/string or vice versa\n // needed to recreated the expand button for example\n\n\n if (Array.isArray(previousChilds) !== Array.isArray(this.childs)) {\n this.recreateDom();\n }\n\n this.updateDom({\n updateIndexes: true\n });\n this.previousValue = this.value; // used only to check for changes in DOM vs JS model\n }\n /**\n * Remove the DOM of this node and it's childs and recreate it again\n */\n\n }, {\n key: \"recreateDom\",\n value: function recreateDom() {\n if (this.dom && this.dom.tr && this.dom.tr.parentNode) {\n var domAnchor = this._detachFromDom();\n\n this.clearDom();\n\n this._attachToDom(domAnchor);\n } else {\n this.clearDom();\n }\n }\n /**\n * Get value. Value is a JSON structure\n * @return {*} value\n */\n\n }, {\n key: \"getValue\",\n value: function getValue() {\n if (this.type === 'array') {\n var arr = [];\n this.childs.forEach(function (child) {\n arr.push(child.getValue());\n });\n return arr;\n } else if (this.type === 'object') {\n var obj = {};\n this.childs.forEach(function (child) {\n obj[child.getField()] = child.getValue();\n });\n return obj;\n } else {\n if (this.value === undefined) {\n this._getDomValue();\n }\n\n return this.value;\n }\n }\n /**\n * Get internal value, a structure which maintains ordering and duplicates in objects\n * @return {*} value\n */\n\n }, {\n key: \"getInternalValue\",\n value: function getInternalValue() {\n if (this.type === 'array') {\n return {\n type: this.type,\n childs: this.childs.map(function (child) {\n return child.getInternalValue();\n })\n };\n } else if (this.type === 'object') {\n return {\n type: this.type,\n childs: this.childs.map(function (child) {\n return {\n field: child.getField(),\n value: child.getInternalValue()\n };\n })\n };\n } else {\n if (this.value === undefined) {\n this._getDomValue();\n }\n\n return {\n type: this.type,\n value: this.value\n };\n }\n }\n /**\n * Get the nesting level of this node\n * @return {Number} level\n */\n\n }, {\n key: \"getLevel\",\n value: function getLevel() {\n return this.parent ? this.parent.getLevel() + 1 : 0;\n }\n /**\n * Get jsonpath of the current node\n * @return {Node[]} Returns an array with nodes\n */\n\n }, {\n key: \"getNodePath\",\n value: function getNodePath() {\n var path = this.parent ? this.parent.getNodePath() : [];\n path.push(this);\n return path;\n }\n /**\n * Create a clone of a node\n * The complete state of a clone is copied, including whether it is expanded or\n * not. The DOM elements are not cloned.\n * @return {Node} clone\n */\n\n }, {\n key: \"clone\",\n value: function clone() {\n var clone = new Node(this.editor);\n clone.type = this.type;\n clone.field = this.field;\n clone.fieldInnerText = this.fieldInnerText;\n clone.fieldEditable = this.fieldEditable;\n clone.previousField = this.previousField;\n clone.value = this.value;\n clone.valueInnerText = this.valueInnerText;\n clone.previousValue = this.previousValue;\n clone.expanded = this.expanded;\n clone.visibleChilds = this.visibleChilds;\n\n if (this.childs) {\n // an object or array\n var cloneChilds = [];\n this.childs.forEach(function (child) {\n var childClone = child.clone();\n childClone.setParent(clone);\n cloneChilds.push(childClone);\n });\n clone.childs = cloneChilds;\n } else {\n // a value\n clone.childs = undefined;\n }\n\n return clone;\n }\n /**\n * Expand this node and optionally its childs.\n * @param {boolean} [recurse] Optional recursion, true by default. When\n * true, all childs will be expanded recursively\n */\n\n }, {\n key: \"expand\",\n value: function expand(recurse) {\n if (!this.childs) {\n return;\n } // set this node expanded\n\n\n this.expanded = true;\n\n if (this.dom.expand) {\n this.dom.expand.className = 'jsoneditor-button jsoneditor-expanded';\n }\n\n this.showChilds();\n\n if (recurse !== false) {\n this.childs.forEach(function (child) {\n child.expand(recurse);\n });\n } // update the css classes of table row, and fire onClassName etc\n\n\n this.updateDom({\n recurse: false\n });\n }\n /**\n * Collapse this node and optionally its childs.\n * @param {boolean} [recurse] Optional recursion, true by default. When\n * true, all childs will be collapsed recursively\n */\n\n }, {\n key: \"collapse\",\n value: function collapse(recurse) {\n if (!this.childs) {\n return;\n }\n\n this.hideChilds(); // collapse childs in case of recurse\n\n if (recurse !== false) {\n this.childs.forEach(function (child) {\n child.collapse(recurse);\n });\n } // make this node collapsed\n\n\n if (this.dom.expand) {\n this.dom.expand.className = 'jsoneditor-button jsoneditor-collapsed';\n }\n\n this.expanded = false; // update the css classes of table row, and fire onClassName etc\n\n this.updateDom({\n recurse: false\n });\n }\n /**\n * Recursively show all childs when they are expanded\n */\n\n }, {\n key: \"showChilds\",\n value: function showChilds() {\n var childs = this.childs;\n\n if (!childs) {\n return;\n }\n\n if (!this.expanded) {\n return;\n }\n\n var tr = this.dom.tr;\n var nextTr;\n var table = tr ? tr.parentNode : undefined;\n\n if (table) {\n // show row with append button\n var append = this.getAppendDom();\n\n if (!append.parentNode) {\n nextTr = tr.nextSibling;\n\n if (nextTr) {\n table.insertBefore(append, nextTr);\n } else {\n table.appendChild(append);\n }\n } // show childs\n\n\n var iMax = Math.min(this.childs.length, this.visibleChilds);\n nextTr = this._getNextTr();\n\n for (var i = 0; i < iMax; i++) {\n var child = this.childs[i];\n\n if (!child.getDom().parentNode) {\n table.insertBefore(child.getDom(), nextTr);\n }\n\n child.showChilds();\n } // show \"show more childs\" if limited\n\n\n var showMore = this.getShowMoreDom();\n nextTr = this._getNextTr();\n\n if (!showMore.parentNode) {\n table.insertBefore(showMore, nextTr);\n }\n\n this.showMore.updateDom(); // to update the counter\n }\n }\n }, {\n key: \"_getNextTr\",\n value: function _getNextTr() {\n if (this.showMore && this.showMore.getDom().parentNode) {\n return this.showMore.getDom();\n }\n\n if (this.append && this.append.getDom().parentNode) {\n return this.append.getDom();\n }\n }\n /**\n * Hide the node with all its childs\n * @param {{resetVisibleChilds: boolean}} [options]\n */\n\n }, {\n key: \"hide\",\n value: function hide(options) {\n var tr = this.dom.tr;\n var table = tr ? tr.parentNode : undefined;\n\n if (table) {\n table.removeChild(tr);\n }\n\n if (this.dom.popupAnchor) {\n this.dom.popupAnchor.destroy();\n }\n\n this.hideChilds(options);\n }\n /**\n * Recursively hide all childs\n * @param {{resetVisibleChilds: boolean}} [options]\n */\n\n }, {\n key: \"hideChilds\",\n value: function hideChilds(options) {\n var childs = this.childs;\n\n if (!childs) {\n return;\n }\n\n if (!this.expanded) {\n return;\n } // hide append row\n\n\n var append = this.getAppendDom();\n\n if (append.parentNode) {\n append.parentNode.removeChild(append);\n } // hide childs\n\n\n this.childs.forEach(function (child) {\n child.hide();\n }); // hide \"show more\" row\n\n var showMore = this.getShowMoreDom();\n\n if (showMore.parentNode) {\n showMore.parentNode.removeChild(showMore);\n } // reset max visible childs\n\n\n if (!options || options.resetVisibleChilds) {\n this.visibleChilds = this.getMaxVisibleChilds();\n }\n }\n /**\n * set custom css classes on a node\n */\n\n }, {\n key: \"_updateCssClassName\",\n value: function _updateCssClassName() {\n if (this.dom.field && this.editor && this.editor.options && typeof this.editor.options.onClassName === 'function' && this.dom.tree) {\n (0,util.removeAllClassNames)(this.dom.tree);\n var getValue = this.getValue.bind(this);\n var addClasses = this.editor.options.onClassName({\n path: this.getPath(),\n field: this.field,\n\n get value() {\n return getValue();\n }\n\n }) || '';\n (0,util.addClassName)(this.dom.tree, 'jsoneditor-values ' + addClasses);\n }\n }\n }, {\n key: \"recursivelyUpdateCssClassesOnNodes\",\n value: function recursivelyUpdateCssClassesOnNodes() {\n this._updateCssClassName();\n\n if (Array.isArray(this.childs)) {\n for (var i = 0; i < this.childs.length; i++) {\n this.childs[i].recursivelyUpdateCssClassesOnNodes();\n }\n }\n }\n /**\n * Goes through the path from the node to the root and ensures that it is expanded\n */\n\n }, {\n key: \"expandTo\",\n value: function expandTo() {\n var currentNode = this.parent;\n\n while (currentNode) {\n if (!currentNode.expanded) {\n currentNode.expand();\n }\n\n currentNode = currentNode.parent;\n }\n }\n /**\n * Add a new child to the node.\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {boolean} [visible] If true (default), the child will be rendered\n * @param {boolean} [updateDom] If true (default), the DOM of both parent\n * node and appended node will be updated\n * (child count, indexes)\n */\n\n }, {\n key: \"appendChild\",\n value: function appendChild(node, visible, updateDom) {\n if (this._hasChilds()) {\n // adjust the link to the parent\n node.setParent(this);\n node.fieldEditable = this.type === 'object';\n\n if (this.type === 'array') {\n node.index = this.childs.length;\n }\n\n if (this.type === 'object' && node.field === undefined) {\n // initialize field value if needed\n node.setField('');\n }\n\n this.childs.push(node);\n\n if (this.expanded && visible !== false) {\n // insert into the DOM, before the appendRow\n var newTr = node.getDom();\n\n var nextTr = this._getNextTr();\n\n var table = nextTr ? nextTr.parentNode : undefined;\n\n if (nextTr && table) {\n table.insertBefore(newTr, nextTr);\n }\n\n node.showChilds();\n this.visibleChilds++;\n }\n\n if (updateDom !== false) {\n this.updateDom({\n updateIndexes: true\n });\n node.updateDom({\n recurse: true\n });\n }\n }\n }\n /**\n * Move a node from its current parent to this node\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {Node} beforeNode\n * @param {boolean} [updateDom] If true (default), the DOM of both parent\n * node and appended node will be updated\n * (child count, indexes)\n */\n\n }, {\n key: \"moveBefore\",\n value: function moveBefore(node, beforeNode, updateDom) {\n if (this._hasChilds()) {\n // create a temporary row, to prevent the scroll position from jumping\n // when removing the node\n var tbody = this.dom.tr ? this.dom.tr.parentNode : undefined;\n var trTemp;\n\n if (tbody) {\n trTemp = document.createElement('tr');\n trTemp.style.height = tbody.clientHeight + 'px';\n tbody.appendChild(trTemp);\n }\n\n if (node.parent) {\n node.parent.removeChild(node);\n }\n\n if (beforeNode instanceof AppendNode || !beforeNode) {\n // the this.childs.length + 1 is to reckon with the node that we're about to add\n if (this.childs.length + 1 > this.visibleChilds) {\n var lastVisibleNode = this.childs[this.visibleChilds - 1];\n this.insertBefore(node, lastVisibleNode, updateDom);\n } else {\n var visible = true;\n this.appendChild(node, visible, updateDom);\n }\n } else {\n this.insertBefore(node, beforeNode, updateDom);\n }\n\n if (tbody && trTemp) {\n tbody.removeChild(trTemp);\n }\n }\n }\n /**\n * Insert a new child before a given node\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {Node} beforeNode\n * @param {boolean} [updateDom] If true (default), the DOM of both parent\n * node and appended node will be updated\n * (child count, indexes)\n */\n\n }, {\n key: \"insertBefore\",\n value: function insertBefore(node, beforeNode, updateDom) {\n if (this._hasChilds()) {\n this.visibleChilds++; // initialize field value if needed\n\n if (this.type === 'object' && node.field === undefined) {\n node.setField('');\n }\n\n if (beforeNode === this.append) {\n // append to the child nodes\n // adjust the link to the parent\n node.setParent(this);\n node.fieldEditable = this.type === 'object';\n this.childs.push(node);\n } else {\n // insert before a child node\n var index = this.childs.indexOf(beforeNode);\n\n if (index === -1) {\n throw new Error('Node not found');\n } // adjust the link to the parent\n\n\n node.setParent(this);\n node.fieldEditable = this.type === 'object';\n this.childs.splice(index, 0, node);\n }\n\n if (this.expanded) {\n // insert into the DOM\n var newTr = node.getDom();\n var nextTr = beforeNode.getDom();\n var table = nextTr ? nextTr.parentNode : undefined;\n\n if (nextTr && table) {\n table.insertBefore(newTr, nextTr);\n }\n\n node.showChilds();\n this.showChilds();\n }\n\n if (updateDom !== false) {\n this.updateDom({\n updateIndexes: true\n });\n node.updateDom({\n recurse: true\n });\n }\n }\n }\n /**\n * Insert a new child before a given node\n * Only applicable when Node value is of type array or object\n * @param {Node} node\n * @param {Node} afterNode\n */\n\n }, {\n key: \"insertAfter\",\n value: function insertAfter(node, afterNode) {\n if (this._hasChilds()) {\n var index = this.childs.indexOf(afterNode);\n var beforeNode = this.childs[index + 1];\n\n if (beforeNode) {\n this.insertBefore(node, beforeNode);\n } else {\n this.appendChild(node);\n }\n }\n }\n /**\n * Search in this node\n * Searches are case insensitive.\n * @param {String} text\n * @param {Node[]} [results] Array where search results will be added\n * used to count and limit the results whilst iterating\n * @return {Node[]} results Array with nodes containing the search text\n */\n\n }, {\n key: \"search\",\n value: function search(text, results) {\n if (!Array.isArray(results)) {\n results = [];\n }\n\n var index;\n var search = text ? text.toLowerCase() : undefined; // delete old search data\n\n delete this.searchField;\n delete this.searchValue; // search in field\n\n if (this.field !== undefined && results.length <= this.MAX_SEARCH_RESULTS) {\n var field = String(this.field).toLowerCase();\n index = field.indexOf(search);\n\n if (index !== -1) {\n this.searchField = true;\n results.push({\n node: this,\n elem: 'field'\n });\n } // update dom\n\n\n this._updateDomField();\n } // search in value\n\n\n if (this._hasChilds()) {\n // array, object\n // search the nodes childs\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.search(text, results);\n });\n }\n } else {\n // string, auto\n if (this.value !== undefined && results.length <= this.MAX_SEARCH_RESULTS) {\n var value = String(this.value).toLowerCase();\n index = value.indexOf(search);\n\n if (index !== -1) {\n this.searchValue = true;\n results.push({\n node: this,\n elem: 'value'\n });\n } // update dom\n\n\n this._updateDomValue();\n }\n }\n\n return results;\n }\n /**\n * Move the scroll position such that this node is in the visible area.\n * The node will not get the focus\n * @param {function(boolean)} [callback]\n */\n\n }, {\n key: \"scrollTo\",\n value: function scrollTo(callback) {\n this.expandPathToNode();\n\n if (this.dom.tr && this.dom.tr.parentNode) {\n this.editor.scrollTo(this.dom.tr.offsetTop, callback);\n }\n }\n /**\n * if the node is not visible, expand its parents\n */\n\n }, {\n key: \"expandPathToNode\",\n value: function expandPathToNode() {\n var node = this;\n var recurse = false;\n\n while (node && node.parent) {\n // expand visible childs of the parent if needed\n var index = node.parent.type === 'array' ? node.index : node.parent.childs.indexOf(node);\n\n while (node.parent.visibleChilds < index + 1) {\n node.parent.visibleChilds += this.getMaxVisibleChilds();\n } // expand the parent itself\n\n\n node.parent.expand(recurse);\n node = node.parent;\n }\n }\n /**\n * Set focus to this node\n * @param {String} [elementName] The field name of the element to get the\n * focus available values: 'drag', 'menu',\n * 'expand', 'field', 'value' (default)\n */\n\n }, {\n key: \"focus\",\n value: function focus(elementName) {\n Node.focusElement = elementName;\n\n if (this.dom.tr && this.dom.tr.parentNode) {\n var dom = this.dom;\n\n switch (elementName) {\n case 'drag':\n if (dom.drag) {\n dom.drag.focus();\n } else {\n dom.menu.focus();\n }\n\n break;\n\n case 'menu':\n dom.menu.focus();\n break;\n\n case 'expand':\n if (this._hasChilds()) {\n dom.expand.focus();\n } else if (dom.field && this.fieldEditable) {\n dom.field.focus();\n (0,util.selectContentEditable)(dom.field);\n } else if (dom.value && !this._hasChilds()) {\n dom.value.focus();\n (0,util.selectContentEditable)(dom.value);\n } else {\n dom.menu.focus();\n }\n\n break;\n\n case 'field':\n if (dom.field && this.fieldEditable) {\n dom.field.focus();\n (0,util.selectContentEditable)(dom.field);\n } else if (dom.value && !this._hasChilds()) {\n dom.value.focus();\n (0,util.selectContentEditable)(dom.value);\n } else if (this._hasChilds()) {\n dom.expand.focus();\n } else {\n dom.menu.focus();\n }\n\n break;\n\n case 'value':\n default:\n if (dom.select) {\n // enum select box\n dom.select.focus();\n } else if (dom.value && !this._hasChilds()) {\n dom.value.focus();\n (0,util.selectContentEditable)(dom.value);\n } else if (dom.field && this.fieldEditable) {\n dom.field.focus();\n (0,util.selectContentEditable)(dom.field);\n } else if (this._hasChilds()) {\n dom.expand.focus();\n } else {\n dom.menu.focus();\n }\n\n break;\n }\n }\n }\n /**\n * Check if given node is a child. The method will check recursively to find\n * this node.\n * @param {Node} node\n * @return {boolean} containsNode\n */\n\n }, {\n key: \"containsNode\",\n value: function containsNode(node) {\n if (this === node) {\n return true;\n }\n\n var childs = this.childs;\n\n if (childs) {\n // TODO: use the js5 Array.some() here?\n for (var i = 0, iMax = childs.length; i < iMax; i++) {\n if (childs[i].containsNode(node)) {\n return true;\n }\n }\n }\n\n return false;\n }\n /**\n * Remove a child from the node.\n * Only applicable when Node value is of type array or object\n * @param {Node} node The child node to be removed;\n * @param {boolean} [updateDom] If true (default), the DOM of the parent\n * node will be updated (like child count)\n * @return {Node | undefined} node The removed node on success,\n * else undefined\n */\n\n }, {\n key: \"removeChild\",\n value: function removeChild(node, updateDom) {\n if (this.childs) {\n var index = this.childs.indexOf(node);\n\n if (index !== -1) {\n if (index < this.visibleChilds && this.expanded) {\n this.visibleChilds--;\n }\n\n node.hide(); // delete old search results\n\n delete node.searchField;\n delete node.searchValue;\n var removedNode = this.childs.splice(index, 1)[0];\n removedNode.parent = null;\n\n if (updateDom !== false) {\n this.updateDom({\n updateIndexes: true\n });\n }\n\n return removedNode;\n }\n }\n\n return undefined;\n }\n /**\n * Remove a child node node from this node\n * This method is equal to Node.removeChild, except that _remove fire an\n * onChange event.\n * @param {Node} node\n * @private\n */\n\n }, {\n key: \"_remove\",\n value: function _remove(node) {\n this.removeChild(node);\n }\n /**\n * Change the type of the value of this Node\n * @param {String} newType\n */\n\n }, {\n key: \"changeType\",\n value: function changeType(newType) {\n var oldType = this.type;\n\n if (oldType === newType) {\n // type is not changed\n return;\n }\n\n if ((newType === 'string' || newType === 'auto') && (oldType === 'string' || oldType === 'auto')) {\n // this is an easy change\n this.type = newType;\n } else {\n // change from array to object, or from string/auto to object/array\n var domAnchor = this._detachFromDom(); // delete the old DOM\n\n\n this.clearDom(); // adjust the field and the value\n\n this.type = newType; // adjust childs\n\n if (newType === 'object') {\n if (!this.childs) {\n this.childs = [];\n }\n\n this.childs.forEach(function (child) {\n child.clearDom();\n delete child.index;\n child.fieldEditable = true;\n\n if (child.field === undefined) {\n child.field = '';\n }\n });\n\n if (oldType === 'string' || oldType === 'auto') {\n this.expanded = true;\n }\n } else if (newType === 'array') {\n if (!this.childs) {\n this.childs = [];\n }\n\n this.childs.forEach(function (child, index) {\n child.clearDom();\n child.fieldEditable = false;\n child.index = index;\n });\n\n if (oldType === 'string' || oldType === 'auto') {\n this.expanded = true;\n }\n } else {\n this.expanded = false;\n }\n\n this._attachToDom(domAnchor);\n }\n\n if (newType === 'auto' || newType === 'string') {\n // cast value to the correct type\n if (newType === 'string') {\n this.value = String(this.value);\n } else {\n this.value = (0,util.parseString)(String(this.value));\n }\n\n this.focus();\n }\n\n this.updateDom({\n updateIndexes: true\n });\n }\n /**\n * Test whether the JSON contents of this node are deep equal to provided JSON object.\n * @param {*} json\n */\n\n }, {\n key: \"deepEqual\",\n value: function deepEqual(json) {\n var i;\n\n if (this.type === 'array') {\n if (!Array.isArray(json)) {\n return false;\n }\n\n if (this.childs.length !== json.length) {\n return false;\n }\n\n for (i = 0; i < this.childs.length; i++) {\n if (!this.childs[i].deepEqual(json[i])) {\n return false;\n }\n }\n } else if (this.type === 'object') {\n if (_typeof(json) !== 'object' || !json) {\n return false;\n } // we reckon with the order of the properties too.\n\n\n var props = Object.keys(json);\n\n if (this.childs.length !== props.length) {\n return false;\n }\n\n for (i = 0; i < props.length; i++) {\n var child = this.childs[i];\n\n if (child.field !== props[i] || !child.deepEqual(json[child.field])) {\n return false;\n }\n }\n } else {\n if (this.value !== json) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Retrieve value from DOM\n * @private\n */\n\n }, {\n key: \"_getDomValue\",\n value: function _getDomValue() {\n this._clearValueError();\n\n if (this.dom.value && this.type !== 'array' && this.type !== 'object') {\n this.valueInnerText = (0,util.getInnerText)(this.dom.value);\n\n if (this.valueInnerText === '' && this.dom.value.innerHTML !== '') {\n // When clearing the contents, often a <br/> remains, messing up the\n // styling of the empty text box. Therefore we remove the <br/>\n this.dom.value.textContent = '';\n }\n }\n\n if (this.valueInnerText !== undefined) {\n try {\n // retrieve the value\n var value;\n\n if (this.type === 'string') {\n value = this._unescapeHTML(this.valueInnerText);\n } else {\n var str = this._unescapeHTML(this.valueInnerText);\n\n value = (0,util.parseString)(str);\n }\n\n if (value !== this.value) {\n this.value = value;\n\n this._debouncedOnChangeValue();\n }\n } catch (err) {\n // keep the previous value\n this._setValueError((0,i18n/* translate */.Iu)('cannotParseValueError'));\n }\n }\n }\n /**\n * Show a local error in case of invalid value\n * @param {string} message\n * @private\n */\n\n }, {\n key: \"_setValueError\",\n value: function _setValueError(message) {\n this.valueError = {\n message: message\n };\n this.updateError();\n }\n }, {\n key: \"_clearValueError\",\n value: function _clearValueError() {\n if (this.valueError) {\n this.valueError = null;\n this.updateError();\n }\n }\n /**\n * Show a local error in case of invalid or duplicate field\n * @param {string} message\n * @private\n */\n\n }, {\n key: \"_setFieldError\",\n value: function _setFieldError(message) {\n this.fieldError = {\n message: message\n };\n this.updateError();\n }\n }, {\n key: \"_clearFieldError\",\n value: function _clearFieldError() {\n if (this.fieldError) {\n this.fieldError = null;\n this.updateError();\n }\n }\n /**\n * Handle a changed value\n * @private\n */\n\n }, {\n key: \"_onChangeValue\",\n value: function _onChangeValue() {\n // get current selection, then override the range such that we can select\n // the added/removed text on undo/redo\n var oldSelection = this.editor.getDomSelection();\n\n if (oldSelection.range) {\n var undoDiff = (0,util.textDiff)(String(this.value), String(this.previousValue));\n oldSelection.range.startOffset = undoDiff.start;\n oldSelection.range.endOffset = undoDiff.end;\n }\n\n var newSelection = this.editor.getDomSelection();\n\n if (newSelection.range) {\n var redoDiff = (0,util.textDiff)(String(this.previousValue), String(this.value));\n newSelection.range.startOffset = redoDiff.start;\n newSelection.range.endOffset = redoDiff.end;\n }\n\n this.editor._onAction('editValue', {\n path: this.getInternalPath(),\n oldValue: this.previousValue,\n newValue: this.value,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n\n this.previousValue = this.value;\n }\n /**\n * Handle a changed field\n * @private\n */\n\n }, {\n key: \"_onChangeField\",\n value: function _onChangeField() {\n // get current selection, then override the range such that we can select\n // the added/removed text on undo/redo\n var oldSelection = this.editor.getDomSelection();\n var previous = this.previousField || '';\n\n if (oldSelection.range) {\n var undoDiff = (0,util.textDiff)(this.field, previous);\n oldSelection.range.startOffset = undoDiff.start;\n oldSelection.range.endOffset = undoDiff.end;\n }\n\n var newSelection = this.editor.getDomSelection();\n\n if (newSelection.range) {\n var redoDiff = (0,util.textDiff)(previous, this.field);\n newSelection.range.startOffset = redoDiff.start;\n newSelection.range.endOffset = redoDiff.end;\n }\n\n this.editor._onAction('editField', {\n parentPath: this.parent.getInternalPath(),\n index: this.getIndex(),\n oldValue: this.previousField,\n newValue: this.field,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n\n this.previousField = this.field;\n }\n /**\n * Update dom value:\n * - the text color of the value, depending on the type of the value\n * - the height of the field, depending on the width\n * - background color in case it is empty\n * @private\n */\n\n }, {\n key: \"_updateDomValue\",\n value: function _updateDomValue() {\n var domValue = this.dom.value;\n\n if (domValue) {\n var classNames = ['jsoneditor-value']; // set text color depending on value type\n\n var value = this.value;\n var valueType = this.type === 'auto' ? (0,util.getType)(value) : this.type;\n var valueIsUrl = valueType === 'string' && (0,util.isUrl)(value);\n classNames.push('jsoneditor-' + valueType);\n\n if (valueIsUrl) {\n classNames.push('jsoneditor-url');\n } // visual styling when empty\n\n\n var isEmpty = String(this.value) === '' && this.type !== 'array' && this.type !== 'object';\n\n if (isEmpty) {\n classNames.push('jsoneditor-empty');\n } // highlight when there is a search result\n\n\n if (this.searchValueActive) {\n classNames.push('jsoneditor-highlight-active');\n }\n\n if (this.searchValue) {\n classNames.push('jsoneditor-highlight');\n }\n\n domValue.className = classNames.join(' '); // update title\n\n if (valueType === 'array' || valueType === 'object') {\n var count = this.childs ? this.childs.length : 0;\n domValue.title = this.type + ' containing ' + count + ' items';\n } else if (valueIsUrl && this.editable.value) {\n domValue.title = (0,i18n/* translate */.Iu)('openUrl');\n } else {\n domValue.title = '';\n } // show checkbox when the value is a boolean\n\n\n if (valueType === 'boolean' && this.editable.value) {\n if (!this.dom.checkbox) {\n this.dom.checkbox = document.createElement('input');\n this.dom.checkbox.type = 'checkbox';\n this.dom.tdCheckbox = document.createElement('td');\n this.dom.tdCheckbox.className = 'jsoneditor-tree';\n this.dom.tdCheckbox.appendChild(this.dom.checkbox);\n this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue);\n }\n\n this.dom.checkbox.checked = this.value;\n } else {\n // cleanup checkbox when displayed\n if (this.dom.tdCheckbox) {\n this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox);\n delete this.dom.tdCheckbox;\n delete this.dom.checkbox;\n }\n } // create select box when this node has an enum object\n\n\n if (this[\"enum\"] && this.editable.value) {\n if (!this.dom.select) {\n this.dom.select = document.createElement('select');\n this.id = this.field + '_' + new Date().getUTCMilliseconds();\n this.dom.select.id = this.id;\n this.dom.select.name = this.dom.select.id; // Create the default empty option\n\n var defaultOption = document.createElement('option');\n defaultOption.value = '';\n defaultOption.textContent = '--';\n this.dom.select.appendChild(defaultOption); // Iterate all enum values and add them as options\n\n this._updateEnumOptions();\n\n this.dom.tdSelect = document.createElement('td');\n this.dom.tdSelect.className = 'jsoneditor-tree';\n this.dom.tdSelect.appendChild(this.dom.select);\n this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue);\n } // Select the matching value\n\n\n this.dom.select.value = this[\"enum\"].indexOf(this.value) !== -1 ? this.value : ''; // default\n // If the enum is inside a composite type display\n // both the simple input and the dropdown field\n\n if (this.schema && !Node_hasOwnProperty(this.schema, 'oneOf') && !Node_hasOwnProperty(this.schema, 'anyOf') && !Node_hasOwnProperty(this.schema, 'allOf')) {\n this.valueFieldHTML = this.dom.tdValue.innerHTML;\n this.dom.tdValue.style.visibility = 'hidden';\n this.dom.tdValue.textContent = '';\n } else {\n delete this.valueFieldHTML;\n }\n } else {\n // cleanup select box when displayed, and attach the editable div instead\n if (this.dom.tdSelect) {\n this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect);\n delete this.dom.tdSelect;\n delete this.dom.select;\n this.dom.tdValue.innerHTML = this.valueFieldHTML;\n this.dom.tdValue.style.visibility = '';\n delete this.valueFieldHTML;\n this.dom.tdValue.appendChild(this.dom.value);\n }\n } // show color picker when value is a color\n\n\n if (this.editor.options.colorPicker && typeof value === 'string' && (0,util.isValidColor)(value)) {\n if (!this.dom.color) {\n this.dom.color = document.createElement('div');\n this.dom.color.className = 'jsoneditor-color';\n this.dom.tdColor = document.createElement('td');\n this.dom.tdColor.className = 'jsoneditor-tree';\n this.dom.tdColor.appendChild(this.dom.color);\n this.dom.tdValue.parentNode.insertBefore(this.dom.tdColor, this.dom.tdValue);\n } // update styling of value and color background\n\n\n (0,util.addClassName)(this.dom.value, 'jsoneditor-color-value');\n\n if (!this.editable.value) {\n (0,util.addClassName)(this.dom.color, 'jsoneditor-color-readonly');\n } else {\n (0,util.removeClassName)(this.dom.color, 'jsoneditor-color-readonly');\n }\n\n this.dom.color.style.backgroundColor = value;\n } else {\n // cleanup color picker when displayed\n this._deleteDomColor();\n } // show date tag when value is a timestamp in milliseconds\n\n\n if (this._showTimestampTag()) {\n if (!this.dom.date) {\n this.dom.date = document.createElement('div');\n this.dom.date.className = 'jsoneditor-date';\n this.dom.value.parentNode.appendChild(this.dom.date);\n }\n\n var title = null;\n\n if (typeof this.editor.options.timestampFormat === 'function') {\n title = this.editor.options.timestampFormat({\n field: this.field,\n value: this.value,\n path: this.getPath()\n });\n }\n\n if (!title) {\n this.dom.date.textContent = new Date(value).toISOString();\n } else {\n while (this.dom.date.firstChild) {\n this.dom.date.removeChild(this.dom.date.firstChild);\n }\n\n this.dom.date.appendChild(document.createTextNode(title));\n }\n\n this.dom.date.title = new Date(value).toString();\n } else {\n // cleanup date tag\n if (this.dom.date) {\n this.dom.date.parentNode.removeChild(this.dom.date);\n delete this.dom.date;\n }\n } // strip formatting from the contents of the editable div\n\n\n (0,util.stripFormatting)(domValue);\n\n this._updateDomDefault();\n }\n }\n }, {\n key: \"_updateEnumOptions\",\n value: function _updateEnumOptions() {\n if (!this[\"enum\"] || !this.dom.select) {\n return;\n } // clear the existing options\n\n\n this.dom.select.innerHTML = ''; // Iterate all enum values and add them as options\n\n for (var i = 0; i < this[\"enum\"].length; i++) {\n var option = document.createElement('option');\n option.value = this[\"enum\"][i];\n option.textContent = this[\"enum\"][i];\n this.dom.select.appendChild(option);\n }\n }\n }, {\n key: \"_deleteDomColor\",\n value: function _deleteDomColor() {\n if (this.dom.color) {\n this.dom.tdColor.parentNode.removeChild(this.dom.tdColor);\n delete this.dom.tdColor;\n delete this.dom.color;\n (0,util.removeClassName)(this.dom.value, 'jsoneditor-color-value');\n }\n }\n /**\n * Update dom field:\n * - the text color of the field, depending on the text\n * - the height of the field, depending on the width\n * - background color in case it is empty\n * @private\n */\n\n }, {\n key: \"_updateDomField\",\n value: function _updateDomField() {\n var domField = this.dom.field;\n\n if (domField) {\n var tooltip = (0,util.makeFieldTooltip)(this.schema, this.editor.options.language);\n\n if (tooltip) {\n domField.title = tooltip;\n } // make background color lightgray when empty\n\n\n var isEmpty = String(this.field) === '' && this.parent && this.parent.type !== 'array';\n\n if (isEmpty) {\n (0,util.addClassName)(domField, 'jsoneditor-empty');\n } else {\n (0,util.removeClassName)(domField, 'jsoneditor-empty');\n } // highlight when there is a search result\n\n\n if (this.searchFieldActive) {\n (0,util.addClassName)(domField, 'jsoneditor-highlight-active');\n } else {\n (0,util.removeClassName)(domField, 'jsoneditor-highlight-active');\n }\n\n if (this.searchField) {\n (0,util.addClassName)(domField, 'jsoneditor-highlight');\n } else {\n (0,util.removeClassName)(domField, 'jsoneditor-highlight');\n } // strip formatting from the contents of the editable div\n\n\n (0,util.stripFormatting)(domField);\n }\n }\n /**\n * Retrieve field from DOM\n * @param {boolean} [forceUnique] If true, the field name will be changed\n * into a unique name in case it is a duplicate.\n * @private\n */\n\n }, {\n key: \"_getDomField\",\n value: function _getDomField(forceUnique) {\n this._clearFieldError();\n\n if (this.dom.field && this.fieldEditable) {\n this.fieldInnerText = (0,util.getInnerText)(this.dom.field);\n\n if (this.fieldInnerText === '' && this.dom.field.innerHTML !== '') {\n // When clearing the contents, often a <br/> remains, messing up the\n // styling of the empty text box. Therefore we remove the <br/>\n this.dom.field.textContent = '';\n }\n }\n\n if (this.fieldInnerText !== undefined) {\n try {\n var field = this._unescapeHTML(this.fieldInnerText);\n\n var existingFieldNames = this.parent.getFieldNames(this);\n var isDuplicate = existingFieldNames.indexOf(field) !== -1;\n\n if (!isDuplicate) {\n if (field !== this.field) {\n this.field = field;\n\n this._debouncedOnChangeField();\n }\n } else {\n if (forceUnique) {\n // fix duplicate field: change it into a unique name\n field = (0,util.findUniqueName)(field, existingFieldNames);\n\n if (field !== this.field) {\n this.field = field; // TODO: don't debounce but resolve right away, and cancel current debounce\n\n this._debouncedOnChangeField();\n }\n } else {\n this._setFieldError((0,i18n/* translate */.Iu)('duplicateFieldError'));\n }\n }\n } catch (err) {\n // keep the previous field value\n this._setFieldError((0,i18n/* translate */.Iu)('cannotParseFieldError'));\n }\n }\n }\n /**\n * Update the value of the schema default element in the DOM.\n * @private\n * @returns {undefined}\n */\n\n }, {\n key: \"_updateDomDefault\",\n value: function _updateDomDefault() {\n // Short-circuit if schema is missing, has no default, or if Node has children\n if (!this.schema || this.schema[\"default\"] === undefined || this._hasChilds()) {\n return;\n } // select either enum dropdown (select) or input value\n\n\n var inputElement = this.dom.select ? this.dom.select : this.dom.value;\n\n if (!inputElement) {\n return;\n }\n\n if (this.value === this.schema[\"default\"]) {\n inputElement.title = (0,i18n/* translate */.Iu)('default');\n (0,util.addClassName)(inputElement, 'jsoneditor-is-default');\n (0,util.removeClassName)(inputElement, 'jsoneditor-is-not-default');\n } else {\n inputElement.removeAttribute('title');\n (0,util.removeClassName)(inputElement, 'jsoneditor-is-default');\n (0,util.addClassName)(inputElement, 'jsoneditor-is-not-default');\n }\n }\n /**\n * Test whether to show a timestamp tag or not\n * @return {boolean} Returns true when the value is a timestamp\n */\n\n }, {\n key: \"_showTimestampTag\",\n value: function _showTimestampTag() {\n if (typeof this.value !== 'number') {\n return false;\n }\n\n var timestampTag = this.editor.options.timestampTag;\n\n if (typeof timestampTag === 'function') {\n var result = timestampTag({\n field: this.field,\n value: this.value,\n path: this.getPath()\n });\n\n if (typeof result === 'boolean') {\n return result;\n } else {\n return (0,util.isTimestamp)(this.field, this.value);\n }\n } else if (timestampTag === true) {\n return (0,util.isTimestamp)(this.field, this.value);\n } else {\n return false;\n }\n }\n /**\n * Clear the dom of the node\n */\n\n }, {\n key: \"clearDom\",\n value: function clearDom() {\n // TODO: hide the node first?\n // this.hide();\n // TODO: recursively clear dom?\n this.dom = {};\n }\n /**\n * Get the HTML DOM TR element of the node.\n * The dom will be generated when not yet created\n * @return {Element} tr HTML DOM TR Element\n */\n\n }, {\n key: \"getDom\",\n value: function getDom() {\n var dom = this.dom;\n\n if (dom.tr) {\n return dom.tr;\n }\n\n this._updateEditability(); // create row\n\n\n dom.tr = document.createElement('tr');\n dom.tr.node = this;\n\n if (this.editor.options.mode === 'tree') {\n // note: we take here the global setting\n var tdDrag = document.createElement('td');\n\n if (this.editable.field) {\n // create draggable area\n if (this.parent) {\n var domDrag = document.createElement('button');\n domDrag.type = 'button';\n dom.drag = domDrag;\n domDrag.className = 'jsoneditor-button jsoneditor-dragarea';\n domDrag.title = (0,i18n/* translate */.Iu)('drag');\n tdDrag.appendChild(domDrag);\n }\n }\n\n dom.tr.appendChild(tdDrag); // create context menu\n\n var tdMenu = document.createElement('td');\n var menu = document.createElement('button');\n menu.type = 'button';\n dom.menu = menu;\n menu.className = 'jsoneditor-button jsoneditor-contextmenu-button';\n menu.title = (0,i18n/* translate */.Iu)('actionsMenu');\n tdMenu.appendChild(dom.menu);\n dom.tr.appendChild(tdMenu);\n } // create tree and field\n\n\n var tdField = document.createElement('td');\n dom.tr.appendChild(tdField);\n dom.tree = this._createDomTree();\n tdField.appendChild(dom.tree);\n this.updateDom({\n updateIndexes: true\n });\n return dom.tr;\n }\n /**\n * Test whether a Node is rendered and visible\n * @returns {boolean}\n */\n\n }, {\n key: \"isVisible\",\n value: function isVisible() {\n return this.dom && this.dom.tr && this.dom.tr.parentNode || false;\n }\n /**\n * Test if this node is a sescendant of an other node\n * @param {Node} node\n * @return {boolean} isDescendant\n * @private\n */\n\n }, {\n key: \"isDescendantOf\",\n value: function isDescendantOf(node) {\n var n = this.parent;\n\n while (n) {\n if (n === node) {\n return true;\n }\n\n n = n.parent;\n }\n\n return false;\n }\n /**\n * Create an editable field\n * @return {Element} domField\n * @private\n */\n\n }, {\n key: \"_createDomField\",\n value: function _createDomField() {\n return document.createElement('div');\n }\n /**\n * Set highlighting for this node and all its childs.\n * Only applied to the currently visible (expanded childs)\n * @param {boolean} highlight\n */\n\n }, {\n key: \"setHighlight\",\n value: function setHighlight(highlight) {\n if (this.dom.tr) {\n if (highlight) {\n (0,util.addClassName)(this.dom.tr, 'jsoneditor-highlight');\n } else {\n (0,util.removeClassName)(this.dom.tr, 'jsoneditor-highlight');\n }\n\n if (this.append) {\n this.append.setHighlight(highlight);\n }\n\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.setHighlight(highlight);\n });\n }\n }\n }\n /**\n * Select or deselect a node\n * @param {boolean} selected\n * @param {boolean} [isFirst]\n */\n\n }, {\n key: \"setSelected\",\n value: function setSelected(selected, isFirst) {\n this.selected = selected;\n\n if (this.dom.tr) {\n if (selected) {\n (0,util.addClassName)(this.dom.tr, 'jsoneditor-selected');\n } else {\n (0,util.removeClassName)(this.dom.tr, 'jsoneditor-selected');\n }\n\n if (isFirst) {\n (0,util.addClassName)(this.dom.tr, 'jsoneditor-first');\n } else {\n (0,util.removeClassName)(this.dom.tr, 'jsoneditor-first');\n }\n\n if (this.append) {\n this.append.setSelected(selected);\n }\n\n if (this.showMore) {\n this.showMore.setSelected(selected);\n }\n\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.setSelected(selected);\n });\n }\n }\n }\n /**\n * Update the value of the node. Only primitive types are allowed, no Object\n * or Array is allowed.\n * @param {String | Number | Boolean | null} value\n */\n\n }, {\n key: \"updateValue\",\n value: function updateValue(value) {\n this.value = value;\n this.previousValue = value;\n this.valueError = undefined;\n this.updateDom();\n }\n /**\n * Update the field of the node.\n * @param {String} field\n */\n\n }, {\n key: \"updateField\",\n value: function updateField(field) {\n this.field = field;\n this.previousField = field;\n this.fieldError = undefined;\n this.updateDom();\n }\n /**\n * Update the HTML DOM, optionally recursing through the childs\n * @param {Object} [options] Available parameters:\n * {boolean} [recurse] If true, the\n * DOM of the childs will be updated recursively.\n * False by default.\n * {boolean} [updateIndexes] If true, the childs\n * indexes of the node will be updated too. False by\n * default.\n */\n\n }, {\n key: \"updateDom\",\n value: function updateDom(options) {\n // update level indentation\n var domTree = this.dom.tree;\n\n if (domTree) {\n domTree.style.marginLeft = this.getLevel() * 24 + 'px';\n } // apply field to DOM\n\n\n var domField = this.dom.field;\n\n if (domField) {\n if (this.fieldEditable) {\n // parent is an object\n domField.contentEditable = this.editable.field;\n domField.spellcheck = false;\n domField.className = 'jsoneditor-field';\n } else {\n // parent is an array this is the root node\n domField.contentEditable = false;\n domField.className = 'jsoneditor-readonly';\n }\n\n var fieldText;\n\n if (this.index !== undefined) {\n fieldText = this.index;\n } else if (this.field !== undefined) {\n fieldText = this.field;\n } else {\n var schema = this.editor.options.schema ? Node._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : undefined;\n\n if (schema && schema.title) {\n fieldText = schema.title;\n } else if (this._hasChilds()) {\n fieldText = this.type;\n } else {\n fieldText = '';\n }\n }\n\n var escapedField = this._escapeHTML(fieldText);\n\n if (document.activeElement !== domField && escapedField !== this._unescapeHTML((0,util.getInnerText)(domField))) {\n // only update if it not has the focus or when there is an actual change,\n // else you would needlessly loose the caret position when changing tabs\n // or whilst typing\n domField.innerHTML = escapedField;\n }\n\n this._updateSchema();\n\n this._updateEnumOptions();\n } // apply value to DOM\n\n\n var domValue = this.dom.value;\n\n if (domValue) {\n if (this.type === 'array' || this.type === 'object') {\n this.updateNodeName();\n } else {\n var escapedValue = this._escapeHTML(this.value);\n\n if (document.activeElement !== domValue && escapedValue !== this._unescapeHTML((0,util.getInnerText)(domValue))) {\n // only update if it not has the focus or when there is an actual change,\n // else you would needlessly loose the caret position when changing tabs\n // or whilst typing\n domValue.innerHTML = escapedValue;\n }\n }\n } // apply styling to the table row\n\n\n var tr = this.dom.tr;\n\n if (tr) {\n if (this.type === 'array' || this.type === 'object') {\n (0,util.addClassName)(tr, 'jsoneditor-expandable');\n\n if (this.expanded) {\n (0,util.addClassName)(tr, 'jsoneditor-expanded');\n (0,util.removeClassName)(tr, 'jsoneditor-collapsed');\n } else {\n (0,util.addClassName)(tr, 'jsoneditor-collapsed');\n (0,util.removeClassName)(tr, 'jsoneditor-expanded');\n }\n } else {\n (0,util.removeClassName)(tr, 'jsoneditor-expandable');\n (0,util.removeClassName)(tr, 'jsoneditor-expanded');\n (0,util.removeClassName)(tr, 'jsoneditor-collapsed');\n }\n } // update field and value\n\n\n this._updateDomField();\n\n this._updateDomValue(); // update childs indexes\n\n\n if (options && options.updateIndexes === true) {\n // updateIndexes is true or undefined\n this._updateDomIndexes();\n } // update childs recursively\n\n\n if (options && options.recurse === true) {\n if (this.childs) {\n this.childs.forEach(function (child) {\n child.updateDom(options);\n });\n }\n } // update rendering of error\n\n\n if (this.error) {\n this.updateError();\n } // update row with append button\n\n\n if (this.append) {\n this.append.updateDom();\n } // update \"show more\" text at the bottom of large arrays\n\n\n if (this.showMore) {\n this.showMore.updateDom();\n } // fire onClassName\n\n\n this._updateCssClassName();\n }\n /**\n * Locate the JSON schema of the node and check for any enum type\n * @private\n */\n\n }, {\n key: \"_updateSchema\",\n value: function _updateSchema() {\n // Locating the schema of the node and checking for any enum type\n if (this.editor && this.editor.options) {\n // find the part of the json schema matching this nodes path\n this.schema = this.editor.options.schema // fix childSchema with $ref, and not display the select element on the child schema because of not found enum\n ? Node._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : null;\n\n if (this.schema) {\n this[\"enum\"] = Node._findEnum(this.schema);\n } else {\n delete this[\"enum\"];\n }\n }\n }\n /**\n * Update the DOM of the childs of a node: update indexes and undefined field\n * names.\n * Only applicable when structure is an array or object\n * @private\n */\n\n }, {\n key: \"_updateDomIndexes\",\n value: function _updateDomIndexes() {\n var domValue = this.dom.value;\n var childs = this.childs;\n\n if (domValue && childs) {\n if (this.type === 'array') {\n childs.forEach(function (child, index) {\n child.index = index;\n var childField = child.dom.field;\n\n if (childField) {\n childField.textContent = index;\n }\n });\n } else if (this.type === 'object') {\n childs.forEach(function (child) {\n if (child.index !== undefined) {\n delete child.index;\n\n if (child.field === undefined) {\n child.field = '';\n }\n }\n });\n }\n }\n }\n /**\n * Create an editable value\n * @private\n */\n\n }, {\n key: \"_createDomValue\",\n value: function _createDomValue() {\n var domValue;\n\n if (this.type === 'array') {\n domValue = document.createElement('div');\n domValue.textContent = '[...]';\n } else if (this.type === 'object') {\n domValue = document.createElement('div');\n domValue.textContent = '{...}';\n } else {\n if (!this.editable.value && (0,util.isUrl)(this.value)) {\n // create a link in case of read-only editor and value containing an url\n domValue = document.createElement('a');\n domValue.href = this.value;\n domValue.innerHTML = this._escapeHTML(this.value);\n } else {\n // create an editable or read-only div\n domValue = document.createElement('div');\n domValue.contentEditable = this.editable.value;\n domValue.spellcheck = false;\n domValue.innerHTML = this._escapeHTML(this.value);\n }\n }\n\n return domValue;\n }\n /**\n * Create an expand/collapse button\n * @return {Element} expand\n * @private\n */\n\n }, {\n key: \"_createDomExpandButton\",\n value: function _createDomExpandButton() {\n // create expand button\n var expand = document.createElement('button');\n expand.type = 'button';\n\n if (this._hasChilds()) {\n expand.className = this.expanded ? 'jsoneditor-button jsoneditor-expanded' : 'jsoneditor-button jsoneditor-collapsed';\n expand.title = (0,i18n/* translate */.Iu)('expandTitle');\n } else {\n expand.className = 'jsoneditor-button jsoneditor-invisible';\n expand.title = '';\n }\n\n return expand;\n }\n /**\n * Create a DOM tree element, containing the expand/collapse button\n * @return {Element} domTree\n * @private\n */\n\n }, {\n key: \"_createDomTree\",\n value: function _createDomTree() {\n var dom = this.dom;\n var domTree = document.createElement('table');\n var tbody = document.createElement('tbody');\n domTree.style.borderCollapse = 'collapse'; // TODO: put in css\n\n domTree.className = 'jsoneditor-values';\n domTree.appendChild(tbody);\n var tr = document.createElement('tr');\n tbody.appendChild(tr); // create expand button\n\n var tdExpand = document.createElement('td');\n tdExpand.className = 'jsoneditor-tree';\n tr.appendChild(tdExpand);\n dom.expand = this._createDomExpandButton();\n tdExpand.appendChild(dom.expand);\n dom.tdExpand = tdExpand; // create the field\n\n var tdField = document.createElement('td');\n tdField.className = 'jsoneditor-tree';\n tr.appendChild(tdField);\n dom.field = this._createDomField();\n tdField.appendChild(dom.field);\n dom.tdField = tdField; // create a separator\n\n var tdSeparator = document.createElement('td');\n tdSeparator.className = 'jsoneditor-tree';\n tr.appendChild(tdSeparator);\n\n if (this.type !== 'object' && this.type !== 'array') {\n tdSeparator.appendChild(document.createTextNode(':'));\n tdSeparator.className = 'jsoneditor-separator';\n }\n\n dom.tdSeparator = tdSeparator; // create the value\n\n var tdValue = document.createElement('td');\n tdValue.className = 'jsoneditor-tree';\n tr.appendChild(tdValue);\n dom.value = this._createDomValue();\n tdValue.appendChild(dom.value);\n dom.tdValue = tdValue;\n return domTree;\n }\n /**\n * Handle an event. The event is caught centrally by the editor\n * @param {Event} event\n */\n\n }, {\n key: \"onEvent\",\n value: function onEvent(event) {\n var type = event.type;\n var target = event.target || event.srcElement;\n var dom = this.dom;\n var node = this;\n\n var expandable = this._hasChilds(); // check if mouse is on menu or on dragarea.\n // If so, highlight current row and its childs\n\n\n if (target === dom.drag || target === dom.menu) {\n if (type === 'mouseover') {\n this.editor.highlighter.highlight(this);\n } else if (type === 'mouseout') {\n this.editor.highlighter.unhighlight();\n }\n } // context menu events\n\n\n if (type === 'click' && target === dom.menu) {\n var highlighter = node.editor.highlighter;\n highlighter.highlight(node);\n highlighter.lock();\n (0,util.addClassName)(dom.menu, 'jsoneditor-selected');\n this.showContextMenu(dom.menu, function () {\n (0,util.removeClassName)(dom.menu, 'jsoneditor-selected');\n highlighter.unlock();\n highlighter.unhighlight();\n });\n } // expand events\n\n\n if (type === 'click') {\n if (target === dom.expand) {\n if (expandable) {\n var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\n\n this._onExpand(recurse);\n }\n }\n }\n\n if (type === 'click' && (event.target === node.dom.tdColor || event.target === node.dom.color) && this.editable.value) {\n this._showColorPicker();\n } // swap the value of a boolean when the checkbox displayed left is clicked\n\n\n if (type === 'change' && target === dom.checkbox) {\n this.dom.value.textContent = String(!this.value);\n\n this._getDomValue();\n\n this._updateDomDefault();\n } // update the value of the node based on the selected option\n\n\n if (type === 'change' && target === dom.select) {\n this.dom.value.innerHTML = this._escapeHTML(dom.select.value);\n\n this._getDomValue();\n\n this._updateDomValue();\n } // value events\n\n\n var domValue = dom.value;\n\n if (target === domValue) {\n // noinspection FallthroughInSwitchStatementJS\n switch (type) {\n case 'blur':\n case 'change':\n {\n this._getDomValue();\n\n this._clearValueError();\n\n this._updateDomValue();\n\n var escapedValue = this._escapeHTML(this.value);\n\n if (escapedValue !== this._unescapeHTML((0,util.getInnerText)(domValue))) {\n // only update when there is an actual change, else you loose the\n // caret position when changing tabs or whilst typing\n domValue.innerHTML = escapedValue;\n }\n\n break;\n }\n\n case 'input':\n // this._debouncedGetDomValue(true); // TODO\n this._getDomValue();\n\n this._updateDomValue();\n\n break;\n\n case 'keydown':\n case 'mousedown':\n // TODO: cleanup\n this.editor.selection = this.editor.getDomSelection();\n break;\n\n case 'click':\n if (event.ctrlKey && this.editable.value) {\n // if read-only, we use the regular click behavior of an anchor\n if ((0,util.isUrl)(this.value)) {\n event.preventDefault();\n window.open(this.value, '_blank', 'noreferrer');\n }\n }\n\n break;\n\n case 'keyup':\n // this._debouncedGetDomValue(true); // TODO\n this._getDomValue();\n\n this._updateDomValue();\n\n break;\n\n case 'cut':\n case 'paste':\n setTimeout(function () {\n node._getDomValue();\n\n node._updateDomValue();\n }, 1);\n break;\n }\n } // field events\n\n\n var domField = dom.field;\n\n if (target === domField) {\n switch (type) {\n case 'blur':\n {\n this._getDomField(true);\n\n this._updateDomField();\n\n var escapedField = this._escapeHTML(this.field);\n\n if (escapedField !== this._unescapeHTML((0,util.getInnerText)(domField))) {\n // only update when there is an actual change, else you loose the\n // caret position when changing tabs or whilst typing\n domField.innerHTML = escapedField;\n }\n\n break;\n }\n\n case 'input':\n this._getDomField();\n\n this._updateSchema();\n\n this._updateDomField();\n\n this._updateDomValue();\n\n break;\n\n case 'keydown':\n case 'mousedown':\n this.editor.selection = this.editor.getDomSelection();\n break;\n\n case 'keyup':\n this._getDomField();\n\n this._updateDomField();\n\n break;\n\n case 'cut':\n case 'paste':\n setTimeout(function () {\n node._getDomField();\n\n node._updateDomField();\n }, 1);\n break;\n }\n } // focus\n // when clicked in whitespace left or right from the field or value, set focus\n\n\n var domTree = dom.tree;\n\n if (domTree && target === domTree.parentNode && type === 'click' && !event.hasMoved) {\n var left = event.offsetX !== undefined ? event.offsetX < (this.getLevel() + 1) * 24 : event.pageX < (0,util.getAbsoluteLeft)(dom.tdSeparator); // for FF\n\n if (left || expandable) {\n // node is expandable when it is an object or array\n if (domField) {\n (0,util.setEndOfContentEditable)(domField);\n domField.focus();\n }\n } else {\n if (domValue && !this[\"enum\"]) {\n (0,util.setEndOfContentEditable)(domValue);\n domValue.focus();\n }\n }\n }\n\n if ((target === dom.tdExpand && !expandable || target === dom.tdField || target === dom.tdSeparator) && type === 'click' && !event.hasMoved) {\n if (domField) {\n (0,util.setEndOfContentEditable)(domField);\n domField.focus();\n }\n }\n\n if (type === 'keydown') {\n this.onKeyDown(event);\n } // fire after applying for example a change by clicking a checkbox\n\n\n if (typeof this.editor.options.onEvent === 'function') {\n this._onEvent(event);\n }\n }\n /**\n * Trigger external onEvent provided in options if node is a JSON field or\n * value.\n * Information provided depends on the element, value is only included if\n * event occurs in a JSON value:\n * {field: string, path: {string|number}[] [, value: string]}\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onEvent\",\n value: function _onEvent(event) {\n var element = event.target;\n var isField = element === this.dom.field;\n var isValue = element === this.dom.value || element === this.dom.checkbox || element === this.dom.select;\n\n if (isField || isValue) {\n var info = {\n field: this.getField(),\n path: this.getPath()\n }; // For leaf values, include value\n\n if (isValue && !this._hasChilds()) {\n info.value = this.getValue();\n }\n\n this.editor.options.onEvent(info, event);\n }\n }\n /**\n * Key down event handler\n * @param {Event} event\n */\n\n }, {\n key: \"onKeyDown\",\n value: function onKeyDown(event) {\n var keynum = event.which || event.keyCode;\n var target = event.target || event.srcElement;\n var ctrlKey = event.ctrlKey;\n var shiftKey = event.shiftKey;\n var altKey = event.altKey;\n var handled = false;\n var prevNode, nextNode, nextDom, nextDom2;\n var editable = this.editor.options.mode === 'tree';\n var oldSelection;\n var oldNextNode;\n var oldParent;\n var oldIndexRedo;\n var newIndexRedo;\n var oldParentPathRedo;\n var newParentPathRedo;\n var nodes;\n var multiselection;\n var selectedNodes = this.editor.multiselection.nodes.length > 0 ? this.editor.multiselection.nodes : [this];\n var firstNode = selectedNodes[0];\n var lastNode = selectedNodes[selectedNodes.length - 1]; // console.log(ctrlKey, keynum, event.charCode); // TODO: cleanup\n\n if (keynum === 13) {\n // Enter\n if (target === this.dom.value) {\n if (!this.editable.value || event.ctrlKey) {\n if ((0,util.isUrl)(this.value)) {\n window.open(this.value, '_blank', 'noreferrer');\n handled = true;\n }\n }\n } else if (target === this.dom.expand) {\n var expandable = this._hasChilds();\n\n if (expandable) {\n var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\n\n this._onExpand(recurse);\n\n target.focus();\n handled = true;\n }\n }\n } else if (keynum === 68) {\n // D\n if (ctrlKey && editable) {\n // Ctrl+D\n Node.onDuplicate(selectedNodes);\n handled = true;\n }\n } else if (keynum === 69) {\n // E\n if (ctrlKey) {\n // Ctrl+E and Ctrl+Shift+E\n this._onExpand(shiftKey); // recurse = shiftKey\n\n\n target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline)\n\n handled = true;\n }\n } else if (keynum === 77 && editable) {\n // M\n if (ctrlKey) {\n // Ctrl+M\n this.showContextMenu(target);\n handled = true;\n }\n } else if (keynum === 46 && editable) {\n // Del\n if (ctrlKey) {\n // Ctrl+Del\n Node.onRemove(selectedNodes);\n handled = true;\n }\n } else if (keynum === 45 && editable) {\n // Ins\n if (ctrlKey && !shiftKey) {\n // Ctrl+Ins\n this._onInsertBefore();\n\n handled = true;\n } else if (ctrlKey && shiftKey) {\n // Ctrl+Shift+Ins\n this._onInsertAfter();\n\n handled = true;\n }\n } else if (keynum === 35) {\n // End\n if (altKey) {\n // Alt+End\n // find the last node\n var endNode = this._lastNode();\n\n if (endNode) {\n endNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n }\n } else if (keynum === 36) {\n // Home\n if (altKey) {\n // Alt+Home\n // find the first node\n var homeNode = this._firstNode();\n\n if (homeNode) {\n homeNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n }\n } else if (keynum === 37) {\n // Arrow Left\n if (altKey && !shiftKey) {\n // Alt + Arrow Left\n // move to left element\n var prevElement = this._previousElement(target);\n\n if (prevElement) {\n this.focus(this._getElementName(prevElement));\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow left\n if (lastNode.expanded) {\n var appendDom = lastNode.getAppendDom();\n nextDom = appendDom ? appendDom.nextSibling : undefined;\n } else {\n var dom = lastNode.getDom();\n nextDom = dom.nextSibling;\n }\n\n if (nextDom) {\n nextNode = Node.getNodeFromTarget(nextDom);\n nextDom2 = nextDom.nextSibling;\n var nextNode2 = Node.getNodeFromTarget(nextDom2);\n\n if (nextNode && nextNode instanceof AppendNode && !(lastNode.parent.childs.length === 1) && nextNode2 && nextNode2.parent) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = nextNode2.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = nextNode2.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n nextNode2.parent.moveBefore(node, nextNode2);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n }\n }\n } else if (keynum === 38) {\n // Arrow Up\n if (altKey && !shiftKey) {\n // Alt + Arrow Up\n // find the previous node\n prevNode = this._previousNode();\n\n if (prevNode) {\n this.editor.deselect(true);\n prevNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n } else if (!altKey && ctrlKey && shiftKey && editable) {\n // Ctrl + Shift + Arrow Up\n // select multiple nodes\n prevNode = this._previousNode();\n\n if (prevNode) {\n multiselection = this.editor.multiselection;\n multiselection.start = multiselection.start || this;\n multiselection.end = prevNode;\n nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\n this.editor.select(nodes);\n prevNode.focus('field'); // select field as we know this always exists\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow Up\n // find the previous node\n prevNode = firstNode._previousNode();\n\n if (prevNode && prevNode.parent) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = prevNode.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = prevNode.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n prevNode.parent.moveBefore(node, prevNode);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n\n handled = true;\n }\n } else if (keynum === 39) {\n // Arrow Right\n if (altKey && !shiftKey) {\n // Alt + Arrow Right\n // move to right element\n var nextElement = this._nextElement(target);\n\n if (nextElement) {\n this.focus(this._getElementName(nextElement));\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow Right\n var _dom = firstNode.getDom();\n\n var prevDom = _dom.previousSibling;\n\n if (prevDom) {\n prevNode = Node.getNodeFromTarget(prevDom);\n\n if (prevNode && prevNode.parent && !prevNode.isVisible()) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = prevNode.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = prevNode.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n prevNode.parent.moveBefore(node, prevNode);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n }\n }\n } else if (keynum === 40) {\n // Arrow Down\n if (altKey && !shiftKey) {\n // Alt + Arrow Down\n // find the next node\n nextNode = this._nextNode();\n\n if (nextNode) {\n this.editor.deselect(true);\n nextNode.focus(Node.focusElement || this._getElementName(target));\n }\n\n handled = true;\n } else if (!altKey && ctrlKey && shiftKey && editable) {\n // Ctrl + Shift + Arrow Down\n // select multiple nodes\n nextNode = this._nextNode();\n\n if (nextNode) {\n multiselection = this.editor.multiselection;\n multiselection.start = multiselection.start || this;\n multiselection.end = nextNode;\n nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\n this.editor.select(nodes);\n nextNode.focus('field'); // select field as we know this always exists\n }\n\n handled = true;\n } else if (altKey && shiftKey && editable) {\n // Alt + Shift + Arrow Down\n // find the 2nd next node and move before that one\n if (lastNode.expanded) {\n nextNode = lastNode.append ? lastNode.append._nextNode() : undefined;\n } else {\n nextNode = lastNode._nextNode();\n } // when the next node is not visible, we've reached the \"showMore\" buttons\n\n\n if (nextNode && !nextNode.isVisible()) {\n nextNode = nextNode.parent.showMore;\n }\n\n if (nextNode && nextNode instanceof AppendNode) {\n nextNode = lastNode;\n }\n\n var _nextNode2 = nextNode && (nextNode._nextNode() || nextNode.parent.append);\n\n if (_nextNode2 && _nextNode2.parent) {\n oldSelection = this.editor.getDomSelection();\n oldParent = firstNode.parent;\n oldNextNode = oldParent.childs[lastNode.getIndex() + 1] || oldParent.append;\n oldIndexRedo = firstNode.getIndex();\n newIndexRedo = _nextNode2.getIndex();\n oldParentPathRedo = oldParent.getInternalPath();\n newParentPathRedo = _nextNode2.parent.getInternalPath();\n selectedNodes.forEach(function (node) {\n _nextNode2.parent.moveBefore(node, _nextNode2);\n });\n this.focus(Node.focusElement || this._getElementName(target));\n\n this.editor._onAction('moveNodes', {\n count: selectedNodes.length,\n fieldNames: selectedNodes.map(getField),\n oldParentPath: oldParent.getInternalPath(),\n newParentPath: firstNode.parent.getInternalPath(),\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: newParentPathRedo,\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldIndex: oldNextNode.getIndex(),\n newIndex: firstNode.getIndex(),\n oldSelection: oldSelection,\n newSelection: this.editor.getDomSelection()\n });\n }\n\n handled = true;\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /**\n * Handle the expand event, when clicked on the expand button\n * @param {boolean} recurse If true, child nodes will be expanded too\n * @private\n */\n\n }, {\n key: \"_onExpand\",\n value: function _onExpand(recurse) {\n var table;\n var frame;\n var scrollTop;\n\n if (recurse) {\n // Take the table offline\n table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this\n\n frame = table.parentNode;\n scrollTop = frame.scrollTop;\n frame.removeChild(table);\n }\n\n if (this.expanded) {\n this.collapse(recurse);\n } else {\n this.expand(recurse);\n }\n\n if (recurse) {\n // Put the table online again\n frame.appendChild(table);\n frame.scrollTop = scrollTop;\n }\n }\n /**\n * Open a color picker to select a new color\n * @private\n */\n\n }, {\n key: \"_showColorPicker\",\n value: function _showColorPicker() {\n if (typeof this.editor.options.onColorPicker === 'function' && this.dom.color) {\n var node = this; // force deleting current color picker (if any)\n\n node._deleteDomColor();\n\n node.updateDom();\n var colorAnchor = (0,createAbsoluteAnchor/* createAbsoluteAnchor */.w)(this.dom.color, this.editor.getPopupAnchor());\n this.editor.options.onColorPicker(colorAnchor, this.value, function onChange(value) {\n if (typeof value === 'string' && value !== node.value) {\n // force recreating the color block, to cleanup any attached color picker\n node._deleteDomColor();\n\n node.value = value;\n node.updateDom();\n\n node._debouncedOnChangeValue();\n }\n });\n }\n }\n /**\n * Get all field names of an object\n * @param {Node} [excludeNode] Optional node to be excluded from the returned field names\n * @return {string[]}\n */\n\n }, {\n key: \"getFieldNames\",\n value: function getFieldNames(excludeNode) {\n if (this.type === 'object') {\n return this.childs.filter(function (child) {\n return child !== excludeNode;\n }).map(function (child) {\n return child.field;\n });\n }\n\n return [];\n }\n /**\n * Handle insert before event\n * @param {String} [field]\n * @param {*} [value]\n * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\n * @private\n */\n\n }, {\n key: \"_onInsertBefore\",\n value: function _onInsertBefore(field, value, type) {\n var oldSelection = this.editor.getDomSelection();\n var newNode = new Node(this.editor, {\n field: field !== undefined ? field : '',\n value: value !== undefined ? value : '',\n type: type\n });\n newNode.expand(true);\n var beforePath = this.getInternalPath();\n this.parent.insertBefore(newNode, this);\n this.editor.highlighter.unhighlight();\n newNode.focus('field');\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('insertBeforeNodes', {\n nodes: [newNode],\n paths: [newNode.getInternalPath()],\n beforePath: beforePath,\n parentPath: this.parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n /**\n * Handle insert after event\n * @param {String} [field]\n * @param {*} [value]\n * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\n * @private\n */\n\n }, {\n key: \"_onInsertAfter\",\n value: function _onInsertAfter(field, value, type) {\n var oldSelection = this.editor.getDomSelection();\n var newNode = new Node(this.editor, {\n field: field !== undefined ? field : '',\n value: value !== undefined ? value : '',\n type: type\n });\n newNode.expand(true);\n this.parent.insertAfter(newNode, this);\n this.editor.highlighter.unhighlight();\n newNode.focus('field');\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('insertAfterNodes', {\n nodes: [newNode],\n paths: [newNode.getInternalPath()],\n afterPath: this.getInternalPath(),\n parentPath: this.parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n /**\n * Handle append event\n * @param {String} [field]\n * @param {*} [value]\n * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\n * @private\n */\n\n }, {\n key: \"_onAppend\",\n value: function _onAppend(field, value, type) {\n var oldSelection = this.editor.getDomSelection();\n var newNode = new Node(this.editor, {\n field: field !== undefined ? field : '',\n value: value !== undefined ? value : '',\n type: type\n });\n newNode.expand(true);\n this.parent.appendChild(newNode);\n this.editor.highlighter.unhighlight();\n newNode.focus('field');\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('appendNodes', {\n nodes: [newNode],\n paths: [newNode.getInternalPath()],\n parentPath: this.parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n /**\n * Change the type of the node's value\n * @param {String} newType\n * @private\n */\n\n }, {\n key: \"_onChangeType\",\n value: function _onChangeType(newType) {\n var oldType = this.type;\n\n if (newType !== oldType) {\n var oldSelection = this.editor.getDomSelection();\n this.changeType(newType);\n var newSelection = this.editor.getDomSelection();\n\n this.editor._onAction('changeType', {\n path: this.getInternalPath(),\n oldType: oldType,\n newType: newType,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n }\n /**\n * Sort the child's of the node. Only applicable when the node has type 'object'\n * or 'array'.\n * @param {String[] | string} path Path of the child value to be compared\n * @param {String} direction Sorting direction. Available values: \"asc\", \"desc\"\n * @param {boolean} [triggerAction=true] If true (default), a user action will be\n * triggered, creating an entry in history\n * and invoking onChange.\n * @private\n */\n\n }, {\n key: \"sort\",\n value: function sort(path, direction) {\n var triggerAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (typeof path === 'string') {\n path = (0,util.parsePath)(path);\n }\n\n if (!this._hasChilds()) {\n return;\n }\n\n this.hideChilds(); // sorting is faster when the childs are not attached to the dom\n // copy the childs array (the old one will be kept for an undo action\n\n var oldChilds = this.childs;\n this.childs = this.childs.concat(); // sort the childs array\n\n var order = direction === 'desc' ? -1 : 1;\n\n if (this.type === 'object') {\n this.childs.sort(function (a, b) {\n return order * naturalSort_default()(a.field, b.field);\n });\n } else {\n // this.type === 'array'\n this.childs.sort(function (a, b) {\n var nodeA = a.getNestedChild(path);\n var nodeB = b.getNestedChild(path);\n\n if (!nodeA) {\n return order;\n }\n\n if (!nodeB) {\n return -order;\n }\n\n var valueA = nodeA.value;\n var valueB = nodeB.value;\n\n if (typeof valueA !== 'string' && typeof valueB !== 'string') {\n // both values are a number, boolean, or null -> use simple, fast sorting\n return valueA > valueB ? order : valueA < valueB ? -order : 0;\n }\n\n return order * naturalSort_default()(valueA, valueB);\n });\n } // update the index numbering\n\n\n this._updateDomIndexes();\n\n this.showChilds();\n\n if (triggerAction === true) {\n this.editor._onAction('sort', {\n path: this.getInternalPath(),\n oldChilds: oldChilds,\n newChilds: this.childs\n });\n }\n }\n /**\n * Replace the value of the node, keep it's state\n * @param {*} newValue\n */\n\n }, {\n key: \"update\",\n value: function update(newValue) {\n var oldValue = this.getInternalValue();\n this.setValue(newValue);\n\n this.editor._onAction('transform', {\n path: this.getInternalPath(),\n oldValue: oldValue,\n newValue: this.getInternalValue()\n });\n }\n /**\n * Remove this node from the DOM\n * @returns {{table: Element, nextTr?: Element}}\n * Returns the DOM elements that which be used to attach the node\n * to the DOM again, see _attachToDom.\n * @private\n */\n\n }, {\n key: \"_detachFromDom\",\n value: function _detachFromDom() {\n var table = this.dom.tr ? this.dom.tr.parentNode : undefined;\n var lastTr;\n\n if (this.expanded) {\n lastTr = this.getAppendDom();\n } else {\n lastTr = this.getDom();\n }\n\n var nextTr = lastTr && lastTr.parentNode ? lastTr.nextSibling : undefined;\n this.hide({\n resetVisibleChilds: false\n });\n return {\n table: table,\n nextTr: nextTr\n };\n }\n /**\n * Attach this node to the DOM again\n * @param {{table: Element, nextTr?: Element}} domAnchor\n * The DOM elements returned by _detachFromDom.\n * @private\n */\n\n }, {\n key: \"_attachToDom\",\n value: function _attachToDom(domAnchor) {\n if (domAnchor.table) {\n if (domAnchor.nextTr) {\n domAnchor.table.insertBefore(this.getDom(), domAnchor.nextTr);\n } else {\n domAnchor.table.appendChild(this.getDom());\n }\n }\n\n if (this.expanded) {\n this.showChilds();\n }\n }\n /**\n * Transform the node given a JMESPath query.\n * @param {String} query JMESPath query to apply\n * @private\n */\n\n }, {\n key: \"transform\",\n value: function transform(query) {\n if (!this._hasChilds()) {\n return;\n }\n\n this.hideChilds(); // sorting is faster when the childs are not attached to the dom\n\n try {\n var oldInternalValue = this.getInternalValue(); // apply the JMESPath query\n\n var oldValue = this.getValue();\n var newValue = this.editor.options.executeQuery(oldValue, query);\n this.setValue(newValue);\n var newInternalValue = this.getInternalValue();\n\n this.editor._onAction('transform', {\n path: this.getInternalPath(),\n oldValue: oldInternalValue,\n newValue: newInternalValue\n });\n\n this.showChilds();\n } catch (err) {\n this.showChilds();\n\n this.editor._onError(err);\n }\n }\n /**\n * Make this object the root object of the ditor\n */\n\n }, {\n key: \"extract\",\n value: function extract() {\n this.editor.node.hideChilds();\n this.hideChilds();\n\n try {\n var oldInternalValue = this.editor.node.getInternalValue();\n\n this.editor._setRoot(this);\n\n var newInternalValue = this.editor.node.getInternalValue();\n\n this.editor._onAction('transform', {\n path: this.editor.node.getInternalPath(),\n oldValue: oldInternalValue,\n newValue: newInternalValue\n });\n } catch (err) {\n this.editor._onError(err);\n } finally {\n this.updateDom({\n recurse: true\n });\n this.showChilds();\n }\n }\n /**\n * Get a nested child given a path with properties\n * @param {String[]} path\n * @returns {Node}\n */\n\n }, {\n key: \"getNestedChild\",\n value: function getNestedChild(path) {\n var i = 0;\n var child = this;\n\n while (child && i < path.length) {\n child = child.findChildByProperty(path[i]);\n i++;\n }\n\n return child;\n }\n /**\n * Find a child by property name\n * @param {string} prop\n * @return {Node | undefined} Returns the child node when found, or undefined otherwise\n */\n\n }, {\n key: \"findChildByProperty\",\n value: function findChildByProperty(prop) {\n if (this.type !== 'object') {\n return undefined;\n }\n\n return this.childs.find(function (child) {\n return child.field === prop;\n });\n }\n /**\n * Create a table row with an append button.\n * @return {HTMLElement | undefined} tr with the AppendNode contents\n */\n\n }, {\n key: \"getAppendDom\",\n value: function getAppendDom() {\n if (!this.append) {\n this.append = new AppendNode(this.editor);\n this.append.setParent(this);\n }\n\n return this.append.getDom();\n }\n /**\n * Create a table row with an showMore button and text\n * @return {HTMLElement | undefined} tr with the AppendNode contents\n */\n\n }, {\n key: \"getShowMoreDom\",\n value: function getShowMoreDom() {\n if (!this.showMore) {\n this.showMore = new ShowMoreNode(this.editor, this);\n }\n\n return this.showMore.getDom();\n }\n /**\n * Get the next sibling of current node\n * @return {Node} nextSibling\n */\n\n }, {\n key: \"nextSibling\",\n value: function nextSibling() {\n var index = this.parent.childs.indexOf(this);\n return this.parent.childs[index + 1] || this.parent.append;\n }\n /**\n * Get the previously rendered node\n * @return {Node | null} previousNode\n */\n\n }, {\n key: \"_previousNode\",\n value: function _previousNode() {\n var prevNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n // find the previous field\n var prevDom = dom;\n\n do {\n prevDom = prevDom.previousSibling;\n prevNode = Node.getNodeFromTarget(prevDom);\n } while (prevDom && prevNode && prevNode instanceof AppendNode && !prevNode.isVisible());\n }\n\n return prevNode;\n }\n /**\n * Get the next rendered node\n * @return {Node | null} nextNode\n * @private\n */\n\n }, {\n key: \"_nextNode\",\n value: function _nextNode() {\n var nextNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n // find the previous field\n var nextDom = dom;\n\n do {\n nextDom = nextDom.nextSibling;\n nextNode = Node.getNodeFromTarget(nextDom);\n } while (nextDom && nextNode && nextNode instanceof AppendNode && !nextNode.isVisible());\n }\n\n return nextNode;\n }\n /**\n * Get the first rendered node\n * @return {Node | null} firstNode\n * @private\n */\n\n }, {\n key: \"_firstNode\",\n value: function _firstNode() {\n var firstNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n var firstDom = dom.parentNode.firstChild;\n firstNode = Node.getNodeFromTarget(firstDom);\n }\n\n return firstNode;\n }\n /**\n * Get the last rendered node\n * @return {Node | null} lastNode\n * @private\n */\n\n }, {\n key: \"_lastNode\",\n value: function _lastNode() {\n var lastNode = null;\n var dom = this.getDom();\n\n if (dom && dom.parentNode) {\n var lastDom = dom.parentNode.lastChild;\n lastNode = Node.getNodeFromTarget(lastDom);\n\n while (lastDom && lastNode && !lastNode.isVisible()) {\n lastDom = lastDom.previousSibling;\n lastNode = Node.getNodeFromTarget(lastDom);\n }\n }\n\n return lastNode;\n }\n /**\n * Get the next element which can have focus.\n * @param {Element} elem\n * @return {Element | null} nextElem\n * @private\n */\n\n }, {\n key: \"_previousElement\",\n value: function _previousElement(elem) {\n var dom = this.dom; // noinspection FallthroughInSwitchStatementJS\n\n switch (elem) {\n case dom.value:\n if (this.fieldEditable) {\n return dom.field;\n }\n\n // intentional fall through\n\n case dom.field:\n if (this._hasChilds()) {\n return dom.expand;\n }\n\n // intentional fall through\n\n case dom.expand:\n return dom.menu;\n\n case dom.menu:\n if (dom.drag) {\n return dom.drag;\n }\n\n // intentional fall through\n\n default:\n return null;\n }\n }\n /**\n * Get the next element which can have focus.\n * @param {Element} elem\n * @return {Element | null} nextElem\n * @private\n */\n\n }, {\n key: \"_nextElement\",\n value: function _nextElement(elem) {\n var dom = this.dom; // noinspection FallthroughInSwitchStatementJS\n\n switch (elem) {\n case dom.drag:\n return dom.menu;\n\n case dom.menu:\n if (this._hasChilds()) {\n return dom.expand;\n }\n\n // intentional fall through\n\n case dom.expand:\n if (this.fieldEditable) {\n return dom.field;\n }\n\n // intentional fall through\n\n case dom.field:\n if (!this._hasChilds()) {\n return dom.value;\n }\n\n // intentional fall through\n\n default:\n return null;\n }\n }\n /**\n * Get the dom name of given element. returns null if not found.\n * For example when element === dom.field, \"field\" is returned.\n * @param {Element} element\n * @return {String | null} elementName Available elements with name: 'drag',\n * 'menu', 'expand', 'field', 'value'\n * @private\n */\n\n }, {\n key: \"_getElementName\",\n value: function _getElementName(element) {\n var _this2 = this;\n\n return Object.keys(this.dom).find(function (name) {\n return _this2.dom[name] === element;\n });\n }\n /**\n * Test if this node has childs. This is the case when the node is an object\n * or array.\n * @return {boolean} hasChilds\n * @private\n */\n\n }, {\n key: \"_hasChilds\",\n value: function _hasChilds() {\n return this.type === 'array' || this.type === 'object';\n }\n }, {\n key: \"addTemplates\",\n value: function addTemplates(menu, append) {\n var node = this;\n var templates = node.editor.options.templates;\n if (templates == null) return;\n\n if (templates.length) {\n // create a separator\n menu.push({\n type: 'separator'\n });\n }\n\n var appendData = function appendData(name, data) {\n node._onAppend(name, data);\n };\n\n var insertData = function insertData(name, data) {\n node._onInsertBefore(name, data);\n };\n\n templates.forEach(function (template) {\n menu.push({\n text: template.text,\n className: template.className || 'jsoneditor-type-object',\n title: template.title,\n click: append ? appendData.bind(this, template.field, template.value) : insertData.bind(this, template.field, template.value)\n });\n });\n }\n /**\n * Show a contextmenu for this node\n * @param {HTMLElement} anchor Anchor element to attach the context menu to\n * as sibling.\n * @param {function} [onClose] Callback method called when the context menu\n * is being closed.\n */\n\n }, {\n key: \"showContextMenu\",\n value: function showContextMenu(anchor, onClose) {\n var node = this;\n var items = [];\n\n if (this.editable.value) {\n items.push({\n text: (0,i18n/* translate */.Iu)('type'),\n title: (0,i18n/* translate */.Iu)('typeTitle'),\n className: 'jsoneditor-type-' + this.type,\n submenu: [{\n text: (0,i18n/* translate */.Iu)('auto'),\n className: 'jsoneditor-type-auto' + (this.type === 'auto' ? ' jsoneditor-selected' : ''),\n title: (0,i18n/* translate */.Iu)('autoType'),\n click: function click() {\n node._onChangeType('auto');\n }\n }, {\n text: (0,i18n/* translate */.Iu)('array'),\n className: 'jsoneditor-type-array' + (this.type === 'array' ? ' jsoneditor-selected' : ''),\n title: (0,i18n/* translate */.Iu)('arrayType'),\n click: function click() {\n node._onChangeType('array');\n }\n }, {\n text: (0,i18n/* translate */.Iu)('object'),\n className: 'jsoneditor-type-object' + (this.type === 'object' ? ' jsoneditor-selected' : ''),\n title: (0,i18n/* translate */.Iu)('objectType'),\n click: function click() {\n node._onChangeType('object');\n }\n }, {\n text: (0,i18n/* translate */.Iu)('string'),\n className: 'jsoneditor-type-string' + (this.type === 'string' ? ' jsoneditor-selected' : ''),\n title: (0,i18n/* translate */.Iu)('stringType'),\n click: function click() {\n node._onChangeType('string');\n }\n }]\n });\n }\n\n if (this._hasChilds()) {\n if (this.editor.options.enableSort) {\n items.push({\n text: (0,i18n/* translate */.Iu)('sort'),\n title: (0,i18n/* translate */.Iu)('sortTitle', {\n type: this.type\n }),\n className: 'jsoneditor-sort-asc',\n click: function click() {\n node.showSortModal();\n }\n });\n }\n\n if (this.editor.options.enableTransform) {\n items.push({\n text: (0,i18n/* translate */.Iu)('transform'),\n title: (0,i18n/* translate */.Iu)('transformTitle', {\n type: this.type\n }),\n className: 'jsoneditor-transform',\n click: function click() {\n node.showTransformModal();\n }\n });\n }\n\n if (this.parent) {\n items.push({\n text: (0,i18n/* translate */.Iu)('extract'),\n title: (0,i18n/* translate */.Iu)('extractTitle', {\n type: this.type\n }),\n className: 'jsoneditor-extract',\n click: function click() {\n node.extract();\n }\n });\n }\n }\n\n if (this.parent && this.parent._hasChilds()) {\n if (items.length) {\n // create a separator\n items.push({\n type: 'separator'\n });\n } // create append button (for last child node only)\n\n\n var childs = node.parent.childs;\n\n if (node === childs[childs.length - 1]) {\n var appendSubmenu = [{\n text: (0,i18n/* translate */.Iu)('auto'),\n className: 'jsoneditor-type-auto',\n title: (0,i18n/* translate */.Iu)('autoType'),\n click: function click() {\n node._onAppend('', '', 'auto');\n }\n }, {\n text: (0,i18n/* translate */.Iu)('array'),\n className: 'jsoneditor-type-array',\n title: (0,i18n/* translate */.Iu)('arrayType'),\n click: function click() {\n node._onAppend('', []);\n }\n }, {\n text: (0,i18n/* translate */.Iu)('object'),\n className: 'jsoneditor-type-object',\n title: (0,i18n/* translate */.Iu)('objectType'),\n click: function click() {\n node._onAppend('', {});\n }\n }, {\n text: (0,i18n/* translate */.Iu)('string'),\n className: 'jsoneditor-type-string',\n title: (0,i18n/* translate */.Iu)('stringType'),\n click: function click() {\n node._onAppend('', '', 'string');\n }\n }];\n node.addTemplates(appendSubmenu, true);\n items.push({\n text: (0,i18n/* translate */.Iu)('appendText'),\n title: (0,i18n/* translate */.Iu)('appendTitle'),\n submenuTitle: (0,i18n/* translate */.Iu)('appendSubmenuTitle'),\n className: 'jsoneditor-append',\n click: function click() {\n node._onAppend('', '', 'auto');\n },\n submenu: appendSubmenu\n });\n } // create insert button\n\n\n var insertSubmenu = [{\n text: (0,i18n/* translate */.Iu)('auto'),\n className: 'jsoneditor-type-auto',\n title: (0,i18n/* translate */.Iu)('autoType'),\n click: function click() {\n node._onInsertBefore('', '', 'auto');\n }\n }, {\n text: (0,i18n/* translate */.Iu)('array'),\n className: 'jsoneditor-type-array',\n title: (0,i18n/* translate */.Iu)('arrayType'),\n click: function click() {\n node._onInsertBefore('', []);\n }\n }, {\n text: (0,i18n/* translate */.Iu)('object'),\n className: 'jsoneditor-type-object',\n title: (0,i18n/* translate */.Iu)('objectType'),\n click: function click() {\n node._onInsertBefore('', {});\n }\n }, {\n text: (0,i18n/* translate */.Iu)('string'),\n className: 'jsoneditor-type-string',\n title: (0,i18n/* translate */.Iu)('stringType'),\n click: function click() {\n node._onInsertBefore('', '', 'string');\n }\n }];\n node.addTemplates(insertSubmenu, false);\n items.push({\n text: (0,i18n/* translate */.Iu)('insert'),\n title: (0,i18n/* translate */.Iu)('insertTitle'),\n submenuTitle: (0,i18n/* translate */.Iu)('insertSub'),\n className: 'jsoneditor-insert',\n click: function click() {\n node._onInsertBefore('', '', 'auto');\n },\n submenu: insertSubmenu\n });\n\n if (this.editable.field) {\n // create duplicate button\n items.push({\n text: (0,i18n/* translate */.Iu)('duplicateText'),\n title: (0,i18n/* translate */.Iu)('duplicateField'),\n className: 'jsoneditor-duplicate',\n click: function click() {\n Node.onDuplicate(node);\n }\n }); // create remove button\n\n items.push({\n text: (0,i18n/* translate */.Iu)('removeText'),\n title: (0,i18n/* translate */.Iu)('removeField'),\n className: 'jsoneditor-remove',\n click: function click() {\n Node.onRemove(node);\n }\n });\n }\n }\n\n if (this.editor.options.onCreateMenu) {\n var path = node.getPath();\n items = this.editor.options.onCreateMenu(items, {\n type: 'single',\n path: path,\n paths: [path]\n });\n }\n\n var menu = new ContextMenu/* ContextMenu */.x(items, {\n close: onClose\n });\n menu.show(anchor, this.editor.getPopupAnchor());\n }\n /**\n * Show sorting modal\n */\n\n }, {\n key: \"showSortModal\",\n value: function showSortModal() {\n var node = this;\n var container = this.editor.options.modalAnchor || constants/* DEFAULT_MODAL_ANCHOR */.qD;\n var json = this.getValue();\n\n function onSort(sortedBy) {\n var path = sortedBy.path;\n var pathArray = (0,util.parsePath)(path);\n node.sortedBy = sortedBy;\n node.sort(pathArray, sortedBy.direction);\n }\n\n (0,js_showSortModal.showSortModal)(container, json, onSort, node.sortedBy);\n }\n /**\n * Show transform modal\n */\n\n }, {\n key: \"showTransformModal\",\n value: function showTransformModal() {\n var _this3 = this;\n\n var _this$editor$options = this.editor.options,\n modalAnchor = _this$editor$options.modalAnchor,\n createQuery = _this$editor$options.createQuery,\n executeQuery = _this$editor$options.executeQuery,\n queryDescription = _this$editor$options.queryDescription;\n var json = this.getValue();\n\n (0,js_showTransformModal.showTransformModal)({\n container: modalAnchor || constants/* DEFAULT_MODAL_ANCHOR */.qD,\n json: json,\n queryDescription: queryDescription,\n // can be undefined\n createQuery: createQuery,\n executeQuery: executeQuery,\n onTransform: function onTransform(query) {\n _this3.transform(query);\n }\n });\n }\n /**\n * get the type of a value\n * @param {*} value\n * @return {String} type Can be 'object', 'array', 'string', 'auto'\n * @private\n */\n\n }, {\n key: \"_getType\",\n value: function _getType(value) {\n if (value instanceof Array) {\n return 'array';\n }\n\n if (value instanceof Object) {\n return 'object';\n }\n\n if (typeof value === 'string' && typeof (0,util.parseString)(value) !== 'string') {\n return 'string';\n }\n\n return 'auto';\n }\n /**\n * escape a text, such that it can be displayed safely in an HTML element\n * @param {String} text\n * @return {String} escapedText\n * @private\n */\n\n }, {\n key: \"_escapeHTML\",\n value: function _escapeHTML(text) {\n if (typeof text !== 'string') {\n return String(text);\n } else {\n var htmlEscaped = String(text).replace(/&/g, '&') // must be replaced first!\n .replace(/</g, '<').replace(/>/g, '>').replace(/ {2}/g, ' ') // replace double space with an nbsp and space\n .replace(/^ /, ' ') // space at start\n .replace(/ $/, ' '); // space at end\n\n var json = JSON.stringify(htmlEscaped);\n var html = json.substring(1, json.length - 1);\n\n if (this.editor.options.escapeUnicode === true) {\n html = (0,util.escapeUnicodeChars)(html);\n }\n\n return html;\n }\n }\n /**\n * unescape a string.\n * @param {String} escapedText\n * @return {String} text\n * @private\n */\n\n }, {\n key: \"_unescapeHTML\",\n value: function _unescapeHTML(escapedText) {\n var json = '\"' + this._escapeJSON(escapedText) + '\"';\n var htmlEscaped = (0,util.parse)(json);\n return htmlEscaped.replace(/</g, '<').replace(/>/g, '>').replace(/ |\\u00A0/g, ' ').replace(/&/g, '&'); // must be replaced last\n }\n /**\n * escape a text to make it a valid JSON string. The method will:\n * - replace unescaped double quotes with '\\\"'\n * - replace unescaped backslash with '\\\\'\n * - replace returns with '\\n'\n * @param {String} text\n * @return {String} escapedText\n * @private\n */\n\n }, {\n key: \"_escapeJSON\",\n value: function _escapeJSON(text) {\n // TODO: replace with some smart regex (only when a new solution is faster!)\n var escaped = '';\n var i = 0;\n\n while (i < text.length) {\n var c = text.charAt(i);\n\n if (c === '\\n') {\n escaped += '\\\\n';\n } else if (c === '\\\\') {\n escaped += c;\n i++;\n c = text.charAt(i);\n\n if (c === '' || '\"\\\\/bfnrtu'.indexOf(c) === -1) {\n escaped += '\\\\'; // no valid escape character\n }\n\n escaped += c;\n } else if (c === '\"') {\n escaped += '\\\\\"';\n } else {\n escaped += c;\n }\n\n i++;\n }\n\n return escaped;\n }\n /**\n * update the object name according to the callback onNodeName\n * @private\n */\n\n }, {\n key: \"updateNodeName\",\n value: function updateNodeName() {\n var count = this.childs ? this.childs.length : 0;\n var nodeName;\n\n if (this.type === 'object' || this.type === 'array') {\n if (this.editor.options.onNodeName) {\n try {\n var getValue = this.getValue.bind(this);\n nodeName = this.editor.options.onNodeName({\n path: this.getPath(),\n size: count,\n type: this.type,\n\n get value() {\n return getValue();\n }\n\n });\n } catch (err) {\n console.error('Error in onNodeName callback: ', err);\n }\n }\n\n this.dom.value.textContent = this.type === 'object' ? '{' + (nodeName || count) + '}' : '[' + (nodeName || count) + ']';\n }\n }\n /**\n * update recursively the object's and its children's name.\n * @private\n */\n\n }, {\n key: \"recursivelyUpdateNodeName\",\n value: function recursivelyUpdateNodeName() {\n if (this.expanded) {\n this.updateNodeName();\n\n if (this.childs !== 'undefined') {\n var i;\n\n for (i in this.childs) {\n this.childs[i].recursivelyUpdateNodeName();\n }\n }\n }\n }\n }]);\n\n return Node;\n}(); // debounce interval for keyboard input in milliseconds\n\nNode.prototype.DEBOUNCE_INTERVAL = 150; // search will stop iterating as soon as the max is reached\n\nNode.prototype.MAX_SEARCH_RESULTS = 999; // default number of child nodes to display\n\nvar DEFAULT_MAX_VISIBLE_CHILDS = 100; // stores the element name currently having the focus\n\nNode.focusElement = undefined;\n/**\n * Select all text in an editable div after a delay of 0 ms\n * @param {Element} editableDiv\n */\n\nNode.select = function (editableDiv) {\n setTimeout(function () {\n (0,util.selectContentEditable)(editableDiv);\n }, 0);\n};\n/**\n * DragStart event, fired on mousedown on the dragarea at the left side of a Node\n * @param {Node[] | Node} nodes\n * @param {Event} event\n */\n\n\nNode.onDragStart = function (nodes, event) {\n if (!Array.isArray(nodes)) {\n return Node.onDragStart([nodes], event);\n }\n\n if (nodes.length === 0) {\n return;\n }\n\n var firstNode = nodes[0];\n var lastNode = nodes[nodes.length - 1];\n var parent = firstNode.parent;\n var draggedNode = Node.getNodeFromTarget(event.target);\n var editor = firstNode.editor; // in case of multiple selected nodes, offsetY prevents the selection from\n // jumping when you start dragging one of the lower down nodes in the selection\n\n var offsetY = (0,util.getAbsoluteTop)(draggedNode.dom.tr) - (0,util.getAbsoluteTop)(firstNode.dom.tr);\n\n if (!editor.mousemove) {\n editor.mousemove = (0,util.addEventListener)(event.view, 'mousemove', function (event) {\n Node.onDrag(nodes, event);\n });\n }\n\n if (!editor.mouseup) {\n editor.mouseup = (0,util.addEventListener)(event.view, 'mouseup', function (event) {\n Node.onDragEnd(nodes, event);\n });\n }\n\n editor.highlighter.lock();\n editor.drag = {\n oldCursor: document.body.style.cursor,\n oldSelection: editor.getDomSelection(),\n oldPaths: nodes.map(getInternalPath),\n oldParent: parent,\n oldNextNode: parent.childs[lastNode.getIndex() + 1] || parent.append,\n oldParentPathRedo: parent.getInternalPath(),\n oldIndexRedo: firstNode.getIndex(),\n mouseX: event.pageX,\n offsetY: offsetY,\n level: firstNode.getLevel()\n };\n document.body.style.cursor = 'move';\n event.preventDefault();\n};\n/**\n * Drag event, fired when moving the mouse while dragging a Node\n * @param {Node[] | Node} nodes\n * @param {Event} event\n */\n\n\nNode.onDrag = function (nodes, event) {\n if (!Array.isArray(nodes)) {\n return Node.onDrag([nodes], event);\n }\n\n if (nodes.length === 0) {\n return;\n } // TODO: this method has grown too large. Split it in a number of methods\n\n\n var editor = nodes[0].editor;\n var mouseY = event.pageY - editor.drag.offsetY;\n var mouseX = event.pageX;\n var trPrev, trNext, trFirst, trLast, trRoot;\n var nodePrev, nodeNext;\n var topPrev, topFirst, bottomNext, heightNext;\n var moved = false; // TODO: add an ESC option, which resets to the original position\n // move up/down\n\n var firstNode = nodes[0];\n var trThis = firstNode.dom.tr;\n var topThis = (0,util.getAbsoluteTop)(trThis);\n var heightThis = trThis.offsetHeight;\n\n if (mouseY < topThis) {\n // move up\n trPrev = trThis;\n\n do {\n trPrev = trPrev.previousSibling;\n nodePrev = Node.getNodeFromTarget(trPrev);\n topPrev = trPrev ? (0,util.getAbsoluteTop)(trPrev) : 0;\n } while (trPrev && mouseY < topPrev);\n\n if (nodePrev && !nodePrev.parent) {\n nodePrev = undefined;\n }\n\n if (!nodePrev) {\n // move to the first node\n trRoot = trThis.parentNode.firstChild;\n trPrev = trRoot ? trRoot.nextSibling : undefined;\n nodePrev = Node.getNodeFromTarget(trPrev);\n\n if (nodePrev === firstNode) {\n nodePrev = undefined;\n }\n }\n\n if (nodePrev && nodePrev.isVisible()) {\n // check if mouseY is really inside the found node\n trPrev = nodePrev.dom.tr;\n topPrev = trPrev ? (0,util.getAbsoluteTop)(trPrev) : 0;\n\n if (mouseY > topPrev + heightThis) {\n nodePrev = undefined;\n }\n }\n\n if (nodePrev && (editor.options.limitDragging === false || nodePrev.parent === nodes[0].parent)) {\n nodes.forEach(function (node) {\n nodePrev.parent.moveBefore(node, nodePrev);\n });\n moved = true;\n }\n } else {\n // move down\n var lastNode = nodes[nodes.length - 1];\n trLast = lastNode.expanded && lastNode.append ? lastNode.append.getDom() : lastNode.dom.tr;\n trFirst = trLast ? trLast.nextSibling : undefined;\n\n if (trFirst) {\n topFirst = (0,util.getAbsoluteTop)(trFirst);\n trNext = trFirst;\n\n do {\n nodeNext = Node.getNodeFromTarget(trNext);\n\n if (trNext) {\n bottomNext = trNext.nextSibling ? (0,util.getAbsoluteTop)(trNext.nextSibling) : 0;\n heightNext = trNext ? bottomNext - topFirst : 0;\n\n if (nodeNext && nodeNext.parent.childs.length === nodes.length && nodeNext.parent.childs[nodes.length - 1] === lastNode) {\n // We are about to remove the last child of this parent,\n // which will make the parents appendNode visible.\n topThis += 27; // TODO: dangerous to suppose the height of the appendNode a constant of 27 px.\n }\n\n trNext = trNext.nextSibling;\n }\n } while (trNext && mouseY > topThis + heightNext);\n\n if (nodeNext && nodeNext.parent) {\n // calculate the desired level\n var diffX = mouseX - editor.drag.mouseX;\n var diffLevel = Math.round(diffX / 24 / 2);\n var level = editor.drag.level + diffLevel; // desired level\n\n var levelNext = nodeNext.getLevel(); // level to be\n // find the best fitting level (move upwards over the append nodes)\n\n trPrev = nodeNext.dom.tr && nodeNext.dom.tr.previousSibling;\n\n while (levelNext < level && trPrev) {\n nodePrev = Node.getNodeFromTarget(trPrev);\n var isDraggedNode = nodes.some(function (node) {\n return node === nodePrev || nodePrev.isDescendantOf(node);\n });\n\n if (isDraggedNode) {// neglect the dragged nodes themselves and their childs\n } else if (nodePrev instanceof AppendNode) {\n var childs = nodePrev.parent.childs;\n\n if (childs.length !== nodes.length || childs[nodes.length - 1] !== lastNode) {\n // non-visible append node of a list of childs\n // consisting of not only this node (else the\n // append node will change into a visible \"empty\"\n // text when removing this node).\n nodeNext = Node.getNodeFromTarget(trPrev);\n levelNext = nodeNext.getLevel();\n } else {\n break;\n }\n } else {\n break;\n }\n\n trPrev = trPrev.previousSibling;\n }\n\n if (nodeNext instanceof AppendNode && !nodeNext.isVisible() && nodeNext.parent.showMore.isVisible()) {\n nodeNext = nodeNext._nextNode();\n } // move the node when its position is changed\n\n\n if (nodeNext && (editor.options.limitDragging === false || nodeNext.parent === nodes[0].parent) && nodeNext.dom.tr && nodeNext.dom.tr !== trLast.nextSibling) {\n nodes.forEach(function (node) {\n nodeNext.parent.moveBefore(node, nodeNext);\n });\n moved = true;\n }\n }\n }\n }\n\n if (moved) {\n // update the dragging parameters when moved\n editor.drag.mouseX = mouseX;\n editor.drag.level = firstNode.getLevel();\n } // auto scroll when hovering around the top of the editor\n\n\n editor.startAutoScroll(mouseY);\n event.preventDefault();\n};\n/**\n * Drag event, fired on mouseup after having dragged a node\n * @param {Node[] | Node} nodes\n * @param {Event} event\n */\n\n\nNode.onDragEnd = function (nodes, event) {\n if (!Array.isArray(nodes)) {\n return Node.onDrag([nodes], event);\n }\n\n if (nodes.length === 0) {\n return;\n }\n\n var firstNode = nodes[0];\n var editor = firstNode.editor; // set focus to the context menu button of the first node\n\n if (firstNode && firstNode.dom.menu) {\n firstNode.dom.menu.focus();\n }\n\n var oldParentPath = editor.drag.oldParent.getInternalPath();\n var newParentPath = firstNode.parent.getInternalPath();\n var sameParent = editor.drag.oldParent === firstNode.parent;\n var oldIndex = editor.drag.oldNextNode.getIndex();\n var newIndex = firstNode.getIndex();\n var oldParentPathRedo = editor.drag.oldParentPathRedo;\n var oldIndexRedo = editor.drag.oldIndexRedo;\n var newIndexRedo = sameParent && oldIndexRedo < newIndex ? newIndex + nodes.length : newIndex;\n\n if (!sameParent || oldIndexRedo !== newIndex) {\n // only register this action if the node is actually moved to another place\n editor._onAction('moveNodes', {\n count: nodes.length,\n fieldNames: nodes.map(getField),\n oldParentPath: oldParentPath,\n newParentPath: newParentPath,\n oldIndex: oldIndex,\n newIndex: newIndex,\n oldIndexRedo: oldIndexRedo,\n newIndexRedo: newIndexRedo,\n oldParentPathRedo: oldParentPathRedo,\n newParentPathRedo: null,\n // This is a hack, value will be filled in during undo\n oldSelection: editor.drag.oldSelection,\n newSelection: editor.getDomSelection()\n });\n }\n\n document.body.style.cursor = editor.drag.oldCursor;\n editor.highlighter.unlock();\n nodes.forEach(function (node) {\n node.updateDom();\n\n if (event.target !== node.dom.drag && event.target !== node.dom.menu) {\n editor.highlighter.unhighlight();\n }\n });\n delete editor.drag;\n\n if (editor.mousemove) {\n (0,util.removeEventListener)(event.view, 'mousemove', editor.mousemove);\n delete editor.mousemove;\n }\n\n if (editor.mouseup) {\n (0,util.removeEventListener)(event.view, 'mouseup', editor.mouseup);\n delete editor.mouseup;\n } // Stop any running auto scroll\n\n\n editor.stopAutoScroll();\n event.preventDefault();\n};\n/**\n * find an enum definition in a JSON schema, as property `enum` or inside\n * one of the schemas composites (`oneOf`, `anyOf`, `allOf`)\n * @param {Object} schema\n * @return {Array | null} Returns the enum when found, null otherwise.\n * @private\n */\n\n\nNode._findEnum = function (schema) {\n if (schema[\"enum\"]) {\n return schema[\"enum\"];\n }\n\n var composite = schema.oneOf || schema.anyOf || schema.allOf;\n\n if (composite) {\n var match = composite.filter(function (entry) {\n return entry[\"enum\"];\n });\n\n if (match.length > 0) {\n return match[0][\"enum\"];\n }\n }\n\n return null;\n};\n/**\n * Return the part of a JSON schema matching given path.\n * @param {Object} topLevelSchema\n * @param {Object} schemaRefs\n * @param {Array.<string | number>} path\n * @param {Object} currentSchema\n * @return {Object | null}\n * @private\n */\n\n\nNode._findSchema = function (topLevelSchema, schemaRefs, path) {\n var currentSchema = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : topLevelSchema;\n var nextPath = path.slice(1, path.length);\n var nextKey = path[0];\n var possibleSchemas = [currentSchema];\n\n for (var _i = 0, _arr = [currentSchema.oneOf, currentSchema.anyOf, currentSchema.allOf]; _i < _arr.length; _i++) {\n var subSchemas = _arr[_i];\n\n if (Array.isArray(subSchemas)) {\n possibleSchemas = possibleSchemas.concat(subSchemas);\n }\n }\n\n var _iterator = _createForOfIteratorHelper(possibleSchemas),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var schema = _step.value;\n currentSchema = schema;\n\n if ('$ref' in currentSchema && typeof currentSchema.$ref === 'string') {\n var _ref$match;\n\n var ref = currentSchema.$ref;\n\n if (ref in schemaRefs) {\n currentSchema = schemaRefs[ref];\n } else if (ref.startsWith('#/')) {\n var refPath = ref.substring(2).split('/');\n currentSchema = topLevelSchema;\n\n var _iterator2 = _createForOfIteratorHelper(refPath),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var segment = _step2.value;\n\n if (segment in currentSchema) {\n currentSchema = currentSchema[segment];\n } else {\n throw Error(\"Unable to resolve reference \".concat(ref));\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } else if (((_ref$match = ref.match(/#\\//g)) === null || _ref$match === void 0 ? void 0 : _ref$match.length) === 1) {\n var _ref$split = ref.split('#/'),\n _ref$split2 = _slicedToArray(_ref$split, 2),\n schemaUrl = _ref$split2[0],\n relativePath = _ref$split2[1];\n\n if (schemaUrl in schemaRefs) {\n var referencedSchema = schemaRefs[schemaUrl];\n var reference = {\n $ref: '#/'.concat(relativePath)\n };\n var auxNextPath = [];\n auxNextPath.push(nextKey);\n\n if (nextPath.length > 0) {\n auxNextPath.push.apply(auxNextPath, _toConsumableArray(nextPath));\n }\n\n return Node._findSchema(referencedSchema, schemaRefs, auxNextPath, reference);\n } else {\n throw Error(\"Unable to resolve reference \".concat(ref));\n }\n } else {\n throw Error(\"Unable to resolve reference \".concat(ref));\n }\n } // We have no more path segments to resolve, return the currently found schema\n // We do this here, after resolving references, in case of the leaf schema beeing a reference\n\n\n if (nextKey === undefined) {\n return currentSchema;\n }\n\n if (typeof nextKey === 'string') {\n if (_typeof(currentSchema.properties) === 'object' && currentSchema.properties !== null && nextKey in currentSchema.properties) {\n currentSchema = currentSchema.properties[nextKey];\n return Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n\n if (_typeof(currentSchema.patternProperties) === 'object' && currentSchema.patternProperties !== null) {\n for (var prop in currentSchema.patternProperties) {\n if (nextKey.match(prop)) {\n currentSchema = currentSchema.patternProperties[prop];\n return Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n }\n }\n\n if (_typeof(currentSchema.additionalProperties) === 'object') {\n currentSchema = currentSchema.additionalProperties;\n return Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n\n continue;\n }\n\n if (typeof nextKey === 'number' && _typeof(currentSchema.items) === 'object' && currentSchema.items !== null) {\n currentSchema = currentSchema.items;\n return Node._findSchema(topLevelSchema, schemaRefs, nextPath, currentSchema);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n};\n/**\n * Remove nodes\n * @param {Node[] | Node} nodes\n */\n\n\nNode.onRemove = function (nodes) {\n if (!Array.isArray(nodes)) {\n return Node.onRemove([nodes]);\n }\n\n if (nodes && nodes.length > 0) {\n var firstNode = nodes[0];\n var parent = firstNode.parent;\n var editor = firstNode.editor;\n var firstIndex = firstNode.getIndex();\n editor.highlighter.unhighlight(); // adjust the focus\n\n var oldSelection = editor.getDomSelection();\n Node.blurNodes(nodes);\n var newSelection = editor.getDomSelection(); // store the paths before removing them (needed for history)\n\n var paths = nodes.map(getInternalPath); // remove the nodes\n\n nodes.forEach(function (node) {\n node.parent._remove(node);\n }); // store history action\n\n editor._onAction('removeNodes', {\n nodes: nodes,\n paths: paths,\n parentPath: parent.getInternalPath(),\n index: firstIndex,\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n};\n/**\n * Duplicate nodes\n * duplicated nodes will be added right after the original nodes\n * @param {Node[] | Node} nodes\n */\n\n\nNode.onDuplicate = function (nodes) {\n if (!Array.isArray(nodes)) {\n return Node.onDuplicate([nodes]);\n }\n\n if (nodes && nodes.length > 0) {\n var lastNode = nodes[nodes.length - 1];\n var parent = lastNode.parent;\n var editor = lastNode.editor;\n editor.deselect(editor.multiselection.nodes); // duplicate the nodes\n\n var oldSelection = editor.getDomSelection();\n var afterNode = lastNode;\n var clones = nodes.map(function (node) {\n var clone = node.clone();\n\n if (node.parent.type === 'object') {\n var existingFieldNames = node.parent.getFieldNames();\n clone.field = (0,util.findUniqueName)(node.field, existingFieldNames);\n }\n\n parent.insertAfter(clone, afterNode);\n afterNode = clone;\n return clone;\n }); // set selection to the duplicated nodes\n\n if (nodes.length === 1) {\n if (clones[0].parent.type === 'object') {\n // when duplicating a single object property,\n // set focus to the field and keep the original field name\n clones[0].dom.field.innerHTML = nodes[0]._escapeHTML(nodes[0].field);\n clones[0].focus('field');\n } else {\n clones[0].focus();\n }\n } else {\n editor.select(clones);\n }\n\n var newSelection = editor.getDomSelection();\n\n editor._onAction('duplicateNodes', {\n paths: nodes.map(getInternalPath),\n clonePaths: clones.map(getInternalPath),\n afterPath: lastNode.getInternalPath(),\n parentPath: parent.getInternalPath(),\n oldSelection: oldSelection,\n newSelection: newSelection\n });\n }\n};\n/**\n * Find the node from an event target\n * @param {HTMLElement} target\n * @return {Node | undefined} node or undefined when not found\n * @static\n */\n\n\nNode.getNodeFromTarget = function (target) {\n while (target) {\n if (target.node) {\n return target.node;\n }\n\n target = target.parentNode;\n }\n\n return undefined;\n};\n/**\n * Test whether target is a child of the color DOM of a node\n * @param {HTMLElement} target\n * @returns {boolean}\n */\n\n\nNode.targetIsColorPicker = function (target) {\n var node = Node.getNodeFromTarget(target);\n\n if (node) {\n var parent = target && target.parentNode;\n\n while (parent) {\n if (parent === node.dom.color) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n }\n\n return false;\n};\n/**\n * Remove the focus of given nodes, and move the focus to the (a) node before,\n * (b) the node after, or (c) the parent node.\n * @param {Array.<Node> | Node} nodes\n */\n\n\nNode.blurNodes = function (nodes) {\n if (!Array.isArray(nodes)) {\n Node.blurNodes([nodes]);\n return;\n }\n\n var firstNode = nodes[0];\n var parent = firstNode.parent;\n var firstIndex = firstNode.getIndex();\n\n if (parent.childs[firstIndex + nodes.length]) {\n parent.childs[firstIndex + nodes.length].focus();\n } else if (parent.childs[firstIndex - 1]) {\n parent.childs[firstIndex - 1].focus();\n } else {\n parent.focus();\n }\n}; // helper function to get the internal path of a node\n\n\nfunction getInternalPath(node) {\n return node.getInternalPath();\n} // helper function to get the field of a node\n\n\nfunction getField(node) {\n return node.getField();\n}\n\nfunction Node_hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n} // TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode\n// idea: introduce properties .isAppendNode and .isNode and use that instead of instanceof AppendNode checks\n\n\nvar AppendNode = appendNodeFactory(Node);\nvar ShowMoreNode = showMoreNodeFactory(Node);\n;// CONCATENATED MODULE: ./src/js/NodeHistory.js\n\n\nfunction NodeHistory_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction NodeHistory_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction NodeHistory_createClass(Constructor, protoProps, staticProps) { if (protoProps) NodeHistory_defineProperties(Constructor.prototype, protoProps); if (staticProps) NodeHistory_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n/**\n * @constructor History\n * Store action history, enables undo and redo\n * @param {JSONEditor} editor\n */\n\nvar NodeHistory = /*#__PURE__*/function () {\n function NodeHistory(editor) {\n NodeHistory_classCallCheck(this, NodeHistory);\n\n this.editor = editor;\n this.history = [];\n this.index = -1;\n this.clear(); // helper function to find a Node from a path\n\n function findNode(path) {\n return editor.node.findNodeByInternalPath(path);\n } // map with all supported actions\n\n\n this.actions = {\n editField: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n var node = parentNode.childs[params.index];\n node.updateField(params.oldValue);\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var node = parentNode.childs[params.index];\n node.updateField(params.newValue);\n }\n },\n editValue: {\n undo: function undo(params) {\n findNode(params.path).updateValue(params.oldValue);\n },\n redo: function redo(params) {\n findNode(params.path).updateValue(params.newValue);\n }\n },\n changeType: {\n undo: function undo(params) {\n findNode(params.path).changeType(params.oldType);\n },\n redo: function redo(params) {\n findNode(params.path).changeType(params.newType);\n }\n },\n appendNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n params.nodes.forEach(function (node) {\n parentNode.appendChild(node);\n });\n }\n },\n insertBeforeNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var beforeNode = findNode(params.beforePath);\n params.nodes.forEach(function (node) {\n parentNode.insertBefore(node, beforeNode);\n });\n }\n },\n insertAfterNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var afterNode = findNode(params.afterPath);\n params.nodes.forEach(function (node) {\n parentNode.insertAfter(node, afterNode);\n afterNode = node;\n });\n }\n },\n removeNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n var beforeNode = parentNode.childs[params.index] || parentNode.append;\n params.nodes.forEach(function (node) {\n parentNode.insertBefore(node, beforeNode);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n params.paths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n }\n },\n duplicateNodes: {\n undo: function undo(params) {\n var parentNode = findNode(params.parentPath);\n params.clonePaths.map(findNode).forEach(function (node) {\n parentNode.removeChild(node);\n });\n },\n redo: function redo(params) {\n var parentNode = findNode(params.parentPath);\n var afterNode = findNode(params.afterPath);\n var nodes = params.paths.map(findNode);\n nodes.forEach(function (node) {\n var clone = node.clone();\n\n if (parentNode.type === 'object') {\n var existingFieldNames = parentNode.getFieldNames();\n clone.field = (0,util.findUniqueName)(node.field, existingFieldNames);\n }\n\n parentNode.insertAfter(clone, afterNode);\n afterNode = clone;\n });\n }\n },\n moveNodes: {\n undo: function undo(params) {\n var oldParentNode = findNode(params.oldParentPath);\n var newParentNode = findNode(params.newParentPath);\n var oldBeforeNode = oldParentNode.childs[params.oldIndex] || oldParentNode.append; // first copy the nodes, then move them\n\n var nodes = newParentNode.childs.slice(params.newIndex, params.newIndex + params.count);\n nodes.forEach(function (node, index) {\n node.field = params.fieldNames[index];\n oldParentNode.moveBefore(node, oldBeforeNode);\n }); // This is a hack to work around an issue that we don't know tha original\n // path of the new parent after dragging, as the node is already moved at that time.\n\n if (params.newParentPathRedo === null) {\n params.newParentPathRedo = newParentNode.getInternalPath();\n }\n },\n redo: function redo(params) {\n var oldParentNode = findNode(params.oldParentPathRedo);\n var newParentNode = findNode(params.newParentPathRedo);\n var newBeforeNode = newParentNode.childs[params.newIndexRedo] || newParentNode.append; // first copy the nodes, then move them\n\n var nodes = oldParentNode.childs.slice(params.oldIndexRedo, params.oldIndexRedo + params.count);\n nodes.forEach(function (node, index) {\n node.field = params.fieldNames[index];\n newParentNode.moveBefore(node, newBeforeNode);\n });\n }\n },\n sort: {\n undo: function undo(params) {\n var node = findNode(params.path);\n node.hideChilds();\n node.childs = params.oldChilds;\n node.updateDom({\n updateIndexes: true\n });\n node.showChilds();\n },\n redo: function redo(params) {\n var node = findNode(params.path);\n node.hideChilds();\n node.childs = params.newChilds;\n node.updateDom({\n updateIndexes: true\n });\n node.showChilds();\n }\n },\n transform: {\n undo: function undo(params) {\n findNode(params.path).setInternalValue(params.oldValue); // TODO: would be nice to restore the state of the node and childs\n },\n redo: function redo(params) {\n findNode(params.path).setInternalValue(params.newValue); // TODO: would be nice to restore the state of the node and childs\n }\n } // TODO: restore the original caret position and selection with each undo\n // TODO: implement history for actions \"expand\", \"collapse\", \"scroll\", \"setDocument\"\n\n };\n }\n /**\n * The method onChange is executed when the History is changed, and can\n * be overloaded.\n */\n\n\n NodeHistory_createClass(NodeHistory, [{\n key: \"onChange\",\n value: function onChange() {}\n /**\n * Add a new action to the history\n * @param {String} action The executed action. Available actions: \"editField\",\n * \"editValue\", \"changeType\", \"appendNode\",\n * \"removeNode\", \"duplicateNode\", \"moveNode\"\n * @param {Object} params Object containing parameters describing the change.\n * The parameters in params depend on the action (for\n * example for \"editValue\" the Node, old value, and new\n * value are provided). params contains all information\n * needed to undo or redo the action.\n */\n\n }, {\n key: \"add\",\n value: function add(action, params) {\n this.index++;\n this.history[this.index] = {\n action: action,\n params: params,\n timestamp: new Date()\n }; // remove redo actions which are invalid now\n\n if (this.index < this.history.length - 1) {\n this.history.splice(this.index + 1, this.history.length - this.index - 1);\n } // fire onchange event\n\n\n this.onChange();\n }\n /**\n * Clear history\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n this.history = [];\n this.index = -1; // fire onchange event\n\n this.onChange();\n }\n /**\n * Check if there is an action available for undo\n * @return {Boolean} canUndo\n */\n\n }, {\n key: \"canUndo\",\n value: function canUndo() {\n return this.index >= 0;\n }\n /**\n * Check if there is an action available for redo\n * @return {Boolean} canRedo\n */\n\n }, {\n key: \"canRedo\",\n value: function canRedo() {\n return this.index < this.history.length - 1;\n }\n /**\n * Undo the last action\n */\n\n }, {\n key: \"undo\",\n value: function undo() {\n if (this.canUndo()) {\n var obj = this.history[this.index];\n\n if (obj) {\n var action = this.actions[obj.action];\n\n if (action && action.undo) {\n action.undo(obj.params);\n\n if (obj.params.oldSelection) {\n try {\n this.editor.setDomSelection(obj.params.oldSelection);\n } catch (err) {\n console.error(err);\n }\n }\n } else {\n console.error(new Error('unknown action \"' + obj.action + '\"'));\n }\n }\n\n this.index--; // fire onchange event\n\n this.onChange();\n }\n }\n /**\n * Redo the last action\n */\n\n }, {\n key: \"redo\",\n value: function redo() {\n if (this.canRedo()) {\n this.index++;\n var obj = this.history[this.index];\n\n if (obj) {\n var action = this.actions[obj.action];\n\n if (action && action.redo) {\n action.redo(obj.params);\n\n if (obj.params.newSelection) {\n try {\n this.editor.setDomSelection(obj.params.newSelection);\n } catch (err) {\n console.error(err);\n }\n }\n } else {\n console.error(new Error('unknown action \"' + obj.action + '\"'));\n }\n } // fire onchange event\n\n\n this.onChange();\n }\n }\n /**\n * Destroy history\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.editor = null;\n this.history = [];\n this.index = -1;\n }\n }]);\n\n return NodeHistory;\n}();\n;// CONCATENATED MODULE: ./src/js/SearchBox.js\n\n\nfunction SearchBox_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SearchBox_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction SearchBox_createClass(Constructor, protoProps, staticProps) { if (protoProps) SearchBox_defineProperties(Constructor.prototype, protoProps); if (staticProps) SearchBox_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n/**\n * @constructor SearchBox\n * Create a search box in given HTML container\n * @param {JSONEditor} editor The JSON Editor to attach to\n * @param {Element} container HTML container element of where to\n * create the search box\n */\n\nvar SearchBox = /*#__PURE__*/function () {\n function SearchBox(editor, container) {\n SearchBox_classCallCheck(this, SearchBox);\n\n var searchBox = this;\n this.editor = editor;\n this.timeout = undefined;\n this.delay = 200; // ms\n\n this.lastText = undefined;\n this.results = null;\n this.dom = {};\n this.dom.container = container;\n var wrapper = document.createElement('div');\n this.dom.wrapper = wrapper;\n wrapper.className = 'jsoneditor-search';\n container.appendChild(wrapper);\n var results = document.createElement('div');\n this.dom.results = results;\n results.className = 'jsoneditor-results';\n wrapper.appendChild(results);\n var divInput = document.createElement('div');\n this.dom.input = divInput;\n divInput.className = 'jsoneditor-frame';\n divInput.title = (0,i18n/* translate */.Iu)('searchTitle');\n wrapper.appendChild(divInput);\n var refreshSearch = document.createElement('button');\n refreshSearch.type = 'button';\n refreshSearch.className = 'jsoneditor-refresh';\n divInput.appendChild(refreshSearch);\n var search = document.createElement('input');\n search.type = 'text';\n this.dom.search = search;\n\n search.oninput = function (event) {\n searchBox._onDelayedSearch(event);\n };\n\n search.onchange = function (event) {\n // For IE 9\n searchBox._onSearch();\n };\n\n search.onkeydown = function (event) {\n searchBox._onKeyDown(event);\n };\n\n search.onkeyup = function (event) {\n searchBox._onKeyUp(event);\n };\n\n refreshSearch.onclick = function (event) {\n search.select();\n }; // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819\n\n\n divInput.appendChild(search);\n var searchNext = document.createElement('button');\n searchNext.type = 'button';\n searchNext.title = (0,i18n/* translate */.Iu)('searchNextResultTitle');\n searchNext.className = 'jsoneditor-next';\n\n searchNext.onclick = function () {\n searchBox.next();\n };\n\n divInput.appendChild(searchNext);\n var searchPrevious = document.createElement('button');\n searchPrevious.type = 'button';\n searchPrevious.title = (0,i18n/* translate */.Iu)('searchPreviousResultTitle');\n searchPrevious.className = 'jsoneditor-previous';\n\n searchPrevious.onclick = function () {\n searchBox.previous();\n };\n\n divInput.appendChild(searchPrevious);\n }\n /**\n * Go to the next search result\n * @param {boolean} [focus] If true, focus will be set to the next result\n * focus is false by default.\n */\n\n\n SearchBox_createClass(SearchBox, [{\n key: \"next\",\n value: function next(focus) {\n if (this.results) {\n var index = this.resultIndex !== null ? this.resultIndex + 1 : 0;\n\n if (index > this.results.length - 1) {\n index = 0;\n }\n\n this._setActiveResult(index, focus);\n }\n }\n /**\n * Go to the prevous search result\n * @param {boolean} [focus] If true, focus will be set to the next result\n * focus is false by default.\n */\n\n }, {\n key: \"previous\",\n value: function previous(focus) {\n if (this.results) {\n var max = this.results.length - 1;\n var index = this.resultIndex !== null ? this.resultIndex - 1 : max;\n\n if (index < 0) {\n index = max;\n }\n\n this._setActiveResult(index, focus);\n }\n }\n /**\n * Set new value for the current active result\n * @param {Number} index\n * @param {boolean} [focus] If true, focus will be set to the next result.\n * focus is false by default.\n * @private\n */\n\n }, {\n key: \"_setActiveResult\",\n value: function _setActiveResult(index, focus) {\n // de-activate current active result\n if (this.activeResult) {\n var prevNode = this.activeResult.node;\n var prevElem = this.activeResult.elem;\n\n if (prevElem === 'field') {\n delete prevNode.searchFieldActive;\n } else {\n delete prevNode.searchValueActive;\n }\n\n prevNode.updateDom();\n }\n\n if (!this.results || !this.results[index]) {\n // out of range, set to undefined\n this.resultIndex = undefined;\n this.activeResult = undefined;\n return;\n }\n\n this.resultIndex = index; // set new node active\n\n var node = this.results[this.resultIndex].node;\n var elem = this.results[this.resultIndex].elem;\n\n if (elem === 'field') {\n node.searchFieldActive = true;\n } else {\n node.searchValueActive = true;\n }\n\n this.activeResult = this.results[this.resultIndex];\n node.updateDom(); // TODO: not so nice that the focus is only set after the animation is finished\n\n node.scrollTo(function () {\n if (focus) {\n node.focus(elem);\n }\n });\n }\n /**\n * Cancel any running onDelayedSearch.\n * @private\n */\n\n }, {\n key: \"_clearDelay\",\n value: function _clearDelay() {\n if (this.timeout !== undefined) {\n clearTimeout(this.timeout);\n delete this.timeout;\n }\n }\n /**\n * Start a timer to execute a search after a short delay.\n * Used for reducing the number of searches while typing.\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onDelayedSearch\",\n value: function _onDelayedSearch(event) {\n // execute the search after a short delay (reduces the number of\n // search actions while typing in the search text box)\n this._clearDelay();\n\n var searchBox = this;\n this.timeout = setTimeout(function (event) {\n searchBox._onSearch();\n }, this.delay);\n }\n /**\n * Handle onSearch event\n * @param {boolean} [forceSearch] If true, search will be executed again even\n * when the search text is not changed.\n * Default is false.\n * @private\n */\n\n }, {\n key: \"_onSearch\",\n value: function _onSearch(forceSearch) {\n this._clearDelay();\n\n var value = this.dom.search.value;\n var text = value.length > 0 ? value : undefined;\n\n if (text !== this.lastText || forceSearch) {\n // only search again when changed\n this.lastText = text;\n this.results = this.editor.search(text);\n var MAX_SEARCH_RESULTS = this.results[0] ? this.results[0].node.MAX_SEARCH_RESULTS : Infinity; // try to maintain the current active result if this is still part of the new search results\n\n var activeResultIndex = 0;\n\n if (this.activeResult) {\n for (var i = 0; i < this.results.length; i++) {\n if (this.results[i].node === this.activeResult.node) {\n activeResultIndex = i;\n break;\n }\n }\n }\n\n this._setActiveResult(activeResultIndex, false); // display search results\n\n\n if (text !== undefined) {\n var resultCount = this.results.length;\n\n if (resultCount === 0) {\n this.dom.results.textContent = \"no\\xA0results\";\n } else if (resultCount === 1) {\n this.dom.results.textContent = \"1\\xA0result\";\n } else if (resultCount > MAX_SEARCH_RESULTS) {\n this.dom.results.textContent = MAX_SEARCH_RESULTS + \"+\\xA0results\";\n } else {\n this.dom.results.textContent = resultCount + \"\\xA0results\";\n }\n } else {\n this.dom.results.textContent = '';\n }\n }\n }\n /**\n * Handle onKeyDown event in the input box\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onKeyDown\",\n value: function _onKeyDown(event) {\n var keynum = event.which;\n\n if (keynum === 27) {\n // ESC\n this.dom.search.value = ''; // clear search\n\n this._onSearch();\n\n event.preventDefault();\n event.stopPropagation();\n } else if (keynum === 13) {\n // Enter\n if (event.ctrlKey) {\n // force to search again\n this._onSearch(true);\n } else if (event.shiftKey) {\n // move to the previous search result\n this.previous();\n } else {\n // move to the next search result\n this.next();\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /**\n * Handle onKeyUp event in the input box\n * @param {Event} event\n * @private\n */\n\n }, {\n key: \"_onKeyUp\",\n value: function _onKeyUp(event) {\n var keynum = event.keyCode;\n\n if (keynum !== 27 && keynum !== 13) {\n // !show and !Enter\n this._onDelayedSearch(event); // For IE 9\n\n }\n }\n /**\n * Clear the search results\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n this.dom.search.value = '';\n\n this._onSearch();\n }\n /**\n * Refresh searchResults if there is a search value\n */\n\n }, {\n key: \"forceSearch\",\n value: function forceSearch() {\n this._onSearch(true);\n }\n /**\n * Test whether the search box value is empty\n * @returns {boolean} Returns true when empty.\n */\n\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.dom.search.value === '';\n }\n /**\n * Destroy the search box\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.editor = null;\n this.dom.container.removeChild(this.dom.wrapper);\n this.dom = null;\n this.results = null;\n this.activeResult = null;\n\n this._clearDelay();\n }\n }]);\n\n return SearchBox;\n}();\n;// CONCATENATED MODULE: ./src/js/TreePath.js\n\n\nfunction TreePath_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction TreePath_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction TreePath_createClass(Constructor, protoProps, staticProps) { if (protoProps) TreePath_defineProperties(Constructor.prototype, protoProps); if (staticProps) TreePath_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n\n\n\n/**\n * Creates a component that visualize path selection in tree based editors\n * @param {HTMLElement} container\n * @param {HTMLElement} root\n * @constructor\n */\n\nvar TreePath = /*#__PURE__*/function () {\n function TreePath(container, root) {\n TreePath_classCallCheck(this, TreePath);\n\n if (container) {\n this.root = root;\n this.path = document.createElement('div');\n this.path.className = 'jsoneditor-treepath';\n this.path.setAttribute('tabindex', 0);\n this.contentMenuClicked = false;\n container.appendChild(this.path);\n this.reset();\n }\n }\n /**\n * Reset component to initial status\n */\n\n\n TreePath_createClass(TreePath, [{\n key: \"reset\",\n value: function reset() {\n this.path.textContent = (0,i18n/* translate */.Iu)('selectNode');\n }\n /**\n * Renders the component UI according to a given path objects\n * @param {Array<{name: String, childs: Array}>} pathObjs a list of path objects\n *\n */\n\n }, {\n key: \"setPath\",\n value: function setPath(pathObjs) {\n var me = this;\n this.path.textContent = '';\n\n if (pathObjs && pathObjs.length) {\n pathObjs.forEach(function (pathObj, idx) {\n var pathEl = document.createElement('span');\n var sepEl;\n pathEl.className = 'jsoneditor-treepath-element';\n pathEl.innerText = pathObj.name;\n pathEl.onclick = _onSegmentClick.bind(me, pathObj);\n me.path.appendChild(pathEl);\n\n if (pathObj.children.length) {\n sepEl = document.createElement('span');\n sepEl.className = 'jsoneditor-treepath-seperator';\n sepEl.textContent = \"\\u25BA\";\n\n sepEl.onclick = function () {\n me.contentMenuClicked = true;\n var items = [];\n pathObj.children.forEach(function (child) {\n items.push({\n text: child.name,\n className: 'jsoneditor-type-modes' + (pathObjs[idx + 1] + 1 && pathObjs[idx + 1].name === child.name ? ' jsoneditor-selected' : ''),\n click: _onContextMenuItemClick.bind(me, pathObj, child.name)\n });\n });\n var menu = new ContextMenu/* ContextMenu */.x(items, {\n limitHeight: true\n });\n menu.show(sepEl, me.root, true);\n };\n\n me.path.appendChild(sepEl);\n }\n\n if (idx === pathObjs.length - 1) {\n var leftRectPos = (sepEl || pathEl).getBoundingClientRect().right;\n\n if (me.path.offsetWidth < leftRectPos) {\n me.path.scrollLeft = leftRectPos;\n }\n\n if (me.path.scrollLeft) {\n var showAllBtn = document.createElement('span');\n showAllBtn.className = 'jsoneditor-treepath-show-all-btn';\n showAllBtn.title = 'show all path';\n showAllBtn.textContent = '...';\n showAllBtn.onclick = _onShowAllClick.bind(me, pathObjs);\n me.path.insertBefore(showAllBtn, me.path.firstChild);\n }\n }\n });\n }\n\n function _onShowAllClick(pathObjs) {\n me.contentMenuClicked = false;\n (0,util.addClassName)(me.path, 'show-all');\n me.path.style.width = me.path.parentNode.getBoundingClientRect().width - 10 + 'px';\n\n me.path.onblur = function () {\n if (me.contentMenuClicked) {\n me.contentMenuClicked = false;\n me.path.focus();\n return;\n }\n\n (0,util.removeClassName)(me.path, 'show-all');\n me.path.onblur = undefined;\n me.path.style.width = '';\n me.setPath(pathObjs);\n };\n }\n\n function _onSegmentClick(pathObj) {\n if (this.selectionCallback) {\n this.selectionCallback(pathObj);\n }\n }\n\n function _onContextMenuItemClick(pathObj, selection) {\n if (this.contextMenuCallback) {\n this.contextMenuCallback(pathObj, selection);\n }\n }\n }\n /**\n * set a callback function for selection of path section\n * @param {Function} callback function to invoke when section is selected\n */\n\n }, {\n key: \"onSectionSelected\",\n value: function onSectionSelected(callback) {\n if (typeof callback === 'function') {\n this.selectionCallback = callback;\n }\n }\n /**\n * set a callback function for selection of path section\n * @param {Function} callback function to invoke when section is selected\n */\n\n }, {\n key: \"onContextMenuItemSelected\",\n value: function onContextMenuItemSelected(callback) {\n if (typeof callback === 'function') {\n this.contextMenuCallback = callback;\n }\n }\n }]);\n\n return TreePath;\n}();\n// EXTERNAL MODULE: ./src/js/vanilla-picker/index.js\nvar vanilla_picker = __webpack_require__(37);\nvar vanilla_picker_default = /*#__PURE__*/__webpack_require__.n(vanilla_picker);\n;// CONCATENATED MODULE: ./src/js/treemode.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // create a mixin with the functions for tree mode\n\nvar treemode = {};\n/**\n * Create a tree editor\n * @param {Element} container Container element\n * @param {Object} [options] Object with options. See docs for details.\n * @private\n */\n\ntreemode.create = function (container, options) {\n if (!container) {\n throw new Error('No container element provided.');\n }\n\n this.container = container;\n this.dom = {};\n this.highlighter = new Highlighter();\n this.selection = undefined; // will hold the last input selection\n\n this.multiselection = {\n nodes: []\n };\n this.validateSchema = null; // will be set in .setSchema(schema)\n\n this.validationSequence = 0;\n this.errorNodes = [];\n this.lastSchemaErrors = undefined;\n this.node = null;\n this.focusTarget = null;\n\n this._setOptions(options);\n\n if (options.autocomplete) {\n this.autocomplete = autocomplete(options.autocomplete);\n }\n\n if (this.options.history && this.options.mode !== 'view') {\n this.history = new NodeHistory(this);\n }\n\n this._createFrame();\n\n this._createTable();\n};\n/**\n * Destroy the editor. Clean up DOM, event listeners, and web workers.\n */\n\n\ntreemode.destroy = function () {\n if (this.frame && this.container && this.frame.parentNode === this.container) {\n this.container.removeChild(this.frame);\n this.frame = null;\n }\n\n this.container = null;\n this.dom = null;\n this.clear();\n this.node = null;\n this.focusTarget = null;\n this.selection = null;\n this.multiselection = null;\n this.errorNodes = null;\n this.validateSchema = null;\n this._debouncedValidate = null;\n\n if (this.history) {\n this.history.destroy();\n this.history = null;\n }\n\n if (this.searchBox) {\n this.searchBox.destroy();\n this.searchBox = null;\n }\n\n if (this.modeSwitcher) {\n this.modeSwitcher.destroy();\n this.modeSwitcher = null;\n } // Removing the FocusTracker set to track the editor's focus event\n\n\n this.frameFocusTracker.destroy();\n};\n/**\n * Initialize and set default options\n * @param {Object} [options] See description in constructor\n * @private\n */\n\n\ntreemode._setOptions = function (options) {\n var _this = this;\n\n this.options = {\n search: true,\n history: true,\n mode: 'tree',\n name: undefined,\n // field name of root node\n schema: null,\n schemaRefs: null,\n autocomplete: null,\n navigationBar: true,\n mainMenuBar: true,\n limitDragging: false,\n onSelectionChange: null,\n colorPicker: true,\n onColorPicker: function onColorPicker(parent, color, onChange) {\n if ((vanilla_picker_default())) {\n // we'll render the color picker on top\n // when there is not enough space below, and there is enough space above\n var pickerHeight = 300; // estimated height of the color picker\n\n var top = parent.getBoundingClientRect().top;\n var windowHeight = (0,util.getWindow)(parent).innerHeight;\n var showOnTop = windowHeight - top < pickerHeight && top > pickerHeight;\n new (vanilla_picker_default())({\n parent: parent,\n color: color,\n popup: showOnTop ? 'top' : 'bottom',\n onDone: function onDone(color) {\n var alpha = color.rgba[3];\n var hex = alpha === 1 ? color.hex.substr(0, 7) // return #RRGGBB\n : color.hex; // return #RRGGBBAA\n\n onChange(hex);\n }\n }).show();\n } else {\n console.warn('Cannot open color picker: the `vanilla-picker` library is not included in the bundle. ' + 'Either use the full bundle or implement your own color picker using `onColorPicker`.');\n }\n },\n timestampTag: true,\n timestampFormat: null,\n createQuery: jmespathQuery/* createQuery */.r,\n executeQuery: jmespathQuery/* executeQuery */.J,\n onEvent: null,\n enableSort: true,\n enableTransform: true\n }; // copy all options\n\n if (options) {\n Object.keys(options).forEach(function (prop) {\n _this.options[prop] = options[prop];\n }); // default limitDragging to true when a JSON schema is defined\n\n if (options.limitDragging == null && options.schema != null) {\n this.options.limitDragging = true;\n }\n } // compile a JSON schema validator if a JSON schema is provided\n\n\n this.setSchema(this.options.schema, this.options.schemaRefs); // create a debounced validate function\n\n this._debouncedValidate = (0,util.debounce)(this._validateAndCatch.bind(this), this.DEBOUNCE_INTERVAL);\n\n if (options.onSelectionChange) {\n this.onSelectionChange(options.onSelectionChange);\n }\n\n (0,i18n/* setLanguages */.cC)(this.options.languages);\n (0,i18n/* setLanguage */.m0)(this.options.language);\n};\n/**\n * Set new JSON object in editor.\n * Resets the state of the editor (expanded nodes, search, selection).\n *\n * @param {*} json\n */\n\n\ntreemode.set = function (json) {\n // verify if json is valid JSON, ignore when a function\n if (json instanceof Function || json === undefined) {\n this.clear();\n } else {\n this.content.removeChild(this.table); // Take the table offline\n // replace the root node\n\n var params = {\n field: this.options.name,\n value: json\n };\n var node = new Node(this, params);\n\n this._setRoot(node); // validate JSON schema (if configured)\n\n\n this._validateAndCatch(); // expand\n\n\n var recurse = false;\n this.node.expand(recurse);\n this.content.appendChild(this.table); // Put the table online again\n } // TODO: maintain history, store last state and previous document\n\n\n if (this.history) {\n this.history.clear();\n } // clear search\n\n\n if (this.searchBox) {\n this.searchBox.clear();\n }\n};\n/**\n * Update JSON object in editor.\n * Maintains the state of the editor (expanded nodes, search, selection).\n *\n * @param {*} json\n */\n\n\ntreemode.update = function (json) {\n // don't update if there are no changes\n if (this.node.deepEqual(json)) {\n return;\n }\n\n var selection = this.getSelection(); // apply the changed json\n\n this.onChangeDisabled = true; // don't fire an onChange event\n\n this.node.update(json);\n this.onChangeDisabled = false; // validate JSON schema\n\n this._validateAndCatch(); // update search result if any\n\n\n if (this.searchBox && !this.searchBox.isEmpty()) {\n this.searchBox.forceSearch();\n } // update selection if any\n\n\n if (selection && selection.start && selection.end) {\n // only keep/update the selection if both start and end node still exists,\n // else we clear the selection\n var startNode = this.node.findNodeByPath(selection.start.path);\n var endNode = this.node.findNodeByPath(selection.end.path);\n\n if (startNode && endNode) {\n this.setSelection(selection.start, selection.end);\n } else {\n this.setSelection({}, {}); // clear selection\n }\n } else {\n this.setSelection({}, {}); // clear selection\n }\n};\n/**\n * Get JSON object from editor\n * @return {Object | undefined} json\n */\n\n\ntreemode.get = function () {\n // TODO: resolve pending debounced input changes if any, but do not resolve invalid inputs\n if (this.node) {\n return this.node.getValue();\n } else {\n return undefined;\n }\n};\n/**\n * Get the text contents of the editor\n * @return {String} jsonText\n */\n\n\ntreemode.getText = function () {\n return JSON.stringify(this.get());\n};\n/**\n * Set the text contents of the editor.\n * Resets the state of the editor (expanded nodes, search, selection).\n * @param {String} jsonText\n */\n\n\ntreemode.setText = function (jsonText) {\n try {\n this.set((0,util.parse)(jsonText)); // this can throw an error\n } catch (err) {\n // try to repair json, replace JavaScript notation with JSON notation\n var repairedJsonText = (0,util.tryJsonRepair)(jsonText); // try to parse again\n\n this.set((0,util.parse)(repairedJsonText)); // this can throw an error\n }\n};\n/**\n * Update the text contents of the editor.\n * Maintains the state of the editor (expanded nodes, search, selection).\n * @param {String} jsonText\n */\n\n\ntreemode.updateText = function (jsonText) {\n try {\n this.update((0,util.parse)(jsonText)); // this can throw an error\n } catch (err) {\n // try to repair json, replace JavaScript notation with JSON notation\n var repairJsonText = (0,util.tryJsonRepair)(jsonText); // try to parse again\n\n this.update((0,util.parse)(repairJsonText)); // this can throw an error\n }\n};\n/**\n * Set a field name for the root node.\n * @param {String | undefined} name\n */\n\n\ntreemode.setName = function (name) {\n this.options.name = name;\n\n if (this.node) {\n this.node.updateField(this.options.name);\n }\n};\n/**\n * Get the field name for the root node.\n * @return {String | undefined} name\n */\n\n\ntreemode.getName = function () {\n return this.options.name;\n};\n/**\n * Set focus to the editor. Focus will be set to:\n * - the first editable field or value, or else\n * - to the expand button of the root node, or else\n * - to the context menu button of the root node, or else\n * - to the first button in the top menu\n */\n\n\ntreemode.focus = function () {\n var input = this.scrollableContent.querySelector('[contenteditable=true]');\n\n if (input) {\n input.focus();\n } else if (this.node.dom.expand) {\n this.node.dom.expand.focus();\n } else if (this.node.dom.menu) {\n this.node.dom.menu.focus();\n } else {\n // focus to the first button in the menu\n input = this.frame.querySelector('button');\n\n if (input) {\n input.focus();\n }\n }\n};\n/**\n * Remove the root node from the editor\n */\n\n\ntreemode.clear = function () {\n if (this.node) {\n this.node.hide();\n delete this.node;\n }\n\n if (this.treePath) {\n this.treePath.reset();\n }\n};\n/**\n * Set the root node for the json editor\n * @param {Node} node\n * @private\n */\n\n\ntreemode._setRoot = function (node) {\n this.clear();\n this.node = node;\n node.setParent(null);\n node.setField(this.getName(), false);\n delete node.index; // append to the dom\n\n this.tbody.appendChild(node.getDom());\n};\n/**\n * Search text in all nodes\n * The nodes will be expanded when the text is found one of its childs,\n * else it will be collapsed. Searches are case insensitive.\n * @param {String} text\n * @return {Object[]} results Array with nodes containing the search results\n * The result objects contains fields:\n * - {Node} node,\n * - {String} elem the dom element name where\n * the result is found ('field' or\n * 'value')\n */\n\n\ntreemode.search = function (text) {\n var results;\n\n if (this.node) {\n this.content.removeChild(this.table); // Take the table offline\n\n results = this.node.search(text);\n this.content.appendChild(this.table); // Put the table online again\n } else {\n results = [];\n }\n\n return results;\n};\n/**\n * Expand all nodes\n */\n\n\ntreemode.expandAll = function () {\n if (this.node) {\n this.content.removeChild(this.table); // Take the table offline\n\n this.node.expand();\n this.content.appendChild(this.table); // Put the table online again\n }\n};\n/**\n * Collapse all nodes\n */\n\n\ntreemode.collapseAll = function () {\n if (this.node) {\n this.content.removeChild(this.table); // Take the table offline\n\n this.node.collapse();\n this.content.appendChild(this.table); // Put the table online again\n }\n};\n/**\n * The method onChange is called whenever a field or value is changed, created,\n * deleted, duplicated, etc.\n * @param {String} action Change action. Available values: \"editField\",\n * \"editValue\", \"changeType\", \"appendNode\",\n * \"removeNode\", \"duplicateNode\", \"moveNode\", \"expand\",\n * \"collapse\".\n * @param {Object} params Object containing parameters describing the change.\n * The parameters in params depend on the action (for\n * example for \"editValue\" the Node, old value, and new\n * value are provided). params contains all information\n * needed to undo or redo the action.\n * @private\n */\n\n\ntreemode._onAction = function (action, params) {\n // add an action to the history\n if (this.history) {\n this.history.add(action, params);\n }\n\n this._onChange();\n};\n/**\n * Handle a change:\n * - Validate JSON schema\n * - Send a callback to the onChange listener if provided\n * @private\n */\n\n\ntreemode._onChange = function () {\n if (this.onChangeDisabled) {\n return;\n } // selection can be changed after undo/redo\n\n\n this.selection = this.getDomSelection(); // validate JSON schema (if configured)\n\n this._debouncedValidate();\n\n if (this.treePath) {\n var selectedNode = this.node && this.selection ? this.node.findNodeByInternalPath(this.selection.path) : this.multiselection ? this.multiselection.nodes[0] : undefined;\n\n if (selectedNode) {\n this._updateTreePath(selectedNode.getNodePath());\n } else {\n this.treePath.reset();\n }\n } // trigger the onChange callback\n\n\n if (this.options.onChange) {\n try {\n this.options.onChange();\n } catch (err) {\n console.error('Error in onChange callback: ', err);\n }\n } // trigger the onChangeJSON callback\n\n\n if (this.options.onChangeJSON) {\n try {\n this.options.onChangeJSON(this.get());\n } catch (err) {\n console.error('Error in onChangeJSON callback: ', err);\n }\n } // trigger the onChangeText callback\n\n\n if (this.options.onChangeText) {\n try {\n this.options.onChangeText(this.getText());\n } catch (err) {\n console.error('Error in onChangeText callback: ', err);\n }\n } // trigger the onClassName callback\n\n\n if (this.options.onClassName) {\n this.node.recursivelyUpdateCssClassesOnNodes();\n } // trigger the onNodeName callback\n\n\n if (this.options.onNodeName && this.node.childs) {\n try {\n this.node.recursivelyUpdateNodeName();\n } catch (err) {\n console.error('Error in onNodeName callback: ', err);\n }\n }\n};\n/**\n * Validate current JSON object against the configured JSON schema\n * Throws an exception when no JSON schema is configured\n */\n\n\ntreemode.validate = function () {\n var _this2 = this;\n\n var root = this.node;\n\n if (!root) {\n // TODO: this should be redundant but is needed on mode switch\n return;\n }\n\n var json = root.getValue(); // execute JSON schema validation\n\n var schemaErrors = [];\n\n if (this.validateSchema) {\n var valid = this.validateSchema(json);\n\n if (!valid) {\n // apply all new errors\n schemaErrors = this.validateSchema.errors.map(function (error) {\n return (0,util.improveSchemaError)(error);\n }).map(function findNode(error) {\n return {\n node: root.findNode(error.dataPath),\n error: error,\n type: 'validation'\n };\n }).filter(function hasNode(entry) {\n return entry.node != null;\n });\n }\n } // execute custom validation and after than merge and render all errors\n\n\n try {\n this.validationSequence++;\n var me = this;\n var seq = this.validationSequence;\n return this._validateCustom(json).then(function (customValidationErrors) {\n // only apply when there was no other validation started whilst resolving async results\n if (seq === me.validationSequence) {\n var errorNodes = [].concat(schemaErrors, customValidationErrors || []);\n\n me._renderValidationErrors(errorNodes);\n\n if (typeof _this2.options.onValidationError === 'function' && (0,util.isValidationErrorChanged)(errorNodes, _this2.lastSchemaErrors)) {\n _this2.options.onValidationError.call(_this2, errorNodes);\n }\n\n _this2.lastSchemaErrors = errorNodes;\n }\n\n return _this2.lastSchemaErrors;\n });\n } catch (err) {\n return Promise.reject(err);\n }\n};\n\ntreemode._validateAndCatch = function () {\n this.validate()[\"catch\"](function (err) {\n console.error('Error running validation:', err);\n });\n};\n\ntreemode._renderValidationErrors = function (errorNodes) {\n // clear all current errors\n if (this.errorNodes) {\n this.errorNodes.forEach(function (node) {\n node.setError(null);\n });\n } // render the new errors\n\n\n var parentPairs = errorNodes.reduce(function (all, entry) {\n return entry.node.findParents().filter(function (parent) {\n return !all.some(function (pair) {\n return pair[0] === parent;\n });\n }).map(function (parent) {\n return [parent, entry.node];\n }).concat(all);\n }, []);\n this.errorNodes = parentPairs.map(function (pair) {\n return {\n node: pair[0],\n child: pair[1],\n error: {\n message: pair[0].type === 'object' ? (0,i18n/* translate */.Iu)('containsInvalidProperties') // object\n : (0,i18n/* translate */.Iu)('containsInvalidItems') // array\n\n }\n };\n }).concat(errorNodes).map(function setError(entry) {\n entry.node.setError(entry.error, entry.child);\n return entry.node;\n });\n};\n/**\n * Execute custom validation if configured.\n *\n * Returns a promise resolving with the custom errors (or nothing).\n */\n\n\ntreemode._validateCustom = function (json) {\n try {\n if (this.options.onValidate) {\n var root = this.node;\n var customValidateResults = this.options.onValidate(json);\n var resultPromise = (0,util.isPromise)(customValidateResults) ? customValidateResults : Promise.resolve(customValidateResults);\n return resultPromise.then(function (customValidationPathErrors) {\n if (Array.isArray(customValidationPathErrors)) {\n return customValidationPathErrors.filter(function (error) {\n var valid = (0,util.isValidValidationError)(error);\n\n if (!valid) {\n console.warn('Ignoring a custom validation error with invalid structure. ' + 'Expected structure: {path: [...], message: \"...\"}. ' + 'Actual error:', error);\n }\n\n return valid;\n }).map(function (error) {\n var node;\n\n try {\n node = error && error.path ? root.findNodeByPath(error.path) : null;\n } catch (err) {// stay silent here, we throw a generic warning if no node is found\n }\n\n if (!node) {\n console.warn('Ignoring validation error: node not found. Path:', error.path, 'Error:', error);\n }\n\n return {\n node: node,\n error: error,\n type: 'customValidation'\n };\n }).filter(function (entry) {\n return entry && entry.node && entry.error && entry.error.message;\n });\n } else {\n return null;\n }\n });\n }\n } catch (err) {\n return Promise.reject(err);\n }\n\n return Promise.resolve(null);\n};\n/**\n * Refresh the rendered contents\n */\n\n\ntreemode.refresh = function () {\n if (this.node) {\n this.node.updateDom({\n recurse: true\n });\n }\n};\n/**\n * Start autoscrolling when given mouse position is above the top of the\n * editor contents, or below the bottom.\n * @param {Number} mouseY Absolute mouse position in pixels\n */\n\n\ntreemode.startAutoScroll = function (mouseY) {\n var me = this;\n var content = this.scrollableContent;\n var top = (0,util.getAbsoluteTop)(content);\n var height = content.clientHeight;\n var bottom = top + height;\n var margin = 24;\n var interval = 50; // ms\n\n if (mouseY < top + margin && content.scrollTop > 0) {\n this.autoScrollStep = (top + margin - mouseY) / 3;\n } else if (mouseY > bottom - margin && height + content.scrollTop < content.scrollHeight) {\n this.autoScrollStep = (bottom - margin - mouseY) / 3;\n } else {\n this.autoScrollStep = undefined;\n }\n\n if (this.autoScrollStep) {\n if (!this.autoScrollTimer) {\n this.autoScrollTimer = setInterval(function () {\n if (me.autoScrollStep) {\n content.scrollTop -= me.autoScrollStep;\n } else {\n me.stopAutoScroll();\n }\n }, interval);\n }\n } else {\n this.stopAutoScroll();\n }\n};\n/**\n * Stop auto scrolling. Only applicable when scrolling\n */\n\n\ntreemode.stopAutoScroll = function () {\n if (this.autoScrollTimer) {\n clearTimeout(this.autoScrollTimer);\n delete this.autoScrollTimer;\n }\n\n if (this.autoScrollStep) {\n delete this.autoScrollStep;\n }\n};\n/**\n * Set the focus to an element in the editor, set text selection, and\n * set scroll position.\n * @param {Object} selection An object containing fields:\n * {Element | undefined} dom The dom element\n * which has focus\n * {Range | TextRange} range A text selection\n * {Node[]} nodes Nodes in case of multi selection\n * {Number} scrollTop Scroll position\n */\n\n\ntreemode.setDomSelection = function (selection) {\n if (!selection) {\n return;\n }\n\n if ('scrollTop' in selection && this.scrollableContent) {\n // TODO: animated scroll\n this.scrollableContent.scrollTop = selection.scrollTop;\n }\n\n if (selection.paths) {\n // multi-select\n var me = this;\n var nodes = selection.paths.map(function (path) {\n return me.node.findNodeByInternalPath(path);\n });\n this.select(nodes);\n } else {\n // find the actual DOM element where to apply the focus\n var node = selection.path ? this.node.findNodeByInternalPath(selection.path) : null;\n var container = node && selection.domName ? node.dom[selection.domName] : null;\n\n if (selection.range && container) {\n var range = Object.assign({}, selection.range, {\n container: container\n });\n (0,util.setSelectionOffset)(range);\n } else if (node) {\n // just a fallback\n node.focus();\n }\n }\n};\n/**\n * Get the current focus\n * @return {Object} selection An object containing fields:\n * {Element | undefined} dom The dom element\n * which has focus\n * {Range | TextRange} range A text selection\n * {Node[]} nodes Nodes in case of multi selection\n * {Number} scrollTop Scroll position\n */\n\n\ntreemode.getDomSelection = function () {\n // find the node and field name of the current target,\n // so we can store the current selection in a serializable\n // way (internal node path and domName)\n var node = Node.getNodeFromTarget(this.focusTarget);\n var focusTarget = this.focusTarget;\n var domName = node ? Object.keys(node.dom).find(function (domName) {\n return node.dom[domName] === focusTarget;\n }) : null;\n var range = (0,util.getSelectionOffset)();\n\n if (range && range.container.nodeName !== 'DIV') {\n // filter on (editable) divs)\n range = null;\n }\n\n if (range && range.container !== focusTarget) {\n range = null;\n }\n\n if (range) {\n // we cannot rely on the current instance of the container,\n // we need to store the internal node path and field and\n // find the actual DOM field when applying the selection\n delete range.container;\n }\n\n return {\n path: node ? node.getInternalPath() : null,\n domName: domName,\n range: range,\n paths: this.multiselection.length > 0 ? this.multiselection.nodes.map(function (node) {\n return node.getInternalPath();\n }) : null,\n scrollTop: this.scrollableContent ? this.scrollableContent.scrollTop : 0\n };\n};\n/**\n * Adjust the scroll position such that given top position is shown at 1/4\n * of the window height.\n * @param {Number} top\n * @param {function(boolean)} [animateCallback] Callback, executed when animation is\n * finished. The callback returns true\n * when animation is finished, or false\n * when not.\n */\n\n\ntreemode.scrollTo = function (top, animateCallback) {\n var content = this.scrollableContent;\n\n if (content) {\n var editor = this; // cancel any running animation\n\n if (editor.animateTimeout) {\n clearTimeout(editor.animateTimeout);\n delete editor.animateTimeout;\n }\n\n if (editor.animateCallback) {\n editor.animateCallback(false);\n delete editor.animateCallback;\n } // calculate final scroll position\n\n\n var height = content.clientHeight;\n var bottom = content.scrollHeight - height;\n var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom); // animate towards the new scroll position\n\n var animate = function animate() {\n var scrollTop = content.scrollTop;\n var diff = finalScrollTop - scrollTop;\n\n if (Math.abs(diff) > 3) {\n content.scrollTop += diff / 3;\n editor.animateCallback = animateCallback;\n editor.animateTimeout = setTimeout(animate, 50);\n } else {\n // finished\n if (animateCallback) {\n animateCallback(true);\n }\n\n content.scrollTop = finalScrollTop;\n delete editor.animateTimeout;\n delete editor.animateCallback;\n }\n };\n\n animate();\n } else {\n if (animateCallback) {\n animateCallback(false);\n }\n }\n};\n/**\n * Create main frame\n * @private\n */\n\n\ntreemode._createFrame = function () {\n // create the frame\n this.frame = document.createElement('div');\n this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode; // this.frame.setAttribute(\"tabindex\",\"0\");\n\n this.container.appendChild(this.frame);\n this.contentOuter = document.createElement('div');\n this.contentOuter.className = 'jsoneditor-outer'; // create one global event listener to handle all events from all nodes\n\n var editor = this;\n\n function onEvent(event) {\n // when switching to mode \"code\" or \"text\" via the menu, some events\n // are still fired whilst the _onEvent methods is already removed.\n if (editor._onEvent) {\n editor._onEvent(event);\n }\n } // setting the FocusTracker on 'this.frame' to track the editor's focus event\n\n\n var focusTrackerConfig = {\n target: this.frame,\n onFocus: this.options.onFocus || null,\n onBlur: this.options.onBlur || null\n };\n this.frameFocusTracker = new FocusTracker/* FocusTracker */.R(focusTrackerConfig);\n\n this.frame.onclick = function (event) {\n var target = event.target; // || event.srcElement;\n\n onEvent(event); // prevent default submit action of buttons when editor is located\n // inside a form\n\n if (target.nodeName === 'BUTTON') {\n event.preventDefault();\n }\n };\n\n this.frame.oninput = onEvent;\n this.frame.onchange = onEvent;\n this.frame.onkeydown = onEvent;\n this.frame.onkeyup = onEvent;\n this.frame.oncut = onEvent;\n this.frame.onpaste = onEvent;\n this.frame.onmousedown = onEvent;\n this.frame.onmouseup = onEvent;\n this.frame.onmouseover = onEvent;\n this.frame.onmouseout = onEvent; // Note: focus and blur events do not propagate, therefore they defined\n // using an eventListener with useCapture=true\n // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n\n (0,util.addEventListener)(this.frame, 'focus', onEvent, true);\n (0,util.addEventListener)(this.frame, 'blur', onEvent, true);\n this.frame.onfocusin = onEvent; // for IE\n\n this.frame.onfocusout = onEvent; // for IE\n\n if (this.options.mainMenuBar) {\n (0,util.addClassName)(this.contentOuter, 'has-main-menu-bar'); // create menu\n\n this.menu = document.createElement('div');\n this.menu.className = 'jsoneditor-menu';\n this.frame.appendChild(this.menu); // create expand all button\n\n var expandAll = document.createElement('button');\n expandAll.type = 'button';\n expandAll.className = 'jsoneditor-expand-all';\n expandAll.title = (0,i18n/* translate */.Iu)('expandAll');\n\n expandAll.onclick = function () {\n editor.expandAll();\n };\n\n this.menu.appendChild(expandAll); // create collapse all button\n\n var collapseAll = document.createElement('button');\n collapseAll.type = 'button';\n collapseAll.title = (0,i18n/* translate */.Iu)('collapseAll');\n collapseAll.className = 'jsoneditor-collapse-all';\n\n collapseAll.onclick = function () {\n editor.collapseAll();\n };\n\n this.menu.appendChild(collapseAll); // create sort button\n\n if (this.options.enableSort) {\n var sort = document.createElement('button');\n sort.type = 'button';\n sort.className = 'jsoneditor-sort';\n sort.title = (0,i18n/* translate */.Iu)('sortTitleShort');\n\n sort.onclick = function () {\n editor.node.showSortModal();\n };\n\n this.menu.appendChild(sort);\n } // create transform button\n\n\n if (this.options.enableTransform) {\n var transform = document.createElement('button');\n transform.type = 'button';\n transform.title = (0,i18n/* translate */.Iu)('transformTitleShort');\n transform.className = 'jsoneditor-transform';\n\n transform.onclick = function () {\n editor.node.showTransformModal();\n };\n\n this.menu.appendChild(transform);\n } // create undo/redo buttons\n\n\n if (this.history) {\n // create undo button\n var undo = document.createElement('button');\n undo.type = 'button';\n undo.className = 'jsoneditor-undo jsoneditor-separator';\n undo.title = (0,i18n/* translate */.Iu)('undo');\n\n undo.onclick = function () {\n editor._onUndo();\n };\n\n this.menu.appendChild(undo);\n this.dom.undo = undo; // create redo button\n\n var redo = document.createElement('button');\n redo.type = 'button';\n redo.className = 'jsoneditor-redo';\n redo.title = (0,i18n/* translate */.Iu)('redo');\n\n redo.onclick = function () {\n editor._onRedo();\n };\n\n this.menu.appendChild(redo);\n this.dom.redo = redo; // register handler for onchange of history\n\n this.history.onChange = function () {\n undo.disabled = !editor.history.canUndo();\n redo.disabled = !editor.history.canRedo();\n };\n\n this.history.onChange();\n } // create mode box\n\n\n if (this.options && this.options.modes && this.options.modes.length) {\n var me = this;\n this.modeSwitcher = new ModeSwitcher/* ModeSwitcher */.x(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\n // switch mode and restore focus\n try {\n me.setMode(mode);\n me.modeSwitcher.focus();\n } catch (err) {\n me._onError(err);\n }\n });\n } // create search box\n\n\n if (this.options.search) {\n this.searchBox = new SearchBox(this, this.menu);\n }\n }\n\n if (this.options.navigationBar) {\n // create second menu row for treepath\n this.navBar = document.createElement('div');\n this.navBar.className = 'jsoneditor-navigation-bar nav-bar-empty';\n this.frame.appendChild(this.navBar);\n this.treePath = new TreePath(this.navBar, this.getPopupAnchor());\n this.treePath.onSectionSelected(this._onTreePathSectionSelected.bind(this));\n this.treePath.onContextMenuItemSelected(this._onTreePathMenuItemSelected.bind(this));\n }\n};\n/**\n * Perform an undo action\n * @private\n */\n\n\ntreemode._onUndo = function () {\n if (this.history) {\n // undo last action\n this.history.undo(); // fire change event\n\n this._onChange();\n }\n};\n/**\n * Perform a redo action\n * @private\n */\n\n\ntreemode._onRedo = function () {\n if (this.history) {\n // redo last action\n this.history.redo(); // fire change event\n\n this._onChange();\n }\n};\n/**\n * Event handler\n * @param event\n * @private\n */\n\n\ntreemode._onEvent = function (event) {\n // don't process events when coming from the color picker\n if (Node.targetIsColorPicker(event.target)) {\n return;\n }\n\n var node = Node.getNodeFromTarget(event.target);\n\n if (event.type === 'keydown') {\n this._onKeyDown(event);\n }\n\n if (node && event.type === 'focus') {\n this.focusTarget = event.target;\n\n if (this.options.autocomplete && this.options.autocomplete.trigger === 'focus') {\n this._showAutoComplete(event.target);\n }\n }\n\n if (event.type === 'mousedown') {\n this._startDragDistance(event);\n }\n\n if (event.type === 'mousemove' || event.type === 'mouseup' || event.type === 'click') {\n this._updateDragDistance(event);\n }\n\n if (node && this.options && this.options.navigationBar && node && (event.type === 'keydown' || event.type === 'mousedown')) {\n // apply on next tick, right after the new key press is applied\n var me = this;\n setTimeout(function () {\n me._updateTreePath(node.getNodePath());\n });\n }\n\n if (node && node.selected) {\n if (event.type === 'click') {\n if (event.target === node.dom.menu) {\n this.showContextMenu(event.target); // stop propagation (else we will open the context menu of a single node)\n\n return;\n } // deselect a multi selection\n\n\n if (!event.hasMoved) {\n this.deselect();\n }\n }\n\n if (event.type === 'mousedown') {\n // drag multiple nodes\n Node.onDragStart(this.multiselection.nodes, event);\n }\n } else {\n // filter mouse events in the contents part of the editor (not the main menu)\n if (event.type === 'mousedown' && (0,util.hasParentNode)(event.target, this.content)) {\n this.deselect();\n\n if (node && event.target === node.dom.drag) {\n // drag a singe node\n Node.onDragStart(node, event);\n } else if (!node || event.target !== node.dom.field && event.target !== node.dom.value && event.target !== node.dom.select) {\n // select multiple nodes\n this._onMultiSelectStart(event);\n }\n }\n }\n\n if (node) {\n node.onEvent(event);\n }\n};\n/**\n * Update TreePath components\n * @param {Array<Node>} pathNodes list of nodes in path from root to selection\n * @private\n */\n\n\ntreemode._updateTreePath = function (pathNodes) {\n if (pathNodes && pathNodes.length) {\n (0,util.removeClassName)(this.navBar, 'nav-bar-empty');\n var pathObjs = [];\n pathNodes.forEach(function (node) {\n var pathObj = {\n name: getName(node),\n node: node,\n children: []\n };\n\n if (node.childs && node.childs.length) {\n node.childs.forEach(function (childNode) {\n pathObj.children.push({\n name: getName(childNode),\n node: childNode\n });\n });\n }\n\n pathObjs.push(pathObj);\n });\n this.treePath.setPath(pathObjs);\n } else {\n (0,util.addClassName)(this.navBar, 'nav-bar-empty');\n }\n\n function getName(node) {\n return node.parent ? node.parent.type === 'array' ? node.index : node.field : node.field || node.type;\n }\n};\n/**\n * Callback for tree path section selection - focus the selected node in the tree\n * @param {Object} pathObj path object that was represents the selected section node\n * @private\n */\n\n\ntreemode._onTreePathSectionSelected = function (pathObj) {\n if (pathObj && pathObj.node) {\n pathObj.node.expandTo();\n pathObj.node.focus();\n }\n};\n/**\n * Callback for tree path menu item selection - rebuild the path accrding to the new selection and focus the selected node in the tree\n * @param {Object} pathObj path object that was represents the parent section node\n * @param {String} selection selected section child\n * @private\n */\n\n\ntreemode._onTreePathMenuItemSelected = function (pathObj, selection) {\n if (pathObj && pathObj.children.length) {\n var selectionObj = pathObj.children.find(function (obj) {\n return obj.name === selection;\n });\n\n if (selectionObj && selectionObj.node) {\n this._updateTreePath(selectionObj.node.getNodePath());\n\n selectionObj.node.expandTo();\n selectionObj.node.focus();\n }\n }\n};\n\ntreemode._startDragDistance = function (event) {\n this.dragDistanceEvent = {\n initialTarget: event.target,\n initialPageX: event.pageX,\n initialPageY: event.pageY,\n dragDistance: 0,\n hasMoved: false\n };\n};\n\ntreemode._updateDragDistance = function (event) {\n if (!this.dragDistanceEvent) {\n this._startDragDistance(event);\n }\n\n var diffX = event.pageX - this.dragDistanceEvent.initialPageX;\n var diffY = event.pageY - this.dragDistanceEvent.initialPageY;\n this.dragDistanceEvent.dragDistance = Math.sqrt(diffX * diffX + diffY * diffY);\n this.dragDistanceEvent.hasMoved = this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10;\n event.dragDistance = this.dragDistanceEvent.dragDistance;\n event.hasMoved = this.dragDistanceEvent.hasMoved;\n return event.dragDistance;\n};\n/**\n * Start multi selection of nodes by dragging the mouse\n * @param {MouseEvent} event\n * @private\n */\n\n\ntreemode._onMultiSelectStart = function (event) {\n var node = Node.getNodeFromTarget(event.target);\n\n if (this.options.mode !== 'tree' || this.options.onEditable !== undefined) {\n // dragging not allowed in modes 'view' and 'form'\n // TODO: allow multiselection of items when option onEditable is specified\n return;\n }\n\n this.multiselection = {\n start: node || null,\n end: null,\n nodes: []\n };\n\n this._startDragDistance(event);\n\n var editor = this;\n\n if (!this.mousemove) {\n this.mousemove = (0,util.addEventListener)(event.view, 'mousemove', function (event) {\n editor._onMultiSelect(event);\n });\n }\n\n if (!this.mouseup) {\n this.mouseup = (0,util.addEventListener)(event.view, 'mouseup', function (event) {\n editor._onMultiSelectEnd(event);\n });\n }\n\n event.preventDefault();\n};\n/**\n * Multiselect nodes by dragging\n * @param {MouseEvent} event\n * @private\n */\n\n\ntreemode._onMultiSelect = function (event) {\n event.preventDefault();\n\n this._updateDragDistance(event);\n\n if (!event.hasMoved) {\n return;\n }\n\n var node = Node.getNodeFromTarget(event.target);\n\n if (node) {\n if (this.multiselection.start == null) {\n this.multiselection.start = node;\n }\n\n this.multiselection.end = node;\n } // deselect previous selection\n\n\n this.deselect(); // find the selected nodes in the range from first to last\n\n var start = this.multiselection.start;\n var end = this.multiselection.end || this.multiselection.start;\n\n if (start && end) {\n // find the top level childs, all having the same parent\n this.multiselection.nodes = this._findTopLevelNodes(start, end);\n\n if (this.multiselection.nodes && this.multiselection.nodes.length) {\n var firstNode = this.multiselection.nodes[0];\n\n if (this.multiselection.start === firstNode || this.multiselection.start.isDescendantOf(firstNode)) {\n this.multiselection.direction = 'down';\n } else {\n this.multiselection.direction = 'up';\n }\n }\n\n this.select(this.multiselection.nodes);\n }\n};\n/**\n * End of multiselect nodes by dragging\n * @param {MouseEvent} event\n * @private\n */\n\n\ntreemode._onMultiSelectEnd = function (event) {\n // set focus to the context menu button of the first node\n var firstNode = this.multiselection.nodes[0];\n\n if (firstNode && firstNode.dom.menu) {\n firstNode.dom.menu.focus();\n }\n\n this.multiselection.start = null;\n this.multiselection.end = null; // cleanup global event listeners\n\n if (this.mousemove) {\n (0,util.removeEventListener)(event.view, 'mousemove', this.mousemove);\n delete this.mousemove;\n }\n\n if (this.mouseup) {\n (0,util.removeEventListener)(event.view, 'mouseup', this.mouseup);\n delete this.mouseup;\n }\n};\n/**\n * deselect currently selected nodes\n * @param {boolean} [clearStartAndEnd=false] If true, the `start` and `end`\n * state is cleared too.\n */\n\n\ntreemode.deselect = function (clearStartAndEnd) {\n var selectionChanged = !!this.multiselection.nodes.length;\n this.multiselection.nodes.forEach(function (node) {\n node.setSelected(false);\n });\n this.multiselection.nodes = [];\n\n if (clearStartAndEnd) {\n this.multiselection.start = null;\n this.multiselection.end = null;\n }\n\n if (selectionChanged) {\n if (this._selectionChangedHandler) {\n this._selectionChangedHandler();\n }\n }\n};\n/**\n * select nodes\n * @param {Node[] | Node} nodes\n */\n\n\ntreemode.select = function (nodes) {\n if (!Array.isArray(nodes)) {\n return this.select([nodes]);\n }\n\n if (nodes) {\n this.deselect();\n this.multiselection.nodes = nodes.slice(0);\n var first = nodes[0];\n nodes.forEach(function (node) {\n node.expandPathToNode();\n node.setSelected(true, node === first);\n });\n\n if (this._selectionChangedHandler) {\n var selection = this.getSelection();\n\n this._selectionChangedHandler(selection.start, selection.end);\n }\n }\n};\n/**\n * From two arbitrary selected nodes, find their shared parent node.\n * From that parent node, select the two child nodes in the brances going to\n * nodes `start` and `end`, and select all childs in between.\n * @param {Node} start\n * @param {Node} end\n * @return {Array.<Node>} Returns an ordered list with child nodes\n * @private\n */\n\n\ntreemode._findTopLevelNodes = function (start, end) {\n var startPath = start.getNodePath();\n var endPath = end.getNodePath();\n var i = 0;\n\n while (i < startPath.length && startPath[i] === endPath[i]) {\n i++;\n }\n\n var root = startPath[i - 1];\n var startChild = startPath[i];\n var endChild = endPath[i];\n\n if (!startChild || !endChild) {\n if (root.parent) {\n // startChild is a parent of endChild or vice versa\n startChild = root;\n endChild = root;\n root = root.parent;\n } else {\n // we have selected the root node (which doesn't have a parent)\n startChild = root.childs[0];\n endChild = root.childs[root.childs.length - 1];\n }\n }\n\n if (root && startChild && endChild) {\n var startIndex = root.childs.indexOf(startChild);\n var endIndex = root.childs.indexOf(endChild);\n var firstIndex = Math.min(startIndex, endIndex);\n var lastIndex = Math.max(startIndex, endIndex);\n return root.childs.slice(firstIndex, lastIndex + 1);\n } else {\n return [];\n }\n};\n/**\n * Show autocomplete menu\n * @param {HTMLElement} element\n * @private\n */\n\n\ntreemode._showAutoComplete = function (element) {\n var node = Node.getNodeFromTarget(element);\n var jsonElementType = '';\n if (element.className.indexOf('jsoneditor-value') >= 0) jsonElementType = 'value';\n if (element.className.indexOf('jsoneditor-field') >= 0) jsonElementType = 'field';\n\n if (jsonElementType === '') {\n // Unknown element field. Could be a button or something else\n return;\n }\n\n var self = this;\n setTimeout(function () {\n if (node && (self.options.autocomplete.trigger === 'focus' || element.innerText.length > 0)) {\n var result = self.options.autocomplete.getOptions(element.innerText, node.getPath(), jsonElementType, node.editor);\n\n if (result === null) {\n self.autocomplete.hideDropDown();\n } else if (typeof result.then === 'function') {\n // probably a promise\n result.then(function (obj) {\n if (obj === null) {\n self.autocomplete.hideDropDown();\n } else if (obj.options) {\n self.autocomplete.show(element, obj.startFrom, obj.options);\n } else {\n self.autocomplete.show(element, 0, obj);\n }\n })[\"catch\"](function (err) {\n console.error(err);\n });\n } else {\n // definitely not a promise\n if (result.options) {\n self.autocomplete.show(element, result.startFrom, result.options);\n } else {\n self.autocomplete.show(element, 0, result);\n }\n }\n } else {\n self.autocomplete.hideDropDown();\n }\n }, 50);\n};\n/**\n * Event handler for keydown. Handles shortcut keys\n * @param {Event} event\n * @private\n */\n\n\ntreemode._onKeyDown = function (event) {\n var keynum = event.which || event.keyCode;\n var altKey = event.altKey;\n var ctrlKey = event.ctrlKey;\n var metaKey = event.metaKey;\n var shiftKey = event.shiftKey;\n var handled = false;\n var currentTarget = this.focusTarget;\n\n if (keynum === 9) {\n // Tab or Shift+Tab\n var me = this;\n setTimeout(function () {\n /*\n - Checking for change in focusTarget\n - Without the check,\n pressing tab after reaching the final DOM element in the editor will\n set the focus back to it than passing focus outside the editor\n */\n if (me.focusTarget !== currentTarget) {\n // select all text when moving focus to an editable div\n (0,util.selectContentEditable)(me.focusTarget);\n }\n }, 0);\n }\n\n if (this.searchBox) {\n if (ctrlKey && keynum === 70) {\n // Ctrl+F\n this.searchBox.dom.search.focus();\n this.searchBox.dom.search.select();\n handled = true;\n } else if (keynum === 114 || ctrlKey && keynum === 71) {\n // F3 or Ctrl+G\n var focus = true;\n\n if (!shiftKey) {\n // select next search result (F3 or Ctrl+G)\n this.searchBox.next(focus);\n } else {\n // select previous search result (Shift+F3 or Ctrl+Shift+G)\n this.searchBox.previous(focus);\n }\n\n handled = true;\n }\n }\n\n if (this.history) {\n if (ctrlKey && !shiftKey && keynum === 90) {\n // Ctrl+Z\n // undo\n this._onUndo();\n\n handled = true;\n } else if (ctrlKey && shiftKey && keynum === 90) {\n // Ctrl+Shift+Z\n // redo\n this._onRedo();\n\n handled = true;\n }\n }\n\n if (this.options.autocomplete && !handled) {\n if (!ctrlKey && !altKey && !metaKey && (event.key.length === 1 || keynum === 8 || keynum === 46)) {\n handled = false; // Activate autocomplete\n\n this._showAutoComplete(event.target);\n }\n }\n\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n};\n/**\n * Create main table\n * @private\n */\n\n\ntreemode._createTable = function () {\n if (this.options.navigationBar) {\n (0,util.addClassName)(this.contentOuter, 'has-nav-bar');\n }\n\n this.scrollableContent = document.createElement('div');\n this.scrollableContent.className = 'jsoneditor-tree';\n this.contentOuter.appendChild(this.scrollableContent); // the jsoneditor-tree-inner div with bottom padding is here to\n // keep space for the action menu dropdown. It's created as a\n // separate div instead of using scrollableContent to work around\n // and issue in the Chrome browser showing scrollable contents outside of the div\n // see https://github.com/josdejong/jsoneditor/issues/557\n\n this.content = document.createElement('div');\n this.content.className = 'jsoneditor-tree-inner';\n this.scrollableContent.appendChild(this.content);\n this.table = document.createElement('table');\n this.table.className = 'jsoneditor-tree';\n this.content.appendChild(this.table); // create colgroup where the first two columns don't have a fixed\n // width, and the edit columns do have a fixed width\n\n var col;\n this.colgroupContent = document.createElement('colgroup');\n\n if (this.options.mode === 'tree') {\n col = document.createElement('col');\n col.width = '24px';\n this.colgroupContent.appendChild(col);\n }\n\n col = document.createElement('col');\n col.width = '24px';\n this.colgroupContent.appendChild(col);\n col = document.createElement('col');\n this.colgroupContent.appendChild(col);\n this.table.appendChild(this.colgroupContent);\n this.tbody = document.createElement('tbody');\n this.table.appendChild(this.tbody);\n this.frame.appendChild(this.contentOuter);\n};\n/**\n * Show a contextmenu for this node.\n * Used for multiselection\n * @param {HTMLElement} anchor Anchor element to attach the context menu to.\n * @param {function} [onClose] Callback method called when the context menu\n * is being closed.\n */\n\n\ntreemode.showContextMenu = function (anchor, onClose) {\n var items = [];\n var selectedNodes = this.multiselection.nodes.slice(); // create duplicate button\n\n items.push({\n text: (0,i18n/* translate */.Iu)('duplicateText'),\n title: (0,i18n/* translate */.Iu)('duplicateTitle'),\n className: 'jsoneditor-duplicate',\n click: function click() {\n Node.onDuplicate(selectedNodes);\n }\n }); // create remove button\n\n items.push({\n text: (0,i18n/* translate */.Iu)('remove'),\n title: (0,i18n/* translate */.Iu)('removeTitle'),\n className: 'jsoneditor-remove',\n click: function click() {\n Node.onRemove(selectedNodes);\n }\n });\n\n if (this.options.onCreateMenu) {\n var paths = selectedNodes.map(function (node) {\n return node.getPath();\n });\n items = this.options.onCreateMenu(items, {\n type: 'multiple',\n path: paths[0],\n paths: paths\n });\n }\n\n var menu = new ContextMenu/* ContextMenu */.x(items, {\n close: onClose\n });\n menu.show(anchor, this.getPopupAnchor());\n};\n\ntreemode.getPopupAnchor = function () {\n return this.options.popupAnchor || this.frame;\n};\n/**\n * Get current selected nodes\n * @return {{start:SerializableNode, end: SerializableNode}}\n */\n\n\ntreemode.getSelection = function () {\n var selection = {\n start: null,\n end: null\n };\n\n if (this.multiselection.nodes && this.multiselection.nodes.length) {\n if (this.multiselection.nodes.length) {\n var selection1 = this.multiselection.nodes[0];\n var selection2 = this.multiselection.nodes[this.multiselection.nodes.length - 1];\n\n if (this.multiselection.direction === 'down') {\n selection.start = selection1.serialize();\n selection.end = selection2.serialize();\n } else {\n selection.start = selection2.serialize();\n selection.end = selection1.serialize();\n }\n }\n }\n\n return selection;\n};\n/**\n * Callback registration for selection change\n * @param {selectionCallback} callback\n *\n * @callback selectionCallback\n */\n\n\ntreemode.onSelectionChange = function (callback) {\n if (typeof callback === 'function') {\n this._selectionChangedHandler = (0,util.debounce)(callback, this.DEBOUNCE_INTERVAL);\n }\n};\n/**\n * Select range of nodes.\n * For selecting single node send only the start parameter\n * For clear the selection do not send any parameter\n * If the nodes are not from the same level the first common parent will be selected\n * @param {{path: Array.<String>}} start object contains the path for selection start\n * @param {{path: Array.<String>}} end object contains the path for selection end\n */\n\n\ntreemode.setSelection = function (start, end) {\n // check for old usage\n if (start && start.dom && start.range) {\n console.warn('setSelection/getSelection usage for text selection is deprecated and should not be used, see documentation for supported selection options');\n this.setDomSelection(start);\n }\n\n var nodes = this._getNodeInstancesByRange(start, end);\n\n nodes.forEach(function (node) {\n node.expandTo();\n });\n this.select(nodes);\n};\n/**\n * Returns a set of Nodes according to a range of selection\n * @param {{path: Array.<String>}} start object contains the path for range start\n * @param {{path: Array.<String>}=} end object contains the path for range end\n * @return {Array.<Node>} Node instances on the given range\n * @private\n */\n\n\ntreemode._getNodeInstancesByRange = function (start, end) {\n var startNode, endNode;\n\n if (start && start.path) {\n startNode = this.node.findNodeByPath(start.path);\n\n if (end && end.path) {\n endNode = this.node.findNodeByPath(end.path);\n }\n }\n\n var nodes = [];\n\n if (startNode instanceof Node) {\n if (endNode instanceof Node && endNode !== startNode) {\n if (startNode.parent === endNode.parent) {\n if (startNode.getIndex() < endNode.getIndex()) {\n start = startNode;\n end = endNode;\n } else {\n start = endNode;\n end = startNode;\n }\n\n var current = start;\n nodes.push(current);\n\n do {\n current = current.nextSibling();\n nodes.push(current);\n } while (current && current !== end);\n } else {\n nodes = this._findTopLevelNodes(startNode, endNode);\n }\n } else {\n nodes.push(startNode);\n }\n }\n\n return nodes;\n};\n\ntreemode.getNodesByRange = function (start, end) {\n var nodes = this._getNodeInstancesByRange(start, end);\n\n var serializableNodes = [];\n nodes.forEach(function (node) {\n serializableNodes.push(node.serialize());\n });\n return serializableNodes;\n}; // define modes\n\n\nvar treeModeMixins = [{\n mode: 'tree',\n mixin: treemode,\n data: 'json'\n}, {\n mode: 'view',\n mixin: treemode,\n data: 'json'\n}, {\n mode: 'form',\n mixin: treemode,\n data: 'json'\n}];\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nexports.tryRequireAjv = function () {\n try {\n return __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'ajv'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n } catch (err) {// no problem... when we need Ajv we will throw a neat exception\n }\n};\n\n/***/ }),\n\n/***/ 49:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nexports.O = function () {\n try {\n __webpack_require__(864);\n } catch (err) {\n console.error(err);\n }\n};\n\n/***/ }),\n\n/***/ 791:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addClassName\": function() { return /* binding */ addClassName; },\n/* harmony export */ \"addEventListener\": function() { return /* binding */ addEventListener; },\n/* harmony export */ \"clear\": function() { return /* binding */ clear; },\n/* harmony export */ \"compileJSONPointer\": function() { return /* binding */ compileJSONPointer; },\n/* harmony export */ \"contains\": function() { return /* binding */ contains; },\n/* harmony export */ \"debounce\": function() { return /* binding */ debounce; },\n/* harmony export */ \"escapeUnicodeChars\": function() { return /* binding */ escapeUnicodeChars; },\n/* harmony export */ \"extend\": function() { return /* binding */ extend; },\n/* harmony export */ \"findUniqueName\": function() { return /* binding */ findUniqueName; },\n/* harmony export */ \"formatSize\": function() { return /* binding */ formatSize; },\n/* harmony export */ \"get\": function() { return /* binding */ get; },\n/* harmony export */ \"getAbsoluteLeft\": function() { return /* binding */ getAbsoluteLeft; },\n/* harmony export */ \"getAbsoluteTop\": function() { return /* binding */ getAbsoluteTop; },\n/* harmony export */ \"getChildPaths\": function() { return /* binding */ getChildPaths; },\n/* harmony export */ \"getColorCSS\": function() { return /* binding */ getColorCSS; },\n/* harmony export */ \"getIndexForPosition\": function() { return /* binding */ getIndexForPosition; },\n/* harmony export */ \"getInnerText\": function() { return /* binding */ getInnerText; },\n/* harmony export */ \"getInputSelection\": function() { return /* binding */ getInputSelection; },\n/* harmony export */ \"getInternetExplorerVersion\": function() { return /* binding */ getInternetExplorerVersion; },\n/* harmony export */ \"getPositionForPath\": function() { return /* binding */ getPositionForPath; },\n/* harmony export */ \"getSelection\": function() { return /* binding */ getSelection; },\n/* harmony export */ \"getSelectionOffset\": function() { return /* binding */ getSelectionOffset; },\n/* harmony export */ \"getType\": function() { return /* binding */ getType; },\n/* harmony export */ \"getWindow\": function() { return /* binding */ getWindow; },\n/* harmony export */ \"hasParentNode\": function() { return /* binding */ hasParentNode; },\n/* harmony export */ \"improveSchemaError\": function() { return /* binding */ improveSchemaError; },\n/* harmony export */ \"insideRect\": function() { return /* binding */ insideRect; },\n/* harmony export */ \"isArray\": function() { return /* binding */ isArray; },\n/* harmony export */ \"isChildOf\": function() { return /* binding */ isChildOf; },\n/* harmony export */ \"isFirefox\": function() { return /* binding */ isFirefox; },\n/* harmony export */ \"isObject\": function() { return /* binding */ isObject; },\n/* harmony export */ \"isPromise\": function() { return /* binding */ isPromise; },\n/* harmony export */ \"isTimestamp\": function() { return /* binding */ isTimestamp; },\n/* harmony export */ \"isUrl\": function() { return /* binding */ isUrl; },\n/* harmony export */ \"isValidColor\": function() { return /* binding */ isValidColor; },\n/* harmony export */ \"isValidValidationError\": function() { return /* binding */ isValidValidationError; },\n/* harmony export */ \"isValidationErrorChanged\": function() { return /* binding */ isValidationErrorChanged; },\n/* harmony export */ \"limitCharacters\": function() { return /* binding */ limitCharacters; },\n/* harmony export */ \"makeFieldTooltip\": function() { return /* binding */ makeFieldTooltip; },\n/* harmony export */ \"parse\": function() { return /* binding */ parse; },\n/* harmony export */ \"parsePath\": function() { return /* binding */ parsePath; },\n/* harmony export */ \"parseString\": function() { return /* binding */ parseString; },\n/* harmony export */ \"removeAllClassNames\": function() { return /* binding */ removeAllClassNames; },\n/* harmony export */ \"removeClassName\": function() { return /* binding */ removeClassName; },\n/* harmony export */ \"removeEventListener\": function() { return /* binding */ removeEventListener; },\n/* harmony export */ \"removeReturnsAndSurroundingWhitespace\": function() { return /* binding */ removeReturnsAndSurroundingWhitespace; },\n/* harmony export */ \"selectContentEditable\": function() { return /* binding */ selectContentEditable; },\n/* harmony export */ \"setEndOfContentEditable\": function() { return /* binding */ setEndOfContentEditable; },\n/* harmony export */ \"setSelection\": function() { return /* binding */ setSelection; },\n/* harmony export */ \"setSelectionOffset\": function() { return /* binding */ setSelectionOffset; },\n/* harmony export */ \"sort\": function() { return /* binding */ sort; },\n/* harmony export */ \"sortObjectKeys\": function() { return /* binding */ sortObjectKeys; },\n/* harmony export */ \"stringifyPath\": function() { return /* binding */ stringifyPath; },\n/* harmony export */ \"stripFormatting\": function() { return /* binding */ stripFormatting; },\n/* harmony export */ \"textDiff\": function() { return /* binding */ textDiff; },\n/* harmony export */ \"tryJsonRepair\": function() { return /* binding */ tryJsonRepair; },\n/* harmony export */ \"validate\": function() { return /* binding */ validate; }\n/* harmony export */ });\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(987);\n/* harmony import */ var _polyfills__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_polyfills__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(233);\n/* harmony import */ var javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var jsonrepair__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(928);\n/* harmony import */ var jsonrepair__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(jsonrepair__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(589);\n/* harmony import */ var json_source_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(907);\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n\n\n\n\n\n\nvar MAX_ITEMS_FIELDS_COLLECTION = 10000;\nvar YEAR_2000 = 946684800000;\n/**\n * Parse JSON using the parser built-in in the browser.\n * On exception, the jsonString is validated and a detailed error is thrown.\n * @param {String} jsonString\n * @return {JSON} json\n */\n\nfunction parse(jsonString) {\n try {\n return JSON.parse(jsonString);\n } catch (err) {\n // try to throw a more detailed error message using validate\n validate(jsonString); // rethrow the original error\n\n throw err;\n }\n}\n/**\n * Try to fix the JSON string. If not successful, return the original string\n * @param {string} jsonString\n */\n\nfunction tryJsonRepair(jsonString) {\n try {\n return jsonrepair__WEBPACK_IMPORTED_MODULE_2___default()(jsonString);\n } catch (err) {\n // repair was not successful, return original text\n return jsonString;\n }\n}\n/**\n * Escape unicode characters.\n * For example input '\\u2661' (length 1) will output '\\\\u2661' (length 5).\n * @param {string} text\n * @return {string}\n */\n\nfunction escapeUnicodeChars( // see https://www.wikiwand.com/en/UTF-16\ntext) {\n return (// note: we leave surrogate pairs as two individual chars,\n // as JSON doesn't interpret them as a single unicode char.\n text.replace(/[\\u007F-\\uFFFF]/g, function (c) {\n return \"\\\\u\" + ('0000' + c.charCodeAt(0).toString(16)).slice(-4);\n })\n );\n}\n/**\n * Validate a string containing a JSON object\n * This method uses JSONLint to validate the String. If JSONLint is not\n * available, the built-in JSON parser of the browser is used.\n * @param {String} jsonString String with an (invalid) JSON object\n * @throws Error\n */\n\nfunction validate(jsonString) {\n if (typeof _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__ !== 'undefined') {\n _assets_jsonlint_jsonlint__WEBPACK_IMPORTED_MODULE_3__.parse(jsonString);\n } else {\n JSON.parse(jsonString);\n }\n}\n/**\n * Extend object a with the properties of object b\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n */\n\nfunction extend(a, b) {\n for (var prop in b) {\n if (hasOwnProperty(b, prop)) {\n a[prop] = b[prop];\n }\n }\n\n return a;\n}\n/**\n * Remove all properties from object a\n * @param {Object} a\n * @return {Object} a\n */\n\nfunction clear(a) {\n for (var prop in a) {\n if (hasOwnProperty(a, prop)) {\n delete a[prop];\n }\n }\n\n return a;\n}\n/**\n * Get the type of an object\n * @param {*} object\n * @return {String} type\n */\n\nfunction getType(object) {\n if (object === null) {\n return 'null';\n }\n\n if (object === undefined) {\n return 'undefined';\n }\n\n if (object instanceof Number || typeof object === 'number') {\n return 'number';\n }\n\n if (object instanceof String || typeof object === 'string') {\n return 'string';\n }\n\n if (object instanceof Boolean || typeof object === 'boolean') {\n return 'boolean';\n }\n\n if (object instanceof RegExp) {\n return 'regexp';\n }\n\n if (isArray(object)) {\n return 'array';\n }\n\n return 'object';\n}\n/**\n * Test whether a text contains a url (matches when a string starts\n * with 'http://*' or 'https://*' and has no whitespace characters)\n * @param {String} text\n */\n\nvar isUrlRegex = /^https?:\\/\\/\\S+$/;\nfunction isUrl(text) {\n return (typeof text === 'string' || text instanceof String) && isUrlRegex.test(text);\n}\n/**\n * Tes whether given object is an Array\n * @param {*} obj\n * @returns {boolean} returns true when obj is an array\n */\n\nfunction isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n/**\n * Gets a DOM element's Window. This is normally just the global `window`\n * variable, but if we opened a child window, it may be different.\n * @param {HTMLElement} element\n * @return {Window}\n */\n\nfunction getWindow(element) {\n return element.ownerDocument.defaultView;\n}\n/**\n * Retrieve the absolute left value of a DOM element\n * @param {Element} elem A dom element, for example a div\n * @return {Number} left The absolute left position of this element\n * in the browser page.\n */\n\nfunction getAbsoluteLeft(elem) {\n var rect = elem.getBoundingClientRect();\n return rect.left + window.pageXOffset || document.scrollLeft || 0;\n}\n/**\n * Retrieve the absolute top value of a DOM element\n * @param {Element} elem A dom element, for example a div\n * @return {Number} top The absolute top position of this element\n * in the browser page.\n */\n\nfunction getAbsoluteTop(elem) {\n var rect = elem.getBoundingClientRect();\n return rect.top + window.pageYOffset || document.scrollTop || 0;\n}\n/**\n * add a className to the given elements style\n * @param {Element} elem\n * @param {String} className\n */\n\nfunction addClassName(elem, className) {\n var classes = elem.className.split(' ');\n\n if (classes.indexOf(className) === -1) {\n classes.push(className); // add the class to the array\n\n elem.className = classes.join(' ');\n }\n}\n/**\n * remove all classes from the given elements style\n * @param {Element} elem\n */\n\nfunction removeAllClassNames(elem) {\n elem.className = '';\n}\n/**\n * add a className to the given elements style\n * @param {Element} elem\n * @param {String} className\n */\n\nfunction removeClassName(elem, className) {\n var classes = elem.className.split(' ');\n var index = classes.indexOf(className);\n\n if (index !== -1) {\n classes.splice(index, 1); // remove the class from the array\n\n elem.className = classes.join(' ');\n }\n}\n/**\n * Strip the formatting from the contents of a div\n * the formatting from the div itself is not stripped, only from its childs.\n * @param {Element} divElement\n */\n\nfunction stripFormatting(divElement) {\n var childs = divElement.childNodes;\n\n for (var i = 0, iMax = childs.length; i < iMax; i++) {\n var child = childs[i]; // remove the style\n\n if (child.style) {\n // TODO: test if child.attributes does contain style\n child.removeAttribute('style');\n } // remove all attributes\n\n\n var attributes = child.attributes;\n\n if (attributes) {\n for (var j = attributes.length - 1; j >= 0; j--) {\n var attribute = attributes[j];\n\n if (attribute.specified === true) {\n child.removeAttribute(attribute.name);\n }\n }\n } // recursively strip childs\n\n\n stripFormatting(child);\n }\n}\n/**\n * Set focus to the end of an editable div\n * code from Nico Burns\n * http://stackoverflow.com/users/140293/nico-burns\n * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity\n * @param {Element} contentEditableElement A content editable div\n */\n\nfunction setEndOfContentEditable(contentEditableElement) {\n var range, selection;\n\n if (document.createRange) {\n range = document.createRange(); // Create a range (a range is a like the selection but invisible)\n\n range.selectNodeContents(contentEditableElement); // Select the entire contents of the element with the range\n\n range.collapse(false); // collapse the range to the end point. false means collapse to end rather than the start\n\n selection = window.getSelection(); // get the selection object (allows you to change selection)\n\n selection.removeAllRanges(); // remove any selections already made\n\n selection.addRange(range); // make the range you have just created the visible selection\n }\n}\n/**\n * Select all text of a content editable div.\n * http://stackoverflow.com/a/3806004/1262753\n * @param {Element} contentEditableElement A content editable div\n */\n\nfunction selectContentEditable(contentEditableElement) {\n if (!contentEditableElement || contentEditableElement.nodeName !== 'DIV') {\n return;\n }\n\n var sel, range;\n\n if (window.getSelection && document.createRange) {\n range = document.createRange();\n range.selectNodeContents(contentEditableElement);\n sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\n/**\n * Get text selection\n * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\n * @return {Range | TextRange | null} range\n */\n\nfunction getSelection() {\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n }\n\n return null;\n}\n/**\n * Set text selection\n * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\n * @param {Range | TextRange | null} range\n */\n\nfunction setSelection(range) {\n if (range) {\n if (window.getSelection) {\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n}\n/**\n * Get selected text range\n * @return {Object} params object containing parameters:\n * {Number} startOffset\n * {Number} endOffset\n * {Element} container HTML element holding the\n * selected text element\n * Returns null if no text selection is found\n */\n\nfunction getSelectionOffset() {\n var range = getSelection();\n\n if (range && 'startOffset' in range && 'endOffset' in range && range.startContainer && range.startContainer === range.endContainer) {\n return {\n startOffset: range.startOffset,\n endOffset: range.endOffset,\n container: range.startContainer.parentNode\n };\n }\n\n return null;\n}\n/**\n * Set selected text range in given element\n * @param {Object} params An object containing:\n * {Element} container\n * {Number} startOffset\n * {Number} endOffset\n */\n\nfunction setSelectionOffset(params) {\n if (document.createRange && window.getSelection) {\n var selection = window.getSelection();\n\n if (selection) {\n var range = document.createRange();\n\n if (!params.container.firstChild) {\n params.container.appendChild(document.createTextNode(''));\n } // TODO: do not suppose that the first child of the container is a textnode,\n // but recursively find the textnodes\n\n\n range.setStart(params.container.firstChild, params.startOffset);\n range.setEnd(params.container.firstChild, params.endOffset);\n setSelection(range);\n }\n }\n}\n/**\n * Get the inner text of an HTML element (for example a div element)\n * @param {Element} element\n * @param {Object} [buffer]\n * @return {String} innerText\n */\n\nfunction getInnerText(element, buffer) {\n var first = buffer === undefined;\n\n if (first) {\n buffer = {\n _text: '',\n flush: function flush() {\n var text = this._text;\n this._text = '';\n return text;\n },\n set: function set(text) {\n this._text = text;\n }\n };\n } // text node\n\n\n if (element.nodeValue) {\n // remove return characters and the whitespaces surrounding those return characters\n var trimmedValue = removeReturnsAndSurroundingWhitespace(element.nodeValue);\n\n if (trimmedValue !== '') {\n return buffer.flush() + trimmedValue;\n } else {\n // ignore empty text\n return '';\n }\n } // divs or other HTML elements\n\n\n if (element.hasChildNodes()) {\n var childNodes = element.childNodes;\n var innerText = '';\n\n for (var i = 0, iMax = childNodes.length; i < iMax; i++) {\n var child = childNodes[i];\n\n if (child.nodeName === 'DIV' || child.nodeName === 'P') {\n var prevChild = childNodes[i - 1];\n var prevName = prevChild ? prevChild.nodeName : undefined;\n\n if (prevName && prevName !== 'DIV' && prevName !== 'P' && prevName !== 'BR') {\n if (innerText !== '') {\n innerText += '\\n';\n }\n\n buffer.flush();\n }\n\n innerText += getInnerText(child, buffer);\n buffer.set('\\n');\n } else if (child.nodeName === 'BR') {\n innerText += buffer.flush();\n buffer.set('\\n');\n } else {\n innerText += getInnerText(child, buffer);\n }\n }\n\n return innerText;\n } // br or unknown\n\n\n return '';\n} // regular expression matching one or multiple return characters with all their\n// enclosing white spaces\n\nfunction removeReturnsAndSurroundingWhitespace(text) {\n return text.replace(/(\\b|^)\\s*(\\b|$)/g, function (match) {\n return /\\n/.exec(match) ? '' : match;\n });\n}\n/**\n * Test whether an element has the provided parent node somewhere up the node tree.\n * @param {Element} elem\n * @param {Element} parent\n * @return {boolean}\n */\n\nfunction hasParentNode(elem, parent) {\n var e = elem ? elem.parentNode : undefined;\n\n while (e) {\n if (e === parent) {\n return true;\n }\n\n e = e.parentNode;\n }\n\n return false;\n}\n/**\n * Returns the version of Internet Explorer or a -1\n * (indicating the use of another browser).\n * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx\n * @return {Number} Internet Explorer version, or -1 in case of an other browser\n */\n\nfunction getInternetExplorerVersion() {\n if (_ieVersion === -1) {\n var rv = -1; // Return value assumes failure.\n\n if (typeof navigator !== 'undefined' && navigator.appName === 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent;\n var re = /MSIE ([0-9]+[.0-9]+)/;\n\n if (re.exec(ua) != null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n _ieVersion = rv;\n }\n\n return _ieVersion;\n}\n/**\n * cached internet explorer version\n * @type {Number}\n * @private\n */\n\nvar _ieVersion = -1;\n/**\n * Test whether the current browser is Firefox\n * @returns {boolean} isFirefox\n */\n\n\nfunction isFirefox() {\n return typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Firefox') !== -1;\n}\n/**\n * Add an event listener. Works for all browsers\n * @param {Element} element An html element\n * @param {string} action The action, for example \"click\",\n * without the prefix \"on\"\n * @param {function} listener The callback function to be executed\n * @param {boolean} [useCapture] false by default\n * @return {function} the created event listener\n */\n\nfunction addEventListener(element, action, listener, useCapture) {\n if (element.addEventListener) {\n if (useCapture === undefined) {\n useCapture = false;\n }\n\n if (action === 'mousewheel' && isFirefox()) {\n action = 'DOMMouseScroll'; // For Firefox\n }\n\n element.addEventListener(action, listener, useCapture);\n return listener;\n } else if (element.attachEvent) {\n // Old IE browsers\n var f = function f() {\n return listener.call(element, window.event);\n };\n\n element.attachEvent('on' + action, f);\n return f;\n }\n}\n/**\n * Remove an event listener from an element\n * @param {Element} element An html dom element\n * @param {string} action The name of the event, for example \"mousedown\"\n * @param {function} listener The listener function\n * @param {boolean} [useCapture] false by default\n */\n\nfunction removeEventListener(element, action, listener, useCapture) {\n if (element.removeEventListener) {\n if (useCapture === undefined) {\n useCapture = false;\n }\n\n if (action === 'mousewheel' && isFirefox()) {\n action = 'DOMMouseScroll'; // For Firefox\n }\n\n element.removeEventListener(action, listener, useCapture);\n } else if (element.detachEvent) {\n // Old IE browsers\n element.detachEvent('on' + action, listener);\n }\n}\n/**\n * Test if an element is a child of a parent element.\n * @param {Element} elem\n * @param {Element} parent\n * @return {boolean} returns true if elem is a child of the parent\n */\n\nfunction isChildOf(elem, parent) {\n var e = elem.parentNode;\n\n while (e) {\n if (e === parent) {\n return true;\n }\n\n e = e.parentNode;\n }\n\n return false;\n}\n/**\n * Parse a JSON path like '.items[3].name' into an array\n * @param {string} jsonPath\n * @return {Array}\n */\n\nfunction parsePath(jsonPath) {\n var path = [];\n var i = 0;\n\n function parseProperty() {\n var prop = '';\n\n while (jsonPath[i] !== undefined && /[\\w$]/.test(jsonPath[i])) {\n prop += jsonPath[i];\n i++;\n }\n\n if (prop === '') {\n throw new Error('Invalid JSON path: property name expected at index ' + i);\n }\n\n return prop;\n }\n\n function parseIndex(end) {\n var name = '';\n\n while (jsonPath[i] !== undefined && jsonPath[i] !== end) {\n name += jsonPath[i];\n i++;\n }\n\n if (jsonPath[i] !== end) {\n throw new Error('Invalid JSON path: unexpected end, character ' + end + ' expected');\n }\n\n return name;\n }\n\n while (jsonPath[i] !== undefined) {\n if (jsonPath[i] === '.') {\n i++;\n path.push(parseProperty());\n } else if (jsonPath[i] === '[') {\n i++;\n\n if (jsonPath[i] === '\\'' || jsonPath[i] === '\"') {\n var end = jsonPath[i];\n i++;\n path.push(parseIndex(end));\n\n if (jsonPath[i] !== end) {\n throw new Error('Invalid JSON path: closing quote \\' expected at index ' + i);\n }\n\n i++;\n } else {\n var index = parseIndex(']').trim();\n\n if (index.length === 0) {\n throw new Error('Invalid JSON path: array value expected at index ' + i);\n } // Coerce numeric indices to numbers, but ignore star\n\n\n index = index === '*' ? index : JSON.parse(index);\n path.push(index);\n }\n\n if (jsonPath[i] !== ']') {\n throw new Error('Invalid JSON path: closing bracket ] expected at index ' + i);\n }\n\n i++;\n } else {\n throw new Error('Invalid JSON path: unexpected character \"' + jsonPath[i] + '\" at index ' + i);\n }\n }\n\n return path;\n}\n/**\n * Stringify an array with a path in a JSON path like '.items[3].name'\n * @param {Array.<string | number>} path\n * @returns {string}\n */\n\nfunction stringifyPath(path) {\n return path.map(function (p) {\n if (typeof p === 'number') {\n return '[' + p + ']';\n } else if (typeof p === 'string' && p.match(/^[A-Za-z0-9_$]+$/)) {\n return '.' + p;\n } else {\n return '[\"' + p + '\"]';\n }\n }).join('');\n}\n/**\n * Improve the error message of a JSON schema error\n * @param {Object} error\n * @return {Object} The error\n */\n\nfunction improveSchemaError(error) {\n if (error.keyword === 'enum' && Array.isArray(error.schema)) {\n var enums = error.schema;\n\n if (enums) {\n enums = enums.map(function (value) {\n return JSON.stringify(value);\n });\n\n if (enums.length > 5) {\n var more = ['(' + (enums.length - 5) + ' more...)'];\n enums = enums.slice(0, 5);\n enums.push(more);\n }\n\n error.message = 'should be equal to one of: ' + enums.join(', ');\n }\n }\n\n if (error.keyword === 'additionalProperties') {\n error.message = 'should NOT have additional property: ' + error.params.additionalProperty;\n }\n\n return error;\n}\n/**\n * Test whether something is a Promise\n * @param {*} object\n * @returns {boolean} Returns true when object is a promise, false otherwise\n */\n\nfunction isPromise(object) {\n return object && typeof object.then === 'function' && typeof object[\"catch\"] === 'function';\n}\n/**\n * Test whether a custom validation error has the correct structure\n * @param {*} validationError The error to be checked.\n * @returns {boolean} Returns true if the structure is ok, false otherwise\n */\n\nfunction isValidValidationError(validationError) {\n return _typeof(validationError) === 'object' && Array.isArray(validationError.path) && typeof validationError.message === 'string';\n}\n/**\n * Test whether the child rect fits completely inside the parent rect.\n * @param {ClientRect} parent\n * @param {ClientRect} child\n * @param {number} margin\n */\n\nfunction insideRect(parent, child, margin) {\n var _margin = margin !== undefined ? margin : 0;\n\n return child.left - _margin >= parent.left && child.right + _margin <= parent.right && child.top - _margin >= parent.top && child.bottom + _margin <= parent.bottom;\n}\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n *\n * Source: https://davidwalsh.name/javascript-debounce-function\n *\n * @param {function} func\n * @param {number} wait Number in milliseconds\n * @param {boolean} [immediate=false] If `immediate` is passed, trigger the\n * function on the leading edge, instead\n * of the trailing.\n * @return {function} Return the debounced function\n */\n\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n/**\n * Determines the difference between two texts.\n * Can only detect one removed or inserted block of characters.\n * @param {string} oldText\n * @param {string} newText\n * @return {{start: number, end: number}} Returns the start and end\n * of the changed part in newText.\n */\n\nfunction textDiff(oldText, newText) {\n var len = newText.length;\n var start = 0;\n var oldEnd = oldText.length;\n var newEnd = newText.length;\n\n while (newText.charAt(start) === oldText.charAt(start) && start < len) {\n start++;\n }\n\n while (newText.charAt(newEnd - 1) === oldText.charAt(oldEnd - 1) && newEnd > start && oldEnd > 0) {\n newEnd--;\n oldEnd--;\n }\n\n return {\n start: start,\n end: newEnd\n };\n}\n/**\n * Return an object with the selection range or cursor position (if both have the same value)\n * Support also old browsers (IE8-)\n * Source: http://ourcodeworld.com/articles/read/282/how-to-get-the-current-cursor-position-and-selection-within-a-text-input-or-textarea-in-javascript\n * @param {DOMElement} el A dom element of a textarea or input text.\n * @return {Object} reference Object with 2 properties (start and end) with the identifier of the location of the cursor and selected text.\n **/\n\nfunction getInputSelection(el) {\n var startIndex = 0;\n var endIndex = 0;\n var normalizedValue;\n var range;\n var textInputRange;\n var len;\n var endRange;\n\n if (typeof el.selectionStart === 'number' && typeof el.selectionEnd === 'number') {\n startIndex = el.selectionStart;\n endIndex = el.selectionEnd;\n } else {\n range = document.selection.createRange();\n\n if (range && range.parentElement() === el) {\n len = el.value.length;\n normalizedValue = el.value.replace(/\\r\\n/g, '\\n'); // Create a working TextRange that lives only in the input\n\n textInputRange = el.createTextRange();\n textInputRange.moveToBookmark(range.getBookmark()); // Check if the startIndex and endIndex of the selection are at the very end\n // of the input, since moveStart/moveEnd doesn't return what we want\n // in those cases\n\n endRange = el.createTextRange();\n endRange.collapse(false);\n\n if (textInputRange.compareEndPoints('StartToEnd', endRange) > -1) {\n startIndex = endIndex = len;\n } else {\n startIndex = -textInputRange.moveStart('character', -len);\n startIndex += normalizedValue.slice(0, startIndex).split('\\n').length - 1;\n\n if (textInputRange.compareEndPoints('EndToEnd', endRange) > -1) {\n endIndex = len;\n } else {\n endIndex = -textInputRange.moveEnd('character', -len);\n endIndex += normalizedValue.slice(0, endIndex).split('\\n').length - 1;\n }\n }\n }\n }\n\n return {\n startIndex: startIndex,\n endIndex: endIndex,\n start: _positionForIndex(startIndex),\n end: _positionForIndex(endIndex)\n };\n /**\n * Returns textarea row and column position for certain index\n * @param {Number} index text index\n * @returns {{row: Number, column: Number}}\n */\n\n function _positionForIndex(index) {\n var textTillIndex = el.value.substring(0, index);\n var row = (textTillIndex.match(/\\n/g) || []).length + 1;\n var col = textTillIndex.length - textTillIndex.lastIndexOf('\\n');\n return {\n row: row,\n column: col\n };\n }\n}\n/**\n * Returns the index for certain position in text element\n * @param {DOMElement} el A dom element of a textarea or input text.\n * @param {Number} row row value, > 0, if exceeds rows number - last row will be returned\n * @param {Number} column column value, > 0, if exceeds column length - end of column will be returned\n * @returns {Number} index of position in text, -1 if not found\n */\n\nfunction getIndexForPosition(el, row, column) {\n var text = el.value || '';\n\n if (row > 0 && column > 0) {\n var rows = text.split('\\n', row);\n row = Math.min(rows.length, row);\n column = Math.min(rows[row - 1].length, column - 1);\n var columnCount = row === 1 ? column : column + 1; // count new line on multiple rows\n\n return rows.slice(0, row - 1).join('\\n').length + columnCount;\n }\n\n return -1;\n}\n/**\n * Returns location of json paths in certain json string\n * @param {String} text json string\n * @param {Array<String>} paths array of json paths\n * @returns {Array<{path: String, line: Number, row: Number}>}\n */\n\nfunction getPositionForPath(text, paths) {\n var result = [];\n var jsmap;\n\n if (!paths || !paths.length) {\n return result;\n }\n\n try {\n jsmap = json_source_map__WEBPACK_IMPORTED_MODULE_4__.parse(text);\n } catch (err) {\n return result;\n }\n\n paths.forEach(function (path) {\n var pathArr = parsePath(path);\n var pointerName = compileJSONPointer(pathArr);\n var pointer = jsmap.pointers[pointerName];\n\n if (pointer) {\n result.push({\n path: path,\n line: pointer.key ? pointer.key.line : pointer.value ? pointer.value.line : 0,\n column: pointer.key ? pointer.key.column : pointer.value ? pointer.value.column : 0\n });\n }\n });\n return result;\n}\n/**\n * Compile a JSON Pointer\n * WARNING: this is an incomplete implementation\n * @param {Array.<string | number>} path\n * @return {string}\n */\n\nfunction compileJSONPointer(path) {\n return path.map(function (p) {\n return '/' + String(p).replace(/~/g, '~0').replace(/\\//g, '~1');\n }).join('');\n}\n/**\n * Get the applied color given a color name or code\n * Source: https://stackoverflow.com/questions/6386090/validating-css-color-names/33184805\n * @param {string} color\n * @returns {string | null} returns the color if the input is a valid\n * color, and returns null otherwise. Example output:\n * 'rgba(255,0,0,0.7)' or 'rgb(255,0,0)'\n */\n\nfunction getColorCSS(color) {\n var ele = document.createElement('div');\n ele.style.color = color;\n return ele.style.color.split(/\\s+/).join('').toLowerCase() || null;\n}\n/**\n * Test if a string contains a valid color name or code.\n * @param {string} color\n * @returns {boolean} returns true if a valid color, false otherwise\n */\n\nfunction isValidColor(color) {\n return !!getColorCSS(color);\n}\n/**\n * Make a tooltip for a field based on the field's schema.\n * @param {object} schema JSON schema\n * @param {string} [locale] Locale code (for example, zh-CN)\n * @returns {string} Field tooltip, may be empty string if all relevant schema properties are missing\n */\n\nfunction makeFieldTooltip(schema, locale) {\n if (!schema) {\n return '';\n }\n\n var tooltip = '';\n\n if (schema.title) {\n tooltip += schema.title;\n }\n\n if (schema.description) {\n if (tooltip.length > 0) {\n tooltip += '\\n';\n }\n\n tooltip += schema.description;\n }\n\n if (schema[\"default\"]) {\n if (tooltip.length > 0) {\n tooltip += '\\n\\n';\n }\n\n tooltip += (0,_i18n__WEBPACK_IMPORTED_MODULE_5__/* .translate */ .Iu)('default', undefined, locale) + '\\n';\n tooltip += JSON.stringify(schema[\"default\"], null, 2);\n }\n\n if (Array.isArray(schema.examples) && schema.examples.length > 0) {\n if (tooltip.length > 0) {\n tooltip += '\\n\\n';\n }\n\n tooltip += (0,_i18n__WEBPACK_IMPORTED_MODULE_5__/* .translate */ .Iu)('examples', undefined, locale) + '\\n';\n schema.examples.forEach(function (example, index) {\n tooltip += JSON.stringify(example, null, 2);\n\n if (index !== schema.examples.length - 1) {\n tooltip += '\\n';\n }\n });\n }\n\n return tooltip;\n}\n/**\n * Get a nested property from an object.\n * Returns undefined when the property does not exist.\n * @param {Object} object\n * @param {string[]} path\n * @return {*}\n */\n\nfunction get(object, path) {\n var value = object;\n\n for (var i = 0; i < path.length && value !== undefined && value !== null; i++) {\n value = value[path[i]];\n }\n\n return value;\n}\n/**\n * Find a unique name. Suffix the name with ' (copy)', '(copy 2)', etc\n * until a unique name is found\n * @param {string} name\n * @param {Array} existingPropNames Array with existing prop names\n */\n\nfunction findUniqueName(name, existingPropNames) {\n var strippedName = name.replace(/ \\(copy( \\d+)?\\)$/, '');\n var validName = strippedName;\n var i = 1;\n\n while (existingPropNames.indexOf(validName) !== -1) {\n var copy = 'copy' + (i > 1 ? ' ' + i : '');\n validName = strippedName + ' (' + copy + ')';\n i++;\n }\n\n return validName;\n}\n/**\n * Get the child paths of an array\n * @param {JSON} json\n * @param {boolean} [includeObjects=false] If true, object and array paths are returned as well\n * @return {string[]}\n */\n\nfunction getChildPaths(json, includeObjects) {\n var pathsMap = {};\n\n function getObjectChildPaths(json, pathsMap, rootPath, includeObjects) {\n var isValue = !Array.isArray(json) && !isObject(json);\n\n if (isValue || includeObjects) {\n pathsMap[rootPath || ''] = true;\n }\n\n if (isObject(json)) {\n Object.keys(json).forEach(function (field) {\n getObjectChildPaths(json[field], pathsMap, rootPath + '.' + field, includeObjects);\n });\n }\n }\n\n if (Array.isArray(json)) {\n var max = Math.min(json.length, MAX_ITEMS_FIELDS_COLLECTION);\n\n for (var i = 0; i < max; i++) {\n var item = json[i];\n getObjectChildPaths(item, pathsMap, '', includeObjects);\n }\n } else {\n pathsMap[''] = true;\n }\n\n return Object.keys(pathsMap).sort();\n}\n/**\n * Sort object keys using natural sort\n * @param {Array} array\n * @param {String} [path] JSON pointer\n * @param {'asc' | 'desc'} [direction]\n */\n\nfunction sort(array, path, direction) {\n var parsedPath = path && path !== '.' ? parsePath(path) : [];\n var sign = direction === 'desc' ? -1 : 1;\n var sortedArray = array.slice();\n sortedArray.sort(function (a, b) {\n var aValue = get(a, parsedPath);\n var bValue = get(b, parsedPath);\n return sign * (aValue > bValue ? 1 : aValue < bValue ? -1 : 0);\n });\n return sortedArray;\n}\n/**\n * Sort object keys using natural sort\n * @param {Object} object\n * @param {'asc' | 'desc'} [direction]\n */\n\nfunction sortObjectKeys(object, direction) {\n var sign = direction === 'desc' ? -1 : 1;\n var sortedFields = Object.keys(object).sort(function (a, b) {\n return sign * javascript_natural_sort__WEBPACK_IMPORTED_MODULE_1___default()(a, b);\n });\n var sortedObject = {};\n sortedFields.forEach(function (field) {\n sortedObject[field] = object[field];\n });\n return sortedObject;\n}\n/**\n * Cast contents of a string to the correct type.\n * This can be a string, a number, a boolean, etc\n * @param {String} str\n * @return {*} castedStr\n * @private\n */\n\nfunction parseString(str) {\n if (str === '') {\n return '';\n }\n\n var lower = str.toLowerCase();\n\n if (lower === 'null') {\n return null;\n }\n\n if (lower === 'true') {\n return true;\n }\n\n if (lower === 'false') {\n return false;\n }\n\n var num = Number(str); // will nicely fail with '123ab'\n\n var numFloat = parseFloat(str); // will nicely fail with ' '\n\n if (!isNaN(num) && !isNaN(numFloat)) {\n return num;\n }\n\n return str;\n}\n/**\n * Test whether some field contains a timestamp in milliseconds after the year 2000.\n * @param {string} field\n * @param {number} value\n * @return {boolean}\n */\n\nfunction isTimestamp(field, value) {\n return typeof value === 'number' && value > YEAR_2000 && isFinite(value) && Math.floor(value) === value && !isNaN(new Date(value).valueOf());\n}\n/**\n * Return a human readable document size\n * For example formatSize(7570718) outputs '7.6 MB'\n * @param {number} size\n * @return {string} Returns a human readable size\n */\n\nfunction formatSize(size) {\n if (size < 900) {\n return size.toFixed() + ' B';\n }\n\n var KB = size / 1000;\n\n if (KB < 900) {\n return KB.toFixed(1) + ' KB';\n }\n\n var MB = KB / 1000;\n\n if (MB < 900) {\n return MB.toFixed(1) + ' MB';\n }\n\n var GB = MB / 1000;\n\n if (GB < 900) {\n return GB.toFixed(1) + ' GB';\n }\n\n var TB = GB / 1000;\n return TB.toFixed(1) + ' TB';\n}\n/**\n * Limit text to a maximum number of characters\n * @param {string} text\n * @param {number} maxCharacterCount\n * @return {string} Returns the limited text,\n * ending with '...' if the max was exceeded\n */\n\nfunction limitCharacters(text, maxCharacterCount) {\n if (text.length <= maxCharacterCount) {\n return text;\n }\n\n return text.slice(0, maxCharacterCount) + '...';\n}\n/**\n * Test whether a value is an Object\n * @param {*} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return _typeof(value) === 'object' && value !== null && !Array.isArray(value);\n}\n/**\n * Helper function to test whether an array contains an item\n * @param {Array} array\n * @param {*} item\n * @return {boolean} Returns true if `item` is in `array`, returns false otherwise.\n */\n\nfunction contains(array, item) {\n return array.indexOf(item) !== -1;\n}\n/**\n * Checks if validation has changed from the previous execution\n * @param {Array} currErr current validation errors\n * @param {Array} prevErr previous validation errors\n */\n\nfunction isValidationErrorChanged(currErr, prevErr) {\n if (!prevErr && !currErr) {\n return false;\n }\n\n if (prevErr && !currErr || !prevErr && currErr) {\n return true;\n }\n\n if (prevErr.length !== currErr.length) {\n return true;\n }\n\n var _loop = function _loop(i) {\n var pErr = void 0;\n\n if (currErr[i].type === 'error') {\n pErr = prevErr.find(function (p) {\n return p.line === currErr[i].line;\n });\n } else {\n pErr = prevErr.find(function (p) {\n return p.dataPath === currErr[i].dataPath && p.schemaPath === currErr[i].schemaPath;\n });\n }\n\n if (!pErr) {\n return {\n v: true\n };\n }\n };\n\n for (var i = 0; i < currErr.length; ++i) {\n var _ret = _loop(i);\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n return false;\n}\n\nfunction hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar VanillaPicker;\n\nif (window.Picker) {\n // use the already loaded instance of VanillaPicker\n VanillaPicker = window.Picker;\n} else {\n try {\n // load color picker\n VanillaPicker = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'vanilla-picker'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n } catch (err) {// probably running the minimalist bundle\n }\n}\n\nmodule.exports = VanillaPicker;\n\n/***/ }),\n\n/***/ 233:\n/***/ (function(module) {\n\n/*\r\n * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n */\r\n/*jshint unused:false */\r\nmodule.exports = function naturalSort (a, b) {\r\n\t\"use strict\";\r\n\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\tore = /^0/,\r\n\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t// convert all to strings strip whitespace\r\n\t\tx = i(a).replace(sre, '') || '',\r\n\t\ty = i(b).replace(sre, '') || '',\r\n\t\t// chunk/tokenize\r\n\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t// numeric, hex or date detection\r\n\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\toFxNcL, oFyNcL;\r\n\t// first try and sort Hex codes or Dates\r\n\tif (yD) {\r\n\t\tif ( xD < yD ) { return -1; }\r\n\t\telse if ( xD > yD ) { return 1; }\r\n\t}\r\n\t// natural sorting through split numeric strings and default strings\r\n\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\toFxNcL += '';\r\n\t\t\toFyNcL += '';\r\n\t\t}\r\n\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t}\r\n\treturn 0;\r\n};\r\n\n\n/***/ }),\n\n/***/ 156:\n/***/ (function(__unused_webpack_module, exports) {\n\n(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array<number>',\n 9: 'Array<string>'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"<literal>\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, <signature>]\n // The <signature> can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})( false ? 0 : exports);\n\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nvar escapedChars = {\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\'\n};\n\nvar A_CODE = 'a'.charCodeAt();\n\n\nexports.parse = function (source, _, options) {\n var pointers = {};\n var line = 0;\n var column = 0;\n var pos = 0;\n var bigint = options && options.bigint && typeof BigInt != 'undefined';\n return {\n data: _parse('', true),\n pointers: pointers\n };\n\n function _parse(ptr, topLevel) {\n whitespace();\n var data;\n map(ptr, 'value');\n var char = getChar();\n switch (char) {\n case 't': read('rue'); data = true; break;\n case 'f': read('alse'); data = false; break;\n case 'n': read('ull'); data = null; break;\n case '\"': data = parseString(); break;\n case '[': data = parseArray(ptr); break;\n case '{': data = parseObject(ptr); break;\n default:\n backChar();\n if ('-0123456789'.indexOf(char) >= 0)\n data = parseNumber();\n else\n unexpectedToken();\n }\n map(ptr, 'valueEnd');\n whitespace();\n if (topLevel && pos < source.length) unexpectedToken();\n return data;\n }\n\n function whitespace() {\n loop:\n while (pos < source.length) {\n switch (source[pos]) {\n case ' ': column++; break;\n case '\\t': column += 4; break;\n case '\\r': column = 0; break;\n case '\\n': column = 0; line++; break;\n default: break loop;\n }\n pos++;\n }\n }\n\n function parseString() {\n var str = '';\n var char;\n while (true) {\n char = getChar();\n if (char == '\"') {\n break;\n } else if (char == '\\\\') {\n char = getChar();\n if (char in escapedChars)\n str += escapedChars[char];\n else if (char == 'u')\n str += getCharCode();\n else\n wasUnexpectedToken();\n } else {\n str += char;\n }\n }\n return str;\n }\n\n function parseNumber() {\n var numStr = '';\n var integer = true;\n if (source[pos] == '-') numStr += getChar();\n\n numStr += source[pos] == '0'\n ? getChar()\n : getDigits();\n\n if (source[pos] == '.') {\n numStr += getChar() + getDigits();\n integer = false;\n }\n\n if (source[pos] == 'e' || source[pos] == 'E') {\n numStr += getChar();\n if (source[pos] == '+' || source[pos] == '-') numStr += getChar();\n numStr += getDigits();\n integer = false;\n }\n\n var result = +numStr;\n return bigint && integer && (result > Number.MAX_SAFE_INTEGER || result < Number.MIN_SAFE_INTEGER)\n ? BigInt(numStr)\n : result;\n }\n\n function parseArray(ptr) {\n whitespace();\n var arr = [];\n var i = 0;\n if (getChar() == ']') return arr;\n backChar();\n\n while (true) {\n var itemPtr = ptr + '/' + i;\n arr.push(_parse(itemPtr));\n whitespace();\n var char = getChar();\n if (char == ']') break;\n if (char != ',') wasUnexpectedToken();\n whitespace();\n i++;\n }\n return arr;\n }\n\n function parseObject(ptr) {\n whitespace();\n var obj = {};\n if (getChar() == '}') return obj;\n backChar();\n\n while (true) {\n var loc = getLoc();\n if (getChar() != '\"') wasUnexpectedToken();\n var key = parseString();\n var propPtr = ptr + '/' + escapeJsonPointer(key);\n mapLoc(propPtr, 'key', loc);\n map(propPtr, 'keyEnd');\n whitespace();\n if (getChar() != ':') wasUnexpectedToken();\n whitespace();\n obj[key] = _parse(propPtr);\n whitespace();\n var char = getChar();\n if (char == '}') break;\n if (char != ',') wasUnexpectedToken();\n whitespace();\n }\n return obj;\n }\n\n function read(str) {\n for (var i=0; i<str.length; i++)\n if (getChar() !== str[i]) wasUnexpectedToken();\n }\n\n function getChar() {\n checkUnexpectedEnd();\n var char = source[pos];\n pos++;\n column++; // new line?\n return char;\n }\n\n function backChar() {\n pos--;\n column--;\n }\n\n function getCharCode() {\n var count = 4;\n var code = 0;\n while (count--) {\n code <<= 4;\n var char = getChar().toLowerCase();\n if (char >= 'a' && char <= 'f')\n code += char.charCodeAt() - A_CODE + 10;\n else if (char >= '0' && char <= '9')\n code += +char;\n else\n wasUnexpectedToken();\n }\n return String.fromCharCode(code);\n }\n\n function getDigits() {\n var digits = '';\n while (source[pos] >= '0' && source[pos] <= '9')\n digits += getChar();\n\n if (digits.length) return digits;\n checkUnexpectedEnd();\n unexpectedToken();\n }\n\n function map(ptr, prop) {\n mapLoc(ptr, prop, getLoc());\n }\n\n function mapLoc(ptr, prop, loc) {\n pointers[ptr] = pointers[ptr] || {};\n pointers[ptr][prop] = loc;\n }\n\n function getLoc() {\n return {\n line: line,\n column: column,\n pos: pos\n };\n }\n\n function unexpectedToken() {\n throw new SyntaxError('Unexpected token ' + source[pos] + ' in JSON at position ' + pos);\n }\n\n function wasUnexpectedToken() {\n backChar();\n unexpectedToken();\n }\n\n function checkUnexpectedEnd() {\n if (pos >= source.length)\n throw new SyntaxError('Unexpected end of JSON input');\n }\n};\n\n\nexports.stringify = function (data, _, options) {\n if (!validType(data)) return;\n var wsLine = 0;\n var wsPos, wsColumn;\n var whitespace = typeof options == 'object'\n ? options.space\n : options;\n switch (typeof whitespace) {\n case 'number':\n var len = whitespace > 10\n ? 10\n : whitespace < 0\n ? 0\n : Math.floor(whitespace);\n whitespace = len && repeat(len, ' ');\n wsPos = len;\n wsColumn = len;\n break;\n case 'string':\n whitespace = whitespace.slice(0, 10);\n wsPos = 0;\n wsColumn = 0;\n for (var j=0; j<whitespace.length; j++) {\n var char = whitespace[j];\n switch (char) {\n case ' ': wsColumn++; break;\n case '\\t': wsColumn += 4; break;\n case '\\r': wsColumn = 0; break;\n case '\\n': wsColumn = 0; wsLine++; break;\n default: throw new Error('whitespace characters not allowed in JSON');\n }\n wsPos++;\n }\n break;\n default:\n whitespace = undefined;\n }\n\n var json = '';\n var pointers = {};\n var line = 0;\n var column = 0;\n var pos = 0;\n var es6 = options && options.es6 && typeof Map == 'function';\n _stringify(data, 0, '');\n return {\n json: json,\n pointers: pointers\n };\n\n function _stringify(_data, lvl, ptr) {\n map(ptr, 'value');\n switch (typeof _data) {\n case 'number':\n case 'bigint':\n case 'boolean':\n out('' + _data); break;\n case 'string':\n out(quoted(_data)); break;\n case 'object':\n if (_data === null) {\n out('null');\n } else if (typeof _data.toJSON == 'function') {\n out(quoted(_data.toJSON()));\n } else if (Array.isArray(_data)) {\n stringifyArray();\n } else if (es6) {\n if (_data.constructor.BYTES_PER_ELEMENT)\n stringifyArray();\n else if (_data instanceof Map)\n stringifyMapSet();\n else if (_data instanceof Set)\n stringifyMapSet(true);\n else\n stringifyObject();\n } else {\n stringifyObject();\n }\n }\n map(ptr, 'valueEnd');\n\n function stringifyArray() {\n if (_data.length) {\n out('[');\n var itemLvl = lvl + 1;\n for (var i=0; i<_data.length; i++) {\n if (i) out(',');\n indent(itemLvl);\n var item = validType(_data[i]) ? _data[i] : null;\n var itemPtr = ptr + '/' + i;\n _stringify(item, itemLvl, itemPtr);\n }\n indent(lvl);\n out(']');\n } else {\n out('[]');\n }\n }\n\n function stringifyObject() {\n var keys = Object.keys(_data);\n if (keys.length) {\n out('{');\n var propLvl = lvl + 1;\n for (var i=0; i<keys.length; i++) {\n var key = keys[i];\n var value = _data[key];\n if (validType(value)) {\n if (i) out(',');\n var propPtr = ptr + '/' + escapeJsonPointer(key);\n indent(propLvl);\n map(propPtr, 'key');\n out(quoted(key));\n map(propPtr, 'keyEnd');\n out(':');\n if (whitespace) out(' ');\n _stringify(value, propLvl, propPtr);\n }\n }\n indent(lvl);\n out('}');\n } else {\n out('{}');\n }\n }\n\n function stringifyMapSet(isSet) {\n if (_data.size) {\n out('{');\n var propLvl = lvl + 1;\n var first = true;\n var entries = _data.entries();\n var entry = entries.next();\n while (!entry.done) {\n var item = entry.value;\n var key = item[0];\n var value = isSet ? true : item[1];\n if (validType(value)) {\n if (!first) out(',');\n first = false;\n var propPtr = ptr + '/' + escapeJsonPointer(key);\n indent(propLvl);\n map(propPtr, 'key');\n out(quoted(key));\n map(propPtr, 'keyEnd');\n out(':');\n if (whitespace) out(' ');\n _stringify(value, propLvl, propPtr);\n }\n entry = entries.next();\n }\n indent(lvl);\n out('}');\n } else {\n out('{}');\n }\n }\n }\n\n function out(str) {\n column += str.length;\n pos += str.length;\n json += str;\n }\n\n function indent(lvl) {\n if (whitespace) {\n json += '\\n' + repeat(lvl, whitespace);\n line++;\n column = 0;\n while (lvl--) {\n if (wsLine) {\n line += wsLine;\n column = wsColumn;\n } else {\n column += wsColumn;\n }\n pos += wsPos;\n }\n pos += 1; // \\n character\n }\n }\n\n function map(ptr, prop) {\n pointers[ptr] = pointers[ptr] || {};\n pointers[ptr][prop] = {\n line: line,\n column: column,\n pos: pos\n };\n }\n\n function repeat(n, str) {\n return Array(n + 1).join(str);\n }\n};\n\n\nvar VALID_TYPES = ['number', 'bigint', 'boolean', 'string', 'object'];\nfunction validType(data) {\n return VALID_TYPES.indexOf(typeof data) >= 0;\n}\n\n\nvar ESC_QUOTE = /\"|\\\\/g;\nvar ESC_B = /[\\b]/g;\nvar ESC_F = /\\f/g;\nvar ESC_N = /\\n/g;\nvar ESC_R = /\\r/g;\nvar ESC_T = /\\t/g;\nfunction quoted(str) {\n str = str.replace(ESC_QUOTE, '\\\\$&')\n .replace(ESC_F, '\\\\f')\n .replace(ESC_B, '\\\\b')\n .replace(ESC_N, '\\\\n')\n .replace(ESC_R, '\\\\r')\n .replace(ESC_T, '\\\\t');\n return '\"' + str + '\"';\n}\n\n\nvar ESC_0 = /~/g;\nvar ESC_1 = /\\//g;\nfunction escapeJsonPointer(str) {\n return str.replace(ESC_0, '~0')\n .replace(ESC_1, '~1');\n}\n\n\n/***/ }),\n\n/***/ 483:\n/***/ (function(module, exports) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n(function (root, factory) {\n \"use strict\";\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n else {}\n}(this, function () {\n\n /**\n * A self-contained modal library\n */\n \"use strict\";\n\n /** Returns whether a value is a dom node */\n function isNode(value) {\n if ( typeof Node === \"object\" ) {\n return value instanceof Node;\n }\n else {\n return value && typeof value === \"object\" && typeof value.nodeType === \"number\";\n }\n }\n\n /** Returns whether a value is a string */\n function isString(value) {\n return typeof value === \"string\";\n }\n\n /**\n * Generates observable objects that can be watched and triggered\n */\n function observable() {\n var callbacks = [];\n return {\n watch: callbacks.push.bind(callbacks),\n trigger: function(context, detail) {\n\n var unprevented = true;\n var event = {\n detail: detail,\n preventDefault: function preventDefault () {\n unprevented = false;\n }\n };\n\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](context, event);\n }\n\n return unprevented;\n }\n };\n }\n\n\n /** Whether an element is hidden */\n function isHidden ( elem ) {\n // @see http://stackoverflow.com/questions/19669786\n return window.getComputedStyle(elem).display === 'none';\n }\n\n\n /**\n * A small interface for creating and managing a dom element\n */\n function Elem( elem ) {\n this.elem = elem;\n }\n\n /** Creates a new div */\n Elem.make = function ( parent, tag ) {\n if ( typeof parent === \"string\" ) {\n parent = document.querySelector(parent);\n }\n var elem = document.createElement(tag || 'div');\n (parent || document.body).appendChild(elem);\n return new Elem(elem);\n };\n\n Elem.prototype = {\n\n /** Creates a child of this node */\n child: function (tag) {\n return Elem.make(this.elem, tag);\n },\n\n /** Applies a set of styles to an element */\n stylize: function(styles) {\n styles = styles || {};\n\n if ( typeof styles.opacity !== \"undefined\" ) {\n styles.filter = \"alpha(opacity=\" + (styles.opacity * 100) + \")\";\n }\n\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n this.elem.style[prop] = styles[prop];\n }\n }\n\n return this;\n },\n\n /** Adds a class name */\n clazz: function (clazz) {\n this.elem.className += \" \" + clazz;\n return this;\n },\n\n /** Sets the HTML */\n html: function (content) {\n if ( isNode(content) ) {\n this.elem.appendChild( content );\n }\n else {\n this.elem.innerHTML = content;\n }\n return this;\n },\n\n /** Adds a click handler to this element */\n onClick: function(callback) {\n this.elem.addEventListener('click', callback);\n return this;\n },\n\n /** Removes this element from the DOM */\n destroy: function() {\n this.elem.parentNode.removeChild(this.elem);\n },\n\n /** Hides this element */\n hide: function() {\n this.elem.style.display = \"none\";\n },\n\n /** Shows this element */\n show: function() {\n this.elem.style.display = \"block\";\n },\n\n /** Sets an attribute on this element */\n attr: function ( name, value ) {\n if (value !== undefined) {\n this.elem.setAttribute(name, value);\n }\n return this;\n },\n\n /** Executes a callback on all the ancestors of an element */\n anyAncestor: function ( predicate ) {\n var elem = this.elem;\n while ( elem ) {\n if ( predicate( new Elem(elem) ) ) {\n return true;\n }\n else {\n elem = elem.parentNode;\n }\n }\n return false;\n },\n\n /** Whether this element is visible */\n isVisible: function () {\n return !isHidden(this.elem);\n }\n };\n\n\n /** Generates the grey-out effect */\n function buildOverlay( getOption, close ) {\n return Elem.make( getOption(\"parent\") )\n .clazz(\"pico-overlay\")\n .clazz( getOption(\"overlayClass\", \"\") )\n .stylize({\n display: \"none\",\n position: \"fixed\",\n top: \"0px\",\n left: \"0px\",\n height: \"100%\",\n width: \"100%\",\n zIndex: 10000\n })\n .stylize(getOption('overlayStyles', {\n opacity: 0.5,\n background: \"#000\"\n }))\n .onClick(function () {\n if ( getOption('overlayClose', true) ) {\n close();\n }\n });\n }\n\n // An auto incrementing ID assigned to each modal\n var autoinc = 1;\n\n /** Builds the content of a modal */\n function buildModal( getOption, close ) {\n var width = getOption('width', 'auto');\n if ( typeof width === \"number\" ) {\n width = \"\" + width + \"px\";\n }\n\n var id = getOption(\"modalId\", \"pico-\" + autoinc++);\n\n var elem = Elem.make( getOption(\"parent\") )\n .clazz(\"pico-content\")\n .clazz( getOption(\"modalClass\", \"\") )\n .stylize({\n display: 'none',\n position: 'fixed',\n zIndex: 10001,\n left: \"50%\",\n top: \"38.1966%\",\n maxHeight: '90%',\n boxSizing: 'border-box',\n width: width,\n '-ms-transform': 'translate(-50%,-38.1966%)',\n '-moz-transform': 'translate(-50%,-38.1966%)',\n '-webkit-transform': 'translate(-50%,-38.1966%)',\n '-o-transform': 'translate(-50%,-38.1966%)',\n transform: 'translate(-50%,-38.1966%)'\n })\n .stylize(getOption('modalStyles', {\n overflow: 'auto',\n backgroundColor: \"white\",\n padding: \"20px\",\n borderRadius: \"5px\"\n }))\n .html( getOption('content') )\n .attr(\"id\", id)\n .attr(\"role\", \"dialog\")\n .attr(\"aria-labelledby\", getOption(\"ariaLabelledBy\"))\n .attr(\"aria-describedby\", getOption(\"ariaDescribedBy\", id))\n .onClick(function (event) {\n var isCloseClick = new Elem(event.target).anyAncestor(function (elem) {\n return /\\bpico-close\\b/.test(elem.elem.className);\n });\n if ( isCloseClick ) {\n close();\n }\n });\n\n return elem;\n }\n\n /** Builds the close button */\n function buildClose ( elem, getOption ) {\n if ( getOption('closeButton', true) ) {\n return elem.child('button')\n .html( getOption('closeHtml', \"×\") )\n .clazz(\"pico-close\")\n .clazz( getOption(\"closeClass\", \"\") )\n .stylize( getOption('closeStyles', {\n borderRadius: \"2px\",\n border: 0,\n padding: 0,\n cursor: \"pointer\",\n height: \"15px\",\n width: \"15px\",\n position: \"absolute\",\n top: \"5px\",\n right: \"5px\",\n fontSize: \"16px\",\n textAlign: \"center\",\n lineHeight: \"15px\",\n background: \"#CCC\"\n }) )\n .attr(\"aria-label\", getOption(\"close-label\", \"Close\"));\n }\n }\n\n /** Builds a method that calls a method and returns an element */\n function buildElemAccessor( builder ) {\n return function () {\n return builder().elem;\n };\n }\n\n\n // An observable that is triggered whenever the escape key is pressed\n var escapeKey = observable();\n\n // An observable that is triggered when the user hits the tab key\n var tabKey = observable();\n\n /** A global event handler to detect the escape key being pressed */\n document.documentElement.addEventListener('keydown', function onKeyPress (event) {\n var keycode = event.which || event.keyCode;\n\n // If this is the escape key\n if ( keycode === 27 ) {\n escapeKey.trigger();\n }\n\n // If this is the tab key\n else if ( keycode === 9 ) {\n tabKey.trigger(event);\n }\n });\n\n\n /** Attaches focus management events */\n function manageFocus ( iface, isEnabled ) {\n\n /** Whether an element matches a selector */\n function matches ( elem, selector ) {\n var fn = elem.msMatchesSelector || elem.webkitMatchesSelector || elem.matches;\n return fn.call(elem, selector);\n }\n\n /**\n * Returns whether an element is focusable\n * @see http://stackoverflow.com/questions/18261595\n */\n function canFocus( elem ) {\n if (\n isHidden(elem) ||\n matches(elem, \":disabled\") ||\n elem.hasAttribute(\"contenteditable\")\n ) {\n return false;\n }\n else {\n return elem.hasAttribute(\"tabindex\") ||\n matches(elem, \"input,select,textarea,button,a[href],area[href],iframe\");\n }\n }\n\n /** Returns the first descendant that can be focused */\n function firstFocusable ( elem ) {\n var items = elem.getElementsByTagName(\"*\");\n for (var i = 0; i < items.length; i++) {\n if ( canFocus(items[i]) ) {\n return items[i];\n }\n }\n }\n\n /** Returns the last descendant that can be focused */\n function lastFocusable ( elem ) {\n var items = elem.getElementsByTagName(\"*\");\n for (var i = items.length; i--;) {\n if ( canFocus(items[i]) ) {\n return items[i];\n }\n }\n }\n\n // The element focused before the modal opens\n var focused;\n\n // Records the currently focused element so state can be returned\n // after the modal closes\n iface.beforeShow(function getActiveFocus() {\n focused = document.activeElement;\n });\n\n // Shift focus into the modal\n iface.afterShow(function focusModal() {\n if ( isEnabled() ) {\n var focusable = firstFocusable(iface.modalElem());\n if ( focusable ) {\n focusable.focus();\n }\n }\n });\n\n // Restore the previously focused element when the modal closes\n iface.afterClose(function returnFocus() {\n if ( isEnabled() && focused ) {\n focused.focus();\n }\n focused = null;\n });\n\n // Capture tab key presses and loop them within the modal\n tabKey.watch(function tabKeyPress (event) {\n if ( isEnabled() && iface.isVisible() ) {\n var first = firstFocusable(iface.modalElem());\n var last = lastFocusable(iface.modalElem());\n\n var from = event.shiftKey ? first : last;\n if ( from === document.activeElement ) {\n (event.shiftKey ? last : first).focus();\n event.preventDefault();\n }\n }\n });\n }\n\n /** Manages setting the 'overflow: hidden' on the body tag */\n function manageBodyOverflow(iface, isEnabled) {\n var origOverflow;\n var body = new Elem(document.body);\n\n iface.beforeShow(function () {\n // Capture the current values so they can be restored\n origOverflow = body.elem.style.overflow;\n\n if (isEnabled()) {\n body.stylize({ overflow: \"hidden\" });\n }\n });\n\n iface.afterClose(function () {\n body.stylize({ overflow: origOverflow });\n });\n }\n\n /**\n * Displays a modal\n */\n return function picoModal(options) {\n\n if ( isString(options) || isNode(options) ) {\n options = { content: options };\n }\n\n var afterCreateEvent = observable();\n var beforeShowEvent = observable();\n var afterShowEvent = observable();\n var beforeCloseEvent = observable();\n var afterCloseEvent = observable();\n\n /**\n * Returns a named option if it has been explicitly defined. Otherwise,\n * it returns the given default value\n */\n function getOption ( opt, defaultValue ) {\n var value = options[opt];\n if ( typeof value === \"function\" ) {\n value = value( defaultValue );\n }\n return value === undefined ? defaultValue : value;\n }\n\n\n // The various DOM elements that constitute the modal\n var modalElem = build.bind(window, 'modal');\n var shadowElem = build.bind(window, 'overlay');\n var closeElem = build.bind(window, 'close');\n\n // This will eventually contain the modal API returned to the user\n var iface;\n\n\n /** Hides this modal */\n function forceClose (detail) {\n shadowElem().hide();\n modalElem().hide();\n afterCloseEvent.trigger(iface, detail);\n }\n\n /** Gracefully hides this modal */\n function close (detail) {\n if ( beforeCloseEvent.trigger(iface, detail) ) {\n forceClose(detail);\n }\n }\n\n /** Wraps a method so it returns the modal interface */\n function returnIface ( callback ) {\n return function () {\n callback.apply(this, arguments);\n return iface;\n };\n }\n\n\n // The constructed dom nodes\n var built;\n\n /** Builds a method that calls a method and returns an element */\n function build (name, detail) {\n if ( !built ) {\n var modal = buildModal(getOption, close);\n built = {\n modal: modal,\n overlay: buildOverlay(getOption, close),\n close: buildClose(modal, getOption)\n };\n afterCreateEvent.trigger(iface, detail);\n }\n return built[name];\n }\n\n iface = {\n\n /** Returns the wrapping modal element */\n modalElem: buildElemAccessor(modalElem),\n\n /** Returns the close button element */\n closeElem: buildElemAccessor(closeElem),\n\n /** Returns the overlay element */\n overlayElem: buildElemAccessor(shadowElem),\n\n /** Builds the dom without showing the modal */\n buildDom: returnIface(build.bind(null, null)),\n\n /** Returns whether this modal is currently being shown */\n isVisible: function () {\n return !!(built && modalElem && modalElem().isVisible());\n },\n\n /** Shows this modal */\n show: function (detail) {\n if ( beforeShowEvent.trigger(iface, detail) ) {\n shadowElem().show();\n closeElem();\n modalElem().show();\n afterShowEvent.trigger(iface, detail);\n }\n return this;\n },\n\n /** Hides this modal */\n close: returnIface(close),\n\n /**\n * Force closes this modal. This will not call beforeClose\n * events and will just immediately hide the modal\n */\n forceClose: returnIface(forceClose),\n\n /** Destroys this modal */\n destroy: function () {\n modalElem().destroy();\n shadowElem().destroy();\n shadowElem = modalElem = closeElem = undefined;\n },\n\n /**\n * Updates the options for this modal. This will only let you\n * change options that are re-evaluted regularly, such as\n * `overlayClose`.\n */\n options: function ( opts ) {\n Object.keys(opts).map(function (key) {\n options[key] = opts[key];\n });\n },\n\n /** Executes after the DOM nodes are created */\n afterCreate: returnIface(afterCreateEvent.watch),\n\n /** Executes a callback before this modal is closed */\n beforeShow: returnIface(beforeShowEvent.watch),\n\n /** Executes a callback after this modal is shown */\n afterShow: returnIface(afterShowEvent.watch),\n\n /** Executes a callback before this modal is closed */\n beforeClose: returnIface(beforeCloseEvent.watch),\n\n /** Executes a callback after this modal is closed */\n afterClose: returnIface(afterCloseEvent.watch)\n };\n\n manageFocus(iface, getOption.bind(null, \"focus\", true));\n\n manageBodyOverflow(iface, getOption.bind(null, \"bodyOverflow\", true));\n\n // If a user presses the 'escape' key, close the modal.\n escapeKey.watch(function escapeKeyPress () {\n if ( getOption(\"escCloses\", true) && iface.isVisible() ) {\n iface.close();\n }\n });\n\n return iface;\n };\n\n}));\n\n\n/***/ }),\n\n/***/ 928:\n/***/ (function(module) {\n\n!function(e,n){ true?module.exports=n():0}(this,function(){\"use strict\";function f(e,n){if(!(this instanceof f))throw new SyntaxError(\"Constructor must be called with the new operator\");this.message=e+\" (char \"+n+\")\",this.char=n,this.stack=(new Error).stack}(f.prototype=new Error).constructor=Error;var o={\"'\":!0,\"‘\":!0,\"’\":!0,\"`\":!0,\"´\":!0},u={'\"':!0,\"“\":!0,\"â€\":!0};function c(e){return n.test(e)}var n=/^[a-zA-Z_]$/;var s=/^[0-9a-fA-F]$/;function a(e){return t.test(e)}var t=/^[0-9]$/;function l(e){return\" \"===e||\"\\t\"===e||\"\\n\"===e||\"\\r\"===e}function h(e){return\" \"===e||\" \"<=e&&e<=\" \"||\" \"===e||\"âŸ\"===e||\" \"===e}function d(e){return!0===o[e]}function w(e){return!0===u[e]}function b(e){return!0===o[e]?\"'\":!0===u[e]?'\"':e}function e(e,n){n=e.lastIndexOf(n);return-1!==n?e.substring(0,n)+e.substring(n+1):e}function r(e,n){var t=e.length;if(!l(e[t-1]))return e+n;for(;l(e[t-1]);)t--;return e.substring(0,t)+n+e.substring(t)}var i=0,g=1,v=2,p=3,x=4,k=5,m=6,y={\"\":!0,\"{\":!0,\"}\":!0,\"[\":!0,\"]\":!0,\":\":!0,\",\":!0,\"(\":!0,\")\":!0,\";\":!0,\"+\":!0},I={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"},E={\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\\t\":\"\\\\t\"},A={null:\"null\",true:\"true\",false:\"false\"},j={None:\"null\",True:\"true\",False:\"false\"},$=\"\",O=\"\",T=0,C=\"\",F=\"\",S=m;function U(){T++,C=$.charAt(T)}function z(){U(),\"\\\\\"===C&&U()}function N(){return S===i&&(\"[\"===F||\"{\"===F)||S===v||S===g||S===p}function V(){O+=F,S=m,F=\"\",y[C]?(S=i,F=C,U()):function(){if(a(C)||\"-\"===C){if(S=g,\"-\"===C){if(F+=C,U(),!a(C))throw new f(\"Invalid number, digit expected\",T)}else\"0\"===C&&(F+=C,U());for(;a(C);)F+=C,U();if(\".\"===C){if(F+=C,U(),!a(C))throw new f(\"Invalid number, digit expected\",T);for(;a(C);)F+=C,U()}if(\"e\"===C||\"E\"===C){if(F+=C,U(),\"+\"!==C&&\"-\"!==C||(F+=C,U()),!a(C))throw new f(\"Invalid number, digit expected\",T);for(;a(C);)F+=C,U()}}else\"\\\\\"===C&&'\"'===$.charAt(T+1)?(U(),_(z)):_(U)}(),S===x&&(F=function(e){for(var n=\"\",t=0;t<e.length;t++){var r=e[t];n+=h(r)?\" \":r}return n}(F),V()),S===k&&(S=m,F=\"\",V())}function Z(){\",\"===F&&(F=\"\",S=m,V())}function _(e){if(!0===o[n=C]||!0===u[n]){var n=b(C),t=d(C)?d:w;for(F+='\"',S=v,e();\"\"!==C&&!t(C);)if(\"\\\\\"===C)if(e(),void 0!==I[C])F+=\"\\\\\"+C,e();else if(\"u\"===C){F+=\"\\\\u\",e();for(var r=0;r<4;r++){if(i=C,!s.test(i))throw new f(\"Invalid unicode character\",T-F.length);F+=C,e()}}else{if(\"'\"!==C)throw new f('Invalid escape character \"\\\\'+C+'\"',T);F+=\"'\",e()}else E[C]?F+=E[C]:F+='\"'===C?'\\\\\"':C,e();if(b(C)!==n)throw new f(\"End of string expected\",T-F.length);return F+='\"',void e()}var i,n;!function(){if(c(C))for(S=p;c(C)||a(C)||\"$\"===C;)F+=C,U();else!function(){if(l(C)||h(C))for(S=x;l(C)||h(C);)F+=C,U();else!function(){if(\"/\"!==C||\"*\"!==$[T+1])if(\"/\"!==C||\"/\"!==$[T+1])!function(){S=m;for(;\"\"!==C;)F+=C,U();throw new f('Syntax error in part \"'+F+'\"',T-F.length)}();else for(S=k;\"\"!==C&&\"\\n\"!==C;)F+=C,U();else{for(S=k;\"\"!==C&&(\"*\"!==C||\"*\"===C&&\"/\"!==$[T+1]);)F+=C,U();\"*\"===C&&\"/\"===$[T+1]&&(F+=C,U(),F+=C,U())}}()}()}()}function q(){if(S!==i||\"{\"!==F)!function(){if(S!==i||\"[\"!==F)!function(){if(S!==v)(S!==g?function(){if(S!==p)!function(){throw new f(\"\"===F?\"Unexpected end of json string\":\"Value expected\",T-F.length)}();else if(A[F])V();else{if(j[F])return F=j[F],V();var e=F,n=O.length;if(F=\"\",V(),S===i&&\"(\"===F)return F=\"\",V(),q(),S===i&&\")\"===F&&(F=\"\",V(),S===i&&\";\"===F&&(F=\"\",V()));for(O=function(e,n,t){return e.substring(0,t)+n+e.substring(t)}(O,'\"'.concat(e),n);S===p||S===g;)V();O+='\"'}}:V)();else for(V();S===i&&\"+\"===F;){var e;F=\"\",V(),S===v&&(e=O.lastIndexOf('\"'),O=O.substring(0,e)+F.substring(1),F=\"\",V())}}();else if(V(),S!==i||\"]\"!==F){for(;;)if(q(),S===i&&\",\"===F){if(V(),S===i&&\"]\"===F){O=e(O,\",\");break}if(\"\"===F){O=e(O,\",\");break}}else{if(!N())break;O=r(O,\",\")}S===i&&\"]\"===F?V():O=r(O,\"]\")}else V()}();else if(V(),S!==i||\"}\"!==F){for(;;){if(S!==p&&S!==g||(S=v,F='\"'.concat(F,'\"')),S!==v)throw new f(\"Object key expected\",T-F.length);if(V(),S===i&&\":\"===F)V();else{if(!N())throw new f(\"Colon expected\",T-F.length);O=r(O,\":\")}if(q(),S===i&&\",\"===F){if(V(),S===i&&\"}\"===F){O=e(O,\",\");break}if(\"\"===F){O=e(O,\",\");break}}else{if(S!==v&&S!==g&&S!==p)break;O=r(O,\",\")}}S===i&&\"}\"===F?V():O=r(O,\"}\")}else V()}return function(e){O=\"\",T=0,C=($=e).charAt(0),F=\"\",S=m,V();var n=S;if(q(),Z(),\"\"===F)return O;if(n===S&&N()){for(var t=\"\";n===S&&N();)t+=O=r(O,\",\"),O=\"\",q(),Z();return\"[\\n\".concat(t).concat(O,\"\\n]\")}throw new f(\"Unexpected characters\",T-F.length)}});\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(161);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","import { IAppState, initialAppState, WebchatOptions } from \"../reduxState\";\nimport { GenericAction, actionTypes } from \"../actions\";\nimport * as merge from 'deepmerge';\nimport { isPlainObject } from 'is-plain-object';\n\nconst simpleUpdateIn = require(\"simple-update-in\");\nexport type ContainerName = \"styleOptions\" | \"UI\" | \"root\" | \"middlewares\" | \"localization\" | \"languages\" | \"UI.headerOptions\";\ndeclare const DruidWebchat_v2: any;\n\n\nexport function updateStyleElement(state: IAppState, styleElementName: string, value: any, parentObject: ContainerName = \"styleOptions\"): IAppState {\n // const parentObject: ContainerName = \"styleOptions\";\n // return simpleUpdateIn(state, [parentObject, styleElementName], () => value);\n\n if (styleElementName === \"customDruidStyleSet\") {\n try {\n value = JSON.parse(value || \"{}\");\n } catch {\n return state;\n }\n }\n\n if (styleElementName === \"druidCookiesExpirationInDays\") {\n try {\n value = Number(eval(value)) || 0;\n } catch {\n return state;\n }\n }\n const mergedObj = merge.all<WebchatOptions>([state.webchatOptions, parentObject === \"root\" ?\n {\n [styleElementName]: value\n }\n :\n parentObject === \"UI.headerOptions\" ?\n {\n \"UI\": {\n \"headerOptions\": {\n [styleElementName]: value\n }\n }\n }\n :\n {\n [parentObject]: {\n [styleElementName]: value\n }\n }\n ], { isMergeableObject: isPlainObject });\n\n if (styleElementName === \"customDruidStyleSet\") { // always replace\n mergedObj.customDruidStyleSet = value;\n }\n\n (async () => {\n const { druidWebChatDispatch } = DruidWebchat_v2.druidWebChatInstance;\n switch (styleElementName) {\n case 'position': {\n return druidWebChatDispatch({\n type: 'SET_SIDE',\n payload: value\n });\n }\n case 'customDruidStyleSet': {\n return druidWebChatDispatch({\n type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: [styleElementName], variableValue: value } //json parsed above\n });\n }\n // case 'druidCookiesExpirationInDays': {\n // return druidWebChatDispatch({\n // type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: [styleElementName], variableValue: value} //json parsed above\n // });\n // }\n case 'webChatEventHandler': {\n return druidWebChatDispatch({\n type: 'SET_MIDDLEWARE_OR_EVENT_HANDLER', payload: { handlerName: [styleElementName], handler: value, withDecorate: true }\n });\n }\n case 'activityStatusMiddleware':\n case 'cardActionMiddleware':\n case 'attachmentMiddleware':\n case 'activityMiddleware':\n case 'scrollToEndButtonMiddleware': {\n return druidWebChatDispatch({\n type: 'SET_MIDDLEWARE_OR_EVENT_HANDLER', payload: { handlerName: [styleElementName], handler: value, withDecorate: false }\n });\n }\n // case 'showChatTitle':\n case 'showCloseButton':\n case 'showVoiceInputSelector':\n case 'showChangeSideButton':\n case 'showLanguageSelector':\n case 'showAvatar':\n case 'showReload':\n case 'showReset': {\n return druidWebChatDispatch({\n type: 'SET_HEADEROPTIONS', payload: { [styleElementName]: value }\n });\n }\n case 'userAvatarImage': {\n // druidWebChatDispatch({\n // type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: ['styleOptions', 'userAvatarInitials'], variableValue: value ? '': undefined}\n // });\n mergedObj.styleOptions.userAvatarInitials = value ? '' : undefined;\n return druidWebChatDispatch({\n type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: ['styleOptions', 'userAvatarImage'], variableValue: value }\n });\n }\n case 'botAvatarImage': {\n mergedObj.styleOptions.botAvatarInitials = value ? '' : undefined;\n druidWebChatDispatch({\n type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: ['styleOptions', 'botAvatarInitials'], variableValue: value ? '' : undefined }\n });\n return druidWebChatDispatch({\n type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: ['styleOptions', 'botAvatarImage'], variableValue: value }\n });\n }\n default: {\n return druidWebChatDispatch({\n type: 'SET_MERGEDCHATOPTIONS_SIMPLE_VARIABLE', payload: { variablePath: parentObject ? (parentObject === \"root\" ? [styleElementName] : [...parentObject.split(\".\"), styleElementName]) : [styleElementName], variableValue: value }\n });\n }\n }\n })();\n\n return {\n ...state,\n webchatOptions: mergedObj\n }\n}\n\nexport function updateRootStateVariable(state: IAppState, stateVariableName: string, value: any): IAppState {\n return {\n ...state,\n [stateVariableName]: value,\n }\n}\n\nexport function updateStyleOptions(state: IAppState, webchatOptions: any): IAppState {\n return {\n ...state,\n webchatOptions: merge.all<WebchatOptions>([state.webchatOptions, webchatOptions], { isMergeableObject: isPlainObject }),\n initialized: true\n }\n}\n\n\nexport const WebChatReducer = (state: IAppState = initialAppState, action: GenericAction<actionTypes, any>): IAppState => {\n console.info(action);\n\n switch (action.type) {\n case \"UPDATE_STYLE_ELEMENT\":\n return updateStyleElement(state, action.payload.styleElementName, action.payload.value, action.payload.containerName);\n case \"UPDATE_STYLE_OPTIONS\":\n return updateStyleOptions(state, action.payload);\n case \"UPDATE_ROOT_WEBCHAT_STATE_VARIABlE\":\n return updateRootStateVariable(state, action.payload.propertyName, action.payload.value)\n default:\n return state;\n }\n};\n","'use strict';\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools =\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n };\n\nexports.devToolsEnhancer =\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__\n : function () {\n return function (noop) {\n return noop;\n };\n };\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\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}","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\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 exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"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\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","Prism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n","Prism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\tpattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=t||self).simpleUpdateIn=e()}(this,function(){\"use strict\";function l(t){return(l=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function c(t,e,r,n,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function t(u){return function(){var t=this,i=arguments;return new Promise(function(e,r){var n=u.apply(t,i);function o(t){c(n,e,r,o,a,\"next\",t)}function a(t){c(n,e,r,o,a,\"throw\",t)}o(void 0)})}}function p(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function n(e,t){var r,n=Object.keys(e);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(e),t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)),n}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach(function(t){p(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function b(t){return function(t){if(Array.isArray(t))return t}(t)||e(t)||u(t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function v(t){return function(t){if(Array.isArray(t))return o(t)}(t)||e(t)||u(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function e(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function u(t,e){if(t){if(\"string\"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function f(t){if(\"undefined\"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=u(t))){var e=0,r=function(){};return{s:r,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var n,o,a=!0,i=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return a=t.done,t},e:function(t){i=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(i)throw o}}}}var d=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};function r(t,e,r){s(e);var n,o=f(function t(e,r){if(!r.length)return;var n=b(r),o=n[0],a=n.slice(1);if(\"function\"==typeof o){var i=[];if(Array.isArray(e))for(var u=0,c=e.length;u<c;u++)o.call(e,e[u],u)&&i.push.apply(i,v(t(e,[u].concat(v(a)))));else for(var f in e||{})o.call(e,e[f],f)&&i.push.apply(i,v(t(e,[f].concat(v(a)))));return i}var s=t(void 0!==e&&e[o],a);return s?s.map(function(t){return[o].concat(v(t))}):[[o]]}(t,e));try{for(o.s();!(n=o.n()).done;){var a=n.value;t=g(t,a,r?r(x(t,a)):void 0)}}catch(t){o.e(t)}finally{o.f()}return t}function a(){return(a=t(regeneratorRuntime.mark(function t(e,r,n){var o,a,i,u;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return s(r),t.next=3,h(e,r);case 3:o=t.sent,a=f(o),t.prev=5,a.s();case 7:if((i=a.n()).done){t.next=23;break}if(u=i.value,t.t0=g,t.t1=e,t.t2=u,n)return t.next=15,n(x(e,u));t.next=18;break;case 15:t.t3=t.sent,t.next=19;break;case 18:t.t3=void 0;case 19:t.t4=t.t3,e=(0,t.t0)(t.t1,t.t2,t.t4);case 21:t.next=7;break;case 23:t.next=28;break;case 25:t.prev=25,t.t5=t.catch(5),a.e(t.t5);case 28:return t.prev=28,a.f(),t.finish(28);case 31:return t.abrupt(\"return\",e);case 32:case\"end\":return t.stop()}},t,null,[[5,25,28,31]])}))).apply(this,arguments)}function s(t){if(!Array.isArray(t))throw new Error(\"path must be an array\")}r.updateInAsync=function(t,e,r){return a.apply(this,arguments)};var m=[\"__proto__\",\"constructor\",\"prototype\"];function h(){return i.apply(this,arguments)}function i(){return(i=t(regeneratorRuntime.mark(function t(e,r){var n,o,a,i,u,c,f,s;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r.length){t.next=2;break}return t.abrupt(\"return\");case 2:if(n=b(r),o=n[0],a=n.slice(1),\"function\"!=typeof o){t.next=43;break}if(i=[],!Array.isArray(e)){t.next=25;break}u=0,c=e.length;case 7:if(u<c)return t.next=10,o.call(e,e[u],u);t.next=23;break;case 10:if(t.t0=t.sent,t.t0)return t.t1=i.push,t.t2=i,t.t3=v,t.next=17,h(e,[u].concat(v(a)));t.next=20;break;case 17:t.t4=t.sent,t.t5=(0,t.t3)(t.t4),t.t1.apply.call(t.t1,t.t2,t.t5);case 20:u++,t.next=7;break;case 23:t.next=42;break;case 25:t.t6=regeneratorRuntime.keys(e||{});case 26:if((t.t7=t.t6()).done){t.next=42;break}return f=t.t7.value,t.next=30,o.call(e,e[f],f);case 30:if(t.t8=t.sent,t.t8)return t.t9=i.push,t.t10=i,t.t11=v,t.next=37,h(e,[f].concat(v(a)));t.next=40;break;case 37:t.t12=t.sent,t.t13=(0,t.t11)(t.t12),t.t9.apply.call(t.t9,t.t10,t.t13);case 40:t.next=26;break;case 42:return t.abrupt(\"return\",i);case 43:return t.next=45,h(void 0!==e&&e[o],a);case 45:return s=t.sent,t.abrupt(\"return\",s?s.map(function(t){return[o].concat(v(t))}):[[o]]);case 47:case\"end\":return t.stop()}},t)}))).apply(this,arguments)}function x(t,e){return e.reduce(function(t,e){return t&&t[e]},t)}function g(t,e,r){if(!e.length)return r;var n,o=b(e),a=o[0],i=o.slice(1),u=void 0!==t&&t[a],c=t;if(n=a,m.includes(n))return t;if(\"string\"!=typeof a||\"object\"===l(c)&&!Array.isArray(c)?\"number\"!=typeof a||Array.isArray(c)||(c=[]):c={},\"number\"==typeof a){var f=g(u,i,r);return void 0===f?void 0===t?t:(a in c&&(c=v(c)).splice(a,1),c):d(f,u)?t:((c=v(c))[a]=f,c)}var s=g(u,i,r);return void 0===s?void 0===t?t:(a in c&&delete(c=y({},c))[a],c):d(s,u)?t:y(y({},c),{},p({},a,s))}return r});\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 return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\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 if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\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 getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\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}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { IStyle } from './IStyle';\n\nexport const InjectionMode = {\n /**\n * Avoids style injection, use getRules() to read the styles.\n */\n none: 0 as 0,\n\n /**\n * Inserts rules using the insertRule api.\n */\n insertNode: 1 as 1,\n\n /**\n * Appends rules using appendChild.\n */\n appendChild: 2 as 2,\n};\n\nexport type InjectionMode = typeof InjectionMode[keyof typeof InjectionMode];\n\n/**\n * CSP settings for the stylesheet\n */\nexport interface ICSPSettings {\n /**\n * Nonce to inject into script tag\n */\n nonce?: string;\n}\n\n/**\n * Stylesheet config.\n *\n * @public\n */\nexport interface IStyleSheetConfig {\n /**\n * Injection mode for how rules are inserted.\n */\n injectionMode?: InjectionMode;\n\n /**\n * Default 'displayName' to use for a className.\n * @defaultvalue 'css'\n */\n defaultPrefix?: string;\n\n /**\n * Defines the default direction of rules for auto-rtlifying things.\n * While typically this is represented as a DIR attribute in the markup,\n * the DIR is not enough to control whether padding goes on the left or\n * right. Use this to set the default direction when rules are registered.\n */\n rtl?: boolean;\n\n /**\n * Default 'namespace' to attach before the className.\n */\n namespace?: string;\n\n /**\n * CSP settings\n */\n cspSettings?: ICSPSettings;\n\n /**\n * Callback executed when a rule is inserted.\n */\n onInsertRule?: (rule: string) => void;\n\n /**\n * Initial value for classnames cache. Key is serialized css rules associated with a classname.\n */\n classNameCache?: { [key: string]: string };\n}\n\nconst STYLESHEET_SETTING = '__stylesheet__';\n/**\n * MSIE 11 doesn't cascade styles based on DOM ordering, but rather on the order that each style node\n * is created. As such, to maintain consistent priority, IE11 should reuse a single style node.\n */\nconst REUSE_STYLE_NODE = typeof navigator !== 'undefined' && /rv:11.0/.test(navigator.userAgent);\n\nlet _global: { [key: string]: any } = {};\n\n// Grab window.\ntry {\n _global = window;\n} catch {\n /* leave as blank object */\n}\n\nlet _stylesheet: Stylesheet;\n\n/**\n * Represents the state of styles registered in the page. Abstracts\n * the surface for adding styles to the stylesheet, exposes helpers\n * for reading the styles registered in server rendered scenarios.\n *\n * @public\n */\nexport class Stylesheet {\n private _lastStyleElement?: HTMLStyleElement;\n private _styleElement?: HTMLStyleElement;\n private _rules: string[] = [];\n private _preservedRules: string[] = [];\n private _config: IStyleSheetConfig;\n private _rulesToInsert: string[] = [];\n private _counter = 0;\n private _keyToClassName: { [key: string]: string } = {};\n private _onResetCallbacks: (() => void)[] = [];\n\n private _classNameToArgs: { [key: string]: { args: any; rules: string[] } } = {};\n\n /**\n * Gets the singleton instance.\n */\n public static getInstance(): Stylesheet {\n _stylesheet = _global[STYLESHEET_SETTING] as Stylesheet;\n\n if (!_stylesheet || (_stylesheet._lastStyleElement && _stylesheet._lastStyleElement.ownerDocument !== document)) {\n const fabricConfig = _global?.FabricConfig || {};\n\n _stylesheet = _global[STYLESHEET_SETTING] = new Stylesheet(fabricConfig.mergeStyles);\n }\n\n return _stylesheet;\n }\n\n constructor(config?: IStyleSheetConfig) {\n this._config = {\n injectionMode: InjectionMode.insertNode,\n defaultPrefix: 'css',\n namespace: undefined,\n cspSettings: undefined,\n ...config,\n };\n\n this._keyToClassName = this._config.classNameCache || {};\n }\n\n /**\n * Configures the stylesheet.\n */\n public setConfig(config?: IStyleSheetConfig): void {\n this._config = {\n ...this._config,\n ...config,\n };\n }\n\n /**\n * Configures a reset callback.\n *\n * @param callback - A callback which will be called when the Stylesheet is reset.\n */\n public onReset(callback: () => void): void {\n this._onResetCallbacks.push(callback);\n }\n\n /**\n * Generates a unique classname.\n *\n * @param displayName - Optional value to use as a prefix.\n */\n public getClassName(displayName?: string): string {\n const { namespace } = this._config;\n const prefix = displayName || this._config.defaultPrefix;\n\n return `${namespace ? namespace + '-' : ''}${prefix}-${this._counter++}`;\n }\n\n /**\n * Used internally to cache information about a class which was\n * registered with the stylesheet.\n */\n public cacheClassName(className: string, key: string, args: IStyle[], rules: string[]): void {\n this._keyToClassName[key] = className;\n this._classNameToArgs[className] = {\n args,\n rules,\n };\n }\n\n /**\n * Gets the appropriate classname given a key which was previously\n * registered using cacheClassName.\n */\n public classNameFromKey(key: string): string | undefined {\n return this._keyToClassName[key];\n }\n\n /**\n * Gets all classnames cache with the stylesheet.\n */\n public getClassNameCache(): { [key: string]: string } {\n return this._keyToClassName;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public argsFromClassName(className: string): IStyle[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.args;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public insertedRulesFromClassName(className: string): string[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.rules;\n }\n\n /**\n * Inserts a css rule into the stylesheet.\n * @param preserve - Preserves the rule beyond a reset boundary.\n */\n public insertRule(rule: string, preserve?: boolean): void {\n const { injectionMode } = this._config;\n const element = injectionMode !== InjectionMode.none ? this._getStyleElement() : undefined;\n\n if (preserve) {\n this._preservedRules.push(rule);\n }\n\n if (element) {\n switch (this._config.injectionMode) {\n case InjectionMode.insertNode:\n const { sheet } = element!;\n\n try {\n (sheet as CSSStyleSheet).insertRule(rule, (sheet as CSSStyleSheet).cssRules.length);\n } catch (e) {\n // The browser will throw exceptions on unsupported rules (such as a moz prefix in webkit.)\n // We need to swallow the exceptions for this scenario, otherwise we'd need to filter\n // which could be slower and bulkier.\n }\n break;\n\n case InjectionMode.appendChild:\n element.appendChild(document.createTextNode(rule));\n break;\n }\n } else {\n this._rules.push(rule);\n }\n\n if (this._config.onInsertRule) {\n this._config.onInsertRule(rule);\n }\n }\n\n /**\n * Gets all rules registered with the stylesheet; only valid when\n * using InsertionMode.none.\n */\n public getRules(includePreservedRules?: boolean): string {\n return (\n (includePreservedRules ? this._preservedRules.join('') : '') + this._rules.join('') + this._rulesToInsert.join('')\n );\n }\n\n /**\n * Resets the internal state of the stylesheet. Only used in server\n * rendered scenarios where we're using InsertionMode.none.\n */\n public reset(): void {\n this._rules = [];\n this._rulesToInsert = [];\n this._counter = 0;\n this._classNameToArgs = {};\n this._keyToClassName = {};\n\n this._onResetCallbacks.forEach((callback: () => void) => callback());\n }\n\n // Forces the regeneration of incoming styles without totally resetting the stylesheet.\n public resetKeys(): void {\n this._keyToClassName = {};\n }\n\n private _getStyleElement(): HTMLStyleElement | undefined {\n if (!this._styleElement && typeof document !== 'undefined') {\n this._styleElement = this._createStyleElement();\n\n if (!REUSE_STYLE_NODE) {\n // Reset the style element on the next frame.\n window.requestAnimationFrame(() => {\n this._styleElement = undefined;\n });\n }\n }\n return this._styleElement;\n }\n\n private _createStyleElement(): HTMLStyleElement {\n const head: HTMLHeadElement = document.head;\n const styleElement = document.createElement('style');\n\n styleElement.setAttribute('data-merge-styles', 'true');\n\n const { cspSettings } = this._config;\n if (cspSettings) {\n if (cspSettings.nonce) {\n styleElement.setAttribute('nonce', cspSettings.nonce);\n }\n }\n if (this._lastStyleElement) {\n // If the `nextElementSibling` is null, then the insertBefore will act as a regular append.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore#Syntax\n head!.insertBefore(styleElement, this._lastStyleElement.nextElementSibling);\n } else {\n const placeholderStyleTag: Element | null = this._findPlaceholderStyleTag();\n\n if (placeholderStyleTag) {\n head!.insertBefore(styleElement, placeholderStyleTag.nextElementSibling);\n } else {\n head!.insertBefore(styleElement, head.childNodes[0]);\n }\n }\n this._lastStyleElement = styleElement;\n\n return styleElement;\n }\n\n private _findPlaceholderStyleTag(): Element | null {\n const head: HTMLHeadElement = document.head;\n if (head) {\n return head.querySelector('style[data-merge-styles]');\n }\n return null;\n }\n}\n","import { IStyleOptions } from './IStyleOptions';\n\n/**\n * Sets the current RTL value.\n */\nexport function setRTL(isRTL: boolean): void {\n if (_rtl !== isRTL) {\n _rtl = isRTL;\n }\n}\n\n/**\n * Gets the current RTL value.\n */\nexport function getRTL(): boolean {\n if (_rtl === undefined) {\n _rtl =\n typeof document !== 'undefined' &&\n !!document.documentElement &&\n document.documentElement.getAttribute('dir') === 'rtl';\n }\n return _rtl;\n}\n\n// This has been split into 2 lines because it was working in Fabric due to the code being transpiled to es5, so this\n// was converted to var while not working in Fluent that uses babel to transpile the code to be es6-like. Splitting the\n// logic into two lines, however, allows it to work in both scenarios.\nlet _rtl: boolean;\n_rtl = getRTL();\n\nexport function getStyleOptions(): IStyleOptions {\n return {\n rtl: getRTL(),\n };\n}\n","import { IStyle, IStyleBaseArray } from './IStyle';\nimport { Stylesheet } from './Stylesheet';\n\n/**\n * Separates the classes and style objects. Any classes that are pre-registered\n * args are auto expanded into objects.\n */\nexport function extractStyleParts(\n ...args: (IStyle | IStyle[] | false | null | undefined)[]\n): { classes: string[]; objects: IStyleBaseArray } {\n const classes: string[] = [];\n const objects: {}[] = [];\n const stylesheet = Stylesheet.getInstance();\n\n function _processArgs(argsList: (IStyle | IStyle[])[]): void {\n for (const arg of argsList) {\n if (arg) {\n if (typeof arg === 'string') {\n if (arg.indexOf(' ') >= 0) {\n _processArgs(arg.split(' '));\n } else {\n const translatedArgs = stylesheet.argsFromClassName(arg);\n\n if (translatedArgs) {\n _processArgs(translatedArgs);\n } else {\n // Avoid adding the same class twice.\n if (classes.indexOf(arg) === -1) {\n classes.push(arg);\n }\n }\n }\n } else if (Array.isArray(arg)) {\n _processArgs(arg);\n } else if (typeof arg === 'object') {\n objects.push(arg);\n }\n }\n }\n }\n\n _processArgs(args);\n\n return {\n classes,\n objects,\n };\n}\n","const rules: { [key: string]: string } = {};\n\nexport function kebabRules(rulePairs: (string | number)[], index: number): void {\n const rule: string = rulePairs[index] as string;\n\n if (rule.charAt(0) !== '-') {\n rulePairs[index] = rules[rule] = rules[rule] || rule.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n}\n","export interface IVendorSettings {\n isWebkit?: boolean;\n isMoz?: boolean;\n isMs?: boolean;\n isOpera?: boolean;\n}\n\nlet _vendorSettings: IVendorSettings | undefined;\n\nexport function getVendorSettings(): IVendorSettings {\n if (!_vendorSettings) {\n const doc = typeof document !== 'undefined' ? document : undefined;\n const nav = typeof navigator !== 'undefined' ? navigator : undefined;\n const userAgent = nav ? nav.userAgent.toLowerCase() : undefined;\n\n if (!doc) {\n _vendorSettings = {\n isWebkit: true,\n isMoz: true,\n isOpera: true,\n isMs: true,\n };\n } else {\n _vendorSettings = {\n isWebkit: !!(doc && 'WebkitAppearance' in doc.documentElement.style),\n isMoz: !!(userAgent && userAgent.indexOf('firefox') > -1),\n isOpera: !!(userAgent && userAgent.indexOf('opera') > -1),\n isMs: !!(nav && (/rv:11.0/i.test(nav.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent))),\n };\n }\n }\n\n return _vendorSettings;\n}\n\n/**\n * Sets the vendor settings for prefixing and vendor specific operations.\n */\nexport function setVendorSettings(vendorSettings?: IVendorSettings): void {\n _vendorSettings = vendorSettings;\n}\n","import { getVendorSettings } from '../getVendorSettings';\n\nconst autoPrefixNames: { [key: string]: number } = {\n 'user-select': 1,\n};\n\nexport function prefixRules(rulePairs: (string | number)[], index: number): void {\n const vendorSettings = getVendorSettings();\n\n const name = rulePairs[index];\n\n if (autoPrefixNames[name]) {\n const value = rulePairs[index + 1];\n\n if (autoPrefixNames[name]) {\n if (vendorSettings.isWebkit) {\n rulePairs.push('-webkit-' + name, value);\n }\n if (vendorSettings.isMoz) {\n rulePairs.push('-moz-' + name, value);\n }\n if (vendorSettings.isMs) {\n rulePairs.push('-ms-' + name, value);\n }\n if (vendorSettings.isOpera) {\n rulePairs.push('-o-' + name, value);\n }\n }\n }\n}\n","const NON_PIXEL_NUMBER_PROPS = [\n 'column-count',\n 'font-weight',\n 'flex',\n 'flex-grow',\n 'flex-shrink',\n 'fill-opacity',\n 'opacity',\n 'order',\n 'z-index',\n 'zoom',\n];\n\nexport function provideUnits(rulePairs: (string | number)[], index: number): void {\n const name = rulePairs[index] as string;\n const value = rulePairs[index + 1];\n\n if (typeof value === 'number') {\n const isNonPixelProp = NON_PIXEL_NUMBER_PROPS.indexOf(name as string) > -1;\n const isVariableOrPrefixed = name.indexOf('--') > -1;\n const unit = isNonPixelProp || isVariableOrPrefixed ? '' : 'px';\n\n rulePairs[index + 1] = `${value}${unit}`;\n }\n}\n","import { IStyleOptions } from '../IStyleOptions';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst NO_FLIP = '@noflip';\nconst NAME_REPLACEMENTS: { [key: string]: string } = {\n [LEFT]: RIGHT,\n [RIGHT]: LEFT,\n};\nconst VALUE_REPLACEMENTS: { [key: string]: string } = {\n 'w-resize': 'e-resize',\n 'sw-resize': 'se-resize',\n 'nw-resize': 'ne-resize',\n};\n\n/**\n * RTLifies the rulePair in the array at the current index. This mutates the array for performance\n * reasons.\n */\nexport function rtlifyRules(options: IStyleOptions, rulePairs: (string | number)[], index: number): void {\n if (options.rtl) {\n const name = rulePairs[index] as string;\n\n if (!name) {\n return;\n }\n\n const value = rulePairs[index + 1] as string;\n\n if (typeof value === 'string' && value.indexOf(NO_FLIP) >= 0) {\n rulePairs[index + 1] = value.replace(/\\s*(?:\\/\\*\\s*)?\\@noflip\\b(?:\\s*\\*\\/)?\\s*?/g, '');\n } else if (name.indexOf(LEFT) >= 0) {\n rulePairs[index] = name.replace(LEFT, RIGHT);\n } else if (name.indexOf(RIGHT) >= 0) {\n rulePairs[index] = name.replace(RIGHT, LEFT);\n } else if (String(value).indexOf(LEFT) >= 0) {\n rulePairs[index + 1] = value.replace(LEFT, RIGHT);\n } else if (String(value).indexOf(RIGHT) >= 0) {\n rulePairs[index + 1] = value.replace(RIGHT, LEFT);\n } else if (NAME_REPLACEMENTS[name]) {\n rulePairs[index] = NAME_REPLACEMENTS[name];\n } else if (VALUE_REPLACEMENTS[value]) {\n rulePairs[index + 1] = VALUE_REPLACEMENTS[value];\n } else {\n switch (name) {\n case 'margin':\n case 'padding':\n rulePairs[index + 1] = flipQuad(value);\n break;\n case 'box-shadow':\n rulePairs[index + 1] = negateNum(value, 0);\n break;\n }\n }\n }\n}\n\n/**\n * Given a string value in a space delimited format (e.g. \"1 2 3 4\"), negates a particular value.\n */\nfunction negateNum(value: string, partIndex: number): string {\n const parts = value.split(' ');\n const numberVal = parseInt(parts[partIndex], 10);\n\n parts[0] = parts[0].replace(String(numberVal), String(numberVal * -1));\n\n return parts.join(' ');\n}\n\n/**\n * Given a string quad, flips the left and right values.\n */\nfunction flipQuad(value: string): string {\n if (typeof value === 'string') {\n const parts = value.split(' ');\n\n if (parts.length === 4) {\n return `${parts[0]} ${parts[3]} ${parts[2]} ${parts[1]}`;\n }\n }\n\n return value;\n}\n","import { IStyle } from './IStyle';\nimport { IRawStyle } from './IRawStyle';\n\nimport { Stylesheet } from './Stylesheet';\nimport { kebabRules } from './transforms/kebabRules';\nimport { prefixRules } from './transforms/prefixRules';\nimport { provideUnits } from './transforms/provideUnits';\nimport { rtlifyRules } from './transforms/rtlifyRules';\nimport { IStyleOptions } from './IStyleOptions';\n\nconst DISPLAY_NAME = 'displayName';\n\ntype IDictionary = { [key: string]: any };\n\ninterface IRuleSet {\n __order: string[];\n [key: string]: IDictionary;\n}\n\nfunction getDisplayName(rules?: { [key: string]: IRawStyle }): string | undefined {\n const rootStyle: IStyle = rules && rules['&'];\n\n return rootStyle ? (rootStyle as IRawStyle).displayName : undefined;\n}\n\nconst globalSelectorRegExp = /\\:global\\((.+?)\\)/g;\n\ntype ReplacementInfo = [number, number, string];\n\n/**\n * Finds comma separated selectors in a :global() e.g. \":global(.class1, .class2, .class3)\"\n * and wraps them each in their own global \":global(.class1), :global(.class2), :global(.class3)\"\n *\n * @param selectorWithGlobals The selector to process\n * @returns The updated selector\n */\nfunction expandCommaSeparatedGlobals(selectorWithGlobals: string): string {\n // We the selector does not have a :global() we can shortcut\n if (!globalSelectorRegExp.test(selectorWithGlobals)) {\n return selectorWithGlobals;\n }\n\n const replacementInfo: ReplacementInfo[] = [];\n\n const findGlobal = /\\:global\\((.+?)\\)/g;\n let match = null;\n // Create a result list for global selectors so we can replace them.\n while ((match = findGlobal.exec(selectorWithGlobals))) {\n // Only if the found selector is a comma separated list we'll process it.\n if (match[1].indexOf(',') > -1) {\n replacementInfo.push([\n match.index,\n match.index + match[0].length,\n // Wrap each of the found selectors in :global()\n match[1]\n .split(',')\n .map((v: string) => `:global(${v.trim()})`)\n .join(', '),\n ]);\n }\n }\n\n // Replace the found selectors with their wrapped variants in reverse order\n return replacementInfo\n .reverse()\n .reduce((selector: string, [matchIndex, matchEndIndex, replacement]: ReplacementInfo) => {\n const prefix = selector.slice(0, matchIndex);\n const suffix = selector.slice(matchEndIndex);\n\n return prefix + replacement + suffix;\n }, selectorWithGlobals);\n}\n\nfunction expandSelector(newSelector: string, currentSelector: string): string {\n if (newSelector.indexOf(':global(') >= 0) {\n return newSelector.replace(globalSelectorRegExp, '$1');\n } else if (newSelector.indexOf(':') === 0) {\n return currentSelector + newSelector;\n } else if (newSelector.indexOf('&') < 0) {\n return currentSelector + ' ' + newSelector;\n }\n\n return newSelector;\n}\n\nfunction extractSelector(currentSelector: string, rules: IRuleSet = { __order: [] }, selector: string, value: IStyle) {\n if (selector.indexOf('@') === 0) {\n selector = selector + '{' + currentSelector;\n extractRules([value], rules, selector);\n } else if (selector.indexOf(',') > -1) {\n expandCommaSeparatedGlobals(selector)\n .split(',')\n .map((s: string) => s.trim())\n .forEach((separatedSelector: string) =>\n extractRules([value], rules, expandSelector(separatedSelector, currentSelector)),\n );\n } else {\n extractRules([value], rules, expandSelector(selector, currentSelector));\n }\n}\n\nfunction extractRules(args: IStyle[], rules: IRuleSet = { __order: [] }, currentSelector: string = '&'): IRuleSet {\n const stylesheet = Stylesheet.getInstance();\n let currentRules: IDictionary | undefined = rules[currentSelector] as IDictionary;\n\n if (!currentRules) {\n currentRules = {};\n rules[currentSelector] = currentRules;\n rules.__order.push(currentSelector);\n }\n\n for (const arg of args) {\n // If the arg is a string, we need to look up the class map and merge.\n if (typeof arg === 'string') {\n const expandedRules = stylesheet.argsFromClassName(arg);\n\n if (expandedRules) {\n extractRules(expandedRules, rules, currentSelector);\n }\n // Else if the arg is an array, we need to recurse in.\n } else if (Array.isArray(arg)) {\n extractRules(arg, rules, currentSelector);\n } else {\n for (const prop in arg as any) {\n if ((arg as any).hasOwnProperty(prop)) {\n const propValue = (arg as any)[prop];\n\n if (prop === 'selectors') {\n // every child is a selector.\n const selectors: { [key: string]: IStyle } = (arg as any).selectors;\n\n for (const newSelector in selectors) {\n if (selectors.hasOwnProperty(newSelector)) {\n extractSelector(currentSelector, rules, newSelector, selectors[newSelector]);\n }\n }\n } else if (typeof propValue === 'object') {\n // prop is a selector.\n if (propValue !== null) {\n extractSelector(currentSelector, rules, prop, propValue);\n }\n } else {\n if (propValue !== undefined) {\n // Else, add the rule to the currentSelector.\n if (prop === 'margin' || prop === 'padding') {\n expandQuads(currentRules, prop, propValue);\n } else {\n (currentRules as any)[prop] = propValue;\n }\n }\n }\n }\n }\n }\n }\n\n return rules;\n}\n\nfunction expandQuads(currentRules: IDictionary, name: string, value: string): void {\n const parts = typeof value === 'string' ? value.split(' ') : [value];\n\n currentRules[name + 'Top'] = parts[0];\n currentRules[name + 'Right'] = parts[1] || parts[0];\n currentRules[name + 'Bottom'] = parts[2] || parts[0];\n currentRules[name + 'Left'] = parts[3] || parts[1] || parts[0];\n}\n\nfunction getKeyForRules(options: IStyleOptions, rules: IRuleSet): string | undefined {\n const serialized: string[] = [options.rtl ? 'rtl' : 'ltr'];\n let hasProps = false;\n\n for (const selector of rules.__order) {\n serialized.push(selector);\n const rulesForSelector = rules[selector];\n\n for (const propName in rulesForSelector) {\n if (rulesForSelector.hasOwnProperty(propName) && rulesForSelector[propName] !== undefined) {\n hasProps = true;\n serialized.push(propName, rulesForSelector[propName]);\n }\n }\n }\n\n return hasProps ? serialized.join('') : undefined;\n}\n\nfunction repeatString(target: string, count: number): string {\n if (count <= 0) {\n return '';\n }\n\n if (count === 1) {\n return target;\n }\n\n return target + repeatString(target, count - 1);\n}\n\nexport function serializeRuleEntries(options: IStyleOptions, ruleEntries: { [key: string]: string | number }): string {\n if (!ruleEntries) {\n return '';\n }\n\n const allEntries: (string | number)[] = [];\n\n for (const entry in ruleEntries) {\n if (ruleEntries.hasOwnProperty(entry) && entry !== DISPLAY_NAME && ruleEntries[entry] !== undefined) {\n allEntries.push(entry, ruleEntries[entry]);\n }\n }\n\n // Apply transforms.\n for (let i = 0; i < allEntries.length; i += 2) {\n kebabRules(allEntries, i);\n provideUnits(allEntries, i);\n rtlifyRules(options, allEntries, i);\n prefixRules(allEntries, i);\n }\n\n // Apply punctuation.\n for (let i = 1; i < allEntries.length; i += 4) {\n allEntries.splice(i, 1, ':', allEntries[i], ';');\n }\n\n return allEntries.join('');\n}\n\nexport interface IRegistration {\n className: string;\n key: string;\n args: IStyle[];\n rulesToInsert: string[];\n}\n\nexport function styleToRegistration(options: IStyleOptions, ...args: IStyle[]): IRegistration | undefined {\n const rules: IRuleSet = extractRules(args);\n const key = getKeyForRules(options, rules);\n\n if (key) {\n const stylesheet = Stylesheet.getInstance();\n const registration: Partial<IRegistration> = {\n className: stylesheet.classNameFromKey(key),\n key,\n args,\n };\n\n if (!registration.className) {\n registration.className = stylesheet.getClassName(getDisplayName(rules));\n const rulesToInsert: string[] = [];\n\n for (const selector of rules.__order) {\n rulesToInsert.push(selector, serializeRuleEntries(options, rules[selector]));\n }\n registration.rulesToInsert = rulesToInsert;\n }\n\n return registration as IRegistration;\n }\n\n return undefined;\n}\n\n/**\n * Insert style to stylesheet.\n * @param registration Style registration.\n * @param specificityMultiplier Number of times classname selector is repeated in the css rule.\n * This is to increase css specificity in case it's needed. Default to 1.\n */\nexport function applyRegistration(registration: IRegistration, specificityMultiplier: number = 1): void {\n const stylesheet = Stylesheet.getInstance();\n const { className, key, args, rulesToInsert } = registration;\n\n if (rulesToInsert) {\n // rulesToInsert is an ordered array of selector/rule pairs.\n for (let i = 0; i < rulesToInsert.length; i += 2) {\n const rules = rulesToInsert[i + 1];\n if (rules) {\n let selector = rulesToInsert[i];\n selector = selector.replace(/&/g, repeatString(`.${registration.className}`, specificityMultiplier));\n\n // Insert. Note if a media query, we must close the query with a final bracket.\n const processedRule = `${selector}{${rules}}${selector.indexOf('@') === 0 ? '}' : ''}`;\n stylesheet.insertRule(processedRule);\n }\n }\n stylesheet.cacheClassName(className!, key!, args!, rulesToInsert);\n }\n}\n\nexport function styleToClassName(options: IStyleOptions, ...args: IStyle[]): string {\n const registration = styleToRegistration(options, ...args);\n if (registration) {\n applyRegistration(registration, options.specificityMultiplier);\n\n return registration.className;\n }\n\n return '';\n}\n","import { extractStyleParts } from './extractStyleParts';\nimport { IStyle, IStyleBaseArray } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { styleToClassName } from './styleToClassName';\n\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function mergeStyles(...args: (IStyle | IStyleBaseArray | false | null | undefined)[]): string {\n return mergeCss(args, getStyleOptions());\n}\n\n/**\n * Concatenation helper, which can merge class names together. Skips over falsey values.\n * Accepts a set of options that will be used when calculating styles.\n *\n * @public\n */\nexport function mergeCss(\n args: (IStyle | IStyleBaseArray | false | null | undefined) | (IStyle | IStyleBaseArray | false | null | undefined)[],\n options?: IStyleOptions,\n): string {\n const styleArgs = args instanceof Array ? args : [args];\n const { classes, objects } = extractStyleParts(styleArgs);\n\n if (objects.length) {\n classes.push(styleToClassName(options || {}, objects));\n }\n\n return classes.join(' ');\n}\n","import { IKeyframes } from './IKeyframes';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers keyframe definitions.\n *\n * @public\n */\nexport function keyframes(timeline: IKeyframes): string {\n const stylesheet = Stylesheet.getInstance();\n const name = stylesheet.getClassName();\n\n const rulesArray: string[] = [];\n\n for (const prop in timeline) {\n if (timeline.hasOwnProperty(prop)) {\n rulesArray.push(prop, '{', serializeRuleEntries(getStyleOptions(), timeline[prop]), '}');\n }\n }\n const rules = rulesArray.join('');\n\n stylesheet.insertRule(`@keyframes ${name}{${rules}}`, true);\n\n stylesheet.cacheClassName(name, rules, [], ['keyframes', rules]);\n\n return name;\n}\n","import { IAnimationStyles, IAnimationVariables } from '../types/IAnimationStyles';\nimport { IRawStyle, keyframes } from '@uifabric/merge-styles';\n\n/* Register the keyframes */\n\nconst EASING_FUNCTION_1 = 'cubic-bezier(.1,.9,.2,1)';\nconst EASING_FUNCTION_2 = 'cubic-bezier(.1,.25,.75,.9)';\nconst DURATION_1 = '0.167s';\nconst DURATION_2 = '0.267s';\nconst DURATION_3 = '0.367s';\nconst DURATION_4 = '0.467s';\n\nconst FADE_IN: string = keyframes({\n from: { opacity: 0 },\n to: { opacity: 1 },\n});\n\nconst FADE_OUT: string = keyframes({\n from: { opacity: 1 },\n to: { opacity: 0, visibility: 'hidden' },\n});\n\nconst SLIDE_RIGHT_IN10: string = _createSlideInX(-10);\nconst SLIDE_RIGHT_IN20: string = _createSlideInX(-20);\nconst SLIDE_RIGHT_IN40: string = _createSlideInX(-40);\nconst SLIDE_RIGHT_IN400: string = _createSlideInX(-400);\nconst SLIDE_LEFT_IN10: string = _createSlideInX(10);\nconst SLIDE_LEFT_IN20: string = _createSlideInX(20);\nconst SLIDE_LEFT_IN40: string = _createSlideInX(40);\nconst SLIDE_LEFT_IN400: string = _createSlideInX(400);\nconst SLIDE_UP_IN10: string = _createSlideInY(10);\nconst SLIDE_UP_IN20: string = _createSlideInY(20);\nconst SLIDE_DOWN_IN10: string = _createSlideInY(-10);\nconst SLIDE_DOWN_IN20: string = _createSlideInY(-20);\n\nconst SLIDE_RIGHT_OUT10: string = _createSlideOutX(10);\nconst SLIDE_RIGHT_OUT20: string = _createSlideOutX(20);\nconst SLIDE_RIGHT_OUT40: string = _createSlideOutX(40);\nconst SLIDE_RIGHT_OUT400: string = _createSlideOutX(400);\nconst SLIDE_LEFT_OUT10: string = _createSlideOutX(-10);\nconst SLIDE_LEFT_OUT20: string = _createSlideOutX(-20);\nconst SLIDE_LEFT_OUT40: string = _createSlideOutX(-40);\nconst SLIDE_LEFT_OUT400: string = _createSlideOutX(-400);\nconst SLIDE_UP_OUT10: string = _createSlideOutY(-10);\nconst SLIDE_UP_OUT20: string = _createSlideOutY(-20);\nconst SLIDE_DOWN_OUT10: string = _createSlideOutY(10);\nconst SLIDE_DOWN_OUT20: string = _createSlideOutY(20);\n\nconst SCALE_UP100: string = keyframes({\n from: { transform: 'scale3d(.98,.98,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\n\nconst SCALE_DOWN98: string = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(.98,.98,1)' },\n});\n\nconst SCALE_DOWN100: string = keyframes({\n from: { transform: 'scale3d(1.03,1.03,1)' },\n to: { transform: 'scale3d(1,1,1)' },\n});\n\nconst SCALE_UP103: string = keyframes({\n from: { transform: 'scale3d(1,1,1)' },\n to: { transform: 'scale3d(1.03,1.03,1)' },\n});\n\nconst ROTATE90: string = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(90deg)' },\n});\n\nconst ROTATE_N90: string = keyframes({\n from: { transform: 'rotateZ(0deg)' },\n to: { transform: 'rotateZ(-90deg)' },\n});\n\n/**\n * Exporting raw duraction values and easing functions to be used in custom animations\n */\nexport const AnimationVariables: IAnimationVariables = {\n easeFunction1: EASING_FUNCTION_1,\n easeFunction2: EASING_FUNCTION_2,\n durationValue1: DURATION_1,\n durationValue2: DURATION_2,\n durationValue3: DURATION_3,\n durationValue4: DURATION_4,\n};\n\n/**\n * All Fabric standard animations, exposed as json objects referencing predefined\n * keyframes. These objects can be mixed in with other class definitions.\n */\nexport const AnimationStyles: IAnimationStyles = {\n slideRightIn10: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn20: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn40: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN40}`, DURATION_3, EASING_FUNCTION_1),\n slideRightIn400: _createAnimation(`${FADE_IN},${SLIDE_RIGHT_IN400}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn10: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn20: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn40: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN40}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftIn400: _createAnimation(`${FADE_IN},${SLIDE_LEFT_IN400}`, DURATION_3, EASING_FUNCTION_1),\n slideUpIn10: _createAnimation(`${FADE_IN},${SLIDE_UP_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideUpIn20: _createAnimation(`${FADE_IN},${SLIDE_UP_IN20}`, DURATION_3, EASING_FUNCTION_1),\n slideDownIn10: _createAnimation(`${FADE_IN},${SLIDE_DOWN_IN10}`, DURATION_3, EASING_FUNCTION_1),\n slideDownIn20: _createAnimation(`${FADE_IN},${SLIDE_DOWN_IN20}`, DURATION_3, EASING_FUNCTION_1),\n\n slideRightOut10: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut20: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut40: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT40}`, DURATION_3, EASING_FUNCTION_1),\n slideRightOut400: _createAnimation(`${FADE_OUT},${SLIDE_RIGHT_OUT400}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut10: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut20: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut40: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT40}`, DURATION_3, EASING_FUNCTION_1),\n slideLeftOut400: _createAnimation(`${FADE_OUT},${SLIDE_LEFT_OUT400}`, DURATION_3, EASING_FUNCTION_1),\n slideUpOut10: _createAnimation(`${FADE_OUT},${SLIDE_UP_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideUpOut20: _createAnimation(`${FADE_OUT},${SLIDE_UP_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n slideDownOut10: _createAnimation(`${FADE_OUT},${SLIDE_DOWN_OUT10}`, DURATION_3, EASING_FUNCTION_1),\n slideDownOut20: _createAnimation(`${FADE_OUT},${SLIDE_DOWN_OUT20}`, DURATION_3, EASING_FUNCTION_1),\n\n scaleUpIn100: _createAnimation(`${FADE_IN},${SCALE_UP100}`, DURATION_3, EASING_FUNCTION_1),\n scaleDownIn100: _createAnimation(`${FADE_IN},${SCALE_DOWN100}`, DURATION_3, EASING_FUNCTION_1),\n scaleUpOut103: _createAnimation(`${FADE_OUT},${SCALE_UP103}`, DURATION_1, EASING_FUNCTION_2),\n scaleDownOut98: _createAnimation(`${FADE_OUT},${SCALE_DOWN98}`, DURATION_1, EASING_FUNCTION_2),\n\n fadeIn100: _createAnimation(FADE_IN, DURATION_1, EASING_FUNCTION_2),\n fadeIn200: _createAnimation(FADE_IN, DURATION_2, EASING_FUNCTION_2),\n fadeIn400: _createAnimation(FADE_IN, DURATION_3, EASING_FUNCTION_2),\n fadeIn500: _createAnimation(FADE_IN, DURATION_4, EASING_FUNCTION_2),\n\n fadeOut100: _createAnimation(FADE_OUT, DURATION_1, EASING_FUNCTION_2),\n fadeOut200: _createAnimation(FADE_OUT, DURATION_2, EASING_FUNCTION_2),\n fadeOut400: _createAnimation(FADE_OUT, DURATION_3, EASING_FUNCTION_2),\n fadeOut500: _createAnimation(FADE_OUT, DURATION_4, EASING_FUNCTION_2),\n\n rotate90deg: _createAnimation(ROTATE90, '0.1s', EASING_FUNCTION_2),\n rotateN90deg: _createAnimation(ROTATE_N90, '0.1s', EASING_FUNCTION_2),\n\n // expandCollapse 100/200/400, delay 100/200\n};\n\nfunction _createAnimation(\n animationName: string,\n animationDuration: string,\n animationTimingFunction: string,\n): IRawStyle {\n return {\n animationName,\n animationDuration,\n animationTimingFunction,\n animationFillMode: 'both',\n };\n}\n\nfunction _createSlideInX(fromX: number): string {\n return keyframes({\n from: { transform: `translate3d(${fromX}px,0,0)`, pointerEvents: 'none' },\n to: { transform: `translate3d(0,0,0)`, pointerEvents: 'auto' },\n });\n}\n\nfunction _createSlideInY(fromY: number): string {\n return keyframes({\n from: { transform: `translate3d(0,${fromY}px,0)`, pointerEvents: 'none' },\n to: { transform: `translate3d(0,0,0)`, pointerEvents: 'auto' },\n });\n}\n\nfunction _createSlideOutX(toX: number): string {\n return keyframes({\n from: { transform: `translate3d(0,0,0)` },\n to: { transform: `translate3d(${toX}px,0,0)` },\n });\n}\n\nfunction _createSlideOutY(toY: number): string {\n return keyframes({\n from: { transform: `translate3d(0,0,0)` },\n to: { transform: `translate3d(0,${toY}px,0)` },\n });\n}\n","import { buildClassMap } from '../utilities/index';\nimport { AnimationStyles } from '../styles/index';\nimport { IAnimationStyles } from '../interfaces/index';\n\n/**\n * {@docCategory AnimationClassNames}\n */\nexport const AnimationClassNames: { [key in keyof IAnimationStyles]?: string } = buildClassMap(AnimationStyles);\n","import { IFontWeight } from '@uifabric/merge-styles';\n\n// Font face names to be registered.\nexport namespace LocalizedFontNames {\n export const Arabic = 'Segoe UI Web (Arabic)';\n export const Cyrillic = 'Segoe UI Web (Cyrillic)';\n export const EastEuropean = 'Segoe UI Web (East European)';\n export const Greek = 'Segoe UI Web (Greek)';\n export const Hebrew = 'Segoe UI Web (Hebrew)';\n export const Thai = 'Leelawadee UI Web';\n export const Vietnamese = 'Segoe UI Web (Vietnamese)';\n export const WestEuropean = 'Segoe UI Web (West European)';\n export const Selawik = 'Selawik Web';\n export const Armenian = 'Segoe UI Web (Armenian)';\n export const Georgian = 'Segoe UI Web (Georgian)';\n}\n\n// Font families with fallbacks, for the general regions.\nexport namespace LocalizedFontFamilies {\n export const Arabic = `'${LocalizedFontNames.Arabic}'`;\n export const ChineseSimplified = `'Microsoft Yahei UI', Verdana, Simsun`;\n export const ChineseTraditional = `'Microsoft Jhenghei UI', Pmingliu`;\n export const Cyrillic = `'${LocalizedFontNames.Cyrillic}'`;\n export const EastEuropean = `'${LocalizedFontNames.EastEuropean}'`;\n export const Greek = `'${LocalizedFontNames.Greek}'`;\n export const Hebrew = `'${LocalizedFontNames.Hebrew}'`;\n export const Hindi = `'Nirmala UI'`;\n export const Japanese = `'Yu Gothic UI', 'Meiryo UI', Meiryo, 'MS Pgothic', Osaka`;\n export const Korean = `'Malgun Gothic', Gulim`;\n export const Selawik = `'${LocalizedFontNames.Selawik}'`;\n export const Thai = `'Leelawadee UI Web', 'Kmer UI'`;\n export const Vietnamese = `'${LocalizedFontNames.Vietnamese}'`;\n export const WestEuropean = `'${LocalizedFontNames.WestEuropean}'`;\n export const Armenian = `'${LocalizedFontNames.Armenian}'`;\n export const Georgian = `'${LocalizedFontNames.Georgian}'`;\n}\n\n// Standard font sizes.\nexport namespace FontSizes {\n export const size10 = '10px';\n export const size12 = '12px';\n export const size14 = '14px';\n export const size16 = '16px';\n export const size18 = '18px';\n export const size20 = '20px';\n export const size24 = '24px';\n export const size28 = '28px';\n export const size32 = '32px';\n export const size42 = '42px';\n export const size68 = '68px';\n\n export const mini: string = '10px';\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const smallPlus: string = '12px';\n export const medium: string = '14px';\n export const mediumPlus: string = '16px';\n export const icon: string = '16px';\n export const large: string = '18px';\n export const xLarge: string = '20px';\n export const xLargePlus: string = '24px';\n export const xxLarge: string = '28px';\n export const xxLargePlus: string = '32px';\n export const superLarge: string = '42px';\n export const mega: string = '68px';\n}\n\n// Standard font weights.\nexport namespace FontWeights {\n export const light: IFontWeight = 100;\n export const semilight: IFontWeight = 300;\n export const regular: IFontWeight = 400;\n export const semibold: IFontWeight = 600;\n export const bold: IFontWeight = 700;\n}\n\n// Standard Icon Sizes.\nexport namespace IconFontSizes {\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const medium: string = '16px';\n export const large: string = '20px';\n}\n","import { mergeStyles } from '../MergeStyles';\n\n/**\n * Builds a class names object from a given map.\n *\n * @param styles - Map of unprocessed styles.\n * @returns Map of property name to class name.\n */\nexport function buildClassMap<T extends Object>(styles: T): { [key in keyof T]?: string } {\n let classes: { [key in keyof T]?: string } = {};\n\n for (let styleName in styles) {\n if (styles.hasOwnProperty(styleName)) {\n let className: string;\n\n Object.defineProperty(classes, styleName, {\n get: (): string => {\n if (className === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n className = mergeStyles(styles[styleName] as any).toString();\n }\n return className;\n },\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n return classes;\n}\n","import { IRawStyle } from '../MergeStyles';\n\nexport const HighContrastSelector = '@media screen and (-ms-high-contrast: active), (forced-colors: active)';\nexport const HighContrastSelectorWhite =\n '@media screen and (-ms-high-contrast: black-on-white), (forced-colors: black-on-white)';\nexport const HighContrastSelectorBlack =\n '@media screen and (-ms-high-contrast: white-on-black), (forced-colors: white-on-black)';\nexport const EdgeChromiumHighContrastSelector = '@media screen and (forced-colors: active)';\n\nexport const ScreenWidthMinSmall = 320;\nexport const ScreenWidthMinMedium = 480;\nexport const ScreenWidthMinLarge = 640;\nexport const ScreenWidthMinXLarge = 1024;\nexport const ScreenWidthMinXXLarge = 1366;\nexport const ScreenWidthMinXXXLarge = 1920;\nexport const ScreenWidthMaxSmall = ScreenWidthMinMedium - 1;\nexport const ScreenWidthMaxMedium = ScreenWidthMinLarge - 1;\nexport const ScreenWidthMaxLarge = ScreenWidthMinXLarge - 1;\nexport const ScreenWidthMaxXLarge = ScreenWidthMinXXLarge - 1;\nexport const ScreenWidthMaxXXLarge = ScreenWidthMinXXXLarge - 1;\n\nexport const ScreenWidthMinUhfMobile = 768;\n\nexport function getScreenSelector(min: number | undefined, max: number | undefined): string {\n const minSelector = typeof min === 'number' ? ` and (min-width: ${min}px)` : '';\n const maxSelector = typeof max === 'number' ? ` and (max-width: ${max}px)` : '';\n return `@media only screen${minSelector}${maxSelector}`;\n}\n\n/**\n * The style which turns off high contrast adjustment in browsers.\n */\nexport function getHighContrastNoAdjustStyle(): IRawStyle {\n return {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n };\n}\n\n/**\n * The style which turns off high contrast adjustment in (only) Edge Chromium browser.\n * @deprecated Use `getHighContrastNoAdjustStyle`\n */\nexport function getEdgeChromiumNoHighContrastAdjustSelector(): { [EdgeChromiumHighContrastSelector]: IRawStyle } {\n return {\n [EdgeChromiumHighContrastSelector]: {\n forcedColorAdjust: 'none',\n },\n };\n}\n","export let _isSSR = false;\n\n/**\n * Helper to set ssr mode to simulate no window object returned from getWindow helper.\n *\n * @public\n */\nexport function setSSR(isEnabled: boolean): void {\n _isSSR = isEnabled;\n}\n","import { _isSSR } from './setSSR';\n\nlet _window: Window | undefined = undefined;\n\n// Note: Accessing \"window\" in IE11 is somewhat expensive, and calling \"typeof window\"\n// hits a memory leak, whereas aliasing it and calling \"typeof _window\" does not.\n// Caching the window value at the file scope lets us minimize the impact.\ntry {\n _window = window;\n} catch (e) {\n /* no-op */\n}\n\n/**\n * Helper to get the window object. The helper will make sure to use a cached variable\n * of \"window\", to avoid overhead and memory leaks in IE11. Note that in popup scenarios the\n * window object won't match the \"global\" window object, and for these scenarios, you should\n * pass in an element hosted within the popup.\n *\n * @public\n */\nexport function getWindow(rootElement?: Element | null): Window | undefined {\n if (_isSSR || typeof _window === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : _window;\n }\n}\n","import { getWindow } from './dom/getWindow';\nexport const IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';\nexport const IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';\n\n/**\n * Sets the visibility of focus styling.\n *\n * By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational\n * keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.\n * This API provides an imperative way to turn them on/off.\n *\n * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,\n * and want focus to show up.\n *\n * @param enabled - whether to remove or add focus\n * @param target - optional target\n */\nexport function setFocusVisibility(enabled: boolean, target?: Element): void {\n const win = target ? getWindow(target) : getWindow();\n\n if (win) {\n const { classList } = win.document.body;\n classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);\n classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);\n }\n}\n","export namespace ZIndexes {\n export const Nav: number = 1;\n /**\n * @deprecated ScrollablePane\n */\n export const ScrollablePane: number = 1;\n export const FocusStyle: number = 1;\n export const Coachmark: number = 1000;\n export const Layer: number = 1000000;\n export const KeytipLayer: number = 1000001;\n}\n","import { IRawStyle } from '@uifabric/merge-styles';\nimport { IGetFocusStylesOptions, ITheme } from '../interfaces/index';\nimport { HighContrastSelector } from './CommonStyles';\nimport { IsFocusVisibleClassName } from '@uifabric/utilities';\nimport { ZIndexes } from './zIndexes';\n\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param options - Options to customize the focus border.\n * @returns The style object.\n */\nexport function getFocusStyle(theme: ITheme, options?: IGetFocusStylesOptions): IRawStyle;\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border.\n * @param position - The positioning applied to the container. Must\n * be 'relative' or 'absolute' so that the focus border can live around it.\n * @param highContrastStyle - Style for high contrast mode.\n * @param borderColor - Color of the border.\n * @param outlineColor - Color of the outline.\n * @param isFocusedOnly - If the styles should apply on focus or not.\n * @returns The style object.\n * @deprecated Use the object parameter version instead.\n */\nexport function getFocusStyle(\n theme: ITheme,\n inset?: number,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle | undefined,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n): IRawStyle;\nexport function getFocusStyle(\n theme: ITheme,\n insetOrOptions?: number | IGetFocusStylesOptions,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n): IRawStyle {\n if (typeof insetOrOptions === 'number' || !insetOrOptions) {\n return _getFocusStyleInternal(theme, {\n inset: insetOrOptions,\n position,\n highContrastStyle,\n borderColor,\n outlineColor,\n isFocusedOnly,\n });\n } else {\n return _getFocusStyleInternal(theme, insetOrOptions);\n }\n}\n\nfunction _getFocusStyleInternal(theme: ITheme, options: IGetFocusStylesOptions = {}): IRawStyle {\n const {\n inset = 0,\n width = 1,\n position = 'relative',\n highContrastStyle,\n borderColor = theme.palette.white,\n outlineColor = theme.palette.neutralSecondary,\n isFocusedOnly = true,\n } = options;\n\n return {\n // Clear browser-specific focus styles and use 'transparent' as placeholder for focus style.\n outline: 'transparent',\n // Requirement because pseudo-element is absolutely positioned.\n position,\n\n selectors: {\n // Clear the focus border in Firefox.\n // Reference: http://stackoverflow.com/a/199319/1436671\n '::-moz-focus-inner': {\n border: '0',\n },\n\n // When the element that uses this mixin is in a :focus state, add a pseudo-element to\n // create a border.\n [`.${IsFocusVisibleClassName} &${isFocusedOnly ? ':focus' : ''}:after`]: {\n content: '\"\"',\n position: 'absolute',\n left: inset + 1,\n top: inset + 1,\n bottom: inset + 1,\n right: inset + 1,\n border: `${width}px solid ${borderColor}`,\n outline: `${width}px solid ${outlineColor}`,\n zIndex: ZIndexes.FocusStyle,\n selectors: {\n [HighContrastSelector]: highContrastStyle,\n },\n },\n },\n };\n}\n\n/**\n * Generates style to clear browser specific focus styles.\n */\nexport function focusClear(): IRawStyle {\n return {\n selectors: {\n '&::-moz-focus-inner': {\n // Clear the focus border in Firefox. Reference: http://stackoverflow.com/a/199319/1436671\n border: 0,\n },\n '&': {\n // Clear browser specific focus styles and use transparent as placeholder for focus style\n outline: 'transparent',\n },\n },\n };\n}\n\n/**\n * Generates a style which can be used to set a border on focus.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border (default 0)\n * @param width - The border width in pixels (default 1)\n * @param color - Color of the outline (default `theme.palette.neutralSecondary`)\n * @returns The style object.\n */\nexport function getFocusOutlineStyle(theme: ITheme, inset: number = 0, width: number = 1, color?: string): IRawStyle {\n return {\n selectors: {\n [`:global(${IsFocusVisibleClassName}) &:focus`]: {\n outline: `${width} solid ${color || theme.palette.neutralSecondary}`,\n outlineOffset: `${-inset}px`,\n },\n },\n };\n}\n\n/**\n * Generates text input border styles on focus.\n *\n * @param borderColor - Color of the border.\n * @param borderRadius - Radius of the border.\n * @param borderType - Type of the border.\n * @param borderPosition - Position of the border relative to the input element (default to -1\n * as it's the most common border width of the input element)\n * @returns The style object.\n */\nexport const getInputFocusStyle = (\n borderColor: string,\n borderRadius: string | number,\n borderType: 'border' | 'borderBottom' = 'border',\n borderPosition: number = -1,\n): IRawStyle => {\n const isBorderBottom = borderType === 'borderBottom';\n\n return {\n borderColor,\n selectors: {\n ':after': {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n left: isBorderBottom ? 0 : borderPosition,\n top: borderPosition,\n bottom: borderPosition,\n right: isBorderBottom ? 0 : borderPosition,\n [borderType]: `2px solid ${borderColor}`,\n borderRadius,\n width: borderType === 'borderBottom' ? '100%' : undefined,\n selectors: {\n [HighContrastSelector]: {\n [borderType === 'border' ? 'borderColor' : 'borderBottomColor']: 'Highlight',\n },\n },\n },\n },\n };\n};\n","import { IRawStyle } from '@uifabric/merge-styles';\n\nexport const hiddenContentStyle: IRawStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n border: 0,\n overflow: 'hidden',\n};\n","import { Stylesheet } from '@uifabric/merge-styles';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ndeclare class WeakMap {\n public get(key: any): any;\n public set(key: any, value: any): void;\n public has(key: any): boolean;\n}\n\nlet _initializedStylesheetResets = false;\nlet _resetCounter = 0;\nconst _emptyObject = { empty: true };\nconst _dictionary: any = {};\nlet _weakMap = typeof WeakMap === 'undefined' ? null : WeakMap;\n\ninterface IMemoizeNode {\n map: WeakMap | null;\n value?: any;\n}\n\n/**\n * Test utility for providing a custom weakmap.\n *\n * @internal\n * */\nexport function setMemoizeWeakMap(weakMap: any): void {\n _weakMap = weakMap;\n}\n\n/**\n * Reset memoizations.\n */\nexport function resetMemoizations(): void {\n _resetCounter++;\n}\n\n/**\n * Memoize decorator to be used on class methods. WARNING: the `this` reference\n * will be inaccessible within a memoized method, given that a cached method's `this`\n * would not be instance-specific.\n *\n * @public\n */\nexport function memoize<T extends Function>(\n target: any,\n key: string,\n descriptor: TypedPropertyDescriptor<T>,\n): {\n configurable: boolean;\n get(): T;\n} {\n // We bind to \"null\" to prevent people from inadvertently pulling values from \"this\",\n // rather than passing them in as input values which can be memoized.\n let fn = memoizeFunction(descriptor.value && descriptor.value.bind(null));\n\n return {\n configurable: true,\n get(): T {\n return fn;\n },\n };\n}\n\n/**\n * Memoizes a function; when you pass in the same parameters multiple times, it returns a cached result.\n * Be careful when passing in objects, you need to pass in the same INSTANCE for caching to work. Otherwise\n * it will grow the cache unnecessarily. Also avoid using default values that evaluate functions; passing in\n * undefined for a value and relying on a default function will execute it the first time, but will not\n * re-evaluate subsequent times which may have been unexpected.\n *\n * By default, the cache will reset after 100 permutations, to avoid abuse cases where the function is\n * unintendedly called with unique objects. Without a reset, the cache could grow infinitely, so we safeguard\n * by resetting. To override this behavior, pass a value of 0 to the maxCacheSize parameter.\n *\n * @public\n * @param cb - The function to memoize.\n * @param maxCacheSize - Max results to cache. If the cache exceeds this value, it will reset on the next call.\n * @param ignoreNullOrUndefinedResult - Flag to decide whether to cache callback result if it is undefined/null.\n * If the flag is set to true, the callback result is recomputed every time till the callback result is\n * not undefined/null for the first time, and then the non-undefined/null version gets cached.\n * @returns A memoized version of the function.\n */\nexport function memoizeFunction<T extends (...args: any[]) => RetType, RetType>(\n cb: T,\n maxCacheSize: number = 100,\n ignoreNullOrUndefinedResult: boolean = false,\n): T {\n // Avoid breaking scenarios which don't have weak map.\n if (!_weakMap) {\n return cb;\n }\n\n if (!_initializedStylesheetResets) {\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && stylesheet.onReset) {\n Stylesheet.getInstance().onReset(resetMemoizations);\n }\n _initializedStylesheetResets = true;\n }\n\n let rootNode: any;\n let cacheSize = 0;\n let localResetCounter = _resetCounter;\n\n return function memoizedFunction(...args: any[]): RetType {\n let currentNode: any = rootNode;\n\n if (\n rootNode === undefined ||\n localResetCounter !== _resetCounter ||\n (maxCacheSize > 0 && cacheSize > maxCacheSize)\n ) {\n rootNode = _createNode();\n cacheSize = 0;\n localResetCounter = _resetCounter;\n }\n\n currentNode = rootNode;\n\n // Traverse the tree until we find the match.\n for (let i = 0; i < args.length; i++) {\n let arg = _normalizeArg(args[i]);\n\n if (!currentNode.map.has(arg)) {\n currentNode.map.set(arg, _createNode());\n }\n\n currentNode = currentNode.map.get(arg);\n }\n\n if (!currentNode.hasOwnProperty('value')) {\n currentNode.value = cb(...args);\n cacheSize++;\n }\n\n if (ignoreNullOrUndefinedResult && (currentNode.value === null || currentNode.value === undefined)) {\n currentNode.value = cb(...args);\n }\n\n return currentNode.value;\n } as any;\n}\n\n/**\n * Creates a memoizer for a single-value function, backed by a WeakMap.\n * With a WeakMap, the memoized values are only kept as long as the source objects,\n * ensuring that there is no memory leak.\n *\n * This function assumes that the input values passed to the wrapped function will be\n * `function` or `object` types. To memoize functions which accept other inputs, use\n * `memoizeFunction`, which memoizes against arbitrary inputs using a lookup cache.\n *\n * @public\n */\nexport function createMemoizer<F extends (input: any) => any>(getValue: F): F {\n if (!_weakMap) {\n // Without a `WeakMap` implementation, memoization is not possible.\n return getValue;\n }\n\n const cache = new _weakMap();\n\n function memoizedGetValue(input: any): any {\n if (!input || (typeof input !== 'function' && typeof input !== 'object')) {\n // A WeakMap can only be used to test against reference values, i.e. 'function' and 'object'.\n // All other inputs cannot be memoized against in this manner.\n return getValue(input);\n }\n\n if (cache.has(input)) {\n return cache.get(input)!;\n }\n\n const value = getValue(input);\n\n cache.set(input, value);\n\n return value;\n }\n\n return memoizedGetValue as F;\n}\n\nfunction _normalizeArg(val: null | undefined): { empty: boolean } | any;\nfunction _normalizeArg(val: object): any;\nfunction _normalizeArg(val: any): any {\n if (!val) {\n return _emptyObject;\n } else if (typeof val === 'object' || typeof val === 'function') {\n return val;\n } else if (!_dictionary[val]) {\n _dictionary[val] = { val };\n }\n\n return _dictionary[val];\n}\n\nfunction _createNode(): IMemoizeNode {\n return {\n map: _weakMap ? new _weakMap() : null,\n };\n}\n","import { ITheme } from '../interfaces/index';\nimport { Stylesheet } from '@uifabric/merge-styles';\nimport { memoizeFunction } from '@uifabric/utilities';\n\nexport type GlobalClassNames<IStyles> = Record<keyof IStyles, string>;\n\n/**\n * Internal memoized function which simply takes in the class map and the\n * disable boolean. These immutable values can be memoized.\n */\nconst _getGlobalClassNames = memoizeFunction(\n <T>(classNames: GlobalClassNames<T>, disableGlobalClassNames?: boolean): GlobalClassNames<T> => {\n const styleSheet = Stylesheet.getInstance();\n\n if (disableGlobalClassNames) {\n // disable global classnames\n return (Object.keys(classNames) as (keyof T)[]).reduce((acc, className) => {\n acc[className] = styleSheet.getClassName(classNames[className]);\n return acc;\n }, {} as GlobalClassNames<T>);\n }\n\n // use global classnames\n return classNames;\n },\n);\n\n/**\n * Checks for the `disableGlobalClassNames` property on the `theme` to determine if it should return `classNames`\n * Note that calls to this function are memoized.\n *\n * @param classNames - The collection of global class names that apply when the flag is false. Make sure to pass in\n * the same instance on each call to benefit from memoization.\n * @param theme - The theme to check the flag on\n * @param disableGlobalClassNames - Optional. Explicitly opt in/out of disabling global classnames. Defaults to false.\n */\nexport function getGlobalClassNames<T>(\n classNames: GlobalClassNames<T>,\n theme: ITheme,\n disableGlobalClassNames?: boolean,\n): GlobalClassNames<T> {\n return _getGlobalClassNames(\n classNames,\n disableGlobalClassNames !== undefined ? disableGlobalClassNames : theme.disableGlobalClassNames,\n );\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Storing global state in local module variables has issues when more than one copy\n * if the module gets loaded on the page (due to a bundling error or simply by consuming\n * a prebundled script.)\n *\n * This file contains helpers to deal with the getting and setting local state, and allows\n * callers to get called back when it mutates.\n */\n\nconst GLOBAL_SETTINGS_PROP_NAME = '__globalSettings__';\nconst CALLBACK_STATE_PROP_NAME = '__callbacks__';\n\nlet _counter = 0;\n\n/**\n * Change description used for change callbacks in GlobalSettings.\n *\n * @public\n * {@docCategory IChangeDescription}\n */\nexport interface IChangeDescription {\n key: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n oldValue: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n}\n\n/**\n * Change event callback.\n *\n * @public\n * {@docCategory IChangeEventCallback}\n */\nexport interface IChangeEventCallback {\n __id__?: string;\n (changeDescription?: IChangeDescription): void;\n}\n\n/**\n * Global settings helper, which stores settings in the global (window) namespace.\n * If window is not provided, it will store settings in module scope. Provides a\n * way to observe changes as well when their values change.\n *\n * @public\n * {@docCategory GlobalSettings}\n */\nexport class GlobalSettings {\n public static getValue<T>(key: string, defaultValue?: T | (() => T)): T {\n const globalSettings = _getGlobalSettings();\n\n if (globalSettings[key] === undefined) {\n globalSettings[key] = typeof defaultValue === 'function' ? (defaultValue as Function)() : defaultValue;\n }\n\n return globalSettings[key];\n }\n\n public static setValue<T>(key: string, value: T): T {\n const globalSettings = _getGlobalSettings();\n const callbacks = globalSettings[CALLBACK_STATE_PROP_NAME];\n let oldValue = globalSettings[key];\n\n if (value !== oldValue) {\n globalSettings[key] = value;\n\n let changeDescription = {\n oldValue,\n value,\n key,\n };\n\n for (let id in callbacks) {\n if (callbacks.hasOwnProperty(id)) {\n callbacks[id](changeDescription);\n }\n }\n }\n\n return value;\n }\n\n public static addChangeListener(cb: IChangeEventCallback): void {\n // Note: we use generated ids on the callbacks to create a map of the callbacks, which optimizes removal.\n // (It's faster to delete a key than it is to look up the index of an object and splice an array.)\n let id = cb.__id__;\n const callbacks = _getCallbacks();\n\n if (!id) {\n id = cb.__id__ = String(_counter++);\n }\n\n callbacks[id] = cb;\n }\n\n public static removeChangeListener(cb: IChangeEventCallback): void {\n const callbacks = _getCallbacks();\n delete callbacks[cb.__id__ as string];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _getGlobalSettings(): { [key: string]: any } {\n const win = getWindow();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj: { [key: string]: any } = win || {};\n\n if (!globalObj[GLOBAL_SETTINGS_PROP_NAME]) {\n globalObj[GLOBAL_SETTINGS_PROP_NAME] = {\n [CALLBACK_STATE_PROP_NAME]: {},\n };\n }\n\n return globalObj[GLOBAL_SETTINGS_PROP_NAME];\n}\n\nfunction _getCallbacks(): { [key: string]: () => void } {\n const globalSettings = _getGlobalSettings();\n return globalSettings[CALLBACK_STATE_PROP_NAME];\n}\n","import { GlobalSettings } from '../GlobalSettings';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ISettings = { [key: string]: any };\nexport type ISettingsFunction = (settings: ISettings) => ISettings;\n\n/**\n * @deprecated Use ISettings.\n */\nexport type Settings = ISettings;\n\n/**\n * @deprecated Use ISettingsFunction.\n */\nexport type SettingsFunction = ISettingsFunction;\n\nexport interface ICustomizations {\n settings: ISettings;\n scopedSettings: { [key: string]: ISettings };\n inCustomizerContext?: boolean;\n}\n\nconst CustomizationsGlobalKey = 'customizations';\nconst NO_CUSTOMIZATIONS = { settings: {}, scopedSettings: {}, inCustomizerContext: false };\n\nlet _allSettings = GlobalSettings.getValue<ICustomizations>(CustomizationsGlobalKey, {\n settings: {},\n scopedSettings: {},\n inCustomizerContext: false,\n});\n\nlet _events: (() => void)[] = [];\n\nexport class Customizations {\n private static _suppressUpdates: boolean;\n\n public static reset(): void {\n _allSettings.settings = {};\n _allSettings.scopedSettings = {};\n }\n\n /** Apply global Customization settings.\n * @example Customizations.applySettings(\\{ theme: \\{...\\} \\});\n */\n public static applySettings(settings: ISettings): void {\n _allSettings.settings = { ..._allSettings.settings, ...settings };\n Customizations._raiseChange();\n }\n\n /** Apply Customizations to a particular named scope, like a component.\n * @example Customizations.applyScopedSettings('Nav', \\{ styles: () =\\> \\{\\} \\});\n */\n public static applyScopedSettings(scopeName: string, settings: ISettings): void {\n _allSettings.scopedSettings[scopeName] = { ..._allSettings.scopedSettings[scopeName], ...settings };\n Customizations._raiseChange();\n }\n\n public static getSettings(\n properties: string[],\n scopeName?: string,\n localSettings: ICustomizations = NO_CUSTOMIZATIONS,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const settings: ISettings = {};\n const localScopedSettings = (scopeName && localSettings.scopedSettings[scopeName]) || {};\n const globalScopedSettings = (scopeName && _allSettings.scopedSettings[scopeName]) || {};\n\n for (let property of properties) {\n settings[property] =\n localScopedSettings[property] ||\n localSettings.settings[property] ||\n globalScopedSettings[property] ||\n _allSettings.settings[property];\n }\n\n return settings;\n }\n\n /** Used to run some code that sets Customizations without triggering an update until the end.\n * Useful for applying Customizations that don't affect anything currently rendered, or for\n * applying many customizations at once.\n * @param suppressUpdate - Do not raise the change event at the end, preventing all updates\n */\n public static applyBatchedUpdates(code: () => void, suppressUpdate?: boolean): void {\n Customizations._suppressUpdates = true;\n try {\n code();\n } catch {\n /* do nothing */\n }\n Customizations._suppressUpdates = false;\n if (!suppressUpdate) {\n Customizations._raiseChange();\n }\n }\n\n public static observe(onChange: () => void): void {\n _events.push(onChange);\n }\n\n public static unobserve(onChange: () => void): void {\n _events = _events.filter((cb: () => void) => cb !== onChange);\n }\n\n private static _raiseChange(): void {\n if (!Customizations._suppressUpdates) {\n _events.forEach((cb: () => void) => cb());\n }\n }\n}\n","export namespace Depths {\n export const depth0 = '0 0 0 0 transparent';\n export const depth4 = '0 1.6px 3.6px 0 rgba(0, 0, 0, 0.132), 0 0.3px 0.9px 0 rgba(0, 0, 0, 0.108)';\n export const depth8 = '0 3.2px 7.2px 0 rgba(0, 0, 0, 0.132), 0 0.6px 1.8px 0 rgba(0, 0, 0, 0.108)';\n export const depth16 = '0 6.4px 14.4px 0 rgba(0, 0, 0, 0.132), 0 1.2px 3.6px 0 rgba(0, 0, 0, 0.108)';\n export const depth64 = '0 25.6px 57.6px 0 rgba(0, 0, 0, 0.22), 0 4.8px 14.4px 0 rgba(0, 0, 0, 0.18)';\n}\n","import { IPalette } from '../types/index';\n\n// When adding or removing a color, make sure you keep this consistent with IColorClassNames\n// by adding the color variants.\nexport const DefaultPalette: IPalette = {\n themeDarker: '#004578',\n themeDark: '#005a9e',\n themeDarkAlt: '#106ebe',\n themePrimary: '#0078d4',\n themeSecondary: '#2b88d8',\n themeTertiary: '#71afe5',\n themeLight: '#c7e0f4',\n themeLighter: '#deecf9',\n themeLighterAlt: '#eff6fc',\n black: '#000000',\n blackTranslucent40: 'rgba(0,0,0,.4)',\n neutralDark: '#201f1e',\n neutralPrimary: '#323130',\n neutralPrimaryAlt: '#3b3a39',\n neutralSecondary: '#605e5c',\n neutralSecondaryAlt: '#8a8886',\n neutralTertiary: '#a19f9d',\n neutralTertiaryAlt: '#c8c6c4',\n neutralQuaternary: '#d2d0ce',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralLight: '#edebe9',\n neutralLighter: '#f3f2f1',\n neutralLighterAlt: '#faf9f8',\n accent: '#0078d4',\n white: '#ffffff',\n whiteTranslucent40: 'rgba(255,255,255,.4)',\n yellowDark: '#d29200',\n yellow: '#ffb900',\n yellowLight: '#fff100',\n orange: '#d83b01',\n orangeLight: '#ea4300',\n orangeLighter: '#ff8c00',\n redDark: '#a4262c',\n red: '#e81123',\n magentaDark: '#5c005c',\n magenta: '#b4009e',\n magentaLight: '#e3008c',\n purpleDark: '#32145a',\n purple: '#5c2d91',\n purpleLight: '#b4a0ff',\n blueDark: '#002050',\n blueMid: '#00188f',\n blue: '#0078d4',\n blueLight: '#00bcf2',\n tealDark: '#004b50',\n teal: '#008272',\n tealLight: '#00b294',\n greenDark: '#004b1c',\n green: '#107c10',\n greenLight: '#bad80a',\n};\n","import { IEffects } from '../types/index';\nimport { Depths } from './FluentDepths';\n\nexport const DefaultEffects: IEffects = {\n elevation4: Depths.depth4,\n elevation8: Depths.depth8,\n elevation16: Depths.depth16,\n elevation64: Depths.depth64,\n\n roundedCorner2: '2px',\n roundedCorner4: '4px',\n roundedCorner6: '6px',\n};\n","import { IFontFace } from './IRawStyleBase';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers a font face.\n * @public\n */\nexport function fontFace(font: IFontFace): void {\n Stylesheet.getInstance().insertRule(`@font-face{${serializeRuleEntries(getStyleOptions(), font as {})}}`, true);\n}\n","import { IFontWeight, IRawStyle } from '@uifabric/merge-styles';\nimport { IFontStyles } from '../types/IFontStyles';\nimport { FontSizes, FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\n\n// Fallback fonts, if specified system or web fonts are unavailable.\nconst FontFamilyFallbacks = `'Segoe UI', -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', sans-serif`;\n\n// By default, we favor system fonts for the default.\n// All localized fonts use a web font and never use the system font.\nconst defaultFontFamily = `'Segoe UI', '${LocalizedFontNames.WestEuropean}'`;\n\n// Mapping of language prefix to to font family.\nconst LanguageToFontMap = {\n ar: LocalizedFontFamilies.Arabic,\n bg: LocalizedFontFamilies.Cyrillic,\n cs: LocalizedFontFamilies.EastEuropean,\n el: LocalizedFontFamilies.Greek,\n et: LocalizedFontFamilies.EastEuropean,\n he: LocalizedFontFamilies.Hebrew,\n hi: LocalizedFontFamilies.Hindi,\n hr: LocalizedFontFamilies.EastEuropean,\n hu: LocalizedFontFamilies.EastEuropean,\n ja: LocalizedFontFamilies.Japanese,\n kk: LocalizedFontFamilies.EastEuropean,\n ko: LocalizedFontFamilies.Korean,\n lt: LocalizedFontFamilies.EastEuropean,\n lv: LocalizedFontFamilies.EastEuropean,\n pl: LocalizedFontFamilies.EastEuropean,\n ru: LocalizedFontFamilies.Cyrillic,\n sk: LocalizedFontFamilies.EastEuropean,\n 'sr-latn': LocalizedFontFamilies.EastEuropean,\n th: LocalizedFontFamilies.Thai,\n tr: LocalizedFontFamilies.EastEuropean,\n uk: LocalizedFontFamilies.Cyrillic,\n vi: LocalizedFontFamilies.Vietnamese,\n 'zh-hans': LocalizedFontFamilies.ChineseSimplified,\n 'zh-hant': LocalizedFontFamilies.ChineseTraditional,\n hy: LocalizedFontFamilies.Armenian,\n ka: LocalizedFontFamilies.Georgian,\n};\n\nfunction _fontFamilyWithFallbacks(fontFamily: string): string {\n return `${fontFamily}, ${FontFamilyFallbacks}`;\n}\n\n/**\n * If there is a localized font for this language, return that.\n * Returns undefined if there is no localized font for that language.\n */\nfunction _getLocalizedFontFamily(language: string | null): string {\n for (const lang in LanguageToFontMap) {\n if (LanguageToFontMap.hasOwnProperty(lang) && language && lang.indexOf(language) === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (LanguageToFontMap as any)[lang];\n }\n }\n\n return defaultFontFamily;\n}\n\nfunction _createFont(size: string, weight: IFontWeight, fontFamily: string): IRawStyle {\n return {\n fontFamily: fontFamily,\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontSize: size,\n fontWeight: weight,\n };\n}\n\nexport function createFontStyles(localeCode: string | null): IFontStyles {\n const localizedFont = _getLocalizedFontFamily(localeCode);\n const fontFamilyWithFallback = _fontFamilyWithFallbacks(localizedFont);\n\n const fontStyles = {\n tiny: _createFont(FontSizes.mini, FontWeights.regular, fontFamilyWithFallback),\n xSmall: _createFont(FontSizes.xSmall, FontWeights.regular, fontFamilyWithFallback),\n small: _createFont(FontSizes.small, FontWeights.regular, fontFamilyWithFallback),\n smallPlus: _createFont(FontSizes.smallPlus, FontWeights.regular, fontFamilyWithFallback),\n medium: _createFont(FontSizes.medium, FontWeights.regular, fontFamilyWithFallback),\n mediumPlus: _createFont(FontSizes.mediumPlus, FontWeights.regular, fontFamilyWithFallback),\n large: _createFont(FontSizes.large, FontWeights.regular, fontFamilyWithFallback),\n xLarge: _createFont(FontSizes.xLarge, FontWeights.semibold, fontFamilyWithFallback),\n xLargePlus: _createFont(FontSizes.xLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n xxLarge: _createFont(FontSizes.xxLarge, FontWeights.semibold, fontFamilyWithFallback),\n xxLargePlus: _createFont(FontSizes.xxLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n superLarge: _createFont(FontSizes.superLarge, FontWeights.semibold, fontFamilyWithFallback),\n mega: _createFont(FontSizes.mega, FontWeights.semibold, fontFamilyWithFallback),\n };\n\n return fontStyles;\n}\n","import { getDocument } from './dom/getDocument';\nimport * as localStorage from './localStorage';\nimport * as sessionStorage from './sessionStorage';\n\n// Default to undefined so that we initialize on first read.\nlet _language: string | null;\n\nconst STORAGE_KEY = 'language';\n\n/**\n * Gets the language set for the page.\n * @param persistenceType - Where to persist the value. Default is `localStorage` if available.\n * (In version 8, the default will be `sessionStorage`.)\n */\nexport function getLanguage(\n persistenceType: 'localStorage' | 'sessionStorage' | 'none' = 'localStorage',\n): string | null {\n if (_language === undefined) {\n let doc = getDocument();\n const savedLanguage =\n persistenceType === 'localStorage'\n ? localStorage.getItem(STORAGE_KEY)\n : persistenceType === 'sessionStorage'\n ? sessionStorage.getItem(STORAGE_KEY)\n : undefined;\n\n if (savedLanguage) {\n _language = savedLanguage;\n }\n\n if (_language === undefined && doc) {\n _language = doc.documentElement.getAttribute('lang');\n }\n\n if (_language === undefined) {\n _language = 'en';\n }\n }\n\n return _language;\n}\n\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @param language - Language to set.\n * @param persistenceType - Where to persist the value. Default is `localStorage` if available.\n * (In version 8, the default will be `sessionStorage`.)\n */\nexport function setLanguage(language: string, persistenceType?: 'localStorage' | 'sessionStorage' | 'none'): void;\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @deprecated Use string parameter version.\n * @param language - Language to set.\n * @param avoidPersisting - If true, don't store the value.\n */\nexport function setLanguage(language: string, avoidPersisting?: boolean): void;\nexport function setLanguage(\n language: string,\n persistenceParam?: 'localStorage' | 'sessionStorage' | 'none' | boolean,\n): void {\n let doc = getDocument();\n\n if (doc) {\n doc.documentElement.setAttribute('lang', language);\n }\n\n const persistenceType = persistenceParam === true ? 'none' : !persistenceParam ? 'localStorage' : persistenceParam;\n if (persistenceType === 'localStorage') {\n localStorage.setItem(STORAGE_KEY, language);\n } else if (persistenceType === 'sessionStorage') {\n sessionStorage.setItem(STORAGE_KEY, language);\n }\n\n _language = language;\n}\n","import { _isSSR } from './setSSR';\n\n/**\n * Helper to get the document object. Note that in popup window cases, document\n * might be the wrong document, which is why we look at ownerDocument for the\n * truth. Also note that the SSR flag is used to test ssr scenarios even if\n * document is defined (from JSDOM for example.)\n *\n * @public\n */\nexport function getDocument(rootElement?: HTMLElement | null): Document | undefined {\n if (_isSSR || typeof document === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument ? el.ownerDocument : document;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from session storage without throwing an exception\n * @param key The key of the item to fetch from session storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.sessionStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into session storage without throwing an exception\n * @param key The key of the item to add to session storage\n * @param data The data to put into session storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n getWindow()?.sessionStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { fontFace, IFontWeight } from '@uifabric/merge-styles';\nimport { FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport { createFontStyles } from './createFontStyles';\nimport { getLanguage, getWindow } from '@uifabric/utilities';\nimport { IFontStyles } from '../types/IFontStyles';\nimport { IFabricConfig } from '../types/IFabricConfig';\n\n// Default urls.\nconst DefaultBaseUrl = 'https://static2.sharepointonline.com/files/fabric/assets';\n\n// Standard font styling.\nexport const DefaultFontStyles: IFontStyles = createFontStyles(getLanguage('sessionStorage'));\n\nfunction _registerFontFace(fontFamily: string, url: string, fontWeight?: IFontWeight, localFontName?: string): void {\n fontFamily = `'${fontFamily}'`;\n\n const localFontSrc = localFontName !== undefined ? `local('${localFontName}'),` : '';\n\n fontFace({\n fontFamily,\n src: localFontSrc + `url('${url}.woff2') format('woff2'),` + `url('${url}.woff') format('woff')`,\n fontWeight,\n fontStyle: 'normal',\n fontDisplay: 'swap',\n });\n}\n\nfunction _registerFontFaceSet(\n baseUrl: string,\n fontFamily: string,\n cdnFolder: string,\n cdnFontName: string = 'segoeui',\n localFontName?: string,\n): void {\n const urlBase = `${baseUrl}/${cdnFolder}/${cdnFontName}`;\n\n _registerFontFace(fontFamily, urlBase + '-light', FontWeights.light, localFontName && localFontName + ' Light');\n _registerFontFace(\n fontFamily,\n urlBase + '-semilight',\n FontWeights.semilight,\n localFontName && localFontName + ' SemiLight',\n );\n _registerFontFace(fontFamily, urlBase + '-regular', FontWeights.regular, localFontName);\n _registerFontFace(\n fontFamily,\n urlBase + '-semibold',\n FontWeights.semibold,\n localFontName && localFontName + ' SemiBold',\n );\n _registerFontFace(fontFamily, urlBase + '-bold', FontWeights.bold, localFontName && localFontName + ' Bold');\n}\n\nexport function registerDefaultFontFaces(baseUrl: string): void {\n if (baseUrl) {\n const fontUrl = `${baseUrl}/fonts`;\n\n // Produce @font-face definitions for all supported web fonts.\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Thai, 'leelawadeeui-thai', 'leelawadeeui');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Arabic, 'segoeui-arabic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Cyrillic, 'segoeui-cyrillic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.EastEuropean, 'segoeui-easteuropean');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Greek, 'segoeui-greek');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Hebrew, 'segoeui-hebrew');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Vietnamese, 'segoeui-vietnamese');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.WestEuropean, 'segoeui-westeuropean', 'segoeui', 'Segoe UI');\n _registerFontFaceSet(fontUrl, LocalizedFontFamilies.Selawik, 'selawik', 'selawik');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Armenian, 'segoeui-armenian');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Georgian, 'segoeui-georgian');\n\n // Leelawadee UI (Thai) does not have a 'light' weight, so we override\n // the font-face generated above to use the 'semilight' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-semilight`, FontWeights.light);\n\n // Leelawadee UI (Thai) does not have a 'semibold' weight, so we override\n // the font-face generated above to use the 'bold' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-bold`, FontWeights.semibold);\n }\n}\n\n/**\n * Reads the fontBaseUrl from window.FabricConfig.fontBaseUrl or falls back to a default.\n */\nfunction _getFontBaseUrl(): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fabricConfig: IFabricConfig | undefined = (getWindow() as any)?.FabricConfig;\n\n return fabricConfig?.fontBaseUrl ?? DefaultBaseUrl;\n}\n\n/**\n * Register the font faces.\n */\nregisterDefaultFontFaces(_getFontBaseUrl());\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from local storage without throwing an exception\n * @param key The key of the item to fetch from local storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.localStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into local storage without throwing an exception\n * @param key The key of the item to add to local storage\n * @param data The data to put into local storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n const win = getWindow();\n\n win && win.localStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","/**\n * Simple deep merge function. Takes all arguments and returns a deep copy of the objects merged\n * together in the order provided. If an object creates a circular reference, it will assign the\n * original reference.\n */\nexport function merge<T = {}>(target: Partial<T>, ...args: (Partial<T> | null | undefined | false)[]): T {\n for (const arg of args) {\n _merge(target || {}, arg as Partial<T>);\n }\n\n return target as T;\n}\n\n/**\n * The _merge helper iterates through all props on source and assigns them to target.\n * When the value is an object, we will create a deep clone of the object. However if\n * there is a circular reference, the value will not be deep cloned and will persist\n * the reference.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _merge<T extends Object>(target: T, source: T, circularReferences: any[] = []): T {\n circularReferences.push(source);\n\n for (let name in source) {\n if (source.hasOwnProperty(name)) {\n if (name !== '__proto__' && name !== 'constructor' && name !== 'prototype') {\n const value: T[Extract<keyof T, string>] = source[name];\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const isCircularReference = circularReferences.indexOf(value) > -1;\n target[name] = (isCircularReference\n ? value\n : _merge(target[name] || {}, value, circularReferences)) as T[Extract<keyof T, string>];\n } else {\n target[name] = value;\n }\n }\n }\n }\n\n circularReferences.pop();\n\n return target;\n}\n","import { IEffects, IPalette, ISemanticColors } from '../types/index';\n\n/** Generates all the semantic slot colors based on the theme so far\n * We'll use these as fallbacks for semantic slots that the passed in theme did not define.\n * The caller must still mix in the customized semantic slots at the end.\n */\nexport function makeSemanticColors(\n p: IPalette,\n e: IEffects,\n s: Partial<ISemanticColors> | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): ISemanticColors {\n const semanticColors: Partial<ISemanticColors> = {\n primaryButtonBorder: 'transparent',\n\n errorText: !isInverted ? '#a4262c' : '#F1707B',\n\n messageText: !isInverted ? '#323130' : '#F3F2F1',\n messageLink: !isInverted ? '#005A9E' : '#6CB8F6',\n messageLinkHovered: !isInverted ? '#004578' : '#82C7FF',\n\n infoIcon: !isInverted ? '#605e5c' : '#C8C6C4',\n errorIcon: !isInverted ? '#A80000' : '#F1707B',\n blockingIcon: !isInverted ? '#FDE7E9' : '#442726',\n warningIcon: !isInverted ? '#797775' : '#C8C6C4',\n severeWarningIcon: !isInverted ? '#D83B01' : '#FCE100',\n successIcon: !isInverted ? '#107C10' : '#92C353',\n\n infoBackground: !isInverted ? '#f3f2f1' : '#323130',\n errorBackground: !isInverted ? '#FDE7E9' : '#442726',\n blockingBackground: !isInverted ? '#FDE7E9' : '#442726',\n warningBackground: !isInverted ? '#FFF4CE' : '#433519',\n severeWarningBackground: !isInverted ? '#FED9CC' : '#4F2A0F',\n successBackground: !isInverted ? '#DFF6DD' : '#393D1B',\n\n // deprecated\n warningHighlight: !isInverted ? '#ffb900' : '#fff100',\n successText: !isInverted ? '#107C10' : '#92c353',\n\n ...s,\n };\n\n const fullSemanticColors = getSemanticColors<ISemanticColors>(p, e, semanticColors, isInverted);\n return _fixDeprecatedSlots(fullSemanticColors, depComments);\n}\n\n/**\n * Map partial platte and effects to partial semantic colors.\n */\nexport function getSemanticColors<TResult = Partial<ISemanticColors>>(\n p: Partial<IPalette> | undefined,\n e: Partial<IEffects> | undefined,\n s: Partial<ISemanticColors> | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): TResult {\n let result: Partial<ISemanticColors> = {};\n\n // map palette\n const {\n white,\n black,\n themePrimary,\n themeDark,\n themeDarker,\n themeDarkAlt,\n themeLighter,\n neutralLight,\n neutralLighter,\n neutralDark,\n neutralQuaternary,\n neutralQuaternaryAlt,\n neutralPrimary,\n neutralSecondary,\n neutralSecondaryAlt,\n neutralTertiary,\n neutralTertiaryAlt,\n neutralLighterAlt,\n accent,\n } = p || {};\n\n if (white) {\n result.bodyBackground = white;\n result.bodyFrameBackground = white;\n result.accentButtonText = white;\n result.buttonBackground = white;\n result.primaryButtonText = white;\n result.primaryButtonTextHovered = white;\n result.primaryButtonTextPressed = white;\n result.inputBackground = white;\n result.inputForegroundChecked = white;\n result.listBackground = white;\n result.menuBackground = white;\n result.cardStandoutBackground = white;\n }\n if (black) {\n result.bodyTextChecked = black;\n result.buttonTextCheckedHovered = black;\n }\n if (themePrimary) {\n result.link = themePrimary;\n result.primaryButtonBackground = themePrimary;\n result.inputBackgroundChecked = themePrimary;\n result.inputIcon = themePrimary;\n result.inputFocusBorderAlt = themePrimary;\n result.menuIcon = themePrimary;\n result.menuHeader = themePrimary;\n result.accentButtonBackground = themePrimary;\n }\n if (themeDark) {\n result.primaryButtonBackgroundPressed = themeDark;\n result.inputBackgroundCheckedHovered = themeDark;\n result.inputIconHovered = themeDark;\n }\n if (themeDarker) {\n result.linkHovered = themeDarker;\n }\n if (themeDarkAlt) {\n result.primaryButtonBackgroundHovered = themeDarkAlt;\n }\n if (themeLighter) {\n result.inputPlaceholderBackgroundChecked = themeLighter;\n }\n if (neutralLight) {\n result.bodyBackgroundChecked = neutralLight;\n result.bodyFrameDivider = neutralLight;\n result.bodyDivider = neutralLight;\n result.variantBorder = neutralLight;\n result.buttonBackgroundCheckedHovered = neutralLight;\n result.buttonBackgroundPressed = neutralLight;\n result.listItemBackgroundChecked = neutralLight;\n result.listHeaderBackgroundPressed = neutralLight;\n result.menuItemBackgroundPressed = neutralLight;\n // eslint-disable-next-line deprecation/deprecation\n result.menuItemBackgroundChecked = neutralLight;\n }\n if (neutralLighter) {\n result.bodyBackgroundHovered = neutralLighter;\n result.buttonBackgroundHovered = neutralLighter;\n result.buttonBackgroundDisabled = neutralLighter;\n result.buttonBorderDisabled = neutralLighter;\n result.primaryButtonBackgroundDisabled = neutralLighter;\n result.disabledBackground = neutralLighter;\n result.listItemBackgroundHovered = neutralLighter;\n result.listHeaderBackgroundHovered = neutralLighter;\n result.menuItemBackgroundHovered = neutralLighter;\n }\n if (neutralQuaternary) {\n result.primaryButtonTextDisabled = neutralQuaternary;\n result.disabledSubtext = neutralQuaternary;\n }\n if (neutralQuaternaryAlt) {\n result.listItemBackgroundCheckedHovered = neutralQuaternaryAlt;\n }\n if (neutralTertiary) {\n result.disabledBodyText = neutralTertiary;\n result.variantBorderHovered = s?.variantBorderHovered || neutralTertiary;\n result.buttonTextDisabled = neutralTertiary;\n result.inputIconDisabled = neutralTertiary;\n result.disabledText = neutralTertiary;\n }\n if (neutralPrimary) {\n result.bodyText = neutralPrimary;\n result.actionLink = neutralPrimary;\n result.buttonText = neutralPrimary;\n result.inputBorderHovered = neutralPrimary;\n result.inputText = neutralPrimary;\n result.listText = neutralPrimary;\n result.menuItemText = neutralPrimary;\n }\n if (neutralLighterAlt) {\n result.bodyStandoutBackground = neutralLighterAlt;\n result.defaultStateBackground = neutralLighterAlt;\n }\n if (neutralDark) {\n result.actionLinkHovered = neutralDark;\n result.buttonTextHovered = neutralDark;\n result.buttonTextChecked = neutralDark;\n result.buttonTextPressed = neutralDark;\n result.inputTextHovered = neutralDark;\n result.menuItemTextHovered = neutralDark;\n }\n if (neutralSecondary) {\n result.bodySubtext = neutralSecondary;\n result.focusBorder = neutralSecondary;\n result.inputBorder = neutralSecondary;\n result.smallInputBorder = neutralSecondary;\n result.inputPlaceholderText = neutralSecondary;\n }\n if (neutralSecondaryAlt) {\n result.buttonBorder = neutralSecondaryAlt;\n }\n if (neutralTertiaryAlt) {\n result.disabledBodySubtext = neutralTertiaryAlt;\n result.disabledBorder = neutralTertiaryAlt;\n result.buttonBackgroundChecked = neutralTertiaryAlt;\n result.menuDivider = neutralTertiaryAlt;\n }\n if (accent) {\n result.accentButtonBackground = accent;\n }\n\n // map effects\n if (e?.elevation4) {\n result.cardShadow = e.elevation4;\n }\n if (!isInverted && e?.elevation8) {\n result.cardShadowHovered = e.elevation8;\n } else if (result.variantBorderHovered) {\n result.cardShadowHovered = '0 0 1px ' + result.variantBorderHovered;\n }\n\n result = {\n ...result,\n // mix in customized semantic slots\n ...s,\n };\n\n return result as TResult;\n}\n\nfunction _fixDeprecatedSlots(s: ISemanticColors, depComments: boolean): ISemanticColors {\n // Add @deprecated tag as comment if enabled\n let dep = '';\n if (depComments === true) {\n dep = ' /* @deprecated */';\n }\n\n /* eslint-disable deprecation/deprecation */\n s.listTextColor = s.listText + dep;\n s.menuItemBackgroundChecked += dep;\n s.warningHighlight += dep;\n s.warningText = s.messageText + dep;\n s.successText += dep;\n /* eslint-enable deprecation/deprecation */\n return s;\n}\n","import { ISpacing } from '../types/index';\n\nexport const DefaultSpacing: ISpacing = {\n s2: '4px',\n s1: '8px',\n m: '16px',\n l1: '20px',\n l2: '32px',\n};\n","import { DefaultPalette } from './colors/index';\nimport { DefaultEffects } from './effects/index';\nimport { DefaultFontStyles } from './fonts/index';\nimport { mergeThemes } from './mergeThemes';\nimport { DefaultSpacing } from './spacing/index';\nimport { PartialTheme, Theme } from './types/index';\nimport { makeSemanticColors } from './utilities/makeSemanticColors';\n\n/**\n * Creates a custom theme definition.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function createTheme(theme: PartialTheme = {}, depComments: boolean = false): Theme {\n const isInverted = !!theme.isInverted;\n const baseTheme: Theme = {\n palette: DefaultPalette,\n effects: DefaultEffects,\n fonts: DefaultFontStyles,\n spacing: DefaultSpacing,\n isInverted,\n disableGlobalClassNames: false,\n semanticColors: makeSemanticColors(DefaultPalette, DefaultEffects, undefined, isInverted, depComments),\n rtl: undefined,\n };\n\n return mergeThemes(baseTheme, theme);\n}\n","import { merge } from '@uifabric/utilities';\nimport { IFontStyles, PartialTheme, Theme } from './types/index';\nimport { getSemanticColors } from './utilities/makeSemanticColors';\n\n/**\n * Merge a partial/full theme into a full theme and returns a merged full theme.\n */\nexport function mergeThemes(theme: Theme, partialTheme: PartialTheme = {}): Theme {\n const mergedTheme = merge<Theme | PartialTheme>({}, theme, partialTheme, {\n semanticColors: getSemanticColors(\n partialTheme.palette,\n partialTheme.effects,\n partialTheme.semanticColors,\n partialTheme.isInverted === undefined ? theme.isInverted : partialTheme.isInverted,\n ),\n }) as Theme;\n\n if (partialTheme.palette?.themePrimary && !partialTheme.palette?.accent) {\n mergedTheme.palette.accent = partialTheme.palette.themePrimary;\n }\n\n if (partialTheme.defaultFontStyle) {\n for (const fontStyle of Object.keys(mergedTheme.fonts) as (keyof IFontStyles)[]) {\n mergedTheme.fonts[fontStyle] = merge(\n mergedTheme.fonts[fontStyle],\n partialTheme.defaultFontStyle,\n partialTheme?.fonts?.[fontStyle],\n );\n }\n }\n\n if (partialTheme.stylesheets) {\n mergedTheme.stylesheets = (theme.stylesheets || []).concat(partialTheme.stylesheets);\n }\n\n return mergedTheme;\n}\n","import { Customizations, getWindow } from '@uifabric/utilities';\nimport { ITheme, IPartialTheme, IFontStyles } from '../interfaces/index';\nimport { loadTheme as legacyLoadTheme } from '@microsoft/load-themed-styles';\nimport { IRawStyle } from '@uifabric/merge-styles';\nimport { createTheme } from '@fluentui/theme/lib/createTheme';\n\nexport { createTheme } from '@fluentui/theme/lib/createTheme';\n\nlet _theme: ITheme = createTheme({});\nlet _onThemeChangeCallbacks: Array<(theme: ITheme) => void> = [];\n\nexport const ThemeSettingName = 'theme';\n\nexport function initializeThemeInCustomizations(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win: any = getWindow();\n\n if (win?.FabricConfig?.legacyTheme) {\n // does everything the `else` clause does and more, such as invoke legacy theming\n loadTheme(win.FabricConfig.legacyTheme);\n } else if (!Customizations.getSettings([ThemeSettingName]).theme) {\n if (win?.FabricConfig?.theme) {\n _theme = createTheme(win.FabricConfig.theme);\n }\n\n // Set the default theme.\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n }\n}\n\ninitializeThemeInCustomizations();\n\n/**\n * Gets the theme object\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function getTheme(depComments: boolean = false): ITheme {\n if (depComments === true) {\n _theme = createTheme({}, depComments);\n }\n return _theme;\n}\n\n/**\n * Registers a callback that gets called whenever the theme changes.\n * This should only be used when the component cannot automatically get theme changes through its state.\n * This will not register duplicate callbacks.\n */\nexport function registerOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n if (_onThemeChangeCallbacks.indexOf(callback) === -1) {\n _onThemeChangeCallbacks.push(callback);\n }\n}\n\n/**\n * See registerOnThemeChangeCallback().\n * Removes previously registered callbacks.\n */\nexport function removeOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n const i = _onThemeChangeCallbacks.indexOf(callback);\n if (i === -1) {\n return;\n }\n\n _onThemeChangeCallbacks.splice(i, 1);\n}\n\n/**\n * Applies the theme, while filling in missing slots.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function loadTheme(theme: IPartialTheme, depComments: boolean = false): ITheme {\n _theme = createTheme(theme, depComments);\n\n // Invoke the legacy method of theming the page as well.\n legacyLoadTheme({ ..._theme.palette, ..._theme.semanticColors, ..._theme.effects, ..._loadFonts(_theme) });\n\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n\n _onThemeChangeCallbacks.forEach((callback: (theme: ITheme) => void) => {\n try {\n callback(_theme);\n } catch (e) {\n // don't let a bad callback break everything else\n }\n });\n\n return _theme;\n}\n\n/**\n * Loads font variables into a JSON object.\n * @param theme - The theme object\n */\nfunction _loadFonts(theme: ITheme): { [name: string]: string } {\n const lines: { [key: string]: string } = {};\n\n for (const fontName of Object.keys(theme.fonts)) {\n const font: IRawStyle = theme.fonts[fontName as keyof IFontStyles];\n\n for (const propName of Object.keys(font)) {\n const name: string = fontName + propName.charAt(0).toUpperCase() + propName.slice(1);\n let value = font[propName as keyof IRawStyle] as string;\n\n if (propName === 'fontSize' && typeof value === 'number') {\n // if it's a number, convert it to px by default like our theming system does\n value = value + 'px';\n }\n lines[name] = value;\n }\n }\n return lines;\n}\n","// This file mimics styles and mixins from _General.Mixins.scss\n\nimport { IRawStyle } from '@uifabric/merge-styles';\n\nexport const normalize: IRawStyle = {\n boxShadow: 'none',\n margin: 0,\n padding: 0,\n boxSizing: 'border-box',\n};\n\nexport const noWrap: IRawStyle = {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n};\n","import { IStyle } from '@uifabric/merge-styles';\n\n/**\n * Generates placeholder style for each of the browsers supported by office-ui-fabric-react.\n * @param styles - The style to use.\n * @returns The placeholder style object for each browser depending on the placeholder directive it uses.\n */\nexport function getPlaceholderStyles(styles: IStyle): IStyle {\n return {\n selectors: {\n '::placeholder': styles, // Chrome, Safari, Opera, Firefox\n ':-ms-input-placeholder': styles, // IE 10+\n '::-ms-input-placeholder': styles, // Edge\n },\n };\n}\n","/* eslint-disable no-console */\n\nlet _warningCallback: ((message: string) => void) | undefined = undefined;\n\nexport type ISettingsMap<T> = { [P in keyof T]?: string };\n\n/**\n * Sends a warning to console, if the api is present.\n *\n * @public\n * @param message - Warning message.\n */\nexport function warn(message: string): void {\n if (_warningCallback && process.env.NODE_ENV !== 'production') {\n _warningCallback(message);\n } else if (console && console.warn) {\n console.warn(message);\n }\n}\n\n/**\n * Configures the warning callback. Passing in undefined will reset it to use the default\n * console.warn function.\n *\n * @public\n * @param warningCallback - Callback to override the generated warnings.\n */\nexport function setWarningCallback(warningCallback?: (message: string) => void): void {\n _warningCallback = warningCallback;\n}\n","import { GlobalSettings, warn } from '@uifabric/utilities';\nimport { IRawStyle, IFontFace, fontFace, mergeStyles, Stylesheet } from '@uifabric/merge-styles';\n\nexport interface IIconSubset {\n fontFace?: IFontFace;\n icons: {\n [key: string]: string | JSX.Element;\n };\n\n style?: IRawStyle;\n /**\n * Indicates to the icon renderer that it is safe to merge any props on the original `Icon` element\n * onto the child content element registered for the icon which are valid for HTML images.\n */\n mergeImageProps?: boolean;\n}\n\nexport interface IIconSubsetRecord extends IIconSubset {\n isRegistered?: boolean;\n className?: string;\n}\n\nexport interface IIconRecord {\n code: string | undefined;\n subset: IIconSubsetRecord;\n}\n\nexport interface IIconOptions {\n /**\n * By default, registering the same set of icons will generate a console warning per duplicate icon\n * registered, because this scenario can create unexpected consequences.\n *\n * Some scenarios include:\n *\n * Icon set was previously registered using a different base url.\n * Icon set was previously registered but a different version was provided.\n * Icons in a previous registered set overlap with a new set.\n *\n * To simply ignore previously registered icons, you can specify to disable warnings. This means\n * that if an icon which was previous registered is registered again, it will be silently ignored.\n * However, consider whether the problems listed above will cause issues.\n **/\n disableWarnings: boolean;\n\n /**\n * @deprecated\n * Use 'disableWarnings' instead.\n */\n warnOnMissingIcons?: boolean;\n}\n\nexport interface IIconRecords {\n __options: IIconOptions;\n __remapped: { [key: string]: string };\n [key: string]: IIconRecord | {};\n}\n\nconst ICON_SETTING_NAME = 'icons';\n\nconst _iconSettings = GlobalSettings.getValue<IIconRecords>(ICON_SETTING_NAME, {\n __options: {\n disableWarnings: false,\n warnOnMissingIcons: true,\n },\n __remapped: {},\n});\n\n// Reset icon registration on stylesheet resets.\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => {\n for (const name in _iconSettings) {\n if (_iconSettings.hasOwnProperty(name) && !!(_iconSettings[name] as IIconRecord).subset) {\n (_iconSettings[name] as IIconRecord).subset.className = undefined;\n }\n }\n });\n}\n\n/**\n * Normalizes an icon name for consistent mapping.\n * Current implementation is to convert the icon name to lower case.\n *\n * @param name - Icon name to normalize.\n * @returns {string} Normalized icon name to use for indexing and mapping.\n */\nconst normalizeIconName = (name: string): string => name.toLowerCase();\n\n/**\n * Registers a given subset of icons.\n *\n * @param iconSubset - the icon subset definition.\n */\nexport function registerIcons(iconSubset: IIconSubset, options?: Partial<IIconOptions>): void {\n let subset = {\n ...iconSubset,\n isRegistered: false,\n className: undefined,\n };\n let { icons } = iconSubset;\n\n // Grab options, optionally mix user provided ones on top.\n options = options ? { ..._iconSettings.__options, ...options } : _iconSettings.__options;\n\n for (const iconName in icons) {\n if (icons.hasOwnProperty(iconName)) {\n const code = icons[iconName];\n const normalizedIconName = normalizeIconName(iconName);\n\n if (_iconSettings[normalizedIconName]) {\n _warnDuplicateIcon(iconName);\n } else {\n _iconSettings[normalizedIconName] = {\n code,\n subset,\n } as IIconRecord;\n }\n }\n }\n}\n\n/**\n * Unregisters icons by name.\n *\n * @param iconNames - List of icons to unregister.\n */\nexport function unregisterIcons(iconNames: string[]): void {\n const options = _iconSettings.__options;\n\n for (const iconName of iconNames) {\n const normalizedIconName = normalizeIconName(iconName);\n if (_iconSettings[normalizedIconName]) {\n delete _iconSettings[normalizedIconName];\n } else {\n // Warn that we are trying to delete an icon that doesn't exist\n if (!options.disableWarnings) {\n warn(`The icon \"${iconName}\" tried to unregister but was not registered.`);\n }\n }\n\n // Delete any aliases for this iconName\n if (_iconSettings.__remapped[normalizedIconName]) {\n delete _iconSettings.__remapped[normalizedIconName];\n }\n\n // Delete any items that were an alias for this iconName\n Object.keys(_iconSettings.__remapped).forEach((key: string) => {\n if (_iconSettings.__remapped[key] === normalizedIconName) {\n delete _iconSettings.__remapped[key];\n }\n });\n }\n}\n\n/**\n * Remaps one icon name to another.\n */\nexport function registerIconAlias(iconName: string, mappedToName: string): void {\n _iconSettings.__remapped[normalizeIconName(iconName)] = normalizeIconName(mappedToName);\n}\n\n/**\n * Gets an icon definition. If an icon is requested but the subset has yet to be registered,\n * it will get registered immediately.\n *\n * @public\n * @param name - Name of icon.\n */\nexport function getIcon(name?: string): IIconRecord | undefined {\n let icon: IIconRecord | undefined = undefined;\n const options = _iconSettings.__options;\n\n name = name ? normalizeIconName(name) : '';\n name = _iconSettings.__remapped[name] || name;\n\n if (name) {\n icon = _iconSettings[name!] as IIconRecord;\n\n if (icon) {\n let { subset } = icon;\n if (subset && subset.fontFace) {\n if (!subset.isRegistered) {\n fontFace(subset.fontFace);\n subset.isRegistered = true;\n }\n\n if (!subset.className) {\n subset.className = mergeStyles(subset.style, {\n fontFamily: subset.fontFace.fontFamily,\n fontWeight: subset.fontFace.fontWeight || 'normal',\n fontStyle: subset.fontFace.fontStyle || 'normal',\n });\n }\n }\n } else {\n // eslint-disable-next-line deprecation/deprecation\n if (!options.disableWarnings && options.warnOnMissingIcons) {\n warn(\n `The icon \"${name}\" was used but not registered. See https://github.com/microsoft/fluentui/wiki/Using-icons for more information.`,\n );\n }\n }\n }\n\n return icon;\n}\n\n/**\n * Sets the icon options.\n *\n * @public\n */\nexport function setIconOptions(options: Partial<IIconOptions>): void {\n _iconSettings.__options = {\n ..._iconSettings.__options,\n ...options,\n };\n}\n\nlet _missingIcons: string[] = [];\nlet _missingIconsTimer: number | undefined = undefined;\n\nfunction _warnDuplicateIcon(iconName: string): void {\n const options = _iconSettings.__options;\n const warningDelay = 2000;\n const maxIconsInMessage = 10;\n\n if (!options.disableWarnings) {\n _missingIcons.push(iconName);\n if (_missingIconsTimer === undefined) {\n _missingIconsTimer = setTimeout(() => {\n warn(\n `Some icons were re-registered. Applications should only call registerIcons for any given ` +\n `icon once. Redefining what an icon is may have unintended consequences. Duplicates ` +\n `include: \\n` +\n _missingIcons.slice(0, maxIconsInMessage).join(', ') +\n (_missingIcons.length > maxIconsInMessage ? ` (+ ${_missingIcons.length - maxIconsInMessage} more)` : ''),\n );\n _missingIconsTimer = undefined;\n _missingIcons = [];\n }, warningDelay);\n }\n }\n}\n","import { IStyleSet, IConcatenatedStyleSet } from './IStyleSet';\nimport { IStyleBase, IStyle } from './IStyle';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet - The first style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet>(\n styleSet: TStyleSet | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> &\n ObjectOnly<TStyleSet2> &\n ObjectOnly<TStyleSet3> &\n ObjectOnly<TStyleSet4> &\n ObjectOnly<TStyleSet5>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n * @param styleSet6 - The sixth set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5, TStyleSet6>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n styleSet6: TStyleSet6 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> &\n ObjectOnly<TStyleSet2> &\n ObjectOnly<TStyleSet3> &\n ObjectOnly<TStyleSet4> &\n ObjectOnly<TStyleSet5> &\n ObjectOnly<TStyleSet6>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any> {\n if (styleSets && styleSets.length === 1 && styleSets[0] && !(styleSets[0] as IStyleSet).subComponentStyles) {\n return styleSets[0] as IConcatenatedStyleSet<any>;\n }\n\n const mergedSet: IConcatenatedStyleSet<any> = {};\n\n // We process sub component styles in two phases. First we collect them, then we combine them into 1 style function.\n const workingSubcomponentStyles: { [key: string]: Array<IStyleFunctionOrObject<any, any>> } = {};\n\n for (const currentSet of styleSets) {\n if (currentSet) {\n for (const prop in currentSet) {\n if (currentSet.hasOwnProperty(prop)) {\n if (prop === 'subComponentStyles' && currentSet.subComponentStyles !== undefined) {\n // subcomponent styles - style functions or objects\n\n const currentComponentStyles = currentSet.subComponentStyles;\n for (const subCompProp in currentComponentStyles) {\n if (currentComponentStyles.hasOwnProperty(subCompProp)) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n workingSubcomponentStyles[subCompProp].push(currentComponentStyles[subCompProp]);\n } else {\n workingSubcomponentStyles[subCompProp] = [currentComponentStyles[subCompProp]];\n }\n }\n }\n\n continue;\n }\n\n // the as any casts below is a workaround for ts 2.8.\n // todo: remove cast to any in ts 2.9.\n const mergedValue: IStyle = (mergedSet as any)[prop];\n const currentValue = (currentSet as any)[prop];\n\n if (mergedValue === undefined) {\n (mergedSet as any)[prop] = currentValue;\n } else {\n (mergedSet as any)[prop] = [\n // https://github.com/Microsoft/TypeScript/issues/25474\n ...(Array.isArray(mergedValue) ? mergedValue : [mergedValue as IStyleBase]),\n ...(Array.isArray(currentValue) ? currentValue : [currentValue as IStyleBase]),\n ];\n }\n }\n }\n }\n }\n\n if (Object.keys(workingSubcomponentStyles).length > 0) {\n mergedSet.subComponentStyles = {};\n const mergedSubStyles = mergedSet.subComponentStyles;\n\n // now we process the subcomponent styles if there are any\n for (const subCompProp in workingSubcomponentStyles) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n const workingSet = workingSubcomponentStyles[subCompProp];\n mergedSubStyles[subCompProp] = (styleProps: any) => {\n return concatStyleSets(\n ...workingSet.map((styleFunctionOrObject: IStyleFunctionOrObject<any, any>) =>\n typeof styleFunctionOrObject === 'function' ? styleFunctionOrObject(styleProps) : styleFunctionOrObject,\n ),\n );\n };\n }\n }\n }\n\n return mergedSet;\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { IStyleSet } from './IStyleSet';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { DeepPartial } from './DeepPartial';\n\n/**\n * Concatenates style sets into one, but resolves functional sets using the given props.\n * @param styleProps - Props used to resolve functional sets.\n * @param allStyles - Style sets, which can be functions or objects.\n */\nexport function concatStyleSetsWithProps<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>>(\n styleProps: TStyleProps,\n ...allStyles: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[]\n): DeepPartial<TStyleSet> {\n const result: DeepPartial<TStyleSet>[] = [];\n for (const styles of allStyles) {\n if (styles) {\n result.push(typeof styles === 'function' ? styles(styleProps) : styles);\n }\n }\n if (result.length === 1) {\n return result[0] as DeepPartial<TStyleSet>;\n } else if (result.length) {\n // cliffkoh: I cannot figure out how to avoid the cast to any here.\n // It is something to do with the use of Omit in IStyleSet.\n // It might not be necessary once Omit becomes part of lib.d.ts (when we remove our own Omit and rely on\n // the official version).\n return concatStyleSets(...(result as any)) as any;\n }\n\n return {};\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { extractStyleParts } from './extractStyleParts';\nimport { IStyle } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { IConcatenatedStyleSet, IProcessedStyleSet, IStyleSet } from './IStyleSet';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { applyRegistration, styleToRegistration } from './styleToClassName';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet - The first style set to be merged and reigstered.\n */\nexport function mergeStyleSets<TStyleSet>(\n styleSet: TStyleSet | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n * @param styleSet4 - The fourth style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IProcessedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any> {\n return mergeCssSets(styleSets as any, getStyleOptions());\n}\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet>(\n styleSets: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2>(\n styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet1 & TStyleSet2>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet1 & TStyleSet2 & TStyleSet3>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n TStyleSet4 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet>(\n styleSet: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: Array<IStyleSet | undefined | false | null>,\n options?: IStyleOptions,\n): IProcessedStyleSet<any> {\n const classNameSet: IProcessedStyleSet<any> = { subComponentStyles: {} };\n\n const styleSet = styleSets[0];\n\n if (!styleSet && styleSets.length <= 1) {\n return { subComponentStyles: {} } as any;\n }\n\n const concatenatedStyleSet = concatStyleSets(...styleSets);\n\n const registrations = [];\n\n for (const styleSetArea in concatenatedStyleSet) {\n if (concatenatedStyleSet.hasOwnProperty(styleSetArea)) {\n if (styleSetArea === 'subComponentStyles') {\n classNameSet.subComponentStyles = (concatenatedStyleSet as IConcatenatedStyleSet<any>).subComponentStyles || {};\n continue;\n }\n\n const styles: IStyle = (concatenatedStyleSet as any)[styleSetArea];\n\n const { classes, objects } = extractStyleParts(styles);\n\n if (objects?.length) {\n const registration = styleToRegistration(options || {}, { displayName: styleSetArea }, objects);\n\n if (registration) {\n registrations.push(registration);\n classNameSet[styleSetArea] = classes.concat([registration.className]).join(' ');\n }\n } else {\n classNameSet[styleSetArea] = classes.join(' ');\n }\n }\n }\n\n for (const registration of registrations) {\n if (registration) {\n applyRegistration(registration, options?.specificityMultiplier);\n }\n }\n\n return classNameSet as any;\n}\n","// Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport { IIconOptions, IIconSubset, registerIcons } from '@uifabric/styling';\n\nexport function initializeIcons(baseUrl: string = '', options?: IIconOptions): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none',\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons\"`,\n src: `url('${baseUrl}fabric-icons-a13498cf.woff') format('woff')`,\n },\n icons: {\n GlobalNavButton: '\\uE700',\n ChevronDown: '\\uE70D',\n ChevronUp: '\\uE70E',\n Edit: '\\uE70F',\n Add: '\\uE710',\n Cancel: '\\uE711',\n More: '\\uE712',\n Settings: '\\uE713',\n Mail: '\\uE715',\n Filter: '\\uE71C',\n Search: '\\uE721',\n Share: '\\uE72D',\n BlockedSite: '\\uE72F',\n FavoriteStar: '\\uE734',\n FavoriteStarFill: '\\uE735',\n CheckMark: '\\uE73E',\n Delete: '\\uE74D',\n ChevronLeft: '\\uE76B',\n ChevronRight: '\\uE76C',\n Calendar: '\\uE787',\n Megaphone: '\\uE789',\n Undo: '\\uE7A7',\n Flag: '\\uE7C1',\n Page: '\\uE7C3',\n Pinned: '\\uE840',\n View: '\\uE890',\n Clear: '\\uE894',\n Download: '\\uE896',\n Upload: '\\uE898',\n Folder: '\\uE8B7',\n Sort: '\\uE8CB',\n AlignRight: '\\uE8E2',\n AlignLeft: '\\uE8E4',\n Tag: '\\uE8EC',\n AddFriend: '\\uE8FA',\n Info: '\\uE946',\n SortLines: '\\uE9D0',\n List: '\\uEA37',\n CircleRing: '\\uEA3A',\n Heart: '\\uEB51',\n HeartFill: '\\uEB52',\n Tiles: '\\uECA5',\n Embed: '\\uECCE',\n Glimmer: '\\uECF4',\n Ascending: '\\uEDC0',\n Descending: '\\uEDC1',\n SortUp: '\\uEE68',\n SortDown: '\\uEE69',\n SyncToPC: '\\uEE6E',\n LargeGrid: '\\uEECB',\n SkypeCheck: '\\uEF80',\n SkypeClock: '\\uEF81',\n SkypeMinus: '\\uEF82',\n ClearFilter: '\\uEF8F',\n Flow: '\\uEF90',\n StatusCircleCheckmark: '\\uF13E',\n MoreVertical: '\\uF2BC',\n },\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-0\"`,\n src: `url('${baseUrl}fabric-icons-0-467ee27f.woff') format('woff')`\n },\n icons: {\n 'PageLink': '\\uE302',\n 'CommentSolid': '\\uE30E',\n 'ChangeEntitlements': '\\uE310',\n 'Installation': '\\uE311',\n 'WebAppBuilderModule': '\\uE313',\n 'WebAppBuilderFragment': '\\uE314',\n 'WebAppBuilderSlot': '\\uE315',\n 'BullseyeTargetEdit': '\\uE319',\n 'WebAppBuilderFragmentCreate': '\\uE31B',\n 'PageData': '\\uE31C',\n 'PageHeaderEdit': '\\uE31D',\n 'ProductList': '\\uE31E',\n 'UnpublishContent': '\\uE31F',\n 'DependencyAdd': '\\uE344',\n 'DependencyRemove': '\\uE345',\n 'EntitlementPolicy': '\\uE346',\n 'EntitlementRedemption': '\\uE347',\n 'SchoolDataSyncLogo': '\\uE34C',\n 'PinSolid12': '\\uE352',\n 'PinSolidOff12': '\\uE353',\n 'AddLink': '\\uE35E',\n 'SharepointAppIcon16': '\\uE365',\n 'DataflowsLink': '\\uE366',\n 'TimePicker': '\\uE367',\n 'UserWarning': '\\uE368',\n 'ComplianceAudit': '\\uE369',\n 'InternetSharing': '\\uE704',\n 'Brightness': '\\uE706',\n 'MapPin': '\\uE707',\n 'Airplane': '\\uE709',\n 'Tablet': '\\uE70A',\n 'QuickNote': '\\uE70B',\n 'Video': '\\uE714',\n 'People': '\\uE716',\n 'Phone': '\\uE717',\n 'Pin': '\\uE718',\n 'Shop': '\\uE719',\n 'Stop': '\\uE71A',\n 'Link': '\\uE71B',\n 'AllApps': '\\uE71D',\n 'Zoom': '\\uE71E',\n 'ZoomOut': '\\uE71F',\n 'Microphone': '\\uE720',\n 'Camera': '\\uE722',\n 'Attach': '\\uE723',\n 'Send': '\\uE724',\n 'FavoriteList': '\\uE728',\n 'PageSolid': '\\uE729',\n 'Forward': '\\uE72A',\n 'Back': '\\uE72B',\n 'Refresh': '\\uE72C',\n 'Lock': '\\uE72E',\n 'ReportHacked': '\\uE730',\n 'EMI': '\\uE731',\n 'MiniLink': '\\uE732',\n 'Blocked': '\\uE733',\n 'ReadingMode': '\\uE736',\n 'Favicon': '\\uE737',\n 'Remove': '\\uE738',\n 'Checkbox': '\\uE739',\n 'CheckboxComposite': '\\uE73A',\n 'CheckboxFill': '\\uE73B',\n 'CheckboxIndeterminate': '\\uE73C',\n 'CheckboxCompositeReversed': '\\uE73D',\n 'BackToWindow': '\\uE73F',\n 'FullScreen': '\\uE740',\n 'Print': '\\uE749',\n 'Up': '\\uE74A',\n 'Down': '\\uE74B',\n 'OEM': '\\uE74C',\n 'Save': '\\uE74E',\n 'ReturnKey': '\\uE751',\n 'Cloud': '\\uE753',\n 'Flashlight': '\\uE754',\n 'CommandPrompt': '\\uE756',\n 'Sad': '\\uE757',\n 'RealEstate': '\\uE758',\n 'SIPMove': '\\uE759',\n 'EraseTool': '\\uE75C',\n 'GripperTool': '\\uE75E',\n 'Dialpad': '\\uE75F',\n 'PageLeft': '\\uE760',\n 'PageRight': '\\uE761',\n 'MultiSelect': '\\uE762',\n 'KeyboardClassic': '\\uE765',\n 'Play': '\\uE768',\n 'Pause': '\\uE769',\n 'InkingTool': '\\uE76D',\n 'Emoji2': '\\uE76E',\n 'GripperBarHorizontal': '\\uE76F',\n 'System': '\\uE770',\n 'Personalize': '\\uE771',\n 'SearchAndApps': '\\uE773',\n 'Globe': '\\uE774',\n 'EaseOfAccess': '\\uE776',\n 'ContactInfo': '\\uE779',\n 'Unpin': '\\uE77A',\n 'Contact': '\\uE77B',\n 'Memo': '\\uE77C',\n 'IncomingCall': '\\uE77E'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-1\"`,\n src: `url('${baseUrl}fabric-icons-1-4d521695.woff') format('woff')`\n },\n icons: {\n 'Paste': '\\uE77F',\n 'WindowsLogo': '\\uE782',\n 'Error': '\\uE783',\n 'GripperBarVertical': '\\uE784',\n 'Unlock': '\\uE785',\n 'Slideshow': '\\uE786',\n 'Trim': '\\uE78A',\n 'AutoEnhanceOn': '\\uE78D',\n 'AutoEnhanceOff': '\\uE78E',\n 'Color': '\\uE790',\n 'SaveAs': '\\uE792',\n 'Light': '\\uE793',\n 'Filters': '\\uE795',\n 'AspectRatio': '\\uE799',\n 'Contrast': '\\uE7A1',\n 'Redo': '\\uE7A6',\n 'Crop': '\\uE7A8',\n 'PhotoCollection': '\\uE7AA',\n 'Album': '\\uE7AB',\n 'Rotate': '\\uE7AD',\n 'PanoIndicator': '\\uE7B0',\n 'Translate': '\\uE7B2',\n 'RedEye': '\\uE7B3',\n 'ViewOriginal': '\\uE7B4',\n 'ThumbnailView': '\\uE7B6',\n 'Package': '\\uE7B8',\n 'Telemarketer': '\\uE7B9',\n 'Warning': '\\uE7BA',\n 'Financial': '\\uE7BB',\n 'Education': '\\uE7BE',\n 'ShoppingCart': '\\uE7BF',\n 'Train': '\\uE7C0',\n 'Move': '\\uE7C2',\n 'TouchPointer': '\\uE7C9',\n 'Merge': '\\uE7D5',\n 'TurnRight': '\\uE7DB',\n 'Ferry': '\\uE7E3',\n 'Highlight': '\\uE7E6',\n 'PowerButton': '\\uE7E8',\n 'Tab': '\\uE7E9',\n 'Admin': '\\uE7EF',\n 'TVMonitor': '\\uE7F4',\n 'Speakers': '\\uE7F5',\n 'Game': '\\uE7FC',\n 'HorizontalTabKey': '\\uE7FD',\n 'UnstackSelected': '\\uE7FE',\n 'StackIndicator': '\\uE7FF',\n 'Nav2DMapView': '\\uE800',\n 'StreetsideSplitMinimize': '\\uE802',\n 'Car': '\\uE804',\n 'Bus': '\\uE806',\n 'EatDrink': '\\uE807',\n 'SeeDo': '\\uE808',\n 'LocationCircle': '\\uE80E',\n 'Home': '\\uE80F',\n 'SwitcherStartEnd': '\\uE810',\n 'ParkingLocation': '\\uE811',\n 'IncidentTriangle': '\\uE814',\n 'Touch': '\\uE815',\n 'MapDirections': '\\uE816',\n 'CaretHollow': '\\uE817',\n 'CaretSolid': '\\uE818',\n 'History': '\\uE81C',\n 'Location': '\\uE81D',\n 'MapLayers': '\\uE81E',\n 'SearchNearby': '\\uE820',\n 'Work': '\\uE821',\n 'Recent': '\\uE823',\n 'Hotel': '\\uE824',\n 'Bank': '\\uE825',\n 'LocationDot': '\\uE827',\n 'Dictionary': '\\uE82D',\n 'ChromeBack': '\\uE830',\n 'FolderOpen': '\\uE838',\n 'PinnedFill': '\\uE842',\n 'RevToggleKey': '\\uE845',\n 'USB': '\\uE88E',\n 'Previous': '\\uE892',\n 'Next': '\\uE893',\n 'Sync': '\\uE895',\n 'Help': '\\uE897',\n 'Emoji': '\\uE899',\n 'MailForward': '\\uE89C',\n 'ClosePane': '\\uE89F',\n 'OpenPane': '\\uE8A0',\n 'PreviewLink': '\\uE8A1',\n 'ZoomIn': '\\uE8A3',\n 'Bookmarks': '\\uE8A4',\n 'Document': '\\uE8A5',\n 'ProtectedDocument': '\\uE8A6',\n 'OpenInNewWindow': '\\uE8A7',\n 'MailFill': '\\uE8A8',\n 'ViewAll': '\\uE8A9',\n 'Switch': '\\uE8AB',\n 'Rename': '\\uE8AC',\n 'Go': '\\uE8AD',\n 'Remote': '\\uE8AF',\n 'SelectAll': '\\uE8B3',\n 'Orientation': '\\uE8B4',\n 'Import': '\\uE8B5'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-2\"`,\n src: `url('${baseUrl}fabric-icons-2-63c99abf.woff') format('woff')`\n },\n icons: {\n 'Picture': '\\uE8B9',\n 'ChromeClose': '\\uE8BB',\n 'ShowResults': '\\uE8BC',\n 'Message': '\\uE8BD',\n 'CalendarDay': '\\uE8BF',\n 'CalendarWeek': '\\uE8C0',\n 'MailReplyAll': '\\uE8C2',\n 'Read': '\\uE8C3',\n 'Cut': '\\uE8C6',\n 'PaymentCard': '\\uE8C7',\n 'Copy': '\\uE8C8',\n 'Important': '\\uE8C9',\n 'MailReply': '\\uE8CA',\n 'GotoToday': '\\uE8D1',\n 'Font': '\\uE8D2',\n 'FontColor': '\\uE8D3',\n 'FolderFill': '\\uE8D5',\n 'Permissions': '\\uE8D7',\n 'DisableUpdates': '\\uE8D8',\n 'Unfavorite': '\\uE8D9',\n 'Italic': '\\uE8DB',\n 'Underline': '\\uE8DC',\n 'Bold': '\\uE8DD',\n 'MoveToFolder': '\\uE8DE',\n 'Dislike': '\\uE8E0',\n 'Like': '\\uE8E1',\n 'AlignCenter': '\\uE8E3',\n 'OpenFile': '\\uE8E5',\n 'ClearSelection': '\\uE8E6',\n 'FontDecrease': '\\uE8E7',\n 'FontIncrease': '\\uE8E8',\n 'FontSize': '\\uE8E9',\n 'CellPhone': '\\uE8EA',\n 'RepeatOne': '\\uE8ED',\n 'RepeatAll': '\\uE8EE',\n 'Calculator': '\\uE8EF',\n 'Library': '\\uE8F1',\n 'PostUpdate': '\\uE8F3',\n 'NewFolder': '\\uE8F4',\n 'CalendarReply': '\\uE8F5',\n 'UnsyncFolder': '\\uE8F6',\n 'SyncFolder': '\\uE8F7',\n 'BlockContact': '\\uE8F8',\n 'Accept': '\\uE8FB',\n 'BulletedList': '\\uE8FD',\n 'Preview': '\\uE8FF',\n 'News': '\\uE900',\n 'Chat': '\\uE901',\n 'Group': '\\uE902',\n 'World': '\\uE909',\n 'Comment': '\\uE90A',\n 'DockLeft': '\\uE90C',\n 'DockRight': '\\uE90D',\n 'Repair': '\\uE90F',\n 'Accounts': '\\uE910',\n 'Street': '\\uE913',\n 'RadioBullet': '\\uE915',\n 'Stopwatch': '\\uE916',\n 'Clock': '\\uE917',\n 'WorldClock': '\\uE918',\n 'AlarmClock': '\\uE919',\n 'Photo': '\\uE91B',\n 'ActionCenter': '\\uE91C',\n 'Hospital': '\\uE91D',\n 'Timer': '\\uE91E',\n 'FullCircleMask': '\\uE91F',\n 'LocationFill': '\\uE920',\n 'ChromeMinimize': '\\uE921',\n 'ChromeRestore': '\\uE923',\n 'Annotation': '\\uE924',\n 'Fingerprint': '\\uE928',\n 'Handwriting': '\\uE929',\n 'ChromeFullScreen': '\\uE92D',\n 'Completed': '\\uE930',\n 'Label': '\\uE932',\n 'FlickDown': '\\uE935',\n 'FlickUp': '\\uE936',\n 'FlickLeft': '\\uE937',\n 'FlickRight': '\\uE938',\n 'MiniExpand': '\\uE93A',\n 'MiniContract': '\\uE93B',\n 'Streaming': '\\uE93E',\n 'MusicInCollection': '\\uE940',\n 'OneDriveLogo': '\\uE941',\n 'CompassNW': '\\uE942',\n 'Code': '\\uE943',\n 'LightningBolt': '\\uE945',\n 'CalculatorMultiply': '\\uE947',\n 'CalculatorAddition': '\\uE948',\n 'CalculatorSubtract': '\\uE949',\n 'CalculatorPercentage': '\\uE94C',\n 'CalculatorEqualTo': '\\uE94E',\n 'PrintfaxPrinterFile': '\\uE956',\n 'StorageOptical': '\\uE958',\n 'Communications': '\\uE95A',\n 'Headset': '\\uE95B',\n 'Health': '\\uE95E',\n 'Webcam2': '\\uE960',\n 'FrontCamera': '\\uE96B',\n 'ChevronUpSmall': '\\uE96D'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-3\"`,\n src: `url('${baseUrl}fabric-icons-3-089e217a.woff') format('woff')`\n },\n icons: {\n 'ChevronDownSmall': '\\uE96E',\n 'ChevronLeftSmall': '\\uE96F',\n 'ChevronRightSmall': '\\uE970',\n 'ChevronUpMed': '\\uE971',\n 'ChevronDownMed': '\\uE972',\n 'ChevronLeftMed': '\\uE973',\n 'ChevronRightMed': '\\uE974',\n 'Devices2': '\\uE975',\n 'PC1': '\\uE977',\n 'PresenceChickletVideo': '\\uE979',\n 'Reply': '\\uE97A',\n 'HalfAlpha': '\\uE97E',\n 'ConstructionCone': '\\uE98F',\n 'DoubleChevronLeftMed': '\\uE991',\n 'Volume0': '\\uE992',\n 'Volume1': '\\uE993',\n 'Volume2': '\\uE994',\n 'Volume3': '\\uE995',\n 'Chart': '\\uE999',\n 'Robot': '\\uE99A',\n 'Manufacturing': '\\uE99C',\n 'LockSolid': '\\uE9A2',\n 'FitPage': '\\uE9A6',\n 'FitWidth': '\\uE9A7',\n 'BidiLtr': '\\uE9AA',\n 'BidiRtl': '\\uE9AB',\n 'RightDoubleQuote': '\\uE9B1',\n 'Sunny': '\\uE9BD',\n 'CloudWeather': '\\uE9BE',\n 'Cloudy': '\\uE9BF',\n 'PartlyCloudyDay': '\\uE9C0',\n 'PartlyCloudyNight': '\\uE9C1',\n 'ClearNight': '\\uE9C2',\n 'RainShowersDay': '\\uE9C3',\n 'Rain': '\\uE9C4',\n 'Thunderstorms': '\\uE9C6',\n 'RainSnow': '\\uE9C7',\n 'Snow': '\\uE9C8',\n 'BlowingSnow': '\\uE9C9',\n 'Frigid': '\\uE9CA',\n 'Fog': '\\uE9CB',\n 'Squalls': '\\uE9CC',\n 'Duststorm': '\\uE9CD',\n 'Unknown': '\\uE9CE',\n 'Precipitation': '\\uE9CF',\n 'Ribbon': '\\uE9D1',\n 'AreaChart': '\\uE9D2',\n 'Assign': '\\uE9D3',\n 'FlowChart': '\\uE9D4',\n 'CheckList': '\\uE9D5',\n 'Diagnostic': '\\uE9D9',\n 'Generate': '\\uE9DA',\n 'LineChart': '\\uE9E6',\n 'Equalizer': '\\uE9E9',\n 'BarChartHorizontal': '\\uE9EB',\n 'BarChartVertical': '\\uE9EC',\n 'Freezing': '\\uE9EF',\n 'FunnelChart': '\\uE9F1',\n 'Processing': '\\uE9F5',\n 'Quantity': '\\uE9F8',\n 'ReportDocument': '\\uE9F9',\n 'StackColumnChart': '\\uE9FC',\n 'SnowShowerDay': '\\uE9FD',\n 'HailDay': '\\uEA00',\n 'WorkFlow': '\\uEA01',\n 'HourGlass': '\\uEA03',\n 'StoreLogoMed20': '\\uEA04',\n 'TimeSheet': '\\uEA05',\n 'TriangleSolid': '\\uEA08',\n 'UpgradeAnalysis': '\\uEA0B',\n 'VideoSolid': '\\uEA0C',\n 'RainShowersNight': '\\uEA0F',\n 'SnowShowerNight': '\\uEA11',\n 'Teamwork': '\\uEA12',\n 'HailNight': '\\uEA13',\n 'PeopleAdd': '\\uEA15',\n 'Glasses': '\\uEA16',\n 'DateTime2': '\\uEA17',\n 'Shield': '\\uEA18',\n 'Header1': '\\uEA19',\n 'PageAdd': '\\uEA1A',\n 'NumberedList': '\\uEA1C',\n 'PowerBILogo': '\\uEA1E',\n 'Info2': '\\uEA1F',\n 'MusicInCollectionFill': '\\uEA36',\n 'Asterisk': '\\uEA38',\n 'ErrorBadge': '\\uEA39',\n 'CircleFill': '\\uEA3B',\n 'Record2': '\\uEA3F',\n 'AllAppsMirrored': '\\uEA40',\n 'BookmarksMirrored': '\\uEA41',\n 'BulletedListMirrored': '\\uEA42',\n 'CaretHollowMirrored': '\\uEA45',\n 'CaretSolidMirrored': '\\uEA46',\n 'ChromeBackMirrored': '\\uEA47',\n 'ClearSelectionMirrored': '\\uEA48',\n 'ClosePaneMirrored': '\\uEA49',\n 'DockLeftMirrored': '\\uEA4C',\n 'DoubleChevronLeftMedMirrored': '\\uEA4D',\n 'GoMirrored': '\\uEA4F'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-4\"`,\n src: `url('${baseUrl}fabric-icons-4-a656cc0a.woff') format('woff')`\n },\n icons: {\n 'HelpMirrored': '\\uEA51',\n 'ImportMirrored': '\\uEA52',\n 'ImportAllMirrored': '\\uEA53',\n 'ListMirrored': '\\uEA55',\n 'MailForwardMirrored': '\\uEA56',\n 'MailReplyMirrored': '\\uEA57',\n 'MailReplyAllMirrored': '\\uEA58',\n 'MiniContractMirrored': '\\uEA59',\n 'MiniExpandMirrored': '\\uEA5A',\n 'OpenPaneMirrored': '\\uEA5B',\n 'ParkingLocationMirrored': '\\uEA5E',\n 'SendMirrored': '\\uEA63',\n 'ShowResultsMirrored': '\\uEA65',\n 'ThumbnailViewMirrored': '\\uEA67',\n 'Media': '\\uEA69',\n 'Devices3': '\\uEA6C',\n 'Focus': '\\uEA6F',\n 'VideoLightOff': '\\uEA74',\n 'Lightbulb': '\\uEA80',\n 'StatusTriangle': '\\uEA82',\n 'VolumeDisabled': '\\uEA85',\n 'Puzzle': '\\uEA86',\n 'EmojiNeutral': '\\uEA87',\n 'EmojiDisappointed': '\\uEA88',\n 'HomeSolid': '\\uEA8A',\n 'Ringer': '\\uEA8F',\n 'PDF': '\\uEA90',\n 'HeartBroken': '\\uEA92',\n 'StoreLogo16': '\\uEA96',\n 'MultiSelectMirrored': '\\uEA98',\n 'Broom': '\\uEA99',\n 'AddToShoppingList': '\\uEA9A',\n 'Cocktails': '\\uEA9D',\n 'Wines': '\\uEABF',\n 'Articles': '\\uEAC1',\n 'Cycling': '\\uEAC7',\n 'DietPlanNotebook': '\\uEAC8',\n 'Pill': '\\uEACB',\n 'ExerciseTracker': '\\uEACC',\n 'HandsFree': '\\uEAD0',\n 'Medical': '\\uEAD4',\n 'Running': '\\uEADA',\n 'Weights': '\\uEADB',\n 'Trackers': '\\uEADF',\n 'AddNotes': '\\uEAE3',\n 'AllCurrency': '\\uEAE4',\n 'BarChart4': '\\uEAE7',\n 'CirclePlus': '\\uEAEE',\n 'Coffee': '\\uEAEF',\n 'Cotton': '\\uEAF3',\n 'Market': '\\uEAFC',\n 'Money': '\\uEAFD',\n 'PieDouble': '\\uEB04',\n 'PieSingle': '\\uEB05',\n 'RemoveFilter': '\\uEB08',\n 'Savings': '\\uEB0B',\n 'Sell': '\\uEB0C',\n 'StockDown': '\\uEB0F',\n 'StockUp': '\\uEB11',\n 'Lamp': '\\uEB19',\n 'Source': '\\uEB1B',\n 'MSNVideos': '\\uEB1C',\n 'Cricket': '\\uEB1E',\n 'Golf': '\\uEB1F',\n 'Baseball': '\\uEB20',\n 'Soccer': '\\uEB21',\n 'MoreSports': '\\uEB22',\n 'AutoRacing': '\\uEB24',\n 'CollegeHoops': '\\uEB25',\n 'CollegeFootball': '\\uEB26',\n 'ProFootball': '\\uEB27',\n 'ProHockey': '\\uEB28',\n 'Rugby': '\\uEB2D',\n 'SubstitutionsIn': '\\uEB31',\n 'Tennis': '\\uEB33',\n 'Arrivals': '\\uEB34',\n 'Design': '\\uEB3C',\n 'Website': '\\uEB41',\n 'Drop': '\\uEB42',\n 'HistoricalWeather': '\\uEB43',\n 'SkiResorts': '\\uEB45',\n 'Snowflake': '\\uEB46',\n 'BusSolid': '\\uEB47',\n 'FerrySolid': '\\uEB48',\n 'AirplaneSolid': '\\uEB4C',\n 'TrainSolid': '\\uEB4D',\n 'Ticket': '\\uEB54',\n 'WifiWarning4': '\\uEB63',\n 'Devices4': '\\uEB66',\n 'AzureLogo': '\\uEB6A',\n 'BingLogo': '\\uEB6B',\n 'MSNLogo': '\\uEB6C',\n 'OutlookLogoInverse': '\\uEB6D',\n 'OfficeLogo': '\\uEB6E',\n 'SkypeLogo': '\\uEB6F',\n 'Door': '\\uEB75',\n 'EditMirrored': '\\uEB7E',\n 'GiftCard': '\\uEB8E',\n 'DoubleBookmark': '\\uEB8F',\n 'StatusErrorFull': '\\uEB90'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-5\"`,\n src: `url('${baseUrl}fabric-icons-5-f95ba260.woff') format('woff')`\n },\n icons: {\n 'Certificate': '\\uEB95',\n 'FastForward': '\\uEB9D',\n 'Rewind': '\\uEB9E',\n 'Photo2': '\\uEB9F',\n 'OpenSource': '\\uEBC2',\n 'Movers': '\\uEBCD',\n 'CloudDownload': '\\uEBD3',\n 'Family': '\\uEBDA',\n 'WindDirection': '\\uEBE6',\n 'Bug': '\\uEBE8',\n 'SiteScan': '\\uEBEC',\n 'BrowserScreenShot': '\\uEBED',\n 'F12DevTools': '\\uEBEE',\n 'CSS': '\\uEBEF',\n 'JS': '\\uEBF0',\n 'DeliveryTruck': '\\uEBF4',\n 'ReminderPerson': '\\uEBF7',\n 'ReminderGroup': '\\uEBF8',\n 'ReminderTime': '\\uEBF9',\n 'TabletMode': '\\uEBFC',\n 'Umbrella': '\\uEC04',\n 'NetworkTower': '\\uEC05',\n 'CityNext': '\\uEC06',\n 'CityNext2': '\\uEC07',\n 'Section': '\\uEC0C',\n 'OneNoteLogoInverse': '\\uEC0D',\n 'ToggleFilled': '\\uEC11',\n 'ToggleBorder': '\\uEC12',\n 'SliderThumb': '\\uEC13',\n 'ToggleThumb': '\\uEC14',\n 'Documentation': '\\uEC17',\n 'Badge': '\\uEC1B',\n 'Giftbox': '\\uEC1F',\n 'VisualStudioLogo': '\\uEC22',\n 'HomeGroup': '\\uEC26',\n 'ExcelLogoInverse': '\\uEC28',\n 'WordLogoInverse': '\\uEC29',\n 'PowerPointLogoInverse': '\\uEC2A',\n 'Cafe': '\\uEC32',\n 'SpeedHigh': '\\uEC4A',\n 'Commitments': '\\uEC4D',\n 'ThisPC': '\\uEC4E',\n 'MusicNote': '\\uEC4F',\n 'MicOff': '\\uEC54',\n 'PlaybackRate1x': '\\uEC57',\n 'EdgeLogo': '\\uEC60',\n 'CompletedSolid': '\\uEC61',\n 'AlbumRemove': '\\uEC62',\n 'MessageFill': '\\uEC70',\n 'TabletSelected': '\\uEC74',\n 'MobileSelected': '\\uEC75',\n 'LaptopSelected': '\\uEC76',\n 'TVMonitorSelected': '\\uEC77',\n 'DeveloperTools': '\\uEC7A',\n 'Shapes': '\\uEC7C',\n 'InsertTextBox': '\\uEC7D',\n 'LowerBrightness': '\\uEC8A',\n 'WebComponents': '\\uEC8B',\n 'OfflineStorage': '\\uEC8C',\n 'DOM': '\\uEC8D',\n 'CloudUpload': '\\uEC8E',\n 'ScrollUpDown': '\\uEC8F',\n 'DateTime': '\\uEC92',\n 'Event': '\\uECA3',\n 'Cake': '\\uECA4',\n 'Org': '\\uECA6',\n 'PartyLeader': '\\uECA7',\n 'DRM': '\\uECA8',\n 'CloudAdd': '\\uECA9',\n 'AppIconDefault': '\\uECAA',\n 'Photo2Add': '\\uECAB',\n 'Photo2Remove': '\\uECAC',\n 'Calories': '\\uECAD',\n 'POI': '\\uECAF',\n 'AddTo': '\\uECC8',\n 'RadioBtnOff': '\\uECCA',\n 'RadioBtnOn': '\\uECCB',\n 'ExploreContent': '\\uECCD',\n 'Product': '\\uECDC',\n 'ProgressLoopInner': '\\uECDE',\n 'ProgressLoopOuter': '\\uECDF',\n 'Blocked2': '\\uECE4',\n 'FangBody': '\\uECEB',\n 'Toolbox': '\\uECED',\n 'PageHeader': '\\uECEE',\n 'ChatInviteFriend': '\\uECFE',\n 'Brush': '\\uECFF',\n 'Shirt': '\\uED00',\n 'Crown': '\\uED01',\n 'Diamond': '\\uED02',\n 'ScaleUp': '\\uED09',\n 'QRCode': '\\uED14',\n 'Feedback': '\\uED15',\n 'SharepointLogoInverse': '\\uED18',\n 'YammerLogo': '\\uED19',\n 'Hide': '\\uED1A',\n 'Uneditable': '\\uED1D',\n 'ReturnToSession': '\\uED24',\n 'OpenFolderHorizontal': '\\uED25',\n 'CalendarMirrored': '\\uED28'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-6\"`,\n src: `url('${baseUrl}fabric-icons-6-ef6fd590.woff') format('woff')`\n },\n icons: {\n 'SwayLogoInverse': '\\uED29',\n 'OutOfOffice': '\\uED34',\n 'Trophy': '\\uED3F',\n 'ReopenPages': '\\uED50',\n 'EmojiTabSymbols': '\\uED58',\n 'AADLogo': '\\uED68',\n 'AccessLogo': '\\uED69',\n 'AdminALogoInverse32': '\\uED6A',\n 'AdminCLogoInverse32': '\\uED6B',\n 'AdminDLogoInverse32': '\\uED6C',\n 'AdminELogoInverse32': '\\uED6D',\n 'AdminLLogoInverse32': '\\uED6E',\n 'AdminMLogoInverse32': '\\uED6F',\n 'AdminOLogoInverse32': '\\uED70',\n 'AdminPLogoInverse32': '\\uED71',\n 'AdminSLogoInverse32': '\\uED72',\n 'AdminYLogoInverse32': '\\uED73',\n 'DelveLogoInverse': '\\uED76',\n 'ExchangeLogoInverse': '\\uED78',\n 'LyncLogo': '\\uED79',\n 'OfficeVideoLogoInverse': '\\uED7A',\n 'SocialListeningLogo': '\\uED7C',\n 'VisioLogoInverse': '\\uED7D',\n 'Balloons': '\\uED7E',\n 'Cat': '\\uED7F',\n 'MailAlert': '\\uED80',\n 'MailCheck': '\\uED81',\n 'MailLowImportance': '\\uED82',\n 'MailPause': '\\uED83',\n 'MailRepeat': '\\uED84',\n 'SecurityGroup': '\\uED85',\n 'Table': '\\uED86',\n 'VoicemailForward': '\\uED87',\n 'VoicemailReply': '\\uED88',\n 'Waffle': '\\uED89',\n 'RemoveEvent': '\\uED8A',\n 'EventInfo': '\\uED8B',\n 'ForwardEvent': '\\uED8C',\n 'WipePhone': '\\uED8D',\n 'AddOnlineMeeting': '\\uED8E',\n 'JoinOnlineMeeting': '\\uED8F',\n 'RemoveLink': '\\uED90',\n 'PeopleBlock': '\\uED91',\n 'PeopleRepeat': '\\uED92',\n 'PeopleAlert': '\\uED93',\n 'PeoplePause': '\\uED94',\n 'TransferCall': '\\uED95',\n 'AddPhone': '\\uED96',\n 'UnknownCall': '\\uED97',\n 'NoteReply': '\\uED98',\n 'NoteForward': '\\uED99',\n 'NotePinned': '\\uED9A',\n 'RemoveOccurrence': '\\uED9B',\n 'Timeline': '\\uED9C',\n 'EditNote': '\\uED9D',\n 'CircleHalfFull': '\\uED9E',\n 'Room': '\\uED9F',\n 'Unsubscribe': '\\uEDA0',\n 'Subscribe': '\\uEDA1',\n 'HardDrive': '\\uEDA2',\n 'RecurringTask': '\\uEDB2',\n 'TaskManager': '\\uEDB7',\n 'TaskManagerMirrored': '\\uEDB8',\n 'Combine': '\\uEDBB',\n 'Split': '\\uEDBC',\n 'DoubleChevronUp': '\\uEDBD',\n 'DoubleChevronLeft': '\\uEDBE',\n 'DoubleChevronRight': '\\uEDBF',\n 'TextBox': '\\uEDC2',\n 'TextField': '\\uEDC3',\n 'NumberField': '\\uEDC4',\n 'Dropdown': '\\uEDC5',\n 'PenWorkspace': '\\uEDC6',\n 'BookingsLogo': '\\uEDC7',\n 'ClassNotebookLogoInverse': '\\uEDC8',\n 'DelveAnalyticsLogo': '\\uEDCA',\n 'DocsLogoInverse': '\\uEDCB',\n 'Dynamics365Logo': '\\uEDCC',\n 'DynamicSMBLogo': '\\uEDCD',\n 'OfficeAssistantLogo': '\\uEDCE',\n 'OfficeStoreLogo': '\\uEDCF',\n 'OneNoteEduLogoInverse': '\\uEDD0',\n 'PlannerLogo': '\\uEDD1',\n 'PowerApps': '\\uEDD2',\n 'Suitcase': '\\uEDD3',\n 'ProjectLogoInverse': '\\uEDD4',\n 'CaretLeft8': '\\uEDD5',\n 'CaretRight8': '\\uEDD6',\n 'CaretUp8': '\\uEDD7',\n 'CaretDown8': '\\uEDD8',\n 'CaretLeftSolid8': '\\uEDD9',\n 'CaretRightSolid8': '\\uEDDA',\n 'CaretUpSolid8': '\\uEDDB',\n 'CaretDownSolid8': '\\uEDDC',\n 'ClearFormatting': '\\uEDDD',\n 'Superscript': '\\uEDDE',\n 'Subscript': '\\uEDDF',\n 'Strikethrough': '\\uEDE0',\n 'Export': '\\uEDE1',\n 'ExportMirrored': '\\uEDE2'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-7\"`,\n src: `url('${baseUrl}fabric-icons-7-2b97bb99.woff') format('woff')`\n },\n icons: {\n 'SingleBookmark': '\\uEDFF',\n 'SingleBookmarkSolid': '\\uEE00',\n 'DoubleChevronDown': '\\uEE04',\n 'FollowUser': '\\uEE05',\n 'ReplyAll': '\\uEE0A',\n 'WorkforceManagement': '\\uEE0F',\n 'RecruitmentManagement': '\\uEE12',\n 'Questionnaire': '\\uEE19',\n 'ManagerSelfService': '\\uEE23',\n 'ProductionFloorManagement': '\\uEE29',\n 'ProductRelease': '\\uEE2E',\n 'ProductVariant': '\\uEE30',\n 'ReplyMirrored': '\\uEE35',\n 'ReplyAllMirrored': '\\uEE36',\n 'Medal': '\\uEE38',\n 'AddGroup': '\\uEE3D',\n 'QuestionnaireMirrored': '\\uEE4B',\n 'CloudImportExport': '\\uEE55',\n 'TemporaryUser': '\\uEE58',\n 'CaretSolid16': '\\uEE62',\n 'GroupedDescending': '\\uEE66',\n 'GroupedAscending': '\\uEE67',\n 'AwayStatus': '\\uEE6A',\n 'MyMoviesTV': '\\uEE6C',\n 'GenericScan': '\\uEE6F',\n 'AustralianRules': '\\uEE70',\n 'WifiEthernet': '\\uEE77',\n 'TrackersMirrored': '\\uEE92',\n 'DateTimeMirrored': '\\uEE93',\n 'StopSolid': '\\uEE95',\n 'DoubleChevronUp12': '\\uEE96',\n 'DoubleChevronDown12': '\\uEE97',\n 'DoubleChevronLeft12': '\\uEE98',\n 'DoubleChevronRight12': '\\uEE99',\n 'CalendarAgenda': '\\uEE9A',\n 'ConnectVirtualMachine': '\\uEE9D',\n 'AddEvent': '\\uEEB5',\n 'AssetLibrary': '\\uEEB6',\n 'DataConnectionLibrary': '\\uEEB7',\n 'DocLibrary': '\\uEEB8',\n 'FormLibrary': '\\uEEB9',\n 'FormLibraryMirrored': '\\uEEBA',\n 'ReportLibrary': '\\uEEBB',\n 'ReportLibraryMirrored': '\\uEEBC',\n 'ContactCard': '\\uEEBD',\n 'CustomList': '\\uEEBE',\n 'CustomListMirrored': '\\uEEBF',\n 'IssueTracking': '\\uEEC0',\n 'IssueTrackingMirrored': '\\uEEC1',\n 'PictureLibrary': '\\uEEC2',\n 'OfficeAddinsLogo': '\\uEEC7',\n 'OfflineOneDriveParachute': '\\uEEC8',\n 'OfflineOneDriveParachuteDisabled': '\\uEEC9',\n 'TriangleSolidUp12': '\\uEECC',\n 'TriangleSolidDown12': '\\uEECD',\n 'TriangleSolidLeft12': '\\uEECE',\n 'TriangleSolidRight12': '\\uEECF',\n 'TriangleUp12': '\\uEED0',\n 'TriangleDown12': '\\uEED1',\n 'TriangleLeft12': '\\uEED2',\n 'TriangleRight12': '\\uEED3',\n 'ArrowUpRight8': '\\uEED4',\n 'ArrowDownRight8': '\\uEED5',\n 'DocumentSet': '\\uEED6',\n 'GoToDashboard': '\\uEEED',\n 'DelveAnalytics': '\\uEEEE',\n 'ArrowUpRightMirrored8': '\\uEEEF',\n 'ArrowDownRightMirrored8': '\\uEEF0',\n 'CompanyDirectory': '\\uEF0D',\n 'OpenEnrollment': '\\uEF1C',\n 'CompanyDirectoryMirrored': '\\uEF2B',\n 'OneDriveAdd': '\\uEF32',\n 'ProfileSearch': '\\uEF35',\n 'Header2': '\\uEF36',\n 'Header3': '\\uEF37',\n 'Header4': '\\uEF38',\n 'RingerSolid': '\\uEF3A',\n 'Eyedropper': '\\uEF3C',\n 'MarketDown': '\\uEF42',\n 'CalendarWorkWeek': '\\uEF51',\n 'SidePanel': '\\uEF52',\n 'GlobeFavorite': '\\uEF53',\n 'CaretTopLeftSolid8': '\\uEF54',\n 'CaretTopRightSolid8': '\\uEF55',\n 'ViewAll2': '\\uEF56',\n 'DocumentReply': '\\uEF57',\n 'PlayerSettings': '\\uEF58',\n 'ReceiptForward': '\\uEF59',\n 'ReceiptReply': '\\uEF5A',\n 'ReceiptCheck': '\\uEF5B',\n 'Fax': '\\uEF5C',\n 'RecurringEvent': '\\uEF5D',\n 'ReplyAlt': '\\uEF5E',\n 'ReplyAllAlt': '\\uEF5F',\n 'EditStyle': '\\uEF60',\n 'EditMail': '\\uEF61',\n 'Lifesaver': '\\uEF62',\n 'LifesaverLock': '\\uEF63',\n 'InboxCheck': '\\uEF64',\n 'FolderSearch': '\\uEF65'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-8\"`,\n src: `url('${baseUrl}fabric-icons-8-6fdf1528.woff') format('woff')`\n },\n icons: {\n 'CollapseMenu': '\\uEF66',\n 'ExpandMenu': '\\uEF67',\n 'Boards': '\\uEF68',\n 'SunAdd': '\\uEF69',\n 'SunQuestionMark': '\\uEF6A',\n 'LandscapeOrientation': '\\uEF6B',\n 'DocumentSearch': '\\uEF6C',\n 'PublicCalendar': '\\uEF6D',\n 'PublicContactCard': '\\uEF6E',\n 'PublicEmail': '\\uEF6F',\n 'PublicFolder': '\\uEF70',\n 'WordDocument': '\\uEF71',\n 'PowerPointDocument': '\\uEF72',\n 'ExcelDocument': '\\uEF73',\n 'GroupedList': '\\uEF74',\n 'ClassroomLogo': '\\uEF75',\n 'Sections': '\\uEF76',\n 'EditPhoto': '\\uEF77',\n 'Starburst': '\\uEF78',\n 'ShareiOS': '\\uEF79',\n 'AirTickets': '\\uEF7A',\n 'PencilReply': '\\uEF7B',\n 'Tiles2': '\\uEF7C',\n 'SkypeCircleCheck': '\\uEF7D',\n 'SkypeCircleClock': '\\uEF7E',\n 'SkypeCircleMinus': '\\uEF7F',\n 'SkypeMessage': '\\uEF83',\n 'ClosedCaption': '\\uEF84',\n 'ATPLogo': '\\uEF85',\n 'OfficeFormsLogoInverse': '\\uEF86',\n 'RecycleBin': '\\uEF87',\n 'EmptyRecycleBin': '\\uEF88',\n 'Hide2': '\\uEF89',\n 'Breadcrumb': '\\uEF8C',\n 'BirthdayCake': '\\uEF8D',\n 'TimeEntry': '\\uEF95',\n 'CRMProcesses': '\\uEFB1',\n 'PageEdit': '\\uEFB6',\n 'PageArrowRight': '\\uEFB8',\n 'PageRemove': '\\uEFBA',\n 'Database': '\\uEFC7',\n 'DataManagementSettings': '\\uEFC8',\n 'CRMServices': '\\uEFD2',\n 'EditContact': '\\uEFD3',\n 'ConnectContacts': '\\uEFD4',\n 'AppIconDefaultAdd': '\\uEFDA',\n 'AppIconDefaultList': '\\uEFDE',\n 'ActivateOrders': '\\uEFE0',\n 'DeactivateOrders': '\\uEFE1',\n 'ProductCatalog': '\\uEFE8',\n 'ScatterChart': '\\uEFEB',\n 'AccountActivity': '\\uEFF4',\n 'DocumentManagement': '\\uEFFC',\n 'CRMReport': '\\uEFFE',\n 'KnowledgeArticle': '\\uF000',\n 'Relationship': '\\uF003',\n 'HomeVerify': '\\uF00E',\n 'ZipFolder': '\\uF012',\n 'SurveyQuestions': '\\uF01B',\n 'TextDocument': '\\uF029',\n 'TextDocumentShared': '\\uF02B',\n 'PageCheckedOut': '\\uF02C',\n 'PageShared': '\\uF02D',\n 'SaveAndClose': '\\uF038',\n 'Script': '\\uF03A',\n 'Archive': '\\uF03F',\n 'ActivityFeed': '\\uF056',\n 'Compare': '\\uF057',\n 'EventDate': '\\uF059',\n 'ArrowUpRight': '\\uF069',\n 'CaretRight': '\\uF06B',\n 'SetAction': '\\uF071',\n 'ChatBot': '\\uF08B',\n 'CaretSolidLeft': '\\uF08D',\n 'CaretSolidDown': '\\uF08E',\n 'CaretSolidRight': '\\uF08F',\n 'CaretSolidUp': '\\uF090',\n 'PowerAppsLogo': '\\uF091',\n 'PowerApps2Logo': '\\uF092',\n 'SearchIssue': '\\uF09A',\n 'SearchIssueMirrored': '\\uF09B',\n 'FabricAssetLibrary': '\\uF09C',\n 'FabricDataConnectionLibrary': '\\uF09D',\n 'FabricDocLibrary': '\\uF09E',\n 'FabricFormLibrary': '\\uF09F',\n 'FabricFormLibraryMirrored': '\\uF0A0',\n 'FabricReportLibrary': '\\uF0A1',\n 'FabricReportLibraryMirrored': '\\uF0A2',\n 'FabricPublicFolder': '\\uF0A3',\n 'FabricFolderSearch': '\\uF0A4',\n 'FabricMovetoFolder': '\\uF0A5',\n 'FabricUnsyncFolder': '\\uF0A6',\n 'FabricSyncFolder': '\\uF0A7',\n 'FabricOpenFolderHorizontal': '\\uF0A8',\n 'FabricFolder': '\\uF0A9',\n 'FabricFolderFill': '\\uF0AA',\n 'FabricNewFolder': '\\uF0AB',\n 'FabricPictureLibrary': '\\uF0AC',\n 'PhotoVideoMedia': '\\uF0B1',\n 'AddFavorite': '\\uF0C8'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-9\"`,\n src: `url('${baseUrl}fabric-icons-9-c6162b42.woff') format('woff')`\n },\n icons: {\n 'AddFavoriteFill': '\\uF0C9',\n 'BufferTimeBefore': '\\uF0CF',\n 'BufferTimeAfter': '\\uF0D0',\n 'BufferTimeBoth': '\\uF0D1',\n 'PublishContent': '\\uF0D4',\n 'ClipboardList': '\\uF0E3',\n 'ClipboardListMirrored': '\\uF0E4',\n 'CannedChat': '\\uF0F2',\n 'SkypeForBusinessLogo': '\\uF0FC',\n 'TabCenter': '\\uF100',\n 'PageCheckedin': '\\uF104',\n 'PageList': '\\uF106',\n 'ReadOutLoud': '\\uF112',\n 'CaretBottomLeftSolid8': '\\uF121',\n 'CaretBottomRightSolid8': '\\uF122',\n 'FolderHorizontal': '\\uF12B',\n 'MicrosoftStaffhubLogo': '\\uF130',\n 'GiftboxOpen': '\\uF133',\n 'StatusCircleOuter': '\\uF136',\n 'StatusCircleInner': '\\uF137',\n 'StatusCircleRing': '\\uF138',\n 'StatusTriangleOuter': '\\uF139',\n 'StatusTriangleInner': '\\uF13A',\n 'StatusTriangleExclamation': '\\uF13B',\n 'StatusCircleExclamation': '\\uF13C',\n 'StatusCircleErrorX': '\\uF13D',\n 'StatusCircleInfo': '\\uF13F',\n 'StatusCircleBlock': '\\uF140',\n 'StatusCircleBlock2': '\\uF141',\n 'StatusCircleQuestionMark': '\\uF142',\n 'StatusCircleSync': '\\uF143',\n 'Toll': '\\uF160',\n 'ExploreContentSingle': '\\uF164',\n 'CollapseContent': '\\uF165',\n 'CollapseContentSingle': '\\uF166',\n 'InfoSolid': '\\uF167',\n 'GroupList': '\\uF168',\n 'ProgressRingDots': '\\uF16A',\n 'CaloriesAdd': '\\uF172',\n 'BranchFork': '\\uF173',\n 'MuteChat': '\\uF17A',\n 'AddHome': '\\uF17B',\n 'AddWork': '\\uF17C',\n 'MobileReport': '\\uF18A',\n 'ScaleVolume': '\\uF18C',\n 'HardDriveGroup': '\\uF18F',\n 'FastMode': '\\uF19A',\n 'ToggleLeft': '\\uF19E',\n 'ToggleRight': '\\uF19F',\n 'TriangleShape': '\\uF1A7',\n 'RectangleShape': '\\uF1A9',\n 'CubeShape': '\\uF1AA',\n 'Trophy2': '\\uF1AE',\n 'BucketColor': '\\uF1B6',\n 'BucketColorFill': '\\uF1B7',\n 'Taskboard': '\\uF1C2',\n 'SingleColumn': '\\uF1D3',\n 'DoubleColumn': '\\uF1D4',\n 'TripleColumn': '\\uF1D5',\n 'ColumnLeftTwoThirds': '\\uF1D6',\n 'ColumnRightTwoThirds': '\\uF1D7',\n 'AccessLogoFill': '\\uF1DB',\n 'AnalyticsLogo': '\\uF1DE',\n 'AnalyticsQuery': '\\uF1DF',\n 'NewAnalyticsQuery': '\\uF1E0',\n 'AnalyticsReport': '\\uF1E1',\n 'WordLogo': '\\uF1E3',\n 'WordLogoFill': '\\uF1E4',\n 'ExcelLogo': '\\uF1E5',\n 'ExcelLogoFill': '\\uF1E6',\n 'OneNoteLogo': '\\uF1E7',\n 'OneNoteLogoFill': '\\uF1E8',\n 'OutlookLogo': '\\uF1E9',\n 'OutlookLogoFill': '\\uF1EA',\n 'PowerPointLogo': '\\uF1EB',\n 'PowerPointLogoFill': '\\uF1EC',\n 'PublisherLogo': '\\uF1ED',\n 'PublisherLogoFill': '\\uF1EE',\n 'ScheduleEventAction': '\\uF1EF',\n 'FlameSolid': '\\uF1F3',\n 'ServerProcesses': '\\uF1FE',\n 'Server': '\\uF201',\n 'SaveAll': '\\uF203',\n 'LinkedInLogo': '\\uF20A',\n 'Decimals': '\\uF218',\n 'SidePanelMirrored': '\\uF221',\n 'ProtectRestrict': '\\uF22A',\n 'Blog': '\\uF22B',\n 'UnknownMirrored': '\\uF22E',\n 'PublicContactCardMirrored': '\\uF230',\n 'GridViewSmall': '\\uF232',\n 'GridViewMedium': '\\uF233',\n 'GridViewLarge': '\\uF234',\n 'Step': '\\uF241',\n 'StepInsert': '\\uF242',\n 'StepShared': '\\uF243',\n 'StepSharedAdd': '\\uF244',\n 'StepSharedInsert': '\\uF245',\n 'ViewDashboard': '\\uF246',\n 'ViewList': '\\uF247'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-10\"`,\n src: `url('${baseUrl}fabric-icons-10-c4ded8e4.woff') format('woff')`\n },\n icons: {\n 'ViewListGroup': '\\uF248',\n 'ViewListTree': '\\uF249',\n 'TriggerAuto': '\\uF24A',\n 'TriggerUser': '\\uF24B',\n 'PivotChart': '\\uF24C',\n 'StackedBarChart': '\\uF24D',\n 'StackedLineChart': '\\uF24E',\n 'BuildQueue': '\\uF24F',\n 'BuildQueueNew': '\\uF250',\n 'UserFollowed': '\\uF25C',\n 'ContactLink': '\\uF25F',\n 'Stack': '\\uF26F',\n 'Bullseye': '\\uF272',\n 'VennDiagram': '\\uF273',\n 'FiveTileGrid': '\\uF274',\n 'FocalPoint': '\\uF277',\n 'Insert': '\\uF278',\n 'RingerRemove': '\\uF279',\n 'TeamsLogoInverse': '\\uF27A',\n 'TeamsLogo': '\\uF27B',\n 'TeamsLogoFill': '\\uF27C',\n 'SkypeForBusinessLogoFill': '\\uF27D',\n 'SharepointLogo': '\\uF27E',\n 'SharepointLogoFill': '\\uF27F',\n 'DelveLogo': '\\uF280',\n 'DelveLogoFill': '\\uF281',\n 'OfficeVideoLogo': '\\uF282',\n 'OfficeVideoLogoFill': '\\uF283',\n 'ExchangeLogo': '\\uF284',\n 'ExchangeLogoFill': '\\uF285',\n 'Signin': '\\uF286',\n 'DocumentApproval': '\\uF28B',\n 'CloneToDesktop': '\\uF28C',\n 'InstallToDrive': '\\uF28D',\n 'Blur': '\\uF28E',\n 'Build': '\\uF28F',\n 'ProcessMetaTask': '\\uF290',\n 'BranchFork2': '\\uF291',\n 'BranchLocked': '\\uF292',\n 'BranchCommit': '\\uF293',\n 'BranchCompare': '\\uF294',\n 'BranchMerge': '\\uF295',\n 'BranchPullRequest': '\\uF296',\n 'BranchSearch': '\\uF297',\n 'BranchShelveset': '\\uF298',\n 'RawSource': '\\uF299',\n 'MergeDuplicate': '\\uF29A',\n 'RowsGroup': '\\uF29B',\n 'RowsChild': '\\uF29C',\n 'Deploy': '\\uF29D',\n 'Redeploy': '\\uF29E',\n 'ServerEnviroment': '\\uF29F',\n 'VisioDiagram': '\\uF2A0',\n 'HighlightMappedShapes': '\\uF2A1',\n 'TextCallout': '\\uF2A2',\n 'IconSetsFlag': '\\uF2A4',\n 'VisioLogo': '\\uF2A7',\n 'VisioLogoFill': '\\uF2A8',\n 'VisioDocument': '\\uF2A9',\n 'TimelineProgress': '\\uF2AA',\n 'TimelineDelivery': '\\uF2AB',\n 'Backlog': '\\uF2AC',\n 'TeamFavorite': '\\uF2AD',\n 'TaskGroup': '\\uF2AE',\n 'TaskGroupMirrored': '\\uF2AF',\n 'ScopeTemplate': '\\uF2B0',\n 'AssessmentGroupTemplate': '\\uF2B1',\n 'NewTeamProject': '\\uF2B2',\n 'CommentAdd': '\\uF2B3',\n 'CommentNext': '\\uF2B4',\n 'CommentPrevious': '\\uF2B5',\n 'ShopServer': '\\uF2B6',\n 'LocaleLanguage': '\\uF2B7',\n 'QueryList': '\\uF2B8',\n 'UserSync': '\\uF2B9',\n 'UserPause': '\\uF2BA',\n 'StreamingOff': '\\uF2BB',\n 'ArrowTallUpLeft': '\\uF2BD',\n 'ArrowTallUpRight': '\\uF2BE',\n 'ArrowTallDownLeft': '\\uF2BF',\n 'ArrowTallDownRight': '\\uF2C0',\n 'FieldEmpty': '\\uF2C1',\n 'FieldFilled': '\\uF2C2',\n 'FieldChanged': '\\uF2C3',\n 'FieldNotChanged': '\\uF2C4',\n 'RingerOff': '\\uF2C5',\n 'PlayResume': '\\uF2C6',\n 'BulletedList2': '\\uF2C7',\n 'BulletedList2Mirrored': '\\uF2C8',\n 'ImageCrosshair': '\\uF2C9',\n 'GitGraph': '\\uF2CA',\n 'Repo': '\\uF2CB',\n 'RepoSolid': '\\uF2CC',\n 'FolderQuery': '\\uF2CD',\n 'FolderList': '\\uF2CE',\n 'FolderListMirrored': '\\uF2CF',\n 'LocationOutline': '\\uF2D0',\n 'POISolid': '\\uF2D1',\n 'CalculatorNotEqualTo': '\\uF2D2',\n 'BoxSubtractSolid': '\\uF2D3'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-11\"`,\n src: `url('${baseUrl}fabric-icons-11-2a8393d6.woff') format('woff')`\n },\n icons: {\n 'BoxAdditionSolid': '\\uF2D4',\n 'BoxMultiplySolid': '\\uF2D5',\n 'BoxPlaySolid': '\\uF2D6',\n 'BoxCheckmarkSolid': '\\uF2D7',\n 'CirclePauseSolid': '\\uF2D8',\n 'CirclePause': '\\uF2D9',\n 'MSNVideosSolid': '\\uF2DA',\n 'CircleStopSolid': '\\uF2DB',\n 'CircleStop': '\\uF2DC',\n 'NavigateBack': '\\uF2DD',\n 'NavigateBackMirrored': '\\uF2DE',\n 'NavigateForward': '\\uF2DF',\n 'NavigateForwardMirrored': '\\uF2E0',\n 'UnknownSolid': '\\uF2E1',\n 'UnknownMirroredSolid': '\\uF2E2',\n 'CircleAddition': '\\uF2E3',\n 'CircleAdditionSolid': '\\uF2E4',\n 'FilePDB': '\\uF2E5',\n 'FileTemplate': '\\uF2E6',\n 'FileSQL': '\\uF2E7',\n 'FileJAVA': '\\uF2E8',\n 'FileASPX': '\\uF2E9',\n 'FileCSS': '\\uF2EA',\n 'FileSass': '\\uF2EB',\n 'FileLess': '\\uF2EC',\n 'FileHTML': '\\uF2ED',\n 'JavaScriptLanguage': '\\uF2EE',\n 'CSharpLanguage': '\\uF2EF',\n 'CSharp': '\\uF2F0',\n 'VisualBasicLanguage': '\\uF2F1',\n 'VB': '\\uF2F2',\n 'CPlusPlusLanguage': '\\uF2F3',\n 'CPlusPlus': '\\uF2F4',\n 'FSharpLanguage': '\\uF2F5',\n 'FSharp': '\\uF2F6',\n 'TypeScriptLanguage': '\\uF2F7',\n 'PythonLanguage': '\\uF2F8',\n 'PY': '\\uF2F9',\n 'CoffeeScript': '\\uF2FA',\n 'MarkDownLanguage': '\\uF2FB',\n 'FullWidth': '\\uF2FE',\n 'FullWidthEdit': '\\uF2FF',\n 'Plug': '\\uF300',\n 'PlugSolid': '\\uF301',\n 'PlugConnected': '\\uF302',\n 'PlugDisconnected': '\\uF303',\n 'UnlockSolid': '\\uF304',\n 'Variable': '\\uF305',\n 'Parameter': '\\uF306',\n 'CommentUrgent': '\\uF307',\n 'Storyboard': '\\uF308',\n 'DiffInline': '\\uF309',\n 'DiffSideBySide': '\\uF30A',\n 'ImageDiff': '\\uF30B',\n 'ImagePixel': '\\uF30C',\n 'FileBug': '\\uF30D',\n 'FileCode': '\\uF30E',\n 'FileComment': '\\uF30F',\n 'BusinessHoursSign': '\\uF310',\n 'FileImage': '\\uF311',\n 'FileSymlink': '\\uF312',\n 'AutoFillTemplate': '\\uF313',\n 'WorkItem': '\\uF314',\n 'WorkItemBug': '\\uF315',\n 'LogRemove': '\\uF316',\n 'ColumnOptions': '\\uF317',\n 'Packages': '\\uF318',\n 'BuildIssue': '\\uF319',\n 'AssessmentGroup': '\\uF31A',\n 'VariableGroup': '\\uF31B',\n 'FullHistory': '\\uF31C',\n 'Wheelchair': '\\uF31F',\n 'SingleColumnEdit': '\\uF321',\n 'DoubleColumnEdit': '\\uF322',\n 'TripleColumnEdit': '\\uF323',\n 'ColumnLeftTwoThirdsEdit': '\\uF324',\n 'ColumnRightTwoThirdsEdit': '\\uF325',\n 'StreamLogo': '\\uF329',\n 'PassiveAuthentication': '\\uF32A',\n 'AlertSolid': '\\uF331',\n 'MegaphoneSolid': '\\uF332',\n 'TaskSolid': '\\uF333',\n 'ConfigurationSolid': '\\uF334',\n 'BugSolid': '\\uF335',\n 'CrownSolid': '\\uF336',\n 'Trophy2Solid': '\\uF337',\n 'QuickNoteSolid': '\\uF338',\n 'ConstructionConeSolid': '\\uF339',\n 'PageListSolid': '\\uF33A',\n 'PageListMirroredSolid': '\\uF33B',\n 'StarburstSolid': '\\uF33C',\n 'ReadingModeSolid': '\\uF33D',\n 'SadSolid': '\\uF33E',\n 'HealthSolid': '\\uF33F',\n 'ShieldSolid': '\\uF340',\n 'GiftBoxSolid': '\\uF341',\n 'ShoppingCartSolid': '\\uF342',\n 'MailSolid': '\\uF343',\n 'ChatSolid': '\\uF344',\n 'RibbonSolid': '\\uF345'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-12\"`,\n src: `url('${baseUrl}fabric-icons-12-7e945a1e.woff') format('woff')`\n },\n icons: {\n 'FinancialSolid': '\\uF346',\n 'FinancialMirroredSolid': '\\uF347',\n 'HeadsetSolid': '\\uF348',\n 'PermissionsSolid': '\\uF349',\n 'ParkingSolid': '\\uF34A',\n 'ParkingMirroredSolid': '\\uF34B',\n 'DiamondSolid': '\\uF34C',\n 'AsteriskSolid': '\\uF34D',\n 'OfflineStorageSolid': '\\uF34E',\n 'BankSolid': '\\uF34F',\n 'DecisionSolid': '\\uF350',\n 'Parachute': '\\uF351',\n 'ParachuteSolid': '\\uF352',\n 'FiltersSolid': '\\uF353',\n 'ColorSolid': '\\uF354',\n 'ReviewSolid': '\\uF355',\n 'ReviewRequestSolid': '\\uF356',\n 'ReviewRequestMirroredSolid': '\\uF357',\n 'ReviewResponseSolid': '\\uF358',\n 'FeedbackRequestSolid': '\\uF359',\n 'FeedbackRequestMirroredSolid': '\\uF35A',\n 'FeedbackResponseSolid': '\\uF35B',\n 'WorkItemBar': '\\uF35C',\n 'WorkItemBarSolid': '\\uF35D',\n 'Separator': '\\uF35E',\n 'NavigateExternalInline': '\\uF35F',\n 'PlanView': '\\uF360',\n 'TimelineMatrixView': '\\uF361',\n 'EngineeringGroup': '\\uF362',\n 'ProjectCollection': '\\uF363',\n 'CaretBottomRightCenter8': '\\uF364',\n 'CaretBottomLeftCenter8': '\\uF365',\n 'CaretTopRightCenter8': '\\uF366',\n 'CaretTopLeftCenter8': '\\uF367',\n 'DonutChart': '\\uF368',\n 'ChevronUnfold10': '\\uF369',\n 'ChevronFold10': '\\uF36A',\n 'DoubleChevronDown8': '\\uF36B',\n 'DoubleChevronUp8': '\\uF36C',\n 'DoubleChevronLeft8': '\\uF36D',\n 'DoubleChevronRight8': '\\uF36E',\n 'ChevronDownEnd6': '\\uF36F',\n 'ChevronUpEnd6': '\\uF370',\n 'ChevronLeftEnd6': '\\uF371',\n 'ChevronRightEnd6': '\\uF372',\n 'ContextMenu': '\\uF37C',\n 'AzureAPIManagement': '\\uF37F',\n 'AzureServiceEndpoint': '\\uF380',\n 'VSTSLogo': '\\uF381',\n 'VSTSAltLogo1': '\\uF382',\n 'VSTSAltLogo2': '\\uF383',\n 'FileTypeSolution': '\\uF387',\n 'WordLogoInverse16': '\\uF390',\n 'WordLogo16': '\\uF391',\n 'WordLogoFill16': '\\uF392',\n 'PowerPointLogoInverse16': '\\uF393',\n 'PowerPointLogo16': '\\uF394',\n 'PowerPointLogoFill16': '\\uF395',\n 'ExcelLogoInverse16': '\\uF396',\n 'ExcelLogo16': '\\uF397',\n 'ExcelLogoFill16': '\\uF398',\n 'OneNoteLogoInverse16': '\\uF399',\n 'OneNoteLogo16': '\\uF39A',\n 'OneNoteLogoFill16': '\\uF39B',\n 'OutlookLogoInverse16': '\\uF39C',\n 'OutlookLogo16': '\\uF39D',\n 'OutlookLogoFill16': '\\uF39E',\n 'PublisherLogoInverse16': '\\uF39F',\n 'PublisherLogo16': '\\uF3A0',\n 'PublisherLogoFill16': '\\uF3A1',\n 'VisioLogoInverse16': '\\uF3A2',\n 'VisioLogo16': '\\uF3A3',\n 'VisioLogoFill16': '\\uF3A4',\n 'TestBeaker': '\\uF3A5',\n 'TestBeakerSolid': '\\uF3A6',\n 'TestExploreSolid': '\\uF3A7',\n 'TestAutoSolid': '\\uF3A8',\n 'TestUserSolid': '\\uF3A9',\n 'TestImpactSolid': '\\uF3AA',\n 'TestPlan': '\\uF3AB',\n 'TestStep': '\\uF3AC',\n 'TestParameter': '\\uF3AD',\n 'TestSuite': '\\uF3AE',\n 'TestCase': '\\uF3AF',\n 'Sprint': '\\uF3B0',\n 'SignOut': '\\uF3B1',\n 'TriggerApproval': '\\uF3B2',\n 'Rocket': '\\uF3B3',\n 'AzureKeyVault': '\\uF3B4',\n 'Onboarding': '\\uF3BA',\n 'Transition': '\\uF3BC',\n 'LikeSolid': '\\uF3BF',\n 'DislikeSolid': '\\uF3C0',\n 'CRMCustomerInsightsApp': '\\uF3C8',\n 'EditCreate': '\\uF3C9',\n 'PlayReverseResume': '\\uF3E4',\n 'PlayReverse': '\\uF3E5',\n 'SearchData': '\\uF3F1',\n 'UnSetColor': '\\uF3F9',\n 'DeclineCall': '\\uF405'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-13\"`,\n src: `url('${baseUrl}fabric-icons-13-c3989a02.woff') format('woff')`\n },\n icons: {\n 'RectangularClipping': '\\uF407',\n 'TeamsLogo16': '\\uF40A',\n 'TeamsLogoFill16': '\\uF40B',\n 'Spacer': '\\uF40D',\n 'SkypeLogo16': '\\uF40E',\n 'SkypeForBusinessLogo16': '\\uF40F',\n 'SkypeForBusinessLogoFill16': '\\uF410',\n 'FilterSolid': '\\uF412',\n 'MailUndelivered': '\\uF415',\n 'MailTentative': '\\uF416',\n 'MailTentativeMirrored': '\\uF417',\n 'MailReminder': '\\uF418',\n 'ReceiptUndelivered': '\\uF419',\n 'ReceiptTentative': '\\uF41A',\n 'ReceiptTentativeMirrored': '\\uF41B',\n 'Inbox': '\\uF41C',\n 'IRMReply': '\\uF41D',\n 'IRMReplyMirrored': '\\uF41E',\n 'IRMForward': '\\uF41F',\n 'IRMForwardMirrored': '\\uF420',\n 'VoicemailIRM': '\\uF421',\n 'EventAccepted': '\\uF422',\n 'EventTentative': '\\uF423',\n 'EventTentativeMirrored': '\\uF424',\n 'EventDeclined': '\\uF425',\n 'IDBadge': '\\uF427',\n 'BackgroundColor': '\\uF42B',\n 'OfficeFormsLogoInverse16': '\\uF433',\n 'OfficeFormsLogo': '\\uF434',\n 'OfficeFormsLogoFill': '\\uF435',\n 'OfficeFormsLogo16': '\\uF436',\n 'OfficeFormsLogoFill16': '\\uF437',\n 'OfficeFormsLogoInverse24': '\\uF43A',\n 'OfficeFormsLogo24': '\\uF43B',\n 'OfficeFormsLogoFill24': '\\uF43C',\n 'PageLock': '\\uF43F',\n 'NotExecuted': '\\uF440',\n 'NotImpactedSolid': '\\uF441',\n 'FieldReadOnly': '\\uF442',\n 'FieldRequired': '\\uF443',\n 'BacklogBoard': '\\uF444',\n 'ExternalBuild': '\\uF445',\n 'ExternalTFVC': '\\uF446',\n 'ExternalXAML': '\\uF447',\n 'IssueSolid': '\\uF448',\n 'DefectSolid': '\\uF449',\n 'LadybugSolid': '\\uF44A',\n 'NugetLogo': '\\uF44C',\n 'TFVCLogo': '\\uF44D',\n 'ProjectLogo32': '\\uF47E',\n 'ProjectLogoFill32': '\\uF47F',\n 'ProjectLogo16': '\\uF480',\n 'ProjectLogoFill16': '\\uF481',\n 'SwayLogo32': '\\uF482',\n 'SwayLogoFill32': '\\uF483',\n 'SwayLogo16': '\\uF484',\n 'SwayLogoFill16': '\\uF485',\n 'ClassNotebookLogo32': '\\uF486',\n 'ClassNotebookLogoFill32': '\\uF487',\n 'ClassNotebookLogo16': '\\uF488',\n 'ClassNotebookLogoFill16': '\\uF489',\n 'ClassNotebookLogoInverse32': '\\uF48A',\n 'ClassNotebookLogoInverse16': '\\uF48B',\n 'StaffNotebookLogo32': '\\uF48C',\n 'StaffNotebookLogoFill32': '\\uF48D',\n 'StaffNotebookLogo16': '\\uF48E',\n 'StaffNotebookLogoFill16': '\\uF48F',\n 'StaffNotebookLogoInverted32': '\\uF490',\n 'StaffNotebookLogoInverted16': '\\uF491',\n 'KaizalaLogo': '\\uF492',\n 'TaskLogo': '\\uF493',\n 'ProtectionCenterLogo32': '\\uF494',\n 'GallatinLogo': '\\uF496',\n 'Globe2': '\\uF49A',\n 'Guitar': '\\uF49B',\n 'Breakfast': '\\uF49C',\n 'Brunch': '\\uF49D',\n 'BeerMug': '\\uF49E',\n 'Vacation': '\\uF49F',\n 'Teeth': '\\uF4A0',\n 'Taxi': '\\uF4A1',\n 'Chopsticks': '\\uF4A2',\n 'SyncOccurence': '\\uF4A3',\n 'UnsyncOccurence': '\\uF4A4',\n 'GIF': '\\uF4A9',\n 'PrimaryCalendar': '\\uF4AE',\n 'SearchCalendar': '\\uF4AF',\n 'VideoOff': '\\uF4B0',\n 'MicrosoftFlowLogo': '\\uF4B1',\n 'BusinessCenterLogo': '\\uF4B2',\n 'ToDoLogoBottom': '\\uF4B3',\n 'ToDoLogoTop': '\\uF4B4',\n 'EditSolid12': '\\uF4B5',\n 'EditSolidMirrored12': '\\uF4B6',\n 'UneditableSolid12': '\\uF4B7',\n 'UneditableSolidMirrored12': '\\uF4B8',\n 'UneditableMirrored': '\\uF4B9',\n 'AdminALogo32': '\\uF4BA',\n 'AdminALogoFill32': '\\uF4BB',\n 'ToDoLogoInverse': '\\uF4BC'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-14\"`,\n src: `url('${baseUrl}fabric-icons-14-5cf58db8.woff') format('woff')`\n },\n icons: {\n 'Snooze': '\\uF4BD',\n 'WaffleOffice365': '\\uF4E0',\n 'ImageSearch': '\\uF4E8',\n 'NewsSearch': '\\uF4E9',\n 'VideoSearch': '\\uF4EA',\n 'R': '\\uF4EB',\n 'FontColorA': '\\uF4EC',\n 'FontColorSwatch': '\\uF4ED',\n 'LightWeight': '\\uF4EE',\n 'NormalWeight': '\\uF4EF',\n 'SemiboldWeight': '\\uF4F0',\n 'GroupObject': '\\uF4F1',\n 'UngroupObject': '\\uF4F2',\n 'AlignHorizontalLeft': '\\uF4F3',\n 'AlignHorizontalCenter': '\\uF4F4',\n 'AlignHorizontalRight': '\\uF4F5',\n 'AlignVerticalTop': '\\uF4F6',\n 'AlignVerticalCenter': '\\uF4F7',\n 'AlignVerticalBottom': '\\uF4F8',\n 'HorizontalDistributeCenter': '\\uF4F9',\n 'VerticalDistributeCenter': '\\uF4FA',\n 'Ellipse': '\\uF4FB',\n 'Line': '\\uF4FC',\n 'Octagon': '\\uF4FD',\n 'Hexagon': '\\uF4FE',\n 'Pentagon': '\\uF4FF',\n 'RightTriangle': '\\uF500',\n 'HalfCircle': '\\uF501',\n 'QuarterCircle': '\\uF502',\n 'ThreeQuarterCircle': '\\uF503',\n '6PointStar': '\\uF504',\n '12PointStar': '\\uF505',\n 'ArrangeBringToFront': '\\uF506',\n 'ArrangeSendToBack': '\\uF507',\n 'ArrangeSendBackward': '\\uF508',\n 'ArrangeBringForward': '\\uF509',\n 'BorderDash': '\\uF50A',\n 'BorderDot': '\\uF50B',\n 'LineStyle': '\\uF50C',\n 'LineThickness': '\\uF50D',\n 'WindowEdit': '\\uF50E',\n 'HintText': '\\uF50F',\n 'MediaAdd': '\\uF510',\n 'AnchorLock': '\\uF511',\n 'AutoHeight': '\\uF512',\n 'ChartSeries': '\\uF513',\n 'ChartXAngle': '\\uF514',\n 'ChartYAngle': '\\uF515',\n 'Combobox': '\\uF516',\n 'LineSpacing': '\\uF517',\n 'Padding': '\\uF518',\n 'PaddingTop': '\\uF519',\n 'PaddingBottom': '\\uF51A',\n 'PaddingLeft': '\\uF51B',\n 'PaddingRight': '\\uF51C',\n 'NavigationFlipper': '\\uF51D',\n 'AlignJustify': '\\uF51E',\n 'TextOverflow': '\\uF51F',\n 'VisualsFolder': '\\uF520',\n 'VisualsStore': '\\uF521',\n 'PictureCenter': '\\uF522',\n 'PictureFill': '\\uF523',\n 'PicturePosition': '\\uF524',\n 'PictureStretch': '\\uF525',\n 'PictureTile': '\\uF526',\n 'Slider': '\\uF527',\n 'SliderHandleSize': '\\uF528',\n 'DefaultRatio': '\\uF529',\n 'NumberSequence': '\\uF52A',\n 'GUID': '\\uF52B',\n 'ReportAdd': '\\uF52C',\n 'DashboardAdd': '\\uF52D',\n 'MapPinSolid': '\\uF52E',\n 'WebPublish': '\\uF52F',\n 'PieSingleSolid': '\\uF530',\n 'BlockedSolid': '\\uF531',\n 'DrillDown': '\\uF532',\n 'DrillDownSolid': '\\uF533',\n 'DrillExpand': '\\uF534',\n 'DrillShow': '\\uF535',\n 'SpecialEvent': '\\uF536',\n 'OneDriveFolder16': '\\uF53B',\n 'FunctionalManagerDashboard': '\\uF542',\n 'BIDashboard': '\\uF543',\n 'CodeEdit': '\\uF544',\n 'RenewalCurrent': '\\uF545',\n 'RenewalFuture': '\\uF546',\n 'SplitObject': '\\uF547',\n 'BulkUpload': '\\uF548',\n 'DownloadDocument': '\\uF549',\n 'GreetingCard': '\\uF54B',\n 'Flower': '\\uF54E',\n 'WaitlistConfirm': '\\uF550',\n 'WaitlistConfirmMirrored': '\\uF551',\n 'LaptopSecure': '\\uF552',\n 'DragObject': '\\uF553',\n 'EntryView': '\\uF554',\n 'EntryDecline': '\\uF555',\n 'ContactCardSettings': '\\uF556',\n 'ContactCardSettingsMirrored': '\\uF557'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-15\"`,\n src: `url('${baseUrl}fabric-icons-15-3807251b.woff') format('woff')`\n },\n icons: {\n 'CalendarSettings': '\\uF558',\n 'CalendarSettingsMirrored': '\\uF559',\n 'HardDriveLock': '\\uF55A',\n 'HardDriveUnlock': '\\uF55B',\n 'AccountManagement': '\\uF55C',\n 'ReportWarning': '\\uF569',\n 'TransitionPop': '\\uF5B2',\n 'TransitionPush': '\\uF5B3',\n 'TransitionEffect': '\\uF5B4',\n 'LookupEntities': '\\uF5B5',\n 'ExploreData': '\\uF5B6',\n 'AddBookmark': '\\uF5B7',\n 'SearchBookmark': '\\uF5B8',\n 'DrillThrough': '\\uF5B9',\n 'MasterDatabase': '\\uF5BA',\n 'CertifiedDatabase': '\\uF5BB',\n 'MaximumValue': '\\uF5BC',\n 'MinimumValue': '\\uF5BD',\n 'VisualStudioIDELogo32': '\\uF5D0',\n 'PasteAsText': '\\uF5D5',\n 'PasteAsCode': '\\uF5D6',\n 'BrowserTab': '\\uF5D7',\n 'BrowserTabScreenshot': '\\uF5D8',\n 'DesktopScreenshot': '\\uF5D9',\n 'FileYML': '\\uF5DA',\n 'ClipboardSolid': '\\uF5DC',\n 'FabricUserFolder': '\\uF5E5',\n 'FabricNetworkFolder': '\\uF5E6',\n 'BullseyeTarget': '\\uF5F0',\n 'AnalyticsView': '\\uF5F1',\n 'Video360Generic': '\\uF609',\n 'Untag': '\\uF60B',\n 'Leave': '\\uF627',\n 'Trending12': '\\uF62D',\n 'Blocked12': '\\uF62E',\n 'Warning12': '\\uF62F',\n 'CheckedOutByOther12': '\\uF630',\n 'CheckedOutByYou12': '\\uF631',\n 'CircleShapeSolid': '\\uF63C',\n 'SquareShapeSolid': '\\uF63D',\n 'TriangleShapeSolid': '\\uF63E',\n 'DropShapeSolid': '\\uF63F',\n 'RectangleShapeSolid': '\\uF640',\n 'ZoomToFit': '\\uF649',\n 'InsertColumnsLeft': '\\uF64A',\n 'InsertColumnsRight': '\\uF64B',\n 'InsertRowsAbove': '\\uF64C',\n 'InsertRowsBelow': '\\uF64D',\n 'DeleteColumns': '\\uF64E',\n 'DeleteRows': '\\uF64F',\n 'DeleteRowsMirrored': '\\uF650',\n 'DeleteTable': '\\uF651',\n 'AccountBrowser': '\\uF652',\n 'VersionControlPush': '\\uF664',\n 'StackedColumnChart2': '\\uF666',\n 'TripleColumnWide': '\\uF66E',\n 'QuadColumn': '\\uF66F',\n 'WhiteBoardApp16': '\\uF673',\n 'WhiteBoardApp32': '\\uF674',\n 'PinnedSolid': '\\uF676',\n 'InsertSignatureLine': '\\uF677',\n 'ArrangeByFrom': '\\uF678',\n 'Phishing': '\\uF679',\n 'CreateMailRule': '\\uF67A',\n 'PublishCourse': '\\uF699',\n 'DictionaryRemove': '\\uF69A',\n 'UserRemove': '\\uF69B',\n 'UserEvent': '\\uF69C',\n 'Encryption': '\\uF69D',\n 'PasswordField': '\\uF6AA',\n 'OpenInNewTab': '\\uF6AB',\n 'Hide3': '\\uF6AC',\n 'VerifiedBrandSolid': '\\uF6AD',\n 'MarkAsProtected': '\\uF6AE',\n 'AuthenticatorApp': '\\uF6B1',\n 'WebTemplate': '\\uF6B2',\n 'DefenderTVM': '\\uF6B3',\n 'MedalSolid': '\\uF6B9',\n 'D365TalentLearn': '\\uF6BB',\n 'D365TalentInsight': '\\uF6BC',\n 'D365TalentHRCore': '\\uF6BD',\n 'BacklogList': '\\uF6BF',\n 'ButtonControl': '\\uF6C0',\n 'TableGroup': '\\uF6D9',\n 'MountainClimbing': '\\uF6DB',\n 'TagUnknown': '\\uF6DF',\n 'TagUnknownMirror': '\\uF6E0',\n 'TagUnknown12': '\\uF6E1',\n 'TagUnknown12Mirror': '\\uF6E2',\n 'Link12': '\\uF6E3',\n 'Presentation': '\\uF6E4',\n 'Presentation12': '\\uF6E5',\n 'Lock12': '\\uF6E6',\n 'BuildDefinition': '\\uF6E9',\n 'ReleaseDefinition': '\\uF6EA',\n 'SaveTemplate': '\\uF6EC',\n 'UserGauge': '\\uF6ED',\n 'BlockedSiteSolid12': '\\uF70A',\n 'TagSolid': '\\uF70E',\n 'OfficeChat': '\\uF70F'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-16\"`,\n src: `url('${baseUrl}fabric-icons-16-9cf93f3b.woff') format('woff')`\n },\n icons: {\n 'OfficeChatSolid': '\\uF710',\n 'MailSchedule': '\\uF72E',\n 'WarningSolid': '\\uF736',\n 'Blocked2Solid': '\\uF737',\n 'SkypeCircleArrow': '\\uF747',\n 'SkypeArrow': '\\uF748',\n 'SyncStatus': '\\uF751',\n 'SyncStatusSolid': '\\uF752',\n 'ProjectDocument': '\\uF759',\n 'ToDoLogoOutline': '\\uF75B',\n 'VisioOnlineLogoFill32': '\\uF75F',\n 'VisioOnlineLogo32': '\\uF760',\n 'VisioOnlineLogoCloud32': '\\uF761',\n 'VisioDiagramSync': '\\uF762',\n 'Event12': '\\uF763',\n 'EventDateMissed12': '\\uF764',\n 'UserOptional': '\\uF767',\n 'ResponsesMenu': '\\uF768',\n 'DoubleDownArrow': '\\uF769',\n 'DistributeDown': '\\uF76A',\n 'BookmarkReport': '\\uF76B',\n 'FilterSettings': '\\uF76C',\n 'GripperDotsVertical': '\\uF772',\n 'MailAttached': '\\uF774',\n 'AddIn': '\\uF775',\n 'LinkedDatabase': '\\uF779',\n 'TableLink': '\\uF77A',\n 'PromotedDatabase': '\\uF77D',\n 'BarChartVerticalFilter': '\\uF77E',\n 'BarChartVerticalFilterSolid': '\\uF77F',\n 'MicOff2': '\\uF781',\n 'MicrosoftTranslatorLogo': '\\uF782',\n 'ShowTimeAs': '\\uF787',\n 'FileRequest': '\\uF789',\n 'WorkItemAlert': '\\uF78F',\n 'PowerBILogo16': '\\uF790',\n 'PowerBILogoBackplate16': '\\uF791',\n 'BulletedListText': '\\uF792',\n 'BulletedListBullet': '\\uF793',\n 'BulletedListTextMirrored': '\\uF794',\n 'BulletedListBulletMirrored': '\\uF795',\n 'NumberedListText': '\\uF796',\n 'NumberedListNumber': '\\uF797',\n 'NumberedListTextMirrored': '\\uF798',\n 'NumberedListNumberMirrored': '\\uF799',\n 'RemoveLinkChain': '\\uF79A',\n 'RemoveLinkX': '\\uF79B',\n 'FabricTextHighlight': '\\uF79C',\n 'ClearFormattingA': '\\uF79D',\n 'ClearFormattingEraser': '\\uF79E',\n 'Photo2Fill': '\\uF79F',\n 'IncreaseIndentText': '\\uF7A0',\n 'IncreaseIndentArrow': '\\uF7A1',\n 'DecreaseIndentText': '\\uF7A2',\n 'DecreaseIndentArrow': '\\uF7A3',\n 'IncreaseIndentTextMirrored': '\\uF7A4',\n 'IncreaseIndentArrowMirrored': '\\uF7A5',\n 'DecreaseIndentTextMirrored': '\\uF7A6',\n 'DecreaseIndentArrowMirrored': '\\uF7A7',\n 'CheckListText': '\\uF7A8',\n 'CheckListCheck': '\\uF7A9',\n 'CheckListTextMirrored': '\\uF7AA',\n 'CheckListCheckMirrored': '\\uF7AB',\n 'NumberSymbol': '\\uF7AC',\n 'Coupon': '\\uF7BC',\n 'VerifiedBrand': '\\uF7BD',\n 'ReleaseGate': '\\uF7BE',\n 'ReleaseGateCheck': '\\uF7BF',\n 'ReleaseGateError': '\\uF7C0',\n 'M365InvoicingLogo': '\\uF7C1',\n 'RemoveFromShoppingList': '\\uF7D5',\n 'ShieldAlert': '\\uF7D7',\n 'FabricTextHighlightComposite': '\\uF7DA',\n 'Dataflows': '\\uF7DD',\n 'GenericScanFilled': '\\uF7DE',\n 'DiagnosticDataBarTooltip': '\\uF7DF',\n 'SaveToMobile': '\\uF7E0',\n 'Orientation2': '\\uF7E1',\n 'ScreenCast': '\\uF7E2',\n 'ShowGrid': '\\uF7E3',\n 'SnapToGrid': '\\uF7E4',\n 'ContactList': '\\uF7E5',\n 'NewMail': '\\uF7EA',\n 'EyeShadow': '\\uF7EB',\n 'FabricFolderConfirm': '\\uF7FF',\n 'InformationBarriers': '\\uF803',\n 'CommentActive': '\\uF804',\n 'ColumnVerticalSectionEdit': '\\uF806',\n 'WavingHand': '\\uF807',\n 'ShakeDevice': '\\uF80A',\n 'SmartGlassRemote': '\\uF80B',\n 'Rotate90Clockwise': '\\uF80D',\n 'Rotate90CounterClockwise': '\\uF80E',\n 'CampaignTemplate': '\\uF811',\n 'ChartTemplate': '\\uF812',\n 'PageListFilter': '\\uF813',\n 'SecondaryNav': '\\uF814',\n 'ColumnVerticalSection': '\\uF81E',\n 'SkypeCircleSlash': '\\uF825',\n 'SkypeSlash': '\\uF826'\n }\n };\n\n registerIcons(subset, options);\n}\n"," // Your use of the content in the files referenced here is subject to the terms of the license at https://aka.ms/fluentui-assets-license\n\nimport {\n IIconOptions,\n IIconSubset,\n registerIcons\n} from '@uifabric/styling';\n\nexport function initializeIcons(\n baseUrl: string = '',\n options?: IIconOptions\n): void {\n const subset: IIconSubset = {\n style: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontStyle: 'normal',\n fontWeight: 'normal',\n speak: 'none'\n },\n fontFace: {\n fontFamily: `\"FabricMDL2Icons-17\"`,\n src: `url('${baseUrl}fabric-icons-17-0c4ed701.woff') format('woff')`\n },\n icons: {\n 'CustomizeToolbar': '\\uF828',\n 'DuplicateRow': '\\uF82A',\n 'RemoveFromTrash': '\\uF82B',\n 'MailOptions': '\\uF82C',\n 'Childof': '\\uF82D',\n 'Footer': '\\uF82E',\n 'Header': '\\uF82F',\n 'BarChartVerticalFill': '\\uF830',\n 'StackedColumnChart2Fill': '\\uF831',\n 'PlainText': '\\uF834',\n 'AccessibiltyChecker': '\\uF835',\n 'DatabaseSync': '\\uF842',\n 'ReservationOrders': '\\uF845',\n 'TabOneColumn': '\\uF849',\n 'TabTwoColumn': '\\uF84A',\n 'TabThreeColumn': '\\uF84B',\n 'BulletedTreeList': '\\uF84C',\n 'MicrosoftTranslatorLogoGreen': '\\uF852',\n 'MicrosoftTranslatorLogoBlue': '\\uF853',\n 'InternalInvestigation': '\\uF854',\n 'AddReaction': '\\uF85D',\n 'ContactHeart': '\\uF862',\n 'VisuallyImpaired': '\\uF866',\n 'EventToDoLogo': '\\uF869',\n 'Variable2': '\\uF86D',\n 'ModelingView': '\\uF871',\n 'DisconnectVirtualMachine': '\\uF873',\n 'ReportLock': '\\uF875',\n 'Uneditable2': '\\uF876',\n 'Uneditable2Mirrored': '\\uF877',\n 'BarChartVerticalEdit': '\\uF89D',\n 'GlobalNavButtonActive': '\\uF89F',\n 'PollResults': '\\uF8A0',\n 'Rerun': '\\uF8A1',\n 'QandA': '\\uF8A2',\n 'QandAMirror': '\\uF8A3',\n 'BookAnswers': '\\uF8A4',\n 'AlertSettings': '\\uF8B6',\n 'TrimStart': '\\uF8BB',\n 'TrimEnd': '\\uF8BC',\n 'TableComputed': '\\uF8F5',\n 'DecreaseIndentLegacy': '\\uE290',\n 'IncreaseIndentLegacy': '\\uE291',\n 'SizeLegacy': '\\uE2B2'\n }\n };\n\n registerIcons(subset, options);\n}\n","// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@uifabric/set-version';\nsetVersion('@uifabric/icons', '7.6.1');","import { registerIconAlias } from '@uifabric/styling';\n\nexport const registerIconAliases = () => {\n registerIconAlias('trash', 'delete');\n registerIconAlias('onedrive', 'onedrivelogo');\n registerIconAlias('alertsolid12', 'eventdatemissed12');\n registerIconAlias('sixpointstar', '6pointstar');\n registerIconAlias('twelvepointstar', '12pointstar');\n registerIconAlias('toggleon', 'toggleleft');\n registerIconAlias('toggleoff', 'toggleright');\n};\n\nexport default registerIconAliases;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","export default function _extends() {\n _extends = Object.assign || 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\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return <div>{counter}</div>\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","export enum actionTypes {\n // nav action types\n SET_ACTIVE_PATH = 'SET_ACTIVE_PATH',\n\n // webchat styling action types\n UPDATE_STYLE_OPTIONS ='UPDATE_STYLE_OPTIONS',\n UPDATE_STYLE_ELEMENT = 'UPDATE_STYLE_ELEMENT',\n UPDATE_ROOT_WEBCHAT_STATE_VARIABlE = 'UPDATE_ROOT_WEBCHAT_STATE_VARIABlE',\n \n // creation Experience action types\n UPDATE_ROOT_CREATION_STATE_VARIABlE = 'UPDATE_ROOT_CREATION_STATE_VARIABlE',\n\n // open close modal\n UPDATE_MODAL_OPTIONS= 'UPDATE_MODAL_OPTIONS',\n}\n\nexport function genericSingleAction<T>(actionName: actionTypes, property?: T): GenericAction<actionTypes, T> {\n return {\n type: actionName,\n payload: property\n };\n}\n\nexport class GenericAction<ActionType, PayloadType> {\n\n constructor(type: ActionType, payload?: PayloadType) {\n this.type = type;\n this.payload = payload;\n }\n\n type: ActionType;\n payload?: PayloadType;\n}","import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@uifabric/merge-styles';\n\nconst RTL_LOCAL_STORAGE_KEY = 'isRTL';\n\n// Default to undefined so that we initialize on first read.\nlet _isRTL: boolean | undefined;\n\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme: { rtl?: boolean } = {}): boolean {\n if (theme.rtl !== undefined) {\n return theme.rtl;\n }\n if (_isRTL === undefined) {\n // Fabric supports persisting the RTL setting between page refreshes via session storage\n let savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n if (savedRTL !== null) {\n _isRTL = savedRTL === '1';\n setRTL(_isRTL);\n }\n\n let doc = getDocument();\n if (_isRTL === undefined && doc) {\n _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n mergeStylesSetRTL(_isRTL);\n }\n }\n\n return !!_isRTL;\n}\n\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL: boolean, persistSetting: boolean = false): void {\n let doc = getDocument();\n if (doc) {\n doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n }\n\n if (persistSetting) {\n setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n }\n\n _isRTL = isRTL;\n mergeStylesSetRTL(_isRTL);\n}\n\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key: number, theme: { rtl?: boolean } = {}): number {\n if (getRTL(theme)) {\n if (key === KeyCodes.left) {\n key = KeyCodes.right;\n } else if (key === KeyCodes.right) {\n key = KeyCodes.left;\n }\n }\n\n return key;\n}\n","import React, { useMemo, useRef } from \"react\";\nimport { defaultWebchatOptions, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\nimport { connect } from \"react-redux\";\nimport ReactWebChat, { createDirectLine, createStyleSet } from 'botframework-webchat';\nimport { mergeStyles, mergeStyleSets } from '@uifabric/merge-styles';\nimport { useEffect } from \"react\";\nimport { FC } from \"react\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { actionTypes, genericSingleAction } from \"../../Redux/actions\";\n\n\n\ndeclare const DruidWebchat_v2: {\n [key: string]: any;\n take: (actionType: string) => any;\n};\n////////////////// Styling //////////////////\n\nlet WebChatContainerClassName = mergeStyles(\n {\n height: '70vh',\n margin: '20px 25px'\n }\n);\n\nlet WebChatPaneClassName = mergeStyles(\n {\n height: '82vh',\n // background: '#D2D6D9',\n padding: '30px 20px'\n }\n);\n\n////////////////// WebChat //////////////////\n\ninterface StateProps {\n webchatOptions: WebchatOptions;\n getState: () => IAppState\n}\n\ninterface DispatchProps {\n updateStyleOptions: (value: any) => void,\n}\n\ninterface Props {\n botId: string; \n baseUrl: string;\n currentStyleOptions: Partial<WebchatOptions>;\n}\n\ntype PropsType = StateProps & DispatchProps & Props;\n\n\n\nexport const WebChat: FC<PropsType> = (props) => {\n\n useEffect(() => {\n // const {styleOptions: toSetWebChatStyleOptions } = DruidWebchat_v2.visitMergedChatOptions({ UI: {}, styleOptions: props.webChatStyleOptions});\n const defaultOptions = {\n botId: props.botId ||'0ddf3836-9857-4da5-a136-08d90fb74ba3',\n baseUrl: props.baseUrl ||'https://druidapi.develop.druidplatform.com',\n // _loadConfigurationJSON: loadConfigurationValue,\n UI: {\n // parentElement: document.querySelector('.webchat-editor-container'),\n autoExpandEnabled: true,\n height: '80vh',\n bottom: '5%',\n fullScreenMode: false\n // headerOptions: {\n // showReload: true\n // }\n },\n };\n\n // const mergedOptions = { ...props.webchatOptions, ...defaultOptions }\n const mergedOptions = { ...defaultOptions }\n\n DruidWebchat_v2.init(mergedOptions);\n\n return () => {\n DruidWebchat_v2.destroy();\n }\n }, [props.botId, props.baseUrl]);\n\n const restylingsEnabledModified = useRef(false);\n const initialIsLoading = useRef(true);\n useEffect(() => {\n DruidWebchat_v2.customGeneratorFunction = function* (action: any) {\n \n if (action.type === 'RESET') {\n if(!(\"restylingsEnabled\" in (action?.payload?.UI || {}))) {\n //DruidWebchat_v2.initialOptions.UI.restylingsEnabled = (props.webchatOptions as any).UI.restylingsEnabled\n\n yield DruidWebchat_v2.take('SET_LOADING');\n // console.info(props.webchatOptions);\n yield DruidWebchat_v2.put({ type: 'SET_MERGEDCHATOPTIONS', payload: props.currentStyleOptions });\n } else {\n // restylingsEnabledModified.current = true;\n }\n \n }\n\n if (action.type === 'SET_LOADING') {\n // if(restylingsEnabledModified.current !== true) {\n if(initialIsLoading.current === true) {\n // @ts-ignore\n const { payload } = yield DruidWebchat_v2.take('SET_LOADCONFIGURATIONRESULT');\n if(payload) {\n const result = defaultWebchatOptions(payload);\n props.updateStyleOptions(result);\n initialIsLoading.current = false;\n }\n } else {\n restylingsEnabledModified.current = false;\n }\n \n }\n };\n\n\n return () => {\n DruidWebchat_v2.customGeneratorFunction = null;\n }\n }, [props.webchatOptions]);\n return (\n <div className={WebChatPaneClassName}>\n <div className={`${WebChatContainerClassName} webchat-editor-container`}>\n </div>\n </div>\n );\n}\n\n\n////////////////// Redux //////////////////\n\nconst mapStateToProps = (state: IAppState, ownProps: Props): StateProps => ({\n webchatOptions: state.webchatOptions,\n getState: () => state\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<AnyAction>): DispatchProps => ({\n updateStyleOptions: (value: any) => {\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_STYLE_OPTIONS, value ));\n }\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(WebChat);\n","/**\n * Simulated enum for keycodes. These will get inlined by uglify when used much like an enum\n *\n * @public\n * {@docCategory KeyCodes}\n */\nexport const KeyCodes = {\n backspace: 8 as 8,\n tab: 9 as 9,\n enter: 13 as 13,\n shift: 16 as 16,\n ctrl: 17 as 17,\n alt: 18 as 18,\n pauseBreak: 19 as 19,\n capslock: 20 as 20,\n escape: 27 as 27,\n space: 32 as 32,\n pageUp: 33 as 33,\n pageDown: 34 as 34,\n end: 35 as 35,\n home: 36 as 36,\n left: 37 as 37,\n up: 38 as 38,\n right: 39 as 39,\n down: 40 as 40,\n insert: 45 as 45,\n del: 46 as 46,\n zero: 48 as 48,\n one: 49 as 49,\n two: 50 as 50,\n three: 51 as 51,\n four: 52 as 52,\n five: 53 as 53,\n six: 54 as 54,\n seven: 55 as 55,\n eight: 56 as 56,\n nine: 57 as 57,\n a: 65 as 65,\n b: 66 as 66,\n c: 67 as 67,\n d: 68 as 68,\n e: 69 as 69,\n f: 70 as 70,\n g: 71 as 71,\n h: 72 as 72,\n i: 73 as 73,\n j: 74 as 74,\n k: 75 as 75,\n l: 76 as 76,\n m: 77 as 77,\n n: 78 as 78,\n o: 79 as 79,\n p: 80 as 80,\n q: 81 as 81,\n r: 82 as 82,\n s: 83 as 83,\n t: 84 as 84,\n u: 85 as 85,\n v: 86 as 86,\n w: 87 as 87,\n x: 88 as 88,\n y: 89 as 89,\n z: 90 as 90,\n leftWindow: 91 as 91,\n rightWindow: 92 as 92,\n select: 93 as 93,\n /* eslint-disable @typescript-eslint/naming-convention */\n zero_numpad: 96 as 96,\n one_numpad: 97 as 97,\n two_numpad: 98 as 98,\n three_numpad: 99 as 99,\n four_numpad: 100 as 100,\n five_numpad: 101 as 101,\n six_numpad: 102 as 102,\n seven_numpad: 103 as 103,\n eight_numpad: 104 as 104,\n nine_numpad: 105 as 105,\n /* eslint-enable @typescript-eslint/naming-convention */\n multiply: 106 as 106,\n add: 107 as 107,\n subtract: 109 as 109,\n decimalPoint: 110 as 110,\n divide: 111 as 111,\n f1: 112 as 112,\n f2: 113 as 113,\n f3: 114 as 114,\n f4: 115 as 115,\n f5: 116 as 116,\n f6: 117 as 117,\n f7: 118 as 118,\n f8: 119 as 119,\n f9: 120 as 120,\n f10: 121 as 121,\n f11: 122 as 122,\n f12: 123 as 123,\n numlock: 144 as 144,\n scrollLock: 145 as 145,\n semicolon: 186 as 186,\n equalSign: 187 as 187,\n comma: 188 as 188,\n dash: 189 as 189,\n period: 190 as 190,\n forwardSlash: 191 as 191,\n graveAccent: 192 as 192,\n openBracket: 219 as 219,\n backSlash: 220 as 220,\n closeBracket: 221 as 221,\n singleQuote: 222 as 222,\n};\nexport type KeyCodes = number;\n","import { __assign } from 'tslib';\nexport const assign = __assign;\n","import * as React from 'react';\nimport { mergeCss } from '@uifabric/merge-styles';\nimport { IStyle, ITheme } from '@uifabric/styling';\nimport { getRTL, memoizeFunction } from '@uifabric/utilities';\nimport { assign } from './utilities';\nimport { IFactoryOptions } from './IComponent';\nimport {\n ISlottableReactType,\n ISlot,\n ISlots,\n ISlotDefinition,\n ISlotFactory,\n ISlotProp,\n ISlottableProps,\n ISlotOptions,\n IDefaultSlotProps,\n IProcessedSlotProps,\n ValidProps,\n ValidShorthand,\n} from './ISlots';\n\n/**\n * This function is required for any module that uses slots.\n *\n * This function is a slot resolver that automatically evaluates slot functions to generate React elements.\n * A byproduct of this resolver is that it removes slots from the React hierarchy by bypassing React.createElement.\n *\n * To use this function on a per-file basis, use the jsx directive targeting withSlots.\n * This directive must be the FIRST LINE in the file to work correctly.\n * Usage of this pragma also requires withSlots import statement.\n *\n * See React.createElement\n */\n// Can't use typeof on React.createElement since it's overloaded. Approximate createElement's signature for now\n// and widen as needed.\nexport function withSlots<P>(\n type: ISlot<P> | React.FunctionComponent<P> | string,\n props?: (React.Attributes & P) | null,\n ...children: React.ReactNode[]\n): ReturnType<React.FunctionComponent<P>> {\n const slotType = type as ISlot<P>;\n if (slotType.isSlot) {\n // Since we are bypassing createElement, use React.Children.toArray to make sure children are\n // properly assigned keys.\n // TODO: should this be mutating? does React mutate children subprop with createElement?\n // TODO: will toArray clobber existing keys?\n // TODO: React generates warnings because it doesn't detect hidden member _store that is set in createElement.\n // Even children passed to createElement without keys don't generate this warning.\n // Is there a better way to prevent slots from appearing in hierarchy? toArray doesn't address root issue.\n children = React.Children.toArray(children);\n\n // TODO: There is something weird going on here with children embedded in props vs. rest args.\n // Comment out these lines to see. Make sure this function is doing the right things.\n if (children.length === 0) {\n return slotType(props);\n }\n\n return slotType({ ...(props as any), children });\n } else {\n // TODO: Are there some cases where children should NOT be spread? Also, spreading reraises perf question.\n // Children had to be spread to avoid breaking KeytipData in Toggle.view:\n // react-dom.development.js:18931 Uncaught TypeError: children is not a function\n // Without spread, function child is a child array of one element\n // TODO: is there a reason this can't be:\n // return React.createElement.apply(this, arguments);\n return React.createElement(type, props, ...children);\n }\n}\n\n/**\n * This function creates factories that render ouput depending on the user ISlotProp props passed in.\n * @param DefaultComponent - Base component to render when not overridden by user props.\n * @param options - Factory options, including defaultProp value for shorthand prop mapping.\n * @returns ISlotFactory function used for rendering slots.\n */\nexport function createFactory<TProps extends ValidProps, TShorthandProp extends ValidShorthand = never>(\n DefaultComponent: React.ComponentType<TProps>,\n options: IFactoryOptions<TProps> = {},\n): ISlotFactory<TProps, TShorthandProp> {\n const { defaultProp = 'children' } = options;\n\n const result: ISlotFactory<TProps, TShorthandProp> = (\n componentProps,\n userProps,\n userSlotOptions,\n defaultStyles,\n theme,\n ) => {\n // If they passed in raw JSX, just return that.\n if (React.isValidElement(userProps)) {\n return userProps;\n }\n\n const flattenedUserProps: TProps | undefined = _translateShorthand(defaultProp as string, userProps);\n const finalProps = _constructFinalProps(defaultStyles, theme, componentProps, flattenedUserProps);\n\n if (userSlotOptions) {\n if (userSlotOptions.component) {\n // TODO: Remove cast if possible. This cast is needed because TS errors on the intrinsic portion of ReactType.\n // return <userSlotOptions.component {...finalProps} />;\n const UserComponent = userSlotOptions.component as React.ComponentType<TProps>;\n return <UserComponent {...finalProps} />;\n }\n\n if (userSlotOptions.render) {\n return userSlotOptions.render(finalProps, DefaultComponent);\n }\n }\n\n return <DefaultComponent {...finalProps} />;\n };\n\n return result;\n}\n\n/**\n * Default factory for components without explicit factories.\n */\nconst defaultFactory = memoizeFunction(type => createFactory(type));\n\n/**\n * This function generates slots that can be used in JSX given a definition of slots and their corresponding types.\n * @param userProps - Props as pass to component.\n * @param slots - Slot definition object defining the default slot component for each slot.\n * @returns A set of created slots that components can render in JSX.\n */\nexport function getSlots<TComponentProps extends ISlottableProps<TComponentSlots>, TComponentSlots>(\n userProps: TComponentProps,\n slots: ISlotDefinition<Required<TComponentSlots>>,\n): ISlots<Required<TComponentSlots>> {\n const result: ISlots<Required<TComponentSlots>> = {} as ISlots<Required<TComponentSlots>>;\n\n // userProps already has default props mixed in by createComponent. Recast here to gain typing for this function.\n const mixedProps = userProps as TComponentProps & IDefaultSlotProps<TComponentSlots>;\n\n for (const name in slots) {\n if (slots.hasOwnProperty(name)) {\n // This closure method requires the use of withSlots to prevent unnecessary rerenders. This is because React\n // detects each closure as a different component (since it is a new instance) from the previous one and then\n // forces a rerender of the entire slot subtree. For now, the only way to avoid this is to use withSlots, which\n // bypasses the call to React.createElement.\n const slot: ISlots<Required<TComponentSlots>>[keyof TComponentSlots] = (componentProps, ...args: any[]) => {\n if (args.length > 0) {\n // If React.createElement is being incorrectly used with slots, there will be additional arguments.\n // We can detect these additional arguments and error on their presence.\n throw new Error('Any module using getSlots must use withSlots. Please see withSlots javadoc for more info.');\n }\n // TODO: having TS infer types here seems to cause infinite loop.\n // use explicit types or casting to preserve typing if possible.\n // TODO: this should be a lookup on TProps property instead of being TProps directly, which is probably\n // causing the infinite loop\n return _renderSlot<any, any, any>(\n slots[name],\n // TODO: this cast to any is hiding a relationship issue between the first two args\n componentProps as any,\n mixedProps[name],\n mixedProps.slots && mixedProps.slots[name],\n // _defaultStyles should always be present, but a check for existence is added to make view tests\n // easier to use.\n mixedProps._defaultStyles && mixedProps._defaultStyles[name],\n (mixedProps as any).theme,\n );\n };\n slot.isSlot = true;\n result[name] = slot;\n }\n }\n\n return result;\n}\n\n/**\n * Helper function that translates shorthand as needed.\n * @param defaultProp\n * @param slotProps\n */\nfunction _translateShorthand<TProps extends ValidProps, TShorthandProp extends ValidShorthand>(\n defaultProp: string,\n slotProps: ISlotProp<TProps, TShorthandProp>,\n): TProps | undefined {\n let transformedProps: TProps | undefined;\n\n if (typeof slotProps === 'string' || typeof slotProps === 'number' || typeof slotProps === 'boolean') {\n transformedProps = {\n [defaultProp]: slotProps as any,\n } as TProps;\n } else {\n transformedProps = slotProps as TProps;\n }\n\n return transformedProps;\n}\n\n/**\n * Helper function that constructs final styles and props given a series of props ordered by increasing priority.\n */\nfunction _constructFinalProps<TProps extends IProcessedSlotProps>(\n defaultStyles: IStyle,\n theme?: ITheme,\n ...allProps: (TProps | undefined)[]\n): TProps {\n const finalProps: TProps = {} as any;\n const classNames: (string | undefined)[] = [];\n\n for (const props of allProps) {\n classNames.push(props && props.className);\n assign(finalProps, props);\n }\n\n finalProps.className = mergeCss([defaultStyles, classNames], { rtl: getRTL(theme) });\n\n return finalProps;\n}\n\n/**\n * Render a slot given component and user props. Uses component factory if available, otherwise falls back\n * to default factory.\n * @param ComponentType Factory component type.\n * @param componentProps The properties passed into slot from within the component.\n * @param userProps The user properties passed in from outside of the component.\n */\nfunction _renderSlot<\n TSlotComponent extends ISlottableReactType<TSlotProps, TSlotShorthand>,\n TSlotProps extends ValidProps,\n TSlotShorthand extends ValidShorthand\n>(\n ComponentType: TSlotComponent,\n componentProps: TSlotProps,\n userProps: ISlotProp<TSlotProps, TSlotShorthand>,\n slotOptions: ISlotOptions<TSlotProps> | undefined,\n defaultStyles: IStyle,\n theme?: ITheme,\n): ReturnType<React.FunctionComponent> {\n if (ComponentType.create !== undefined) {\n return ComponentType.create(componentProps, userProps, slotOptions, defaultStyles);\n } else {\n // TODO: need to resolve typing / generic issues passing through memoizeFunction. for now, cast to 'unknown'\n return ((defaultFactory(ComponentType) as unknown) as ISlotFactory<TSlotProps, TSlotShorthand>)(\n componentProps,\n userProps,\n slotOptions,\n defaultStyles,\n theme,\n );\n }\n}\n","import * as React from 'react';\nimport { ICustomizations } from './Customizations';\n\nexport interface ICustomizerContext {\n customizations: ICustomizations;\n}\n\nexport const CustomizerContext = React.createContext<ICustomizerContext>({\n customizations: {\n inCustomizerContext: false,\n settings: {},\n scopedSettings: {},\n },\n});\n","import * as React from 'react';\nimport { concatStyleSets, IStyleSet, ITheme } from '@uifabric/styling';\nimport { Customizations, CustomizerContext, ICustomizerContext } from '@uifabric/utilities';\nimport { createFactory } from './slots';\nimport { assign } from './utilities';\n\nimport {\n IComponentOptions,\n ICustomizationProps,\n IStyleableComponentProps,\n IStylesFunctionOrObject,\n IToken,\n ITokenFunction,\n IViewComponent,\n} from './IComponent';\nimport { IDefaultSlotProps, ISlotCreator, ValidProps } from './ISlots';\n\n/**\n * Assembles a higher order component based on the following: styles, theme, view, and state.\n * Imposes a separation of concern and centralizes styling processing to increase ease of use and robustness\n * in how components use and apply styling and theming.\n *\n * Automatically merges and applies themes and styles with theme / styleprops having the highest priority.\n * State component, if provided, is passed in props for processing. Props from state / user are automatically processed\n * and styled before finally being passed to view.\n *\n * State components should contain all stateful behavior and should not generate any JSX, but rather simply call\n * the view prop.\n *\n * Views should simply be stateless pure functions that receive all props needed for rendering their output.\n *\n * State component is optional. If state is not provided, created component is essentially a functional\n * stateless component.\n *\n * @param options - component Component options. See IComponentOptions for more detail.\n */\nexport function createComponent<\n TComponentProps extends ValidProps,\n TTokens,\n TStyleSet extends IStyleSet<TStyleSet>,\n TViewProps extends TComponentProps = TComponentProps,\n TStatics = {}\n>(\n view: IViewComponent<TViewProps>,\n options: IComponentOptions<TComponentProps, TTokens, TStyleSet, TViewProps, TStatics> = {},\n): React.FunctionComponent<TComponentProps> & TStatics {\n const { factoryOptions = {} } = options;\n const { defaultProp } = factoryOptions;\n\n const ResultComponent: React.FunctionComponent<TComponentProps> = (\n componentProps: TComponentProps & IStyleableComponentProps<TViewProps, TTokens, TStyleSet>,\n ) => {\n const settings: ICustomizationProps<TViewProps, TTokens, TStyleSet> = _getCustomizations(\n options.displayName,\n React.useContext(CustomizerContext),\n options.fields,\n );\n\n const stateReducer = options.state;\n\n if (stateReducer) {\n // Don't assume state will return all props, so spread useState result over component props.\n componentProps = {\n ...componentProps,\n ...stateReducer(componentProps),\n };\n }\n\n const theme = componentProps.theme || settings.theme;\n\n const tokens = _resolveTokens(componentProps, theme, options.tokens, settings.tokens, componentProps.tokens);\n const styles = _resolveStyles(\n componentProps,\n theme,\n tokens,\n options.styles,\n settings.styles,\n componentProps.styles,\n );\n\n const viewProps = {\n ...componentProps,\n styles,\n tokens,\n _defaultStyles: styles,\n theme,\n } as TViewProps & IDefaultSlotProps<any>;\n\n return view(viewProps);\n };\n\n ResultComponent.displayName = options.displayName || view.name;\n\n // If a shorthand prop is defined, create a factory for the component.\n // TODO: This shouldn't be a concern of createComponent.. factoryOptions should just be forwarded.\n // Need to weigh creating default factories on component creation vs. memoizing them on use in slots.tsx.\n if (defaultProp) {\n (ResultComponent as ISlotCreator<TComponentProps, any>).create = createFactory(ResultComponent, { defaultProp });\n }\n\n assign(ResultComponent, options.statics);\n\n // Later versions of TypeSript should allow us to merge objects in a type safe way and avoid this cast.\n return ResultComponent as React.FunctionComponent<TComponentProps> & TStatics;\n}\n\n/**\n * Resolve all styles functions with both props and tokens and flatten results along with all styles objects.\n */\nfunction _resolveStyles<TProps, TTokens, TStyleSet extends IStyleSet<TStyleSet>>(\n props: TProps,\n theme: ITheme,\n tokens: TTokens,\n ...allStyles: (IStylesFunctionOrObject<TProps, TTokens, TStyleSet> | undefined)[]\n): ReturnType<typeof concatStyleSets> {\n return concatStyleSets(\n ...allStyles.map((styles: IStylesFunctionOrObject<TProps, TTokens, TStyleSet> | undefined) =>\n typeof styles === 'function' ? styles(props, theme, tokens) : styles,\n ),\n );\n}\n\n/**\n * Resolve all tokens functions with props flatten results along with all tokens objects.\n */\nfunction _resolveTokens<TViewProps, TTokens>(\n props: TViewProps,\n theme: ITheme,\n ...allTokens: (IToken<TViewProps, TTokens> | false | null | undefined)[]\n): TTokens {\n const tokens = {};\n\n for (let currentTokens of allTokens) {\n if (currentTokens) {\n // TODO: why is this cast needed? TS seems to think there is a (TToken | Function) union from somewhere.\n currentTokens =\n typeof currentTokens === 'function'\n ? (currentTokens as ITokenFunction<TViewProps, TTokens>)(props, theme)\n : currentTokens;\n\n if (Array.isArray(currentTokens)) {\n currentTokens = _resolveTokens(props, theme, ...currentTokens);\n }\n\n assign(tokens, currentTokens);\n }\n }\n\n return tokens as TTokens;\n}\n\n/**\n * Helper function for calling Customizations.getSettings falling back to default fields.\n *\n * @param displayName Displayable name for component.\n * @param context React context passed to component containing contextual settings.\n * @param fields Optional list of properties to grab from global store and context.\n */\nfunction _getCustomizations<TViewProps, TTokens, TStyleSet extends IStyleSet<TStyleSet>>(\n displayName: string | undefined,\n context: ICustomizerContext,\n fields?: string[],\n): ICustomizationProps<TViewProps, TTokens, TStyleSet> {\n // TODO: do we want field props? should fields be part of IComponent and used here?\n // TODO: should we centrally define DefaultFields? (not exported from styling)\n // TODO: tie this array to ICustomizationProps, such that each array element is keyof ICustomizationProps\n const DefaultFields = ['theme', 'styles', 'tokens'];\n return Customizations.getSettings(fields || DefaultFields, displayName, context.customizations);\n}\n","const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n const result: Record<string, number> = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport const imageProperties = imgProperties;\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record<string, any>,\n allowedPropNames: string[] | Record<string, number>,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n","/**\n * Functions used by Stack components to simplify style-related computations\n */\n\nimport { ITheme } from '../../Styling';\nimport { IStackProps } from './Stack.types';\n\n// Helper function that converts a themed spacing key (if given) to the corresponding themed spacing value.\nconst _getThemedSpacing = (space: string, theme: ITheme): string => {\n if (theme.spacing.hasOwnProperty(space)) {\n return theme.spacing[space as keyof typeof theme.spacing];\n }\n return space;\n};\n\n// Helper function that takes a gap as a string and converts it into a { value, unit } representation.\nconst _getValueUnitGap = (gap: string): { value: number; unit: string } => {\n const numericalPart = parseFloat(gap);\n const numericalValue = isNaN(numericalPart) ? 0 : numericalPart;\n const numericalString = isNaN(numericalPart) ? '' : numericalPart.toString();\n\n const unitPart = gap.substring(numericalString.toString().length);\n\n return {\n value: numericalValue,\n unit: unitPart || 'px',\n };\n};\n\n/**\n * Takes in a gap size in either a CSS-style format (e.g. 10 or \"10px\")\n * or a key of a themed spacing value (e.g. \"s1\").\n * Returns the separate numerical value of the padding (e.g. 10)\n * and the CSS unit (e.g. \"px\").\n */\nexport const parseGap = (\n gap: IStackProps['gap'],\n theme: ITheme,\n): { rowGap: { value: number; unit: string }; columnGap: { value: number; unit: string } } => {\n if (gap === undefined || gap === '') {\n return {\n rowGap: {\n value: 0,\n unit: 'px',\n },\n columnGap: {\n value: 0,\n unit: 'px',\n },\n };\n }\n\n if (typeof gap === 'number') {\n return {\n rowGap: {\n value: gap,\n unit: 'px',\n },\n columnGap: {\n value: gap,\n unit: 'px',\n },\n };\n }\n\n const splitGap = gap.split(' ');\n\n // If the array has more than two values, then return 0px.\n if (splitGap.length > 2) {\n return {\n rowGap: {\n value: 0,\n unit: 'px',\n },\n columnGap: {\n value: 0,\n unit: 'px',\n },\n };\n }\n\n // If the array has two values, then parse each one.\n if (splitGap.length === 2) {\n return {\n rowGap: _getValueUnitGap(_getThemedSpacing(splitGap[0], theme)),\n columnGap: _getValueUnitGap(_getThemedSpacing(splitGap[1], theme)),\n };\n }\n\n // Else, parse the numerical value and pass it as both the vertical and horizontal gap.\n const calculatedGap = _getValueUnitGap(_getThemedSpacing(gap, theme));\n\n return {\n rowGap: calculatedGap,\n columnGap: calculatedGap,\n };\n};\n\n/**\n * Takes in a padding in a CSS-style format (e.g. 10, \"10px\", \"10px 10px\", etc.)\n * where the separate padding values can also be the key of a themed spacing value\n * (e.g. \"s1 m\", \"10px l1 20px l2\", etc.).\n * Returns a CSS-style padding.\n */\nexport const parsePadding = (padding: number | string | undefined, theme: ITheme): number | string | undefined => {\n if (padding === undefined || typeof padding === 'number' || padding === '') {\n return padding;\n }\n\n const paddingValues = padding.split(' ');\n if (paddingValues.length < 2) {\n return _getThemedSpacing(padding, theme);\n }\n\n return paddingValues.reduce((padding1: string, padding2: string) => {\n return _getThemedSpacing(padding1, theme) + ' ' + _getThemedSpacing(padding2, theme);\n });\n};\n","import { IStackComponent, IStackStyles, IStackStylesReturnType } from './Stack.types';\nimport { parseGap, parsePadding } from './StackUtils';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst nameMap: { [key: string]: string } = {\n start: 'flex-start',\n end: 'flex-end',\n};\n\nconst GlobalClassNames = {\n root: 'ms-Stack',\n inner: 'ms-Stack-inner',\n};\n\nexport const styles: IStackComponent['styles'] = (props, theme, tokens): IStackStylesReturnType => {\n const {\n verticalFill,\n horizontal,\n reversed,\n grow,\n wrap,\n horizontalAlign,\n verticalAlign,\n disableShrink,\n className,\n } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n /* eslint-disable deprecation/deprecation */\n const childrenGap = tokens && tokens.childrenGap ? tokens.childrenGap : props.gap;\n const maxHeight = tokens && tokens.maxHeight ? tokens.maxHeight : props.maxHeight;\n const maxWidth = tokens && tokens.maxWidth ? tokens.maxWidth : props.maxWidth;\n const padding = tokens && tokens.padding ? tokens.padding : props.padding;\n /* eslint-enable deprecation/deprecation */\n\n const { rowGap, columnGap } = parseGap(childrenGap, theme);\n\n const horizontalMargin = `${-0.5 * columnGap.value}${columnGap.unit}`;\n const verticalMargin = `${-0.5 * rowGap.value}${rowGap.unit}`;\n\n // styles to be applied to all direct children regardless of wrap or direction\n const childStyles = {\n textOverflow: 'ellipsis',\n };\n\n // selectors to be applied regardless of wrap or direction\n const commonSelectors = {\n // flexShrink styles are applied by the StackItem\n '> *:not(.ms-StackItem)': {\n flexShrink: disableShrink ? 0 : 1,\n },\n };\n\n if (wrap) {\n return {\n root: [\n classNames.root,\n {\n flexWrap: 'wrap',\n maxWidth,\n maxHeight,\n width: 'auto',\n overflow: 'visible',\n height: '100%',\n },\n horizontalAlign && {\n [horizontal ? 'justifyContent' : 'alignItems']: nameMap[horizontalAlign] || horizontalAlign,\n },\n verticalAlign && {\n [horizontal ? 'alignItems' : 'justifyContent']: nameMap[verticalAlign] || verticalAlign,\n },\n className,\n {\n // not allowed to be overridden by className\n // since this is necessary in order to prevent collapsing margins\n display: 'flex',\n },\n horizontal && {\n height: verticalFill ? '100%' : 'auto',\n },\n ],\n\n inner: [\n classNames.inner,\n {\n display: 'flex',\n flexWrap: 'wrap',\n marginLeft: horizontalMargin,\n marginRight: horizontalMargin,\n marginTop: verticalMargin,\n marginBottom: verticalMargin,\n overflow: 'visible',\n boxSizing: 'border-box',\n padding: parsePadding(padding, theme),\n // avoid unnecessary calc() calls if horizontal gap is 0\n width: columnGap.value === 0 ? '100%' : `calc(100% + ${columnGap.value}${columnGap.unit})`,\n maxWidth: '100vw',\n\n selectors: {\n '> *': {\n margin: `${0.5 * rowGap.value}${rowGap.unit} ${0.5 * columnGap.value}${columnGap.unit}`,\n\n ...childStyles,\n },\n ...commonSelectors,\n },\n },\n horizontalAlign && {\n [horizontal ? 'justifyContent' : 'alignItems']: nameMap[horizontalAlign] || horizontalAlign,\n },\n verticalAlign && {\n [horizontal ? 'alignItems' : 'justifyContent']: nameMap[verticalAlign] || verticalAlign,\n },\n horizontal && {\n flexDirection: reversed ? 'row-reverse' : 'row',\n\n // avoid unnecessary calc() calls if vertical gap is 0\n height: rowGap.value === 0 ? '100%' : `calc(100% + ${rowGap.value}${rowGap.unit})`,\n\n selectors: {\n '> *': {\n maxWidth: columnGap.value === 0 ? '100%' : `calc(100% - ${columnGap.value}${columnGap.unit})`,\n },\n },\n },\n !horizontal && {\n flexDirection: reversed ? 'column-reverse' : 'column',\n height: `calc(100% + ${rowGap.value}${rowGap.unit})`,\n\n selectors: {\n '> *': {\n maxHeight: rowGap.value === 0 ? '100%' : `calc(100% - ${rowGap.value}${rowGap.unit})`,\n },\n },\n },\n ],\n } as IStackStyles;\n }\n\n return {\n root: [\n classNames.root,\n {\n display: 'flex',\n flexDirection: horizontal ? (reversed ? 'row-reverse' : 'row') : reversed ? 'column-reverse' : 'column',\n flexWrap: 'nowrap',\n width: 'auto',\n height: verticalFill ? '100%' : 'auto',\n maxWidth,\n maxHeight,\n padding: parsePadding(padding, theme),\n boxSizing: 'border-box',\n\n selectors: {\n '> *': childStyles,\n\n // apply gap margin to every direct child except the first direct child if the direction is not reversed,\n // and the last direct one if it is\n [reversed ? '> *:not(:last-child)' : '> *:not(:first-child)']: [\n horizontal && {\n marginLeft: `${columnGap.value}${columnGap.unit}`,\n },\n !horizontal && {\n marginTop: `${rowGap.value}${rowGap.unit}`,\n },\n ],\n\n ...commonSelectors,\n },\n },\n grow && {\n flexGrow: grow === true ? 1 : grow,\n },\n horizontalAlign && {\n [horizontal ? 'justifyContent' : 'alignItems']: nameMap[horizontalAlign] || horizontalAlign,\n },\n verticalAlign && {\n [horizontal ? 'alignItems' : 'justifyContent']: nameMap[verticalAlign] || verticalAlign,\n },\n className,\n ],\n // TODO: this cast may be hiding some potential issues with styling and name\n // lookups and should be removed\n } as IStackStyles;\n};\n","import { getGlobalClassNames } from '../../../Styling';\nimport { IStackItemComponent, IStackItemStyles, IStackItemStylesReturnType } from './StackItem.types';\n\nconst GlobalClassNames = {\n root: 'ms-StackItem',\n};\n\nconst alignMap: { [key: string]: string } = {\n start: 'flex-start',\n end: 'flex-end',\n};\n\nexport const StackItemStyles: IStackItemComponent['styles'] = (props, theme, tokens): IStackItemStylesReturnType => {\n const { grow, shrink, disableShrink, align, verticalFill, order, className } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n theme.fonts.medium,\n classNames.root,\n {\n margin: tokens.margin,\n padding: tokens.padding,\n height: verticalFill ? '100%' : 'auto',\n width: 'auto',\n },\n grow && { flexGrow: grow === true ? 1 : grow },\n (disableShrink || (!grow && !shrink)) && {\n flexShrink: 0,\n },\n shrink &&\n !disableShrink && {\n flexShrink: 1,\n },\n align && {\n alignSelf: alignMap[align] || align,\n },\n order && {\n order: order,\n },\n className,\n ],\n // TODO: this cast may be hiding some potential issues with styling and name\n // lookups and should be removed\n } as IStackItemStyles;\n};\n","/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { withSlots, createComponent, getSlots } from '../../../Foundation';\nimport { getNativeProps, htmlElementProperties } from '../../../Utilities';\nimport { IStackItemComponent, IStackItemProps, IStackItemSlots } from './StackItem.types';\nimport { StackItemStyles as styles } from './StackItem.styles';\n\nconst StackItemView: IStackItemComponent['view'] = props => {\n const { children } = props;\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, htmlElementProperties);\n if (React.Children.count(children) < 1) {\n return null;\n }\n\n const Slots = getSlots<IStackItemProps, IStackItemSlots>(props, {\n root: 'div',\n });\n\n return <Slots.root {...nativeProps}>{children}</Slots.root>;\n};\n\nexport const StackItem: React.FunctionComponent<IStackItemProps> = createComponent(StackItemView, {\n displayName: 'StackItem',\n styles,\n});\n\nexport default StackItem;\n","/** @jsxRuntime classic */\n/** @jsx withSlots */\nimport * as React from 'react';\nimport { withSlots, createComponent, getSlots } from '../../Foundation';\nimport { getNativeProps, htmlElementProperties, warnDeprecations } from '../../Utilities';\nimport { styles } from './Stack.styles';\nimport { IStackComponent, IStackProps, IStackSlots } from './Stack.types';\nimport { StackItem } from './StackItem/StackItem';\nimport { IStackItemProps } from './StackItem/StackItem.types';\n\nconst StackView: IStackComponent['view'] = props => {\n const { as: RootType = 'div', disableShrink, wrap, ...rest } = props;\n\n warnDeprecations('Stack', props, {\n gap: 'tokens.childrenGap',\n maxHeight: 'tokens.maxHeight',\n maxWidth: 'tokens.maxWidth',\n padding: 'tokens.padding',\n });\n\n const stackChildren: (React.ReactChild | null)[] | null | undefined = React.Children.map(\n props.children,\n (child: React.ReactElement<IStackItemProps>, index: number) => {\n if (!child) {\n return null;\n }\n\n if (_isStackItem(child)) {\n const defaultItemProps: IStackItemProps = {\n shrink: !disableShrink,\n };\n\n return React.cloneElement(child, {\n ...defaultItemProps,\n ...child.props,\n });\n }\n\n return child;\n },\n );\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(rest, htmlElementProperties);\n\n const Slots = getSlots<IStackProps, IStackSlots>(props, {\n root: RootType,\n inner: 'div',\n });\n\n if (wrap) {\n return (\n <Slots.root {...nativeProps}>\n <Slots.inner>{stackChildren}</Slots.inner>\n </Slots.root>\n );\n }\n\n return <Slots.root {...nativeProps}>{stackChildren}</Slots.root>;\n};\n\nfunction _isStackItem(item: React.ReactNode): item is typeof StackItem {\n // In theory, we should be able to just check item.type === StackItem.\n // However, under certain unclear circumstances (see https://github.com/microsoft/fluentui/issues/10785),\n // the object identity is different despite the function implementation being the same.\n return (\n !!item &&\n typeof item === 'object' &&\n !!(item as React.ReactElement).type &&\n // StackItem is generated by createComponent, so we need to check its displayName instead of name\n ((item as React.ReactElement).type as React.ComponentType).displayName === StackItem.displayName\n );\n}\n\nconst StackStatics = {\n Item: StackItem,\n};\n\nexport const Stack: React.FunctionComponent<IStackProps> & {\n Item: React.FunctionComponent<IStackItemProps>;\n} = createComponent(StackView, {\n displayName: 'Stack',\n styles,\n statics: StackStatics,\n});\n\nexport default Stack;\n","import * as React from 'react';\nimport { ISettings, Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\n\n/**\n * Hook to get Customizations settings from Customizations singleton or CustomizerContext.\n * It will trigger component state update on settings change observed.\n */\nexport function useCustomizationSettings(properties: string[], scopeName?: string): ISettings {\n const forceUpdate = useForceUpdate();\n const { customizations } = React.useContext(CustomizerContext);\n const { inCustomizerContext } = customizations;\n React.useEffect(() => {\n if (!inCustomizerContext) {\n Customizations.observe(forceUpdate);\n }\n return () => {\n if (!inCustomizerContext) {\n Customizations.unobserve(forceUpdate);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- exclude forceUpdate\n }, [inCustomizerContext]);\n\n return Customizations.getSettings(properties, scopeName, customizations);\n}\n\nfunction useForceUpdate() {\n const [, setValue] = React.useState(0);\n return () => setValue(value => ++value);\n}\n","import * as React from 'react';\nimport { IStyleSet, IStyleFunctionOrObject, concatStyleSetsWithProps } from '@uifabric/merge-styles';\nimport { useCustomizationSettings } from './customizations/useCustomizationSettings';\n\nexport interface IPropsWithStyles<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>> {\n styles?: IStyleFunctionOrObject<TStyleProps, TStyleSet>;\n}\n\nexport interface ICustomizableProps {\n /**\n * Name of scope, which can be targeted using the Customizer.\n */\n scope: string;\n\n /**\n * List of fields which can be customized.\n * @defaultvalue [ 'theme', 'styles' ]\n */\n fields?: string[];\n}\n\nconst DefaultFields = ['theme', 'styles'];\n\nexport type StyleFunction<TStyleProps, TStyleSet> = IStyleFunctionOrObject<TStyleProps, TStyleSet> & {\n /** Cache for all style functions. */\n __cachedInputs__: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[];\n\n /** True if no styles prop or styles from Customizer is passed to wrapped component. */\n __noStyleOverride__: boolean;\n};\n\n/**\n * The styled HOC wrapper allows you to create a functional wrapper around a given component which will resolve\n * getStyles functional props, and mix customized props passed in using concatStyleSets.\n *\n * @example\n * ```tsx\n * export const Toggle = styled(\n * ToggleBase,\n * props => ({ root: { background: 'red' }})\n * );\n * ```\n * @param Component - The unstyled base component to render, which receives styles.\n * @param baseStyles - The styles which should be curried with the component.\n * @param getProps - A helper which provides default props.\n * @param customizable - An object which defines which props can be customized using the Customizer.\n * @param pure - A boolean indicating if the component should avoid re-rendering when props haven't changed.\n * Note that pure should not be used on components which allow children, or take in complex objects or\n * arrays as props which could mutate on every render.\n */\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.FunctionComponent<TComponentProps>;\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet> & React.RefAttributes<TRef>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>,\n TRef = unknown\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.ForwardRefExoticComponent<React.PropsWithoutRef<TComponentProps> & React.RefAttributes<TRef>>;\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet> & React.RefAttributes<TRef>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>,\n TRef = unknown\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n) {\n customizable = customizable || { scope: '', fields: undefined };\n\n const { scope, fields = DefaultFields } = customizable;\n\n const Wrapped = React.forwardRef((props: TComponentProps, forwardedRef: React.Ref<TRef>) => {\n const styles = React.useRef<StyleFunction<TStyleProps, TStyleSet>>();\n\n const settings = useCustomizationSettings(fields, scope);\n const { styles: customizedStyles, dir, ...rest } = settings;\n const additionalProps = getProps ? getProps(props) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cache = (styles.current && (styles.current as any).__cachedInputs__) || [];\n if (!styles.current || customizedStyles !== cache[1] || props.styles !== cache[2]) {\n // Using styled components as the Component arg will result in nested styling arrays.\n const concatenatedStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet> = (styleProps: TStyleProps) =>\n concatStyleSetsWithProps(styleProps, baseStyles, customizedStyles, props.styles);\n\n // The __cachedInputs__ array is attached to the function and consumed by the\n // classNamesFunction as a list of keys to include for memoizing classnames.\n (concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>).__cachedInputs__ = [\n baseStyles,\n customizedStyles,\n props.styles,\n ];\n\n (concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>).__noStyleOverride__ =\n !customizedStyles && !props.styles;\n\n styles.current = concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>;\n }\n\n return <Component ref={forwardedRef} {...rest} {...additionalProps} {...props} styles={styles.current} />;\n });\n // Function.prototype.name is an ES6 feature, so the cast to any is required until we're\n // able to drop IE 11 support and compile with ES6 libs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Wrapped.displayName = `Styled${Component.displayName || (Component as any).name}`;\n\n // This preserves backwards compatibility.\n const pureComponent = pure ? React.memo(Wrapped) : Wrapped;\n // Check if the wrapper has a displayName after it has been memoized. Then assign it to the pure component.\n if (Wrapped.displayName) {\n pureComponent.displayName = Wrapped.displayName;\n }\n\n return pureComponent;\n}\n","import {\n mergeCssSets,\n IStyleSet,\n IProcessedStyleSet,\n Stylesheet,\n IStyleFunctionOrObject,\n} from '@uifabric/merge-styles';\nimport { getRTL } from './rtl';\nimport { getWindow } from './dom';\nimport { StyleFunction } from './styled';\n\nconst MAX_CACHE_COUNT = 50;\nconst DEFAULT_SPECIFICITY_MULTIPLIER = 5;\n\nlet _memoizedClassNames = 0;\n\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => _memoizedClassNames++);\n}\n\n// Note that because of the caching nature within the classNames memoization,\n// I've disabled this rule to simply be able to work with any types.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// This represents a prop we attach to each Map to indicate the cached return value\n// associated with the graph node.\nconst retVal = '__retval__';\n\ninterface IRecursiveMemoNode extends Map<any, IRecursiveMemoNode> {\n [retVal]?: string;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { enableClassNameCacheFullWarning?: boolean } }) | undefined;\n\nexport interface IClassNamesFunctionOptions {\n /**\n * Disables class caching for scenarios where styleProp parts mutate frequently.\n */\n disableCaching?: boolean;\n\n /**\n * Size of the cache. It overwrites default cache size when defined.\n */\n cacheSize?: number;\n\n /**\n * Set to true if component base styles are implemented in scss instead of css-in-js.\n */\n useStaticStyles?: boolean;\n}\n\n/**\n * Creates a getClassNames function which calls getStyles given the props, and injects them\n * into mergeStyleSets.\n *\n * Note that the props you pass in on every render should be in the same order and\n * immutable (numbers, strings, and booleans). This will allow the results to be memoized. Violating\n * these will cause extra recalcs to occur.\n */\nexport function classNamesFunction<TStyleProps extends {}, TStyleSet extends IStyleSet<TStyleSet>>(\n options: IClassNamesFunctionOptions = {},\n): (\n getStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined,\n styleProps?: TStyleProps,\n) => IProcessedStyleSet<TStyleSet> {\n // We build a trie where each node is a Map. The map entry key represents an argument\n // value, and the entry value is another node (Map). Each node has a `__retval__`\n // property which is used to hold the cached response.\n\n // To derive the response, we can simply ensure the arguments are added or already\n // exist in the trie. At the last node, if there is a `__retval__` we return that. Otherwise\n // we call the `getStyles` api to evaluate, cache on the property, and return that.\n let map: IRecursiveMemoNode = new Map();\n let styleCalcCount = 0;\n let getClassNamesCount = 0;\n let currentMemoizedClassNames = _memoizedClassNames;\n\n const getClassNames = (\n styleFunctionOrObject: IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined,\n styleProps: TStyleProps = {} as TStyleProps,\n ): IProcessedStyleSet<TStyleSet> => {\n // If useStaticStyles is true, styleFunctionOrObject returns slot to classname mappings.\n // If there is also no style overrides, we can skip merge styles completely and\n // simply return the result from the style funcion.\n if (\n options.useStaticStyles &&\n typeof styleFunctionOrObject === 'function' &&\n (styleFunctionOrObject as StyleFunction<TStyleProps, TStyleSet>).__noStyleOverride__\n ) {\n return styleFunctionOrObject(styleProps) as IProcessedStyleSet<TStyleSet>;\n }\n\n getClassNamesCount++;\n let current: Map<any, any> = map;\n const { theme } = styleProps as any;\n const rtl = theme && theme.rtl !== undefined ? theme.rtl : getRTL();\n\n const disableCaching = options.disableCaching;\n\n // On reset of our stylesheet, reset memoized cache.\n if (currentMemoizedClassNames !== _memoizedClassNames) {\n currentMemoizedClassNames = _memoizedClassNames;\n map = new Map();\n styleCalcCount = 0;\n }\n\n if (!options.disableCaching) {\n current = _traverseMap(map, styleFunctionOrObject as any);\n current = _traverseMap(current, styleProps);\n }\n\n if (disableCaching || !(current as any)[retVal]) {\n if (styleFunctionOrObject === undefined) {\n (current as any)[retVal] = {} as IProcessedStyleSet<TStyleSet>;\n } else {\n (current as any)[retVal] = mergeCssSets(\n [\n (typeof styleFunctionOrObject === 'function'\n ? styleFunctionOrObject(styleProps)\n : styleFunctionOrObject) as IStyleSet<TStyleSet>,\n ],\n { rtl: !!rtl, specificityMultiplier: options.useStaticStyles ? DEFAULT_SPECIFICITY_MULTIPLIER : undefined },\n );\n }\n\n if (!disableCaching) {\n styleCalcCount++;\n }\n }\n\n if (styleCalcCount > (options.cacheSize || MAX_CACHE_COUNT)) {\n const win = getWindow() as AppWindow;\n if (win?.FabricConfig?.enableClassNameCacheFullWarning) {\n // eslint-disable-next-line no-console\n console.warn(\n `Styles are being recalculated too frequently. Cache miss rate is ${styleCalcCount}/${getClassNamesCount}.`,\n );\n // eslint-disable-next-line no-console\n console.trace();\n }\n\n map.clear();\n styleCalcCount = 0;\n\n // Mutate the options passed in, that's all we can do.\n options.disableCaching = true;\n }\n\n // Note: the retVal is an attached property on the Map; not a key in the Map. We use this attached property to\n // cache the return value for this branch of the graph.\n return (current as any)[retVal];\n };\n\n return getClassNames;\n}\n\nfunction _traverseEdge(current: Map<any, any>, value: any): Map<any, any> {\n value = _normalizeValue(value);\n\n if (!current.has(value)) {\n current.set(value, new Map<any, any>());\n }\n\n return current.get(value);\n}\n\nfunction _traverseMap(current: Map<any, any>, inputs: any[] | Object): Map<any, any> {\n if (typeof inputs === 'function') {\n const cachedInputsFromStyled = (inputs as StyleFunction<any, any>).__cachedInputs__;\n if (cachedInputsFromStyled) {\n // The styled helper will generate the styles function and will attach the cached\n // inputs (consisting of the default styles, customzied styles, and user provided styles.)\n // These should be used as cache keys for deriving the memoized value.\n for (const input of (inputs as any).__cachedInputs__) {\n current = _traverseEdge(current, input);\n }\n } else {\n current = _traverseEdge(current, inputs);\n }\n } else if (typeof inputs === 'object') {\n for (const propName in inputs) {\n if (inputs.hasOwnProperty(propName)) {\n current = _traverseEdge(current, (inputs as any)[propName]);\n }\n }\n }\n\n return current;\n}\n\nfunction _normalizeValue(value: any): string {\n switch (value) {\n case undefined:\n return '__undefined__';\n case null:\n return '__null__';\n default:\n return value;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns a single function which will call each of the given functions in the context of the\n * parent.\n */\nexport function appendFunction(parent: any, ...functions: any[]): () => void {\n if (functions.length < 2) {\n return functions[0] as () => void;\n }\n\n return (...args: any[]): void => {\n functions.forEach((f: () => void) => f && f.apply(parent, args));\n };\n}\n","import * as React from 'react';\nimport { appendFunction } from './appendFunction';\n\n/**\n * Extends a component's lifetime methods by appending new functions to the existing lifetime functions.\n */\nexport function extendComponent<T extends React.Component>(parent: T, methods: { [key in keyof T]?: T[key] }): void {\n for (let name in methods) {\n if (methods.hasOwnProperty(name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parent[name] = appendFunction(parent, parent[name], methods[name]) as any;\n }\n }\n}\n","import * as React from 'react';\nimport { IBaseProps } from './BaseComponent.types';\nimport { extendComponent } from './extendComponent';\n\n/**\n * Helper to manage componentRef resolution. Internally appends logic to\n * lifetime methods to resolve componentRef to the passed in object.\n *\n * Usage: call initializeComponentRef(this) in the constructor,\n */\nexport function initializeComponentRef<TProps extends IBaseProps, TState>(obj: React.Component<TProps, TState>): void {\n extendComponent(obj, {\n componentDidMount: _onMount,\n componentDidUpdate: _onUpdate,\n componentWillUnmount: _onUnmount,\n });\n}\n\nfunction _onMount(): void {\n _setComponentRef(this.props.componentRef, this);\n}\n\nfunction _onUpdate(prevProps: IBaseProps): void {\n if (prevProps.componentRef !== this.props.componentRef) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _setComponentRef((prevProps as any).componentRef, null);\n _setComponentRef(this.props.componentRef, this);\n }\n}\n\nfunction _onUnmount(): void {\n _setComponentRef(this.props.componentRef, null);\n}\n\nfunction _setComponentRef<TInterface>(componentRef: React.RefObject<TInterface>, value: TInterface | null): void {\n if (componentRef) {\n if (typeof componentRef === 'object') {\n (componentRef as { current: TInterface | null }).current = value;\n } else if (typeof componentRef === 'function') {\n (componentRef as Function)(value);\n }\n }\n}\n","import { getWindow } from './dom/getWindow';\nimport { Stylesheet } from '@uifabric/merge-styles';\n\n// Initialize global window id.\nconst CURRENT_ID_PROPERTY = '__currentId__';\nconst DEFAULT_ID_STRING = 'id__';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _global: any = getWindow() || {};\n\nif (_global[CURRENT_ID_PROPERTY] === undefined) {\n _global[CURRENT_ID_PROPERTY] = 0;\n}\n\nlet _initializedStylesheetResets = false;\n\n/**\n * Generates a unique id in the global scope (this spans across duplicate copies of the same library.)\n *\n * @public\n */\nexport function getId(prefix?: string): string {\n if (!_initializedStylesheetResets) {\n // Configure ids to reset on stylesheet resets.\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(resetIds);\n }\n _initializedStylesheetResets = true;\n }\n\n let index = _global[CURRENT_ID_PROPERTY]++;\n\n return (prefix === undefined ? DEFAULT_ID_STRING : prefix) + index;\n}\n\n/**\n * Resets id counter to an (optional) number.\n *\n * @public\n */\nexport function resetIds(counter: number = 0): void {\n _global[CURRENT_ID_PROPERTY] = counter;\n}\n","/**\n * Dictionary of booleans.\n *\n * @internal\n */\nexport interface IDictionary {\n [className: string]: boolean;\n}\n\n/**\n * Serializable object.\n *\n * @internal\n */\nexport interface ISerializableObject {\n toString?: () => string;\n}\n\n/**\n * css input type.\n *\n * @internal\n */\nexport type ICssInput = string | ISerializableObject | IDictionary | null | undefined | boolean;\n\n/**\n * Concatination helper, which can merge class names together. Skips over falsey values.\n *\n * @public\n */\nexport function css(...args: ICssInput[]): string {\n let classes = [];\n\n for (let arg of args) {\n if (arg) {\n if (typeof arg === 'string') {\n classes.push(arg);\n } else if (arg.hasOwnProperty('toString') && typeof arg.toString === 'function') {\n classes.push(arg.toString());\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (let key in arg as any) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((arg as any)[key]) {\n classes.push(key);\n }\n }\n }\n }\n }\n\n return classes.join(' ');\n}\n","/**\n * Helper to find the index of an item within an array, using a callback to\n * determine the match.\n *\n * @public\n * @param array - Array to search.\n * @param cb - Callback which returns true on matches.\n * @param fromIndex - Optional index to start from (defaults to 0)\n */\nexport function findIndex<T>(array: T[], cb: (item: T, index: number) => boolean, fromIndex: number = 0): number {\n let index = -1;\n\n for (let i = fromIndex; array && i < array.length; i++) {\n if (cb(array[i], i)) {\n index = i;\n break;\n }\n }\n\n return index;\n}\n\n/**\n * Helper to find the first item within an array that satisfies the callback.\n * @param array - Array to search\n * @param cb - Callback which returns true on matches\n */\nexport function find<T>(array: T[], cb: (item: T, index: number) => boolean): T | undefined {\n let index = findIndex(array, cb);\n\n if (index < 0) {\n return undefined;\n }\n\n return array[index];\n}\n\n/**\n * Creates an array of a given size and helper method to populate.\n *\n * @public\n * @param size - Size of array.\n * @param getItem - Callback to populate given cell index.\n */\nexport function createArray<T>(size: number, getItem: (index: number) => T): T[] {\n let array: T[] = [];\n\n for (let i = 0; i < size; i++) {\n array.push(getItem(i));\n }\n\n return array;\n}\n\n/**\n * Convert the given array to a matrix with columnCount number\n * of columns.\n *\n * @public\n * @param items - The array to convert\n * @param columnCount - The number of columns for the resulting matrix\n * @returns A matrix of items\n */\nexport function toMatrix<T>(items: T[], columnCount: number): T[][] {\n return items.reduce((rows: T[][], currentValue: T, index: number) => {\n if (index % columnCount === 0) {\n rows.push([currentValue]);\n } else {\n rows[rows.length - 1].push(currentValue);\n }\n return rows;\n }, [] as T[][]);\n}\n\n/**\n * Given an array, it returns a new array that does not contain the item at the given index.\n * @param array - The array to operate on\n * @param index - The index of the element to remove\n */\nexport function removeIndex<T>(array: T[], index: number): T[] {\n return array.filter((_: T, i: number) => index !== i);\n}\n\n/**\n * Given an array, this function returns a new array where the element at a given index has been replaced.\n * @param array - The array to operate on\n * @param newElement - The element that will be placed in the new array\n * @param index - The index of the element that should be replaced\n */\nexport function replaceElement<T>(array: T[], newElement: T, index: number): T[] {\n const copy = array.slice();\n copy[index] = newElement;\n return copy;\n}\n\n/**\n * Given an array, this function returns a new array where an element has been inserted at the given index.\n * @param array - The array to operate on\n * @param index - The index where an element should be inserted\n * @param itemToAdd - The element to insert\n */\nexport function addElementAtIndex<T>(array: T[], index: number, itemToAdd: T): T[] {\n const copy = array.slice();\n copy.splice(index, 0, itemToAdd);\n return copy;\n}\n\n/**\n * Given an array where each element is of type T or T[], flatten it into an array of T\n * @param array - The array where each element can optionally also be an array\n */\nexport function flatten<T>(array: (T | T[])[]): T[] {\n let result: T[] = [];\n array.forEach((item: T | T[]): T[] => (result = result.concat(item)));\n return result;\n}\n\n/**\n * Returns a boolean indicating if the two given arrays are equal in length and values.\n *\n * @param array1 - First array to compare\n * @param array2 - Second array to compare\n * @returns True if the arrays are the same length and have the same values in the same positions, false otherwise.\n */\nexport function arraysEqual<T>(array1: T[], array2: T[]): boolean {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n","import * as React from 'react';\nimport { arraysEqual } from './array';\n\n/**\n * Internal state type for the ref.\n */\ntype LocalState<TType, TValue> = {\n refs: (React.Ref<TType | null | TValue> | undefined)[];\n resolver?: (newValue: TType | TValue | null) => void;\n};\n\n/**\n * Set up a ref resolver function given internal state managed for the ref.\n * @param local Set\n */\nconst createResolver = <TType, TValue>(local: LocalState<TType, TValue>) => (newValue: TType | TValue | null) => {\n for (const ref of local.refs) {\n if (typeof ref === 'function') {\n ref(newValue);\n } else if (ref) {\n // work around the immutability of the React.Ref type\n ((ref as unknown) as React.MutableRefObject<TType | TValue | null | undefined>).current = newValue;\n }\n }\n};\n\n/**\n * Helper to merge refs from within class components.\n */\nexport const createMergedRef = <TType, TValue = null>(value?: TValue) => {\n const local: LocalState<TType, TValue> = {\n refs: [] as LocalState<TType, TValue>['refs'],\n };\n\n return (\n ...newRefs: (React.Ref<TType | null | TValue> | undefined)[]\n ): ((newValue: TType | TValue | null) => void) => {\n if (!local.resolver || !arraysEqual(local.refs, newRefs)) {\n local.resolver = createResolver<TType, TValue>(local);\n }\n\n local.refs = newRefs;\n\n return local.resolver!;\n };\n};\n","import { getVirtualParent } from './getVirtualParent';\n/**\n * Gets the element which is the parent of a given element.\n * If `allowVirtuaParents` is `true`, this method prefers the virtual parent over\n * real DOM parent when present.\n *\n * @public\n */\nexport function getParent(child: HTMLElement, allowVirtualParents: boolean = true): HTMLElement | null {\n return (\n child &&\n ((allowVirtualParents && getVirtualParent(child)) || (child.parentNode && (child.parentNode as HTMLElement)))\n );\n}\n","import { isVirtualElement } from './isVirtualElement';\n/**\n * Gets the virtual parent given the child element, if it exists.\n *\n * @public\n */\nexport function getVirtualParent(child: HTMLElement): HTMLElement | undefined {\n let parent: HTMLElement | undefined;\n if (child && isVirtualElement(child)) {\n parent = child._virtual.parent;\n }\n return parent;\n}\n","import { IVirtualElement } from './IVirtualElement';\n/**\n * Determines whether or not an element has the virtual hierarchy extension.\n *\n * @public\n */\nexport function isVirtualElement(element: HTMLElement | IVirtualElement): element is IVirtualElement {\n return element && !!(<IVirtualElement>element)._virtual;\n}\n","import { getParent } from './getParent';\n/**\n * Finds the first parent element where the matchFunction returns true\n * @param element - element to start searching at\n * @param matchFunction - the function that determines if the element is a match\n * @returns the matched element or null no match was found\n */\nexport function findElementRecursive(\n element: HTMLElement | null,\n matchFunction: (element: HTMLElement) => boolean,\n): HTMLElement | null {\n if (!element || element === document.body) {\n return null;\n }\n return matchFunction(element) ? element : findElementRecursive(getParent(element), matchFunction);\n}\n","import { findElementRecursive } from './findElementRecursive';\nimport { DATA_PORTAL_ATTRIBUTE } from './setPortalAttribute';\n\n/**\n * Determine whether a target is within a portal from perspective of root or optional parent.\n * This function only works against portal components that use the setPortalAttribute function.\n * If both parent and child are within the same portal this function will return false.\n * @param target - Element to query portal containment status of.\n * @param parent - Optional parent perspective. Search for containing portal stops at parent\n * (or root if parent is undefined or invalid.)\n */\nexport function portalContainsElement(target: HTMLElement, parent?: HTMLElement): boolean {\n const elementMatch = findElementRecursive(\n target,\n (testElement: HTMLElement) => parent === testElement || testElement.hasAttribute(DATA_PORTAL_ATTRIBUTE),\n );\n return elementMatch !== null && elementMatch.hasAttribute(DATA_PORTAL_ATTRIBUTE);\n}\n","export const DATA_PORTAL_ATTRIBUTE = 'data-portal-element';\n\n/**\n * Identify element as a portal by setting an attribute.\n * @param element - Element to mark as a portal.\n */\nexport function setPortalAttribute(element: HTMLElement): void {\n element.setAttribute(DATA_PORTAL_ATTRIBUTE, 'true');\n}\n","import { getWindow } from './dom/getWindow';\n\ndeclare function setTimeout(cb: Function, delay: number): number;\ndeclare function setInterval(cb: Function, delay: number): number;\n\n/**\n * Bugs often appear in async code when stuff gets disposed, but async operations don't get canceled.\n * This Async helper class solves these issues by tying async code to the lifetime of a disposable object.\n *\n * Usage: Anything class extending from BaseModel can access this helper via this.async. Otherwise create a\n * new instance of the class and remember to call dispose() during your code's dispose handler.\n *\n * @public\n */\nexport class Async {\n private _timeoutIds: { [id: number]: boolean } | null = null;\n private _immediateIds: { [id: number]: boolean } | null = null;\n private _intervalIds: { [id: number]: boolean } | null = null;\n private _animationFrameIds: { [id: number]: boolean } | null = null;\n private _isDisposed: boolean;\n private _parent: object | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _onErrorHandler: ((e: any) => void) | undefined;\n private _noop: () => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(parent?: object, onError?: (e: any) => void) {\n this._isDisposed = false;\n this._parent = parent || null;\n this._onErrorHandler = onError;\n this._noop = () => {\n /* do nothing */\n };\n }\n\n /**\n * Dispose function, clears all async operations.\n */\n public dispose(): void {\n let id;\n\n this._isDisposed = true;\n this._parent = null;\n\n // Clear timeouts.\n if (this._timeoutIds) {\n for (id in this._timeoutIds) {\n if (this._timeoutIds.hasOwnProperty(id)) {\n this.clearTimeout(parseInt(id, 10));\n }\n }\n\n this._timeoutIds = null;\n }\n\n // Clear immediates.\n if (this._immediateIds) {\n for (id in this._immediateIds) {\n if (this._immediateIds.hasOwnProperty(id)) {\n this.clearImmediate(parseInt(id, 10));\n }\n }\n\n this._immediateIds = null;\n }\n\n // Clear intervals.\n if (this._intervalIds) {\n for (id in this._intervalIds) {\n if (this._intervalIds.hasOwnProperty(id)) {\n this.clearInterval(parseInt(id, 10));\n }\n }\n this._intervalIds = null;\n }\n\n // Clear animation frames.\n if (this._animationFrameIds) {\n for (id in this._animationFrameIds) {\n if (this._animationFrameIds.hasOwnProperty(id)) {\n this.cancelAnimationFrame(parseInt(id, 10));\n }\n }\n\n this._animationFrameIds = null;\n }\n }\n\n /**\n * SetTimeout override, which will auto cancel the timeout during dispose.\n * @param callback - Callback to execute.\n * @param duration - Duration in milliseconds.\n * @returns The setTimeout id.\n */\n public setTimeout(callback: () => void, duration: number): number {\n let timeoutId = 0;\n\n if (!this._isDisposed) {\n if (!this._timeoutIds) {\n this._timeoutIds = {};\n }\n\n timeoutId = setTimeout(() => {\n // Time to execute the timeout, enqueue it as a foreground task to be executed.\n\n try {\n // Now delete the record and call the callback.\n if (this._timeoutIds) {\n delete this._timeoutIds[timeoutId];\n }\n callback.apply(this._parent);\n } catch (e) {\n if (this._onErrorHandler) {\n this._onErrorHandler(e);\n }\n }\n }, duration);\n\n this._timeoutIds[timeoutId] = true;\n }\n\n return timeoutId;\n }\n\n /**\n * Clears the timeout.\n * @param id - Id to cancel.\n */\n public clearTimeout(id: number): void {\n if (this._timeoutIds && this._timeoutIds[id]) {\n clearTimeout(id);\n delete this._timeoutIds[id];\n }\n }\n\n /**\n * SetImmediate override, which will auto cancel the immediate during dispose.\n * @param callback - Callback to execute.\n * @param targetElement - Optional target element to use for identifying the correct window.\n * @returns The setTimeout id.\n */\n public setImmediate(callback: () => void, targetElement?: Element | null): number {\n let immediateId = 0;\n const win = getWindow(targetElement)!;\n\n if (!this._isDisposed) {\n if (!this._immediateIds) {\n this._immediateIds = {};\n }\n\n let setImmediateCallback = () => {\n // Time to execute the timeout, enqueue it as a foreground task to be executed.\n\n try {\n // Now delete the record and call the callback.\n if (this._immediateIds) {\n delete this._immediateIds[immediateId];\n }\n callback.apply(this._parent);\n } catch (e) {\n this._logError(e);\n }\n };\n\n immediateId = win.setTimeout(setImmediateCallback, 0);\n\n this._immediateIds[immediateId] = true;\n }\n\n return immediateId;\n }\n\n /**\n * Clears the immediate.\n * @param id - Id to cancel.\n * @param targetElement - Optional target element to use for identifying the correct window.\n */\n public clearImmediate(id: number, targetElement?: Element | null): void {\n const win = getWindow(targetElement)!;\n\n if (this._immediateIds && this._immediateIds[id]) {\n win.clearTimeout(id);\n delete this._immediateIds[id];\n }\n }\n\n /**\n * SetInterval override, which will auto cancel the timeout during dispose.\n * @param callback - Callback to execute.\n * @param duration - Duration in milliseconds.\n * @returns The setTimeout id.\n */\n public setInterval(callback: () => void, duration: number): number {\n let intervalId = 0;\n\n if (!this._isDisposed) {\n if (!this._intervalIds) {\n this._intervalIds = {};\n }\n\n intervalId = setInterval(() => {\n // Time to execute the interval callback, enqueue it as a foreground task to be executed.\n try {\n callback.apply(this._parent);\n } catch (e) {\n this._logError(e);\n }\n }, duration);\n\n this._intervalIds[intervalId] = true;\n }\n\n return intervalId;\n }\n\n /**\n * Clears the interval.\n * @param id - Id to cancel.\n */\n public clearInterval(id: number): void {\n if (this._intervalIds && this._intervalIds[id]) {\n clearInterval(id);\n delete this._intervalIds[id];\n }\n }\n\n /**\n * Creates a function that, when executed, will only call the func function at most once per\n * every wait milliseconds. Provide an options object to indicate that func should be invoked\n * on the leading and/or trailing edge of the wait timeout. Subsequent calls to the throttled\n * function will return the result of the last func call.\n *\n * Note: If leading and trailing options are true func will be called on the trailing edge of\n * the timeout only if the throttled function is invoked more than once during the wait timeout.\n *\n * @param func - The function to throttle.\n * @param wait - The number of milliseconds to throttle executions to. Defaults to 0.\n * @param options - The options object.\n * @returns The new throttled function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public throttle<T extends (...args: any[]) => any>(\n func: T,\n wait?: number,\n options?: {\n leading?: boolean;\n trailing?: boolean;\n },\n ): T {\n if (this._isDisposed) {\n return this._noop as T;\n }\n\n let waitMS = wait || 0;\n let leading = true;\n let trailing = true;\n let lastExecuteTime = 0;\n let lastResult: T;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let lastArgs: any[];\n let timeoutId: number | null = null;\n\n if (options && typeof options.leading === 'boolean') {\n leading = options.leading;\n }\n\n if (options && typeof options.trailing === 'boolean') {\n trailing = options.trailing;\n }\n\n let callback = (userCall?: boolean) => {\n let now = Date.now();\n let delta = now - lastExecuteTime;\n let waitLength = leading ? waitMS - delta : waitMS;\n if (delta >= waitMS && (!userCall || leading)) {\n lastExecuteTime = now;\n if (timeoutId) {\n this.clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastResult = func.apply(this._parent, lastArgs);\n } else if (timeoutId === null && trailing) {\n timeoutId = this.setTimeout(callback, waitLength);\n }\n\n return lastResult;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let resultFunction = ((...args: any[]): any => {\n lastArgs = args;\n return callback(true);\n }) as T;\n\n return resultFunction;\n }\n\n /**\n * Creates a function that will delay the execution of func until after wait milliseconds have\n * elapsed since the last time it was invoked. Provide an options object to indicate that func\n * should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls\n * to the debounced function will return the result of the last func call.\n *\n * Note: If leading and trailing options are true func will be called on the trailing edge of\n * the timeout only if the debounced function is invoked more than once during the wait\n * timeout.\n *\n * @param func - The function to debounce.\n * @param wait - The number of milliseconds to delay.\n * @param options - The options object.\n * @returns The new debounced function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public debounce<T extends (...args: any[]) => any>(\n func: T,\n wait?: number,\n options?: {\n leading?: boolean;\n maxWait?: number;\n trailing?: boolean;\n },\n ): ICancelable<T> & T {\n if (this._isDisposed) {\n let noOpFunction = (() => {\n /** Do nothing */\n }) as ICancelable<T> & T;\n\n noOpFunction.cancel = () => {\n return;\n };\n noOpFunction.flush = ((() => null) as unknown) as () => ReturnType<T>;\n noOpFunction.pending = () => false;\n\n return noOpFunction;\n }\n\n let waitMS = wait || 0;\n let leading = false;\n let trailing = true;\n let maxWait: number | null = null;\n let lastCallTime = 0;\n let lastExecuteTime = Date.now();\n let lastResult: ReturnType<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let lastArgs: any[];\n let timeoutId: number | null = null;\n\n if (options && typeof options.leading === 'boolean') {\n leading = options.leading;\n }\n\n if (options && typeof options.trailing === 'boolean') {\n trailing = options.trailing;\n }\n\n if (options && typeof options.maxWait === 'number' && !isNaN(options.maxWait)) {\n maxWait = options.maxWait;\n }\n\n let markExecuted = (time: number) => {\n if (timeoutId) {\n this.clearTimeout(timeoutId);\n timeoutId = null;\n }\n lastExecuteTime = time;\n };\n\n let invokeFunction = (time: number) => {\n markExecuted(time);\n lastResult = func.apply(this._parent, lastArgs);\n };\n\n let callback = (userCall?: boolean) => {\n let now = Date.now();\n let executeImmediately = false;\n if (userCall) {\n if (leading && now - lastCallTime >= waitMS) {\n executeImmediately = true;\n }\n lastCallTime = now;\n }\n let delta = now - lastCallTime;\n let waitLength = waitMS - delta;\n let maxWaitDelta = now - lastExecuteTime;\n let maxWaitExpired = false;\n\n if (maxWait !== null) {\n // maxWait only matters when there is a pending callback\n if (maxWaitDelta >= maxWait && timeoutId) {\n maxWaitExpired = true;\n } else {\n waitLength = Math.min(waitLength, maxWait - maxWaitDelta);\n }\n }\n\n if (delta >= waitMS || maxWaitExpired || executeImmediately) {\n invokeFunction(now);\n } else if ((timeoutId === null || !userCall) && trailing) {\n timeoutId = this.setTimeout(callback, waitLength);\n }\n\n return lastResult;\n };\n\n let pending = (): boolean => {\n return !!timeoutId;\n };\n\n let cancel = (): void => {\n if (pending()) {\n // Mark the debounced function as having executed\n markExecuted(Date.now());\n }\n };\n\n let flush = () => {\n if (pending()) {\n invokeFunction(Date.now());\n }\n\n return lastResult;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let resultFunction = ((...args: any[]) => {\n lastArgs = args;\n return callback(true);\n }) as ICancelable<T> & T;\n\n resultFunction.cancel = cancel;\n resultFunction.flush = flush;\n resultFunction.pending = pending;\n\n return resultFunction;\n }\n\n public requestAnimationFrame(callback: () => void, targetElement?: Element | null): number {\n let animationFrameId = 0;\n const win = getWindow(targetElement)!;\n\n if (!this._isDisposed) {\n if (!this._animationFrameIds) {\n this._animationFrameIds = {};\n }\n\n let animationFrameCallback = () => {\n try {\n // Now delete the record and call the callback.\n if (this._animationFrameIds) {\n delete this._animationFrameIds[animationFrameId];\n }\n\n callback.apply(this._parent);\n } catch (e) {\n this._logError(e);\n }\n };\n\n animationFrameId = win.requestAnimationFrame\n ? win.requestAnimationFrame(animationFrameCallback)\n : win.setTimeout(animationFrameCallback, 0);\n\n this._animationFrameIds[animationFrameId] = true;\n }\n\n return animationFrameId;\n }\n\n public cancelAnimationFrame(id: number, targetElement?: Element | null): void {\n const win = getWindow(targetElement)!;\n\n if (this._animationFrameIds && this._animationFrameIds[id]) {\n win.cancelAnimationFrame ? win.cancelAnimationFrame(id) : win.clearTimeout(id);\n delete this._animationFrameIds[id];\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected _logError(e: any): void {\n if (this._onErrorHandler) {\n this._onErrorHandler(e);\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ICancelable<T extends (...args: any[]) => any> = {\n flush: () => ReturnType<T>;\n cancel: () => void;\n pending: () => boolean;\n};\n","/**\n * Compares a to b and b to a.\n *\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function shallowCompare<TA extends any, TB extends any>(a: TA, b: TB): boolean {\n for (let propName in a) {\n if (a.hasOwnProperty(propName)) {\n if (!b.hasOwnProperty(propName) || b[propName] !== a[propName]) {\n return false;\n }\n }\n }\n for (let propName in b) {\n if (b.hasOwnProperty(propName)) {\n if (!a.hasOwnProperty(propName)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Makes a resulting merge of a bunch of objects. Pass in the target object followed by 1 or more\n * objects as arguments and they will be merged sequentially into the target. Note that this will\n * shallow merge; it will not create new cloned values for target members.\n *\n * @public\n * @param target - Target object to merge following object arguments into.\n * @param args - One or more objects that will be mixed into the target in the order they are provided.\n * @returns Resulting merged target.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function assign(target: any, ...args: any[]): any {\n return filteredAssign.apply(this, [null, target].concat(args));\n}\n\n/**\n * Makes a resulting merge of a bunch of objects, but allows a filter function to be passed in to filter\n * the resulting merges. This allows for scenarios where you want to merge \"everything except that one thing\"\n * or \"properties that start with data-\". Note that this will shallow merge; it will not create new cloned\n * values for target members.\n *\n * @public\n * @param isAllowed - Callback to determine if the given propName is allowed in the result.\n * @param target - Target object to merge following object arguments into.\n * @param args - One or more objects that will be mixed into the target in the order they are provided.\n * @returns Resulting merged target.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function filteredAssign(isAllowed: (propName: string) => boolean, target: any, ...args: any[]): any {\n target = target || {};\n\n for (let sourceObject of args) {\n if (sourceObject) {\n for (let propName in sourceObject) {\n if (sourceObject.hasOwnProperty(propName) && (!isAllowed || isAllowed(propName))) {\n target[propName] = sourceObject[propName];\n }\n }\n }\n }\n\n return target;\n}\n\n/**\n * Takes an enum and iterates over each value of the enum (as a string), running the callback on each,\n * returning a mapped array.\n * @param theEnum - Enum to iterate over\n * @param callback - The first parameter the name of the entry, and the second parameter is the value\n * of that entry, which is the value you'd normally use when using the enum (usually a number).\n */\nexport function mapEnumByName<T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n theEnum: any,\n callback: (name?: string, value?: string | number) => T | undefined,\n): (T | undefined)[] | undefined {\n // map<any> to satisfy compiler since it doesn't realize we strip out undefineds in the .filter() call\n return Object.keys(theEnum)\n .map<T | undefined>((p: string | number) => {\n // map on each property name as a string\n if (String(Number(p)) !== p) {\n // if the property is not just a number (because enums in TypeScript will map both ways)\n return callback(p as string, theEnum[p]);\n }\n return undefined;\n })\n .filter((v: T | undefined) => !!v); // only return elements with values\n}\n\n/**\n * Get all values in an object dictionary\n *\n * @param obj - The dictionary to get values for\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function values<T>(obj: any): T[] {\n return Object.keys(obj).reduce((arr: T[], key: string): T[] => {\n arr.push(obj[key]);\n return arr;\n }, []);\n}\n\n/**\n * Tiny helper to do the minimal amount of work in duplicating an object but omitting some\n * props. This ends up faster than using object ...rest or reduce to filter.\n *\n * This behaves very much like filteredAssign, but does not merge many objects together,\n * uses an exclusion object map, and avoids spreads all for optimal performance.\n *\n * See perf test for background:\n * https://jsperf.com/omit-vs-rest-vs-reduce/1\n *\n * @param obj - The object to clone\n * @param exclusions - The array of keys to exclude\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function omit<TObj extends Record<string, any>>(obj: TObj, exclusions: (keyof TObj)[]): TObj {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n\n for (const key in obj) {\n if (exclusions.indexOf(key) === -1 && obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n\n return result as TObj;\n}\n","import { assign } from './object';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * @internal\n */\nexport interface IEventRecord {\n target: any;\n eventName: string;\n parent: any;\n callback: (args?: any) => void;\n elementCallback?: (...args: any[]) => void;\n objectCallback?: (args?: any) => void;\n options?: boolean | AddEventListenerOptions;\n}\n\n/**\n * @internal\n */\nexport interface IEventRecordsByName {\n [eventName: string]: IEventRecordList;\n}\n\n/**\n * @internal\n */\nexport interface IEventRecordList {\n [id: string]: IEventRecord[] | number;\n count: number;\n}\n\n/**\n * @internal\n */\nexport interface IDeclaredEventsByName {\n [eventName: string]: boolean;\n}\n\n/** An instance of EventGroup allows anything with a handle to it to trigger events on it.\n * If the target is an HTMLElement, the event will be attached to the element and can be\n * triggered as usual (like clicking for onClick).\n * The event can be triggered by calling EventGroup.raise() here. If the target is an\n * HTMLElement, the event gets raised and is handled by the browser. Otherwise, it gets\n * handled here in EventGroup, and the handler is called in the context of the parent\n * (which is passed in in the constructor).\n *\n * @public\n * {@docCategory EventGroup}\n */\nexport class EventGroup {\n private static _uniqueId: number = 0;\n private _parent: any;\n private _eventRecords: IEventRecord[];\n private _id: number = EventGroup._uniqueId++;\n private _isDisposed: boolean;\n\n /** For IE8, bubbleEvent is ignored here and must be dealt with by the handler.\n * Events raised here by default have bubbling set to false and cancelable set to true.\n * This applies also to built-in events being raised manually here on HTMLElements,\n * which may lead to unexpected behavior if it differs from the defaults.\n *\n */\n public static raise(target: any, eventName: string, eventArgs?: any, bubbleEvent?: boolean): boolean | undefined {\n let retVal;\n\n if (EventGroup._isElement(target)) {\n if (typeof document !== 'undefined' && document.createEvent) {\n let ev = document.createEvent('HTMLEvents');\n\n ev.initEvent(eventName, bubbleEvent || false, true);\n\n assign(ev, eventArgs);\n\n retVal = target.dispatchEvent(ev);\n } else if (typeof document !== 'undefined' && (document as any).createEventObject) {\n // IE8\n let evObj = (document as any).createEventObject(eventArgs);\n // cannot set cancelBubble on evObj, fireEvent will overwrite it\n target.fireEvent('on' + eventName, evObj);\n }\n } else {\n while (target && retVal !== false) {\n let events = <IEventRecordsByName>target.__events__;\n let eventRecords = events ? events[eventName] : null;\n\n if (eventRecords) {\n for (let id in eventRecords) {\n if (eventRecords.hasOwnProperty(id)) {\n let eventRecordList = <IEventRecord[]>eventRecords[id];\n\n for (let listIndex = 0; retVal !== false && listIndex < eventRecordList.length; listIndex++) {\n let record = eventRecordList[listIndex];\n\n if (record.objectCallback) {\n retVal = record.objectCallback.call(record.parent, eventArgs);\n }\n }\n }\n }\n }\n\n // If the target has a parent, bubble the event up.\n target = bubbleEvent ? target.parent : null;\n }\n }\n\n return retVal;\n }\n\n public static isObserved(target: any, eventName: string): boolean {\n let events = target && <IEventRecordsByName>target.__events__;\n\n return !!events && !!events[eventName];\n }\n\n /** Check to see if the target has declared support of the given event. */\n public static isDeclared(target: any, eventName: string): boolean {\n let declaredEvents = target && <IDeclaredEventsByName>target.__declaredEvents;\n\n return !!declaredEvents && !!declaredEvents[eventName];\n }\n\n public static stopPropagation(event: any): void {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n // IE8\n event.cancelBubble = true;\n }\n }\n\n private static _isElement(target: HTMLElement): boolean {\n return (\n !!target && (!!target.addEventListener || (typeof HTMLElement !== 'undefined' && target instanceof HTMLElement))\n );\n }\n\n /** parent: the context in which events attached to non-HTMLElements are called */\n public constructor(parent: any) {\n this._parent = parent;\n this._eventRecords = [];\n }\n\n public dispose(): void {\n if (!this._isDisposed) {\n this._isDisposed = true;\n\n this.off();\n this._parent = null;\n }\n }\n\n /** On the target, attach a set of events, where the events object is a name to function mapping. */\n public onAll(target: any, events: { [key: string]: (args?: any) => void }, useCapture?: boolean): void {\n for (let eventName in events) {\n if (events.hasOwnProperty(eventName)) {\n this.on(target, eventName, events[eventName], useCapture);\n }\n }\n }\n\n /**\n * On the target, attach an event whose handler will be called in the context of the parent\n * of this instance of EventGroup.\n */\n public on(\n target: any,\n eventName: string,\n callback: (args?: any) => void,\n options?: boolean | AddEventListenerOptions,\n ): void {\n if (eventName.indexOf(',') > -1) {\n let events = eventName.split(/[ ,]+/);\n\n for (let i = 0; i < events.length; i++) {\n this.on(target, events[i], callback, options);\n }\n } else {\n let parent = this._parent;\n let eventRecord: IEventRecord = {\n target: target,\n eventName: eventName,\n parent: parent,\n callback: callback,\n options,\n };\n\n // Initialize and wire up the record on the target, so that it can call the callback if the event fires.\n let events = <IEventRecordsByName>(target.__events__ = target.__events__ || {});\n events[eventName] =\n events[eventName] ||\n <IEventRecordList>{\n count: 0,\n };\n events[eventName][this._id] = events[eventName][this._id] || [];\n (<IEventRecord[]>events[eventName][this._id]).push(eventRecord);\n events[eventName].count++;\n\n if (EventGroup._isElement(target)) {\n let processElementEvent = (...args: any[]) => {\n if (this._isDisposed) {\n return;\n }\n\n let result;\n try {\n result = callback.apply(parent, args);\n if (result === false && args[0]) {\n let e = args[0];\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n\n e.cancelBubble = true;\n }\n } catch (e) {\n // ignore\n }\n\n return result;\n };\n\n eventRecord.elementCallback = processElementEvent;\n\n if (target.addEventListener) {\n (<EventTarget>target).addEventListener(eventName, processElementEvent, options);\n } else if (target.attachEvent) {\n // IE8\n target.attachEvent('on' + eventName, processElementEvent);\n }\n } else {\n let processObjectEvent = (...args: any[]) => {\n if (this._isDisposed) {\n return;\n }\n\n return callback.apply(parent, args);\n };\n\n eventRecord.objectCallback = processObjectEvent;\n }\n\n // Remember the record locally, so that it can be removed.\n this._eventRecords.push(eventRecord);\n }\n }\n\n public off(\n target?: any,\n eventName?: string,\n callback?: (args?: any) => void,\n options?: boolean | AddEventListenerOptions,\n ): void {\n for (let i = 0; i < this._eventRecords.length; i++) {\n let eventRecord = this._eventRecords[i];\n if (\n (!target || target === eventRecord.target) &&\n (!eventName || eventName === eventRecord.eventName) &&\n (!callback || callback === eventRecord.callback) &&\n (typeof options !== 'boolean' || options === eventRecord.options)\n ) {\n let events = <IEventRecordsByName>eventRecord.target.__events__;\n let targetArrayLookup = events[eventRecord.eventName];\n let targetArray = targetArrayLookup ? <IEventRecord[]>targetArrayLookup[this._id] : null;\n\n // We may have already target's entries, so check for null.\n if (targetArray) {\n if (targetArray.length === 1 || !callback) {\n targetArrayLookup.count -= targetArray.length;\n delete events[eventRecord.eventName][this._id];\n } else {\n targetArrayLookup.count--;\n targetArray.splice(targetArray.indexOf(eventRecord), 1);\n }\n\n if (!targetArrayLookup.count) {\n delete events[eventRecord.eventName];\n }\n }\n\n if (eventRecord.elementCallback) {\n if (eventRecord.target.removeEventListener) {\n eventRecord.target.removeEventListener(\n eventRecord.eventName,\n eventRecord.elementCallback,\n eventRecord.options,\n );\n } else if (eventRecord.target.detachEvent) {\n // IE8\n eventRecord.target.detachEvent('on' + eventRecord.eventName, eventRecord.elementCallback);\n }\n }\n\n this._eventRecords.splice(i--, 1);\n }\n }\n }\n\n /** Trigger the given event in the context of this instance of EventGroup. */\n public raise(eventName: string, eventArgs?: any, bubbleEvent?: boolean): boolean | undefined {\n return EventGroup.raise(this._parent, eventName, eventArgs, bubbleEvent);\n }\n\n /** Declare an event as being supported by this instance of EventGroup. */\n public declare(event: string | string[]): void {\n let declaredEvents = (this._parent.__declaredEvents = this._parent.__declaredEvents || {});\n\n if (typeof event === 'string') {\n declaredEvents[event] = true;\n } else {\n for (let i = 0; i < event.length; i++) {\n declaredEvents[event[i]] = true;\n }\n }\n }\n}\n","import * as React from 'react';\nimport { Async } from './Async';\nimport { EventGroup } from './EventGroup';\nimport { IDisposable } from './IDisposable';\nimport { ISettingsMap } from './warn/warn';\nimport { warnConditionallyRequiredProps } from './warn/warnConditionallyRequiredProps';\nimport { warnMutuallyExclusive } from './warn/warnMutuallyExclusive';\nimport { warnDeprecations } from './warn/warnDeprecations';\nimport { IRefObject } from './createRef';\nimport { IBaseProps } from './BaseComponent.types';\n\n/**\n * BaseComponent class, which provides basic helpers for all components.\n *\n * @public\n * {@docCategory BaseComponent}\n *\n * @deprecated Do not use. We are moving away from class component.\n */\nexport class BaseComponent<TProps extends IBaseProps = {}, TState = {}> extends React.Component<TProps, TState> {\n /**\n * @deprecated Use React's error boundaries instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static onError: (errorMessage?: string, ex?: any) => void;\n\n /**\n * Controls whether the componentRef prop will be resolved by this component instance. If you are\n * implementing a passthrough (higher-order component), you would set this to false and pass through\n * the props to the inner component, allowing it to resolve the componentRef.\n */\n protected _skipComponentRefResolution: boolean;\n\n private __async: Async;\n private __events: EventGroup;\n private __disposables: IDisposable[] | null;\n private __resolves: { [name: string]: (ref: React.ReactNode) => React.ReactNode };\n private __className: string;\n\n /**\n * BaseComponent constructor\n * @param props - The props for the component.\n * @param context - The context for the component.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(props: TProps, context?: any) {\n super(props, context);\n\n // eslint-disable-next-line deprecation/deprecation\n _makeAllSafe(this, BaseComponent.prototype, [\n 'componentDidMount',\n 'shouldComponentUpdate',\n 'getSnapshotBeforeUpdate',\n 'render',\n 'componentDidUpdate',\n 'componentWillUnmount',\n ]);\n }\n\n /**\n * When the component receives props, make sure the componentRef is updated.\n */\n public componentDidUpdate(prevProps: TProps, prevState: TState): void {\n this._updateComponentRef(prevProps, this.props);\n }\n\n /**\n * When the component has mounted, update the componentRef.\n */\n public componentDidMount(): void {\n this._setComponentRef(this.props.componentRef, this);\n }\n\n /**\n * If we have disposables, dispose them automatically on unmount.\n */\n public componentWillUnmount(): void {\n this._setComponentRef(this.props.componentRef, null);\n\n if (this.__disposables) {\n for (let i = 0, len = this._disposables.length; i < len; i++) {\n let disposable = this.__disposables[i];\n\n if (disposable.dispose) {\n disposable.dispose();\n }\n }\n this.__disposables = null;\n }\n }\n\n /**\n * Gets the object's class name.\n */\n public get className(): string {\n if (!this.__className) {\n let funcNameRegex = /function (.{1,})\\(/;\n let results = funcNameRegex.exec(this.constructor.toString());\n\n this.__className = results && results.length > 1 ? results[1] : '';\n }\n\n return this.__className;\n }\n\n /**\n * Allows subclasses to push things to this._disposables to be auto disposed.\n */\n protected get _disposables(): IDisposable[] {\n if (!this.__disposables) {\n this.__disposables = [];\n }\n return this.__disposables;\n }\n\n /**\n * Gets the async instance associated with the component, created on demand. The async instance gives\n * subclasses a way to execute setTimeout/setInterval async calls safely, where the callbacks\n * will be cleared/ignored automatically after unmounting. The helpers within the async object also\n * preserve the this pointer so that you don't need to \"bind\" the callbacks.\n */\n protected get _async(): Async {\n if (!this.__async) {\n this.__async = new Async(this);\n this._disposables.push(this.__async);\n }\n\n return this.__async;\n }\n\n /**\n * Gets the event group instance assocaited with the component, created on demand. The event instance\n * provides on/off methods for listening to DOM (or regular javascript object) events. The event callbacks\n * will be automatically disconnected after unmounting. The helpers within the events object also\n * preserve the this reference so that you don't need to \"bind\" the callbacks.\n */\n protected get _events(): EventGroup {\n if (!this.__events) {\n this.__events = new EventGroup(this);\n this._disposables.push(this.__events);\n }\n\n return this.__events;\n }\n\n /**\n * Helper to return a memoized ref resolver function.\n * @param refName - Name of the member to assign the ref to.\n * @returns A function instance keyed from the given refname.\n * @deprecated Use `createRef` from React.createRef.\n */\n protected _resolveRef(refName: string): (ref: React.ReactNode) => React.ReactNode {\n if (!this.__resolves) {\n this.__resolves = {};\n }\n\n if (!this.__resolves[refName]) {\n this.__resolves[refName] = (ref: React.ReactNode) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return ((this as any)[refName] = ref);\n };\n }\n\n return this.__resolves[refName];\n }\n\n /**\n * Updates the componentRef (by calling it with \"this\" when necessary.)\n */\n protected _updateComponentRef(currentProps: IBaseProps, newProps: IBaseProps = {}): void {\n // currentProps *should* always be defined, but verify that just in case a subclass is manually\n // calling a lifecycle method with no parameters (which has happened) or other odd usage.\n if (currentProps && newProps && currentProps.componentRef !== newProps.componentRef) {\n this._setComponentRef(currentProps.componentRef, null);\n this._setComponentRef(newProps.componentRef, this);\n }\n }\n\n /**\n * Warns when a deprecated props are being used.\n *\n * @param deprecationMap - The map of deprecations, where key is the prop name and the value is\n * either null or a replacement prop name.\n */\n protected _warnDeprecations(deprecationMap: ISettingsMap<TProps>): void {\n warnDeprecations(this.className, this.props, deprecationMap);\n }\n\n /**\n * Warns when props which are mutually exclusive with each other are both used.\n *\n * @param mutuallyExclusiveMap - The map of mutually exclusive props.\n */\n protected _warnMutuallyExclusive(mutuallyExclusiveMap: ISettingsMap<TProps>): void {\n warnMutuallyExclusive(this.className, this.props, mutuallyExclusiveMap);\n }\n\n /**\n * Warns when props are required if a condition is met.\n *\n * @param requiredProps - The name of the props that are required when the condition is met.\n * @param conditionalPropName - The name of the prop that the condition is based on.\n * @param condition - Whether the condition is met.\n */\n protected _warnConditionallyRequiredProps(\n requiredProps: string[],\n conditionalPropName: string,\n condition: boolean,\n ): void {\n warnConditionallyRequiredProps(this.className, this.props, requiredProps, conditionalPropName, condition);\n }\n\n private _setComponentRef<TRefInterface>(\n ref: IRefObject<TRefInterface> | undefined,\n value: TRefInterface | null,\n ): void {\n if (!this._skipComponentRefResolution && ref) {\n if (typeof ref === 'function') {\n ref(value);\n }\n\n if (typeof ref === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ref as any).current = value;\n }\n }\n }\n}\n\n/**\n * Helper to override a given method with a wrapper method that can try/catch the original, but also\n * ensures that the BaseComponent's methods are called before the subclass's. This ensures that\n * componentWillUnmount in the base is called and that things in the _disposables array are disposed.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction _makeAllSafe(obj: BaseComponent<{}, {}>, prototype: Object, methodNames: string[]): void {\n for (let i = 0, len = methodNames.length; i < len; i++) {\n _makeSafe(obj, prototype, methodNames[i]);\n }\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction _makeSafe(obj: BaseComponent<{}, {}>, prototype: Object, methodName: string): void {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n let classMethod = (obj as any)[methodName];\n let prototypeMethod = (prototype as any)[methodName];\n\n if (classMethod || prototypeMethod) {\n (obj as any)[methodName] = function(...args: any[]): any {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n let retVal;\n\n if (prototypeMethod) {\n retVal = prototypeMethod.apply(this, args);\n }\n if (classMethod !== prototypeMethod) {\n retVal = classMethod.apply(this, args);\n }\n\n return retVal;\n };\n }\n}\n\n/**\n * Simple constant function for returning null, used to render empty templates in JSX.\n *\n * @public\n */\nexport function nullRender(): JSX.Element | null {\n return null;\n}\n","import { KeyCodes } from './KeyCodes';\n\nconst DirectionalKeyCodes: { [key: number]: number } = {\n [KeyCodes.up]: 1,\n [KeyCodes.down]: 1,\n [KeyCodes.left]: 1,\n [KeyCodes.right]: 1,\n [KeyCodes.home]: 1,\n [KeyCodes.end]: 1,\n [KeyCodes.tab]: 1,\n [KeyCodes.pageUp]: 1,\n [KeyCodes.pageDown]: 1,\n};\n\n/**\n * Returns true if the keycode is a directional keyboard key.\n */\nexport function isDirectionalKeyCode(which: number): boolean {\n return !!DirectionalKeyCodes[which];\n}\n\n/**\n * Adds a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible.\n * This can be used to add global shortcut keys that directionally move from section to section within\n * an app or between focus trap zones.\n */\nexport function addDirectionalKeyCode(which: number): void {\n DirectionalKeyCodes[which] = 1;\n}\n","import * as React from 'react';\nimport { getWindow } from './dom/getWindow';\nimport { isDirectionalKeyCode } from './keyboard';\nimport { setFocusVisibility } from './setFocusVisibility';\n\n/**\n * Counter for mounted component that uses focus rectangle.\n * We want to cleanup the listners before last component that uses focus rectangle unmounts.\n */\nlet mountCounters = new WeakMap<Window, number>();\n\nfunction setMountCounters(key: Window, delta: number): number {\n let newValue;\n const currValue = mountCounters.get(key);\n if (currValue) {\n newValue = currValue + delta;\n } else {\n newValue = 1;\n }\n\n mountCounters.set(key, newValue);\n return newValue;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { disableFocusRects?: boolean } }) | undefined;\n\n/**\n * Initializes the logic which:\n *\n * 1. Subscribes keydown and mousedown events. (It will only do it once per window,\n * so it's safe to call this method multiple times.)\n * 2. When the user presses directional keyboard keys, adds the 'ms-Fabric--isFocusVisible' classname\n * to the document body, removes the 'ms-Fabric-isFocusHidden' classname.\n * 3. When the user clicks a mouse button, adds the 'ms-Fabric-isFocusHidden' classname to the\n * document body, removes the 'ms-Fabric--isFocusVisible' classname.\n *\n * This logic allows components on the page to conditionally render focus treatments based on\n * the existence of global classnames, which simplifies logic overall.\n *\n * @param rootRef - A Ref object. Focus rectangle can be applied on itself and all its children.\n */\nexport function useFocusRects(rootRef?: React.RefObject<HTMLElement>): void {\n React.useEffect(() => {\n const win = getWindow(rootRef?.current) as AppWindow;\n\n if (!win || win.FabricConfig?.disableFocusRects === true) {\n return undefined;\n }\n\n let count = setMountCounters(win, 1);\n if (count <= 1) {\n win.addEventListener('mousedown', _onMouseDown, true);\n win.addEventListener('pointerdown', _onPointerDown, true);\n win.addEventListener('keydown', _onKeyDown, true);\n }\n\n return () => {\n if (!win || win.FabricConfig?.disableFocusRects === true) {\n return;\n }\n\n count = setMountCounters(win, -1);\n if (count === 0) {\n win.removeEventListener('mousedown', _onMouseDown, true);\n win.removeEventListener('pointerdown', _onPointerDown, true);\n win.removeEventListener('keydown', _onKeyDown, true);\n }\n };\n }, [rootRef]);\n}\n\n/**\n * Function Component wrapper which enables calling `useFocusRects` hook.\n * Renders nothing.\n */\nexport const FocusRects: React.FunctionComponent<{ rootRef?: React.RefObject<HTMLElement> }> = props => {\n useFocusRects(props.rootRef);\n return null;\n};\n\nfunction _onMouseDown(ev: MouseEvent): void {\n setFocusVisibility(false, ev.target as Element);\n}\n\nfunction _onPointerDown(ev: PointerEvent): void {\n if (ev.pointerType !== 'mouse') {\n setFocusVisibility(false, ev.target as Element);\n }\n}\n\nfunction _onKeyDown(ev: KeyboardEvent): void {\n // eslint-disable-next-line deprecation/deprecation\n if (isDirectionalKeyCode(ev.which)) {\n setFocusVisibility(true, ev.target as Element);\n }\n}\n","import * as React from 'react';\nimport { IImageProps } from '../Image/Image.types';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IBaseProps, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n * {@docCategory Icon}\n */\nexport enum IconType {\n /**\n * Render using the fabric icon font.\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n default = 0,\n\n /**\n * Render using an image, where imageProps would be used.\n * @deprecated Icon type is inferred based on presence of `IIconProps.imageProps`\n */\n image = 1,\n\n /**\n * Deprecated, use `default`.\n * @deprecated Use `default`.\n */\n Default = 100000,\n\n /**\n * Deprecated, use `image`.\n * @deprecated Use `image`.\n */\n Image = 100001,\n}\n\n/**\n * {@docCategory Icon}\n */\nexport interface IIconProps extends IBaseProps, React.HTMLAttributes<HTMLElement> {\n /**\n * The name of the icon to use from the icon font.\n * If string is empty, a placeholder icon will be rendered the same width as an icon.\n */\n iconName?: string;\n\n /**\n * The aria label of the icon for the benefit of screen readers.\n * @deprecated Use the native prop `aria-label`\n */\n ariaLabel?: string;\n\n /**\n * The type of icon to render (image or icon font).\n * @deprecated Inferred based on the presence of `imageProps`\n */\n // eslint-disable-next-line deprecation/deprecation\n iconType?: IconType;\n\n /**\n * If rendering an image icon, these props will be passed to the Image component.\n */\n imageProps?: IImageProps;\n\n /**\n * If rendering an image icon, this component will be rendered in the event that loading the image fails.\n */\n imageErrorAs?: React.ComponentType<IImageProps>;\n\n /**\n * Gets the styles for an Icon.\n */\n styles?: IStyleFunctionOrObject<IIconStyleProps, IIconStyles>;\n theme?: ITheme;\n}\n\n/**\n * {@docCategory Icon}\n */\nexport interface IIconStyleProps {\n className?: string;\n iconClassName?: string;\n isPlaceholder: boolean;\n isImage: boolean;\n styles?: Partial<IIconStyles>;\n theme?: ITheme;\n}\n\n/**\n * {@docCategory Icon}\n */\nexport interface IIconStyles {\n root?: IStyle;\n\n /**\n * Deprecated. Use `root`.\n * @deprecated Use `root`.\n */\n imageContainer?: IStyle;\n}\n\n/**\n * Props for a basic icon component which only supports font glyphs and can't be targeted by customizations.\n * {@docCategory Icon}\n */\nexport interface IFontIconProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * The name of the icon to use from the icon font.\n * If string is empty, a placeholder icon will be rendered the same width as an icon.\n */\n iconName?: string;\n\n /**\n * Custom class to style the icon.\n */\n className?: string;\n}\n\n/**\n * Props for a basic image icon component which doesn't directly provide image load error handling\n * and can't be targeted by customizations.\n * {@docCategory Icon}\n */\nexport interface IImageIconProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Props passed to the Image component.\n */\n imageProps: IImageProps;\n\n /**\n * Custom class to style the icon.\n */\n className?: string;\n}\n","import * as React from 'react';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Image}\n */\nexport interface IImage {}\n\n/**\n * {@docCategory Image}\n */\nexport interface IImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IImageStyleProps, IImageStyles>;\n\n /**\n * Theme provided by HOC.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Component\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * If true, fades the image in when loaded.\n * @defaultvalue true\n */\n shouldFadeIn?: boolean;\n\n /**\n * If true, the image starts as visible and is hidden on error. Otherwise, the image is hidden until\n * it is successfully loaded. This disables shouldFadeIn.\n * @defaultvalue false;\n */\n shouldStartVisible?: boolean;\n\n /**\n * Used to determine how the image is scaled and cropped to fit the frame.\n *\n * @defaultvalue If both dimensions are provided, then the image is fit using ImageFit.scale.\n * Otherwise, the image won't be scaled or cropped.\n */\n imageFit?: ImageFit;\n\n /**\n * Deprecated at v1.3.6, to replace the src in case of errors, use `onLoadingStateChange` instead and\n * rerender the Image with a difference src.\n * @deprecated Use `onLoadingStateChange` instead and\n * rerender the Image with a difference src.\n */\n errorSrc?: string;\n\n /**\n * If true, the image frame will expand to fill its parent container.\n */\n maximizeFrame?: boolean;\n\n /**\n * Optional callback method for when the image load state has changed.\n * The 'loadState' parameter indicates the current state of the Image.\n */\n onLoadingStateChange?: (loadState: ImageLoadState) => void;\n\n /**\n * Specifies the cover style to be used for this image. If not\n * specified, this will be dynamically calculated based on the\n * aspect ratio for the image.\n */\n coverStyle?: ImageCoverStyle;\n}\n\n/**\n * The possible methods that can be used to fit the image.\n * {@docCategory Image}\n */\nexport enum ImageFit {\n /**\n * The image is not scaled. The image is centered and cropped within the content box.\n */\n center = 0,\n\n /**\n * The image is scaled to maintain its aspect ratio while being fully contained within the frame. The image will\n * be centered horizontally and vertically within the frame. The space in the top and bottom or in the sides of\n * the frame will be empty depending on the difference in aspect ratio between the image and the frame.\n */\n contain = 1,\n\n /**\n * The image is scaled to maintain its aspect ratio while filling the frame. Portions of the image will be cropped\n * from the top and bottom, or the sides, depending on the difference in aspect ratio between the image and the frame.\n */\n cover = 2,\n\n /**\n * Neither the image nor the frame are scaled. If their sizes do not match, the image will either be cropped or the\n * frame will have empty space.\n */\n none = 3,\n\n /**\n * The image will be centered horizontally and vertically within the frame and maintains its aspect ratio. It will\n * behave as ImageFit.center if the image's natural height or width is less than the Image frame's height or width,\n * but if both natural height and width are larger than the frame it will behave as ImageFit.cover.\n */\n centerCover = 4,\n\n /**\n * The image will be centered horizontally and vertically within the frame and maintains its aspect ratio. It will\n * behave as ImageFit.center if the image's natural height and width is less than the Image frame's height and width,\n * but if either natural height or width are larger than the frame it will behave as ImageFit.contain.\n */\n centerContain = 5,\n}\n\n/**\n * The cover style to be used on the image\n * {@docCategory Image}\n */\nexport enum ImageCoverStyle {\n /**\n * The image will be shown at 100% height of container and the width will be scaled accordingly\n */\n landscape = 0,\n\n /**\n * The image will be shown at 100% width of container and the height will be scaled accordingly\n */\n portrait = 1,\n}\n\n/**\n * {@docCategory Image}\n */\nexport enum ImageLoadState {\n /**\n * The image has not yet been loaded, and there is no error yet.\n */\n notLoaded = 0,\n\n /**\n * The image has been loaded successfully.\n */\n loaded = 1,\n\n /**\n * An error has been encountered while loading the image.\n */\n error = 2,\n\n /**\n * Deprecated at v1.3.6, to replace the src in case of errors, use `onLoadingStateChange` instead\n * and rerender the Image with a difference src.\n * @deprecated Use `onLoadingStateChange` instead\n * and rerender the Image with a difference src.\n */\n errorLoaded = 3,\n}\n\n/**\n * {@docCategory Image}\n */\nexport interface IImageStyleProps {\n /**\n * Accept theme prop.\n */\n theme: ITheme;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n\n /**\n * If true, the image frame will expand to fill its parent container.\n */\n maximizeFrame?: boolean;\n\n /**\n * If true, the image is loaded\n */\n isLoaded?: boolean;\n\n /**\n * If true, fades the image in when loaded.\n * @defaultvalue true\n */\n shouldFadeIn?: boolean;\n\n /**\n * If true, the image starts as visible and is hidden on error. Otherwise, the image is hidden until\n * it is successfully loaded. This disables shouldFadeIn.\n * @defaultvalue false;\n */\n shouldStartVisible?: boolean;\n\n /**\n * If true the image is coverStyle landscape instead of portrait\n */\n isLandscape?: boolean;\n\n /**\n * ImageFit booleans for center, cover, contain, centerContain, centerCover, none\n */\n isCenter?: boolean;\n isContain?: boolean;\n isCover?: boolean;\n isCenterContain?: boolean;\n isCenterCover?: boolean;\n isNone?: boolean;\n\n /**\n * if true image load is in error\n */\n isError?: boolean;\n\n /**\n * if true, imageFit is undefined\n */\n isNotImageFit?: boolean;\n\n /**\n * Image width value\n */\n width?: number | string;\n\n /**\n * Image height value\n */\n height?: number | string;\n}\n\n/**\n * {@docCategory Image}\n */\nexport interface IImageStyles {\n /**\n * Style set for the root div element.\n */\n root: IStyle;\n /**\n * Style set for the img element.\n */\n image: IStyle;\n}\n","/**\n * ARIA helper to concatenate attributes, returning undefined if all attributes\n * are undefined. (Empty strings are not a valid ARIA attribute value.)\n *\n * @param ariaAttributes - ARIA attributes to merge\n */\nexport function mergeAriaAttributeValues(...ariaAttributes: (string | undefined | false)[]): string | undefined {\n const mergedAttribute = ariaAttributes\n .filter((arg: string | undefined | false) => arg)\n .join(' ')\n .trim();\n return mergedAttribute === '' ? undefined : mergedAttribute;\n}\n","import * as React from 'react';\nimport { classNamesFunction, getNativeProps, imgProperties } from '../../Utilities';\nimport { IImageProps, IImageStyleProps, IImageStyles, ImageCoverStyle, ImageFit, ImageLoadState } from './Image.types';\n\nconst getClassNames = classNamesFunction<IImageStyleProps, IImageStyles>();\n\nexport interface IImageState {\n loadState?: ImageLoadState;\n}\n\nconst KEY_PREFIX = 'fabricImage';\n\nexport class ImageBase extends React.Component<IImageProps, IImageState> {\n public static defaultProps = {\n shouldFadeIn: true,\n };\n\n private static _svgRegex = /\\.svg$/i;\n\n // Make an initial assumption about the image layout until we can\n // check the rendered element. The value here only takes effect when\n // shouldStartVisible is true.\n private _coverStyle: ImageCoverStyle = ImageCoverStyle.portrait;\n private _imageElement = React.createRef<HTMLImageElement>();\n private _frameElement = React.createRef<HTMLDivElement>();\n\n constructor(props: IImageProps) {\n super(props);\n\n this.state = {\n loadState: ImageLoadState.notLoaded,\n };\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IImageProps): void {\n if (nextProps.src !== this.props.src) {\n this.setState({\n loadState: ImageLoadState.notLoaded,\n });\n } else if (this.state.loadState === ImageLoadState.loaded) {\n this._computeCoverStyle(nextProps);\n }\n }\n\n public componentDidUpdate(prevProps: IImageProps, prevState: IImageState) {\n this._checkImageLoaded();\n if (this.props.onLoadingStateChange && prevState.loadState !== this.state.loadState) {\n this.props.onLoadingStateChange(this.state.loadState!);\n }\n }\n\n public render(): JSX.Element {\n const imageProps = getNativeProps<React.ImgHTMLAttributes<HTMLImageElement>>(this.props, imgProperties, [\n 'width',\n 'height',\n ]);\n const {\n src,\n alt,\n width,\n height,\n shouldFadeIn,\n shouldStartVisible,\n className,\n imageFit,\n role,\n maximizeFrame,\n styles,\n theme,\n } = this.props;\n const { loadState } = this.state;\n const coverStyle = this.props.coverStyle !== undefined ? this.props.coverStyle : this._coverStyle;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n width,\n height,\n maximizeFrame,\n shouldFadeIn,\n shouldStartVisible,\n isLoaded:\n loadState === ImageLoadState.loaded ||\n (loadState === ImageLoadState.notLoaded && this.props.shouldStartVisible),\n isLandscape: coverStyle === ImageCoverStyle.landscape,\n isCenter: imageFit === ImageFit.center,\n isCenterContain: imageFit === ImageFit.centerContain,\n isCenterCover: imageFit === ImageFit.centerCover,\n isContain: imageFit === ImageFit.contain,\n isCover: imageFit === ImageFit.cover,\n isNone: imageFit === ImageFit.none,\n isError: loadState === ImageLoadState.error,\n isNotImageFit: imageFit === undefined,\n });\n\n // If image dimensions aren't specified, the natural size of the image is used.\n return (\n <div className={classNames.root} style={{ width: width, height: height }} ref={this._frameElement}>\n <img\n {...imageProps}\n onLoad={this._onImageLoaded}\n onError={this._onImageError}\n key={KEY_PREFIX + this.props.src || ''}\n className={classNames.image}\n ref={this._imageElement}\n src={src}\n alt={alt}\n role={role}\n />\n </div>\n );\n }\n\n private _onImageLoaded = (ev: React.SyntheticEvent<HTMLImageElement>): void => {\n const { src, onLoad } = this.props;\n if (onLoad) {\n onLoad(ev);\n }\n\n this._computeCoverStyle(this.props);\n\n if (src) {\n this.setState({\n loadState: ImageLoadState.loaded,\n });\n }\n };\n\n private _checkImageLoaded(): void {\n const { src } = this.props;\n const { loadState } = this.state;\n\n if (loadState === ImageLoadState.notLoaded) {\n // testing if naturalWidth and naturalHeight are greater than zero is better than checking\n // .complete, because .complete will also be set to true if the image breaks. However,\n // for some browsers, SVG images do not have a naturalWidth or naturalHeight, so fall back\n // to checking .complete for these images.\n const isLoaded: boolean = this._imageElement.current\n ? (src && this._imageElement.current.naturalWidth > 0 && this._imageElement.current.naturalHeight > 0) ||\n (this._imageElement.current.complete && ImageBase._svgRegex.test(src!))\n : false;\n\n if (isLoaded) {\n this._computeCoverStyle(this.props);\n this.setState({\n loadState: ImageLoadState.loaded,\n });\n }\n }\n }\n\n private _computeCoverStyle(props: IImageProps): void {\n const { imageFit, width, height } = props;\n\n // Do not compute cover style if it was already specified in props\n if (\n (imageFit === ImageFit.cover ||\n imageFit === ImageFit.contain ||\n imageFit === ImageFit.centerContain ||\n imageFit === ImageFit.centerCover) &&\n this.props.coverStyle === undefined &&\n this._imageElement.current &&\n this._frameElement.current\n ) {\n // Determine the desired ratio using the width and height props.\n // If those props aren't available, measure measure the frame.\n let desiredRatio;\n if (\n typeof width === 'number' &&\n typeof height === 'number' &&\n imageFit !== ImageFit.centerContain &&\n imageFit !== ImageFit.centerCover\n ) {\n desiredRatio = width / height;\n } else {\n desiredRatio = this._frameElement.current.clientWidth / this._frameElement.current.clientHeight;\n }\n\n // Examine the source image to determine its original ratio.\n const naturalRatio = this._imageElement.current.naturalWidth / this._imageElement.current.naturalHeight;\n\n // Should we crop from the top or the sides?\n if (naturalRatio > desiredRatio) {\n this._coverStyle = ImageCoverStyle.landscape;\n } else {\n this._coverStyle = ImageCoverStyle.portrait;\n }\n }\n }\n\n private _onImageError = (ev: React.SyntheticEvent<HTMLImageElement>): void => {\n if (this.props.onError) {\n this.props.onError(ev);\n }\n this.setState({\n loadState: ImageLoadState.error,\n });\n };\n}\n","import { AnimationClassNames, getGlobalClassNames, IStyle } from '../../Styling';\nimport { IImageStyleProps, IImageStyles } from './Image.types';\nimport { getWindow } from '../../Utilities';\n\nconst GlobalClassNames = {\n root: 'ms-Image',\n rootMaximizeFrame: 'ms-Image--maximizeFrame',\n image: 'ms-Image-image',\n imageCenter: 'ms-Image-image--center',\n imageContain: 'ms-Image-image--contain',\n imageCover: 'ms-Image-image--cover',\n imageCenterContain: 'ms-Image-image--centerContain',\n imageCenterCover: 'ms-Image-image--centerCover',\n imageNone: 'ms-Image-image--none',\n imageLandscape: 'ms-Image-image--landscape',\n imagePortrait: 'ms-Image-image--portrait',\n};\n\nexport const getStyles = (props: IImageStyleProps): IImageStyles => {\n const {\n className,\n width,\n height,\n maximizeFrame,\n isLoaded,\n shouldFadeIn,\n shouldStartVisible,\n isLandscape,\n isCenter,\n isContain,\n isCover,\n isCenterContain,\n isCenterCover,\n isNone,\n isError,\n isNotImageFit,\n theme,\n } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const ImageFitStyles: IStyle = {\n position: 'absolute',\n left: '50% /* @noflip */',\n top: '50%',\n transform: 'translate(-50%,-50%)', // @todo test RTL renders transform: translate(50%,-50%);\n };\n\n // Cut the mustard using msMaxTouchPoints to detect IE11 which does not support CSS object-fit\n const window: Window | undefined = getWindow();\n const supportsObjectFit: boolean = window !== undefined && window.navigator.msMaxTouchPoints === undefined;\n const fallbackObjectFitStyles =\n (isContain && isLandscape) || (isCover && !isLandscape)\n ? { width: '100%', height: 'auto' }\n : { width: 'auto', height: '100%' };\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n overflow: 'hidden',\n },\n maximizeFrame && [\n classNames.rootMaximizeFrame,\n {\n height: '100%',\n width: '100%',\n },\n ],\n isLoaded && shouldFadeIn && !shouldStartVisible && AnimationClassNames.fadeIn400,\n (isCenter || isContain || isCover || isCenterContain || isCenterCover) && {\n position: 'relative',\n },\n className,\n ],\n image: [\n classNames.image,\n {\n display: 'block',\n opacity: 0,\n },\n isLoaded && [\n 'is-loaded',\n {\n opacity: 1,\n },\n ],\n isCenter && [classNames.imageCenter, ImageFitStyles],\n isContain && [\n classNames.imageContain,\n supportsObjectFit && {\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n },\n !supportsObjectFit && fallbackObjectFitStyles,\n ImageFitStyles,\n ],\n isCover && [\n classNames.imageCover,\n supportsObjectFit && {\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n },\n !supportsObjectFit && fallbackObjectFitStyles,\n ImageFitStyles,\n ],\n isCenterContain && [\n classNames.imageCenterContain,\n isLandscape && {\n maxWidth: '100%',\n },\n !isLandscape && {\n maxHeight: '100%',\n },\n ImageFitStyles,\n ],\n isCenterCover && [\n classNames.imageCenterCover,\n isLandscape && {\n maxHeight: '100%',\n },\n !isLandscape && {\n maxWidth: '100%',\n },\n ImageFitStyles,\n ],\n isNone && [\n classNames.imageNone,\n {\n width: 'auto',\n height: 'auto',\n },\n ],\n isNotImageFit && [\n !!width &&\n !height && {\n height: 'auto',\n width: '100%',\n },\n !width &&\n !!height && {\n height: '100%',\n width: 'auto',\n },\n !!width &&\n !!height && {\n height: '100%',\n width: '100%',\n },\n ],\n isLandscape && classNames.imageLandscape,\n !isLandscape && classNames.imagePortrait,\n !isLoaded && 'is-notLoaded',\n shouldFadeIn && 'is-fadeIn',\n isError && 'is-error',\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IImageProps, IImageStyleProps, IImageStyles } from './Image.types';\nimport { ImageBase } from './Image.base';\nimport { getStyles } from './Image.styles';\n\nexport const Image: React.FunctionComponent<IImageProps> = styled<IImageProps, IImageStyleProps, IImageStyles>(\n ImageBase,\n getStyles,\n undefined,\n {\n scope: 'Image',\n },\n true,\n);\n","import { IIconStyleProps, IIconStyles } from './Icon.types';\nimport { mergeStyleSets } from '../../Styling';\n\n/** Class names used in themeable and non-themeable Icon components */\nexport const classNames = mergeStyleSets({\n root: {\n display: 'inline-block',\n },\n placeholder: [\n 'ms-Icon-placeHolder',\n {\n width: '1em',\n },\n ],\n image: [\n 'ms-Icon-imageContainer',\n {\n overflow: 'hidden',\n },\n ],\n});\n/** Class name used only in non-themeable Icon components */\nexport const MS_ICON = 'ms-Icon';\n\nexport const getStyles = (props: IIconStyleProps): IIconStyles => {\n const { className, iconClassName, isPlaceholder, isImage, styles } = props;\n\n return {\n root: [\n isPlaceholder && classNames.placeholder,\n classNames.root,\n isImage && classNames.image,\n iconClassName,\n className,\n styles && styles.root,\n // eslint-disable-next-line deprecation/deprecation\n styles && styles.imageContainer,\n ],\n };\n};\n","import * as React from 'react';\n\nimport { IFontIconProps } from './Icon.types';\nimport { classNames, MS_ICON } from './Icon.styles';\nimport { css, getNativeProps, htmlElementProperties, memoizeFunction } from '../../Utilities';\nimport { getIcon, IIconRecord, IIconSubsetRecord } from '../../Styling';\n\nexport interface IIconContent {\n children?: string | JSX.Element;\n iconClassName?: string;\n fontFamily?: string;\n mergeImageProps?: boolean;\n}\n\nexport const getIconContent = memoizeFunction(\n (iconName?: string): IIconContent | null => {\n const { code, subset }: Pick<IIconRecord, 'code'> & { subset: Partial<IIconSubsetRecord> } = getIcon(iconName) || {\n subset: {},\n code: undefined,\n };\n\n if (!code) {\n return null;\n }\n\n return {\n children: code,\n iconClassName: subset.className,\n fontFamily: subset.fontFace && subset.fontFace.fontFamily,\n mergeImageProps: subset.mergeImageProps,\n };\n },\n undefined,\n true /*ignoreNullOrUndefinedResult */,\n);\n\n/**\n * Fast icon component which only supports font glyphs (not images) and can't be targeted by customizations.\n * To style the icon, use `className` or reference `ms-Icon` in CSS.\n * {@docCategory Icon}\n */\nexport const FontIcon: React.FunctionComponent<IFontIconProps> = props => {\n const { iconName, className, style = {} } = props;\n const iconContent = getIconContent(iconName) || {};\n const { iconClassName, children, fontFamily, mergeImageProps } = iconContent;\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLElement>>(props, htmlElementProperties);\n const accessibleName = props['aria-label'] || props.title;\n const containerProps =\n props['aria-label'] || props['aria-labelledby'] || props.title\n ? {\n role: mergeImageProps ? undefined : 'img',\n }\n : {\n 'aria-hidden': true,\n };\n\n let finalChildren = children;\n\n if (mergeImageProps) {\n if (typeof children === 'object' && typeof children.props === 'object' && accessibleName) {\n finalChildren = React.cloneElement(children, { alt: accessibleName });\n }\n }\n\n return (\n <i\n data-icon-name={iconName}\n {...containerProps}\n {...nativeProps}\n {...(mergeImageProps\n ? {\n title: undefined,\n 'aria-label': undefined,\n }\n : {})}\n className={css(MS_ICON, classNames.root, iconClassName, !iconName && classNames.placeholder, className)}\n // Apply the font family this way to ensure it doesn't get overridden by Fabric Core ms-Icon styles\n // https://github.com/microsoft/fluentui/issues/10449\n style={{ fontFamily, ...style }}\n >\n {finalChildren}\n </i>\n );\n};\n\n/**\n * Memoized helper for rendering a FontIcon.\n * @param iconName - The name of the icon to use from the icon font.\n * @param className - Class name for styling the icon.\n * @param ariaLabel - Label for the icon for the benefit of screen readers.\n * {@docCategory Icon}\n */\nexport const getFontIcon = memoizeFunction((iconName: string, className?: string, ariaLabel?: string) => {\n return FontIcon({ iconName, className, 'aria-label': ariaLabel });\n});\n","import * as React from 'react';\n\nimport { IIconProps, IconType, IIconStyleProps, IIconStyles } from './Icon.types';\nimport { Image } from '../Image/Image';\nimport { ImageLoadState, IImageProps } from '../Image/Image.types';\nimport { getNativeProps, htmlElementProperties, classNamesFunction } from '../../Utilities';\nimport { getIconContent } from './FontIcon';\n\nexport interface IIconState {\n imageLoadError: boolean;\n}\n\nconst getClassNames = classNamesFunction<IIconStyleProps, IIconStyles>({\n // Icon is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Icon.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\nexport class IconBase extends React.Component<IIconProps, IIconState> {\n constructor(props: IIconProps) {\n super(props);\n this.state = {\n imageLoadError: false,\n };\n }\n\n public render() {\n const { children, className, styles, iconName, imageErrorAs, theme } = this.props;\n const isPlaceholder = typeof iconName === 'string' && iconName.length === 0;\n const isImage =\n // eslint-disable-next-line deprecation/deprecation\n !!this.props.imageProps || this.props.iconType === IconType.image || this.props.iconType === IconType.Image;\n const iconContent = getIconContent(iconName) || {};\n const { iconClassName, children: iconContentChildren, mergeImageProps } = iconContent;\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n iconClassName,\n isImage,\n isPlaceholder,\n });\n\n const RootType = isImage ? 'span' : 'i';\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, htmlElementProperties, [\n 'aria-label',\n ]);\n const { imageLoadError } = this.state;\n const imageProps: IImageProps = {\n ...this.props.imageProps,\n onLoadingStateChange: this._onImageLoadingStateChange,\n };\n const ImageType = (imageLoadError && imageErrorAs) || Image;\n\n // eslint-disable-next-line deprecation/deprecation\n const ariaLabel = this.props['aria-label'] || this.props.ariaLabel;\n const accessibleName = imageProps.alt || ariaLabel || this.props.title;\n const hasName = !!(\n accessibleName ||\n this.props['aria-labelledby'] ||\n imageProps['aria-label'] ||\n imageProps['aria-labelledby']\n );\n const containerProps = hasName\n ? {\n role: isImage || mergeImageProps ? undefined : 'img',\n 'aria-label': isImage || mergeImageProps ? undefined : accessibleName,\n }\n : {\n 'aria-hidden': this.props['aria-labelledby'] || imageProps['aria-labelledby'] ? false : true,\n };\n\n let finalIconContentChildren = iconContentChildren;\n\n if (mergeImageProps && iconContentChildren && typeof iconContentChildren === 'object' && accessibleName) {\n finalIconContentChildren = React.cloneElement(iconContentChildren, {\n alt: accessibleName,\n });\n }\n\n return (\n <RootType\n data-icon-name={iconName}\n {...containerProps}\n {...nativeProps}\n {...(mergeImageProps\n ? {\n title: undefined,\n 'aria-label': undefined,\n }\n : {})}\n className={classNames.root}\n >\n {isImage ? <ImageType {...imageProps} /> : children || finalIconContentChildren}\n </RootType>\n );\n }\n\n private _onImageLoadingStateChange = (state: ImageLoadState): void => {\n if (this.props.imageProps && this.props.imageProps.onLoadingStateChange) {\n this.props.imageProps.onLoadingStateChange(state);\n }\n if (state === ImageLoadState.error) {\n this.setState({ imageLoadError: true });\n }\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IIconProps, IIconStyleProps, IIconStyles } from './Icon.types';\nimport { IconBase } from './Icon.base';\nimport { getStyles } from './Icon.styles';\n\n/**\n * Legacy Icon component which can be targeted by customization. It's recommended to use `FontIcon`\n * or `ImageIcon` instead, especially in scenarios where rendering performance is important.\n * {@docCategory Icon}\n */\nexport const Icon: React.FunctionComponent<IIconProps> = styled<IIconProps, IIconStyleProps, IIconStyles>(\n IconBase,\n getStyles,\n undefined,\n {\n scope: 'Icon',\n },\n true,\n);\nIcon.displayName = 'Icon';\n","import * as React from 'react';\n\nimport { IImageIconProps } from './Icon.types';\nimport { Image } from '../Image/Image';\nimport { css, getNativeProps, htmlElementProperties } from '../../Utilities';\nimport { classNames, MS_ICON } from './Icon.styles';\n\n/**\n * Fast icon component which only supports images (not font glyphs) and can't be targeted by customizations.\n * To style the icon, use `className` or reference `ms-Icon` in CSS.\n * {@docCategory Icon}\n */\nexport const ImageIcon: React.FunctionComponent<IImageIconProps> = props => {\n const { className, imageProps } = props;\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, htmlElementProperties);\n\n const containerProps = props['aria-label']\n ? {}\n : {\n role: 'presentation',\n 'aria-hidden': imageProps.alt || imageProps['aria-labelledby'] ? false : true,\n };\n\n return (\n <div {...containerProps} {...nativeProps} className={css(MS_ICON, classNames.root, classNames.image, className)}>\n <Image {...imageProps} />\n </div>\n );\n};\n","export const DirectionalHint = {\n /**\n * Appear above the target element, with the left edges of the callout and target aligning.\n */\n topLeftEdge: 0 as 0,\n\n /**\n * Appear above the target element, with the centers of the callout and target aligning.\n */\n topCenter: 1 as 1,\n\n /**\n * Appear above the target element, with the right edges of the callout and target aligning.\n */\n topRightEdge: 2 as 2,\n\n /**\n * Appear above the target element, aligning with the target element such that the callout tends toward\n * the center of the screen.\n */\n topAutoEdge: 3 as 3,\n\n /**\n * Appear below the target element, with the left edges of the callout and target aligning.\n */\n bottomLeftEdge: 4 as 4,\n\n /**\n * Appear below the target element, with the centers of the callout and target aligning.\n */\n bottomCenter: 5 as 5,\n\n /**\n * Appear below the target element, with the right edges of the callout and target aligning.\n */\n bottomRightEdge: 6 as 6,\n\n /**\n * Appear below the target element, aligning with the target element such that the callout tends toward\n * the center of the screen.\n */\n bottomAutoEdge: 7 as 7,\n\n /**\n * Appear to the left of the target element, with the top edges of the callout and target aligning.\n */\n leftTopEdge: 8 as 8,\n\n /**\n * Appear to the left of the target element, with the centers of the callout and target aligning.\n */\n leftCenter: 9 as 9,\n\n /**\n * Appear to the left of the target element, with the bottom edges of the callout and target aligning.\n */\n leftBottomEdge: 10 as 10,\n\n /**\n * Appear to the right of the target element, with the top edges of the callout and target aligning.\n */\n rightTopEdge: 11 as 11,\n\n /**\n * Appear to the right of the target element, with the centers of the callout and target aligning.\n */\n rightCenter: 12 as 12,\n\n /**\n * Appear to the right of the target element, with the bottom edges of the callout and target aligning.\n */\n rightBottomEdge: 13 as 13,\n};\n\nexport type DirectionalHint = typeof DirectionalHint[keyof typeof DirectionalHint];\n","import { IRenderFunction } from '../IRenderFunction';\nimport { createMemoizer } from '../memoize';\n\ninterface IRenderFunctionComposer {\n <TProps>(outer: IRenderFunction<TProps>): (inner: IRenderFunction<TProps>) => IRenderFunction<TProps>;\n}\n\nfunction createComposedRenderFunction<TProps>(\n outer: IRenderFunction<TProps>,\n): (inner: IRenderFunction<TProps>) => IRenderFunction<TProps> {\n const outerMemoizer = createMemoizer((inner: IRenderFunction<TProps>) => {\n const innerMemoizer = createMemoizer((defaultRender: IRenderFunction<TProps>) => {\n return (innerProps?: TProps) => {\n return inner(innerProps, defaultRender);\n };\n });\n\n return (outerProps?: TProps, defaultRender?: IRenderFunction<TProps>) => {\n return outer(outerProps, defaultRender ? innerMemoizer(defaultRender) : inner);\n };\n });\n\n return outerMemoizer;\n}\n\nconst memoizer = createMemoizer<IRenderFunctionComposer>(createComposedRenderFunction);\n\n/**\n * Composes two 'render functions' to produce a final render function that renders\n * the outer function, passing the inner function as 'default render'. The inner function\n * is then passed the original 'default render' prop.\n * @public\n */\nexport function composeRenderFunction<TProps>(\n outer: IRenderFunction<TProps>,\n inner: IRenderFunction<TProps>,\n): IRenderFunction<TProps> {\n return memoizer(outer)(inner);\n}\n","import * as React from 'react';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { IFocusZoneProps } from '../../FocusZone';\nimport { IIconProps } from '../Icon/Icon.types';\nimport { ICalloutProps, ICalloutContentStyleProps } from '../../Callout';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IButtonStyles } from '../../Button';\nimport { IRefObject, IBaseProps, IRectangle, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';\nimport { IWithResponsiveModeState } from '../../utilities/decorators/withResponsiveMode';\nimport { IContextualMenuClassNames, IMenuItemClassNames } from './ContextualMenu.classNames';\nexport { DirectionalHint } from '../../common/DirectionalHint';\nimport { IVerticalDividerClassNames } from '../Divider/VerticalDivider.types';\nimport {\n IContextualMenuItemProps,\n IContextualMenuRenderItem,\n IContextualMenuItemStyleProps,\n IContextualMenuItemRenderFunctions,\n} from './ContextualMenuItem.types';\nimport { IKeytipProps } from '../../Keytip';\nimport { Target } from '@uifabric/react-hooks';\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport enum ContextualMenuItemType {\n Normal = 0,\n Divider = 1,\n Header = 2,\n Section = 3,\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenu {}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuProps extends IBaseProps<IContextualMenu>, IWithResponsiveModeState {\n /**\n * Optional callback to access the IContextualMenu interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IContextualMenu>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IContextualMenuStyleProps, IContextualMenuStyles>;\n\n /**\n * Theme provided by higher-order component.\n */\n theme?: ITheme;\n\n /**\n * Additional CSS class to apply to the ContextualMenu.\n */\n className?: string;\n\n /**\n * The target that the ContextualMenu should try to position itself based on.\n * It can be either an element, a query selector string resolving to a valid element,\n * or a MouseEvent. If a MouseEvent is given, the origin point of the event will be used.\n */\n target?: Target;\n\n /**\n * How the menu should be positioned\n * @defaultvalue DirectionalHint.bottomAutoEdge\n */\n directionalHint?: DirectionalHint;\n\n /**\n * How the menu should be positioned in RTL layouts.\n * If not specified, a mirror of `directionalHint` will be used.\n */\n directionalHintForRTL?: DirectionalHint;\n\n /**\n * The gap between the ContextualMenu and the target\n * @defaultvalue 0\n */\n gapSpace?: number;\n\n /**\n * The width of the beak.\n * @defaultvalue 16\n */\n beakWidth?: number;\n\n /**\n * If true the context menu will render as the same width as the target element\n * @defaultvalue false\n */\n useTargetWidth?: boolean;\n\n /**\n * If true the context menu will have a minimum width equal to the width of the target element\n * @defaultvalue false\n */\n useTargetAsMinWidth?: boolean;\n\n /**\n * The bounding rectangle (or callback that returns a rectangle) which the contextual menu can appear in.\n */\n bounds?: IRectangle | ((target?: Target, targetWindow?: Window) => IRectangle | undefined);\n\n /**\n * If true then the beak is visible. If false it will not be shown.\n */\n isBeakVisible?: boolean;\n\n /**\n * If true, the menu will be positioned to cover the target.\n * If false, it will be positioned next to the target.\n * @defaultvalue false\n */\n coverTarget?: boolean;\n\n /**\n * If true the positioning logic will prefer to flip edges rather than to nudge the rectangle to fit within bounds,\n * thus making sure the element aligns perfectly with target's alignment edge\n */\n alignTargetEdge?: boolean;\n\n /**\n * Menu items to display.\n */\n items: IContextualMenuItem[];\n\n /**\n * Used as `aria-labelledby` for the menu element inside the callout.\n */\n labelElementId?: string;\n\n /**\n * Whether to focus on the menu when mounted.\n * @defaultvalue true\n */\n shouldFocusOnMount?: boolean;\n\n /**\n * Whether to focus on the contextual menu container (as opposed to the first menu item).\n */\n shouldFocusOnContainer?: boolean;\n\n /**\n * Callback when the ContextualMenu tries to close. If `dismissAll` is true then all\n * submenus will be dismissed.\n */\n onDismiss?: (ev?: React.MouseEvent | React.KeyboardEvent, dismissAll?: boolean) => void;\n\n /**\n * Click handler which is invoked if `onClick` is not passed for individual contextual\n * menu item.\n * Returning true will dismiss the menu even if `ev.preventDefault()` was called.\n */\n onItemClick?: (\n ev?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n item?: IContextualMenuItem,\n ) => boolean | void;\n\n /**\n * Whether this menu is a submenu of another menu.\n */\n isSubMenu?: boolean;\n\n /**\n * ID for the ContextualMenu's root element (inside the callout).\n * Should be used for `aria-owns` and other such uses, rather than direct reference for programmatic purposes.\n */\n id?: string;\n\n /**\n * Accessible label for the ContextualMenu's root element (inside the callout).\n */\n ariaLabel?: string;\n\n /**\n * If true do not render on a new layer. If false render on a new layer.\n * @defaultvalue false\n */\n doNotLayer?: boolean;\n\n /**\n * If true the position will not change sides in an attempt to fit the ContextualMenu within bounds.\n * It will still attempt to align it to whatever bounds are given.\n * @defaultvalue false\n */\n directionalHintFixed?: boolean;\n\n /**\n * Callback for when the menu has been opened.\n */\n onMenuOpened?: (contextualMenu?: IContextualMenuProps) => void;\n\n /**\n * Callback for when the menu is being closed (removing from the DOM).\n */\n onMenuDismissed?: (contextualMenu?: IContextualMenuProps) => void;\n\n /**\n * Additional custom props for the Callout.\n */\n calloutProps?: ICalloutProps;\n\n /**\n * Title to be displayed at the top of the menu, above the items.\n */\n title?: string;\n\n /**\n * Method to provide the classnames to style the contextual menu.\n * @deprecated Use `styles` instead to leverage mergeStyles API.\n */\n // eslint-disable-next-line deprecation/deprecation\n getMenuClassNames?: (theme: ITheme, className?: string) => IContextualMenuClassNames;\n\n /** Custom render function for a submenu. */\n onRenderSubMenu?: IRenderFunction<IContextualMenuProps>;\n\n /**\n * Method to override the render of the list of menu items.\n */\n onRenderMenuList?: IRenderFunction<IContextualMenuListProps>;\n\n /**\n * Delay (in milliseconds) to wait before expanding / dismissing a submenu on mouseEnter or mouseLeave\n */\n subMenuHoverDelay?: number;\n\n /**\n * Custom component to use for rendering individual menu items.\n * @defaultvalue ContextualMenuItem\n */\n contextualMenuItemAs?:\n | React.ComponentClass<IContextualMenuItemProps>\n | React.FunctionComponent<IContextualMenuItemProps>;\n\n /**\n * Props to pass down to the FocusZone.\n * NOTE: the default FocusZoneDirection will be used unless a direction\n * is specified in the focusZoneProps (even if other focusZoneProps are defined)\n * @defaultvalue \\{ direction: FocusZoneDirection.vertical \\}\n */\n focusZoneProps?: IFocusZoneProps;\n\n /**\n * If true, renders the ContextualMenu in a hidden state.\n * Use this flag, rather than rendering a ContextualMenu conditionally based on visibility,\n * to improve rendering performance when it becomes visible.\n * Note: When ContextualMenu is hidden its content will not be rendered. It will only render\n * once the ContextualMenu is visible.\n */\n hidden?: boolean;\n\n /**\n * If true, the menu will be updated even when `hidden=true`. Note that this will consume\n * resources to update even when nothing is being shown to the user. This might be helpful if\n * your updates are small and you want the menu to display quickly when `hidden` is set to false.\n */\n shouldUpdateWhenHidden?: boolean;\n\n /**\n * If true, the contextual menu will not be updated until focus enters the menu via other means.\n * This will only result in different behavior when `shouldFocusOnMount = false`.\n */\n delayUpdateFocusOnHover?: boolean;\n\n /**\n * Called when the component is unmounting, and focus needs to be restored.\n * Argument passed down contains two variables, the element that the underlying\n * popup believes focus should go to and whether or not the popup currently\n * contains focus. If this prop is provided, focus will not be restored automatically,\n * you'll need to call originalElement.focus()\n */\n onRestoreFocus?: (options: {\n originalElement?: HTMLElement | Window;\n containsFocus: boolean;\n documentContainsFocus: boolean;\n }) => void;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuItemRenderProps extends IContextualMenuItem {\n index: number;\n focusableElementIndex: number;\n totalItemCount: number;\n hasCheckmarks: boolean;\n hasIcons: boolean;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuListProps {\n items: IContextualMenuItem[];\n totalItemCount: number;\n hasCheckmarks: boolean;\n hasIcons: boolean;\n defaultMenuItemRenderer: (item: IContextualMenuItemRenderProps) => React.ReactNode;\n ariaLabel?: string;\n labelElementId?: string;\n role?: string;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuItem {\n /**\n * Optional callback to access the IContextualMenuRenderItem interface.\n * This will get passed down to ContextualMenuItem.\n */\n componentRef?: IRefObject<IContextualMenuRenderItem>;\n\n /**\n * Unique id to identify the item\n */\n key: string;\n\n /**\n * Text of the menu item.\n * If a standard hyphen (-) is passed in, then the item will be rendered as a divider.\n * If a dash must appear as text, use an emdash (—), figuredash (‒), or minus symbol (−) instead.\n */\n text?: string;\n\n /**\n * Seconday description for the menu item to display\n */\n secondaryText?: string;\n\n itemType?: ContextualMenuItemType;\n\n /**\n * Props for an icon to display next to the item.\n */\n iconProps?: IIconProps;\n\n /**\n * Custom render function for the menu item icon\n */\n onRenderIcon?: IRenderFunction<IContextualMenuItemProps>;\n\n /**\n * Props for the Icon used for the chevron.\n */\n submenuIconProps?: IIconProps;\n\n /**\n * Whether the menu item is disabled\n * @defaultvalue false\n */\n disabled?: boolean;\n\n /**\n * If the menu item is a split button, this prop disables purely the primary action of the button.\n * @defaultvalue false\n */\n primaryDisabled?: boolean;\n\n /**\n * @deprecated Not used\n */\n shortCut?: string;\n\n /**\n * Whether or not this menu item can be checked\n * @defaultvalue false\n */\n canCheck?: boolean;\n\n /**\n * Whether or not this menu item is currently checked.\n * @defaultvalue false\n */\n checked?: boolean;\n\n /**\n * Whether or not this menu item is a splitButton.\n * @defaultvalue false\n */\n split?: boolean;\n\n /**\n * Any custom data the developer wishes to associate with the menu item.\n */\n data?: any;\n\n /**\n * Callback for when the menu item is invoked. If `ev.preventDefault()` is called in `onClick`,\n * the click will not close the menu.\n *\n * Only for ContextualMenu items, returning true will dismiss the menu even if `ev.preventDefault()`\n * was called (does not apply for button or CommandBar sub-menu items).\n */\n onClick?: (\n ev?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n item?: IContextualMenuItem,\n ) => boolean | void;\n\n /**\n * Navigate to this URL when the menu item is clicked.\n */\n href?: string;\n\n /**\n * Target window when using `href`.\n */\n target?: string;\n\n /**\n * Link relation setting when using `href`.\n * If `target` is `_blank`, `rel` is defaulted to a value to prevent clickjacking.\n */\n rel?: string;\n\n /**\n * Properties to apply to a submenu to this item.\n *\n * The ContextualMenu will provide default values for `target`, `onDismiss`, `isSubMenu`,\n * `id`, `shouldFocusOnMount`, `directionalHint`, `className`, and `gapSpace`, all of which\n * can be overridden.\n */\n subMenuProps?: IContextualMenuProps;\n\n /**\n * Method to provide the classnames to style the individual items inside a menu.\n * @deprecated Use `styles` prop of `IContextualMenuItemProps` to leverage mergeStyles API.\n */\n getItemClassNames?: (\n theme: ITheme,\n disabled: boolean,\n expanded: boolean,\n checked: boolean,\n isAnchorLink: boolean,\n knownIcon: boolean,\n itemClassName?: string,\n dividerClassName?: string,\n iconClassName?: string,\n subMenuClassName?: string,\n primaryDisabled?: boolean,\n ) => // eslint-disable-next-line deprecation/deprecation\n IMenuItemClassNames;\n\n /**\n * Optional IContextualMenuItemProps overrides to customize behaviors such as item styling via `styles`.\n */\n itemProps?: Partial<IContextualMenuItemProps>;\n\n /**\n * Method to provide the classnames to style the Vertical Divider of a split button inside a menu.\n * Default value is the `getSplitButtonVerticalDividerClassNames` func defined in `ContextualMenu.classnames.ts`.\n * @defaultvalue getSplitButtonVerticalDividerClassNames\n */\n // eslint-disable-next-line deprecation/deprecation\n getSplitButtonVerticalDividerClassNames?: (theme: ITheme) => IVerticalDividerClassNames;\n\n /**\n * Properties to apply to render this item as a section.\n * This prop is mutually exclusive with `subMenuProps`.\n */\n sectionProps?: IContextualMenuSection;\n\n /**\n * Additional CSS class to apply to the menu item.\n */\n className?: string;\n\n /**\n * Additional styles to apply to the menu item\n * @deprecated in favor of the `styles` prop to leverage mergeStyles API.\n */\n style?: React.CSSProperties;\n\n /**\n * Custom accessible label for the element.\n * If no override is specified, the `aria-label` attribute will contain the item name.\n */\n ariaLabel?: string;\n\n /**\n * Title (tooltip) text displayed when hovering over an item.\n */\n title?: string;\n\n /**\n * Method to custom render this menu item.\n * For keyboard accessibility, the top-level rendered item should be a focusable element\n * (like an anchor or a button) or have the `data-is-focusable` property set to true.\n *\n * @param item - Item to render. Will typically be of type `IContextualMenuItem`.\n * (When rendering a command bar item, will be `ICommandBarItemProps`.)\n * @param dismissMenu - Function to dismiss the menu. Can be used to ensure that a custom menu\n * item click dismisses the menu. (Will be undefined if rendering a command bar item.)\n */\n onRender?: (item: any, dismissMenu: (ev?: any, dismissAll?: boolean) => void) => React.ReactNode;\n\n /**\n * Method to customize sub-components rendering of this menu item.\n *\n * @param props - Props used to pass into render functions\n * @param defaultRenders - Default render functions that renders default sub-components\n */\n onRenderContent?: (\n props: IContextualMenuItemProps,\n defaultRenders: IContextualMenuItemRenderFunctions,\n ) => React.ReactNode;\n\n /**\n * A function to be executed on mouse down. This is executed before an `onClick` event and can\n * be used to interrupt native on click events as well. The click event should still handle\n * the commands. This should only be used in special cases when react and non-react are mixed.\n */\n onMouseDown?: (item: IContextualMenuItem, event: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * Optional override for the menu button's role. Defaults to `menuitem` or `menuitemcheckbox`.\n */\n role?: string;\n\n /**\n * When rendering a custom menu component that is passed in, the component might also be a list of\n * elements. We want to keep track of the correct index our menu is using based off of\n * the length of the custom list. It is up to the user to increment the count for their list.\n */\n customOnRenderListLength?: number;\n\n /**\n * Keytip for this contextual menu item\n */\n keytipProps?: IKeytipProps;\n\n /**\n * @deprecated Use subMenuProps.items instead.\n */\n items?: IContextualMenuItem[];\n\n /**\n * Any additional properties to use when custom rendering menu items.\n */\n [propertyName: string]: any;\n\n /**\n * Detailed description of the menu item for the benefit of screen readers.\n */\n ariaDescription?: string;\n\n /**\n * This prop is no longer used. All contextual menu items are now focusable when disabled.\n * @deprecated in 6.38.2 will be removed in 7.0.0\n */\n inactive?: boolean;\n\n /**\n * Text of the menu item.\n * @deprecated Use `text` instead.\n */\n name?: string;\n\n /**\n * Flag which indicates that, when the item is clicked, the 'target' for the click event should be\n * overridden to reflect the launch target from the root menu.\n * This avoids a situation where the 'target' of the event may wind up detached from the DOM\n * when the menu is dismissed in response to the click.\n */\n preferMenuTargetAsEventTarget?: boolean;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuSection extends React.ClassAttributes<any> {\n /**\n * The items to include inside the section.\n */\n items: IContextualMenuItem[];\n\n /**\n * The optional section title.\n */\n title?: string | IContextualMenuItem;\n\n /**\n * If set to true, the section will display a divider at the top of the section.\n */\n topDivider?: boolean;\n\n /**\n * If set to true, the section will display a divider at the bottom of the section.\n */\n bottomDivider?: boolean;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IMenuItemStyles extends IButtonStyles {\n /**\n * Styles for a menu item that is an anchor link.\n */\n item?: IStyle;\n\n /**\n * Styles for the content inside the button/link of the menuItem.\n */\n linkContent?: IStyle;\n\n /**\n * Styles for a menu item that is an anchor link.\n */\n anchorLink?: IStyle;\n\n /**\n * Default icon color style for known icons.\n */\n iconColor?: IStyle;\n\n /**\n * Default style for checkmark icons.\n */\n checkmarkIcon?: IStyle;\n\n /**\n * Styles for the submenu icon of a menu item.\n */\n subMenuIcon?: IStyle;\n\n /**\n * Styles for a divider item of a ConextualMenu.\n */\n divider?: IStyle;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuStyleProps {\n theme: ITheme;\n\n className?: string;\n\n // Insert ContextualMenu style props below\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuStyles {\n /**\n * Style override for the contextual menu title.\n */\n title: IStyle;\n\n /**\n * Style for the container which parents all menu items.\n */\n container: IStyle;\n\n /**\n * Base styles for the root element of all ContextualMenus.\n */\n root: IStyle;\n\n /**\n * Styles for the header item of a ContextualMenu\n */\n header: IStyle;\n\n /**\n * Styles for the list that contains all menuItems.\n */\n list: IStyle;\n\n /**\n * SubComponent styles.\n */\n subComponentStyles: IContextualMenuSubComponentStyles;\n}\n\n/**\n * {@docCategory ContextualMenu}\n */\nexport interface IContextualMenuSubComponentStyles {\n /** Styles for the callout that hosts the ContextualMenu options. */\n callout: IStyleFunctionOrObject<ICalloutContentStyleProps, any>;\n\n /** Styles for each menu item. */\n menuItem: IStyleFunctionOrObject<IContextualMenuItemStyleProps, any>;\n}\n","import * as React from 'react';\nimport { FocusZone } from './FocusZone';\nimport { IRefObject, Point } from '@uifabric/utilities';\n\n/**\n * FocusZone component class interface.\n * {@docCategory FocusZone}\n */\nexport interface IFocusZone {\n /**\n * Sets focus to the first tabbable item in the zone.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element, even\n * if focus is already in the focus zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n focus(forceIntoFirstElement?: boolean): boolean;\n\n /**\n * Sets focus to the last tabbable item in the zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n focusLast(): boolean;\n\n /**\n * Sets focus to a specific child element within the zone. This can be used in conjunction with\n * shouldReceiveFocus to create delayed focus scenarios (like animate the scroll position to the correct\n * location and then focus.)\n * @param childElement - The child element within the zone to focus.\n * @param forceAlignment - If true, focus alignment will be set according to the element provided.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n focusElement(childElement?: HTMLElement, forceAlignment?: boolean): boolean;\n\n /**\n * Forces horizontal alignment in the context of vertical arrowing to use specific point as the reference, rather\n * than a center based on the last horizontal motion.\n * @param point - the new reference point.\n */\n setFocusAlignment(point: Point): void;\n}\n\n/**\n * FocusZone component props.\n * {@docCategory FocusZone}\n */\nexport interface IFocusZoneProps extends React.HTMLAttributes<HTMLElement | FocusZone> {\n /**\n * Optional callback to access the IFocusZone interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IFocusZone>;\n\n /**\n * Optional callback to access the root DOM element.\n * @deprecated Temporary solution which will be replaced with ref in the V8 release.\n */\n elementRef?: React.Ref<HTMLElement>;\n\n /**\n * Additional class name to provide on the root element, in addition to the ms-FocusZone class.\n */\n className?: string;\n\n /**\n * Defines which arrows to react to.\n * @defaultvalue FocusZoneDirection.bidirectional\n */\n direction?: FocusZoneDirection;\n\n /**\n * Optionally defines the initial tabbable element inside the FocusZone.\n * If a string is passed then it is treated as a selector for identifying the initial tabbable element.\n * If a function is passed then it uses the root element as a parameter to return the initial tabbable element.\n */\n defaultTabbableElement?: string | ((root: HTMLElement) => HTMLElement);\n\n /**\n * Optionally provide a selector for identifying the initial active element.\n * @deprecated Use `defaultTabbableElement` instead.\n */\n defaultActiveElement?: string;\n\n /**\n * Determines if a default tabbable element should be force focused on FocusZone mount.\n * @default false\n */\n shouldFocusOnMount?: boolean;\n\n /**\n * If set, the FocusZone will not be tabbable and keyboard navigation will be disabled.\n * This does not affect disabled attribute of any child.\n */\n disabled?: boolean;\n\n /**\n * Element type the root element will use. Default is \"div\".\n * @deprecated Use 'as' instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elementType?: any /* TODO should be `keyof React.ReactHTML`, tracking with https://github.com/Microsoft/TypeScript/issues/30050 */;\n\n /**\n * A component that should be used as the root element of the FocusZone component.\n */\n as?: React.ElementType;\n\n /**\n * If set, will cycle to the beginning of the targets once the user navigates to the\n * next target while at the end, and to the end when navigate to the previous at the beginning.\n */\n isCircularNavigation?: boolean;\n\n /**\n * If provided, this callback will be executed on keypresses to determine if the user\n * intends to navigate into the inner zone. Returning true will ask the first inner zone to\n * set focus.\n * @deprecated Use `shouldEnterInnerZone` instead.\n */\n isInnerZoneKeystroke?: (ev: React.KeyboardEvent<HTMLElement>) => boolean;\n\n /**\n * Callback function that will be executed on keypresses to determine if the user intends to navigate into\n * the inner (nested) zone. Returning true will ask the first inner zone to set focus.\n */\n shouldEnterInnerZone?: (ev: React.KeyboardEvent<HTMLElement>) => boolean;\n\n /**\n * Sets the aria-labelledby attribute.\n * @deprecated Directly use the `aria-labelledby` attribute instead\n */\n ariaLabelledBy?: string;\n\n /**\n * Sets the aria-describedby attribute.\n * @deprecated Directly use the `aria-describedby` attribute instead\n */\n ariaDescribedBy?: string;\n\n /**\n * Callback for when one of immediate children elements gets active by getting focused\n * or by having one of its respective children elements focused.\n */\n onActiveElementChanged?: (element?: HTMLElement, ev?: React.FocusEvent<HTMLElement>) => void;\n\n /**\n * Deprecated at v1.12.1. DIV props provided to the FocusZone will be mixed into the root element.\n * @deprecated DIV props provided to the FocusZone will be mixed into the root element.\n */\n rootProps?: React.HTMLAttributes<HTMLDivElement>;\n\n /**\n * Callback method for determining if focus should indeed be set on the given element.\n * @param element - The child element within the zone to focus.\n * @returns True if focus should be set to the given element, false to avoid setting focus.\n * @deprecated Use `shouldReceiveFocus` instead.\n */\n onBeforeFocus?: (childElement?: HTMLElement) => boolean;\n\n /**\n * Callback method for determining if focus should indeed be set on the given element.\n * @param element - The child element within the zone to focus.\n * @returns True if focus should be set to the given element, false to avoid setting focus.\n */\n shouldReceiveFocus?: (childElement?: HTMLElement) => boolean;\n\n /** Allows focus to park on root when focus is in the `FocusZone` at render time. */\n allowFocusRoot?: boolean;\n\n /**\n * Allows tab key to be handled to tab through a list of items in the focus zone,\n * an unfortunate side effect is that users will not be able to tab out of the focus zone\n * and have to hit escape or some other key.\n * @deprecated Use `handleTabKey` instead.\n *\n */\n allowTabKey?: boolean;\n\n /**\n * Allows tab key to be handled to tab through a list of items in the focus zone,\n * an unfortunate side effect is that users will not be able to tab out of the focus zone\n * and have to hit escape or some other key.\n */\n handleTabKey?: FocusZoneTabbableElements;\n\n /**\n * If true and FocusZone's root element (container) receives focus, the focus will land either on the\n * defaultTabbableElement (if set) or on the first tabbable element of this FocusZone.\n * Usually a case for nested focus zones, when the nested focus zone's container is a focusable element.\n */\n shouldFocusInnerElementWhenReceivedFocus?: boolean;\n\n /**\n * If true and TAB key is not handled by FocusZone, resets current active element to null value.\n * For example, when roving index is not desirable and focus should always reset to the default tabbable element.\n */\n shouldResetActiveElementWhenTabFromZone?: boolean;\n\n /**\n * Determines whether the FocusZone will walk up the DOM trying to invoke click callbacks on focusable elements on\n * Enter and Space keydowns to ensure accessibility for tags that don't guarantee this behavior.\n * @defaultvalue true\n */\n shouldRaiseClicks?: boolean;\n\n /**\n * A callback method to determine if the input element should lose focus on arrow keys\n * @param inputElement - The input element which is to loose focus.\n * @returns True if input element should loose focus or false otherwise.\n */\n shouldInputLoseFocusOnArrowKey?: (inputElement: HTMLInputElement) => boolean;\n\n /**\n * Determines whether to disable the paging support for Page Up and Page Down keyboard scenarios.\n * @defaultvalue false\n */\n pagingSupportDisabled?: boolean;\n\n /**\n * Determines whether to check for data-no-horizontal-wrap or data-no-vertical-wrap attributes\n * when determining how to move focus\n * @defaultvalue false\n */\n checkForNoWrap?: boolean;\n\n /**\n * Whether the FocusZone should allow focus events to propagate past the FocusZone.\n * @deprecated Use `stopFocusPropagation` instead.\n */\n doNotAllowFocusEventToPropagate?: boolean;\n\n /**\n * Whether the FocusZone should allow focus events to propagate past the FocusZone.\n */\n stopFocusPropagation?: boolean;\n\n /**\n * Callback to notify creators that focus has been set on the FocusZone\n * @deprecated Use `onFocus` instead.\n */\n onFocusNotification?: () => void;\n\n /**\n * Callback called when \"focus\" event triggered in FocusZone.\n * @param event - React's original FocusEvent.\n */\n onFocus?: (event: React.FocusEvent<HTMLElement | FocusZone>) => void;\n\n /**\n * If true, FocusZone prevents the default behavior of Keyboard events when changing focus between elements.\n * @defaultvalue false\n */\n preventDefaultWhenHandled?: boolean;\n\n /**\n * If true, prevents the FocusZone from attempting to restore the focus to the inner element when the focus is on the\n * root element after componentDidUpdate.\n * @defaultvalue false\n */\n preventFocusRestoration?: boolean;\n}\n/**\n * {@docCategory FocusZone}\n */\nexport const FocusZoneTabbableElements = {\n /** Tabbing is not allowed */\n none: 0 as 0,\n\n /** All tabbing action is allowed */\n all: 1 as 1,\n\n /** Tabbing is allowed only on input elements */\n inputOnly: 2 as 2,\n};\n\n/**\n * {@docCategory FocusZone}\n */\nexport type FocusZoneTabbableElements = typeof FocusZoneTabbableElements[keyof typeof FocusZoneTabbableElements];\n\n/**\n * {@docCategory FocusZone}\n */\nexport enum FocusZoneDirection {\n /** Only react to up/down arrows. */\n vertical = 0,\n\n /** Only react to left/right arrows. */\n horizontal = 1,\n\n /** React to all arrows. */\n bidirectional = 2,\n\n /**\n * React to all arrows. Navigate next item in DOM on right/down arrow keys and previous - left/up arrow keys.\n * Right and Left arrow keys are swapped in RTL mode.\n */\n domOrder = 3,\n}\n","import { getParent } from './getParent';\n/**\n * Determines whether or not a parent element contains a given child element.\n * If `allowVirtualParents` is true, this method may return `true` if the child\n * has the parent in its virtual element hierarchy.\n *\n * @public\n */\nexport function elementContains(\n parent: HTMLElement | null,\n child: HTMLElement | null,\n allowVirtualParents: boolean = true,\n): boolean {\n let isContained = false;\n\n if (parent && child) {\n if (allowVirtualParents) {\n if (parent === child) {\n isContained = true;\n } else {\n isContained = false;\n\n while (child) {\n const nextParent: HTMLElement | null = getParent(child);\n\n if (nextParent === parent) {\n isContained = true;\n break;\n }\n\n child = nextParent;\n }\n }\n } else if (parent.contains) {\n isContained = parent.contains(child);\n }\n }\n\n return isContained;\n}\n","import { elementContainsAttribute } from './dom/elementContainsAttribute';\nimport { elementContains } from './dom/elementContains';\nimport { getParent } from './dom/getParent';\nimport { getWindow } from './dom/getWindow';\nimport { getDocument } from './dom/getDocument';\n\nconst IS_FOCUSABLE_ATTRIBUTE = 'data-is-focusable';\nconst IS_VISIBLE_ATTRIBUTE = 'data-is-visible';\nconst FOCUSZONE_ID_ATTRIBUTE = 'data-focuszone-id';\nconst FOCUSZONE_SUB_ATTRIBUTE = 'data-is-sub-focuszone';\n\n/**\n * Gets the first focusable element.\n *\n * @public\n */\nexport function getFirstFocusable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n): HTMLElement | null {\n return getNextElement(\n rootElement,\n currentElement,\n true /*checkNode*/,\n false /*suppressParentTraversal*/,\n false /*suppressChildTraversal*/,\n includeElementsInFocusZones,\n );\n}\n\n/**\n * Gets the last focusable element.\n *\n * @public\n */\nexport function getLastFocusable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n): HTMLElement | null {\n return getPreviousElement(\n rootElement,\n currentElement,\n true /*checkNode*/,\n false /*suppressParentTraversal*/,\n true /*traverseChildren*/,\n includeElementsInFocusZones,\n );\n}\n\n/**\n * Gets the first tabbable element. (The difference between focusable and tabbable is that tabbable elements are\n * focusable elements that also have tabIndex != -1.)\n * @param rootElement - The parent element to search beneath.\n * @param currentElement - The descendant of rootElement to start the search at. This element is the first one checked,\n * and iteration continues forward. Typical use passes rootElement.firstChild.\n * @param includeElementsInFocusZones - true if traversal should go into FocusZone descendants.\n * @param checkNode - Include currentElement in search when true. Defaults to true.\n * @public\n */\nexport function getFirstTabbable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n checkNode: boolean = true,\n): HTMLElement | null {\n return getNextElement(\n rootElement,\n currentElement,\n checkNode,\n false /*suppressParentTraversal*/,\n false /*suppressChildTraversal*/,\n includeElementsInFocusZones,\n false /*allowFocusRoot*/,\n true /*tabbable*/,\n );\n}\n\n/**\n * Gets the last tabbable element. (The difference between focusable and tabbable is that tabbable elements are\n * focusable elements that also have tabIndex != -1.)\n * @param rootElement - The parent element to search beneath.\n * @param currentElement - The descendant of rootElement to start the search at. This element is the first one checked,\n * and iteration continues in reverse. Typical use passes rootElement.lastChild.\n * @param includeElementsInFocusZones - true if traversal should go into FocusZone descendants.\n * @param checkNode - Include currentElement in search when true. Defaults to true.\n * @public\n */\nexport function getLastTabbable(\n rootElement: HTMLElement,\n currentElement: HTMLElement,\n includeElementsInFocusZones?: boolean,\n checkNode: boolean = true,\n): HTMLElement | null {\n return getPreviousElement(\n rootElement,\n currentElement,\n checkNode,\n false /*suppressParentTraversal*/,\n true /*traverseChildren*/,\n includeElementsInFocusZones,\n false /*allowFocusRoot*/,\n true /*tabbable*/,\n );\n}\n\n/**\n * Attempts to focus the first focusable element that is a child or child's child of the rootElement.\n *\n * @public\n * @param rootElement - Element to start the search for a focusable child.\n * @returns True if focus was set, false if it was not.\n */\nexport function focusFirstChild(rootElement: HTMLElement): boolean {\n let element: HTMLElement | null = getNextElement(rootElement, rootElement, true, false, false, true);\n\n if (element) {\n focusAsync(element);\n return true;\n }\n return false;\n}\n\n/**\n * Traverse to find the previous element.\n * If tabbable is true, the element must have tabIndex != -1.\n *\n * @public\n */\nexport function getPreviousElement(\n rootElement: HTMLElement,\n currentElement: HTMLElement | null,\n checkNode?: boolean,\n suppressParentTraversal?: boolean,\n traverseChildren?: boolean,\n includeElementsInFocusZones?: boolean,\n allowFocusRoot?: boolean,\n tabbable?: boolean,\n): HTMLElement | null {\n if (!currentElement || (!allowFocusRoot && currentElement === rootElement)) {\n return null;\n }\n\n let isCurrentElementVisible = isElementVisible(currentElement);\n\n // Check its children.\n if (\n traverseChildren &&\n isCurrentElementVisible &&\n (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))\n ) {\n const childMatch = getPreviousElement(\n rootElement,\n currentElement.lastElementChild as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (childMatch) {\n if ((tabbable && isElementTabbable(childMatch, true)) || !tabbable) {\n return childMatch;\n }\n\n const childMatchSiblingMatch = getPreviousElement(\n rootElement,\n childMatch.previousElementSibling as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n if (childMatchSiblingMatch) {\n return childMatchSiblingMatch;\n }\n\n let childMatchParent = childMatch.parentElement;\n\n // At this point if we have not found any potential matches\n // start looking at the rest of the subtree under the currentParent.\n // NOTE: We do not want to recurse here because doing so could\n // cause elements to get skipped.\n while (childMatchParent && childMatchParent !== currentElement) {\n const childMatchParentMatch = getPreviousElement(\n rootElement,\n childMatchParent.previousElementSibling as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (childMatchParentMatch) {\n return childMatchParentMatch;\n }\n\n childMatchParent = childMatchParent.parentElement;\n }\n }\n }\n\n // Check the current node, if it's not the first traversal.\n if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable)) {\n return currentElement;\n }\n\n // Check its previous sibling.\n const siblingMatch = getPreviousElement(\n rootElement,\n currentElement.previousElementSibling as HTMLElement,\n true,\n true,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (siblingMatch) {\n return siblingMatch;\n }\n\n // Check its parent.\n if (!suppressParentTraversal) {\n return getPreviousElement(\n rootElement,\n currentElement.parentElement,\n true,\n false,\n false,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n }\n\n return null;\n}\n\n/**\n * Traverse to find the next focusable element.\n * If tabbable is true, the element must have tabIndex != -1.\n *\n * @public\n * @param checkNode - Include currentElement in search when true.\n */\nexport function getNextElement(\n rootElement: HTMLElement,\n currentElement: HTMLElement | null,\n checkNode?: boolean,\n suppressParentTraversal?: boolean,\n suppressChildTraversal?: boolean,\n includeElementsInFocusZones?: boolean,\n allowFocusRoot?: boolean,\n tabbable?: boolean,\n): HTMLElement | null {\n if (!currentElement || (currentElement === rootElement && suppressChildTraversal && !allowFocusRoot)) {\n return null;\n }\n\n let isCurrentElementVisible = isElementVisible(currentElement);\n\n // Check the current node, if it's not the first traversal.\n if (checkNode && isCurrentElementVisible && isElementTabbable(currentElement, tabbable)) {\n return currentElement;\n }\n\n // Check its children.\n if (\n !suppressChildTraversal &&\n isCurrentElementVisible &&\n (includeElementsInFocusZones || !(isElementFocusZone(currentElement) || isElementFocusSubZone(currentElement)))\n ) {\n const childMatch = getNextElement(\n rootElement,\n currentElement.firstElementChild as HTMLElement,\n true,\n true,\n false,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (childMatch) {\n return childMatch;\n }\n }\n\n if (currentElement === rootElement) {\n return null;\n }\n\n // Check its sibling.\n const siblingMatch = getNextElement(\n rootElement,\n currentElement.nextElementSibling as HTMLElement,\n true,\n true,\n false,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n\n if (siblingMatch) {\n return siblingMatch;\n }\n\n if (!suppressParentTraversal) {\n return getNextElement(\n rootElement,\n currentElement.parentElement,\n false,\n false,\n true,\n includeElementsInFocusZones,\n allowFocusRoot,\n tabbable,\n );\n }\n\n return null;\n}\n\n/**\n * Determines if an element is visible.\n *\n * @public\n */\nexport function isElementVisible(element: HTMLElement | undefined | null): boolean {\n // If the element is not valid, return false.\n if (!element || !element.getAttribute) {\n return false;\n }\n\n const visibilityAttribute = element.getAttribute(IS_VISIBLE_ATTRIBUTE);\n\n // If the element is explicitly marked with the visibility attribute, return that value as boolean.\n if (visibilityAttribute !== null && visibilityAttribute !== undefined) {\n return visibilityAttribute === 'true';\n }\n\n // Fallback to other methods of determining actual visibility.\n return (\n element.offsetHeight !== 0 ||\n element.offsetParent !== null ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (element as any).isVisible === true\n ); // used as a workaround for testing.\n}\n\n/**\n * Determines if an element can receive focus programmatically or via a mouse click.\n * If checkTabIndex is true, additionally checks to ensure the element can be focused with the tab key,\n * meaning tabIndex != -1.\n *\n * @public\n */\nexport function isElementTabbable(element: HTMLElement, checkTabIndex?: boolean): boolean {\n // If this element is null or is disabled, it is not considered tabbable.\n if (!element || (element as HTMLButtonElement).disabled) {\n return false;\n }\n\n let tabIndex = 0;\n let tabIndexAttributeValue = null;\n\n if (element && element.getAttribute) {\n tabIndexAttributeValue = element.getAttribute('tabIndex');\n\n if (tabIndexAttributeValue) {\n tabIndex = parseInt(tabIndexAttributeValue, 10);\n }\n }\n\n let isFocusableAttribute = element.getAttribute ? element.getAttribute(IS_FOCUSABLE_ATTRIBUTE) : null;\n let isTabIndexSet = tabIndexAttributeValue !== null && tabIndex >= 0;\n\n const result =\n !!element &&\n isFocusableAttribute !== 'false' &&\n (element.tagName === 'A' ||\n element.tagName === 'BUTTON' ||\n element.tagName === 'INPUT' ||\n element.tagName === 'TEXTAREA' ||\n element.tagName === 'SELECT' ||\n isFocusableAttribute === 'true' ||\n isTabIndexSet);\n\n return checkTabIndex ? tabIndex !== -1 && result : result;\n}\n\n/**\n * Determines if a given element is a focus zone.\n *\n * @public\n */\nexport function isElementFocusZone(element?: HTMLElement): boolean {\n return !!(element && element.getAttribute && !!element.getAttribute(FOCUSZONE_ID_ATTRIBUTE));\n}\n\n/**\n * Determines if a given element is a focus sub zone.\n *\n * @public\n */\nexport function isElementFocusSubZone(element?: HTMLElement): boolean {\n return !!(element && element.getAttribute && element.getAttribute(FOCUSZONE_SUB_ATTRIBUTE) === 'true');\n}\n\n/**\n * Determines if an element, or any of its children, contain focus.\n *\n * @public\n */\nexport function doesElementContainFocus(element: HTMLElement): boolean {\n let document = getDocument(element);\n let currentActiveElement: HTMLElement | undefined = document && (document.activeElement as HTMLElement);\n if (currentActiveElement && elementContains(element, currentActiveElement)) {\n return true;\n }\n return false;\n}\n\n/**\n * Determines if an, or any of its ancestors, sepcificies that it doesn't want focus to wrap\n * @param element - element to start searching from\n * @param noWrapDataAttribute - the no wrap data attribute to match (either)\n * @returns true if focus should wrap, false otherwise\n */\nexport function shouldWrapFocus(\n element: HTMLElement,\n noWrapDataAttribute: 'data-no-vertical-wrap' | 'data-no-horizontal-wrap',\n): boolean {\n return elementContainsAttribute(element, noWrapDataAttribute) === 'true' ? false : true;\n}\n\nlet targetToFocusOnNextRepaint: HTMLElement | { focus: () => void } | null | undefined = undefined;\n\n/**\n * Sets focus to an element asynchronously. The focus will be set at the next browser repaint,\n * meaning it won't cause any extra recalculations. If more than one focusAsync is called during one frame,\n * only the latest called focusAsync element will actually be focused\n * @param element - The element to focus\n */\nexport function focusAsync(element: HTMLElement | { focus: () => void } | undefined | null): void {\n if (element) {\n // An element was already queued to be focused, so replace that one with the new element\n if (targetToFocusOnNextRepaint) {\n targetToFocusOnNextRepaint = element;\n return;\n }\n\n targetToFocusOnNextRepaint = element;\n\n const win = getWindow(element as Element);\n\n if (win) {\n // element.focus() is a no-op if the element is no longer in the DOM, meaning this is always safe\n win.requestAnimationFrame(() => {\n const focusableElement = targetToFocusOnNextRepaint as HTMLElement | null;\n\n // We are done focusing for this frame, so reset the queued focus element\n targetToFocusOnNextRepaint = undefined;\n\n if (focusableElement) {\n if (focusableElement.getAttribute && focusableElement.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true') {\n // Normally, a FocusZone would be responsible for setting the tabindex values on all its descendants.\n // However, even this animation frame callback can pre-empt the rendering of a FocusZone's child elements,\n // so it may be necessary to set the tabindex directly here.\n if (!focusableElement.getAttribute('tabindex')) {\n focusableElement.setAttribute('tabindex', '0');\n }\n }\n\n focusableElement.focus();\n }\n });\n }\n }\n}\n\n/**\n * Finds the closest focusable element via an index path from a parent. See\n * `getElementIndexPath` for getting an index path from an element to a child.\n */\nexport function getFocusableByIndexPath(parent: HTMLElement, path: number[]): HTMLElement | undefined {\n let element = parent;\n\n for (const index of path) {\n const nextChild = element.children[Math.min(index, element.children.length - 1)] as HTMLElement;\n\n if (!nextChild) {\n break;\n }\n element = nextChild;\n }\n\n element =\n isElementTabbable(element) && isElementVisible(element)\n ? element\n : getNextElement(parent, element, true) || getPreviousElement(parent, element)!;\n\n return element as HTMLElement;\n}\n\n/**\n * Finds the element index path from a parent element to a child element.\n *\n * If you had this node structure: \"A has children [B, C] and C has child D\",\n * the index path from A to D would be [1, 0], or `parent.chidren[1].children[0]`.\n */\nexport function getElementIndexPath(fromElement: HTMLElement, toElement: HTMLElement): number[] {\n const path: number[] = [];\n\n while (toElement && fromElement && toElement !== fromElement) {\n const parent = getParent(toElement, true);\n\n if (parent === null) {\n return [];\n }\n\n path.unshift(Array.prototype.indexOf.call(parent.children, toElement));\n toElement = parent;\n }\n\n return path;\n}\n","import { findElementRecursive } from './findElementRecursive';\n\n/**\n * Determines if an element, or any of its ancestors, contain the given attribute\n * @param element - element to start searching at\n * @param attribute - the attribute to search for\n * @returns the value of the first instance found\n */\nexport function elementContainsAttribute(element: HTMLElement, attribute: string): string | null {\n const elementMatch = findElementRecursive(element, (testElement: HTMLElement) => testElement.hasAttribute(attribute));\n\n return elementMatch && elementMatch.getAttribute(attribute);\n}\n","import { getDocument } from './dom/getDocument';\nimport { mergeStyles } from '@uifabric/merge-styles';\nimport { EventGroup } from './EventGroup';\nimport { getWindow } from './dom/getWindow';\n\nlet _scrollbarWidth: number;\nlet _bodyScrollDisabledCount = 0;\n\nconst DisabledScrollClassName = mergeStyles({\n overflow: 'hidden !important' as 'hidden',\n});\n\n/**\n * Placing this attribute on scrollable divs optimizes detection to know\n * if the div is scrollable or not (given we can avoid expensive operations\n * like getComputedStyle.)\n *\n * @public\n */\nexport const DATA_IS_SCROLLABLE_ATTRIBUTE = 'data-is-scrollable';\n\n/**\n * Allows the user to scroll within a element,\n * while preventing the user from scrolling the body\n */\nexport const allowScrollOnElement = (element: HTMLElement | null, events: EventGroup): void => {\n if (!element) {\n return;\n }\n\n let _previousClientY = 0;\n let _element: Element | null = null;\n\n // remember the clientY for future calls of _preventOverscrolling\n const _saveClientY = (event: TouchEvent): void => {\n if (event.targetTouches.length === 1) {\n _previousClientY = event.targetTouches[0].clientY;\n }\n };\n\n // prevent the body from scrolling when the user attempts\n // to scroll past the top or bottom of the element\n const _preventOverscrolling = (event: TouchEvent): void => {\n // only respond to a single-finger touch\n if (event.targetTouches.length !== 1) {\n return;\n }\n\n // prevent the body touchmove handler from firing\n // so that scrolling is allowed within the element\n event.stopPropagation();\n\n if (!_element) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY - _previousClientY;\n\n const scrollableParent = findScrollableParent(event.target as HTMLElement) as HTMLElement;\n if (scrollableParent) {\n _element = scrollableParent;\n }\n\n // if the element is scrolled to the top,\n // prevent the user from scrolling up\n if (_element.scrollTop === 0 && clientY > 0) {\n event.preventDefault();\n }\n\n // if the element is scrolled to the bottom,\n // prevent the user from scrolling down\n if (_element.scrollHeight - Math.ceil(_element.scrollTop) <= _element.clientHeight && clientY < 0) {\n event.preventDefault();\n }\n };\n\n events.on(element, 'touchstart', _saveClientY, { passive: false });\n events.on(element, 'touchmove', _preventOverscrolling, { passive: false });\n\n _element = element;\n};\n\n/**\n * Same as allowScrollOnElement but does not prevent overscrolling.\n */\nexport const allowOverscrollOnElement = (element: HTMLElement | null, events: EventGroup): void => {\n if (!element) {\n return;\n }\n const _allowElementScroll = (event: TouchEvent) => {\n event.stopPropagation();\n };\n events.on(element, 'touchmove', _allowElementScroll, { passive: false });\n};\n\nconst _disableIosBodyScroll = (event: TouchEvent) => {\n event.preventDefault();\n};\n\n/**\n * Disables the body scrolling.\n *\n * @public\n */\nexport function disableBodyScroll(): void {\n let doc = getDocument();\n\n if (doc && doc.body && !_bodyScrollDisabledCount) {\n doc.body.classList.add(DisabledScrollClassName);\n doc.body.addEventListener('touchmove', _disableIosBodyScroll, { passive: false, capture: false });\n }\n\n _bodyScrollDisabledCount++;\n}\n\n/**\n * Enables the body scrolling.\n *\n * @public\n */\nexport function enableBodyScroll(): void {\n if (_bodyScrollDisabledCount > 0) {\n let doc = getDocument();\n\n if (doc && doc.body && _bodyScrollDisabledCount === 1) {\n doc.body.classList.remove(DisabledScrollClassName);\n doc.body.removeEventListener('touchmove', _disableIosBodyScroll);\n }\n\n _bodyScrollDisabledCount--;\n }\n}\n\n/**\n * Calculates the width of a scrollbar for the browser/os.\n *\n * @public\n */\nexport function getScrollbarWidth(): number {\n if (_scrollbarWidth === undefined) {\n let scrollDiv: HTMLElement = document.createElement('div');\n scrollDiv.style.setProperty('width', '100px');\n scrollDiv.style.setProperty('height', '100px');\n scrollDiv.style.setProperty('overflow', 'scroll');\n scrollDiv.style.setProperty('position', 'absolute');\n scrollDiv.style.setProperty('top', '-9999px');\n document.body.appendChild(scrollDiv);\n // Get the scrollbar width\n _scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\n // Delete the DIV\n document.body.removeChild(scrollDiv);\n }\n\n return _scrollbarWidth;\n}\n\n/**\n * Traverses up the DOM for the element with the data-is-scrollable=true attribute, or returns\n * document.body.\n *\n * @public\n */\nexport function findScrollableParent(startingElement: HTMLElement | null): HTMLElement | Window | undefined | null {\n let el: HTMLElement | Window | undefined | null = startingElement;\n const doc = getDocument(startingElement)!;\n\n // First do a quick scan for the scrollable attribute.\n while (el && el !== doc.body) {\n if (el.getAttribute(DATA_IS_SCROLLABLE_ATTRIBUTE) === 'true') {\n return el;\n }\n el = el.parentElement;\n }\n\n // If we haven't found it, the use the slower method: compute styles to evaluate if overflow is set.\n el = startingElement;\n\n while (el && el !== doc.body) {\n if (el.getAttribute(DATA_IS_SCROLLABLE_ATTRIBUTE) !== 'false') {\n const computedStyles = getComputedStyle(el);\n let overflowY = computedStyles ? computedStyles.getPropertyValue('overflow-y') : '';\n\n if (overflowY && (overflowY === 'scroll' || overflowY === 'auto')) {\n return el;\n }\n }\n\n el = el.parentElement;\n }\n\n // Fall back to window scroll.\n if (!el || el === doc.body) {\n el = getWindow(startingElement);\n }\n\n return el;\n}\n","import * as React from 'react';\nimport { mergeStyles } from '@uifabric/merge-styles';\nimport { getTheme, ITheme } from '@uifabric/styling';\nimport {\n KeyCodes,\n css,\n elementContains,\n getDocument,\n getElementIndexPath,\n getFocusableByIndexPath,\n getId,\n getNativeProps,\n getNextElement,\n getParent,\n getPreviousElement,\n getRTL,\n htmlElementProperties,\n initializeComponentRef,\n isElementFocusSubZone,\n isElementFocusZone,\n isElementTabbable,\n shouldWrapFocus,\n warnDeprecations,\n portalContainsElement,\n Point,\n getWindow,\n findScrollableParent,\n createMergedRef,\n} from '@uifabric/utilities';\nimport { FocusZoneDirection, FocusZoneTabbableElements, IFocusZone, IFocusZoneProps } from './FocusZone.types';\n\nconst IS_FOCUSABLE_ATTRIBUTE = 'data-is-focusable';\nconst IS_ENTER_DISABLED_ATTRIBUTE = 'data-disable-click-on-enter';\nconst FOCUSZONE_ID_ATTRIBUTE = 'data-focuszone-id';\nconst TABINDEX = 'tabindex';\nconst NO_VERTICAL_WRAP = 'data-no-vertical-wrap';\nconst NO_HORIZONTAL_WRAP = 'data-no-horizontal-wrap';\nconst LARGE_DISTANCE_FROM_CENTER = 999999999;\nconst LARGE_NEGATIVE_DISTANCE_FROM_CENTER = -999999999;\n\nlet focusZoneStyles: string;\n\nconst focusZoneClass: string = 'ms-FocusZone';\n\n/**\n * Raises a click on a target element based on a keyboard event.\n */\nfunction raiseClickFromKeyboardEvent(target: Element, ev?: React.KeyboardEvent<HTMLElement>): void {\n let event;\n if (typeof MouseEvent === 'function') {\n event = new MouseEvent('click', {\n ctrlKey: ev?.ctrlKey,\n metaKey: ev?.metaKey,\n shiftKey: ev?.shiftKey,\n altKey: ev?.altKey,\n bubbles: ev?.bubbles,\n cancelable: ev?.cancelable,\n });\n } else {\n event = document.createEvent('MouseEvents');\n event.initMouseEvent(\n 'click',\n ev ? ev.bubbles : false,\n ev ? ev.cancelable : false,\n window, // not using getWindow() since this can only be run client side\n 0, // detail\n 0, // screen x\n 0, // screen y\n 0, // client x\n 0, // client y\n ev ? ev.ctrlKey : false,\n ev ? ev.altKey : false,\n ev ? ev.shiftKey : false,\n ev ? ev.metaKey : false,\n 0, // button\n null, // relatedTarget\n );\n }\n\n target.dispatchEvent(event);\n}\n\n// Helper function that will return a class for when the root is focused\nfunction getRootClass(): string {\n if (!focusZoneStyles) {\n focusZoneStyles = mergeStyles(\n {\n selectors: {\n ':focus': {\n outline: 'none',\n },\n },\n },\n focusZoneClass,\n );\n }\n return focusZoneStyles;\n}\n\nconst _allInstances: {\n [key: string]: FocusZone;\n} = {};\nconst _outerZones: Set<FocusZone> = new Set();\n\nconst ALLOWED_INPUT_TYPES = ['text', 'number', 'password', 'email', 'tel', 'url', 'search'];\n\nconst ALLOW_VIRTUAL_ELEMENTS = false;\n\nexport class FocusZone extends React.Component<IFocusZoneProps> implements IFocusZone {\n public static defaultProps: IFocusZoneProps = {\n isCircularNavigation: false,\n direction: FocusZoneDirection.bidirectional,\n shouldRaiseClicks: true,\n };\n\n private _root: React.RefObject<HTMLElement> = React.createRef();\n private _mergedRef = createMergedRef<HTMLElement>();\n\n private _id: string;\n\n /** The most recently focused child element. */\n private _activeElement: HTMLElement | null;\n\n /**\n * The index path to the last focused child element.\n */\n private _lastIndexPath: number[] | undefined;\n\n /**\n * Flag to define when we've intentionally parked focus on the root element to temporarily\n * hold focus until items appear within the zone.\n */\n private _isParked: boolean;\n\n /** The child element with tabindex=0. */\n private _defaultFocusElement: HTMLElement | null;\n private _focusAlignment: Point;\n private _isInnerZone: boolean;\n private _parkedTabIndex: string | null | undefined;\n\n /** Used to allow moving to next focusable element even when we're focusing on a input element when pressing tab */\n private _processingTabKey: boolean;\n\n private _windowElement: Window | undefined;\n\n /** Used for testing purposes only. */\n public static getOuterZones(): number {\n return _outerZones.size;\n }\n\n /**\n * Handle global tab presses so that we can patch tabindexes on the fly.\n * HEADS UP: This must not be an arrow function in order to be referentially equal among instances\n * for ref counting to work correctly!\n */\n private static _onKeyDownCapture(ev: KeyboardEvent): void {\n // eslint-disable-next-line deprecation/deprecation, @fluentui/deprecated-keyboard-event-props\n if (ev.which === KeyCodes.tab) {\n _outerZones.forEach((zone: FocusZone) => zone._updateTabIndexes());\n }\n }\n\n constructor(props: IFocusZoneProps) {\n super(props);\n // Manage componentRef resolution.\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('FocusZone', props, {\n rootProps: undefined,\n allowTabKey: 'handleTabKey',\n elementType: 'as',\n ariaDescribedBy: 'aria-describedby',\n ariaLabelledBy: 'aria-labelledby',\n });\n }\n\n this._id = getId('FocusZone');\n\n this._focusAlignment = {\n left: 0,\n top: 0,\n };\n\n this._processingTabKey = false;\n }\n\n public componentDidMount(): void {\n const { current: root } = this._root;\n\n _allInstances[this._id] = this;\n\n if (root) {\n this._windowElement = getWindow(root);\n let parentElement = getParent(root, ALLOW_VIRTUAL_ELEMENTS);\n\n while (parentElement && parentElement !== this._getDocument().body && parentElement.nodeType === 1) {\n if (isElementFocusZone(parentElement)) {\n this._isInnerZone = true;\n break;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n\n if (!this._isInnerZone) {\n _outerZones.add(this);\n\n if (this._windowElement && _outerZones.size === 1) {\n this._windowElement.addEventListener('keydown', FocusZone._onKeyDownCapture, true);\n }\n }\n\n this._root.current && this._root.current.addEventListener('blur', this._onBlur, true);\n\n // Assign initial tab indexes so that we can set initial focus as appropriate.\n this._updateTabIndexes();\n\n if (this.props.defaultTabbableElement && typeof this.props.defaultTabbableElement === 'string') {\n this._activeElement = this._getDocument().querySelector(this.props.defaultTabbableElement) as HTMLElement;\n // eslint-disable-next-line deprecation/deprecation\n } else if (this.props.defaultActiveElement) {\n // eslint-disable-next-line deprecation/deprecation\n this._activeElement = this._getDocument().querySelector(this.props.defaultActiveElement) as HTMLElement;\n }\n\n if (this.props.shouldFocusOnMount) {\n this.focus();\n }\n }\n }\n\n public componentDidUpdate(): void {\n const { current: root } = this._root;\n const doc = this._getDocument();\n\n if (\n doc &&\n this._lastIndexPath &&\n (doc.activeElement === doc.body ||\n doc.activeElement === null ||\n (!this.props.preventFocusRestoration && doc.activeElement === root))\n ) {\n // The element has been removed after the render, attempt to restore focus.\n const elementToFocus = getFocusableByIndexPath(root as HTMLElement, this._lastIndexPath);\n\n if (elementToFocus) {\n this._setActiveElement(elementToFocus, true);\n elementToFocus.focus();\n this._setParkedFocus(false);\n } else {\n // We had a focus path to restore, but now that path is unresolvable. Park focus\n // on the container until we can try again.\n this._setParkedFocus(true);\n }\n }\n }\n\n public componentWillUnmount(): void {\n delete _allInstances[this._id];\n\n if (!this._isInnerZone) {\n _outerZones.delete(this);\n\n // If this is the last outer zone, remove the keydown listener.\n if (this._windowElement && _outerZones.size === 0) {\n this._windowElement.removeEventListener('keydown', FocusZone._onKeyDownCapture, true);\n }\n }\n\n if (this._root.current) {\n this._root.current.removeEventListener('blur', this._onBlur, true);\n }\n\n this._activeElement = null;\n this._defaultFocusElement = null;\n }\n\n public render(): React.ReactNode {\n // eslint-disable-next-line deprecation/deprecation\n const { as: tag, elementType, rootProps, ariaDescribedBy, ariaLabelledBy, className } = this.props;\n const divProps = getNativeProps(this.props, htmlElementProperties);\n\n const Tag = tag || elementType || 'div';\n\n // Note, right before rendering/reconciling proceeds, we need to record if focus\n // was in the zone before the update. This helper will track this and, if focus\n // was actually in the zone, what the index path to the element is at this time.\n // Then, later in componentDidUpdate, we can evaluate if we need to restore it in\n // the case the element was removed.\n this._evaluateFocusBeforeRender();\n\n // Only support RTL defined in global theme, not contextual theme/RTL.\n const theme: ITheme = getTheme();\n\n return (\n <Tag\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n {...divProps}\n {\n // root props has been deprecated and should get removed.\n // it needs to be marked as \"any\" since root props expects a div element, but really Tag can\n // be any native element so typescript rightly flags this as a problem.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(rootProps as any)\n }\n // Once the getClassName correctly memoizes inputs this should\n // be replaced so that className is passed to getRootClass and is included there so\n // the class names will always be in the same order.\n className={css(getRootClass(), className)}\n // eslint-disable-next-line deprecation/deprecation\n ref={this._mergedRef(this.props.elementRef, this._root)}\n data-focuszone-id={this._id}\n // eslint-disable-next-line react/jsx-no-bind\n onKeyDown={(ev: React.KeyboardEvent<HTMLElement>) => this._onKeyDown(ev, theme)}\n onFocus={this._onFocus}\n onMouseDownCapture={this._onMouseDown}\n >\n {this.props.children}\n </Tag>\n );\n }\n\n /**\n * Sets focus to the first tabbable item in the zone.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element, even\n * if focus is already in the focus zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focus(forceIntoFirstElement: boolean = false): boolean {\n if (this._root.current) {\n if (\n !forceIntoFirstElement &&\n this._root.current.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true' &&\n this._isInnerZone\n ) {\n const ownerZoneElement = this._getOwnerZone(this._root.current) as HTMLElement;\n\n if (ownerZoneElement !== this._root.current) {\n const ownerZone = _allInstances[ownerZoneElement.getAttribute(FOCUSZONE_ID_ATTRIBUTE) as string];\n\n return !!ownerZone && ownerZone.focusElement(this._root.current);\n }\n\n return false;\n } else if (\n !forceIntoFirstElement &&\n this._activeElement &&\n elementContains(this._root.current, this._activeElement) &&\n isElementTabbable(this._activeElement)\n ) {\n this._activeElement.focus();\n return true;\n } else {\n const firstChild = this._root.current.firstChild as HTMLElement;\n\n return this.focusElement(getNextElement(this._root.current, firstChild, true) as HTMLElement);\n }\n }\n return false;\n }\n\n /**\n * Sets focus to the last tabbable item in the zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focusLast(): boolean {\n if (this._root.current) {\n const lastChild = this._root.current && (this._root.current.lastChild as HTMLElement | null);\n\n return this.focusElement(getPreviousElement(this._root.current, lastChild, true, true, true) as HTMLElement);\n }\n\n return false;\n }\n\n /**\n * Sets focus to a specific child element within the zone. This can be used in conjunction with\n * shouldReceiveFocus to create delayed focus scenarios (like animate the scroll position to the correct\n * location and then focus.)\n * @param element - The child element within the zone to focus.\n * @param forceAlignment - If true, focus alignment will be set according to the element provided.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n public focusElement(element: HTMLElement, forceAlignment?: boolean): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const { onBeforeFocus, shouldReceiveFocus } = this.props;\n\n if ((shouldReceiveFocus && !shouldReceiveFocus(element)) || (onBeforeFocus && !onBeforeFocus(element))) {\n return false;\n }\n\n if (element) {\n // when we set focus to a specific child, we should recalculate the alignment depending on its position.\n this._setActiveElement(element, forceAlignment);\n if (this._activeElement) {\n this._activeElement.focus();\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Forces horizontal alignment in the context of vertical arrowing to use specific point as the reference,\n * rather than a center based on the last horizontal motion.\n * @param point - the new reference point.\n */\n public setFocusAlignment(point: Point): void {\n this._focusAlignment = point;\n }\n\n private _evaluateFocusBeforeRender(): void {\n const { current: root } = this._root;\n\n const doc = this._getDocument();\n if (doc) {\n const focusedElement = doc.activeElement as HTMLElement;\n\n // Only update the index path if we are not parked on the root.\n if (focusedElement !== root) {\n const shouldRestoreFocus = elementContains(root, focusedElement, false);\n this._lastIndexPath = shouldRestoreFocus ? getElementIndexPath(root as HTMLElement, focusedElement) : undefined;\n }\n }\n }\n\n private _onFocus = (ev: React.FocusEvent<HTMLElement>): void => {\n if (this._portalContainsElement(ev.target as HTMLElement)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n\n const {\n onActiveElementChanged,\n // eslint-disable-next-line deprecation/deprecation\n doNotAllowFocusEventToPropagate,\n stopFocusPropagation,\n // eslint-disable-next-line deprecation/deprecation\n onFocusNotification,\n onFocus,\n shouldFocusInnerElementWhenReceivedFocus,\n defaultTabbableElement,\n } = this.props;\n const isImmediateDescendant = this._isImmediateDescendantOfZone(ev.target as HTMLElement);\n let newActiveElement: HTMLElement | null | undefined;\n\n if (isImmediateDescendant) {\n newActiveElement = ev.target as HTMLElement;\n } else {\n let parentElement = ev.target as HTMLElement;\n\n while (parentElement && parentElement !== this._root.current) {\n if (isElementTabbable(parentElement) && this._isImmediateDescendantOfZone(parentElement)) {\n newActiveElement = parentElement;\n break;\n }\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS) as HTMLElement;\n }\n }\n\n // If an inner focusable element should be focused when FocusZone container receives focus\n if (shouldFocusInnerElementWhenReceivedFocus && ev.target === this._root.current) {\n const maybeElementToFocus =\n defaultTabbableElement &&\n typeof defaultTabbableElement === 'function' &&\n defaultTabbableElement(this._root.current);\n\n // try to focus defaultTabbable element\n if (maybeElementToFocus && isElementTabbable(maybeElementToFocus)) {\n newActiveElement = maybeElementToFocus;\n maybeElementToFocus.focus();\n } else {\n // force focus on first focusable element\n this.focus(true);\n if (this._activeElement) {\n // set to null as new active element was handled in method above\n newActiveElement = null;\n }\n }\n }\n\n const initialElementFocused = !this._activeElement;\n\n // If the new active element is a child of this zone and received focus,\n // update alignment an immediate descendant\n if (newActiveElement && newActiveElement !== this._activeElement) {\n if (isImmediateDescendant || initialElementFocused) {\n this._setFocusAlignment(newActiveElement, true, true);\n }\n\n this._activeElement = newActiveElement;\n\n if (initialElementFocused) {\n this._updateTabIndexes();\n }\n }\n\n if (onActiveElementChanged) {\n onActiveElementChanged(this._activeElement as HTMLElement, ev);\n }\n\n if (stopFocusPropagation || doNotAllowFocusEventToPropagate) {\n ev.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(ev);\n } else if (onFocusNotification) {\n onFocusNotification();\n }\n };\n\n /**\n * When focus is in the zone at render time but then all focusable elements are removed,\n * we \"park\" focus temporarily on the root. Once we update with focusable children, we restore\n * focus to the closest path from previous. If the user tabs away from the parked container,\n * we restore focusability to the pre-parked state.\n */\n private _setParkedFocus(isParked: boolean): void {\n const { current: root } = this._root;\n\n if (root && this._isParked !== isParked) {\n this._isParked = isParked;\n\n if (isParked) {\n if (!this.props.allowFocusRoot) {\n this._parkedTabIndex = root.getAttribute('tabindex');\n root.setAttribute('tabindex', '-1');\n }\n root.focus();\n } else if (!this.props.allowFocusRoot) {\n if (this._parkedTabIndex) {\n root.setAttribute('tabindex', this._parkedTabIndex);\n this._parkedTabIndex = undefined;\n } else {\n root.removeAttribute('tabindex');\n }\n }\n }\n }\n\n private _onBlur = (): void => {\n this._setParkedFocus(false);\n };\n\n private _onMouseDown = (ev: React.MouseEvent<HTMLElement>): void => {\n if (this._portalContainsElement(ev.target as HTMLElement)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n\n const { disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n let target = ev.target as HTMLElement;\n const path = [];\n\n while (target && target !== this._root.current) {\n path.push(target);\n target = getParent(target, ALLOW_VIRTUAL_ELEMENTS) as HTMLElement;\n }\n\n while (path.length) {\n target = path.pop() as HTMLElement;\n\n if (target && isElementTabbable(target)) {\n this._setActiveElement(target, true);\n }\n\n if (isElementFocusZone(target)) {\n // Stop here since the focus zone will take care of its own children.\n break;\n }\n }\n };\n\n private _setActiveElement(element: HTMLElement, forceAlignment?: boolean): void {\n const previousActiveElement = this._activeElement;\n\n this._activeElement = element;\n\n if (previousActiveElement) {\n if (isElementFocusZone(previousActiveElement)) {\n this._updateTabIndexes(previousActiveElement);\n }\n\n previousActiveElement.tabIndex = -1;\n }\n\n if (this._activeElement) {\n if (!this._focusAlignment || forceAlignment) {\n this._setFocusAlignment(element, true, true);\n }\n\n this._activeElement.tabIndex = 0;\n }\n }\n\n private _preventDefaultWhenHandled(ev: React.KeyboardEvent<HTMLElement>): void {\n this.props.preventDefaultWhenHandled && ev.preventDefault();\n }\n\n /**\n * Handle the keystrokes.\n */\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>, theme: ITheme): boolean | undefined => {\n if (this._portalContainsElement(ev.target as HTMLElement)) {\n // If the event target is inside a portal do not process the event.\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const { direction, disabled, isInnerZoneKeystroke, pagingSupportDisabled, shouldEnterInnerZone } = this.props;\n\n if (disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n }\n\n // If the default has been prevented, do not process keyboard events.\n if (ev.isDefaultPrevented()) {\n return;\n }\n\n if (this._getDocument().activeElement === this._root.current && this._isInnerZone) {\n // If this element has focus, it is being controlled by a parent.\n // Ignore the keystroke.\n return;\n }\n\n if (\n ((shouldEnterInnerZone && shouldEnterInnerZone(ev)) || (isInnerZoneKeystroke && isInnerZoneKeystroke(ev))) &&\n this._isImmediateDescendantOfZone(ev.target as HTMLElement)\n ) {\n // Try to focus\n const innerZone = this._getFirstInnerZone();\n\n if (innerZone) {\n if (!innerZone.focus(true)) {\n return;\n }\n } else if (isElementFocusSubZone(ev.target as HTMLElement)) {\n if (\n !this.focusElement(\n getNextElement(\n ev.target as HTMLElement,\n (ev.target as HTMLElement).firstChild as HTMLElement,\n true,\n ) as HTMLElement,\n )\n ) {\n return;\n }\n } else {\n return;\n }\n } else if (ev.altKey) {\n return;\n } else {\n // eslint-disable-next-line @fluentui/deprecated-keyboard-event-props\n switch (ev.which) {\n case KeyCodes.space:\n if (this._tryInvokeClickForFocusable(ev.target as HTMLElement, ev)) {\n break;\n }\n return;\n\n case KeyCodes.left:\n if (direction !== FocusZoneDirection.vertical) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusLeft(theme)) {\n break;\n }\n }\n return;\n\n case KeyCodes.right:\n if (direction !== FocusZoneDirection.vertical) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusRight(theme)) {\n break;\n }\n }\n return;\n\n case KeyCodes.up:\n if (direction !== FocusZoneDirection.horizontal) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusUp()) {\n break;\n }\n }\n return;\n\n case KeyCodes.down:\n if (direction !== FocusZoneDirection.horizontal) {\n this._preventDefaultWhenHandled(ev);\n if (this._moveFocusDown()) {\n break;\n }\n }\n return;\n case KeyCodes.pageDown:\n if (!pagingSupportDisabled && this._moveFocusPaging(true)) {\n break;\n }\n return;\n case KeyCodes.pageUp:\n if (!pagingSupportDisabled && this._moveFocusPaging(false)) {\n break;\n }\n return;\n\n case KeyCodes.tab:\n if (\n // eslint-disable-next-line deprecation/deprecation\n this.props.allowTabKey ||\n this.props.handleTabKey === FocusZoneTabbableElements.all ||\n (this.props.handleTabKey === FocusZoneTabbableElements.inputOnly &&\n this._isElementInput(ev.target as HTMLElement))\n ) {\n let focusChanged = false;\n this._processingTabKey = true;\n if (\n direction === FocusZoneDirection.vertical ||\n !this._shouldWrapFocus(this._activeElement as HTMLElement, NO_HORIZONTAL_WRAP)\n ) {\n focusChanged = ev.shiftKey ? this._moveFocusUp() : this._moveFocusDown();\n } else {\n const tabWithDirection = getRTL(theme) ? !ev.shiftKey : ev.shiftKey;\n focusChanged = tabWithDirection ? this._moveFocusLeft(theme) : this._moveFocusRight(theme);\n }\n this._processingTabKey = false;\n if (focusChanged) {\n break;\n } else if (this.props.shouldResetActiveElementWhenTabFromZone) {\n this._activeElement = null;\n }\n }\n return;\n\n case KeyCodes.home:\n if (\n this._isContentEditableElement(ev.target as HTMLElement) ||\n (this._isElementInput(ev.target as HTMLElement) &&\n !this._shouldInputLoseFocus(ev.target as HTMLInputElement, false))\n ) {\n return false;\n }\n const firstChild = this._root.current && (this._root.current.firstChild as HTMLElement | null);\n if (\n this._root.current &&\n firstChild &&\n this.focusElement(getNextElement(this._root.current, firstChild, true) as HTMLElement)\n ) {\n break;\n }\n return;\n\n case KeyCodes.end:\n if (\n this._isContentEditableElement(ev.target as HTMLElement) ||\n (this._isElementInput(ev.target as HTMLElement) &&\n !this._shouldInputLoseFocus(ev.target as HTMLInputElement, true))\n ) {\n return false;\n }\n\n const lastChild = this._root.current && (this._root.current.lastChild as HTMLElement | null);\n if (\n this._root.current &&\n this.focusElement(getPreviousElement(this._root.current, lastChild, true, true, true) as HTMLElement)\n ) {\n break;\n }\n return;\n\n case KeyCodes.enter:\n if (this._tryInvokeClickForFocusable(ev.target as HTMLElement, ev)) {\n break;\n }\n return;\n\n default:\n return;\n }\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n };\n\n /**\n * Walk up the dom try to find a focusable element.\n */\n private _tryInvokeClickForFocusable(targetElement: HTMLElement, ev?: React.KeyboardEvent<HTMLElement>): boolean {\n let target = targetElement;\n if (target === this._root.current || !this.props.shouldRaiseClicks) {\n return false;\n }\n\n do {\n if (\n target.tagName === 'BUTTON' ||\n target.tagName === 'A' ||\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA'\n ) {\n return false;\n }\n\n if (\n this._isImmediateDescendantOfZone(target) &&\n target.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true' &&\n target.getAttribute(IS_ENTER_DISABLED_ATTRIBUTE) !== 'true'\n ) {\n raiseClickFromKeyboardEvent(target, ev);\n return true;\n }\n\n target = getParent(target, ALLOW_VIRTUAL_ELEMENTS) as HTMLElement;\n } while (target !== this._root.current);\n\n return false;\n }\n\n /**\n * Traverse to find first child zone.\n */\n private _getFirstInnerZone(rootElement?: HTMLElement | null): FocusZone | null {\n rootElement = rootElement || this._activeElement || this._root.current;\n\n if (!rootElement) {\n return null;\n }\n\n if (isElementFocusZone(rootElement)) {\n return _allInstances[rootElement.getAttribute(FOCUSZONE_ID_ATTRIBUTE) as string];\n }\n\n let child = rootElement.firstElementChild as HTMLElement | null;\n\n while (child) {\n if (isElementFocusZone(child)) {\n return _allInstances[child.getAttribute(FOCUSZONE_ID_ATTRIBUTE) as string];\n }\n const match = this._getFirstInnerZone(child);\n\n if (match) {\n return match;\n }\n\n child = child.nextElementSibling as HTMLElement | null;\n }\n\n return null;\n }\n\n private _moveFocus(\n isForward: boolean,\n getDistanceFromCenter: (activeRect: ClientRect, targetRect: ClientRect) => number,\n ev?: Event,\n useDefaultWrap: boolean = true,\n ): boolean {\n let element = this._activeElement;\n let candidateDistance = -1;\n let candidateElement: HTMLElement | undefined = undefined;\n let changedFocus = false;\n const isBidirectional = this.props.direction === FocusZoneDirection.bidirectional;\n\n if (!element || !this._root.current) {\n return false;\n }\n\n if (this._isElementInput(element)) {\n if (!this._shouldInputLoseFocus(element as HTMLInputElement, isForward)) {\n return false;\n }\n }\n\n const activeRect = isBidirectional ? element.getBoundingClientRect() : null;\n\n do {\n element = (isForward\n ? getNextElement(this._root.current, element)\n : getPreviousElement(this._root.current, element)) as HTMLElement;\n\n if (isBidirectional) {\n if (element) {\n const targetRect = element.getBoundingClientRect();\n const elementDistance = getDistanceFromCenter(activeRect as ClientRect, targetRect);\n\n if (elementDistance === -1 && candidateDistance === -1) {\n candidateElement = element;\n break;\n }\n\n if (elementDistance > -1 && (candidateDistance === -1 || elementDistance < candidateDistance)) {\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n\n if (candidateDistance >= 0 && elementDistance < 0) {\n break;\n }\n }\n } else {\n candidateElement = element;\n break;\n }\n } while (element);\n\n // Focus the closest candidate\n if (candidateElement && candidateElement !== this._activeElement) {\n changedFocus = true;\n this.focusElement(candidateElement);\n } else if (this.props.isCircularNavigation && useDefaultWrap) {\n if (isForward) {\n return this.focusElement(\n getNextElement(this._root.current, this._root.current.firstElementChild as HTMLElement, true) as HTMLElement,\n );\n } else {\n return this.focusElement(\n getPreviousElement(\n this._root.current,\n this._root.current.lastElementChild as HTMLElement,\n true,\n true,\n true,\n ) as HTMLElement,\n );\n }\n }\n\n return changedFocus;\n }\n\n private _moveFocusDown(): boolean {\n let targetTop = -1;\n // eslint-disable-next-line deprecation/deprecation\n const leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n\n if (\n this._moveFocus(true, (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectBottom = Math.floor(activeRect.bottom);\n\n if (targetRectTop < activeRectBottom) {\n if (!this._shouldWrapFocus(this._activeElement as HTMLElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n\n return LARGE_DISTANCE_FROM_CENTER;\n }\n\n if ((targetTop === -1 && targetRectTop >= activeRectBottom) || targetRectTop === targetTop) {\n targetTop = targetRectTop;\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n distance = 0;\n } else {\n distance = Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n }\n\n return distance;\n })\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, false, true);\n return true;\n }\n\n return false;\n }\n\n private _moveFocusUp(): boolean {\n let targetTop = -1;\n // eslint-disable-next-line deprecation/deprecation\n const leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n\n if (\n this._moveFocus(false, (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n const targetRectBottom = Math.floor(targetRect.bottom);\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectTop = Math.floor(activeRect.top);\n\n if (targetRectBottom > activeRectTop) {\n if (!this._shouldWrapFocus(this._activeElement as HTMLElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n }\n\n if ((targetTop === -1 && targetRectBottom <= activeRectTop) || targetRectTop === targetTop) {\n targetTop = targetRectTop;\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n distance = 0;\n } else {\n distance = Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n }\n\n return distance;\n })\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, false, true);\n return true;\n }\n\n return false;\n }\n\n private _moveFocusLeft(theme: ITheme): boolean {\n const shouldWrap = this._shouldWrapFocus(this._activeElement as HTMLElement, NO_HORIZONTAL_WRAP);\n if (\n this._moveFocus(\n getRTL(theme),\n (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n let topBottomComparison;\n\n if (getRTL(theme)) {\n // When in RTL, this comparison should be the same as the one in _moveFocusRight for LTR.\n // Going left at a leftmost rectangle will go down a line instead of up a line like in LTR.\n // This is important, because we want to be comparing the top of the target rect\n // with the bottom of the active rect.\n topBottomComparison = parseFloat(targetRect.top.toFixed(3)) < parseFloat(activeRect.bottom.toFixed(3));\n } else {\n topBottomComparison = parseFloat(targetRect.bottom.toFixed(3)) > parseFloat(activeRect.top.toFixed(3));\n }\n\n if (\n topBottomComparison &&\n targetRect.right <= activeRect.right &&\n this.props.direction !== FocusZoneDirection.vertical\n ) {\n distance = activeRect.right - targetRect.right;\n } else if (!shouldWrap) {\n distance = LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n\n return distance;\n },\n undefined /*ev*/,\n shouldWrap,\n )\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, true, false);\n return true;\n }\n\n return false;\n }\n\n private _moveFocusRight(theme: ITheme): boolean {\n const shouldWrap = this._shouldWrapFocus(this._activeElement as HTMLElement, NO_HORIZONTAL_WRAP);\n if (\n this._moveFocus(\n !getRTL(theme),\n (activeRect: ClientRect, targetRect: ClientRect) => {\n let distance = -1;\n let topBottomComparison;\n\n if (getRTL(theme)) {\n // When in RTL, this comparison should be the same as the one in _moveFocusLeft for LTR.\n // Going right at a rightmost rectangle will go up a line instead of down a line like in LTR.\n // This is important, because we want to be comparing the bottom of the target rect\n // with the top of the active rect.\n topBottomComparison = parseFloat(targetRect.bottom.toFixed(3)) > parseFloat(activeRect.top.toFixed(3));\n } else {\n topBottomComparison = parseFloat(targetRect.top.toFixed(3)) < parseFloat(activeRect.bottom.toFixed(3));\n }\n\n if (\n topBottomComparison &&\n targetRect.left >= activeRect.left &&\n this.props.direction !== FocusZoneDirection.vertical\n ) {\n distance = targetRect.left - activeRect.left;\n } else if (!shouldWrap) {\n distance = LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n\n return distance;\n },\n undefined /*ev*/,\n shouldWrap,\n )\n ) {\n this._setFocusAlignment(this._activeElement as HTMLElement, true, false);\n return true;\n }\n\n return false;\n }\n\n private _getHorizontalDistanceFromCenter = (\n isForward: boolean,\n activeRect: ClientRect,\n targetRect: ClientRect,\n ): number => {\n // eslint-disable-next-line deprecation/deprecation\n const leftAlignment = this._focusAlignment.left || this._focusAlignment.x || 0;\n // ClientRect values can be floats that differ by very small fractions of a decimal.\n // If the difference between top and bottom are within a pixel then we should treat\n // them as equivalent by using Math.floor. For instance 5.2222 and 5.222221 should be equivalent,\n // but without Math.Floor they will be handled incorrectly.\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectBottom = Math.floor(activeRect.bottom);\n const targetRectBottom = Math.floor(targetRect.bottom);\n const activeRectTop = Math.floor(activeRect.top);\n const isValidCandidateOnpagingDown = isForward && targetRectTop > activeRectBottom;\n const isValidCandidateOnpagingUp = !isForward && targetRectBottom < activeRectTop;\n\n if (isValidCandidateOnpagingDown || isValidCandidateOnpagingUp) {\n if (leftAlignment >= targetRect.left && leftAlignment <= targetRect.left + targetRect.width) {\n return 0;\n }\n return Math.abs(targetRect.left + targetRect.width / 2 - leftAlignment);\n }\n\n if (!this._shouldWrapFocus(this._activeElement as HTMLElement, NO_VERTICAL_WRAP)) {\n return LARGE_NEGATIVE_DISTANCE_FROM_CENTER;\n }\n return LARGE_DISTANCE_FROM_CENTER;\n };\n\n private _moveFocusPaging(isForward: boolean, useDefaultWrap: boolean = true): boolean {\n let element = this._activeElement;\n if (!element || !this._root.current) {\n return false;\n }\n if (this._isElementInput(element)) {\n if (!this._shouldInputLoseFocus(element as HTMLInputElement, isForward)) {\n return false;\n }\n }\n const scrollableParent = findScrollableParent(element);\n if (!scrollableParent) {\n return false;\n }\n let candidateDistance = -1;\n let candidateElement = undefined;\n let targetTop = -1;\n let targetBottom = -1;\n const pagesize = (scrollableParent as HTMLElement).clientHeight;\n const activeRect = element.getBoundingClientRect();\n do {\n element = isForward\n ? getNextElement(this._root.current, element)\n : getPreviousElement(this._root.current, element);\n if (element) {\n const targetRect = element.getBoundingClientRect();\n const targetRectTop = Math.floor(targetRect.top);\n const activeRectBottom = Math.floor(activeRect.bottom);\n const targetRectBottom = Math.floor(targetRect.bottom);\n const activeRectTop = Math.floor(activeRect.top);\n const elementDistance = this._getHorizontalDistanceFromCenter(isForward, activeRect, targetRect);\n const isElementPassedPageSizeOnPagingDown = isForward && targetRectTop > activeRectBottom + pagesize;\n const isElementPassedPageSizeOnPagingUp = !isForward && targetRectBottom < activeRectTop - pagesize;\n\n if (isElementPassedPageSizeOnPagingDown || isElementPassedPageSizeOnPagingUp) {\n break;\n }\n if (elementDistance > -1) {\n // for paging down\n if (isForward && targetRectTop > targetTop) {\n targetTop = targetRectTop;\n candidateDistance = elementDistance;\n candidateElement = element;\n } else if (!isForward && targetRectBottom < targetBottom) {\n // for paging up\n targetBottom = targetRectBottom;\n candidateDistance = elementDistance;\n candidateElement = element;\n } else if (candidateDistance === -1 || elementDistance <= candidateDistance) {\n candidateDistance = elementDistance;\n candidateElement = element;\n }\n }\n }\n } while (element);\n\n let changedFocus = false;\n // Focus the closest candidate\n if (candidateElement && candidateElement !== this._activeElement) {\n changedFocus = true;\n this.focusElement(candidateElement);\n this._setFocusAlignment(candidateElement as HTMLElement, false, true);\n } else if (this.props.isCircularNavigation && useDefaultWrap) {\n if (isForward) {\n return this.focusElement(\n getNextElement(this._root.current, this._root.current.firstElementChild as HTMLElement, true) as HTMLElement,\n );\n }\n return this.focusElement(\n getPreviousElement(\n this._root.current,\n this._root.current.lastElementChild as HTMLElement,\n true,\n true,\n true,\n ) as HTMLElement,\n );\n }\n return changedFocus;\n }\n\n private _setFocusAlignment(element: HTMLElement, isHorizontal?: boolean, isVertical?: boolean): void {\n if (\n this.props.direction === FocusZoneDirection.bidirectional &&\n (!this._focusAlignment || isHorizontal || isVertical)\n ) {\n const rect = element.getBoundingClientRect();\n const left = rect.left + rect.width / 2;\n const top = rect.top + rect.height / 2;\n\n if (!this._focusAlignment) {\n this._focusAlignment = { left, top };\n }\n\n if (isHorizontal) {\n this._focusAlignment.left = left;\n }\n\n if (isVertical) {\n this._focusAlignment.top = top;\n }\n }\n }\n\n private _isImmediateDescendantOfZone(element?: HTMLElement): boolean {\n return this._getOwnerZone(element) === this._root.current;\n }\n\n private _getOwnerZone(element?: HTMLElement): HTMLElement | null {\n let parentElement = getParent(element as HTMLElement, ALLOW_VIRTUAL_ELEMENTS);\n\n while (parentElement && parentElement !== this._root.current && parentElement !== this._getDocument().body) {\n if (isElementFocusZone(parentElement)) {\n return parentElement;\n }\n\n parentElement = getParent(parentElement, ALLOW_VIRTUAL_ELEMENTS);\n }\n\n return parentElement;\n }\n\n private _updateTabIndexes(element?: HTMLElement): void {\n if (\n !this._activeElement &&\n this.props.defaultTabbableElement &&\n typeof this.props.defaultTabbableElement === 'function'\n ) {\n this._activeElement = this.props.defaultTabbableElement(this._root.current as HTMLElement);\n }\n\n if (!element && this._root.current) {\n this._defaultFocusElement = null;\n element = this._root.current;\n if (this._activeElement && !elementContains(element, this._activeElement)) {\n this._activeElement = null;\n }\n }\n\n // If active element changes state to disabled, set it to null.\n // Otherwise, we lose keyboard accessibility to other elements in focus zone.\n if (this._activeElement && !isElementTabbable(this._activeElement)) {\n this._activeElement = null;\n }\n\n const childNodes = element && element.children;\n\n for (let childIndex = 0; childNodes && childIndex < childNodes.length; childIndex++) {\n const child = childNodes[childIndex] as HTMLElement;\n\n if (!isElementFocusZone(child)) {\n // If the item is explicitly set to not be focusable then TABINDEX needs to be set to -1.\n if (child.getAttribute && child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'false') {\n child.setAttribute(TABINDEX, '-1');\n }\n\n if (isElementTabbable(child)) {\n if (this.props.disabled) {\n child.setAttribute(TABINDEX, '-1');\n } else if (\n !this._isInnerZone &&\n ((!this._activeElement && !this._defaultFocusElement) || this._activeElement === child)\n ) {\n this._defaultFocusElement = child;\n if (child.getAttribute(TABINDEX) !== '0') {\n child.setAttribute(TABINDEX, '0');\n }\n } else if (child.getAttribute(TABINDEX) !== '-1') {\n child.setAttribute(TABINDEX, '-1');\n }\n } else if (child.tagName === 'svg' && child.getAttribute('focusable') !== 'false') {\n // Disgusting IE hack. Sad face.\n child.setAttribute('focusable', 'false');\n }\n } else if (child.getAttribute(IS_FOCUSABLE_ATTRIBUTE) === 'true') {\n if (\n !this._isInnerZone &&\n ((!this._activeElement && !this._defaultFocusElement) || this._activeElement === child)\n ) {\n this._defaultFocusElement = child;\n if (child.getAttribute(TABINDEX) !== '0') {\n child.setAttribute(TABINDEX, '0');\n }\n } else if (child.getAttribute(TABINDEX) !== '-1') {\n child.setAttribute(TABINDEX, '-1');\n }\n }\n\n this._updateTabIndexes(child);\n }\n }\n\n private _isContentEditableElement(element: HTMLElement): boolean {\n return element && element.getAttribute('contenteditable') === 'true';\n }\n\n private _isElementInput(element: HTMLElement): boolean {\n if (\n element &&\n element.tagName &&\n (element.tagName.toLowerCase() === 'input' || element.tagName.toLowerCase() === 'textarea')\n ) {\n return true;\n }\n return false;\n }\n\n private _shouldInputLoseFocus(element: HTMLInputElement, isForward?: boolean): boolean {\n // If a tab was used, we want to focus on the next element.\n if (\n !this._processingTabKey &&\n element &&\n element.type &&\n ALLOWED_INPUT_TYPES.indexOf(element.type.toLowerCase()) > -1\n ) {\n const selectionStart = element.selectionStart;\n const selectionEnd = element.selectionEnd;\n const isRangeSelected = selectionStart !== selectionEnd;\n const inputValue = element.value;\n const isReadonly = element.readOnly;\n\n // We shouldn't lose focus in the following cases:\n // 1. There is range selected.\n // 2. When selection start is larger than 0 and it is backward and not readOnly.\n // 3. when selection start is not the end of length, it is forward and not readOnly.\n // 4. We press any of the arrow keys when our handleTabKey isn't none or undefined (only losing focus if we hit\n // tab) and if shouldInputLoseFocusOnArrowKey is defined, if scenario prefers to not loose the focus which is\n // determined by calling the callback shouldInputLoseFocusOnArrowKey\n if (\n isRangeSelected ||\n (selectionStart! > 0 && !isForward && !isReadonly) ||\n (selectionStart !== inputValue.length && isForward && !isReadonly) ||\n (!!this.props.handleTabKey &&\n !(this.props.shouldInputLoseFocusOnArrowKey && this.props.shouldInputLoseFocusOnArrowKey(element)))\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n private _shouldWrapFocus(\n element: HTMLElement,\n noWrapDataAttribute: 'data-no-vertical-wrap' | 'data-no-horizontal-wrap',\n ): boolean {\n return this.props.checkForNoWrap ? shouldWrapFocus(element, noWrapDataAttribute) : true;\n }\n\n /**\n * Returns true if the element is a descendant of the FocusZone through a React portal.\n */\n private _portalContainsElement(element: HTMLElement): boolean {\n return element && !!this._root.current && portalContainsElement(element, this._root.current);\n }\n\n private _getDocument(): Document {\n return getDocument(this._root.current)!;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\nlet isMacResult: boolean | undefined;\n\n/**\n * Returns true if the user is on a Mac. Caches the result value.\n * @param reset - Reset the cached result value (mainly for testing).\n */\nexport function isMac(reset?: boolean): boolean {\n if (typeof isMacResult === 'undefined' || reset) {\n const win = getWindow();\n const userAgent = win && win.navigator.userAgent;\n\n isMacResult = !!userAgent && userAgent.indexOf('Macintosh') !== -1;\n }\n return !!isMacResult;\n}\n","/**\n * Returns true if and only if the user is on a iOS device.\n * Used to determine whether iOS-specific behavior should be applied.\n */\nexport const isIOS = (): boolean => {\n if (!window || !window.navigator || !window.navigator.userAgent) {\n return false;\n }\n return /iPad|iPhone|iPod/i.test(window.navigator.userAgent);\n};\n","import { IContextualMenuItem } from '../../index';\n\n/**\n * Determines the effective checked state of a menu item.\n *\n * @param item {IContextualMenuItem} to get the check state of.\n * @returns {true} if the item is checked.\n * @returns {false} if the item is unchecked.\n * @returns {null} if the item is not checkable.\n */\nexport function getIsChecked(item: IContextualMenuItem): boolean | null {\n if (item.canCheck) {\n return !!(item.isChecked || item.checked);\n }\n\n if (typeof item.isChecked === 'boolean') {\n return item.isChecked;\n }\n\n if (typeof item.checked === 'boolean') {\n return item.checked;\n }\n\n // Item is not checkable.\n return null;\n}\n\nexport function hasSubmenu(item: IContextualMenuItem): boolean {\n // eslint-disable-next-line deprecation/deprecation\n return !!(item.subMenuProps || item.items);\n}\n\nexport function isItemDisabled(item: IContextualMenuItem): boolean {\n return !!(item.isDisabled || item.disabled);\n}\n\nexport function getMenuItemAriaRole(item: IContextualMenuItem): string {\n const isChecked = getIsChecked(item);\n const canCheck: boolean = isChecked !== null;\n return canCheck ? 'menuitemcheckbox' : 'menuitem';\n}\n","const REACT_LIFECYCLE_EXCLUSIONS = [\n 'setState',\n 'render',\n 'componentWillMount',\n 'UNSAFE_componentWillMount',\n 'componentDidMount',\n 'componentWillReceiveProps',\n 'UNSAFE_componentWillReceiveProps',\n 'shouldComponentUpdate',\n 'componentWillUpdate',\n 'getSnapshotBeforeUpdate',\n 'UNSAFE_componentWillUpdate',\n 'componentDidUpdate',\n 'componentWillUnmount',\n];\n\n/**\n * Allows you to hoist methods, except those in an exclusion set from a source object into a destination object.\n *\n * @public\n * @param destination - The instance of the object to hoist the methods onto.\n * @param source - The instance of the object where the methods are hoisted from.\n * @param exclusions - (Optional) What methods to exclude from being hoisted.\n * @returns An array of names of methods that were hoisted.\n */\nexport function hoistMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n source: any,\n exclusions: string[] = REACT_LIFECYCLE_EXCLUSIONS,\n): string[] {\n let hoisted: string[] = [];\n for (let methodName in source) {\n if (\n typeof source[methodName] === 'function' &&\n destination[methodName] === undefined &&\n (!exclusions || exclusions.indexOf(methodName) === -1)\n ) {\n hoisted.push(methodName);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destination[methodName] = function(...args: any[]): void {\n source[methodName](...args);\n };\n }\n }\n\n return hoisted;\n}\n\n/**\n * Provides a method for convenience to unhoist hoisted methods.\n *\n * @public\n * @param source - The source object upon which methods were hoisted.\n * @param methodNames - An array of method names to unhoist.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function unhoistMethods(source: any, methodNames: string[]): void {\n methodNames.forEach((methodName: string) => delete source[methodName]);\n}\n","import * as React from 'react';\nimport { hoistMethods, unhoistMethods } from '../../Utilities';\n\nexport class BaseDecorator<TProps, TState> extends React.Component<TProps, TState> {\n protected _composedComponentInstance: React.Component<TProps, TState>;\n\n private _hoisted: string[];\n\n constructor(props: TProps) {\n super(props);\n this._updateComposedComponentRef = this._updateComposedComponentRef.bind(this);\n }\n\n /**\n * Updates the ref to the component composed by the decorator, which will also take care of hoisting\n * (and unhoisting as appropriate) methods from said component.\n *\n * Pass this method as the argument to the 'ref' property of the composed component.\n */\n protected _updateComposedComponentRef(composedComponentInstance: React.Component<TProps, TState>): void {\n this._composedComponentInstance = composedComponentInstance;\n if (composedComponentInstance) {\n this._hoisted = hoistMethods(this, composedComponentInstance);\n } else if (this._hoisted) {\n unhoistMethods(this, this._hoisted);\n }\n }\n}\n","/**\n * Allows you to hoist static functions in components.\n * Created for the purpose of fixing broken static functions in classes\n * that utilize decorators.\n *\n * @public\n * @param source - The object where the methods are hoisted from.\n * @param dest - The object to hoist the methods onto.\n * @returns The dest object with methods added\n */\n\nexport function hoistStatics<TSource extends Object, TDest>(source: TSource, dest: TDest): TDest {\n for (const name in source) {\n if (source.hasOwnProperty(name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (dest as any)[name] = source[name];\n }\n }\n\n return dest;\n}\n","import * as React from 'react';\n\n/**\n * Props for the WindowProvider component.\n */\nexport type WindowProviderProps = {\n /**\n * Provide the active window.\n */\n window: Window | undefined;\n};\n\n/**\n * Context for providing the window.\n */\nexport const WindowContext = React.createContext<WindowProviderProps>({\n window: typeof window === 'object' ? window : undefined,\n});\n\n/**\n * Hook to access the window object. This can be overridden contextually using the `WindowProvider`.\n */\nexport const useWindow = (): Window | undefined => React.useContext(WindowContext).window;\n\n/**\n * Hook to access the document object. This can be overridden contextually using the `WindowProvider`.\n */\nexport const useDocument = (): Document | undefined => React.useContext(WindowContext).window?.document;\n\n/**\n * Component to provide the window object contextually. This is useful when rendering content to an element\n * contained within a child window or iframe element, where event handlers and styling must be projected\n * to an alternative window or document.\n */\nexport const WindowProvider: React.FunctionComponent<WindowProviderProps> = props => {\n return <WindowContext.Provider value={props}>{props.children}</WindowContext.Provider>;\n};\n","import * as React from 'react';\nimport { BaseDecorator } from './BaseDecorator';\nimport { getWindow, hoistStatics, EventGroup } from '../../Utilities';\nimport { WindowContext } from '../../WindowProvider';\n\nexport interface IWithResponsiveModeState {\n responsiveMode?: ResponsiveMode;\n}\n\nexport enum ResponsiveMode {\n small = 0,\n medium = 1,\n large = 2,\n xLarge = 3,\n xxLarge = 4,\n xxxLarge = 5,\n unknown = 999,\n}\n\nconst RESPONSIVE_MAX_CONSTRAINT = [479, 639, 1023, 1365, 1919, 99999999];\n\n/**\n * User specified mode to default to, useful for server side rendering scenarios.\n */\nlet _defaultMode: ResponsiveMode | undefined;\n\n/**\n * Tracking the last mode we successfully rendered, which allows us to\n * paint initial renders with the correct size.\n */\nlet _lastMode: ResponsiveMode | undefined;\n\n/**\n * Allows a server rendered scenario to provide a default responsive mode.\n */\nexport function setResponsiveMode(responsiveMode: ResponsiveMode | undefined): void {\n _defaultMode = responsiveMode;\n}\n\n/**\n * Initializes the responsive mode to the current window size. This can be used to avoid\n * a re-render during first component mount since the window would otherwise not be measured\n * until after mounting.\n */\nexport function initializeResponsiveMode(element?: HTMLElement): void {\n if (typeof window !== 'undefined') {\n const currentWindow = (element && getWindow(element)) || window;\n\n getResponsiveMode(currentWindow);\n }\n}\n\nexport function getInitialResponsiveMode(): ResponsiveMode {\n return _defaultMode ?? _lastMode ?? ResponsiveMode.large;\n}\n\nexport function withResponsiveMode<TProps extends { responsiveMode?: ResponsiveMode }, TState>(\n ComposedComponent: new (props: TProps, ...args: any[]) => React.Component<TProps, TState>,\n): any {\n const resultClass = class WithResponsiveMode extends BaseDecorator<TProps, IWithResponsiveModeState> {\n public static contextType = WindowContext;\n public context: React.ContextType<typeof WindowContext>;\n\n private _events: EventGroup;\n\n constructor(props: TProps) {\n super(props);\n this._events = new EventGroup(this);\n this._updateComposedComponentRef = this._updateComposedComponentRef.bind(this);\n\n this.state = {\n responsiveMode: getInitialResponsiveMode(),\n };\n }\n\n public componentDidMount(): void {\n this._events.on(this.context.window, 'resize', this._onResize);\n this._onResize();\n }\n\n public componentWillUnmount(): void {\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const { responsiveMode } = this.state;\n\n return responsiveMode === ResponsiveMode.unknown ? null : (\n <ComposedComponent\n ref={this._updateComposedComponentRef}\n responsiveMode={responsiveMode}\n {...(this.props as any)}\n />\n );\n }\n\n private _onResize = () => {\n const responsiveMode = getResponsiveMode(this.context.window);\n\n if (responsiveMode !== this.state.responsiveMode) {\n this.setState({\n responsiveMode,\n });\n }\n };\n };\n return hoistStatics(ComposedComponent, resultClass);\n}\n\nexport function getResponsiveMode(currentWindow: Window | undefined): ResponsiveMode {\n let responsiveMode = ResponsiveMode.small;\n\n if (currentWindow) {\n try {\n while (currentWindow.innerWidth > RESPONSIVE_MAX_CONSTRAINT[responsiveMode]) {\n responsiveMode++;\n }\n } catch (e) {\n // Return a best effort result in cases where we're in the browser but it throws on getting innerWidth.\n responsiveMode = getInitialResponsiveMode();\n }\n\n // Tracking last mode just gives us a better default in future renders,\n // which avoids starting with the wrong value if we've measured once.\n _lastMode = responsiveMode;\n } else {\n if (_defaultMode !== undefined) {\n responsiveMode = _defaultMode;\n } else {\n throw new Error(\n 'Content was rendered in a server environment without providing a default responsive mode. ' +\n 'Call setResponsiveMode to define what the responsive mode is.',\n );\n }\n }\n\n return responsiveMode;\n}\n","import { DirectionalHint } from '../../common/DirectionalHint';\nimport { IRectangle, Point } from '../../Utilities';\n\n// eslint-disable-next-line deprecation/deprecation\nexport { Point, IPoint } from '../../Utilities';\n\nexport enum RectangleEdge {\n top = 1,\n bottom = -1,\n left = 2,\n right = -2,\n}\n\nexport enum Position {\n top = 0,\n bottom = 1,\n start = 2,\n end = 3,\n}\n\n/**\n * Window with typings for experimental features regarding Dual Screen devices.\n */\nexport interface IWindowWithSegments extends Window {\n getWindowSegments?: () => DOMRect[];\n}\n\nexport interface IPositionProps {\n target?: Element | MouseEvent | Point;\n /** how the element should be positioned */\n directionalHint?: DirectionalHint;\n /**\n * How the element should be positioned in RTL layouts.\n * If not specified, a mirror of `directionalHint` will be used instead\n */\n directionalHintForRTL?: DirectionalHint;\n /** The gap between the callout and the target */\n gapSpace?: number;\n /**\n * The bounding rectangle for which the contextual menu can appear in.\n */\n bounds?: IRectangle;\n /**\n * If true the position returned will have the menu element cover the target.\n * If false then it will position next to the target;\n */\n coverTarget?: boolean;\n /**\n * If true the position will not change edges in an attempt to fit the rectangle within bounds.\n * It will still attempt to align it to whatever bounds are given.\n * @defaultvalue false\n */\n directionalHintFixed?: boolean;\n\n /**\n * If true the positioning logic will prefer flipping edges over nudging the rectangle to fit within bounds,\n * thus making sure the element align perfectly with target.\n */\n alignTargetEdge?: boolean;\n}\n\nexport interface ICalloutPositionProps extends IPositionProps {\n /**\n * The width of the beak.\n */\n beakWidth?: number;\n\n /**\n * Whether or not the beak is visible\n */\n isBeakVisible?: boolean;\n}\n\nexport interface IPositionedData {\n /**\n * The new position of the element.\n */\n elementPosition: IPosition;\n /**\n * The finalized target edge that element is aligning to. For instance RectangleEdge.bottom would mean\n * that the bottom edge of the target is being aligned to by the RectangleEdge.top of the element\n * that is being positioned.\n */\n targetEdge: RectangleEdge;\n /**\n * The finalized alignment edge that the element is aligning too. For instance, RectangleEdge.left means\n * that the left edge of the target should be in line with the left edge of the element being positioned.\n */\n alignmentEdge?: RectangleEdge;\n}\n\nexport interface ICalloutPositionedInfo extends IPositionedData {\n beakPosition: ICalloutBeakPositionedInfo;\n}\n\nexport interface ICalloutBeakPositionedInfo extends IPositionedData {\n closestEdge: RectangleEdge;\n}\n\n/**\n * Gives the position of some element on the page. Only a pair of vertical and horizontal edges need to be\n * given. So top/left or bottom/left is sufficient.\n * The number given is the distance in pixels from whatever host was given..\n * So bottom: 100 would be 100px up from the bottom of the host while top: 100px from the top.\n */\nexport interface IPosition {\n top?: number;\n left?: number;\n bottom?: number;\n right?: number;\n [key: string]: number | undefined;\n}\n\nexport interface IPositionDirectionalHintData {\n targetEdge: RectangleEdge;\n alignmentEdge?: RectangleEdge;\n isAuto?: boolean;\n alignTargetEdge?: boolean;\n}\n\nexport interface IRelativePositions {\n calloutPosition: IPosition;\n beakPosition: { position: IPosition | undefined; display: 'block' };\n directionalClassName: string;\n submenuDirection: DirectionalHint;\n}\n","export function on(\n element: Element | Window | Document,\n eventName: string,\n callback: (ev: Event) => void,\n options?: boolean,\n): () => void {\n element.addEventListener(eventName, callback, options);\n\n return () => element.removeEventListener(eventName, callback, options);\n}\n","/**\n * Rectangle helper class.\n *\n * @public\n * {@docCategory Rectangle}\n */\nexport class Rectangle {\n public top: number;\n public bottom: number;\n public left: number;\n public right: number;\n\n constructor(left: number = 0, right: number = 0, top: number = 0, bottom: number = 0) {\n this.top = top;\n this.bottom = bottom;\n this.left = left;\n this.right = right;\n }\n\n /**\n * Calculated automatically by subtracting the right from left\n */\n public get width(): number {\n return this.right - this.left;\n }\n\n /**\n * Calculated automatically by subtracting the bottom from top.\n */\n public get height(): number {\n return this.bottom - this.top;\n }\n\n /**\n * Tests if another rect is approximately equal to this rect (within 4 decimal places.)\n */\n public equals(rect: Rectangle): boolean {\n // Fixing to 4 decimal places because it allows enough precision and will handle cases when something\n // should be rounded, like .999999 should round to 1.\n return (\n parseFloat(this.top.toFixed(4)) === parseFloat(rect.top.toFixed(4)) &&\n parseFloat(this.bottom.toFixed(4)) === parseFloat(rect.bottom.toFixed(4)) &&\n parseFloat(this.left.toFixed(4)) === parseFloat(rect.left.toFixed(4)) &&\n parseFloat(this.right.toFixed(4)) === parseFloat(rect.right.toFixed(4))\n );\n }\n}\n","import { DirectionalHint } from '../../common/DirectionalHint';\nimport { getScrollbarWidth, getRTL, IRectangle } from '../../Utilities';\nimport {\n IPositionDirectionalHintData,\n IPositionedData,\n ICalloutPositionedInfo,\n ICalloutBeakPositionedInfo,\n IPositionProps,\n ICalloutPositionProps,\n RectangleEdge,\n IWindowWithSegments,\n} from './positioning.types';\nimport { Point, Rectangle } from '../../Utilities';\n\nfunction _createPositionData(\n targetEdge: RectangleEdge,\n alignmentEdge?: RectangleEdge,\n isAuto?: boolean,\n): IPositionDirectionalHintData {\n return {\n targetEdge: targetEdge,\n alignmentEdge: alignmentEdge,\n isAuto: isAuto,\n };\n}\n\n// Currently the beakPercent is set to 50 for all positions meaning that it should tend to the center of the target\nconst DirectionalDictionary: { [key: number]: IPositionDirectionalHintData } = {\n [DirectionalHint.topLeftEdge]: _createPositionData(RectangleEdge.top, RectangleEdge.left),\n [DirectionalHint.topCenter]: _createPositionData(RectangleEdge.top),\n [DirectionalHint.topRightEdge]: _createPositionData(RectangleEdge.top, RectangleEdge.right),\n [DirectionalHint.topAutoEdge]: _createPositionData(RectangleEdge.top, undefined, true),\n [DirectionalHint.bottomLeftEdge]: _createPositionData(RectangleEdge.bottom, RectangleEdge.left),\n [DirectionalHint.bottomCenter]: _createPositionData(RectangleEdge.bottom),\n [DirectionalHint.bottomRightEdge]: _createPositionData(RectangleEdge.bottom, RectangleEdge.right),\n [DirectionalHint.bottomAutoEdge]: _createPositionData(RectangleEdge.bottom, undefined, true),\n [DirectionalHint.leftTopEdge]: _createPositionData(RectangleEdge.left, RectangleEdge.top),\n [DirectionalHint.leftCenter]: _createPositionData(RectangleEdge.left),\n [DirectionalHint.leftBottomEdge]: _createPositionData(RectangleEdge.left, RectangleEdge.bottom),\n [DirectionalHint.rightTopEdge]: _createPositionData(RectangleEdge.right, RectangleEdge.top),\n [DirectionalHint.rightCenter]: _createPositionData(RectangleEdge.right),\n [DirectionalHint.rightBottomEdge]: _createPositionData(RectangleEdge.right, RectangleEdge.bottom),\n};\n\n/**\n * Do not call methods from this directly, use either positionCallout or positionElement or make another function that\n * utilizes them.\n * START Private functions and interfaces\n */\n\nexport interface IElementPosition {\n elementRectangle: Rectangle;\n targetEdge: RectangleEdge;\n alignmentEdge: RectangleEdge | undefined;\n}\n\nexport interface IElementPositionInfo extends IElementPosition {\n targetRectangle: Rectangle;\n}\n\ntype PartialIRectangle = Partial<IRectangle>;\n\ninterface IPartialIRectangle extends PartialIRectangle {\n [key: string]: number | undefined;\n}\n\nfunction _isRectangleWithinBounds(rect: Rectangle, boundingRect: Rectangle): boolean {\n if (rect.top < boundingRect.top) {\n return false;\n }\n if (rect.bottom > boundingRect.bottom) {\n return false;\n }\n if (rect.left < boundingRect.left) {\n return false;\n }\n if (rect.right > boundingRect.right) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Gets all of the edges of a rectangle that are outside of the given bounds.\n * If there are no out of bounds edges it returns an empty array.\n */\nfunction _getOutOfBoundsEdges(rect: Rectangle, boundingRect: Rectangle): RectangleEdge[] {\n const outOfBounds: RectangleEdge[] = [];\n\n if (rect.top < boundingRect.top) {\n outOfBounds.push(RectangleEdge.top);\n }\n if (rect.bottom > boundingRect.bottom) {\n outOfBounds.push(RectangleEdge.bottom);\n }\n if (rect.left < boundingRect.left) {\n outOfBounds.push(RectangleEdge.left);\n }\n if (rect.right > boundingRect.right) {\n outOfBounds.push(RectangleEdge.right);\n }\n\n return outOfBounds;\n}\n\nfunction _getEdgeValue(rect: Rectangle, edge: RectangleEdge): number {\n return (rect as any)[RectangleEdge[edge]] as number;\n}\n\nfunction _setEdgeValue(rect: Rectangle, edge: RectangleEdge, value: number) {\n (rect as any)[RectangleEdge[edge]] = value;\n return rect;\n}\n\n/**\n * Returns the middle value of an edge. Only returns 1 value rather than xy coordinates as\n * the itself already contains the other coordinate.\n * For instance, a bottom edge's current value is it's y coordinate, so the number returned is the x.\n */\nfunction _getCenterValue(rect: Rectangle, edge: RectangleEdge): number {\n const edges = _getFlankingEdges(edge);\n return (_getEdgeValue(rect, edges.positiveEdge) + _getEdgeValue(rect, edges.negativeEdge)) / 2;\n}\n\n/**\n * Flips the value depending on the edge.\n * If the edge is a \"positive\" edge, Top or Left, then the value should stay as it is.\n * If the edge is a \"negative\" edge, Bottom or Right, then the value should be flipped.\n * This is to account for the fact that the coordinates are effectively reveserved in certain cases for the\n * \"negative\" edges.\n *\n * For example, when testing to see if a bottom edge 1 is within the bounds of another bottom edge 2:\n * If edge 1 is greater than edge 2 then it is out of bounds. This is reversed for top edge 1 and top edge 2.\n * If top edge 1 is less than edge 2 then it is out of bounds.\n */\nfunction _getRelativeEdgeValue(edge: RectangleEdge, value: number): number {\n if (edge > 0) {\n return value;\n } else {\n return value * -1;\n }\n}\n\nfunction _getRelativeRectEdgeValue(edge: RectangleEdge, rect: Rectangle): number {\n return _getRelativeEdgeValue(edge, _getEdgeValue(rect, edge));\n}\n\nfunction _getRelativeEdgeDifference(rect: Rectangle, hostRect: Rectangle, edge: RectangleEdge): number {\n const edgeDifference = _getEdgeValue(rect, edge) - _getEdgeValue(hostRect, edge);\n return _getRelativeEdgeValue(edge, edgeDifference);\n}\n\n/**\n * Moves the edge of a rectangle to the value given. It only moves the edge in a linear direction based on that edge.\n * For example, if it's a bottom edge it will only change y coordinates.\n */\nfunction _moveEdge(rect: Rectangle, edge: RectangleEdge, newValue: number): Rectangle {\n const difference = _getEdgeValue(rect, edge) - newValue;\n rect = _setEdgeValue(rect, edge, newValue);\n rect = _setEdgeValue(rect, edge * -1, _getEdgeValue(rect, edge * -1) - difference);\n return rect;\n}\n\n/**\n * Aligns the edge on the passed in rect to the target. If there is a gap then it will have that space between the two.\n */\nfunction _alignEdges(rect: Rectangle, target: Rectangle, edge: RectangleEdge, gap: number = 0): Rectangle {\n return _moveEdge(rect, edge, _getEdgeValue(target, edge) + _getRelativeEdgeValue(edge, gap));\n}\n\n/**\n * Aligns the targetEdge on the passed in target to the rects corresponding opposite edge.\n * For instance if targetEdge is bottom, then the rects top will be moved to match it.\n */\nfunction _alignOppositeEdges(\n rect: Rectangle,\n target: Rectangle,\n targetEdge: RectangleEdge,\n gap: number = 0,\n): Rectangle {\n const oppositeEdge = targetEdge * -1;\n const adjustedGap = _getRelativeEdgeValue(oppositeEdge, gap);\n return _moveEdge(rect, targetEdge * -1, _getEdgeValue(target, targetEdge) + adjustedGap);\n}\n\n/**\n * Tests to see if the given edge is within the bounds of the given rectangle.\n */\nfunction _isEdgeInBounds(rect: Rectangle, bounds: Rectangle, edge: RectangleEdge): boolean {\n const adjustedRectValue = _getRelativeRectEdgeValue(edge, rect);\n return adjustedRectValue > _getRelativeRectEdgeValue(edge, bounds);\n}\n\n/**\n * Attempts to move the rectangle through various sides of the target to find a place to fit.\n * If no fit is found, the original position should be returned.\n */\nfunction _flipToFit(\n rect: Rectangle,\n target: Rectangle,\n bounding: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number = 0,\n): IElementPosition {\n const directions: RectangleEdge[] = [\n RectangleEdge.left,\n RectangleEdge.right,\n RectangleEdge.bottom,\n RectangleEdge.top,\n ];\n // In RTL page, RectangleEdge.right has a higher priority than RectangleEdge.left, so the order should be updated.\n if (getRTL()) {\n directions[0] *= -1;\n directions[1] *= -1;\n }\n let currentEstimate = rect;\n let currentEdge = positionData.targetEdge;\n let currentAlignment = positionData.alignmentEdge;\n // Keep switching sides until one is found with enough space.\n // If all sides don't fit then return the unmodified element.\n for (let i = 0; i < 4; i++) {\n if (!_isEdgeInBounds(currentEstimate, bounding, currentEdge)) {\n directions.splice(directions.indexOf(currentEdge), 1);\n if (directions.length > 0) {\n if (directions.indexOf(currentEdge * -1) > -1) {\n currentEdge = currentEdge * -1;\n } else {\n currentAlignment = currentEdge;\n currentEdge = directions.slice(-1)[0];\n }\n currentEstimate = _estimatePosition(\n rect,\n target,\n { targetEdge: currentEdge, alignmentEdge: currentAlignment },\n gap,\n );\n }\n } else {\n return {\n elementRectangle: currentEstimate,\n targetEdge: currentEdge,\n alignmentEdge: currentAlignment,\n };\n }\n }\n return {\n elementRectangle: rect,\n targetEdge: positionData.targetEdge,\n alignmentEdge: positionData.alignmentEdge,\n };\n}\n\n/**\n * Flips only the alignment edge of an element rectangle. This is used instead of nudging the alignment edges\n * into position, when alignTargetEdge is specified.\n */\nfunction _flipAlignmentEdge(\n elementEstimate: IElementPosition,\n target: Rectangle,\n gap: number,\n coverTarget?: boolean,\n): IElementPosition {\n const { alignmentEdge, targetEdge, elementRectangle } = elementEstimate;\n const oppositeEdge = alignmentEdge! * -1;\n const newEstimate = _estimatePosition(\n elementRectangle,\n target,\n { targetEdge: targetEdge, alignmentEdge: oppositeEdge },\n gap,\n coverTarget,\n );\n\n return {\n elementRectangle: newEstimate,\n targetEdge: targetEdge,\n alignmentEdge: oppositeEdge,\n };\n}\n\n/**\n * Adjusts a element rectangle to fit within the bounds given. If directionalHintFixed or covertarget is passed in\n * then the element will not flip sides on the target. They will, however, be nudged to fit within the bounds given.\n */\nfunction _adjustFitWithinBounds(\n element: Rectangle,\n target: Rectangle,\n bounding: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number = 0,\n directionalHintFixed?: boolean,\n coverTarget?: boolean,\n): IElementPosition {\n const { alignmentEdge, alignTargetEdge } = positionData;\n let elementEstimate: IElementPosition = {\n elementRectangle: element,\n targetEdge: positionData.targetEdge,\n alignmentEdge: alignmentEdge,\n };\n\n if (!directionalHintFixed && !coverTarget) {\n elementEstimate = _flipToFit(element, target, bounding, positionData, gap);\n }\n const outOfBounds = _getOutOfBoundsEdges(element, bounding);\n\n if (alignTargetEdge) {\n // The edge opposite to the alignment edge might be out of bounds.\n // Flip alignment to see if we can get it within bounds.\n if (elementEstimate.alignmentEdge && outOfBounds.indexOf(elementEstimate.alignmentEdge * -1) > -1) {\n const flippedElementEstimate = _flipAlignmentEdge(elementEstimate, target, gap, coverTarget);\n if (_isRectangleWithinBounds(flippedElementEstimate.elementRectangle, bounding)) {\n return flippedElementEstimate;\n } else {\n // If the flipped elements edges are still out of bounds, try nudging it.\n elementEstimate = _alignOutOfBoundsEdges(\n _getOutOfBoundsEdges(flippedElementEstimate.elementRectangle, bounding),\n elementEstimate,\n bounding,\n );\n }\n }\n } else {\n elementEstimate = _alignOutOfBoundsEdges(outOfBounds, elementEstimate, bounding);\n }\n\n return elementEstimate;\n}\n\n/**\n * Iterates through a list of out of bounds edges and tries to nudge and align them.\n * @param outOfBoundsEdges - Array of edges that are out of bounds\n * @param elementEstimate - The current element positioning estimate\n * @param bounding - The current bounds\n */\nfunction _alignOutOfBoundsEdges(\n outOfBoundsEdges: RectangleEdge[],\n elementEstimate: IElementPosition,\n bounding: Rectangle,\n) {\n for (const direction of outOfBoundsEdges) {\n elementEstimate.elementRectangle = _alignEdges(elementEstimate.elementRectangle, bounding, direction);\n }\n\n return elementEstimate;\n}\n\n/**\n * Moves the middle point on an edge to the point given.\n * Only moves in one direction. For instance if a bottom edge is passed in, then\n * the bottom edge will be moved in the x axis to match the point.\n */\nfunction _centerEdgeToPoint(rect: Rectangle, edge: RectangleEdge, point: number): Rectangle {\n const { positiveEdge } = _getFlankingEdges(edge);\n const elementMiddle = _getCenterValue(rect, edge);\n const distanceToMiddle = elementMiddle - _getEdgeValue(rect, positiveEdge);\n return _moveEdge(rect, positiveEdge, point - distanceToMiddle);\n}\n\n/**\n * Moves the element rectangle to be appropriately positioned relative to a given target.\n * Does not flip or adjust the element.\n */\nfunction _estimatePosition(\n elementToPosition: Rectangle,\n target: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number = 0,\n coverTarget?: boolean,\n): Rectangle {\n let estimatedElementPosition: Rectangle;\n const { alignmentEdge, targetEdge } = positionData;\n const elementEdge = coverTarget ? targetEdge : targetEdge * -1;\n estimatedElementPosition = coverTarget\n ? _alignEdges(elementToPosition, target, targetEdge, gap)\n : _alignOppositeEdges(elementToPosition, target, targetEdge, gap);\n // if no alignment edge is provided it's supposed to be centered.\n if (!alignmentEdge) {\n const targetMiddlePoint = _getCenterValue(target, targetEdge);\n estimatedElementPosition = _centerEdgeToPoint(estimatedElementPosition, elementEdge, targetMiddlePoint);\n } else {\n estimatedElementPosition = _alignEdges(estimatedElementPosition, target, alignmentEdge);\n }\n\n return estimatedElementPosition;\n}\n\n/**\n * Returns the non-opposite edges of the target edge.\n * For instance if bottom is passed in then left and right will be returned.\n */\nfunction _getFlankingEdges(edge: RectangleEdge): { positiveEdge: RectangleEdge; negativeEdge: RectangleEdge } {\n if (edge === RectangleEdge.top || edge === RectangleEdge.bottom) {\n return {\n positiveEdge: RectangleEdge.left,\n negativeEdge: RectangleEdge.right,\n };\n } else {\n return {\n positiveEdge: RectangleEdge.top,\n negativeEdge: RectangleEdge.bottom,\n };\n }\n}\n\n/**\n * Retrieve the final value for the return edge of elementRectangle. If the elementRectangle is closer to one side\n * of the bounds versus the other, the return edge is flipped to grow inward.\n */\nfunction _finalizeReturnEdge(\n elementRectangle: Rectangle,\n returnEdge: RectangleEdge,\n bounds?: Rectangle,\n): RectangleEdge {\n if (\n bounds &&\n Math.abs(_getRelativeEdgeDifference(elementRectangle, bounds, returnEdge)) >\n Math.abs(_getRelativeEdgeDifference(elementRectangle, bounds, returnEdge * -1))\n ) {\n return returnEdge * -1;\n }\n\n return returnEdge;\n}\n\n/**\n * Finalizes the element positon based on the hostElement. Only returns the\n * rectangle values to position such that they are anchored to the target.\n * This helps prevent resizing from looking very strange.\n * For instance, if the target edge is top and aligned with the left side then\n * the bottom and left values are returned so as the callou shrinks it shrinks towards that corner.\n */\nfunction _finalizeElementPosition(\n elementRectangle: Rectangle,\n hostElement: HTMLElement,\n targetEdge: RectangleEdge,\n bounds?: Rectangle,\n alignmentEdge?: RectangleEdge,\n coverTarget?: boolean,\n doNotFinalizeReturnEdge?: boolean,\n): IPartialIRectangle {\n const returnValue: IPartialIRectangle = {};\n\n const hostRect: Rectangle = _getRectangleFromElement(hostElement);\n const elementEdge = coverTarget ? targetEdge : targetEdge * -1;\n const elementEdgeString = RectangleEdge[elementEdge];\n let returnEdge = alignmentEdge ? alignmentEdge : _getFlankingEdges(targetEdge).positiveEdge;\n if (!doNotFinalizeReturnEdge) {\n returnEdge = _finalizeReturnEdge(elementRectangle, returnEdge, bounds);\n }\n\n returnValue[elementEdgeString] = _getRelativeEdgeDifference(elementRectangle, hostRect, elementEdge);\n returnValue[RectangleEdge[returnEdge]] = _getRelativeEdgeDifference(elementRectangle, hostRect, returnEdge);\n\n return returnValue;\n}\n\n// Since the beak is rotated 45 degrees the actual height/width is the length of the diagonal.\n// We still want to position the beak based on it's midpoint which does not change. It will\n// be at (beakwidth / 2, beakwidth / 2)\nfunction _calculateActualBeakWidthInPixels(beakWidth: number): number {\n return Math.sqrt(beakWidth * beakWidth * 2);\n}\n\n/**\n * Returns the appropriate IPositionData based on the props altered for RTL.\n * If directionalHintForRTL is passed in that is used if the page is RTL.\n * If directionalHint is specified, no directionalHintForRTL is available, and the page is RTL, the hint will be\n * flipped (e.g. bottomLeftEdge would become bottomRightEdge).\n *\n * If there is no directionalHint passed in, bottomAutoEdge is chosen automatically.\n */\nfunction _getPositionData(\n directionalHint: DirectionalHint = DirectionalHint.bottomAutoEdge,\n directionalHintForRTL?: DirectionalHint,\n previousPositions?: IPositionDirectionalHintData,\n): IPositionDirectionalHintData {\n if (previousPositions) {\n return {\n alignmentEdge: previousPositions.alignmentEdge,\n isAuto: previousPositions.isAuto,\n targetEdge: previousPositions.targetEdge,\n };\n }\n const positionInformation: IPositionDirectionalHintData = { ...DirectionalDictionary[directionalHint] };\n if (getRTL()) {\n // If alignment edge exists and that alignment edge is -2 or 2, right or left, then flip it.\n if (positionInformation.alignmentEdge && positionInformation.alignmentEdge % 2 === 0) {\n positionInformation.alignmentEdge = positionInformation.alignmentEdge * -1;\n }\n\n return directionalHintForRTL !== undefined ? DirectionalDictionary[directionalHintForRTL] : positionInformation;\n }\n return positionInformation;\n}\n\n/**\n * Get's the alignment data for the given information. This only really matters if the positioning is Auto.\n * If it is auto then the alignmentEdge should be chosen based on the target edge's position relative to\n * the center of the page.\n */\nfunction _getAlignmentData(\n positionData: IPositionDirectionalHintData,\n target: Rectangle,\n boundingRect: Rectangle,\n coverTarget?: boolean,\n alignTargetEdge?: boolean,\n): IPositionDirectionalHintData {\n if (positionData.isAuto) {\n positionData.alignmentEdge = getClosestEdge(positionData.targetEdge, target, boundingRect);\n }\n\n positionData.alignTargetEdge = alignTargetEdge;\n return positionData;\n}\n\nfunction getClosestEdge(targetEdge: RectangleEdge, target: Rectangle, boundingRect: Rectangle): RectangleEdge {\n const targetCenter: number = _getCenterValue(target, targetEdge);\n const boundingCenter: number = _getCenterValue(boundingRect, targetEdge);\n const { positiveEdge, negativeEdge } = _getFlankingEdges(targetEdge);\n if (targetCenter <= boundingCenter) {\n return positiveEdge;\n } else {\n return negativeEdge;\n }\n}\n\nfunction _positionElementWithinBounds(\n elementToPosition: Rectangle,\n target: Rectangle,\n bounding: Rectangle,\n positionData: IPositionDirectionalHintData,\n gap: number,\n directionalHintFixed?: boolean,\n coverTarget?: boolean,\n): IElementPosition {\n const estimatedElementPosition: Rectangle = _estimatePosition(\n elementToPosition,\n target,\n positionData,\n gap,\n coverTarget,\n );\n if (_isRectangleWithinBounds(estimatedElementPosition, bounding)) {\n return {\n elementRectangle: estimatedElementPosition,\n targetEdge: positionData.targetEdge,\n alignmentEdge: positionData.alignmentEdge,\n };\n } else {\n return _adjustFitWithinBounds(\n elementToPosition,\n target,\n bounding,\n positionData,\n gap,\n directionalHintFixed,\n coverTarget,\n );\n }\n}\n\nfunction _finalizeBeakPosition(\n elementPosition: IElementPosition,\n positionedBeak: Rectangle,\n bounds?: Rectangle,\n): ICalloutBeakPositionedInfo {\n const targetEdge = elementPosition.targetEdge * -1;\n // The \"host\" element that we will use to help position the beak.\n const actualElement = new Rectangle(\n 0,\n elementPosition.elementRectangle.width,\n 0,\n elementPosition.elementRectangle.height,\n );\n const returnValue: IPartialIRectangle = {};\n const returnEdge = _finalizeReturnEdge(\n elementPosition.elementRectangle,\n elementPosition.alignmentEdge ? elementPosition.alignmentEdge : _getFlankingEdges(targetEdge).positiveEdge,\n bounds,\n );\n\n returnValue[RectangleEdge[targetEdge]] = _getEdgeValue(positionedBeak, targetEdge);\n returnValue[RectangleEdge[returnEdge]] = _getRelativeEdgeDifference(positionedBeak, actualElement, returnEdge);\n\n return {\n elementPosition: { ...returnValue },\n closestEdge: getClosestEdge(elementPosition.targetEdge, positionedBeak, actualElement),\n targetEdge: targetEdge,\n };\n}\n\nfunction _positionBeak(beakWidth: number, elementPosition: IElementPositionInfo): Rectangle {\n const target = elementPosition.targetRectangle;\n /**\n * Note about beak positioning: The actual beak width only matters for getting the gap between the callout and\n * target, it does not impact the beak placement within the callout. For example example, if the beakWidth is 8,\n * then the actual beakWidth is sqrroot(8^2 + 8^2) = 11.31x11.31. So the callout will need to be an extra 3 pixels\n * away from its target. While the beak is being positioned in the callout it still acts as though it were 8x8.\n */\n const { positiveEdge, negativeEdge } = _getFlankingEdges(elementPosition.targetEdge);\n const beakTargetPoint = _getCenterValue(target, elementPosition.targetEdge);\n const elementBounds = new Rectangle(\n beakWidth / 2,\n elementPosition.elementRectangle.width - beakWidth / 2,\n beakWidth / 2,\n elementPosition.elementRectangle.height - beakWidth / 2,\n );\n\n let beakPosition: Rectangle = new Rectangle(0, beakWidth, 0, beakWidth);\n\n beakPosition = _moveEdge(beakPosition, elementPosition.targetEdge * -1, -beakWidth / 2);\n\n beakPosition = _centerEdgeToPoint(\n beakPosition,\n elementPosition.targetEdge * -1,\n beakTargetPoint - _getRelativeRectEdgeValue(positiveEdge, elementPosition.elementRectangle),\n );\n\n if (!_isEdgeInBounds(beakPosition, elementBounds, positiveEdge)) {\n beakPosition = _alignEdges(beakPosition, elementBounds, positiveEdge);\n } else if (!_isEdgeInBounds(beakPosition, elementBounds, negativeEdge)) {\n beakPosition = _alignEdges(beakPosition, elementBounds, negativeEdge);\n }\n\n return beakPosition;\n}\n\nfunction _getRectangleFromElement(element: Element): Rectangle {\n const clientRect: ClientRect = element.getBoundingClientRect();\n\n return new Rectangle(clientRect.left, clientRect.right, clientRect.top, clientRect.bottom);\n}\n\nfunction _getRectangleFromIRect(rect: IRectangle): Rectangle {\n return new Rectangle(rect.left, rect.right, rect.top, rect.bottom);\n}\n\nfunction _getTargetRect(bounds: Rectangle, target: Element | MouseEvent | Point | Rectangle | undefined): Rectangle {\n let targetRectangle: Rectangle;\n if (target) {\n // eslint-disable-next-line no-extra-boolean-cast\n if (!!(target as MouseEvent).preventDefault) {\n const ev = target as MouseEvent;\n targetRectangle = new Rectangle(ev.clientX, ev.clientX, ev.clientY, ev.clientY);\n // eslint-disable-next-line no-extra-boolean-cast\n } else if (!!(target as Element).getBoundingClientRect) {\n targetRectangle = _getRectangleFromElement(target as Element);\n // HTMLImgElements can have x and y values. The check for it being a point must go last.\n } else {\n const rectOrPoint: Point & Rectangle = target as Point & Rectangle;\n // eslint-disable-next-line deprecation/deprecation\n const left = rectOrPoint.left || rectOrPoint.x;\n // eslint-disable-next-line deprecation/deprecation\n const top = rectOrPoint.top || rectOrPoint.y;\n const right = rectOrPoint.right || left;\n const bottom = rectOrPoint.bottom || top;\n targetRectangle = new Rectangle(left, right, top, bottom);\n }\n\n if (!_isRectangleWithinBounds(targetRectangle, bounds)) {\n const outOfBounds: RectangleEdge[] = _getOutOfBoundsEdges(targetRectangle, bounds);\n\n for (const direction of outOfBounds) {\n (targetRectangle as any)[RectangleEdge[direction]] = (bounds as any)[RectangleEdge[direction]];\n }\n }\n } else {\n targetRectangle = new Rectangle(0, 0, 0, 0);\n }\n\n return targetRectangle;\n}\n\n/**\n * If max height is less than zero it returns the bounds height instead.\n */\nfunction _getMaxHeightFromTargetRectangle(\n targetRectangle: Rectangle,\n targetEdge: DirectionalHint,\n gapSpace: number,\n bounds: Rectangle,\n coverTarget?: boolean,\n) {\n let maxHeight = 0;\n const directionalHint = DirectionalDictionary[targetEdge];\n\n // If cover target is set, then the max height should be calculated using the opposite of the target edge since\n // that's the direction that the callout will expand in.\n // For instance, if the directionalhint is bottomLeftEdge then the callout will position so it's bottom edge\n // is aligned with the bottom of the target and expand up towards the top of the screen and the calculated max height\n // is (bottom of target) - (top of screen) - gapSpace.\n const target = coverTarget ? directionalHint.targetEdge * -1 : directionalHint.targetEdge;\n\n if (target === RectangleEdge.top) {\n maxHeight = _getEdgeValue(targetRectangle, directionalHint.targetEdge) - bounds.top - gapSpace;\n } else if (target === RectangleEdge.bottom) {\n maxHeight = bounds.bottom - _getEdgeValue(targetRectangle, directionalHint.targetEdge) - gapSpace;\n } else {\n maxHeight = bounds.bottom - targetRectangle.top - gapSpace;\n }\n\n return maxHeight > 0 ? maxHeight : bounds.height;\n}\n\nfunction _positionElementRelative(\n props: IPositionProps,\n elementToPosition: HTMLElement,\n boundingRect: Rectangle,\n previousPositions?: IPositionedData,\n): IElementPositionInfo {\n const gap: number = props.gapSpace ? props.gapSpace : 0;\n const targetRect: Rectangle = _getTargetRect(boundingRect, props.target);\n const positionData: IPositionDirectionalHintData = _getAlignmentData(\n _getPositionData(props.directionalHint, props.directionalHintForRTL, previousPositions)!,\n targetRect,\n boundingRect,\n props.coverTarget,\n props.alignTargetEdge,\n );\n const positionedElement: IElementPosition = _positionElementWithinBounds(\n _getRectangleFromElement(elementToPosition),\n targetRect,\n boundingRect,\n positionData,\n gap,\n props.directionalHintFixed,\n props.coverTarget,\n );\n return { ...positionedElement, targetRectangle: targetRect };\n}\n\nfunction _finalizePositionData(\n positionedElement: IElementPosition,\n hostElement: HTMLElement,\n bounds?: Rectangle,\n coverTarget?: boolean,\n doNotFinalizeReturnEdge?: boolean,\n): IPositionedData {\n const finalizedElement: IPartialIRectangle = _finalizeElementPosition(\n positionedElement.elementRectangle,\n hostElement,\n positionedElement.targetEdge,\n bounds,\n positionedElement.alignmentEdge,\n coverTarget,\n doNotFinalizeReturnEdge,\n );\n return {\n elementPosition: finalizedElement,\n targetEdge: positionedElement.targetEdge,\n alignmentEdge: positionedElement.alignmentEdge,\n };\n}\n\nfunction _positionElement(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: IPositionedData,\n): IPositionedData {\n const boundingRect: Rectangle = props.bounds\n ? _getRectangleFromIRect(props.bounds)\n : new Rectangle(0, window.innerWidth - getScrollbarWidth(), 0, window.innerHeight);\n const positionedElement: IElementPosition = _positionElementRelative(\n props,\n elementToPosition,\n boundingRect,\n previousPositions,\n );\n return _finalizePositionData(positionedElement, hostElement, boundingRect, props.coverTarget);\n}\n\nfunction _positionCallout(\n props: ICalloutPositionProps,\n hostElement: HTMLElement,\n callout: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n doNotFinalizeReturnEdge?: boolean,\n): ICalloutPositionedInfo {\n const beakWidth: number = props.isBeakVisible ? props.beakWidth || 0 : 0;\n const gap: number = _calculateActualBeakWidthInPixels(beakWidth) / 2 + (props.gapSpace ? props.gapSpace : 0);\n const positionProps: IPositionProps = props;\n positionProps.gapSpace = gap;\n const boundingRect: Rectangle = props.bounds\n ? _getRectangleFromIRect(props.bounds)\n : new Rectangle(0, window.innerWidth - getScrollbarWidth(), 0, window.innerHeight);\n const positionedElement: IElementPositionInfo = _positionElementRelative(\n positionProps,\n callout,\n boundingRect,\n previousPositions,\n );\n const beakPositioned: Rectangle = _positionBeak(beakWidth, positionedElement);\n const finalizedBeakPosition: ICalloutBeakPositionedInfo = _finalizeBeakPosition(\n positionedElement,\n beakPositioned,\n boundingRect,\n );\n return {\n ..._finalizePositionData(positionedElement, hostElement, boundingRect, props.coverTarget, doNotFinalizeReturnEdge),\n beakPosition: finalizedBeakPosition,\n };\n}\n\nfunction _positionCard(\n props: ICalloutPositionProps,\n hostElement: HTMLElement,\n callout: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n): ICalloutPositionedInfo {\n return _positionCallout(props, hostElement, callout, previousPositions, true);\n}\n// END PRIVATE FUNCTIONS\n\nexport const __positioningTestPackage = {\n _finalizePositionData,\n _finalizeBeakPosition,\n _calculateActualBeakWidthInPixels,\n _positionElementWithinBounds,\n _positionBeak,\n _getPositionData,\n _getMaxHeightFromTargetRectangle,\n};\n\n/**\n * Used to position an element relative to the given positioning props.\n * If positioning has been completed before, previousPositions can be passed to ensure that the positioning element\n * repositions based on its previous targets rather than starting with directionalhint.\n */\nexport function positionElement(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: IPositionedData,\n): IPositionedData {\n return _positionElement(props, hostElement, elementToPosition, previousPositions);\n}\n\nexport function positionCallout(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n): ICalloutPositionedInfo {\n return _positionCallout(props, hostElement, elementToPosition, previousPositions);\n}\n\nexport function positionCard(\n props: IPositionProps,\n hostElement: HTMLElement,\n elementToPosition: HTMLElement,\n previousPositions?: ICalloutPositionedInfo,\n): ICalloutPositionedInfo {\n return _positionCard(props, hostElement, elementToPosition, previousPositions);\n}\n\n/**\n * Gets the maximum height that a rectangle can have in order to fit below or above a target.\n * If the directional hint specifies a left or right edge (i.e. leftCenter) it will limit the height to the topBorder\n * of the target given.\n * If no bounds are provided then the window is treated as the bounds.\n */\nexport function getMaxHeight(\n target: Element | MouseEvent | Point | Rectangle,\n targetEdge: DirectionalHint,\n gapSpace: number = 0,\n bounds?: IRectangle,\n coverTarget?: boolean,\n): number {\n const mouseTarget: MouseEvent = target as MouseEvent;\n const elementTarget: Element = target as Element;\n const rectOrPointTarget: Point & Rectangle = target as Point & Rectangle;\n let targetRect: Rectangle;\n const boundingRectangle = bounds\n ? _getRectangleFromIRect(bounds)\n : new Rectangle(0, window.innerWidth - getScrollbarWidth(), 0, window.innerHeight);\n\n // eslint-disable-next-line deprecation/deprecation\n const left = rectOrPointTarget.left || rectOrPointTarget.x;\n // eslint-disable-next-line deprecation/deprecation\n const top = rectOrPointTarget.top || rectOrPointTarget.y;\n const right = rectOrPointTarget.right || left;\n const bottom = rectOrPointTarget.bottom || top;\n\n // eslint-disable-next-line no-extra-boolean-cast -- may not actually be a MouseEvent\n if (!!mouseTarget.stopPropagation) {\n targetRect = new Rectangle(mouseTarget.clientX, mouseTarget.clientX, mouseTarget.clientY, mouseTarget.clientY);\n } else if (left !== undefined && top !== undefined) {\n targetRect = new Rectangle(left, right, top, bottom);\n } else {\n targetRect = _getRectangleFromElement(elementTarget);\n }\n\n return _getMaxHeightFromTargetRectangle(targetRect, targetEdge, gapSpace, boundingRectangle, coverTarget);\n}\n\n/**\n * Returns the opposite edge of the given RectangleEdge.\n */\nexport function getOppositeEdge(edge: RectangleEdge): RectangleEdge {\n return edge * -1;\n}\n\nfunction _getBoundsFromTargetWindow(\n target: Element | MouseEvent | Point | Rectangle | null,\n targetWindow: IWindowWithSegments,\n): IRectangle {\n let segments = undefined;\n if (targetWindow.getWindowSegments) {\n segments = targetWindow.getWindowSegments();\n }\n\n // Identify if we're dealing with single screen scenarios.\n if (segments === undefined || segments.length <= 1) {\n return {\n top: 0,\n left: 0,\n right: targetWindow.innerWidth,\n bottom: targetWindow.innerHeight,\n width: targetWindow.innerWidth,\n height: targetWindow.innerHeight,\n };\n }\n\n // Logic for determining dual screen scenarios.\n let x: number | undefined = 0;\n let y: number | undefined = 0;\n\n // If the target is an Element get coordinates for its center.\n if (target !== null && !!(target as Element).getBoundingClientRect) {\n const clientRect = (target as Element).getBoundingClientRect();\n x = (clientRect.left + clientRect.right) / 2;\n y = (clientRect.top + clientRect.bottom) / 2;\n }\n // If the target is not null get x-axis and y-axis coordinates directly.\n else if (target !== null) {\n // eslint-disable-next-line deprecation/deprecation\n x = (target as Point).left || (target as MouseEvent | Point).x;\n // eslint-disable-next-line deprecation/deprecation\n y = (target as Point).top || (target as MouseEvent | Point).y;\n }\n\n let bounds = { top: 0, left: 0, right: 0, bottom: 0, width: 0, height: 0 };\n\n // Define which window segment are the coordinates in and calculate bounds based on that.\n for (const segment of segments) {\n if (x && segment.left <= x && segment.right >= x && y && segment.top <= y && segment.bottom >= y) {\n bounds = {\n top: segment.top,\n left: segment.left,\n right: segment.right,\n bottom: segment.bottom,\n width: segment.width,\n height: segment.height,\n };\n }\n }\n\n return bounds;\n}\n\nexport function getBoundsFromTargetWindow(\n target: Element | MouseEvent | Point | Rectangle | null,\n targetWindow: IWindowWithSegments,\n): IRectangle {\n return _getBoundsFromTargetWindow(target, targetWindow);\n}\n","import * as React from 'react';\nimport {\n Async,\n KeyCodes,\n divProperties,\n doesElementContainFocus,\n getDocument,\n getNativeProps,\n on,\n getWindow,\n elementContains,\n} from '../../Utilities';\nimport { IPopupProps } from './Popup.types';\n\nexport interface IPopupState {\n needsVerticalScrollBar?: boolean;\n}\n\n/**\n * This adds accessibility to Dialog and Panel controls\n */\nexport class Popup extends React.Component<IPopupProps, IPopupState> {\n public static defaultProps: IPopupProps = {\n shouldRestoreFocus: true,\n };\n\n public _root = React.createRef<HTMLDivElement>();\n private _disposables: (() => void)[] = [];\n private _originalFocusedElement: HTMLElement;\n private _containsFocus: boolean;\n private _async: Async;\n\n public constructor(props: IPopupProps) {\n super(props);\n this._async = new Async(this);\n this.state = { needsVerticalScrollBar: false };\n }\n\n public UNSAFE_componentWillMount(): void {\n this._originalFocusedElement = getDocument()!.activeElement as HTMLElement;\n }\n\n public componentDidMount(): void {\n if (this._root.current) {\n this._disposables.push(\n on(this._root.current, 'focus', this._onFocus, true),\n on(this._root.current, 'blur', this._onBlur, true),\n );\n const currentWindow = getWindow(this._root.current);\n if (currentWindow) {\n this._disposables.push(on(currentWindow, 'keydown', this._onKeyDown as any));\n }\n if (doesElementContainFocus(this._root.current)) {\n this._containsFocus = true;\n }\n }\n\n this._updateScrollBarAsync();\n }\n\n public componentDidUpdate() {\n this._updateScrollBarAsync();\n this._async.dispose();\n }\n\n public componentWillUnmount(): void {\n this._disposables.forEach((dispose: () => void) => dispose());\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.props.shouldRestoreFocus) {\n const { onRestoreFocus = defaultFocusRestorer } = this.props;\n onRestoreFocus({\n originalElement: this._originalFocusedElement,\n containsFocus: this._containsFocus,\n documentContainsFocus: getDocument()?.hasFocus() || false,\n });\n }\n // De-reference DOM Node to avoid retainment via transpiled closure of _onKeyDown\n delete this._originalFocusedElement;\n }\n\n public render(): JSX.Element {\n const { role, className, ariaLabel, ariaLabelledBy, ariaDescribedBy, style } = this.props;\n\n return (\n <div\n ref={this._root}\n {...getNativeProps(this.props, divProperties)}\n className={className}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n onKeyDown={this._onKeyDown}\n style={{ overflowY: this.state.needsVerticalScrollBar ? 'scroll' : undefined, outline: 'none', ...style }}\n >\n {this.props.children}\n </div>\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n switch (ev.which) {\n case KeyCodes.escape:\n if (this.props.onDismiss) {\n this.props.onDismiss(ev);\n\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n break;\n }\n };\n\n private _updateScrollBarAsync(): void {\n this._async.requestAnimationFrame(() => {\n this._getScrollBar();\n });\n }\n\n private _getScrollBar(): void {\n // If overflowY is overriden, don't waste time calculating whether the scrollbar is necessary.\n if (this.props.style && this.props.style.overflowY) {\n return;\n }\n\n let needsVerticalScrollBar = false;\n if (this._root && this._root.current && this._root.current.firstElementChild) {\n // ClientHeight returns the client height of an element rounded to an\n // integer. On some browsers at different zoom levels this rounding\n // can generate different results for the root container and child even\n // though they are the same height. This causes us to show a scroll bar\n // when not needed. Ideally we would use BoundingClientRect().height\n // instead however seems that the API is 90% slower than using ClientHeight.\n // Therefore instead we will calculate the difference between heights and\n // allow for a 1px difference to still be considered ok and not show the\n // scroll bar.\n const rootHeight = this._root.current.clientHeight;\n const firstChildHeight = this._root.current.firstElementChild.clientHeight;\n if (rootHeight > 0 && firstChildHeight > rootHeight) {\n needsVerticalScrollBar = firstChildHeight - rootHeight > 1;\n }\n }\n if (this.state.needsVerticalScrollBar !== needsVerticalScrollBar) {\n this.setState({\n needsVerticalScrollBar: needsVerticalScrollBar,\n });\n }\n }\n\n private _onFocus = (): void => {\n this._containsFocus = true;\n };\n\n private _onBlur = (ev: FocusEvent): void => {\n /** The popup should update this._containsFocus when:\n * relatedTarget exists AND\n * the relatedTarget is not contained within the popup.\n * If the relatedTarget is within the popup, that means the popup still has focus\n * and focused moved from one element to another within the popup.\n * If relatedTarget is undefined or null that usually means that a\n * keyboard event occured and focus didn't change\n */\n if (\n this._root.current &&\n ev.relatedTarget &&\n !elementContains(this._root.current, ev.relatedTarget as HTMLElement)\n ) {\n this._containsFocus = false;\n }\n };\n}\n\nfunction defaultFocusRestorer(options: {\n originalElement?: HTMLElement | Window;\n containsFocus: boolean;\n documentContainsFocus: boolean;\n}) {\n const { originalElement, containsFocus } = options;\n\n if (originalElement && containsFocus && originalElement !== window) {\n // Make sure that the focus method actually exists\n // In some cases the object might exist but not be a real element.\n // This is primarily for IE 11 and should be removed once IE 11 is no longer in use.\n if (originalElement.focus) {\n originalElement.focus();\n }\n }\n}\n","import * as React from 'react';\nimport { ICalloutProps, ICalloutContentStyleProps, ICalloutContentStyles } from './Callout.types';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport {\n Async,\n Point,\n IRectangle,\n css,\n divProperties,\n elementContains,\n focusFirstChild,\n getDocument,\n getNativeProps,\n getWindow,\n on,\n shallowCompare,\n} from '../../Utilities';\nimport {\n positionCallout,\n ICalloutPositionedInfo,\n IPositionProps,\n getMaxHeight,\n IPosition,\n RectangleEdge,\n positionCard,\n getBoundsFromTargetWindow,\n} from '../../utilities/positioning';\nimport { Popup } from '../../Popup';\nimport { classNamesFunction } from '../../Utilities';\nimport { AnimationClassNames } from '../../Styling';\nimport { Target } from '@uifabric/react-hooks';\n\nconst ANIMATIONS: { [key: number]: string | undefined } = {\n [RectangleEdge.top]: AnimationClassNames.slideUpIn10,\n [RectangleEdge.bottom]: AnimationClassNames.slideDownIn10,\n [RectangleEdge.left]: AnimationClassNames.slideLeftIn10,\n [RectangleEdge.right]: AnimationClassNames.slideRightIn10,\n};\n\nconst getClassNames = classNamesFunction<ICalloutContentStyleProps, ICalloutContentStyles>({\n disableCaching: true, // disabling caching because stylesProp.position mutates often\n});\n\nconst BEAK_ORIGIN_POSITION = { top: 0, left: 0 };\n// Microsoft Edge will overwrite inline styles if there is an animation pertaining to that style.\n// To help ensure that edge will respect the offscreen style opacity\n// filter needs to be added as an additional way to set opacity.\n// Also set pointer-events: none so that the callout will not occlude the element it is\n// going to be positioned against\nconst OFF_SCREEN_STYLE: React.CSSProperties = { opacity: 0, filter: 'opacity(0)', pointerEvents: 'none' };\n// role and role description go hand-in-hand. Both would be included by spreading getNativeProps for a basic element\n// This constant array can be used to filter these out of native props spread on callout root and apply them together on\n// calloutMain (the Popup component within the callout)\nconst ARIA_ROLE_ATTRIBUTES = ['role', 'aria-roledescription'];\n\nexport interface ICalloutState {\n positions?: ICalloutPositionedInfo;\n slideDirectionalClassName?: string;\n calloutElementRect?: ClientRect;\n heightOffset?: number;\n}\n\nexport class CalloutContentBase extends React.Component<ICalloutProps, ICalloutState> {\n public static defaultProps = {\n preventDismissOnLostFocus: false,\n preventDismissOnScroll: false,\n preventDismissOnResize: false,\n isBeakVisible: true,\n beakWidth: 16,\n gapSpace: 0,\n minPagePadding: 8,\n directionalHint: DirectionalHint.bottomAutoEdge,\n };\n\n private _classNames: { [key in keyof ICalloutContentStyles]: string };\n private _didSetInitialFocus: boolean;\n private _hostElement = React.createRef<HTMLDivElement>();\n private _calloutElement = React.createRef<HTMLDivElement>();\n private _targetWindow: Window;\n private _bounds: IRectangle | undefined;\n private _positionAttempts: number;\n private _target: Element | MouseEvent | Point | null;\n private _setHeightOffsetTimer: number;\n private _hasListeners = false;\n private _maxHeight: number | undefined;\n private _blockResetHeight: boolean;\n private _isMouseDownOnPopup: boolean;\n\n private _async: Async;\n private _disposables: (() => void)[] = [];\n\n constructor(props: ICalloutProps) {\n super(props);\n\n this._async = new Async(this);\n this._didSetInitialFocus = false;\n this.state = {\n positions: undefined,\n slideDirectionalClassName: undefined,\n // @TODO it looks like this is not even being used anymore.\n calloutElementRect: undefined,\n heightOffset: 0,\n };\n this._positionAttempts = 0;\n }\n\n public componentDidUpdate() {\n if (!this.props.hidden) {\n this._setInitialFocus();\n if (!this._hasListeners) {\n this._addListeners();\n }\n this._updateAsyncPosition();\n } else {\n if (this._hasListeners) {\n this._removeListeners();\n }\n }\n }\n\n public shouldComponentUpdate(newProps: ICalloutProps, newState: ICalloutState): boolean {\n if (!newProps.shouldUpdateWhenHidden && this.props.hidden && newProps.hidden) {\n // Do not update when hidden.\n return false;\n }\n\n return !shallowCompare(this.props, newProps) || !shallowCompare(this.state, newState);\n }\n\n public UNSAFE_componentWillMount() {\n this._setTargetWindowAndElement(this._getTarget());\n }\n\n public componentWillUnmount() {\n this._async.dispose();\n this._disposables.forEach((dispose: () => void) => dispose());\n }\n\n public UNSAFE_componentWillUpdate(newProps: ICalloutProps): void {\n // If the target element changed, find the new one. If we are tracking target with class name, always find element\n // because we do not know if fabric has rendered a new element and disposed the old element.\n const newTarget = this._getTarget(newProps);\n const oldTarget = this._getTarget();\n if (\n (newTarget !== oldTarget || typeof newTarget === 'string' || newTarget instanceof String) &&\n !this._blockResetHeight\n ) {\n this._maxHeight = undefined;\n this._setTargetWindowAndElement(newTarget!);\n }\n if (newProps.gapSpace !== this.props.gapSpace || this.props.beakWidth !== newProps.beakWidth) {\n this._maxHeight = undefined;\n }\n\n if (newProps.finalHeight !== this.props.finalHeight) {\n this._setHeightOffsetEveryFrame();\n }\n\n // Ensure positioning is recalculated when we are about to show a persisted menu.\n if (this._didPositionPropsChange(newProps, this.props)) {\n this._maxHeight = undefined;\n // Target might have been updated while hidden.\n this._setTargetWindowAndElement(newTarget);\n this.setState({\n positions: undefined,\n });\n this._didSetInitialFocus = false;\n this._bounds = undefined;\n }\n\n this._blockResetHeight = false;\n }\n\n public componentDidMount(): void {\n if (!this.props.hidden) {\n this._onComponentDidMount();\n }\n }\n\n public render(): JSX.Element | null {\n // If there is no target window then we are likely in server side rendering and we should not render anything.\n if (!this._targetWindow) {\n return null;\n }\n let { target } = this.props;\n const {\n styles,\n style,\n ariaLabel,\n ariaDescribedBy,\n ariaLabelledBy,\n className,\n isBeakVisible,\n children,\n beakWidth,\n calloutWidth,\n calloutMaxWidth,\n calloutMinWidth,\n finalHeight,\n hideOverflow = !!finalHeight,\n backgroundColor,\n calloutMaxHeight,\n onScroll,\n // eslint-disable-next-line deprecation/deprecation\n shouldRestoreFocus = true,\n } = this.props;\n target = this._getTarget();\n const { positions } = this.state;\n\n const getContentMaxHeight: number | undefined = this._getMaxHeight()\n ? this._getMaxHeight()! + this.state.heightOffset!\n : undefined;\n const contentMaxHeight: number | undefined =\n calloutMaxHeight! && getContentMaxHeight && calloutMaxHeight! < getContentMaxHeight\n ? calloutMaxHeight!\n : getContentMaxHeight!;\n const overflowYHidden = hideOverflow;\n\n const beakVisible = isBeakVisible && !!target;\n this._classNames = getClassNames(styles!, {\n theme: this.props.theme!,\n className,\n overflowYHidden: overflowYHidden,\n calloutWidth,\n positions,\n beakWidth,\n backgroundColor,\n calloutMinWidth,\n calloutMaxWidth,\n });\n\n const overflowStyle: React.CSSProperties = {\n ...style,\n maxHeight: contentMaxHeight,\n ...(overflowYHidden && { overflowY: 'hidden' }),\n };\n\n const visibilityStyle: React.CSSProperties | undefined = this.props.hidden ? { visibility: 'hidden' } : undefined;\n // React.CSSProperties does not understand IRawStyle, so the inline animations will need to be cast as any for now.\n const content = (\n <div ref={this._hostElement} className={this._classNames.container} style={visibilityStyle}>\n <div\n {...getNativeProps(this.props, divProperties, ARIA_ROLE_ATTRIBUTES)}\n className={css(this._classNames.root, positions && positions.targetEdge && ANIMATIONS[positions.targetEdge!])}\n style={positions ? positions.elementPosition : OFF_SCREEN_STYLE}\n // Safari and Firefox on Mac OS requires this to back-stop click events so focus remains in the Callout.\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n tabIndex={-1}\n ref={this._calloutElement}\n >\n {beakVisible && <div className={this._classNames.beak} style={this._getBeakPosition()} />}\n {beakVisible && <div className={this._classNames.beakCurtain} />}\n <Popup\n {...getNativeProps(this.props, ARIA_ROLE_ATTRIBUTES)}\n ariaLabel={ariaLabel}\n onRestoreFocus={this.props.onRestoreFocus}\n ariaDescribedBy={ariaDescribedBy}\n ariaLabelledBy={ariaLabelledBy}\n className={this._classNames.calloutMain}\n onDismiss={this.dismiss}\n onScroll={onScroll}\n shouldRestoreFocus={shouldRestoreFocus}\n style={overflowStyle}\n onMouseDown={this._mouseDownOnPopup}\n onMouseUp={this._mouseUpOnPopup}\n >\n {children}\n </Popup>\n </div>\n </div>\n );\n\n return content;\n }\n\n public dismiss = (ev?: Event | React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\n const { onDismiss } = this.props;\n\n if (onDismiss) {\n onDismiss(ev);\n }\n };\n\n protected _dismissOnScroll = (ev: Event) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnScroll } = this.props;\n if (\n this.state.positions &&\n ((preventDismissOnEvent && !preventDismissOnEvent(ev)) || (!preventDismissOnEvent && !preventDismissOnScroll))\n ) {\n this._dismissOnClickOrScroll(ev);\n }\n };\n\n protected _dismissOnResize = (ev: Event) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnResize } = this.props;\n if ((preventDismissOnEvent && !preventDismissOnEvent(ev)) || (!preventDismissOnEvent && !preventDismissOnResize)) {\n this.dismiss(ev);\n }\n };\n\n protected _dismissOnLostFocus = (ev: Event) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnLostFocus } = this.props;\n if (\n (preventDismissOnEvent && !preventDismissOnEvent(ev)) ||\n (!preventDismissOnEvent && !preventDismissOnLostFocus)\n ) {\n this._dismissOnClickOrScroll(ev);\n }\n };\n\n protected _setInitialFocus = (): void => {\n if (\n this.props.setInitialFocus &&\n !this._didSetInitialFocus &&\n this.state.positions &&\n this._calloutElement.current\n ) {\n this._didSetInitialFocus = true;\n this._async.requestAnimationFrame(\n () => focusFirstChild(this._calloutElement.current!),\n this._calloutElement.current,\n );\n }\n };\n\n protected _onComponentDidMount = (): void => {\n this._addListeners();\n\n if (this.props.onLayerMounted) {\n this.props.onLayerMounted();\n }\n\n this._updateAsyncPosition();\n this._setHeightOffsetEveryFrame();\n };\n\n private _dismissOnClickOrScroll(ev: Event) {\n const target = ev.target as HTMLElement;\n const isEventTargetOutsideCallout =\n this._hostElement.current && !elementContains(this._hostElement.current, target);\n\n // If mouse is pressed down on callout but moved outside then released, don't dismiss the callout.\n if (isEventTargetOutsideCallout && this._isMouseDownOnPopup) {\n this._isMouseDownOnPopup = false;\n return;\n }\n\n if (\n (!this._target && isEventTargetOutsideCallout) ||\n (ev.target !== this._targetWindow &&\n isEventTargetOutsideCallout &&\n ((this._target as MouseEvent).stopPropagation ||\n !this._target ||\n this.props.dismissOnTargetClick ||\n (target !== this._target && !elementContains(this._target as HTMLElement, target))))\n ) {\n this.dismiss(ev);\n }\n }\n\n private _dismissOnTargetWindowBlur = (ev: FocusEvent) => {\n // eslint-disable-next-line deprecation/deprecation\n const { preventDismissOnEvent, preventDismissOnLostFocus, shouldDismissOnWindowFocus } = this.props;\n\n // Do nothing\n if (!shouldDismissOnWindowFocus) {\n return;\n }\n\n if (\n ((preventDismissOnEvent && !preventDismissOnEvent(ev)) ||\n (!preventDismissOnEvent && !preventDismissOnLostFocus)) &&\n !this._targetWindow.document.hasFocus() &&\n ev.relatedTarget === null\n ) {\n this.dismiss(ev);\n }\n };\n\n private _addListeners() {\n // This is added so the callout will dismiss when the window is scrolled\n // but not when something inside the callout is scrolled. The delay seems\n // to be required to avoid React firing an async focus event in IE from\n // the target changing focus quickly prior to rendering the callout.\n this._async.setTimeout(() => {\n this._disposables.push(\n on(this._targetWindow, 'scroll', this._dismissOnScroll, true),\n on(this._targetWindow, 'resize', this._dismissOnResize, true),\n on(this._targetWindow.document.documentElement, 'focus', this._dismissOnLostFocus, true),\n on(this._targetWindow.document.documentElement, 'click', this._dismissOnLostFocus, true),\n on(this._targetWindow, 'blur', this._dismissOnTargetWindowBlur, true),\n );\n this._hasListeners = true;\n }, 0);\n }\n\n private _removeListeners() {\n this._disposables.forEach((dispose: () => void) => dispose());\n this._disposables = [];\n this._hasListeners = false;\n }\n\n private _updateAsyncPosition(): void {\n this._async.requestAnimationFrame(() => this._updatePosition(), this._calloutElement.current);\n }\n\n private _getBeakPosition(): React.CSSProperties {\n const { positions } = this.state;\n const beakPostionStyle: React.CSSProperties = {\n ...(positions && positions.beakPosition ? positions.beakPosition.elementPosition : null),\n };\n\n if (!beakPostionStyle.top && !beakPostionStyle.bottom && !beakPostionStyle.left && !beakPostionStyle.right) {\n beakPostionStyle.left = BEAK_ORIGIN_POSITION.left;\n beakPostionStyle.top = BEAK_ORIGIN_POSITION.top;\n }\n\n return beakPostionStyle;\n }\n\n private _updatePosition(): void {\n // Try to update the target, page might have changed\n this._setTargetWindowAndElement(this._getTarget());\n\n const { positions } = this.state;\n const hostElement: HTMLElement | null = this._hostElement.current;\n const calloutElement: HTMLElement | null = this._calloutElement.current;\n\n // If we expect a target element to position against, we need to wait until `this._target` is resolved. Otherwise\n // we can try to position.\n const expectsTarget = !!this.props.target;\n\n if (hostElement && calloutElement && (!expectsTarget || this._target)) {\n const currentProps: IPositionProps = { ...(this.props as any) };\n currentProps.bounds = this._getBounds();\n currentProps.target = this._target!;\n // If there is a finalHeight given then we assume that the user knows and will handle\n // additional positioning adjustments so we should call positionCard\n const newPositions: ICalloutPositionedInfo = this.props.finalHeight\n ? positionCard(currentProps, hostElement, calloutElement, positions)\n : positionCallout(currentProps, hostElement, calloutElement, positions);\n\n // Set the new position only when the positions are not exists or one of the new callout positions are different.\n // The position should not change if the position is within 2 decimal places.\n if (\n (!positions && newPositions) ||\n (positions && newPositions && !this._arePositionsEqual(positions, newPositions) && this._positionAttempts < 5)\n ) {\n // We should not reposition the callout more than a few times, if it is then the content is likely resizing\n // and we should stop trying to reposition to prevent a stack overflow.\n this._positionAttempts++;\n this.setState({\n positions: newPositions,\n });\n } else if (this._positionAttempts > 0) {\n // Only call the onPositioned callback if the callout has been re-positioned at least once.\n this._positionAttempts = 0;\n if (this.props.onPositioned) {\n this.props.onPositioned(this.state.positions);\n }\n }\n }\n }\n\n private _getBounds(): IRectangle {\n if (!this._bounds) {\n const bounds = this.props.bounds;\n let currentBounds = typeof bounds === 'function' ? bounds(this.props.target, this._targetWindow) : bounds;\n\n if (!currentBounds) {\n currentBounds = getBoundsFromTargetWindow(this._target, this._targetWindow);\n currentBounds = {\n top: currentBounds.top + this.props.minPagePadding!,\n left: currentBounds.left + this.props.minPagePadding!,\n right: currentBounds.right! - this.props.minPagePadding!,\n bottom: currentBounds.bottom! - this.props.minPagePadding!,\n width: currentBounds.width - this.props.minPagePadding! * 2,\n height: currentBounds.height - this.props.minPagePadding! * 2,\n };\n }\n this._bounds = currentBounds;\n }\n return this._bounds;\n }\n\n // Max height should remain as synchronous as possible, which is why it is not done using set state.\n // It needs to be synchronous since it will impact the ultimate position of the callout.\n private _getMaxHeight(): number | undefined {\n if (!this._maxHeight) {\n if (this.props.directionalHintFixed && this._target) {\n const beakWidth = this.props.isBeakVisible ? this.props.beakWidth : 0;\n const gapSpace = this.props.gapSpace ? this.props.gapSpace : 0;\n // Since the callout cannot measure it's border size it must be taken into account here. Otherwise it will\n // overlap with the target.\n const totalGap = gapSpace + beakWidth!;\n this._async.requestAnimationFrame(() => {\n if (this._target) {\n this._maxHeight = getMaxHeight(\n this._target,\n this.props.directionalHint!,\n totalGap,\n this._getBounds(),\n this.props.coverTarget,\n );\n this._blockResetHeight = true;\n this.forceUpdate();\n }\n }, this._target as Element);\n } else {\n this._maxHeight = this._getBounds().height!;\n }\n }\n return this._maxHeight!;\n }\n\n private _arePositionsEqual(positions: ICalloutPositionedInfo, newPosition: ICalloutPositionedInfo): boolean {\n return (\n this._comparePositions(positions.elementPosition, newPosition.elementPosition) &&\n this._comparePositions(positions.beakPosition.elementPosition, newPosition.beakPosition.elementPosition)\n );\n }\n\n private _comparePositions(oldPositions: IPosition, newPositions: IPosition): boolean {\n for (const key in newPositions) {\n if (newPositions.hasOwnProperty(key)) {\n const oldPositionEdge = oldPositions[key];\n const newPositionEdge = newPositions[key];\n\n if (oldPositionEdge !== undefined && newPositionEdge !== undefined) {\n if (oldPositionEdge.toFixed(2) !== newPositionEdge.toFixed(2)) {\n return false;\n }\n } else {\n return false;\n }\n }\n }\n return true;\n }\n\n private _setTargetWindowAndElement(target: Target): void {\n const currentElement = this._calloutElement.current;\n\n if (target) {\n if (typeof target === 'string') {\n const currentDoc: Document = getDocument(currentElement)!;\n this._target = currentDoc ? (currentDoc.querySelector(target) as Element) : null;\n this._targetWindow = getWindow(currentElement)!;\n // Cast to any prevents error about stopPropagation always existing\n } else if ((target as any).stopPropagation) {\n this._targetWindow = getWindow((target as MouseEvent).target as HTMLElement)!;\n this._target = target as MouseEvent;\n // Same reason here\n } else if ((target as any).getBoundingClientRect) {\n const targetElement: Element = target as Element;\n this._targetWindow = getWindow(targetElement)!;\n this._target = targetElement;\n } else if ((target as React.RefObject<Element>).current !== undefined) {\n this._target = (target as React.RefObject<Element>).current;\n this._targetWindow = getWindow(this._target)!;\n // HTMLImgElements can have x and y values. The check for it being a point must go last.\n } else {\n this._targetWindow = getWindow(currentElement)!;\n this._target = target as Point;\n }\n } else {\n this._targetWindow = getWindow(currentElement)!;\n }\n }\n\n private _setHeightOffsetEveryFrame(): void {\n if (this._calloutElement.current && this.props.finalHeight) {\n this._setHeightOffsetTimer = this._async.requestAnimationFrame(() => {\n const calloutMainElem = this._calloutElement.current && (this._calloutElement.current.lastChild as HTMLElement);\n\n if (!calloutMainElem) {\n return;\n }\n\n const cardScrollHeight: number = calloutMainElem.scrollHeight;\n const cardCurrHeight: number = calloutMainElem.offsetHeight;\n const scrollDiff: number = cardScrollHeight - cardCurrHeight;\n\n this.setState({\n heightOffset: this.state.heightOffset! + scrollDiff,\n });\n\n if (calloutMainElem.offsetHeight < this.props.finalHeight!) {\n this._setHeightOffsetEveryFrame();\n } else {\n this._async.cancelAnimationFrame(this._setHeightOffsetTimer, this._calloutElement.current);\n }\n }, this._calloutElement.current);\n }\n }\n\n // Whether or not the current positions should be reset\n private _didPositionPropsChange(newProps: ICalloutProps, oldProps: ICalloutProps): boolean {\n return (\n (!newProps.hidden && newProps.hidden !== oldProps.hidden) ||\n newProps.directionalHint !== oldProps.directionalHint ||\n newProps.target !== oldProps.target\n );\n }\n\n private _getTarget(props: ICalloutProps = this.props): Target {\n const { target } = props;\n return target!;\n }\n\n private _mouseDownOnPopup = () => {\n this._isMouseDownOnPopup = true;\n };\n\n private _mouseUpOnPopup = () => {\n this._isMouseDownOnPopup = false;\n };\n}\n","import { HighContrastSelector, IRawStyle, focusClear, getGlobalClassNames } from '../../Styling';\nimport { ICalloutContentStyleProps, ICalloutContentStyles } from './Callout.types';\n\nfunction getBeakStyle(beakWidth?: number): IRawStyle {\n return {\n height: beakWidth,\n width: beakWidth,\n };\n}\n\nconst GlobalClassNames = {\n container: 'ms-Callout-container',\n root: 'ms-Callout',\n beak: 'ms-Callout-beak',\n beakCurtain: 'ms-Callout-beakCurtain',\n calloutMain: 'ms-Callout-main',\n};\n\nexport const getStyles = (props: ICalloutContentStyleProps): ICalloutContentStyles => {\n const {\n theme,\n className,\n overflowYHidden,\n calloutWidth,\n beakWidth,\n backgroundColor,\n calloutMaxWidth,\n calloutMinWidth,\n } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const { semanticColors, effects } = theme;\n\n return {\n container: [\n classNames.container,\n {\n position: 'relative',\n },\n ],\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n position: 'absolute',\n boxSizing: 'border-box',\n borderRadius: effects.roundedCorner2,\n boxShadow: effects.elevation16,\n selectors: {\n [HighContrastSelector]: {\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: 'WindowText',\n },\n },\n },\n focusClear(),\n className,\n !!calloutWidth && { width: calloutWidth },\n !!calloutMaxWidth && { maxWidth: calloutMaxWidth },\n !!calloutMinWidth && { minWidth: calloutMinWidth },\n ],\n beak: [\n classNames.beak,\n {\n position: 'absolute',\n backgroundColor: semanticColors.menuBackground,\n boxShadow: 'inherit',\n border: 'inherit',\n boxSizing: 'border-box',\n transform: 'rotate(45deg)',\n },\n getBeakStyle(beakWidth),\n backgroundColor && {\n backgroundColor: backgroundColor,\n },\n ],\n beakCurtain: [\n classNames.beakCurtain,\n {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: semanticColors.menuBackground,\n borderRadius: effects.roundedCorner2,\n },\n ],\n calloutMain: [\n classNames.calloutMain,\n {\n backgroundColor: semanticColors.menuBackground,\n overflowX: 'hidden',\n overflowY: 'auto',\n position: 'relative',\n borderRadius: effects.roundedCorner2,\n },\n overflowYHidden && {\n overflowY: 'hidden',\n },\n backgroundColor && {\n backgroundColor: backgroundColor,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ICalloutProps, ICalloutContentStyles, ICalloutContentStyleProps } from './Callout.types';\nimport { CalloutContentBase } from './CalloutContent.base';\nimport { getStyles } from './CalloutContent.styles';\n\nexport const CalloutContent: React.FunctionComponent<ICalloutProps> = styled<\n ICalloutProps,\n ICalloutContentStyleProps,\n ICalloutContentStyles\n>(CalloutContentBase, getStyles, undefined, { scope: 'CalloutContent' });\n","import { ISettings, ISettingsFunction } from './Customizations';\n\n/**\n * Merge new and old settings, giving priority to new settings.\n * New settings is optional in which case oldSettings is returned as-is.\n * @param oldSettings - Old settings to fall back to.\n * @param newSettings - New settings that will be merged over oldSettings.\n * @returns Merged settings.\n */\nexport function mergeSettings(oldSettings: ISettings = {}, newSettings?: ISettings | ISettingsFunction): ISettings {\n const mergeSettingsWith = _isSettingsFunction(newSettings) ? newSettings : _settingsMergeWith(newSettings);\n\n return mergeSettingsWith(oldSettings);\n}\n\nexport function mergeScopedSettings(\n oldSettings: ISettings = {},\n newSettings?: ISettings | ISettingsFunction,\n): ISettings {\n const mergeSettingsWith = _isSettingsFunction(newSettings) ? newSettings : _scopedSettingsMergeWith(newSettings);\n\n return mergeSettingsWith(oldSettings);\n}\n\nfunction _isSettingsFunction(settings?: ISettings | ISettingsFunction): settings is ISettingsFunction {\n return typeof settings === 'function';\n}\n\nfunction _settingsMergeWith(newSettings?: object): (settings: ISettings) => ISettings {\n return (settings: ISettings) => (newSettings ? { ...settings, ...newSettings } : settings);\n}\n\nfunction _scopedSettingsMergeWith(scopedSettingsFromProps: ISettings = {}): (scopedSettings: ISettings) => ISettings {\n return (oldScopedSettings: ISettings): ISettings => {\n const newScopedSettings: ISettings = { ...oldScopedSettings };\n\n for (let scopeName in scopedSettingsFromProps) {\n if (scopedSettingsFromProps.hasOwnProperty(scopeName)) {\n newScopedSettings[scopeName] = { ...oldScopedSettings[scopeName], ...scopedSettingsFromProps[scopeName] };\n }\n }\n\n return newScopedSettings;\n };\n}\n","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { CustomizerContext, ICustomizerContext } from './CustomizerContext';\nimport { mergeCustomizations } from './mergeCustomizations';\nimport { ICustomizerProps } from './Customizer.types';\n\n/**\n * The Customizer component allows for default props to be mixed into components which\n * are decorated with the customizable() decorator, or use the styled HOC. This enables\n * injection scenarios like:\n *\n * 1. render svg icons instead of the icon font within all buttons\n * 2. inject a custom theme object into a component\n *\n * Props are provided via the settings prop which should be one of the following:\n * - A json map which contains 1 or more name/value pairs representing injectable props.\n * - A function that receives the current settings and returns the new ones that apply to the scope\n *\n * @public\n */\nexport class Customizer extends React.Component<ICustomizerProps> {\n public componentDidMount(): void {\n Customizations.observe(this._onCustomizationChange);\n }\n\n public componentWillUnmount(): void {\n Customizations.unobserve(this._onCustomizationChange);\n }\n\n public render(): React.ReactElement<{}> {\n const { contextTransform } = this.props;\n return (\n <CustomizerContext.Consumer>\n {(parentContext: ICustomizerContext) => {\n let newContext = mergeCustomizations(this.props, parentContext);\n\n if (contextTransform) {\n newContext = contextTransform(newContext);\n }\n\n return <CustomizerContext.Provider value={newContext}>{this.props.children}</CustomizerContext.Provider>;\n }}\n </CustomizerContext.Consumer>\n );\n }\n\n private _onCustomizationChange = () => this.forceUpdate();\n}\n","import { mergeSettings, mergeScopedSettings } from './mergeSettings';\nimport { ICustomizerProps } from './Customizer.types';\nimport { ICustomizerContext } from './CustomizerContext';\n\n/**\n * Merge props and customizations giving priority to props over context.\n * NOTE: This function will always perform multiple merge operations. Use with caution.\n * @param props - New settings to merge in.\n * @param parentContext - Context containing current settings.\n * @returns Merged customizations.\n */\nexport function mergeCustomizations(props: ICustomizerProps, parentContext: ICustomizerContext): ICustomizerContext {\n const { customizations = { settings: {}, scopedSettings: {} } } = parentContext || {};\n\n return {\n customizations: {\n settings: mergeSettings(customizations.settings, props.settings),\n scopedSettings: mergeScopedSettings(customizations.scopedSettings, props.scopedSettings),\n inCustomizerContext: true,\n },\n };\n}\n","import * as React from 'react';\nimport {\n Customizer,\n getNativeProps,\n divProperties,\n classNamesFunction,\n getDocument,\n memoizeFunction,\n getRTL,\n FocusRects,\n} from '../../Utilities';\nimport { IFabricProps, IFabricStyleProps, IFabricStyles } from './Fabric.types';\nimport { IProcessedStyleSet } from '@uifabric/merge-styles';\nimport { ITheme, createTheme } from '../../Styling';\n\nconst getClassNames = classNamesFunction<IFabricStyleProps, IFabricStyles>();\nconst getFabricTheme = memoizeFunction((theme?: ITheme, isRTL?: boolean) => createTheme({ ...theme, rtl: isRTL }));\n\nconst getDir = (theme?: ITheme, dir?: IFabricProps['dir']) => {\n const contextDir = getRTL(theme) ? 'rtl' : 'ltr';\n const pageDir = getRTL() ? 'rtl' : 'ltr';\n const componentDir = dir ? dir : contextDir;\n return {\n // If Fabric dir !== contextDir\n // Or If contextDir !== pageDir\n // Then we need to set dir of the Fabric root\n rootDir: componentDir !== contextDir || componentDir !== pageDir ? componentDir : dir,\n // If dir !== contextDir || pageDir\n // then set contextual theme around content\n needsTheme: componentDir !== contextDir,\n };\n};\n\nexport class FabricBase extends React.Component<IFabricProps> {\n private _rootElement = React.createRef<HTMLDivElement>();\n private _removeClassNameFromBody?: () => void = undefined;\n\n public render() {\n const { as: Root = 'div', theme, dir } = this.props;\n const classNames = this._getClassNames();\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, ['dir']);\n const { rootDir, needsTheme } = getDir(theme, dir);\n\n let renderedContent = <Root dir={rootDir} {...divProps} className={classNames.root} ref={this._rootElement} />;\n\n if (needsTheme) {\n renderedContent = (\n <Customizer settings={{ theme: getFabricTheme(theme, dir === 'rtl') }}>{renderedContent}</Customizer>\n );\n }\n\n return (\n <>\n {renderedContent}\n <FocusRects rootRef={this._rootElement} />\n </>\n );\n }\n\n public componentDidMount(): void {\n this._addClassNameToBody();\n }\n\n public componentWillUnmount(): void {\n if (this._removeClassNameFromBody) {\n this._removeClassNameFromBody();\n }\n }\n\n private _getClassNames(): IProcessedStyleSet<IFabricStyles> {\n const { className, theme, applyTheme, styles } = this.props;\n const classNames = getClassNames(styles, {\n theme: theme!,\n applyTheme: applyTheme,\n className,\n });\n return classNames;\n }\n\n private _addClassNameToBody(): void {\n if (this.props.applyThemeToBody) {\n const classNames = this._getClassNames();\n const currentDoc = getDocument(this._rootElement.current);\n if (currentDoc) {\n currentDoc.body.classList.add(classNames.bodyThemed);\n this._removeClassNameFromBody = () => {\n currentDoc.body.classList.remove(classNames.bodyThemed);\n };\n }\n }\n }\n}\n","import { getGlobalClassNames } from '../../Styling';\nimport { IFabricStyleProps, IFabricStyles } from './Fabric.types';\n\nconst inheritFont = { fontFamily: 'inherit' };\n\nconst GlobalClassNames = {\n root: 'ms-Fabric',\n bodyThemed: 'ms-Fabric-bodyThemed',\n};\n\nexport interface IFabricClassNames {\n root: string;\n bodyThemed: string;\n}\n\nexport const getStyles = (props: IFabricStyleProps): IFabricStyles => {\n const { theme, className, applyTheme } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n color: theme.palette.neutralPrimary,\n selectors: {\n '& button': inheritFont,\n '& input': inheritFont,\n '& textarea': inheritFont,\n },\n },\n // apply theme to only if applyTheme is true\n applyTheme && {\n color: theme.semanticColors.bodyText,\n backgroundColor: theme.semanticColors.bodyBackground,\n },\n className,\n ],\n bodyThemed: [\n {\n backgroundColor: theme.semanticColors.bodyBackground,\n },\n ],\n };\n};\n","import { styled } from '../../Utilities';\nimport { FabricBase } from './Fabric.base';\nimport { getStyles } from './Fabric.styles';\nimport { IFabricProps, IFabricStyleProps, IFabricStyles } from './Fabric.types';\n\nexport const Fabric = styled<IFabricProps, IFabricStyleProps, IFabricStyles, FabricBase>(\n FabricBase,\n getStyles,\n undefined,\n {\n scope: 'Fabric',\n },\n);\n","import { IVirtualElement } from './IVirtualElement';\n/**\n * Sets the virtual parent of an element.\n * Pass `undefined` as the `parent` to clear the virtual parent.\n *\n * @public\n */\nexport function setVirtualParent(child: HTMLElement, parent: HTMLElement | null): void {\n const virtualChild = <IVirtualElement>child;\n const virtualParent = <IVirtualElement | null>parent;\n\n if (!virtualChild._virtual) {\n virtualChild._virtual = {\n children: [],\n };\n }\n\n const oldParent = virtualChild._virtual.parent;\n\n if (oldParent && oldParent !== parent) {\n // Remove the child from its old parent.\n const index = oldParent._virtual.children.indexOf(virtualChild);\n\n if (index > -1) {\n oldParent._virtual.children.splice(index, 1);\n }\n }\n\n virtualChild._virtual.parent = virtualParent || undefined;\n\n if (virtualParent) {\n if (!virtualParent._virtual) {\n virtualParent._virtual = {\n children: [],\n };\n }\n\n virtualParent._virtual.children.push(virtualChild);\n }\n}\n","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { hoistStatics } from '../hoistStatics';\nimport { CustomizerContext, ICustomizerContext } from './CustomizerContext';\nimport { concatStyleSets } from '@uifabric/merge-styles';\n\nexport function customizable(\n scope: string,\n fields: string[],\n concatStyles?: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): <P>(ComposedComponent: React.ComponentType<P>) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function customizableFactory<P>(ComposedComponent: React.ComponentType<P>): any {\n const resultClass = class ComponentWithInjectedProps extends React.Component<P, {}> {\n public static displayName: string = 'Customized' + scope;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _styleCache: { default?: any; component?: any; merged?: any } = {};\n\n constructor(props: P) {\n super(props);\n\n this._onSettingChanged = this._onSettingChanged.bind(this);\n }\n\n public componentDidMount(): void {\n Customizations.observe(this._onSettingChanged);\n }\n\n public componentWillUnmount(): void {\n Customizations.unobserve(this._onSettingChanged);\n }\n\n public render(): JSX.Element {\n return (\n <CustomizerContext.Consumer>\n {(context: ICustomizerContext) => {\n const defaultProps = Customizations.getSettings(fields, scope, context.customizations);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const componentProps = this.props as any;\n\n // If defaultProps.styles is a function, evaluate it before calling concatStyleSets\n if (defaultProps.styles && typeof defaultProps.styles === 'function') {\n defaultProps.styles = defaultProps.styles({ ...defaultProps, ...componentProps });\n }\n\n // If concatStyles is true and custom styles have been defined compute those styles\n if (concatStyles && defaultProps.styles) {\n if (\n this._styleCache.default !== defaultProps.styles ||\n this._styleCache.component !== componentProps.styles\n ) {\n const mergedStyles = concatStyleSets(defaultProps.styles, componentProps.styles);\n this._styleCache.default = defaultProps.styles;\n this._styleCache.component = componentProps.styles;\n this._styleCache.merged = mergedStyles;\n }\n\n return <ComposedComponent {...defaultProps} {...componentProps} styles={this._styleCache.merged} />;\n }\n\n return <ComposedComponent {...defaultProps} {...componentProps} />;\n }}\n </CustomizerContext.Consumer>\n );\n }\n\n private _onSettingChanged(): void {\n this.forceUpdate();\n }\n };\n\n return hoistStatics(ComposedComponent, resultClass);\n };\n}\n","const _layersByHostId: { [hostId: string]: (() => void)[] } = {};\n\nlet _defaultHostSelector: string | undefined;\n\n/**\n * Register a layer for a given host id\n * @param hostId Id of the layer host\n * @param layer Layer instance\n */\nexport function registerLayer(hostId: string, callback: () => void) {\n if (!_layersByHostId[hostId]) {\n _layersByHostId[hostId] = [];\n }\n\n _layersByHostId[hostId].push(callback);\n}\n\n/**\n * Unregister a layer for a given host id\n * @param hostId Id of the layer host\n * @param layer Layer instance\n */\nexport function unregisterLayer(hostId: string, callback: () => void) {\n if (_layersByHostId[hostId]) {\n const idx = _layersByHostId[hostId].indexOf(callback);\n if (idx >= 0) {\n _layersByHostId[hostId].splice(idx, 1);\n if (_layersByHostId[hostId].length === 0) {\n delete _layersByHostId[hostId];\n }\n }\n }\n}\n\n/**\n * Used for notifying applicable Layers that a host is available/unavailable and to re-evaluate Layers that\n * care about the specific host.\n */\nexport function notifyHostChanged(id: string) {\n if (_layersByHostId[id]) {\n _layersByHostId[id].forEach(callback => callback());\n }\n}\n\n/**\n * Sets the default target selector to use when determining the host in which\n * Layered content will be injected into. If not provided, an element will be\n * created at the end of the document body.\n *\n * Passing in a falsey value will clear the default target and reset back to\n * using a created element at the end of document body.\n */\nexport function setDefaultTarget(selector?: string) {\n _defaultHostSelector = selector;\n}\n\n/**\n * Get the default target selector when determining a host\n */\nexport function getDefaultTarget(): string | undefined {\n return _defaultHostSelector;\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\nimport { Fabric } from '../../Fabric';\nimport { ILayerProps, ILayerStyleProps, ILayerStyles } from './Layer.types';\nimport {\n classNamesFunction,\n customizable,\n getDocument,\n setPortalAttribute,\n setVirtualParent,\n warnDeprecations,\n} from '../../Utilities';\nimport { registerLayer, getDefaultTarget, unregisterLayer } from './Layer.notification';\n\nexport type ILayerBaseState = {\n hostId?: string;\n layerElement?: HTMLElement;\n};\n\nconst getClassNames = classNamesFunction<ILayerStyleProps, ILayerStyles>();\n\n@customizable('Layer', ['theme', 'hostId'])\nexport class LayerBase extends React.Component<ILayerProps, ILayerBaseState> {\n public static defaultProps: ILayerProps = {\n onLayerDidMount: () => undefined,\n onLayerWillUnmount: () => undefined,\n };\n\n private _rootRef = React.createRef<HTMLSpanElement>();\n\n constructor(props: ILayerProps) {\n super(props);\n\n this.state = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations('Layer', props, {\n onLayerMounted: 'onLayerDidMount',\n });\n }\n }\n\n public componentDidMount(): void {\n const { hostId } = this.props;\n\n this._createLayerElement();\n\n if (hostId) {\n registerLayer(hostId, this._createLayerElement);\n }\n }\n\n public render(): React.ReactNode {\n const { layerElement } = this.state;\n const classNames = this._getClassNames();\n const { eventBubblingEnabled } = this.props;\n\n return (\n <span className=\"ms-layer\" ref={this._rootRef}>\n {layerElement &&\n ReactDOM.createPortal(\n <Fabric {...(!eventBubblingEnabled && _getFilteredEvents())} className={classNames.content}>\n {this.props.children}\n </Fabric>,\n layerElement,\n )}\n </span>\n );\n }\n\n public componentDidUpdate(): void {\n if (this.props.hostId !== this.state.hostId) {\n this._createLayerElement();\n }\n }\n\n public componentWillUnmount(): void {\n const { hostId } = this.props;\n\n this._removeLayerElement();\n if (hostId) {\n unregisterLayer(hostId, this._createLayerElement);\n }\n }\n\n private _createLayerElement = () => {\n const { hostId } = this.props;\n\n const doc = getDocument(this._rootRef.current);\n const host = this._getHost();\n\n if (!doc || !host) {\n return;\n }\n\n // If one was already existing, remove.\n this._removeLayerElement();\n\n const layerElement = doc.createElement('div');\n const classNames = this._getClassNames();\n\n layerElement.className = classNames.root!;\n setPortalAttribute(layerElement);\n setVirtualParent(layerElement, this._rootRef.current!);\n\n this.props.insertFirst ? host.insertBefore(layerElement, host.firstChild) : host.appendChild(layerElement);\n\n this.setState(\n {\n hostId,\n layerElement,\n },\n () => {\n // eslint-disable-next-line deprecation/deprecation\n const { onLayerDidMount, onLayerMounted } = this.props;\n if (onLayerMounted) {\n onLayerMounted();\n }\n\n if (onLayerDidMount) {\n onLayerDidMount();\n }\n },\n );\n };\n\n private _removeLayerElement(): void {\n const { onLayerWillUnmount } = this.props;\n const { layerElement } = this.state;\n\n if (layerElement) {\n setVirtualParent(layerElement, null);\n }\n\n if (onLayerWillUnmount) {\n onLayerWillUnmount();\n }\n\n if (layerElement && layerElement.parentNode) {\n const parentNode = layerElement.parentNode;\n if (parentNode) {\n parentNode.removeChild(layerElement);\n }\n }\n }\n\n private _getClassNames() {\n const { className, styles, theme } = this.props;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n isNotHost: !this.props.hostId,\n });\n\n return classNames;\n }\n\n private _getHost(): Node | undefined {\n const { hostId } = this.props;\n const doc = getDocument(this._rootRef.current);\n if (!doc) {\n return undefined;\n }\n\n if (hostId) {\n return doc.getElementById(hostId) as Node;\n } else {\n const defaultHostSelector = getDefaultTarget();\n return defaultHostSelector ? (doc.querySelector(defaultHostSelector) as Node) : doc.body;\n }\n }\n}\n\nconst _onFilterEvent = (ev: React.SyntheticEvent<HTMLElement>): void => {\n // We should just be able to check ev.bubble here and only stop events that are bubbling up. However, even though\n // mouseenter and mouseleave do NOT bubble up, they are showing up as bubbling. Therefore we stop events based on\n // event name rather than ev.bubble.\n if (\n ev.eventPhase === Event.BUBBLING_PHASE &&\n ev.type !== 'mouseenter' &&\n ev.type !== 'mouseleave' &&\n ev.type !== 'touchstart' &&\n ev.type !== 'touchend'\n ) {\n ev.stopPropagation();\n }\n};\n\nlet _filteredEventProps: { [key: string]: (ev: React.SyntheticEvent<HTMLElement, Event>) => void };\n\nfunction _getFilteredEvents() {\n if (!_filteredEventProps) {\n _filteredEventProps = {} as any;\n\n [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseOut',\n 'onMouseUp',\n 'onTouchMove',\n 'onTouchStart',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onFocus',\n 'onBlur',\n 'onChange',\n 'onInput',\n 'onInvalid',\n 'onSubmit',\n ].forEach(name => (_filteredEventProps[name] = _onFilterEvent));\n }\n\n return _filteredEventProps;\n}\n","import { ILayerStyleProps, ILayerStyles } from './Layer.types';\nimport { ZIndexes, getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Layer',\n rootNoHost: 'ms-Layer--fixed',\n content: 'ms-Layer-content',\n};\n\nexport const getStyles = (props: ILayerStyleProps): ILayerStyles => {\n const { className, isNotHost, theme } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n isNotHost && [\n classNames.rootNoHost,\n {\n position: 'fixed',\n zIndex: ZIndexes.Layer,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n visibility: 'hidden',\n },\n ],\n className,\n ],\n content: [\n classNames.content,\n {\n visibility: 'visible',\n },\n ],\n };\n};\n","export const KTP_PREFIX = 'ktp';\nexport const KTP_SEPARATOR = '-';\nexport const KTP_FULL_PREFIX = KTP_PREFIX + KTP_SEPARATOR;\nexport const DATAKTP_TARGET = 'data-ktp-target';\nexport const DATAKTP_EXECUTE_TARGET = 'data-ktp-execute-target';\nexport const DATAKTP_ARIA_TARGET = 'data-ktp-aria-target';\nexport const KTP_LAYER_ID = 'ktp-layer-id';\nexport const KTP_ARIA_SEPARATOR = ', ';\n\n// Events\nexport namespace KeytipEvents {\n export const KEYTIP_ADDED = 'keytipAdded';\n export const KEYTIP_REMOVED = 'keytipRemoved';\n export const KEYTIP_UPDATED = 'keytipUpdated';\n export const PERSISTED_KEYTIP_ADDED = 'persistedKeytipAdded';\n export const PERSISTED_KEYTIP_REMOVED = 'persistedKeytipRemoved';\n export const PERSISTED_KEYTIP_EXECUTE = 'persistedKeytipExecute';\n export const ENTER_KEYTIP_MODE = 'enterKeytipMode';\n export const EXIT_KEYTIP_MODE = 'exitKeytipMode';\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ILayerProps, ILayerStyleProps, ILayerStyles } from './Layer.types';\nimport { LayerBase } from './Layer.base';\nimport { getStyles } from './Layer.styles';\n\nexport const Layer: React.FunctionComponent<ILayerProps> = styled<ILayerProps, ILayerStyleProps, ILayerStyles>(\n LayerBase,\n getStyles,\n undefined,\n {\n scope: 'Layer',\n fields: ['hostId', 'theme', 'styles'],\n },\n);\n","import * as React from 'react';\nimport { ICalloutProps } from './Callout.types';\nimport { ICalloutState } from './CalloutContent.base';\nimport { CalloutContent } from './CalloutContent';\nimport { Layer } from '../../Layer';\n\nexport class Callout extends React.Component<ICalloutProps, ICalloutState> {\n public render(): JSX.Element {\n const { layerProps, ...rest } = this.props;\n const content = <CalloutContent {...rest} />;\n return this.props.doNotLayer ? content : <Layer {...layerProps}>{content}</Layer>;\n }\n}\n","import * as React from 'react';\nimport { hasSubmenu, getIsChecked } from '../../utilities/contextualMenu/index';\nimport { getRTL, initializeComponentRef } from '../../Utilities';\nimport { Icon } from '../../Icon';\nimport { IContextualMenuItemProps, IContextualMenuItemRenderFunctions } from './ContextualMenuItem.types';\n\nconst renderItemIcon = (props: IContextualMenuItemProps) => {\n const { item, hasIcons, classNames } = props;\n\n const { iconProps } = item;\n\n if (!hasIcons) {\n return null;\n }\n\n if (item.onRenderIcon) {\n return item.onRenderIcon(props);\n }\n\n return <Icon {...iconProps} className={classNames.icon} />;\n};\n\nconst renderCheckMarkIcon = ({ onCheckmarkClick, item, classNames }: IContextualMenuItemProps) => {\n const isItemChecked = getIsChecked(item);\n if (onCheckmarkClick) {\n // Ensures that the item is passed as the first argument to the checkmark click callback.\n const onClick = (e: React.MouseEvent<HTMLElement>) => onCheckmarkClick(item, e);\n\n return (\n <Icon\n iconName={item.canCheck !== false && isItemChecked ? 'CheckMark' : ''}\n className={classNames.checkmarkIcon}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={onClick}\n />\n );\n }\n return null;\n};\n\nconst renderItemName = ({ item, classNames }: IContextualMenuItemProps) => {\n /* eslint-disable deprecation/deprecation */\n if (item.text || item.name) {\n return <span className={classNames.label}>{item.text || item.name}</span>;\n }\n /* eslint-enable deprecation/deprecation */\n return null;\n};\n\nconst renderSecondaryText = ({ item, classNames }: IContextualMenuItemProps) => {\n if (item.secondaryText) {\n return <span className={classNames.secondaryText}>{item.secondaryText}</span>;\n }\n return null;\n};\n\nconst renderSubMenuIcon = ({ item, classNames, theme }: IContextualMenuItemProps) => {\n if (hasSubmenu(item)) {\n return (\n <Icon\n iconName={getRTL(theme) ? 'ChevronLeft' : 'ChevronRight'}\n {...item.submenuIconProps}\n className={classNames.subMenuIcon}\n />\n );\n }\n return null;\n};\n\nexport class ContextualMenuItemBase extends React.Component<IContextualMenuItemProps, {}> {\n constructor(props: IContextualMenuItemProps) {\n super(props);\n\n initializeComponentRef(this);\n }\n\n public render() {\n const { item, classNames } = this.props;\n const renderContent = item.onRenderContent || this._renderLayout;\n\n return (\n <div className={item.split ? classNames.linkContentMenu : classNames.linkContent}>\n {renderContent(this.props, {\n renderCheckMarkIcon,\n renderItemIcon,\n renderItemName,\n renderSecondaryText,\n renderSubMenuIcon,\n })}\n </div>\n );\n }\n\n public openSubMenu = (): void => {\n const { item, openSubMenu, getSubmenuTarget } = this.props;\n if (getSubmenuTarget) {\n const submenuTarget = getSubmenuTarget();\n if (hasSubmenu(item) && openSubMenu && submenuTarget) {\n openSubMenu(item, submenuTarget);\n }\n }\n };\n\n public dismissSubMenu = (): void => {\n const { item, dismissSubMenu } = this.props;\n if (hasSubmenu(item) && dismissSubMenu) {\n dismissSubMenu();\n }\n };\n\n public dismissMenu = (dismissAll?: boolean): void => {\n const { dismissMenu } = this.props;\n if (dismissMenu) {\n dismissMenu(undefined /* ev */, dismissAll);\n }\n };\n\n private _renderLayout(props: IContextualMenuItemProps, defaultRenders: IContextualMenuItemRenderFunctions) {\n return (\n <>\n {defaultRenders.renderCheckMarkIcon(props)}\n {defaultRenders.renderItemIcon(props)}\n {defaultRenders.renderItemName(props)}\n {defaultRenders.renderSecondaryText(props)}\n {defaultRenders.renderSubMenuIcon(props)}\n </>\n );\n }\n}\n","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyleSets, ITheme } from '../../Styling';\nimport { IVerticalDividerClassNames } from './VerticalDivider.types';\n\n/**\n * @deprecated use getStyles exported from VerticalDivider.styles.ts\n */\nexport const getDividerClassNames = memoizeFunction(\n // eslint-disable-next-line deprecation/deprecation\n (theme: ITheme): IVerticalDividerClassNames => {\n return mergeStyleSets({\n wrapper: {\n display: 'inline-flex',\n height: '100%',\n alignItems: 'center',\n },\n divider: {\n width: 1,\n height: '100%',\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n });\n },\n);\n","import {\n concatStyleSets,\n getFocusStyle,\n HighContrastSelector,\n IRawStyle,\n ITheme,\n getScreenSelector,\n ScreenWidthMaxMedium,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IMenuItemStyles } from './ContextualMenu.types';\nimport { memoizeFunction } from '../../Utilities';\n\nexport const CONTEXTUAL_MENU_ITEM_HEIGHT = 36;\n\nconst MediumScreenSelector = getScreenSelector(0, ScreenWidthMaxMedium);\n\nconst getItemHighContrastStyles = memoizeFunction(\n (): IRawStyle => {\n return {\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n };\n },\n);\n\nexport const getMenuItemStyles = memoizeFunction(\n (theme: ITheme): IMenuItemStyles => {\n const { semanticColors, fonts, palette } = theme;\n const ContextualMenuItemBackgroundHoverColor = semanticColors.menuItemBackgroundHovered;\n const ContextualMenuItemTextHoverColor = semanticColors.menuItemTextHovered;\n const ContextualMenuItemBackgroundSelectedColor = semanticColors.menuItemBackgroundPressed;\n const ContextualMenuItemDividerColor = semanticColors.bodyDivider;\n\n const menuItemStyles: IMenuItemStyles = {\n item: [\n fonts.medium,\n {\n color: semanticColors.bodyText,\n position: 'relative',\n boxSizing: 'border-box',\n },\n ],\n divider: {\n display: 'block',\n height: '1px',\n backgroundColor: ContextualMenuItemDividerColor,\n position: 'relative',\n },\n root: [\n getFocusStyle(theme),\n fonts.medium,\n {\n color: semanticColors.bodyText,\n backgroundColor: 'transparent',\n border: 'none',\n width: '100%',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n display: 'block',\n cursor: 'pointer',\n padding: '0px 8px 0 4px', // inner elements have a margin of 4px (4 + 4 = 8px as on right side)\n textAlign: 'left',\n },\n ],\n rootDisabled: {\n color: semanticColors.disabledBodyText,\n cursor: 'default',\n pointerEvents: 'none',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n opacity: 1,\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n rootHovered: {\n backgroundColor: ContextualMenuItemBackgroundHoverColor,\n color: ContextualMenuItemTextHoverColor,\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: palette.themeDarkAlt,\n },\n '.ms-ContextualMenu-submenuIcon': {\n color: palette.neutralPrimary,\n },\n },\n ...getItemHighContrastStyles(),\n },\n rootFocused: {\n backgroundColor: palette.white,\n ...getItemHighContrastStyles(),\n },\n rootChecked: {\n selectors: {\n '.ms-ContextualMenu-checkmarkIcon': {\n color: palette.neutralPrimary,\n },\n },\n ...getItemHighContrastStyles(),\n },\n rootPressed: {\n backgroundColor: ContextualMenuItemBackgroundSelectedColor,\n selectors: {\n '.ms-ContextualMenu-icon': {\n color: palette.themeDark,\n },\n '.ms-ContextualMenu-submenuIcon': {\n color: palette.neutralPrimary,\n },\n },\n ...getItemHighContrastStyles(),\n },\n rootExpanded: {\n backgroundColor: ContextualMenuItemBackgroundSelectedColor,\n color: semanticColors.bodyTextChecked,\n ...getItemHighContrastStyles(),\n },\n linkContent: {\n whiteSpace: 'nowrap',\n height: 'inherit',\n display: 'flex',\n alignItems: 'center',\n maxWidth: '100%',\n },\n anchorLink: {\n padding: '0px 8px 0 4px', // inner elements have a margin of 4px (4 + 4 = 8px as on right side)\n textRendering: 'auto',\n color: 'inherit',\n letterSpacing: 'normal',\n wordSpacing: 'normal',\n textTransform: 'none',\n textIndent: '0px',\n textShadow: 'none',\n textDecoration: 'none',\n boxSizing: 'border-box',\n },\n label: {\n margin: '0 4px',\n verticalAlign: 'middle',\n display: 'inline-block',\n flexGrow: '1',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n secondaryText: {\n color: theme.palette.neutralSecondary,\n paddingLeft: '20px',\n textAlign: 'right',\n },\n icon: {\n display: 'inline-block',\n minHeight: '1px',\n maxHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n fontSize: IconFontSizes.medium,\n width: IconFontSizes.medium,\n margin: '0 4px',\n verticalAlign: 'middle',\n flexShrink: '0',\n selectors: {\n [MediumScreenSelector]: {\n fontSize: IconFontSizes.large,\n width: IconFontSizes.large,\n },\n },\n },\n iconColor: {\n color: semanticColors.menuIcon,\n selectors: {\n [HighContrastSelector]: {\n color: 'inherit',\n },\n ['$root:hover &']: {\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n ['$root:focus &']: {\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n },\n },\n iconDisabled: {\n color: semanticColors.disabledBodyText,\n },\n checkmarkIcon: {\n color: semanticColors.bodySubtext,\n selectors: {\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n subMenuIcon: {\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n color: palette.neutralSecondary,\n textAlign: 'center',\n display: 'inline-block',\n verticalAlign: 'middle',\n flexShrink: '0',\n fontSize: IconFontSizes.small, // 12px\n selectors: {\n ':hover': {\n color: palette.neutralPrimary,\n },\n ':active': {\n color: palette.neutralPrimary,\n },\n [MediumScreenSelector]: {\n fontSize: IconFontSizes.medium, // 16px\n },\n [HighContrastSelector]: {\n color: 'HighlightText',\n },\n },\n },\n splitButtonFlexContainer: [\n getFocusStyle(theme),\n {\n display: 'flex',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'flex-start',\n },\n ],\n };\n\n return concatStyleSets(menuItemStyles);\n },\n);\n","import { getDividerClassNames } from '../Divider/VerticalDivider.classNames';\nimport { getMenuItemStyles } from './ContextualMenu.cnstyles';\nimport {\n ITheme,\n mergeStyleSets,\n getGlobalClassNames,\n getScreenSelector,\n ScreenWidthMaxMedium,\n hiddenContentStyle,\n} from '../../Styling';\nimport { IVerticalDividerClassNames } from '../Divider/VerticalDivider.types';\nimport { memoizeFunction, IsFocusVisibleClassName } from '../../Utilities';\nimport { IContextualMenuItemStyles, IContextualMenuItemStyleProps } from './ContextualMenuItem.types';\nimport { IContextualMenuSubComponentStyles } from './ContextualMenu.types';\n\n/**\n * @deprecated in favor of mergeStyles API.\n */\nexport interface IContextualMenuClassNames {\n container?: string;\n root?: string;\n list?: string;\n header?: string;\n title?: string;\n subComponentStyles?: IContextualMenuSubComponentStyles;\n}\n\n/**\n * @deprecated in favor of mergeStyles API.\n */\nexport interface IMenuItemClassNames {\n item?: string;\n divider?: string;\n root?: string;\n linkContent?: string;\n icon?: string;\n checkmarkIcon?: string;\n subMenuIcon?: string;\n label?: string;\n secondaryText?: string;\n splitContainer?: string;\n splitPrimary?: string;\n splitMenu?: string;\n linkContentMenu?: string;\n screenReaderText?: string;\n}\n\nconst CONTEXTUAL_SPLIT_MENU_MINWIDTH = '28px';\n\nconst MediumScreenSelector = getScreenSelector(0, ScreenWidthMaxMedium);\n\nexport const getSplitButtonVerticalDividerClassNames = memoizeFunction(\n /* eslint-disable deprecation/deprecation */\n (theme: ITheme): IVerticalDividerClassNames => {\n return mergeStyleSets(getDividerClassNames(theme), {\n /* eslint-enable deprecation/deprecation */\n wrapper: {\n position: 'absolute',\n right: 28, // width of the splitMenu based on the padding plus icon fontSize\n selectors: {\n [MediumScreenSelector]: {\n right: 32, // fontSize of the icon increased from 12px to 16px\n },\n },\n },\n divider: {\n height: 16,\n width: 1,\n },\n });\n },\n);\n\nconst GlobalClassNames = {\n item: 'ms-ContextualMenu-item',\n divider: 'ms-ContextualMenu-divider',\n root: 'ms-ContextualMenu-link',\n isChecked: 'is-checked',\n isExpanded: 'is-expanded',\n isDisabled: 'is-disabled',\n linkContent: 'ms-ContextualMenu-linkContent',\n linkContentMenu: 'ms-ContextualMenu-linkContent',\n icon: 'ms-ContextualMenu-icon',\n iconColor: 'ms-ContextualMenu-iconColor',\n checkmarkIcon: 'ms-ContextualMenu-checkmarkIcon',\n subMenuIcon: 'ms-ContextualMenu-submenuIcon',\n label: 'ms-ContextualMenu-itemText',\n secondaryText: 'ms-ContextualMenu-secondaryText',\n splitMenu: 'ms-ContextualMenu-splitMenu',\n screenReaderText: 'ms-ContextualMenu-screenReaderText',\n};\n\n/**\n * @deprecated To be removed in 7.0.\n * @internal\n * This is a package-internal method that has been depended on.\n * It is being kept in this form for backwards compatibility.\n * It should be cleaned up in 7.0.\n *\n * TODO: Audit perf. impact of and potentially remove memoizeFunction.\n * https://github.com/microsoft/fluentui/issues/5534\n */\nexport const getItemClassNames = memoizeFunction(\n (\n theme: ITheme,\n disabled: boolean,\n expanded: boolean,\n checked: boolean,\n isAnchorLink: boolean,\n knownIcon: boolean,\n itemClassName?: string,\n dividerClassName?: string,\n iconClassName?: string,\n subMenuClassName?: string,\n primaryDisabled?: boolean,\n className?: string,\n ): IContextualMenuItemStyles => {\n const styles = getMenuItemStyles(theme);\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return mergeStyleSets({\n item: [classNames.item, styles.item, itemClassName],\n divider: [classNames.divider, styles.divider, dividerClassName],\n root: [\n classNames.root,\n styles.root,\n checked && [classNames.isChecked, styles.rootChecked],\n isAnchorLink && styles.anchorLink,\n expanded && [classNames.isExpanded, styles.rootExpanded],\n disabled && [classNames.isDisabled, styles.rootDisabled],\n !disabled &&\n !expanded && [\n {\n selectors: {\n ':hover': styles.rootHovered,\n ':active': styles.rootPressed,\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n [`.${IsFocusVisibleClassName} &:hover`]: { background: 'inherit;' },\n },\n },\n ],\n className,\n ],\n splitPrimary: [\n styles.root,\n {\n width: `calc(100% - ${CONTEXTUAL_SPLIT_MENU_MINWIDTH})`,\n },\n checked && ['is-checked', styles.rootChecked],\n (disabled || primaryDisabled) && ['is-disabled', styles.rootDisabled],\n !(disabled || primaryDisabled) &&\n !checked && [\n {\n selectors: {\n ':hover': styles.rootHovered,\n // when hovering over the splitPrimary also affect the splitMenu\n [`:hover ~ .${classNames.splitMenu}`]: styles.rootHovered,\n ':active': styles.rootPressed,\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n [`.${IsFocusVisibleClassName} &:hover`]: { background: 'inherit;' },\n },\n },\n ],\n ],\n splitMenu: [\n classNames.splitMenu,\n styles.root,\n {\n flexBasis: '0',\n padding: '0 8px',\n minWidth: CONTEXTUAL_SPLIT_MENU_MINWIDTH,\n },\n expanded && ['is-expanded', styles.rootExpanded],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !expanded && [\n {\n selectors: {\n ':hover': styles.rootHovered,\n ':active': styles.rootPressed,\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n [`.${IsFocusVisibleClassName} &:hover`]: { background: 'inherit;' },\n },\n },\n ],\n ],\n anchorLink: styles.anchorLink,\n linkContent: [classNames.linkContent, styles.linkContent],\n linkContentMenu: [\n classNames.linkContentMenu,\n styles.linkContent,\n {\n justifyContent: 'center',\n },\n ],\n icon: [\n classNames.icon,\n knownIcon && styles.iconColor,\n styles.icon,\n iconClassName,\n disabled && [classNames.isDisabled, styles.iconDisabled],\n ],\n iconColor: styles.iconColor,\n checkmarkIcon: [classNames.checkmarkIcon, knownIcon && styles.checkmarkIcon, styles.icon, iconClassName],\n subMenuIcon: [\n classNames.subMenuIcon,\n styles.subMenuIcon,\n subMenuClassName,\n expanded && { color: theme.palette.neutralPrimary },\n disabled && [styles.iconDisabled],\n ],\n label: [classNames.label, styles.label],\n secondaryText: [classNames.secondaryText, styles.secondaryText],\n splitContainer: [\n styles.splitButtonFlexContainer,\n !disabled &&\n !checked && [\n {\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus, .${IsFocusVisibleClassName} &:focus:hover`]: styles.rootFocused,\n },\n },\n ],\n ],\n screenReaderText: [\n classNames.screenReaderText,\n styles.screenReaderText,\n hiddenContentStyle,\n { visibility: 'hidden' },\n ],\n });\n },\n);\n\n/**\n * Wrapper function for generating ContextualMenuItem classNames which adheres to\n * the getStyles API, but invokes memoized className generator function with\n * primitive values.\n *\n * @param props - the ContextualMenuItem style props used to generate its styles.\n */\nexport const getItemStyles = (props: IContextualMenuItemStyleProps): IContextualMenuItemStyles => {\n const {\n theme,\n disabled,\n expanded,\n checked,\n isAnchorLink,\n knownIcon,\n itemClassName,\n dividerClassName,\n iconClassName,\n subMenuClassName,\n primaryDisabled,\n className,\n } = props;\n\n // eslint-disable-next-line deprecation/deprecation\n return getItemClassNames(\n theme,\n disabled,\n expanded,\n checked,\n isAnchorLink,\n knownIcon,\n itemClassName,\n dividerClassName,\n iconClassName,\n subMenuClassName,\n primaryDisabled,\n className,\n );\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport {\n IContextualMenuItemProps,\n IContextualMenuItemStyleProps,\n IContextualMenuItemStyles,\n} from './ContextualMenuItem.types';\nimport { ContextualMenuItemBase } from './ContextualMenuItem.base';\nimport { getItemStyles } from './ContextualMenu.classNames';\n\n/**\n * ContextualMenuItem description\n */\nexport const ContextualMenuItem: React.FunctionComponent<IContextualMenuItemProps> = styled<\n IContextualMenuItemProps,\n IContextualMenuItemStyleProps,\n IContextualMenuItemStyles\n>(ContextualMenuItemBase, getItemStyles, undefined, { scope: 'ContextualMenuItem' });\n","import * as React from 'react';\nimport { initializeComponentRef, shallowCompare } from '../../../Utilities';\nimport { IContextualMenuItemWrapperProps } from './ContextualMenuItemWrapper.types';\n\nexport class ContextualMenuItemWrapper extends React.Component<IContextualMenuItemWrapperProps> {\n constructor(props: IContextualMenuItemWrapperProps) {\n super(props);\n initializeComponentRef(this);\n }\n\n public shouldComponentUpdate(newProps: IContextualMenuItemWrapperProps): boolean {\n return !shallowCompare(newProps, this.props);\n }\n\n protected _onItemMouseEnter = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseEnter } = this.props;\n if (onItemMouseEnter) {\n onItemMouseEnter(item, ev, ev.currentTarget as HTMLElement);\n }\n };\n\n protected _onItemClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemClickBase } = this.props;\n if (onItemClickBase) {\n onItemClickBase(item, ev, ev.currentTarget as HTMLElement);\n }\n };\n\n protected _onItemMouseLeave = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseLeave } = this.props;\n if (onItemMouseLeave) {\n onItemMouseLeave(item, ev);\n }\n };\n\n protected _onItemKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { item, onItemKeyDown } = this.props;\n if (onItemKeyDown) {\n onItemKeyDown(item, ev);\n }\n };\n\n protected _onItemMouseMove = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseMove } = this.props;\n if (onItemMouseMove) {\n onItemMouseMove(item, ev, ev.currentTarget as HTMLElement);\n }\n };\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return undefined;\n };\n}\n","import * as React from 'react';\n\n/**\n * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to\n * always return the same value (and if the initializer is a function, only call it once).\n * This is similar to setting a private member in a class constructor.\n *\n * If the value should ever change based on dependencies, use `React.useMemo` instead.\n *\n * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`,\n * only the value/function passed in the first time this is called is respected.\n * @returns The value. The identity of this value will always be the same.\n */\nexport function useConst<T>(initialValue: T | (() => T)): T {\n // Use useRef to store the value because it's the least expensive built-in hook that works here\n // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive\n // internally due to reducer handling which we don't need)\n const ref = React.useRef<{ value: T }>();\n if (ref.current === undefined) {\n // Box the value in an object so we can tell if it's initialized even if the initializer\n // returns/is undefined\n ref.current = {\n value: typeof initialValue === 'function' ? (initialValue as Function)() : initialValue,\n };\n }\n return ref.current.value;\n}\n","import { IKeytipProps } from '../../Keytip';\nimport { EventGroup, getId } from '../../Utilities';\nimport { KeytipEvents } from '../../utilities/keytips/KeytipConstants';\n\nexport interface IUniqueKeytip {\n uniqueID: string;\n keytip: IKeytipProps;\n}\n\n/**\n * This class is responsible for handling registering, updating, and unregistering of keytips\n */\nexport class KeytipManager {\n private static _instance: KeytipManager = new KeytipManager();\n\n public keytips: { [key: string]: IUniqueKeytip } = {};\n public persistedKeytips: { [key: string]: IUniqueKeytip } = {};\n public sequenceMapping: { [key: string]: IKeytipProps } = {};\n\n // This is (and should be) updated and kept in sync\n // with the inKeytipMode in KeytipLayer.\n public inKeytipMode = false;\n\n // Boolean that gets checked before entering keytip mode by the KeytipLayer\n // Used for an override in special cases (e.g. Disable entering keytip mode when a modal is shown)\n public shouldEnterKeytipMode = true;\n\n // Boolean to indicate whether to delay firing an event to update subscribers of\n // keytip data changed.\n public delayUpdatingKeytipChange = false;\n\n /**\n * Static function to get singleton KeytipManager instance\n *\n * @returns Singleton KeytipManager instance\n */\n public static getInstance(): KeytipManager {\n return this._instance;\n }\n\n /**\n * Initialization code to set set parameters to define\n * how the KeytipManager handles keytip data.\n *\n * @param delayUpdatingKeytipChange - T/F if we should delay notifiying keytip subscribers\n * of keytip changes\n */\n public init(delayUpdatingKeytipChange: boolean) {\n this.delayUpdatingKeytipChange = delayUpdatingKeytipChange;\n }\n\n /**\n * Registers a keytip\n *\n * @param keytipProps - Keytip to register\n * @param persisted - T/F if this keytip should be persisted, default is false\n * @returns Unique ID for this keytip\n */\n public register(keytipProps: IKeytipProps, persisted: boolean = false): string {\n let props: IKeytipProps = keytipProps;\n if (!persisted) {\n // Add the overflowSetSequence if necessary\n props = this.addParentOverflow(keytipProps);\n this.sequenceMapping[props.keySequences.toString()] = props;\n }\n // Create a unique keytip\n const uniqueKeytip: IUniqueKeytip = this._getUniqueKtp(props);\n // Add to dictionary\n persisted\n ? (this.persistedKeytips[uniqueKeytip.uniqueID] = uniqueKeytip)\n : (this.keytips[uniqueKeytip.uniqueID] = uniqueKeytip);\n\n // We only want to add something new if we are currently showing keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n const event = persisted ? KeytipEvents.PERSISTED_KEYTIP_ADDED : KeytipEvents.KEYTIP_ADDED;\n EventGroup.raise(this, event, {\n keytip: props,\n uniqueID: uniqueKeytip.uniqueID,\n });\n }\n\n return uniqueKeytip.uniqueID;\n }\n\n /**\n * Update a keytip\n *\n * @param keytipProps - Keytip to update\n * @param uniqueID - Unique ID of this keytip\n */\n public update(keytipProps: IKeytipProps, uniqueID: string): void {\n const newKeytipProps = this.addParentOverflow(keytipProps);\n const uniqueKeytip = this._getUniqueKtp(newKeytipProps, uniqueID);\n const oldKeyTip = this.keytips[uniqueID];\n if (oldKeyTip) {\n // Update everything except 'visible'\n uniqueKeytip.keytip.visible = oldKeyTip.keytip.visible;\n // Update keytip in this.keytips\n this.keytips[uniqueID] = uniqueKeytip;\n\n // Update the sequence to be up to date\n delete this.sequenceMapping[oldKeyTip.keytip.keySequences.toString()];\n this.sequenceMapping[uniqueKeytip.keytip.keySequences.toString()] = uniqueKeytip.keytip;\n\n // Raise event only if we are currently in keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n EventGroup.raise(this, KeytipEvents.KEYTIP_UPDATED, {\n keytip: uniqueKeytip.keytip,\n uniqueID: uniqueKeytip.uniqueID,\n });\n }\n }\n }\n\n /**\n * Unregisters a keytip\n *\n * @param keytipToRemove - IKeytipProps of the keytip to remove\n * @param uniqueID - Unique ID of this keytip\n * @param persisted - T/F if this keytip should be persisted, default is false\n */\n public unregister(keytipToRemove: IKeytipProps, uniqueID: string, persisted: boolean = false): void {\n persisted ? delete this.persistedKeytips[uniqueID] : delete this.keytips[uniqueID];\n !persisted && delete this.sequenceMapping[keytipToRemove.keySequences.toString()];\n\n const event = persisted ? KeytipEvents.PERSISTED_KEYTIP_REMOVED : KeytipEvents.KEYTIP_REMOVED;\n // Update keytips only if we're in keytip mode\n if (this.inKeytipMode || !this.delayUpdatingKeytipChange) {\n EventGroup.raise(this, event, {\n keytip: keytipToRemove,\n uniqueID: uniqueID,\n });\n }\n }\n\n /**\n * Manual call to enter keytip mode\n */\n public enterKeytipMode(): void {\n EventGroup.raise(this, KeytipEvents.ENTER_KEYTIP_MODE);\n }\n\n /**\n * Manual call to exit keytip mode\n */\n public exitKeytipMode(): void {\n EventGroup.raise(this, KeytipEvents.EXIT_KEYTIP_MODE);\n }\n\n /**\n * Gets all IKeytipProps from this.keytips\n *\n * @returns All keytips stored in the manager\n */\n public getKeytips(): IKeytipProps[] {\n return Object.keys(this.keytips).map(key => this.keytips[key].keytip);\n }\n\n /**\n * Adds the overflowSetSequence to the keytipProps if its parent keytip also has it\n *\n * @param keytipProps - Keytip props to add overflowSetSequence to if necessary\n * @returns - Modified keytip props, if needed to be modified\n */\n public addParentOverflow(keytipProps: IKeytipProps): IKeytipProps {\n const fullSequence = [...keytipProps.keySequences];\n fullSequence.pop();\n if (fullSequence.length !== 0) {\n const parentKeytip = this.sequenceMapping[fullSequence.toString()];\n if (parentKeytip && parentKeytip.overflowSetSequence) {\n return {\n ...keytipProps,\n overflowSetSequence: parentKeytip.overflowSetSequence,\n };\n }\n }\n return keytipProps;\n }\n\n /**\n * Public function to bind for overflow items that have a submenu\n */\n public menuExecute(overflowButtonSequences: string[], keytipSequences: string[]) {\n EventGroup.raise(this, KeytipEvents.PERSISTED_KEYTIP_EXECUTE, {\n overflowButtonSequences,\n keytipSequences,\n });\n }\n\n /**\n * Creates an IUniqueKeytip object\n *\n * @param keytipProps - IKeytipProps\n * @param uniqueID - Unique ID, will default to the next unique ID if not passed\n * @returns IUniqueKeytip object\n */\n private _getUniqueKtp(keytipProps: IKeytipProps, uniqueID: string = getId()): IUniqueKeytip {\n return { keytip: { ...keytipProps }, uniqueID };\n }\n}\n","import { KTP_SEPARATOR, KTP_PREFIX, DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET, KTP_LAYER_ID } from './KeytipConstants';\nimport { addElementAtIndex } from '../../Utilities';\n\n/**\n * Converts a whole set of KeySequences into one keytip ID, which will be the ID for the last keytip sequence specified\n * keySequences should not include the initial keytip 'start' sequence.\n *\n * @param keySequences - Full path of IKeySequences for one keytip.\n * @returns String to use for the keytip ID.\n */\nexport function sequencesToID(keySequences: string[]): string {\n return keySequences.reduce((prevValue: string, keySequence: string): string => {\n return prevValue + KTP_SEPARATOR + keySequence.split('').join(KTP_SEPARATOR);\n }, KTP_PREFIX);\n}\n\n/**\n * Merges an overflow sequence with a key sequence.\n *\n * @param keySequences - Full sequence for one keytip.\n * @param overflowKeySequences - Full overflow keytip sequence.\n * @returns Sequence that will be used by the keytip when in the overflow.\n */\nexport function mergeOverflows(keySequences: string[], overflowKeySequences: string[]): string[] {\n const overflowSequenceLen = overflowKeySequences.length;\n const overflowSequence = [...overflowKeySequences].pop();\n const newKeySequences = [...keySequences];\n return addElementAtIndex(newKeySequences, overflowSequenceLen - 1, overflowSequence!);\n}\n\n/**\n * Constructs the data-ktp-target attribute selector from a full key sequence.\n *\n * @param keySequences - Full string[] for a Keytip.\n * @returns String selector to use to query for the keytip target.\n */\nexport function ktpTargetFromSequences(keySequences: string[]): string {\n return '[' + DATAKTP_TARGET + '=\"' + sequencesToID(keySequences) + '\"]';\n}\n\n/**\n * Constructs the data-ktp-execute-target attribute selector from a keytip ID.\n *\n * @param keytipId - ID of the Keytip.\n * @returns String selector to use to query for the keytip execute target.\n */\nexport function ktpTargetFromId(keytipId: string): string {\n return '[' + DATAKTP_EXECUTE_TARGET + '=\"' + keytipId + '\"]';\n}\n\n/**\n * Gets the aria-describedby value to put on the component with this keytip.\n *\n * @param keySequences - KeySequences of the keytip.\n * @returns The aria-describedby value to set on the component with this keytip.\n */\nexport function getAriaDescribedBy(keySequences: string[]): string {\n const describedby = ' ' + KTP_LAYER_ID;\n if (!keySequences.length) {\n // Return just the layer ID\n return describedby;\n }\n\n return describedby + ' ' + sequencesToID(keySequences);\n}\n","import * as React from 'react';\nimport { useConst, usePrevious } from '@uifabric/react-hooks';\nimport { mergeAriaAttributeValues } from '../../Utilities';\nimport { KeytipDataOptions } from './KeytipData.types';\nimport { IKeytipProps } from '../../Keytip';\nimport { KeytipManager, mergeOverflows, sequencesToID, getAriaDescribedBy } from '../../utilities/keytips/index';\n\nexport interface IKeytipData {\n ariaDescribedBy: string | undefined;\n keytipId: string | undefined;\n}\n\n/**\n * Hook that creates attributes for components which are enabled with Keytip.\n */\nexport function useKeytipData(options: KeytipDataOptions): IKeytipData {\n const uniqueId = React.useRef<string>();\n const keytipProps: IKeytipProps | undefined = options.keytipProps\n ? {\n disabled: options.disabled,\n ...options.keytipProps,\n }\n : undefined;\n\n const keytipManager = useConst<KeytipManager>(KeytipManager.getInstance());\n const prevOptions = usePrevious(options);\n\n // useLayoutEffect used to strictly emulate didUpdate/didMount behavior\n React.useLayoutEffect(() => {\n if (\n uniqueId.current &&\n keytipProps &&\n (prevOptions?.keytipProps !== options.keytipProps || prevOptions?.disabled !== options.disabled)\n ) {\n keytipManager.update(keytipProps, uniqueId.current);\n }\n });\n\n React.useLayoutEffect(() => {\n // Register Keytip in KeytipManager\n if (keytipProps) {\n uniqueId.current = keytipManager.register(keytipProps);\n }\n\n return () => {\n // Unregister Keytip in KeytipManager\n keytipProps && keytipManager.unregister(keytipProps, uniqueId.current!);\n };\n // this is meant to run only at mount, and updates are handled separately\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let nativeKeytipProps: IKeytipData = {\n ariaDescribedBy: undefined,\n keytipId: undefined,\n };\n\n if (keytipProps) {\n nativeKeytipProps = getKeytipData(keytipManager, keytipProps, options.ariaDescribedBy);\n }\n\n return nativeKeytipProps;\n}\n\n/**\n * Gets the aria- and data- attributes to attach to the component\n * @param keytipProps - options for Keytip\n * @param describedByPrepend - ariaDescribedBy value to prepend\n */\nfunction getKeytipData(\n keytipManager: KeytipManager,\n keytipProps: IKeytipProps,\n describedByPrepend?: string,\n): IKeytipData {\n // Add the parent overflow sequence if necessary\n const newKeytipProps = keytipManager.addParentOverflow(keytipProps);\n\n // Construct aria-describedby and data-ktp-id attributes\n const ariaDescribedBy = mergeAriaAttributeValues(\n describedByPrepend,\n getAriaDescribedBy(newKeytipProps.keySequences),\n )!;\n\n let keySequences = [...newKeytipProps.keySequences];\n if (newKeytipProps.overflowSetSequence) {\n keySequences = mergeOverflows(keySequences, newKeytipProps.overflowSetSequence);\n }\n const keytipId = sequencesToID(keySequences);\n\n return {\n ariaDescribedBy,\n keytipId,\n };\n}\n","import { useRef, useEffect } from 'react';\n\n/**\n * Hook keeping track of a given value from a previous execution of the component the Hook is used in.\n *\n * See [React Hooks FAQ](https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state)\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T | undefined>();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n","import * as React from 'react';\nimport { IRenderComponent } from '../../Utilities';\nimport { DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET } from '../../utilities/keytips/index';\nimport { IKeytipDataProps } from './KeytipData.types';\nimport { useKeytipData } from './useKeytipData';\n\n/**\n * A small element to help the target component correctly read out its aria-describedby for its Keytip\n * {@docCategory Keytips}\n */\nexport const KeytipData: React.FunctionComponent<IKeytipDataProps & IRenderComponent<{}>> = props => {\n const { children, ...keytipDataProps } = props;\n const { keytipId, ariaDescribedBy } = useKeytipData(keytipDataProps);\n\n return children({\n [DATAKTP_TARGET]: keytipId,\n [DATAKTP_EXECUTE_TARGET]: keytipId,\n 'aria-describedby': ariaDescribedBy,\n });\n};\n","import * as React from 'react';\nimport { anchorProperties, getNativeProps, memoizeFunction, getId, mergeAriaAttributeValues } from '../../../Utilities';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { KeytipData } from '../../../KeytipData';\nimport { isItemDisabled, hasSubmenu } from '../../../utilities/contextualMenu/index';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { IKeytipProps } from '../../Keytip/Keytip.types';\n\nexport class ContextualMenuAnchor extends ContextualMenuItemWrapper {\n private _anchor = React.createRef<HTMLAnchorElement>();\n private _ariaDescriptionId: string;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n public render() {\n const {\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem,\n expandedMenuItemKey,\n onItemClick,\n openSubMenu,\n dismissSubMenu,\n dismissMenu,\n } = this.props;\n\n let anchorRel = item.rel;\n if (item.target && item.target.toLowerCase() === '_blank') {\n anchorRel = anchorRel ? anchorRel : 'nofollow noopener noreferrer'; // Safe default to prevent tabjacking\n }\n\n const itemHasSubmenu = hasSubmenu(item);\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLAnchorElement>>(item, anchorProperties);\n const disabled = isItemDisabled(item);\n const { itemProps, ariaDescription } = item;\n\n let { keytipProps } = item;\n if (keytipProps && itemHasSubmenu) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n\n return (\n <div>\n <KeytipData\n keytipProps={item.keytipProps}\n ariaDescribedBy={nativeProps['aria-describedby']}\n disabled={disabled}\n >\n {(keytipAttributes: any): JSX.Element => (\n <a\n {...nativeProps}\n {...keytipAttributes}\n ref={this._anchor}\n href={item.href}\n target={item.target}\n rel={anchorRel}\n className={classNames.root}\n role=\"menuitem\"\n aria-haspopup={itemHasSubmenu || undefined}\n aria-expanded={itemHasSubmenu ? item.key === expandedMenuItemKey : undefined}\n aria-posinset={focusableElementIndex + 1}\n aria-setsize={totalItemCount}\n aria-disabled={isItemDisabled(item)}\n aria-describedby={mergeAriaAttributeValues(\n ariaDescription ? this._ariaDescriptionId : undefined,\n keytipAttributes ? keytipAttributes['aria-describedby'] : undefined,\n )}\n // eslint-disable-next-line deprecation/deprecation\n style={item.style}\n onClick={this._onItemClick}\n onMouseEnter={this._onItemMouseEnter}\n onMouseLeave={this._onItemMouseLeave}\n onMouseMove={this._onItemMouseMove}\n onKeyDown={itemHasSubmenu ? this._onItemKeyDown : undefined}\n >\n <ChildrenRenderer\n componentRef={item.componentRef}\n item={item}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks && onItemClick ? onItemClick : undefined}\n hasIcons={hasIcons}\n openSubMenu={openSubMenu}\n dismissSubMenu={dismissSubMenu}\n dismissMenu={dismissMenu}\n getSubmenuTarget={this._getSubmenuTarget}\n {...itemProps}\n />\n {this._renderAriaDescription(ariaDescription, classNames.screenReaderText)}\n </a>\n )}\n </KeytipData>\n </div>\n );\n }\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return this._anchor.current ? this._anchor.current : undefined;\n };\n\n protected _onItemClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemClick } = this.props;\n if (onItemClick) {\n onItemClick(item, ev);\n }\n };\n\n protected _renderAriaDescription = (ariaDescription?: string, className?: string) => {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (\n <span id={this._ariaDescriptionId} className={className}>\n {ariaDescription}\n </span>\n ) : null;\n };\n}\n","import * as React from 'react';\nimport { buttonProperties, getNativeProps, memoizeFunction, getId, mergeAriaAttributeValues } from '../../../Utilities';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { KeytipData } from '../../../KeytipData';\nimport { getIsChecked, isItemDisabled, hasSubmenu, getMenuItemAriaRole } from '../../../utilities/contextualMenu/index';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { IKeytipProps } from '../../Keytip/Keytip.types';\n\nexport class ContextualMenuButton extends ContextualMenuItemWrapper {\n private _btn = React.createRef<HTMLButtonElement>();\n private _ariaDescriptionId: string;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n public render() {\n const {\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem,\n expandedMenuItemKey,\n onItemMouseDown,\n onItemClick,\n openSubMenu,\n dismissSubMenu,\n dismissMenu,\n } = this.props;\n\n const isChecked: boolean | null | undefined = getIsChecked(item);\n const canCheck: boolean = isChecked !== null;\n const defaultRole = getMenuItemAriaRole(item);\n const itemHasSubmenu = hasSubmenu(item);\n const { itemProps, ariaLabel, ariaDescription } = item;\n\n const buttonNativeProperties = getNativeProps<React.ButtonHTMLAttributes<HTMLButtonElement>>(\n item,\n buttonProperties,\n );\n // Do not add the disabled attribute to the button so that it is focusable\n delete buttonNativeProperties.disabled;\n\n const itemRole = item.role || defaultRole;\n\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n const ariaDescribedByIds = ariaDescription ? this._ariaDescriptionId : undefined;\n\n const itemButtonProperties = {\n className: classNames.root,\n onClick: this._onItemClick,\n onKeyDown: itemHasSubmenu ? this._onItemKeyDown : undefined,\n onMouseEnter: this._onItemMouseEnter,\n onMouseLeave: this._onItemMouseLeave,\n onMouseDown: (ev: React.MouseEvent<HTMLButtonElement>) =>\n onItemMouseDown ? onItemMouseDown(item, ev) : undefined,\n onMouseMove: this._onItemMouseMove,\n href: item.href,\n title: item.title,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedByIds,\n 'aria-haspopup': itemHasSubmenu || undefined,\n 'aria-expanded': itemHasSubmenu ? item.key === expandedMenuItemKey : undefined,\n 'aria-posinset': focusableElementIndex + 1,\n 'aria-setsize': totalItemCount,\n 'aria-disabled': isItemDisabled(item),\n 'aria-checked':\n (itemRole === 'menuitemcheckbox' || itemRole === 'menuitemradio') && canCheck ? !!isChecked : undefined,\n 'aria-selected': itemRole === 'menuitem' && canCheck ? !!isChecked : undefined,\n role: itemRole,\n // eslint-disable-next-line deprecation/deprecation\n style: item.style,\n };\n\n let { keytipProps } = item;\n if (keytipProps && itemHasSubmenu) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n return (\n <KeytipData\n keytipProps={keytipProps}\n ariaDescribedBy={buttonNativeProperties['aria-describedby']}\n disabled={isItemDisabled(item)}\n >\n {(keytipAttributes: any): JSX.Element => (\n <button\n ref={this._btn}\n {...buttonNativeProperties}\n {...itemButtonProperties}\n {...keytipAttributes}\n aria-describedby={mergeAriaAttributeValues(\n itemButtonProperties['aria-describedby'],\n keytipAttributes ? keytipAttributes['aria-describedby'] : undefined,\n )}\n >\n <ChildrenRenderer\n componentRef={item.componentRef}\n item={item}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks && onItemClick ? onItemClick : undefined}\n hasIcons={hasIcons}\n openSubMenu={openSubMenu}\n dismissSubMenu={dismissSubMenu}\n dismissMenu={dismissMenu}\n getSubmenuTarget={this._getSubmenuTarget}\n {...itemProps}\n />\n {this._renderAriaDescription(ariaDescription, classNames.screenReaderText)}\n </button>\n )}\n </KeytipData>\n );\n }\n\n protected _renderAriaDescription = (ariaDescription?: string, className?: string) => {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (\n <span id={this._ariaDescriptionId} className={className}>\n {ariaDescription}\n </span>\n ) : null;\n };\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return this._btn.current ? this._btn.current : undefined;\n };\n}\n","import * as React from 'react';\nimport { IVerticalDividerProps, IVerticalDividerPropsStyles, IVerticalDividerStyles } from './VerticalDivider.types';\nimport { classNamesFunction } from '../../Utilities';\nconst getClassNames = classNamesFunction<IVerticalDividerPropsStyles, IVerticalDividerStyles>();\n\nexport const VerticalDividerBase = (props: IVerticalDividerProps) => {\n // eslint-disable-next-line deprecation/deprecation\n const { styles, theme, getClassNames: deprecatedGetClassNames, className } = props;\n const classNames = getClassNames(styles, { theme: theme, getClassNames: deprecatedGetClassNames, className });\n return (\n <span className={classNames.wrapper}>\n <span className={classNames.divider} />\n </span>\n );\n};\nVerticalDividerBase.displayName = 'VerticalDividerBase';\n","import * as React from 'react';\nimport { IVerticalDividerProps, IVerticalDividerStyles, IVerticalDividerPropsStyles } from './VerticalDivider.types';\nimport { getStyles } from './VerticalDivider.styles';\nimport { VerticalDividerBase } from './VerticalDivider.base';\nimport { styled } from '../../Utilities';\n\nexport const VerticalDivider: React.FunctionComponent<IVerticalDividerProps> = styled<\n IVerticalDividerProps,\n IVerticalDividerPropsStyles,\n IVerticalDividerStyles\n>(VerticalDividerBase, getStyles, undefined, {\n scope: 'VerticalDivider',\n});\n","import { IVerticalDividerPropsStyles, IVerticalDividerStyles } from './VerticalDivider.types';\nimport { IStyleFunction } from '../../Utilities';\n\nexport const getStyles: IStyleFunction<IVerticalDividerPropsStyles, IVerticalDividerStyles> = (\n props: IVerticalDividerPropsStyles,\n): IVerticalDividerStyles => {\n // eslint-disable-next-line deprecation/deprecation\n const { theme, getClassNames, className } = props;\n\n if (!theme) {\n throw new Error('Theme is undefined or null.');\n }\n\n if (getClassNames) {\n const names = getClassNames(theme);\n return {\n wrapper: [names.wrapper],\n divider: [names.divider],\n };\n }\n\n return {\n wrapper: [\n {\n display: 'inline-flex',\n height: '100%',\n alignItems: 'center',\n },\n className,\n ],\n divider: [\n {\n width: 1,\n height: '100%',\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport {\n buttonProperties,\n getNativeProps,\n KeyCodes,\n mergeAriaAttributeValues,\n memoizeFunction,\n Async,\n EventGroup,\n getId,\n} from '../../../Utilities';\nimport { ContextualMenuItem } from '../ContextualMenuItem';\nimport { IContextualMenuItem } from '../ContextualMenu.types';\nimport { IMenuItemClassNames, getSplitButtonVerticalDividerClassNames } from '../ContextualMenu.classNames';\nimport { KeytipData } from '../../../KeytipData';\nimport { isItemDisabled, hasSubmenu, getMenuItemAriaRole } from '../../../utilities/contextualMenu/index';\nimport { VerticalDivider } from '../../../Divider';\nimport { ContextualMenuItemWrapper } from './ContextualMenuItemWrapper';\nimport { IKeytipProps } from '../../Keytip/Keytip.types';\nimport { IContextualMenuItemWrapperProps } from './ContextualMenuItemWrapper.types';\n\nexport interface IContextualMenuSplitButtonState {}\n\nconst TouchIdleDelay = 500; /* ms */\n\nexport class ContextualMenuSplitButton extends ContextualMenuItemWrapper {\n private _splitButton: HTMLDivElement;\n private _lastTouchTimeoutId: number | undefined;\n private _processingTouch: boolean;\n private _ariaDescriptionId: string;\n\n private _async: Async;\n private _events: EventGroup;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n constructor(props: IContextualMenuItemWrapperProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n }\n\n public componentDidMount() {\n if (this._splitButton && 'onpointerdown' in this._splitButton) {\n this._events.on(this._splitButton, 'pointerdown', this._onPointerDown, true);\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n onItemMouseLeave,\n expandedMenuItemKey,\n } = this.props;\n\n const itemHasSubmenu = hasSubmenu(item);\n\n let { keytipProps } = item;\n if (keytipProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n // Check for ariaDescription to set the _ariaDescriptionId and render a hidden span with\n // the description in it to be added to ariaDescribedBy\n const { ariaDescription } = item;\n if (ariaDescription) {\n this._ariaDescriptionId = getId();\n }\n\n return (\n <KeytipData keytipProps={keytipProps} disabled={isItemDisabled(item)}>\n {(keytipAttributes: any): JSX.Element => (\n <div\n data-ktp-target={keytipAttributes['data-ktp-target']}\n ref={(splitButton: HTMLDivElement) => (this._splitButton = splitButton)}\n role={getMenuItemAriaRole(item)}\n aria-label={item.ariaLabel}\n className={classNames.splitContainer}\n aria-disabled={isItemDisabled(item)}\n aria-expanded={itemHasSubmenu ? item.key === expandedMenuItemKey : undefined}\n aria-haspopup={true}\n aria-describedby={mergeAriaAttributeValues(\n ariaDescription ? this._ariaDescriptionId : undefined,\n keytipAttributes['aria-describedby'],\n )}\n aria-checked={item.isChecked || item.checked}\n aria-posinset={focusableElementIndex + 1}\n aria-setsize={totalItemCount}\n onMouseEnter={this._onItemMouseEnterPrimary}\n onMouseLeave={\n onItemMouseLeave ? onItemMouseLeave.bind(this, { ...item, subMenuProps: null, items: null }) : undefined\n }\n onMouseMove={this._onItemMouseMovePrimary}\n onKeyDown={this._onItemKeyDown}\n onClick={this._executeItemClick}\n onTouchStart={this._onTouchStart}\n tabIndex={0}\n data-is-focusable={true}\n aria-roledescription={item['aria-roledescription']}\n >\n {this._renderSplitPrimaryButton(item, classNames, index, hasCheckmarks!, hasIcons!)}\n {this._renderSplitDivider(item)}\n {this._renderSplitIconButton(item, classNames, index, keytipAttributes)}\n {this._renderAriaDescription(ariaDescription, classNames.screenReaderText)}\n </div>\n )}\n </KeytipData>\n );\n }\n\n protected _renderAriaDescription = (ariaDescription?: string, className?: string) => {\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan\n return ariaDescription ? (\n <span id={this._ariaDescriptionId} className={className}>\n {ariaDescription}\n </span>\n ) : null;\n };\n\n protected _onItemKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { item, onItemKeyDown } = this.props;\n if (ev.which === KeyCodes.enter) {\n this._executeItemClick(ev);\n ev.preventDefault();\n ev.stopPropagation();\n } else if (onItemKeyDown) {\n onItemKeyDown(item, ev);\n }\n };\n\n protected _getSubmenuTarget = (): HTMLElement | undefined => {\n return this._splitButton;\n };\n\n private _renderSplitPrimaryButton(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ) {\n const { contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem, onItemClick } = this.props;\n\n const itemProps: IContextualMenuItem = {\n key: item.key,\n disabled: isItemDisabled(item) || item.primaryDisabled,\n /* eslint-disable deprecation/deprecation */\n name: item.name,\n text: item.text || item.name,\n secondaryText: item.secondaryText,\n /* eslint-enable deprecation/deprecation */\n className: classNames.splitPrimary,\n canCheck: item.canCheck,\n isChecked: item.isChecked,\n checked: item.checked,\n iconProps: item.iconProps,\n onRenderIcon: item.onRenderIcon,\n data: item.data,\n 'data-is-focusable': false,\n };\n\n const { itemProps: itemComponentProps } = item;\n\n return (\n <button {...getNativeProps(itemProps, buttonProperties)}>\n <ChildrenRenderer\n data-is-focusable={false}\n item={itemProps}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks && onItemClick ? onItemClick : undefined}\n hasIcons={hasIcons}\n {...itemComponentProps}\n />\n </button>\n );\n }\n\n private _renderSplitDivider(item: IContextualMenuItem) {\n const getDividerClassNames =\n item.getSplitButtonVerticalDividerClassNames || getSplitButtonVerticalDividerClassNames;\n return <VerticalDivider getClassNames={getDividerClassNames} />;\n }\n\n private _renderSplitIconButton(\n item: IContextualMenuItem,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n index: number,\n keytipAttributes: any,\n ) {\n const {\n contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem,\n onItemMouseLeave,\n onItemMouseDown,\n openSubMenu,\n dismissSubMenu,\n dismissMenu,\n } = this.props;\n\n const itemProps: IContextualMenuItem = {\n onClick: this._onIconItemClick,\n disabled: isItemDisabled(item),\n className: classNames.splitMenu,\n subMenuProps: item.subMenuProps,\n submenuIconProps: item.submenuIconProps,\n split: true,\n key: item.key,\n };\n\n const buttonProps = {\n ...getNativeProps<React.ButtonHTMLAttributes<HTMLButtonElement>>(itemProps, buttonProperties),\n ...{\n onMouseEnter: this._onItemMouseEnterIcon,\n onMouseLeave: onItemMouseLeave ? onItemMouseLeave.bind(this, item) : undefined,\n onMouseDown: (ev: React.MouseEvent<HTMLButtonElement>) =>\n onItemMouseDown ? onItemMouseDown(item, ev) : undefined,\n onMouseMove: this._onItemMouseMoveIcon,\n 'data-is-focusable': false,\n 'data-ktp-execute-target': keytipAttributes['data-ktp-execute-target'],\n 'aria-hidden': true,\n },\n };\n\n const { itemProps: itemComponentProps } = item;\n\n return (\n <button {...buttonProps}>\n <ChildrenRenderer\n componentRef={item.componentRef}\n item={itemProps}\n classNames={classNames}\n index={index}\n hasIcons={false}\n openSubMenu={openSubMenu}\n dismissSubMenu={dismissSubMenu}\n dismissMenu={dismissMenu}\n getSubmenuTarget={this._getSubmenuTarget}\n {...itemComponentProps}\n />\n </button>\n );\n }\n\n private _onItemMouseEnterPrimary = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseEnter } = this.props;\n if (onItemMouseEnter) {\n onItemMouseEnter({ ...item, subMenuProps: undefined, items: undefined }, ev, this._splitButton);\n }\n };\n\n private _onItemMouseEnterIcon = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseEnter } = this.props;\n if (onItemMouseEnter) {\n onItemMouseEnter(item, ev, this._splitButton);\n }\n };\n\n private _onItemMouseMovePrimary = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseMove } = this.props;\n if (onItemMouseMove) {\n onItemMouseMove({ ...item, subMenuProps: undefined, items: undefined }, ev, this._splitButton);\n }\n };\n\n private _onItemMouseMoveIcon = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemMouseMove } = this.props;\n if (onItemMouseMove) {\n onItemMouseMove(item, ev, this._splitButton);\n }\n };\n\n private _onIconItemClick = (ev: React.MouseEvent<HTMLElement>): void => {\n const { item, onItemClickBase } = this.props;\n if (onItemClickBase) {\n onItemClickBase(item, ev, (this._splitButton ? this._splitButton : ev.currentTarget) as HTMLElement);\n }\n };\n\n private _executeItemClick = (ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>): void => {\n const { item, executeItemClick, onItemClick } = this.props;\n\n if (item.disabled || item.isDisabled) {\n return;\n }\n\n if (this._processingTouch && onItemClick) {\n return onItemClick(item, ev);\n }\n\n if (executeItemClick) {\n executeItemClick(item, ev);\n }\n };\n\n private _onTouchStart = (ev: React.TouchEvent<HTMLElement>): void => {\n if (this._splitButton && !('onpointerdown' in this._splitButton)) {\n this._handleTouchAndPointerEvent(ev);\n }\n };\n\n private _onPointerDown = (ev: PointerEvent): void => {\n if (ev.pointerType === 'touch') {\n this._handleTouchAndPointerEvent(ev);\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n };\n\n private _handleTouchAndPointerEvent(ev: React.TouchEvent<HTMLElement> | PointerEvent) {\n const { onTap } = this.props;\n\n if (onTap) {\n onTap(ev);\n }\n // If we already have an existing timeout from a previous touch/pointer event\n // cancel that timeout so we can set a new one.\n if (this._lastTouchTimeoutId) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n this._lastTouchTimeoutId = this._async.setTimeout(() => {\n this._processingTouch = false;\n this._lastTouchTimeoutId = undefined;\n }, TouchIdleDelay);\n }\n}\n","import * as React from 'react';\nimport {\n IContextualMenuProps,\n IContextualMenuItem,\n ContextualMenuItemType,\n IContextualMenuListProps,\n IContextualMenuStyleProps,\n IContextualMenuStyles,\n IContextualMenuItemRenderProps,\n} from './ContextualMenu.types';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { FocusZone, FocusZoneDirection, IFocusZoneProps, FocusZoneTabbableElements } from '../../FocusZone';\nimport { IMenuItemClassNames, IContextualMenuClassNames } from './ContextualMenu.classNames';\nimport {\n divProperties,\n getNativeProps,\n shallowCompare,\n warnDeprecations,\n Async,\n EventGroup,\n assign,\n classNamesFunction,\n css,\n getDocument,\n getFirstFocusable,\n getId,\n getLastFocusable,\n getRTL,\n getWindow,\n IRenderFunction,\n Point,\n KeyCodes,\n shouldWrapFocus,\n IStyleFunctionOrObject,\n isIOS,\n isMac,\n initializeComponentRef,\n memoizeFunction,\n} from '../../Utilities';\nimport { hasSubmenu, getIsChecked, isItemDisabled } from '../../utilities/contextualMenu/index';\nimport { withResponsiveMode, ResponsiveMode } from '../../utilities/decorators/withResponsiveMode';\nimport { Callout, ICalloutContentStyleProps, ICalloutContentStyles } from '../../Callout';\nimport { ContextualMenuItem } from './ContextualMenuItem';\nimport {\n ContextualMenuSplitButton,\n ContextualMenuButton,\n ContextualMenuAnchor,\n} from './ContextualMenuItemWrapper/index';\nimport { IProcessedStyleSet, concatStyleSetsWithProps } from '../../Styling';\nimport { IContextualMenuItemStyleProps, IContextualMenuItemStyles } from './ContextualMenuItem.types';\nimport { getItemStyles } from './ContextualMenu.classNames';\nimport { Rectangle } from '@uifabric/utilities';\n\ntype Target = Element | string | MouseEvent | Point | Rectangle | null | React.RefObject<Element>;\n\nconst getClassNames = classNamesFunction<IContextualMenuStyleProps, IContextualMenuStyles>();\nconst getContextualMenuItemClassNames = classNamesFunction<IContextualMenuItemStyleProps, IContextualMenuItemStyles>();\n\nexport interface IContextualMenuState {\n expandedMenuItemKey?: string;\n /** True if the menu was expanded by mouse click OR hover (as opposed to by keyboard) */\n expandedByMouseClick?: boolean;\n dismissedMenuItemKey?: string;\n contextualMenuItems?: IContextualMenuItem[];\n contextualMenuTarget?: Element;\n submenuTarget?: Element;\n positions?: any;\n slideDirectionalClassName?: string;\n subMenuId?: string;\n submenuDirection?: DirectionalHint;\n}\n\nexport function getSubmenuItems(\n item: IContextualMenuItem,\n options?: {\n target?: Target;\n },\n): IContextualMenuItem[] | undefined {\n const target = options?.target;\n\n // eslint-disable-next-line deprecation/deprecation\n const items = item.subMenuProps ? item.subMenuProps.items : item.items;\n\n if (items) {\n const overrideItems: typeof items = [];\n\n for (const subItem of items) {\n if (subItem.preferMenuTargetAsEventTarget) {\n // For sub-items which need an overridden target, intercept `onClick`\n const { onClick, ...contextItem } = subItem;\n\n overrideItems.push({\n ...contextItem,\n onClick: getOnClickWithOverrideTarget(onClick, target),\n });\n } else {\n overrideItems.push(subItem);\n }\n }\n\n return overrideItems;\n }\n}\n\n/**\n * Returns true if a list of menu items can contain a checkbox\n */\nexport function canAnyMenuItemsCheck(items: IContextualMenuItem[]): boolean {\n return items.some(item => {\n if (item.canCheck) {\n return true;\n }\n\n // If the item is a section, check if any of the items in the section can check.\n if (item.sectionProps && item.sectionProps.items.some(submenuItem => submenuItem.canCheck === true)) {\n return true;\n }\n\n return false;\n });\n}\n\nconst NavigationIdleDelay = 250; /* ms */\n\nconst COMPONENT_NAME = 'ContextualMenu';\n\nconst _getMenuItemStylesFunction = memoizeFunction(\n (\n ...styles: (IStyleFunctionOrObject<IContextualMenuItemStyleProps, IContextualMenuItemStyles> | undefined)[]\n ): IStyleFunctionOrObject<IContextualMenuItemStyleProps, IContextualMenuItemStyles> => {\n return (styleProps: IContextualMenuItemStyleProps) =>\n concatStyleSetsWithProps(styleProps, getItemStyles, ...styles);\n },\n);\n\n@withResponsiveMode\nexport class ContextualMenuBase extends React.Component<IContextualMenuProps, IContextualMenuState> {\n // The default ContextualMenu properties have no items and beak, the default submenu direction is right and top.\n public static defaultProps: IContextualMenuProps = {\n items: [],\n shouldFocusOnMount: true,\n gapSpace: 0,\n directionalHint: DirectionalHint.bottomAutoEdge,\n beakWidth: 16,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _id: string;\n private _host: HTMLElement;\n private _previousActiveElement: HTMLElement | undefined;\n private _enterTimerId: number | undefined;\n private _targetWindow: Window;\n private _target: Element | MouseEvent | Point | null;\n private _isScrollIdle: boolean;\n private _scrollIdleTimeoutId: number | undefined;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n private _lastKeyDownWasAltOrMeta: boolean | undefined;\n private _shouldUpdateFocusOnMouseEvent: boolean;\n private _gotMouseMove: boolean;\n private _mounted = false;\n private _focusingPreviousElement: boolean;\n\n private _adjustedFocusZoneProps: IFocusZoneProps;\n\n // eslint-disable-next-line deprecation/deprecation\n private _classNames: IProcessedStyleSet<IContextualMenuStyles> | IContextualMenuClassNames;\n\n constructor(props: IContextualMenuProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n getMenuClassNames: 'styles',\n });\n\n this.state = {\n contextualMenuItems: undefined,\n subMenuId: getId('ContextualMenu'),\n };\n\n this._id = props.id || getId('ContextualMenu');\n this._focusingPreviousElement = false;\n this._isScrollIdle = true;\n this._shouldUpdateFocusOnMouseEvent = !this.props.delayUpdateFocusOnHover;\n this._gotMouseMove = false;\n }\n\n public dismiss = (ev?: any, dismissAll?: boolean) => {\n const { onDismiss } = this.props;\n\n if (onDismiss) {\n onDismiss(ev, dismissAll);\n }\n };\n\n public shouldComponentUpdate(newProps: IContextualMenuProps, newState: IContextualMenuState): boolean {\n if (!newProps.shouldUpdateWhenHidden && this.props.hidden && newProps.hidden) {\n // Do not update when hidden.\n return false;\n }\n\n return !shallowCompare(this.props, newProps) || !shallowCompare(this.state, newState);\n }\n\n public UNSAFE_componentWillUpdate(newProps: IContextualMenuProps): void {\n if (newProps.target !== this.props.target) {\n const newTarget = newProps.target;\n this._setTargetWindowAndElement(newTarget!);\n }\n\n if (this._isHidden(newProps) !== this._isHidden(this.props)) {\n if (this._isHidden(newProps)) {\n this._onMenuClosed();\n } else {\n this._onMenuOpened();\n this._previousActiveElement = this._targetWindow\n ? (this._targetWindow.document.activeElement as HTMLElement)\n : undefined;\n }\n }\n if (newProps.delayUpdateFocusOnHover !== this.props.delayUpdateFocusOnHover) {\n // update shouldUpdateFocusOnMouseEvent to follow what was passed in\n this._shouldUpdateFocusOnMouseEvent = !newProps.delayUpdateFocusOnHover;\n\n // If shouldUpdateFocusOnMouseEvent is false, we need to reset gotMouseMove to false\n this._gotMouseMove = this._shouldUpdateFocusOnMouseEvent && this._gotMouseMove;\n }\n }\n\n // Invoked once, both on the client and server, immediately before the initial rendering occurs.\n public UNSAFE_componentWillMount() {\n const target = this.props.target;\n this._setTargetWindowAndElement(target!);\n if (!this.props.hidden) {\n this._previousActiveElement = this._targetWindow\n ? (this._targetWindow.document.activeElement as HTMLElement)\n : undefined;\n }\n }\n\n // Invoked once, only on the client (not on the server), immediately after the initial rendering occurs.\n public componentDidMount(): void {\n if (!this.props.hidden) {\n this._onMenuOpened();\n }\n\n this._mounted = true;\n }\n\n // Invoked immediately before a component is unmounted from the DOM.\n public componentWillUnmount() {\n if (this.props.onMenuDismissed) {\n this.props.onMenuDismissed(this.props);\n }\n\n this._events.dispose();\n this._async.dispose();\n this._mounted = false;\n }\n\n public render(): JSX.Element | null {\n let { isBeakVisible } = this.props;\n\n const {\n items,\n labelElementId,\n id,\n className,\n beakWidth,\n directionalHint,\n directionalHintForRTL,\n alignTargetEdge,\n gapSpace,\n coverTarget,\n ariaLabel,\n doNotLayer,\n target,\n bounds,\n useTargetWidth,\n useTargetAsMinWidth,\n directionalHintFixed,\n shouldFocusOnMount,\n shouldFocusOnContainer,\n title,\n styles,\n theme,\n calloutProps,\n onRenderSubMenu = this._onRenderSubMenu,\n onRenderMenuList = this._onRenderMenuList,\n focusZoneProps,\n // eslint-disable-next-line deprecation/deprecation\n getMenuClassNames,\n } = this.props;\n\n this._classNames = getMenuClassNames\n ? getMenuClassNames(theme!, className)\n : getClassNames(styles, {\n theme: theme!,\n className: className,\n });\n\n const hasIcons = itemsHaveIcons(items);\n\n function itemsHaveIcons(contextualMenuItems: IContextualMenuItem[]): boolean {\n for (const item of contextualMenuItems) {\n if (item.iconProps) {\n return true;\n }\n\n if (\n item.itemType === ContextualMenuItemType.Section &&\n item.sectionProps &&\n itemsHaveIcons(item.sectionProps.items)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n this._adjustedFocusZoneProps = { ...focusZoneProps, direction: this._getFocusZoneDirection() };\n\n const hasCheckmarks = canAnyMenuItemsCheck(items);\n const submenuProps = this.state.expandedMenuItemKey && this.props.hidden !== true ? this._getSubmenuProps() : null;\n\n isBeakVisible = isBeakVisible === undefined ? this.props.responsiveMode! <= ResponsiveMode.medium : isBeakVisible;\n /**\n * When useTargetWidth is true, get the width of the target element and apply it for the context menu container\n */\n let contextMenuStyle;\n const targetAsHtmlElement = this._target as HTMLElement;\n if ((useTargetWidth || useTargetAsMinWidth) && targetAsHtmlElement && targetAsHtmlElement.offsetWidth) {\n const targetBoundingRect = targetAsHtmlElement.getBoundingClientRect();\n const targetWidth = targetBoundingRect.width - 2; /* Accounts for 1px border */\n\n if (useTargetWidth) {\n contextMenuStyle = {\n width: targetWidth,\n };\n } else if (useTargetAsMinWidth) {\n contextMenuStyle = {\n minWidth: targetWidth,\n };\n }\n }\n\n // The menu should only return if items were provided, if no items were provided then it should not appear.\n if (items && items.length > 0) {\n let totalItemCount = 0;\n for (const item of items) {\n if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) {\n const itemCount = item.customOnRenderListLength ? item.customOnRenderListLength : 1;\n totalItemCount += itemCount;\n }\n }\n\n const calloutStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.callout as IStyleFunctionOrObject<\n ICalloutContentStyleProps,\n ICalloutContentStyles\n >)\n : undefined;\n\n return (\n <Callout\n styles={calloutStyles}\n onRestoreFocus={this._tryFocusPreviousActiveElement}\n {...calloutProps}\n target={target}\n isBeakVisible={isBeakVisible}\n beakWidth={beakWidth}\n directionalHint={directionalHint}\n directionalHintForRTL={directionalHintForRTL}\n gapSpace={gapSpace}\n coverTarget={coverTarget}\n doNotLayer={doNotLayer}\n className={css('ms-ContextualMenu-Callout', calloutProps && calloutProps.className)}\n setInitialFocus={shouldFocusOnMount}\n onDismiss={this.props.onDismiss}\n onScroll={this._onScroll}\n bounds={bounds}\n directionalHintFixed={directionalHintFixed}\n alignTargetEdge={alignTargetEdge}\n hidden={this.props.hidden}\n >\n <div\n style={contextMenuStyle}\n ref={(host: HTMLDivElement) => (this._host = host)}\n id={id}\n className={this._classNames.container}\n tabIndex={shouldFocusOnContainer ? 0 : -1}\n onKeyDown={this._onMenuKeyDown}\n onKeyUp={this._onKeyUp}\n onFocusCapture={this._onMenuFocusCapture}\n aria-label={ariaLabel}\n aria-labelledby={labelElementId}\n role={'menu'}\n >\n {title && <div className={this._classNames.title}> {title} </div>}\n {items && items.length ? (\n <FocusZone\n className={this._classNames.root}\n isCircularNavigation={true}\n handleTabKey={FocusZoneTabbableElements.all}\n {...this._adjustedFocusZoneProps}\n >\n {onRenderMenuList(\n {\n ariaLabel,\n items,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n defaultMenuItemRenderer: this._defaultMenuItemRenderer,\n labelElementId,\n },\n this._onRenderMenuList,\n )}\n </FocusZone>\n ) : null}\n {submenuProps && onRenderSubMenu(submenuProps, this._onRenderSubMenu)}\n </div>\n </Callout>\n );\n } else {\n return null;\n }\n }\n\n /**\n * Return whether the contextual menu is hidden.\n * Undefined value for hidden is equivalent to hidden being false.\n * @param props - Props for the component\n */\n private _isHidden(props: IContextualMenuProps) {\n return !!props.hidden;\n }\n\n private _onMenuOpened() {\n this._events.on(this._targetWindow, 'resize', this.dismiss);\n this._shouldUpdateFocusOnMouseEvent = !this.props.delayUpdateFocusOnHover;\n this._gotMouseMove = false;\n this.props.onMenuOpened && this.props.onMenuOpened(this.props);\n }\n\n private _onMenuClosed() {\n this._events.off(this._targetWindow, 'resize', this.dismiss);\n\n // This is kept for backwards compatability with hidden for right now.\n // This preserves the way that this behaved in the past\n // TODO find a better way to handle this by using the same conventions that\n // Popup uses to determine if focus is contained when dismissal occurs\n this._tryFocusPreviousActiveElement({\n containsFocus: this._focusingPreviousElement,\n documentContainsFocus: this._targetWindow.document.hasFocus(),\n originalElement: this._previousActiveElement,\n });\n\n this._focusingPreviousElement = false;\n\n if (this.props.onMenuDismissed) {\n this.props.onMenuDismissed(this.props);\n }\n\n this._shouldUpdateFocusOnMouseEvent = !this.props.delayUpdateFocusOnHover;\n\n // We need to dismiss any submenu related state properties,\n // so that when the menu is shown again, the submenu is collapsed\n this.setState({\n expandedByMouseClick: undefined,\n dismissedMenuItemKey: undefined,\n expandedMenuItemKey: undefined,\n submenuTarget: undefined,\n });\n }\n\n private _tryFocusPreviousActiveElement = (options: {\n containsFocus: boolean;\n documentContainsFocus: boolean;\n originalElement: HTMLElement | Window | undefined;\n }) => {\n if (this.props.onRestoreFocus) {\n this.props.onRestoreFocus(options);\n } else {\n if (options && options.containsFocus && this._previousActiveElement) {\n // Make sure that the focus method actually exists\n // In some cases the object might exist but not be a real element.\n // This is primarily for IE 11 and should be removed once IE 11 is no longer in use.\n if (this._previousActiveElement.focus) {\n this._previousActiveElement.focus();\n }\n }\n }\n };\n\n /**\n * Gets the focusZoneDirection by using the arrowDirection if specified,\n * the direction specificed in the focusZoneProps, or defaults to FocusZoneDirection.vertical\n */\n private _getFocusZoneDirection() {\n const { focusZoneProps } = this.props;\n return focusZoneProps && focusZoneProps.direction !== undefined\n ? focusZoneProps.direction\n : FocusZoneDirection.vertical;\n }\n\n private _onRenderSubMenu(\n subMenuProps: IContextualMenuProps,\n defaultRender?: IRenderFunction<IContextualMenuProps>,\n ): JSX.Element {\n throw Error(\n 'ContextualMenuBase: onRenderSubMenu callback is null or undefined. ' +\n 'Please ensure to set `onRenderSubMenu` property either manually or with `styled` helper.',\n );\n }\n\n private _onRenderMenuList = (\n menuListProps: IContextualMenuListProps,\n defaultRender?: IRenderFunction<IContextualMenuListProps>,\n ): JSX.Element => {\n let indexCorrection = 0;\n const { items, totalItemCount, hasCheckmarks, hasIcons } = menuListProps;\n\n return (\n <ul className={this._classNames.list} onKeyDown={this._onKeyDown} onKeyUp={this._onKeyUp} role={'presentation'}>\n {items.map((item, index) => {\n const menuItem = this._renderMenuItem(item, index, indexCorrection, totalItemCount, hasCheckmarks, hasIcons);\n if (item.itemType !== ContextualMenuItemType.Divider && item.itemType !== ContextualMenuItemType.Header) {\n const indexIncrease = item.customOnRenderListLength ? item.customOnRenderListLength : 1;\n indexCorrection += indexIncrease;\n }\n return menuItem;\n })}\n </ul>\n );\n };\n\n /**\n * !!!IMPORTANT!!! Avoid mutating `item: IContextualMenuItem` argument. It will\n * cause the menu items to always re-render because the component update is based on shallow comparison.\n */\n private _renderMenuItem = (\n item: IContextualMenuItem,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): JSX.Element => {\n const renderedItems: React.ReactNode[] = [];\n const iconProps = item.iconProps || { iconName: 'None' };\n const {\n getItemClassNames, // eslint-disable-line deprecation/deprecation\n itemProps,\n } = item;\n const styles = itemProps ? itemProps.styles : undefined;\n\n // We only send a dividerClassName when the item to be rendered is a divider.\n // For all other cases, the default divider style is used.\n const dividerClassName = item.itemType === ContextualMenuItemType.Divider ? item.className : undefined;\n const subMenuIconClassName = item.submenuIconProps ? item.submenuIconProps.className : '';\n\n // eslint-disable-next-line deprecation/deprecation\n let itemClassNames: IMenuItemClassNames;\n\n // IContextualMenuItem#getItemClassNames for backwards compatibility\n // otherwise uses mergeStyles for class names.\n if (getItemClassNames) {\n itemClassNames = getItemClassNames(\n this.props.theme!,\n isItemDisabled(item),\n this.state.expandedMenuItemKey === item.key,\n !!getIsChecked(item),\n !!item.href,\n iconProps.iconName !== 'None',\n item.className,\n dividerClassName,\n iconProps.className,\n subMenuIconClassName,\n item.primaryDisabled,\n );\n } else {\n const itemStyleProps: IContextualMenuItemStyleProps = {\n theme: this.props.theme!,\n disabled: isItemDisabled(item),\n expanded: this.state.expandedMenuItemKey === item.key,\n checked: !!getIsChecked(item),\n isAnchorLink: !!item.href,\n knownIcon: iconProps.iconName !== 'None',\n itemClassName: item.className,\n dividerClassName,\n iconClassName: iconProps.className,\n subMenuClassName: subMenuIconClassName,\n primaryDisabled: item.primaryDisabled,\n };\n\n // We need to generate default styles then override if styles are provided\n // since the ContextualMenu currently handles item classNames.\n itemClassNames = getContextualMenuItemClassNames(\n _getMenuItemStylesFunction(this._classNames.subComponentStyles?.menuItem, styles),\n itemStyleProps,\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (item.text === '-' || item.name === '-') {\n item.itemType = ContextualMenuItemType.Divider;\n }\n switch (item.itemType) {\n case ContextualMenuItemType.Divider:\n renderedItems.push(this._renderSeparator(index, itemClassNames));\n break;\n case ContextualMenuItemType.Header:\n renderedItems.push(this._renderSeparator(index, itemClassNames));\n const headerItem = this._renderHeaderMenuItem(item, itemClassNames, index, hasCheckmarks, hasIcons);\n renderedItems.push(this._renderListItem(headerItem, item.key || index, itemClassNames, item.title));\n break;\n case ContextualMenuItemType.Section:\n renderedItems.push(this._renderSectionItem(item, itemClassNames, index, hasCheckmarks, hasIcons));\n break;\n default:\n const menuItem = this._renderNormalItem(\n item,\n itemClassNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n renderedItems.push(this._renderListItem(menuItem, item.key || index, itemClassNames, item.title));\n break;\n }\n\n // Since multiple nodes *could* be rendered, wrap them all in a fragment with this item's key.\n // This ensures the reconciler handles multi-item output per-node correctly and does not re-mount content.\n return <React.Fragment key={item.key}>{renderedItems}</React.Fragment>;\n };\n\n private _defaultMenuItemRenderer = (item: IContextualMenuItemRenderProps): React.ReactNode => {\n const { index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons } = item;\n return this._renderMenuItem(item, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons);\n };\n\n private _renderSectionItem(\n sectionItem: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n menuClassNames: IMenuItemClassNames,\n index: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ) {\n const sectionProps = sectionItem.sectionProps;\n if (!sectionProps) {\n return;\n }\n\n let headerItem;\n let groupProps;\n if (sectionProps.title) {\n let headerContextualMenuItem: IContextualMenuItem | undefined = undefined;\n let ariaLabellledby = '';\n if (typeof sectionProps.title === 'string') {\n // Since title is a user-facing string, it needs to be stripped\n // of whitespace in order to build a valid element ID\n const id = this._id + sectionProps.title.replace(/\\s/g, '');\n headerContextualMenuItem = {\n key: `section-${sectionProps.title}-title`,\n itemType: ContextualMenuItemType.Header,\n text: sectionProps.title,\n id: id,\n };\n ariaLabellledby = id;\n } else {\n const id = sectionProps.title.id || this._id + sectionProps.title.key.replace(/\\s/g, '');\n headerContextualMenuItem = { ...sectionProps.title, id };\n ariaLabellledby = id;\n }\n\n if (headerContextualMenuItem) {\n groupProps = {\n role: 'group',\n 'aria-labelledby': ariaLabellledby,\n };\n headerItem = this._renderHeaderMenuItem(\n headerContextualMenuItem,\n menuClassNames,\n index,\n hasCheckmarks,\n hasIcons,\n );\n }\n }\n\n if (sectionProps.items && sectionProps.items.length > 0) {\n return (\n <li role=\"presentation\" key={sectionProps.key || sectionItem.key || `section-${index}`}>\n <div {...groupProps}>\n <ul className={this._classNames.list} role=\"presentation\">\n {sectionProps.topDivider && this._renderSeparator(index, menuClassNames, true, true)}\n {headerItem &&\n this._renderListItem(headerItem, sectionItem.key || index, menuClassNames, sectionItem.title)}\n {sectionProps.items.map((contextualMenuItem, itemsIndex) =>\n this._renderMenuItem(\n contextualMenuItem,\n itemsIndex,\n itemsIndex,\n sectionProps.items.length,\n hasCheckmarks,\n hasIcons,\n ),\n )}\n {sectionProps.bottomDivider && this._renderSeparator(index, menuClassNames, false, true)}\n </ul>\n </div>\n </li>\n );\n }\n }\n\n private _renderListItem(\n content: React.ReactNode,\n key: string | number,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n title?: string,\n ) {\n return (\n <li role=\"presentation\" title={title} key={key} className={classNames.item}>\n {content}\n </li>\n );\n }\n\n private _renderSeparator(\n index: number,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n top?: boolean,\n fromSection?: boolean,\n ): React.ReactNode {\n if (fromSection || index > 0) {\n return (\n <li\n role=\"separator\"\n key={'separator-' + index + (top === undefined ? '' : top ? '-top' : '-bottom')}\n className={classNames.divider}\n aria-hidden=\"true\"\n />\n );\n }\n return null;\n }\n\n private _renderNormalItem(\n item: IContextualMenuItem,\n classNames: IMenuItemClassNames, // eslint-disable-line deprecation/deprecation\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): React.ReactNode {\n if (item.onRender) {\n return item.onRender(\n { 'aria-posinset': focusableElementIndex + 1, 'aria-setsize': totalItemCount, ...item },\n this.dismiss,\n );\n }\n if (item.href) {\n return this._renderAnchorMenuItem(\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n }\n\n if (item.split && hasSubmenu(item)) {\n return this._renderSplitButton(\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n }\n\n return this._renderButtonItem(\n item,\n classNames,\n index,\n focusableElementIndex,\n totalItemCount,\n hasCheckmarks,\n hasIcons,\n );\n }\n\n private _renderHeaderMenuItem(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): React.ReactNode {\n const { contextualMenuItemAs: ChildrenRenderer = ContextualMenuItem } = this.props;\n const { itemProps, id } = item;\n const divHtmlProperties =\n itemProps && getNativeProps<React.HTMLAttributes<HTMLDivElement>>(itemProps, divProperties);\n return (\n // eslint-disable-next-line deprecation/deprecation\n <div id={id} className={this._classNames.header} {...divHtmlProperties} style={item.style}>\n <ChildrenRenderer\n item={item}\n classNames={classNames}\n index={index}\n onCheckmarkClick={hasCheckmarks ? this._onItemClick : undefined}\n hasIcons={hasIcons}\n {...itemProps}\n />\n </div>\n );\n }\n\n private _renderAnchorMenuItem(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks: boolean,\n hasIcons: boolean,\n ): React.ReactNode {\n const { contextualMenuItemAs } = this.props;\n const { expandedMenuItemKey } = this.state;\n return (\n <ContextualMenuAnchor\n item={item}\n classNames={classNames}\n index={index}\n focusableElementIndex={focusableElementIndex}\n totalItemCount={totalItemCount}\n hasCheckmarks={hasCheckmarks}\n hasIcons={hasIcons}\n contextualMenuItemAs={contextualMenuItemAs}\n onItemMouseEnter={this._onItemMouseEnterBase}\n onItemMouseLeave={this._onMouseItemLeave}\n onItemMouseMove={this._onItemMouseMoveBase}\n onItemMouseDown={this._onItemMouseDown}\n executeItemClick={this._executeItemClick}\n onItemClick={this._onAnchorClick}\n onItemKeyDown={this._onItemKeyDown}\n expandedMenuItemKey={expandedMenuItemKey}\n openSubMenu={this._onItemSubMenuExpand}\n dismissSubMenu={this._onSubMenuDismiss}\n dismissMenu={this.dismiss}\n />\n );\n }\n\n private _renderButtonItem(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks?: boolean,\n hasIcons?: boolean,\n ) {\n const { contextualMenuItemAs } = this.props;\n const { expandedMenuItemKey } = this.state;\n\n return (\n <ContextualMenuButton\n item={item}\n classNames={classNames}\n index={index}\n focusableElementIndex={focusableElementIndex}\n totalItemCount={totalItemCount}\n hasCheckmarks={hasCheckmarks}\n hasIcons={hasIcons}\n contextualMenuItemAs={contextualMenuItemAs}\n onItemMouseEnter={this._onItemMouseEnterBase}\n onItemMouseLeave={this._onMouseItemLeave}\n onItemMouseMove={this._onItemMouseMoveBase}\n onItemMouseDown={this._onItemMouseDown}\n executeItemClick={this._executeItemClick}\n onItemClick={this._onItemClick}\n onItemClickBase={this._onItemClickBase}\n onItemKeyDown={this._onItemKeyDown}\n expandedMenuItemKey={expandedMenuItemKey}\n openSubMenu={this._onItemSubMenuExpand}\n dismissSubMenu={this._onSubMenuDismiss}\n dismissMenu={this.dismiss}\n />\n );\n }\n\n private _renderSplitButton(\n item: IContextualMenuItem,\n // eslint-disable-next-line deprecation/deprecation\n classNames: IMenuItemClassNames,\n index: number,\n focusableElementIndex: number,\n totalItemCount: number,\n hasCheckmarks?: boolean,\n hasIcons?: boolean,\n ): JSX.Element {\n const { contextualMenuItemAs } = this.props;\n const { expandedMenuItemKey } = this.state;\n\n return (\n <ContextualMenuSplitButton\n item={item}\n classNames={classNames}\n index={index}\n focusableElementIndex={focusableElementIndex}\n totalItemCount={totalItemCount}\n hasCheckmarks={hasCheckmarks}\n hasIcons={hasIcons}\n contextualMenuItemAs={contextualMenuItemAs}\n onItemMouseEnter={this._onItemMouseEnterBase}\n onItemMouseLeave={this._onMouseItemLeave}\n onItemMouseMove={this._onItemMouseMoveBase}\n onItemMouseDown={this._onItemMouseDown}\n executeItemClick={this._executeItemClick}\n onItemClick={this._onItemClick}\n onItemClickBase={this._onItemClickBase}\n onItemKeyDown={this._onItemKeyDown}\n openSubMenu={this._onItemSubMenuExpand}\n dismissSubMenu={this._onSubMenuDismiss}\n dismissMenu={this.dismiss}\n expandedMenuItemKey={expandedMenuItemKey}\n onTap={this._onPointerAndTouchEvent}\n />\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n\n // On Mac, pressing escape dismisses all levels of native context menus\n const dismissAllMenus = ev.which === KeyCodes.escape && (isMac() || isIOS());\n\n return this._keyHandler(ev, this._shouldHandleKeyDown, dismissAllMenus);\n };\n\n private _shouldHandleKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n return (\n ev.which === KeyCodes.escape ||\n this._shouldCloseSubMenu(ev) ||\n (ev.which === KeyCodes.up && (ev.altKey || ev.metaKey))\n );\n };\n\n private _onMenuFocusCapture = (ev: React.FocusEvent<HTMLElement>) => {\n if (this.props.delayUpdateFocusOnHover) {\n this._shouldUpdateFocusOnMouseEvent = true;\n }\n };\n\n private _onKeyUp = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n return this._keyHandler(ev, this._shouldHandleKeyUp, true /* dismissAllMenus */);\n };\n\n /**\n * We close the menu on key up only if ALL of the following are true:\n * - Most recent key down was alt or meta (command)\n * - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n * expand/collapse the menu)\n * - We're not on a Mac (or iOS)\n *\n * This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n * closing any open context menus. There is not a similar behavior on Macs.\n */\n private _shouldHandleKeyUp = (ev: React.KeyboardEvent<HTMLElement>) => {\n const keyPressIsAltOrMetaAlone = this._lastKeyDownWasAltOrMeta && this._isAltOrMeta(ev);\n this._lastKeyDownWasAltOrMeta = false;\n return !!keyPressIsAltOrMetaAlone && !(isIOS() || isMac());\n };\n\n /**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\n private _isAltOrMeta(ev: React.KeyboardEvent<HTMLElement>): boolean {\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n }\n\n /**\n * Calls `shouldHandleKey` to determine whether the keyboard event should be handled;\n * if so, stops event propagation and dismisses menu(s).\n * @param ev - The keyboard event.\n * @param shouldHandleKey - Returns whether we should handle this keyboard event.\n * @param dismissAllMenus - If true, dismiss all menus. Otherwise, dismiss only the current menu.\n * Only does anything if `shouldHandleKey` returns true.\n * @returns Whether the event was handled.\n */\n private _keyHandler = (\n ev: React.KeyboardEvent<HTMLElement>,\n shouldHandleKey: (ev: React.KeyboardEvent<HTMLElement>) => boolean,\n dismissAllMenus?: boolean,\n ): boolean => {\n let handled = false;\n\n if (shouldHandleKey(ev)) {\n this._focusingPreviousElement = true;\n this.dismiss(ev, dismissAllMenus);\n ev.preventDefault();\n ev.stopPropagation();\n handled = true;\n }\n\n return handled;\n };\n\n /**\n * Checks if the submenu should be closed\n */\n private _shouldCloseSubMenu = (ev: React.KeyboardEvent<HTMLElement>): boolean => {\n const submenuCloseKey = getRTL(this.props.theme) ? KeyCodes.right : KeyCodes.left;\n\n if (ev.which !== submenuCloseKey || !this.props.isSubMenu) {\n return false;\n }\n\n return (\n this._adjustedFocusZoneProps.direction === FocusZoneDirection.vertical ||\n (!!this._adjustedFocusZoneProps.checkForNoWrap &&\n !shouldWrapFocus(ev.target as HTMLElement, 'data-no-horizontal-wrap'))\n );\n };\n\n private _onMenuKeyDown = (ev: React.KeyboardEvent<HTMLElement>) => {\n // Mark as handled if onKeyDown returns true (for handling collapse cases)\n // or if we are attempting to expand a submenu\n const handled = this._onKeyDown(ev);\n\n if (handled || !this._host) {\n return;\n }\n\n // If we have a modifier key being pressed, we do not want to move focus.\n // Otherwise, handle up and down keys.\n const hasModifier = !!(ev.altKey || ev.metaKey);\n const isUp = ev.which === KeyCodes.up;\n const isDown = ev.which === KeyCodes.down;\n if (!hasModifier && (isUp || isDown)) {\n const elementToFocus = isUp\n ? getLastFocusable(this._host, this._host.lastChild as HTMLElement, true)\n : getFirstFocusable(this._host, this._host.firstChild as HTMLElement, true);\n\n if (elementToFocus) {\n elementToFocus.focus();\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n private _onScroll = (): void => {\n if (!this._isScrollIdle && this._scrollIdleTimeoutId !== undefined) {\n this._async.clearTimeout(this._scrollIdleTimeoutId);\n this._scrollIdleTimeoutId = undefined;\n } else {\n this._isScrollIdle = false;\n }\n\n this._scrollIdleTimeoutId = this._async.setTimeout(() => {\n this._isScrollIdle = true;\n }, NavigationIdleDelay);\n };\n\n private _onItemMouseEnterBase = (item: any, ev: React.MouseEvent<HTMLElement>, target?: HTMLElement): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n this._updateFocusOnMouseEvent(item, ev, target);\n };\n\n private _onItemMouseMoveBase = (item: any, ev: React.MouseEvent<HTMLElement>, target: HTMLElement): void => {\n const targetElement = ev.currentTarget as HTMLElement;\n\n // Always do this check to make sure we record a mouseMove if needed (even if we are timed out)\n if (this._shouldUpdateFocusOnMouseEvent) {\n this._gotMouseMove = true;\n } else {\n return;\n }\n\n if (\n !this._isScrollIdle ||\n this._enterTimerId !== undefined ||\n targetElement === (this._targetWindow.document.activeElement as HTMLElement)\n ) {\n return;\n }\n\n this._updateFocusOnMouseEvent(item, ev, target);\n };\n\n private _shouldIgnoreMouseEvent(): boolean {\n return !this._isScrollIdle || !this._gotMouseMove;\n }\n\n private _onMouseItemLeave = (item: any, ev: React.MouseEvent<HTMLElement>): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n if (this._enterTimerId !== undefined) {\n this._async.clearTimeout(this._enterTimerId);\n this._enterTimerId = undefined;\n }\n\n if (this.state.expandedMenuItemKey !== undefined) {\n return;\n }\n\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if ((this._host as any).setActive) {\n try {\n (this._host as any).setActive();\n } catch (e) {\n /* no-op */\n }\n } else {\n this._host.focus();\n }\n };\n\n /**\n * Handles updating focus when mouseEnter or mouseMove fire.\n * As part of updating focus, This function will also update\n * the expand/collapse state accordingly.\n */\n private _updateFocusOnMouseEvent(item: IContextualMenuItem, ev: React.MouseEvent<HTMLElement>, target?: HTMLElement) {\n const targetElement = target ? target : (ev.currentTarget as HTMLElement);\n const { subMenuHoverDelay: timeoutDuration = NavigationIdleDelay } = this.props;\n\n if (item.key === this.state.expandedMenuItemKey) {\n return;\n }\n\n if (this._enterTimerId !== undefined) {\n this._async.clearTimeout(this._enterTimerId);\n this._enterTimerId = undefined;\n }\n\n // If the menu is not expanded we can update focus without any delay\n if (this.state.expandedMenuItemKey === undefined) {\n targetElement.focus();\n }\n\n // Delay updating expanding/dismissing the submenu\n // and only set focus if we have not already done so\n if (hasSubmenu(item)) {\n ev.stopPropagation();\n this._enterTimerId = this._async.setTimeout(() => {\n targetElement.focus();\n this.setState({\n expandedByMouseClick: true,\n });\n this._onItemSubMenuExpand(item, targetElement);\n this._enterTimerId = undefined;\n }, timeoutDuration);\n } else {\n this._enterTimerId = this._async.setTimeout(() => {\n this._onSubMenuDismiss(ev);\n targetElement.focus();\n this._enterTimerId = undefined;\n }, timeoutDuration);\n }\n }\n\n private _onItemMouseDown = (item: IContextualMenuItem, ev: React.MouseEvent<HTMLElement>): void => {\n if (item.onMouseDown) {\n item.onMouseDown(item, ev);\n }\n };\n\n private _onItemClick = (\n item: IContextualMenuItem,\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): void => {\n this._onItemClickBase(item, ev, ev.currentTarget as HTMLElement);\n };\n\n private _onItemClickBase = (\n item: IContextualMenuItem,\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n target: HTMLElement,\n ): void => {\n const { target: menuTarget } = this.props;\n\n const items = getSubmenuItems(item, { target: menuTarget });\n\n // Cancel a async menu item hover timeout action from being taken and instead\n // just trigger the click event instead.\n this._cancelSubMenuTimer();\n\n if (!hasSubmenu(item) && (!items || !items.length)) {\n // This is an item without a menu. Click it.\n this._executeItemClick(item, ev);\n } else {\n if (item.key !== this.state.expandedMenuItemKey) {\n // This has a collapsed sub menu. Expand it.\n this.setState({\n // When Edge + Narrator are used together (regardless of if the button is in a form or not), pressing\n // \"Enter\" fires this method and not _onMenuKeyDown. Checking ev.nativeEvent.detail differentiates\n // between a real click event and a keypress event (detail should be the number of mouse clicks).\n // ...Plot twist! For a real click event in IE 11, detail is always 0 (Edge sets it properly to 1).\n // So we also check the pointerType property, which both Edge and IE set to \"mouse\" for real clicks\n // and \"\" for pressing \"Enter\" with Narrator on.\n expandedByMouseClick: ev.nativeEvent.detail !== 0 || (ev.nativeEvent as PointerEvent).pointerType === 'mouse',\n });\n this._onItemSubMenuExpand(item, target);\n }\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n private _onAnchorClick = (item: IContextualMenuItem, ev: React.MouseEvent<HTMLElement>) => {\n this._executeItemClick(item, ev);\n ev.stopPropagation();\n };\n\n private _executeItemClick = (\n item: IContextualMenuItem,\n ev: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): void => {\n const { target: menuTarget } = this.props;\n\n if (item.disabled || item.isDisabled) {\n return;\n }\n\n if (item.preferMenuTargetAsEventTarget) {\n overrideTarget(ev, menuTarget);\n }\n\n let dismiss = false;\n if (item.onClick) {\n dismiss = !!item.onClick(ev, item);\n } else if (this.props.onItemClick) {\n dismiss = !!this.props.onItemClick(ev, item);\n }\n\n if (dismiss || !ev.defaultPrevented) {\n this.dismiss(ev, true);\n\n // This should be removed whenever possible.\n // This ensures that the hidden dismissal action maintains the same behavior.\n // If the menu is being dismissed then the previously focused element should\n // get focused since the dismiss was triggered by a user click on an item\n // Rather than focus being lost.\n this._focusingPreviousElement = true;\n }\n };\n\n private _onItemKeyDown = (item: any, ev: React.KeyboardEvent<HTMLElement>): void => {\n const openKey = getRTL(this.props.theme) ? KeyCodes.left : KeyCodes.right;\n\n if (\n !item.disabled &&\n (ev.which === openKey || ev.which === KeyCodes.enter || (ev.which === KeyCodes.down && (ev.altKey || ev.metaKey)))\n ) {\n this.setState({\n expandedByMouseClick: false,\n });\n this._onItemSubMenuExpand(item, ev.currentTarget as HTMLElement);\n ev.preventDefault();\n }\n };\n\n // Cancel a async menu item hover timeout action from being taken and instead\n // do new upcoming behavior\n private _cancelSubMenuTimer = () => {\n if (this._enterTimerId !== undefined) {\n this._async.clearTimeout(this._enterTimerId);\n this._enterTimerId = undefined;\n }\n };\n\n private _onItemSubMenuExpand = (item: IContextualMenuItem, target: HTMLElement): void => {\n if (this.state.expandedMenuItemKey !== item.key) {\n if (this.state.expandedMenuItemKey) {\n this._onSubMenuDismiss();\n }\n\n // Focus the target to ensure when we close it, we're focusing on the correct element.\n target.focus();\n this.setState({\n expandedMenuItemKey: item.key,\n submenuTarget: target,\n });\n }\n };\n\n private _getSubmenuProps() {\n const { submenuTarget, expandedMenuItemKey } = this.state;\n const item = this._findItemByKey(expandedMenuItemKey!);\n let submenuProps: IContextualMenuProps | null = null;\n\n const { target: menuTarget } = this.props;\n\n if (item) {\n submenuProps = {\n items: getSubmenuItems(item, { target: menuTarget })!,\n target: submenuTarget,\n onDismiss: this._onSubMenuDismiss,\n isSubMenu: true,\n id: this.state.subMenuId,\n shouldFocusOnMount: true,\n shouldFocusOnContainer: this.state.expandedByMouseClick,\n directionalHint: getRTL(this.props.theme) ? DirectionalHint.leftTopEdge : DirectionalHint.rightTopEdge,\n className: this.props.className,\n gapSpace: 0,\n isBeakVisible: false,\n };\n\n if (item.subMenuProps) {\n assign(submenuProps, item.subMenuProps);\n }\n\n if (item.preferMenuTargetAsEventTarget) {\n const { onItemClick } = item;\n\n submenuProps.onItemClick = getOnClickWithOverrideTarget(onItemClick, menuTarget);\n }\n }\n return submenuProps;\n }\n\n private _findItemByKey(key: string): IContextualMenuItem | undefined {\n const { items } = this.props;\n return this._findItemByKeyFromItems(key, items);\n }\n\n /**\n * Returns the item that mathes a given key if any.\n * @param key - The key of the item to match\n * @param items - The items to look for the key\n */\n private _findItemByKeyFromItems(key: string, items: IContextualMenuItem[]): IContextualMenuItem | undefined {\n for (const item of items) {\n if (item.itemType === ContextualMenuItemType.Section && item.sectionProps) {\n const match = this._findItemByKeyFromItems(key, item.sectionProps.items);\n if (match) {\n return match;\n }\n } else if (item.key && item.key === key) {\n return item;\n }\n }\n }\n\n /**\n * This function is called ASYNCHRONOUSLY, and so there is a chance it is called\n * after the component is unmounted. The _mounted property is added to prevent\n * from calling setState() after unmount. Do NOT copy this pattern in synchronous\n * code.\n */\n private _onSubMenuDismiss = (ev?: any, dismissAll?: boolean): void => {\n if (dismissAll) {\n this.dismiss(ev, dismissAll);\n } else if (this._mounted) {\n this.setState({\n dismissedMenuItemKey: this.state.expandedMenuItemKey,\n expandedMenuItemKey: undefined,\n submenuTarget: undefined,\n });\n }\n };\n\n private _setTargetWindowAndElement(target: Target): void {\n const currentElement = this._host;\n\n if (target) {\n if (typeof target === 'string') {\n const currentDoc: Document = getDocument(currentElement)!;\n this._target = currentDoc ? (currentDoc.querySelector(target) as Element) : null;\n this._targetWindow = getWindow(currentElement)!;\n // Cast to any prevents error about stopPropagation always existing\n } else if ((target as any).stopPropagation) {\n this._targetWindow = getWindow((target as MouseEvent).target as HTMLElement)!;\n this._target = target as MouseEvent;\n } else if (\n // eslint-disable-next-line deprecation/deprecation\n ((target as Point).left !== undefined || (target as Point).x !== undefined) &&\n // eslint-disable-next-line deprecation/deprecation\n ((target as Point).top !== undefined || (target as Point).y !== undefined)\n ) {\n this._targetWindow = getWindow(currentElement)!;\n this._target = target as Point;\n } else if ((target as React.RefObject<Element>).current !== undefined) {\n this._target = (target as React.RefObject<Element>).current;\n this._targetWindow = getWindow(this._target)!;\n } else {\n const targetElement: Element = target as Element;\n this._targetWindow = getWindow(targetElement)!;\n this._target = target as Element;\n }\n } else {\n this._targetWindow = getWindow(currentElement)!;\n }\n }\n\n private _onPointerAndTouchEvent = (ev: React.TouchEvent<HTMLElement> | PointerEvent) => {\n this._cancelSubMenuTimer();\n };\n}\n\nfunction getOnClickWithOverrideTarget(\n onClick:\n | ((\n ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement> | undefined,\n item?: IContextualMenuItem | undefined,\n ) => boolean | void)\n | undefined,\n target: Target | undefined,\n) {\n return onClick\n ? (\n ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement> | undefined,\n item?: IContextualMenuItem | undefined,\n ) => {\n overrideTarget(ev, target);\n\n return onClick(ev, item);\n }\n : onClick;\n}\n\nfunction overrideTarget(\n ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement> | undefined,\n target?: Target,\n): void {\n if (ev && target) {\n ev.persist();\n\n if (target instanceof Event) {\n ev.target = target.target as HTMLElement;\n } else if (target instanceof Element) {\n ev.target = target;\n }\n }\n}\n","import { IContextualMenuStyleProps, IContextualMenuStyles } from './ContextualMenu.types';\nimport { getGlobalClassNames, FontWeights } from '../../Styling';\nimport { CONTEXTUAL_MENU_ITEM_HEIGHT } from './ContextualMenu.cnstyles';\n\nconst GlobalClassNames = {\n root: 'ms-ContextualMenu',\n container: 'ms-ContextualMenu-container',\n list: 'ms-ContextualMenu-list',\n header: 'ms-ContextualMenu-header',\n title: 'ms-ContextualMenu-title',\n isopen: 'is-open',\n};\n\nexport const getStyles = (props: IContextualMenuStyleProps): IContextualMenuStyles => {\n const { className, theme } = props;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const { fonts, semanticColors, effects } = theme;\n\n return {\n root: [\n theme.fonts.medium,\n classNames.root,\n classNames.isopen,\n {\n backgroundColor: semanticColors.menuBackground,\n minWidth: '180px',\n },\n className,\n ],\n container: [\n classNames.container,\n {\n selectors: {\n ':focus': { outline: 0 },\n },\n },\n ],\n list: [\n classNames.list,\n classNames.isopen,\n {\n listStyleType: 'none',\n margin: '0',\n padding: '0',\n },\n ],\n header: [\n classNames.header,\n fonts.small,\n {\n fontWeight: FontWeights.semibold,\n color: semanticColors.menuHeader,\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n height: CONTEXTUAL_MENU_ITEM_HEIGHT,\n lineHeight: CONTEXTUAL_MENU_ITEM_HEIGHT,\n cursor: 'default',\n padding: '0px 6px',\n userSelect: 'none',\n textAlign: 'left',\n },\n ],\n title: [\n classNames.title,\n {\n fontSize: fonts.mediumPlus.fontSize,\n paddingRight: '14px',\n paddingLeft: '14px',\n paddingBottom: '5px',\n paddingTop: '5px',\n backgroundColor: semanticColors.menuItemBackgroundPressed,\n },\n ],\n subComponentStyles: {\n callout: {\n root: {\n boxShadow: effects.elevation8,\n },\n },\n menuItem: {},\n },\n };\n};\n","import * as React from 'react';\nimport { styled, composeRenderFunction } from '../../Utilities';\nimport { IContextualMenuProps, IContextualMenuStyleProps, IContextualMenuStyles } from './ContextualMenu.types';\nimport { ContextualMenuBase } from './ContextualMenu.base';\nimport { getStyles } from './ContextualMenu.styles';\n\nfunction onRenderSubMenu(subMenuProps: IContextualMenuProps) {\n return <LocalContextualMenu {...subMenuProps} />;\n}\n\n// This is to prevent cyclic import with ContextualMenu.base.tsx.\nconst LocalContextualMenu: React.FunctionComponent<IContextualMenuProps> = styled<\n IContextualMenuProps,\n IContextualMenuStyleProps,\n IContextualMenuStyles\n>(\n ContextualMenuBase,\n getStyles,\n (props: IContextualMenuProps) => ({\n onRenderSubMenu: props.onRenderSubMenu\n ? composeRenderFunction(props.onRenderSubMenu, onRenderSubMenu)\n : onRenderSubMenu,\n }),\n { scope: 'ContextualMenu' },\n);\n\n/**\n * ContextualMenu description\n */\nexport const ContextualMenu: React.FunctionComponent<IContextualMenuProps> = LocalContextualMenu;\n","import { memoizeFunction } from '../../Utilities';\nimport { ITheme, mergeStyleSets } from '../../Styling';\nimport { IButtonStyles } from './Button.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nexport interface IButtonClassNames {\n root?: string;\n flexContainer?: string;\n textContainer?: string;\n icon?: string;\n label?: string;\n menuIcon?: string;\n description?: string;\n screenReaderText?: string;\n}\n\nexport const ButtonGlobalClassNames = {\n msButton: 'ms-Button',\n msButtonHasMenu: 'ms-Button--hasMenu',\n msButtonIcon: 'ms-Button-icon',\n msButtonMenuIcon: 'ms-Button-menuIcon',\n msButtonLabel: 'ms-Button-label',\n msButtonDescription: 'ms-Button-description',\n msButtonScreenReaderText: 'ms-Button-screenReaderText',\n msButtonFlexContainer: 'ms-Button-flexContainer',\n msButtonTextContainer: 'ms-Button-textContainer',\n};\n\nexport const getBaseButtonClassNames = memoizeFunction(\n (\n theme: ITheme,\n styles: IButtonStyles,\n className: string,\n variantClassName: string,\n iconClassName: string | undefined,\n menuIconClassName: string | undefined,\n disabled: boolean,\n hasMenu: boolean,\n checked: boolean,\n expanded: boolean,\n isSplit: boolean | undefined,\n ): IButtonClassNames => {\n const classNames = getGlobalClassNames(ButtonGlobalClassNames, theme || {});\n\n const isExpanded = expanded && !isSplit;\n return mergeStyleSets({\n root: [\n classNames.msButton,\n styles.root,\n variantClassName,\n checked && ['is-checked', styles.rootChecked],\n isExpanded && [\n 'is-expanded',\n styles.rootExpanded,\n {\n selectors: {\n [`:hover .${classNames.msButtonIcon}`]: styles.iconExpandedHovered,\n // menuIcon falls back to rootExpandedHovered to support original behavior\n [`:hover .${classNames.msButtonMenuIcon}`]: styles.menuIconExpandedHovered || styles.rootExpandedHovered,\n ':hover': styles.rootExpandedHovered,\n },\n },\n ],\n hasMenu && [ButtonGlobalClassNames.msButtonHasMenu, styles.rootHasMenu],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !isExpanded &&\n !checked && {\n selectors: {\n ':hover': styles.rootHovered,\n [`:hover .${classNames.msButtonLabel}`]: styles.labelHovered,\n [`:hover .${classNames.msButtonIcon}`]: styles.iconHovered,\n [`:hover .${classNames.msButtonDescription}`]: styles.descriptionHovered,\n [`:hover .${classNames.msButtonMenuIcon}`]: styles.menuIconHovered,\n ':focus': styles.rootFocused,\n ':active': styles.rootPressed,\n [`:active .${classNames.msButtonIcon}`]: styles.iconPressed,\n [`:active .${classNames.msButtonDescription}`]: styles.descriptionPressed,\n [`:active .${classNames.msButtonMenuIcon}`]: styles.menuIconPressed,\n },\n },\n disabled && checked && [styles.rootCheckedDisabled],\n !disabled &&\n checked && {\n selectors: {\n ':hover': styles.rootCheckedHovered,\n ':active': styles.rootCheckedPressed,\n },\n },\n className,\n ],\n flexContainer: [classNames.msButtonFlexContainer, styles.flexContainer],\n textContainer: [classNames.msButtonTextContainer, styles.textContainer],\n icon: [\n classNames.msButtonIcon,\n iconClassName,\n styles.icon,\n isExpanded && styles.iconExpanded,\n checked && styles.iconChecked,\n disabled && styles.iconDisabled,\n ],\n label: [classNames.msButtonLabel, styles.label, checked && styles.labelChecked, disabled && styles.labelDisabled],\n menuIcon: [\n classNames.msButtonMenuIcon,\n menuIconClassName,\n styles.menuIcon,\n checked && styles.menuIconChecked,\n disabled && !isSplit && styles.menuIconDisabled,\n !disabled &&\n !isExpanded &&\n !checked && {\n selectors: {\n ':hover': styles.menuIconHovered,\n ':active': styles.menuIconPressed,\n },\n },\n isExpanded && ['is-expanded', styles.menuIconExpanded],\n ],\n description: [\n classNames.msButtonDescription,\n styles.description,\n checked && styles.descriptionChecked,\n disabled && styles.descriptionDisabled,\n ],\n screenReaderText: [classNames.msButtonScreenReaderText, styles.screenReaderText],\n });\n },\n);\n","import { memoizeFunction } from '../../../Utilities';\nimport { mergeStyles } from '../../../Styling';\nimport { IButtonStyles } from '../Button.types';\n\nexport interface ISplitButtonClassNames {\n root?: string;\n icon?: string;\n splitButtonContainer?: string;\n flexContainer?: string;\n divider?: string;\n}\n\nexport const getSplitButtonClassNames = memoizeFunction(\n (\n styles: IButtonStyles,\n disabled: boolean,\n expanded: boolean,\n checked: boolean,\n primaryDisabled?: boolean,\n ): ISplitButtonClassNames => {\n return {\n root: mergeStyles(\n styles.splitButtonMenuButton,\n expanded && [styles.splitButtonMenuButtonExpanded],\n disabled && [styles.splitButtonMenuButtonDisabled],\n checked && !disabled && [styles.splitButtonMenuButtonChecked],\n primaryDisabled &&\n !disabled && [\n {\n selectors: {\n ':focus': styles.splitButtonMenuFocused,\n },\n },\n ],\n ),\n\n splitButtonContainer: mergeStyles(\n styles.splitButtonContainer,\n !disabled &&\n checked && [\n styles.splitButtonContainerChecked,\n {\n selectors: {\n ':hover': styles.splitButtonContainerCheckedHovered,\n },\n },\n ],\n !disabled &&\n !checked && [\n {\n selectors: {\n ':hover': styles.splitButtonContainerHovered,\n ':focus': styles.splitButtonContainerFocused,\n },\n },\n ],\n disabled && styles.splitButtonContainerDisabled,\n ),\n\n icon: mergeStyles(\n styles.splitButtonMenuIcon,\n disabled && styles.splitButtonMenuIconDisabled,\n !disabled && primaryDisabled && styles.splitButtonMenuIcon,\n ),\n\n flexContainer: mergeStyles(styles.splitButtonFlexContainer),\n\n divider: mergeStyles(\n styles.splitButtonDivider,\n (primaryDisabled || disabled) && styles.splitButtonDividerDisabled,\n ),\n };\n },\n);\n","import * as React from 'react';\nimport { IComponentAs, IComponentAsProps } from '../IComponentAs';\nimport { createMemoizer } from '../memoize';\n\ninterface IComposeComponentAs {\n <TProps>(outer: IComponentAs<TProps>): (inner: IComponentAs<TProps>) => IComponentAs<TProps>;\n}\n\nfunction createComposedComponent<TProps>(\n outer: IComponentAs<TProps>,\n): (inner: IComponentAs<TProps>) => IComponentAs<TProps> {\n const Outer = outer;\n\n const outerMemoizer = createMemoizer((inner: IComponentAs<TProps>) => {\n if (outer === inner) {\n throw new Error('Attempted to compose a component with itself.');\n }\n\n const Inner = inner;\n\n const innerMemoizer = createMemoizer((defaultRender: IComponentAs<TProps>) => {\n const InnerWithDefaultRender: React.ComponentType<IComponentAsProps<TProps>> = (\n innerProps: IComponentAsProps<TProps>,\n ): JSX.Element => {\n return <Inner {...innerProps} defaultRender={defaultRender} />;\n };\n\n return InnerWithDefaultRender;\n });\n\n const OuterWithDefaultRender: React.ComponentType<IComponentAsProps<TProps>> = (\n outerProps: IComponentAsProps<TProps>,\n ): JSX.Element => {\n const { defaultRender } = outerProps;\n\n return <Outer {...outerProps} defaultRender={defaultRender ? innerMemoizer(defaultRender) : Inner} />;\n };\n\n return OuterWithDefaultRender;\n });\n\n return outerMemoizer;\n}\n\nconst componentAsMemoizer = createMemoizer<IComposeComponentAs>(createComposedComponent);\n\n/**\n * Composes two components which conform to the `IComponentAs` specification; that is, two\n * components which accept a `defaultRender` prop, which is a 'default' implementation of\n * a component which accepts the same overall props.\n *\n * @public\n */\nexport function composeComponentAs<TProps>(\n outer: IComponentAs<TProps>,\n inner: IComponentAs<TProps>,\n): IComponentAs<TProps> {\n return componentAsMemoizer(outer)(inner);\n}\n","import * as React from 'react';\nimport {\n anchorProperties,\n assign,\n buttonProperties,\n createMergedRef,\n css,\n getId,\n getNativeProps,\n initializeComponentRef,\n memoizeFunction,\n mergeAriaAttributeValues,\n nullRender,\n portalContainsElement,\n setFocusVisibility,\n warnConditionallyRequiredProps,\n warnDeprecations,\n Async,\n EventGroup,\n FocusRects,\n IRenderFunction,\n KeyCodes,\n} from '../../Utilities';\nimport { Icon, FontIcon, ImageIcon } from '../../Icon';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { ContextualMenu, IContextualMenuProps } from '../../ContextualMenu';\nimport { IButtonProps, IButton } from './Button.types';\nimport { IButtonClassNames, getBaseButtonClassNames } from './BaseButton.classNames';\nimport {\n getSplitButtonClassNames as getBaseSplitButtonClassNames,\n ISplitButtonClassNames,\n} from './SplitButton/SplitButton.classNames';\nimport { KeytipData } from '../../KeytipData';\nimport { IKeytipProps } from '../Keytip/Keytip.types';\nimport { composeComponentAs } from '../../Utilities';\n\n/**\n * {@docCategory Button}\n */\nexport interface IBaseButtonProps extends IButtonProps {\n baseClassName?: string;\n variantClassName?: string;\n}\n\nexport interface IBaseButtonState {\n menuHidden: boolean;\n}\n\nconst TouchIdleDelay = 500; /* ms */\nconst COMPONENT_NAME = 'BaseButton';\n\n/**\n * {@docCategory Button}\n */\nexport class BaseButton extends React.Component<IBaseButtonProps, IBaseButtonState> implements IButton {\n private get _isSplitButton(): boolean {\n return !!this.props.menuProps && !!this.props.onClick && this.props.split === true;\n }\n\n public static defaultProps: Partial<IBaseButtonProps> = {\n baseClassName: 'ms-Button',\n styles: {},\n split: false,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _buttonElement = React.createRef<HTMLElement>();\n private _splitButtonContainer = React.createRef<HTMLDivElement>();\n private _mergedRef = createMergedRef<HTMLElement>();\n private _labelId: string;\n private _descriptionId: string;\n private _ariaDescriptionId: string;\n private _classNames: IButtonClassNames;\n private _processingTouch: boolean;\n private _lastTouchTimeoutId: number | undefined;\n private _renderedVisibleMenu: boolean = false;\n\n // These fields will be used to set corresponding props on the menu.\n private _menuShouldFocusOnContainer: boolean | undefined;\n private _menuShouldFocusOnMount: boolean | undefined;\n\n private _getMemoizedMenuButtonKeytipProps = memoizeFunction((keytipProps: IKeytipProps) => {\n return {\n ...keytipProps,\n hasMenu: true,\n };\n });\n\n constructor(props: IBaseButtonProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n this._events = new EventGroup(this);\n\n warnConditionallyRequiredProps(COMPONENT_NAME, props, ['menuProps', 'onClick'], 'split', this.props.split!);\n\n warnDeprecations(COMPONENT_NAME, props, {\n rootProps: undefined,\n description: 'secondaryText',\n toggled: 'checked',\n });\n this._labelId = getId();\n this._descriptionId = getId();\n this._ariaDescriptionId = getId();\n\n this.state = {\n menuHidden: true,\n };\n }\n\n public render(): JSX.Element {\n const {\n ariaDescription,\n ariaLabel,\n ariaHidden,\n className,\n disabled,\n allowDisabledFocus,\n primaryDisabled,\n // eslint-disable-next-line deprecation/deprecation\n secondaryText = this.props.description,\n href,\n iconProps,\n menuIconProps,\n styles,\n checked,\n variantClassName,\n theme,\n toggle,\n getClassNames,\n role,\n } = this.props;\n\n const { menuHidden } = this.state;\n\n // Button is disabled if the whole button (in case of splitButton is disabled) or if the primary action is disabled\n const isPrimaryButtonDisabled = disabled || primaryDisabled;\n\n this._classNames = getClassNames\n ? getClassNames(\n theme!,\n className!,\n variantClassName!,\n iconProps && iconProps.className,\n menuIconProps && menuIconProps.className,\n isPrimaryButtonDisabled!,\n checked!,\n !menuHidden,\n !!this.props.menuProps,\n this.props.split,\n !!allowDisabledFocus,\n )\n : getBaseButtonClassNames(\n theme!,\n styles!,\n className!,\n variantClassName!,\n iconProps && iconProps.className,\n menuIconProps && menuIconProps.className,\n isPrimaryButtonDisabled!,\n !!this.props.menuProps,\n checked!,\n !menuHidden,\n this.props.split,\n );\n\n const { _ariaDescriptionId, _labelId, _descriptionId } = this;\n // Anchor tag cannot be disabled hence in disabled state rendering\n // anchor button as normal button\n const renderAsAnchor: boolean = !isPrimaryButtonDisabled && !!href;\n const tag = renderAsAnchor ? 'a' : 'button';\n\n const nativeProps = getNativeProps(\n // eslint-disable-next-line deprecation/deprecation\n assign(renderAsAnchor ? {} : { type: 'button' }, this.props.rootProps, this.props),\n renderAsAnchor ? anchorProperties : buttonProperties,\n [\n 'disabled', // let disabled buttons be focused and styled as disabled.\n ],\n );\n\n // Check for ariaLabel passed in via Button props, and fall back to aria-label passed in via native props\n const resolvedAriaLabel = ariaLabel || (nativeProps as any)['aria-label'];\n\n // Check for ariaDescription, secondaryText or aria-describedby in the native props to determine source of\n // aria-describedby. Otherwise default to undefined so property does not appear in output.\n let ariaDescribedBy = undefined;\n if (ariaDescription) {\n ariaDescribedBy = _ariaDescriptionId;\n } else if (secondaryText && this.props.onRenderDescription !== nullRender) {\n // for buttons like CompoundButton with a valid onRenderDescription, we need to set an ariaDescribedBy\n // for buttons that do not render anything (via nullRender), we should not set an ariaDescribedBy\n ariaDescribedBy = _descriptionId;\n } else if ((nativeProps as any)['aria-describedby']) {\n ariaDescribedBy = (nativeProps as any)['aria-describedby'];\n }\n\n // If an explicit ariaLabel is given, use that as the label and we're done.\n // If an explicit aria-labelledby is given, use that and we're done.\n // If any kind of description is given (which will end up as an aria-describedby attribute),\n // set the labelledby element. Otherwise, the button is labeled implicitly by the descendent\n // text on the button (if it exists). Never set both aria-label and aria-labelledby.\n let ariaLabelledBy = undefined;\n if (!resolvedAriaLabel) {\n if ((nativeProps as any)['aria-labelledby']) {\n ariaLabelledBy = (nativeProps as any)['aria-labelledby'];\n } else if (ariaDescribedBy) {\n ariaLabelledBy = this._hasText() ? _labelId : undefined;\n }\n }\n\n const dataIsFocusable =\n (this.props as any)['data-is-focusable'] === false || (disabled && !allowDisabledFocus) || this._isSplitButton\n ? false\n : true;\n\n const isCheckboxTypeRole = role === 'menuitemcheckbox' || role === 'checkbox';\n // if isCheckboxTypeRole, always return a checked value.\n // Otherwise only return checked value if toggle is set to true.\n // This is because role=\"checkbox\" always needs to have an aria-checked value\n // but our checked prop only sets aria-pressed if we mark the button as a toggle=\"true\"\n const checkedOrPressedValue = isCheckboxTypeRole ? !!checked : toggle === true ? !!checked : undefined;\n\n const buttonProps = assign(nativeProps, {\n className: this._classNames.root,\n // eslint-disable-next-line deprecation/deprecation\n ref: this._mergedRef(this.props.elementRef, this._buttonElement),\n disabled: isPrimaryButtonDisabled && !allowDisabledFocus,\n onKeyDown: this._onKeyDown,\n onKeyPress: this._onKeyPress,\n onKeyUp: this._onKeyUp,\n onMouseDown: this._onMouseDown,\n onMouseUp: this._onMouseUp,\n onClick: this._onClick,\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-disabled': isPrimaryButtonDisabled,\n 'data-is-focusable': dataIsFocusable,\n // aria-pressed attribute should only be present for toggle buttons\n // aria-checked attribute should only be present for toggle buttons with checkbox type role\n [isCheckboxTypeRole ? 'aria-checked' : 'aria-pressed']: checkedOrPressedValue,\n });\n\n if (ariaHidden) {\n buttonProps['aria-hidden'] = true;\n }\n\n if (this._isSplitButton) {\n return this._onRenderSplitButtonContent(tag, buttonProps);\n } else if (this.props.menuProps) {\n assign(buttonProps, {\n 'aria-expanded': !menuHidden,\n 'aria-owns': !menuHidden ? this._labelId + '-menu' : null,\n 'aria-haspopup': true,\n });\n }\n\n return this._onRenderContent(tag, buttonProps);\n }\n\n public componentDidMount() {\n // For split buttons, touching anywhere in the button should drop the dropdown, which should contain the\n // primary action. This gives more hit target space for touch environments. We're setting the onpointerdown here,\n // because React does not support Pointer events yet.\n if (this._isSplitButton && this._splitButtonContainer.current) {\n if ('onpointerdown' in this._splitButtonContainer.current) {\n this._events.on(this._splitButtonContainer.current, 'pointerdown', this._onPointerDown, true);\n }\n if ('onpointerup' in this._splitButtonContainer.current && this.props.onPointerUp) {\n this._events.on(this._splitButtonContainer.current, 'pointerup', this.props.onPointerUp, true);\n }\n }\n }\n\n public componentDidUpdate(prevProps: IBaseButtonProps, prevState: IBaseButtonState) {\n // If Button's menu was closed, run onAfterMenuDismiss.\n if (this.props.onAfterMenuDismiss && !prevState.menuHidden && this.state.menuHidden) {\n this.props.onAfterMenuDismiss();\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public focus(): void {\n if (this._isSplitButton && this._splitButtonContainer.current) {\n setFocusVisibility(true);\n this._splitButtonContainer.current.focus();\n } else if (this._buttonElement.current) {\n setFocusVisibility(true);\n this._buttonElement.current.focus();\n }\n }\n\n public dismissMenu(): void {\n this._dismissMenu();\n }\n\n public openMenu(shouldFocusOnContainer?: boolean, shouldFocusOnMount?: boolean): void {\n this._openMenu(shouldFocusOnContainer, shouldFocusOnMount);\n }\n\n private _onRenderContent(tag: any, buttonProps: IButtonProps): JSX.Element {\n const props = this.props;\n const Tag = tag;\n const {\n menuIconProps,\n menuProps,\n onRenderIcon = this._onRenderIcon,\n onRenderAriaDescription = this._onRenderAriaDescription,\n onRenderChildren = this._onRenderChildren,\n // eslint-disable-next-line deprecation/deprecation\n onRenderMenu = this._onRenderMenu,\n onRenderMenuIcon = this._onRenderMenuIcon,\n disabled,\n } = props;\n let { keytipProps } = props;\n if (keytipProps && menuProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n const Button = (keytipAttributes?: any): JSX.Element => (\n <Tag {...buttonProps} {...keytipAttributes}>\n <span className={this._classNames.flexContainer} data-automationid=\"splitbuttonprimary\">\n {onRenderIcon(props, this._onRenderIcon)}\n {this._onRenderTextContents()}\n {onRenderAriaDescription(props, this._onRenderAriaDescription)}\n {onRenderChildren(props, this._onRenderChildren)}\n {!this._isSplitButton &&\n (menuProps || menuIconProps || this.props.onRenderMenuIcon) &&\n onRenderMenuIcon(this.props, this._onRenderMenuIcon)}\n {menuProps &&\n !menuProps.doNotLayer &&\n this._shouldRenderMenu() &&\n onRenderMenu(this._getMenuProps(menuProps), this._onRenderMenu)}\n </span>\n </Tag>\n );\n\n const Content = keytipProps ? (\n // If we're making a split button, we won't put the keytip here\n <KeytipData\n keytipProps={!this._isSplitButton ? keytipProps : undefined}\n ariaDescribedBy={(buttonProps as any)['aria-describedby']}\n disabled={disabled}\n >\n {(keytipAttributes: any): JSX.Element => Button(keytipAttributes)}\n </KeytipData>\n ) : (\n Button()\n );\n\n if (menuProps && menuProps.doNotLayer) {\n return (\n <span style={{ display: 'inline-block' }}>\n {Content}\n {this._shouldRenderMenu() && onRenderMenu(this._getMenuProps(menuProps), this._onRenderMenu)}\n </span>\n );\n }\n\n return (\n <>\n {Content}\n <FocusRects />\n </>\n );\n }\n\n /**\n * Method to help determine if the menu's component tree should\n * be rendered. It takes into account whether the menu is expanded,\n * whether it is a persisted menu and whether it has been shown to the user.\n */\n private _shouldRenderMenu() {\n const { menuHidden } = this.state;\n // eslint-disable-next-line deprecation/deprecation\n const { persistMenu, renderPersistedMenuHiddenOnMount } = this.props;\n\n if (!menuHidden) {\n // Always should render a menu when it is expanded\n return true;\n } else if (persistMenu && (this._renderedVisibleMenu || renderPersistedMenuHiddenOnMount)) {\n // _renderedVisibleMenu ensures that the first rendering of\n // the menu happens on-screen, as edge's scrollbar calculations are off if done while hidden.\n return true;\n }\n\n return false;\n }\n\n private _onRenderIcon = (\n buttonProps?: IButtonProps,\n defaultRender?: IRenderFunction<IButtonProps>,\n ): JSX.Element | null => {\n const { iconProps } = this.props;\n\n if (iconProps && (iconProps.iconName !== undefined || iconProps.imageProps)) {\n const { className, imageProps, ...rest } = iconProps;\n\n // If the styles prop is specified as part of iconProps, fall back to regular Icon as FontIcon and ImageIcon\n // do not have this prop.\n if (iconProps.styles) {\n return <Icon className={css(this._classNames.icon, className)} imageProps={imageProps} {...rest} />;\n }\n if (iconProps.iconName) {\n return <FontIcon className={css(this._classNames.icon, className)} {...rest} />;\n }\n if (imageProps) {\n return <ImageIcon className={css(this._classNames.icon, className)} imageProps={imageProps} {...rest} />;\n }\n }\n return null;\n };\n\n private _onRenderTextContents = (): JSX.Element | (JSX.Element | null)[] => {\n const {\n text,\n children,\n // eslint-disable-next-line deprecation/deprecation\n secondaryText = this.props.description,\n onRenderText = this._onRenderText,\n onRenderDescription = this._onRenderDescription,\n } = this.props;\n\n if (text || typeof children === 'string' || secondaryText) {\n return (\n <span className={this._classNames.textContainer}>\n {onRenderText(this.props, this._onRenderText)}\n {onRenderDescription(this.props, this._onRenderDescription)}\n </span>\n );\n }\n return [onRenderText(this.props, this._onRenderText), onRenderDescription(this.props, this._onRenderDescription)];\n };\n\n private _onRenderText = (): JSX.Element | null => {\n let { text } = this.props;\n const { children } = this.props;\n\n // For backwards compat, we should continue to take in the text content from children.\n if (text === undefined && typeof children === 'string') {\n text = children;\n }\n\n if (this._hasText()) {\n return (\n <span key={this._labelId} className={this._classNames.label} id={this._labelId}>\n {text}\n </span>\n );\n }\n\n return null;\n };\n\n private _hasText(): boolean {\n // _onRenderTextContents and _onRenderText do not perform the same checks. Below is parity with what _onRenderText\n // used to have before the refactor that introduced this function. _onRenderTextContents does not require props.\n // text to be undefined in order for props.children to be used as a fallback.\n // Purely a code maintainability/reuse issue, but logged as Issue #4979.\n return this.props.text !== null && (this.props.text !== undefined || typeof this.props.children === 'string');\n }\n\n private _onRenderChildren = (): JSX.Element | null => {\n const { children } = this.props;\n\n // If children is just a string, either it or the text will be rendered via onRenderLabel\n // If children is another component, it will be rendered after text\n if (typeof children === 'string') {\n return null;\n }\n\n return children as any;\n };\n\n private _onRenderDescription = (props: IButtonProps) => {\n // eslint-disable-next-line deprecation/deprecation\n const { secondaryText = this.props.description } = props;\n\n // ms-Button-description is only shown when the button type is compound.\n // In other cases it will not be displayed.\n return secondaryText ? (\n <span key={this._descriptionId} className={this._classNames.description} id={this._descriptionId}>\n {secondaryText}\n </span>\n ) : null;\n };\n\n private _onRenderAriaDescription = () => {\n const { ariaDescription } = this.props;\n\n // If ariaDescription is given, descriptionId will be assigned to ariaDescriptionSpan,\n // otherwise it will be assigned to descriptionSpan.\n return ariaDescription ? (\n <span className={this._classNames.screenReaderText} id={this._ariaDescriptionId}>\n {ariaDescription}\n </span>\n ) : null;\n };\n\n private _onRenderMenuIcon = (props: IButtonProps): JSX.Element | null => {\n const { menuIconProps } = this.props;\n\n return <FontIcon iconName=\"ChevronDown\" {...menuIconProps} className={this._classNames.menuIcon} />;\n };\n\n private _getMenuProps(menuProps: IContextualMenuProps): IContextualMenuProps {\n const { persistMenu } = this.props;\n const { menuHidden } = this.state;\n\n // the accessible menu label (accessible name) has a relationship to the button.\n // If the menu props do not specify an explicit value for aria-label or aria-labelledBy,\n // AND the button has text, we'll set the menu aria-labelledBy to the text element id.\n if (!menuProps.ariaLabel && !menuProps.labelElementId && this._hasText()) {\n menuProps = { ...menuProps, labelElementId: this._labelId };\n }\n\n return {\n id: this._labelId + '-menu',\n directionalHint: DirectionalHint.bottomLeftEdge,\n ...menuProps,\n shouldFocusOnContainer: this._menuShouldFocusOnContainer,\n shouldFocusOnMount: this._menuShouldFocusOnMount,\n hidden: persistMenu ? menuHidden : undefined,\n className: css('ms-BaseButton-menuhost', menuProps.className),\n target: this._isSplitButton ? this._splitButtonContainer.current : this._buttonElement.current,\n onDismiss: this._onDismissMenu,\n };\n }\n\n private _onRenderMenu = (menuProps: IContextualMenuProps): JSX.Element => {\n const MenuType = this.props.menuAs ? composeComponentAs(this.props.menuAs, ContextualMenu) : ContextualMenu;\n\n return <MenuType {...menuProps} />;\n };\n\n private _onDismissMenu: IContextualMenuProps['onDismiss'] = ev => {\n const { menuProps } = this.props;\n\n if (menuProps && menuProps.onDismiss) {\n menuProps.onDismiss(ev);\n }\n if (!ev || !ev.defaultPrevented) {\n this._dismissMenu();\n }\n };\n\n private _dismissMenu = (): void => {\n this._menuShouldFocusOnMount = undefined;\n this._menuShouldFocusOnContainer = undefined;\n this.setState({ menuHidden: true });\n };\n\n private _openMenu = (shouldFocusOnContainer?: boolean, shouldFocusOnMount: boolean = true): void => {\n if (this.props.menuProps) {\n this._menuShouldFocusOnContainer = shouldFocusOnContainer;\n this._menuShouldFocusOnMount = shouldFocusOnMount;\n this._renderedVisibleMenu = true;\n this.setState({ menuHidden: false });\n }\n };\n\n private _onToggleMenu = (shouldFocusOnContainer: boolean): void => {\n let shouldFocusOnMount = true;\n if (this.props.menuProps && this.props.menuProps.shouldFocusOnMount === false) {\n shouldFocusOnMount = false;\n }\n\n this.state.menuHidden ? this._openMenu(shouldFocusOnContainer, shouldFocusOnMount) : this._dismissMenu();\n };\n\n private _onRenderSplitButtonContent(tag: any, buttonProps: IButtonProps): JSX.Element {\n const {\n styles = {},\n disabled,\n allowDisabledFocus,\n checked,\n getSplitButtonClassNames,\n primaryDisabled,\n menuProps,\n toggle,\n role,\n primaryActionButtonProps,\n } = this.props;\n let { keytipProps } = this.props;\n const { menuHidden } = this.state;\n\n const classNames = getSplitButtonClassNames\n ? getSplitButtonClassNames(!!disabled, !menuHidden, !!checked, !!allowDisabledFocus)\n : styles && getBaseSplitButtonClassNames(styles!, !!disabled, !menuHidden, !!checked, !!primaryDisabled);\n\n assign(buttonProps, {\n onClick: undefined,\n onPointerDown: undefined,\n onPointerUp: undefined,\n tabIndex: -1,\n 'data-is-focusable': false,\n });\n\n if (keytipProps && menuProps) {\n keytipProps = this._getMemoizedMenuButtonKeytipProps(keytipProps);\n }\n\n const containerProps = getNativeProps<React.HTMLAttributes<HTMLSpanElement>>(buttonProps, [], ['disabled']);\n\n // Add additional props to apply on primary action button\n if (primaryActionButtonProps) {\n assign(buttonProps, primaryActionButtonProps);\n }\n\n const SplitButton = (keytipAttributes?: any): JSX.Element => (\n <div\n {...containerProps}\n data-ktp-target={keytipAttributes ? keytipAttributes['data-ktp-target'] : undefined}\n role={role ? role : 'button'}\n aria-disabled={disabled}\n aria-haspopup={true}\n aria-expanded={!menuHidden}\n aria-pressed={toggle ? !!checked : undefined} // should only be present for toggle buttons\n aria-describedby={mergeAriaAttributeValues(\n buttonProps['aria-describedby'],\n keytipAttributes ? keytipAttributes['aria-describedby'] : undefined,\n )}\n className={classNames && classNames.splitButtonContainer}\n onKeyDown={this._onSplitButtonContainerKeyDown}\n onTouchStart={this._onTouchStart}\n ref={this._splitButtonContainer}\n data-is-focusable={true}\n onClick={!disabled && !primaryDisabled ? this._onSplitButtonPrimaryClick : undefined}\n tabIndex={(!disabled && !primaryDisabled) || allowDisabledFocus ? 0 : undefined}\n aria-roledescription={buttonProps['aria-roledescription']}\n onFocusCapture={this._onSplitContainerFocusCapture}\n >\n <span style={{ display: 'flex' }}>\n {this._onRenderContent(tag, buttonProps)}\n {this._onRenderSplitButtonMenuButton(classNames, keytipAttributes)}\n {this._onRenderSplitButtonDivider(classNames)}\n </span>\n </div>\n );\n\n return keytipProps ? (\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => SplitButton(keytipAttributes)}\n </KeytipData>\n ) : (\n SplitButton()\n );\n }\n\n private _onSplitContainerFocusCapture = (ev: React.FocusEvent<HTMLDivElement>) => {\n const container = this._splitButtonContainer.current;\n\n // If the target is coming from the portal we do not need to set focus on the container.\n if (!container || (ev.target && portalContainsElement(ev.target, container))) {\n return;\n }\n\n // We should never be able to focus the individual buttons in a split button. Focus\n // should always remain on the container.\n container.focus();\n };\n\n private _onSplitButtonPrimaryClick = (ev: React.MouseEvent<HTMLDivElement>) => {\n if (!this.state.menuHidden) {\n this._dismissMenu();\n }\n\n if (!this._processingTouch && this.props.onClick) {\n this.props.onClick(ev);\n } else if (this._processingTouch) {\n this._onMenuClick(ev);\n }\n };\n\n private _onRenderSplitButtonDivider(classNames: ISplitButtonClassNames | undefined): JSX.Element | null {\n if (classNames && classNames.divider) {\n const onClick = (ev: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n ev.stopPropagation();\n };\n return <span className={classNames.divider} aria-hidden={true} onClick={onClick} />;\n }\n return null;\n }\n\n private _onRenderSplitButtonMenuButton(\n classNames: ISplitButtonClassNames | undefined,\n keytipAttributes: any,\n ): JSX.Element {\n const {\n allowDisabledFocus,\n checked,\n disabled,\n splitButtonMenuProps,\n splitButtonAriaLabel,\n primaryDisabled,\n } = this.props;\n const { menuHidden } = this.state;\n let menuIconProps = this.props.menuIconProps;\n\n if (menuIconProps === undefined) {\n menuIconProps = {\n iconName: 'ChevronDown',\n };\n }\n\n const splitButtonProps = {\n ...splitButtonMenuProps,\n styles: classNames,\n checked: checked,\n disabled: disabled,\n allowDisabledFocus: allowDisabledFocus,\n onClick: this._onMenuClick,\n menuProps: undefined,\n iconProps: { ...menuIconProps, className: this._classNames.menuIcon },\n ariaLabel: splitButtonAriaLabel,\n 'aria-haspopup': true,\n 'aria-expanded': !menuHidden,\n 'data-is-focusable': false,\n };\n\n // Add data-ktp-execute-target to the split button if the keytip is defined\n return (\n <BaseButton\n {...splitButtonProps}\n data-ktp-execute-target={keytipAttributes ? keytipAttributes['data-ktp-execute-target'] : keytipAttributes}\n onMouseDown={this._onMouseDown}\n tabIndex={primaryDisabled && !allowDisabledFocus ? 0 : -1}\n />\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement>) => {\n // explicity cancelling event so click won't fire after this\n if (this.props.disabled && (ev.which === KeyCodes.enter || ev.which === KeyCodes.space)) {\n ev.preventDefault();\n ev.stopPropagation();\n } else if (!this.props.disabled) {\n if (this.props.menuProps) {\n this._onMenuKeyDown(ev);\n } else if (this.props.onKeyDown !== undefined) {\n this.props.onKeyDown(ev); // not cancelling event because it's not disabled\n }\n }\n };\n\n private _onKeyUp = (\n ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onKeyUp !== undefined) {\n this.props.onKeyUp(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onKeyPress = (\n ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onKeyPress !== undefined) {\n this.props.onKeyPress(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onMouseUp = (\n ev: React.MouseEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onMouseUp !== undefined) {\n this.props.onMouseUp(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onMouseDown = (\n ev: React.MouseEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled && this.props.onMouseDown !== undefined) {\n this.props.onMouseDown(ev); // not cancelling event because it's not disabled\n }\n };\n\n private _onClick = (\n ev: React.MouseEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>,\n ) => {\n if (!this.props.disabled) {\n if (this.props.menuProps) {\n this._onMenuClick(ev);\n } else if (this.props.onClick !== undefined) {\n this.props.onClick(ev); // not cancelling event because it's not disabled\n }\n }\n };\n\n private _onSplitButtonContainerKeyDown = (ev: React.KeyboardEvent<HTMLDivElement>) => {\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n if (this._buttonElement.current) {\n this._buttonElement.current.click();\n ev.preventDefault();\n ev.stopPropagation();\n }\n } else {\n this._onMenuKeyDown(ev);\n }\n };\n\n private _onMenuKeyDown = (ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement>) => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n }\n\n const isUp = ev.which === KeyCodes.up;\n const isDown = ev.which === KeyCodes.down;\n\n if (!ev.defaultPrevented && this._isValidMenuOpenKey(ev)) {\n const { onMenuClick } = this.props;\n if (onMenuClick) {\n onMenuClick(ev, this.props);\n }\n\n this._onToggleMenu(false);\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n if (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) {\n // We manually set the focus visibility to true if opening via Enter or Space to account for the scenario where\n // a user clicks on the button, closes the menu and then opens it via keyboard. In this scenario our default logic\n // for setting focus visibility is not triggered since there is no keyboard navigation present beforehand.\n setFocusVisibility(true, ev.target as Element);\n }\n\n if (!(ev.altKey || ev.metaKey) && (isUp || isDown)) {\n // Suppose a menu, with shouldFocusOnMount: false, is open, and user wants to keyboard to the menu items\n // We need to re-render the menu with shouldFocusOnMount as true.\n\n if (!this.state.menuHidden && this.props.menuProps) {\n const currentShouldFocusOnMount =\n this._menuShouldFocusOnMount !== undefined\n ? this._menuShouldFocusOnMount\n : this.props.menuProps.shouldFocusOnMount;\n if (!currentShouldFocusOnMount) {\n ev.preventDefault();\n ev.stopPropagation();\n this._menuShouldFocusOnMount = true;\n this.forceUpdate();\n }\n }\n }\n };\n\n private _onTouchStart: () => void = () => {\n if (\n this._isSplitButton &&\n this._splitButtonContainer.current &&\n !('onpointerdown' in this._splitButtonContainer.current)\n ) {\n this._handleTouchAndPointerEvent();\n }\n };\n\n private _onPointerDown(\n ev: PointerEvent &\n React.PointerEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement | BaseButton | HTMLSpanElement>,\n ) {\n const { onPointerDown } = this.props;\n if (onPointerDown) {\n onPointerDown(ev);\n }\n\n if (ev.pointerType === 'touch') {\n this._handleTouchAndPointerEvent();\n\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n }\n\n private _handleTouchAndPointerEvent() {\n // If we already have an existing timeout from a previous touch and pointer event\n // cancel that timeout so we can set a new one.\n if (this._lastTouchTimeoutId !== undefined) {\n this._async.clearTimeout(this._lastTouchTimeoutId);\n this._lastTouchTimeoutId = undefined;\n }\n this._processingTouch = true;\n\n this._lastTouchTimeoutId = this._async.setTimeout(() => {\n this._processingTouch = false;\n this._lastTouchTimeoutId = undefined;\n\n // Touch and pointer events don't focus the button naturally,\n // so adding an imperative focus call to guarantee this behavior.\n this.focus();\n }, TouchIdleDelay);\n }\n\n /**\n * Returns if the user hits a valid keyboard key to open the menu\n * @param ev - the keyboard event\n * @returns True if user clicks on custom trigger key if enabled or alt + down arrow if not. False otherwise.\n */\n private _isValidMenuOpenKey(\n ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement>,\n ): boolean {\n if (this.props.menuTriggerKeyCode) {\n return ev.which === this.props.menuTriggerKeyCode;\n } else if (this.props.menuProps) {\n return ev.which === KeyCodes.down && (ev.altKey || ev.metaKey);\n }\n\n // Note: When enter is pressed, we will let the event continue to propagate\n // to trigger the onClick event on the button\n return false;\n }\n\n private _onMenuClick = (\n ev: React.MouseEvent<HTMLDivElement | HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement>,\n ) => {\n const { onMenuClick } = this.props;\n if (onMenuClick) {\n onMenuClick(ev, this.props);\n }\n\n if (!ev.defaultPrevented) {\n // When Edge + Narrator are used together (regardless of if the button is in a form or not), pressing\n // \"Enter\" fires this method and not _onMenuKeyDown. Checking ev.nativeEvent.detail differentiates\n // between a real click event and a keypress event (detail should be the number of mouse clicks).\n // ...Plot twist! For a real click event in IE 11, detail is always 0 (Edge sets it properly to 1).\n // So we also check the pointerType property, which both Edge and IE set to \"mouse\" for real clicks\n // and \"\" for pressing \"Enter\" with Narrator on.\n const shouldFocusOnContainer =\n ev.nativeEvent.detail !== 0 || (ev.nativeEvent as PointerEvent).pointerType === 'mouse';\n this._onToggleMenu(shouldFocusOnContainer);\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n}\n","import * as React from 'react';\nimport { PivotBase } from './Pivot.base';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport { PivotItem } from './PivotItem';\nimport { IFocusZoneProps } from '../../FocusZone';\n\n/**\n * {@docCategory Pivot}\n */\nexport interface IPivot {\n /**\n * Sets focus to the first pivot tab.\n */\n focus(): void;\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport interface IPivotProps extends React.ClassAttributes<PivotBase>, React.HTMLAttributes<HTMLDivElement> {\n /**\n * Optional callback to access the IPivot interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IPivot>;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IPivotStyleProps, IPivotStyles>;\n\n /**\n * Theme provided by High-Order Component.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Pivot\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * Default selected key for the pivot. Only provide this if the pivot is an uncontrolled component;\n * otherwise, use the `selectedKey` property.\n *\n * This property is also mutually exclusive with `defaultSelectedIndex`.\n */\n defaultSelectedKey?: string;\n\n /**\n * Default selected index for the pivot. Only provide this if the pivot is an uncontrolled component;\n * otherwise, use the `selectedKey` property.\n *\n * This property is also mutually exclusive with `defaultSelectedKey`.\n *\n * @deprecated Use `defaultSelectedKey`\n */\n defaultSelectedIndex?: number;\n\n /**\n * Index of the pivot item initially selected. Mutually exclusive with `initialSelectedKey`.\n * Only provide this if the pivot is an uncontrolled component; otherwise, use `selectedKey`.\n *\n * @deprecated Use `defaultSelectedKey`\n */\n initialSelectedIndex?: number;\n\n /**\n * Key of the pivot item initially selected. Mutually exclusive with `initialSelectedIndex`.\n * Only provide this if the pivot is an uncontrolled component; otherwise, use `selectedKey`.\n *\n * @deprecated Use `defaultSelectedKey`\n */\n initialSelectedKey?: string;\n\n /**\n * Key of the selected pivot item. Updating this will override the Pivot's selected item state.\n * Only provide this if the pivot is a controlled component where you are maintaining the\n * current state; otherwise, use `defaultSelectedKey`.\n */\n selectedKey?: string | null;\n\n /**\n * Callback for when the selected pivot item is changed.\n */\n onLinkClick?: (item?: PivotItem, ev?: React.MouseEvent<HTMLElement>) => void;\n\n /**\n * PivotLinkSize to use (normal, large)\n */\n linkSize?: PivotLinkSize;\n\n /**\n * PivotLinkFormat to use (links, tabs)\n */\n linkFormat?: PivotLinkFormat;\n\n /**\n * Whether to skip rendering the tabpanel with the content of the selected tab.\n * Use this prop if you plan to separately render the tab content\n * and don't want to leave an empty tabpanel in the page that may confuse Screen Readers.\n */\n headersOnly?: boolean;\n\n /**\n * Callback to customize how IDs are generated for each tab header.\n * Useful if you're rendering content outside and need to connect aria-labelledby.\n */\n getTabId?: (itemKey: string, index: number) => string;\n\n /**\n * Props passed to the `FocusZone` component used as the root of `Pivot`.\n */\n focusZoneProps?: IFocusZoneProps;\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport type IPivotStyleProps = Required<Pick<IPivotProps, 'theme'>> &\n Pick<IPivotProps, 'className'> & {\n /** Indicates whether Pivot has large format. */\n rootIsLarge?: boolean;\n /** Indicates whether Pivot has tabbed format. */\n rootIsTabs?: boolean;\n /**\n * Indicates whether Pivot link is selected.\n * @deprecated Is not populated with valid value. Specify `linkIsSelected` styling instead.\n */\n linkIsSelected?: boolean;\n };\n\n/**\n * {@docCategory Pivot}\n */\nexport interface IPivotStyles {\n /**\n * Style for the root element.\n */\n root: IStyle;\n link: IStyle;\n linkContent: IStyle;\n linkIsSelected: IStyle;\n text: IStyle;\n count: IStyle;\n icon: IStyle;\n itemContainer?: IStyle;\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport enum PivotLinkFormat {\n /**\n * Display Pivot Links as links\n */\n links = 0,\n\n /**\n * Display Pivot Links as Tabs\n */\n tabs = 1,\n}\n\n/**\n * {@docCategory Pivot}\n */\nexport enum PivotLinkSize {\n /**\n * Display Link using normal font size\n */\n normal = 0,\n\n /**\n * Display links using large font size\n */\n large = 1,\n}\n","import { IButtonStyles } from './Button.types';\nimport { memoizeFunction } from '../../Utilities';\nimport { HighContrastSelector, ITheme, IRawStyle, getFocusStyle, hiddenContentStyle } from '../../Styling';\n\nconst noOutline: IRawStyle = {\n outline: 0,\n};\n\nconst iconStyle = (fontSize?: string | number): IRawStyle => {\n return {\n fontSize: fontSize,\n margin: '0 4px',\n height: '16px',\n lineHeight: '16px',\n textAlign: 'center',\n flexShrink: 0,\n };\n};\n\n/**\n * Gets the base button styles. Note: because it is a base class to be used with the `mergeRules`\n * helper, it should have values for all class names in the interface. This let `mergeRules` optimize\n * mixing class names together.\n */\nexport const getStyles = memoizeFunction(\n (theme: ITheme): IButtonStyles => {\n const { semanticColors, effects, fonts } = theme;\n\n const border = semanticColors.buttonBorder;\n const disabledBackground = semanticColors.disabledBackground;\n const disabledText = semanticColors.disabledText;\n const buttonHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n outlineColor: 'ButtonText',\n };\n\n return {\n root: [\n getFocusStyle(theme, { inset: 1, highContrastStyle: buttonHighContrastFocus, borderColor: 'transparent' }),\n theme.fonts.medium,\n {\n boxSizing: 'border-box',\n border: '1px solid ' + border,\n userSelect: 'none',\n display: 'inline-block',\n textDecoration: 'none',\n textAlign: 'center',\n cursor: 'pointer',\n padding: '0 16px',\n borderRadius: effects.roundedCorner2,\n\n selectors: {\n // IE11 workaround for preventing shift of child elements of a button when active.\n ':active > *': {\n position: 'relative',\n left: 0,\n top: 0,\n },\n },\n },\n ],\n\n rootDisabled: [\n getFocusStyle(theme, { inset: 1, highContrastStyle: buttonHighContrastFocus, borderColor: 'transparent' }),\n {\n backgroundColor: disabledBackground,\n borderColor: disabledBackground,\n color: disabledText,\n cursor: 'default',\n selectors: {\n ':hover': noOutline,\n ':focus': noOutline,\n },\n },\n ],\n\n iconDisabled: {\n color: disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n\n menuIconDisabled: {\n color: disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n\n flexContainer: {\n display: 'flex',\n height: '100%',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n },\n description: {\n display: 'block',\n },\n\n textContainer: {\n flexGrow: 1,\n display: 'block',\n },\n\n icon: iconStyle(fonts.mediumPlus.fontSize),\n\n menuIcon: iconStyle(fonts.small.fontSize),\n\n label: {\n margin: '0 4px',\n lineHeight: '100%',\n display: 'block',\n },\n\n screenReaderText: hiddenContentStyle,\n };\n },\n);\n","import { IButtonStyles } from '../Button.types';\nimport { ITheme, concatStyleSets, HighContrastSelector } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\n\nconst DEFAULT_BUTTON_HEIGHT = '40px';\nconst DEFAULT_PADDING = '0 4px';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const actionButtonStyles: IButtonStyles = {\n root: {\n padding: DEFAULT_PADDING,\n height: DEFAULT_BUTTON_HEIGHT,\n color: theme.palette.neutralPrimary,\n backgroundColor: 'transparent',\n border: '1px solid transparent',\n },\n\n rootHovered: {\n color: theme.palette.themePrimary,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n\n iconHovered: {\n color: theme.palette.themePrimary,\n },\n\n rootPressed: {\n color: theme.palette.black,\n },\n\n rootExpanded: {\n color: theme.palette.themePrimary,\n },\n\n iconPressed: {\n color: theme.palette.themeDarker,\n },\n\n rootDisabled: {\n color: theme.palette.neutralTertiary,\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n },\n\n rootChecked: {\n color: theme.palette.black,\n },\n\n iconChecked: {\n color: theme.palette.themeDarker,\n },\n\n flexContainer: {\n justifyContent: 'flex-start',\n },\n\n icon: {\n color: theme.palette.themeDarkAlt,\n },\n\n iconDisabled: {\n color: 'inherit',\n },\n\n menuIcon: {\n color: theme.palette.neutralSecondary,\n },\n\n textContainer: {\n flexGrow: 0,\n },\n };\n\n return concatStyleSets(baseButtonStyles, actionButtonStyles, customStyles)!;\n },\n);\n","import { ActionButton } from '../ActionButton/ActionButton';\n\n/**\n * {@docCategory Button}\n */\nexport const CommandButton = ActionButton;\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './ActionButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('ActionButton', ['theme', 'styles'], true)\nexport class ActionButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName=\"ms-Button--action ms-Button--command\"\n styles={getStyles(theme!, styles)}\n onRenderDescription={nullRender}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { getNativeProps, divProperties, initializeComponentRef, warnDeprecations } from '../../Utilities';\nimport { IPivotItemProps } from './PivotItem.types';\n\nconst COMPONENT_NAME = 'PivotItem';\n\nexport class PivotItem extends React.Component<IPivotItemProps, {}> {\n constructor(props: IPivotItemProps) {\n super(props);\n\n initializeComponentRef(this);\n warnDeprecations(COMPONENT_NAME, props, {\n linkText: 'headerText',\n });\n }\n\n public render(): JSX.Element {\n return <div {...getNativeProps(this.props, divProperties)}>{this.props.children}</div>;\n }\n}\n","import * as React from 'react';\nimport {\n warnDeprecations,\n KeyCodes,\n getId,\n getNativeProps,\n divProperties,\n classNamesFunction,\n warn,\n initializeComponentRef,\n css,\n} from '../../Utilities';\nimport { CommandButton } from '../../Button';\nimport { IPivotProps, IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport { IPivotItemProps } from './PivotItem.types';\nimport { FocusZone, FocusZoneDirection, IFocusZoneProps } from '../../FocusZone';\nimport { PivotItem } from './PivotItem';\nimport { PivotLinkFormat } from './Pivot.types';\nimport { PivotLinkSize } from './Pivot.types';\nimport { Icon } from '../../Icon';\n\nconst getClassNames = classNamesFunction<IPivotStyleProps, IPivotStyles>();\nconst PivotName = 'Pivot';\n\nexport interface IPivotState {\n selectedKey: string | undefined;\n}\n\ntype PivotLinkCollection = {\n links: IPivotItemProps[];\n keyToIndexMapping: { [key: string]: number };\n keyToTabIdMapping: { [key: string]: string };\n};\n\n/**\n * Usage:\n *\n * <Pivot>\n * <PivotItem headerText=\"Foo\">\n * <Label>Pivot #1</Label>\n * </PivotItem>\n * <PivotItem headerText=\"Bar\">\n * <Label>Pivot #2</Label>\n * </PivotItem>\n * <PivotItem headerText=\"Bas\">\n * <Label>Pivot #3</Label>\n * </PivotItem>\n * </Pivot>\n */\nexport class PivotBase extends React.Component<IPivotProps, IPivotState> {\n private _pivotId: string;\n private _focusZone = React.createRef<FocusZone>();\n private _classNames: { [key in keyof IPivotStyles]: string };\n\n constructor(props: IPivotProps) {\n super(props);\n\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations(PivotName, props, {\n initialSelectedKey: 'defaultSelectedKey',\n initialSelectedIndex: 'defaultSelectedIndex',\n });\n }\n\n this._pivotId = getId(PivotName);\n const links: IPivotItemProps[] = this._getPivotLinks(props).links;\n\n // eslint-disable-next-line deprecation/deprecation\n const { defaultSelectedKey = props.initialSelectedKey, defaultSelectedIndex = props.initialSelectedIndex } = props;\n\n let selectedKey: string | undefined;\n\n if (defaultSelectedKey) {\n selectedKey = defaultSelectedKey;\n } else if (typeof defaultSelectedIndex === 'number') {\n selectedKey = links[defaultSelectedIndex].itemKey!;\n } else if (links.length) {\n selectedKey = links[0].itemKey!;\n }\n\n this.state = {\n selectedKey,\n };\n }\n\n /**\n * Sets focus to the first pivot tab.\n */\n public focus(): void {\n if (this._focusZone.current) {\n this._focusZone.current.focus();\n }\n }\n\n public render(): JSX.Element {\n const { focusZoneProps } = this.props;\n const linkCollection = this._getPivotLinks(this.props);\n const selectedKey = this._getSelectedKey(linkCollection);\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n this._classNames = this._getClassNames(this.props);\n\n return (\n <div role=\"toolbar\" {...divProps}>\n {this._renderPivotLinks(linkCollection, selectedKey, focusZoneProps)}\n {selectedKey &&\n linkCollection.links.map(\n (link) =>\n (link.alwaysRender === true || selectedKey === link.itemKey) &&\n this._renderPivotItem(linkCollection, link.itemKey, selectedKey === link.itemKey),\n )}\n </div>\n );\n }\n\n private _getSelectedKey(linkCollection: PivotLinkCollection) {\n const { selectedKey: propsSelectedKey } = this.props;\n\n if (this._isKeyValid(linkCollection, propsSelectedKey) || propsSelectedKey === null) {\n return propsSelectedKey;\n }\n\n const { selectedKey: stateSelectedKey } = this.state;\n if (this._isKeyValid(linkCollection, stateSelectedKey)) {\n return stateSelectedKey;\n }\n\n if (linkCollection.links.length) {\n return linkCollection.links[0].itemKey;\n }\n\n return undefined;\n }\n\n /**\n * Renders the set of links to route between pivots\n */\n private _renderPivotLinks(\n linkCollection: PivotLinkCollection,\n selectedKey: string | null | undefined,\n focusZoneProps: IFocusZoneProps | undefined,\n ): JSX.Element {\n const items = linkCollection.links.map((l) => this._renderPivotLink(linkCollection, l, selectedKey));\n\n return (\n <FocusZone\n role=\"tablist\"\n componentRef={this._focusZone}\n direction={FocusZoneDirection.horizontal}\n {...focusZoneProps}\n className={css(this._classNames.root, focusZoneProps?.className)}\n >\n {items}\n </FocusZone>\n );\n }\n\n private _renderPivotLink = (\n linkCollection: PivotLinkCollection,\n link: IPivotItemProps,\n selectedKey: string | null | undefined,\n ): JSX.Element => {\n const { itemKey, headerButtonProps } = link;\n const tabId = linkCollection.keyToTabIdMapping[itemKey!];\n const { onRenderItemLink } = link;\n let linkContent: JSX.Element | null;\n const isSelected: boolean = selectedKey === itemKey;\n\n if (onRenderItemLink) {\n linkContent = onRenderItemLink(link, this._renderLinkContent);\n } else {\n linkContent = this._renderLinkContent(link);\n }\n\n let contentString = link.headerText || '';\n contentString += link.itemCount ? ' (' + link.itemCount + ')' : '';\n // Adding space supplementary for icon\n contentString += link.itemIcon ? ' xx' : '';\n\n return (\n <CommandButton\n {...headerButtonProps}\n id={tabId}\n key={itemKey}\n className={isSelected ? this._classNames.linkIsSelected : this._classNames.link}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={this._onLinkClick.bind(this, itemKey)}\n // eslint-disable-next-line react/jsx-no-bind\n onKeyDown={this._onKeyDown.bind(this, itemKey)}\n aria-label={link.ariaLabel}\n role=\"tab\"\n aria-selected={isSelected}\n name={link.headerText}\n keytipProps={link.keytipProps}\n data-content={contentString}\n >\n {linkContent}\n </CommandButton>\n );\n };\n\n private _renderLinkContent = (link: IPivotItemProps): JSX.Element => {\n const { itemCount, itemIcon, headerText } = link;\n const classNames = this._classNames;\n\n return (\n <span className={classNames.linkContent}>\n {itemIcon !== undefined && (\n <span className={classNames.icon}>\n <Icon iconName={itemIcon} />\n </span>\n )}\n {headerText !== undefined && <span className={classNames.text}> {link.headerText}</span>}\n {itemCount !== undefined && <span className={classNames.count}> ({itemCount})</span>}\n </span>\n );\n };\n\n /**\n * Renders a Pivot Item\n */\n private _renderPivotItem(\n linkCollection: PivotLinkCollection,\n itemKey: string | undefined,\n isActive: boolean,\n ): JSX.Element | null {\n if (this.props.headersOnly || !itemKey) {\n return null;\n }\n\n const index = linkCollection.keyToIndexMapping[itemKey];\n const selectedTabId = linkCollection.keyToTabIdMapping[itemKey];\n\n return (\n <div\n role=\"tabpanel\"\n hidden={!isActive}\n key={itemKey}\n aria-hidden={!isActive}\n aria-labelledby={selectedTabId}\n className={this._classNames.itemContainer}\n >\n {React.Children.toArray(this.props.children)[index]}\n </div>\n );\n }\n\n /**\n * Gets the set of PivotLinks as array of IPivotItemProps\n * The set of Links is determined by child components of type PivotItem\n */\n private _getPivotLinks(props: IPivotProps): PivotLinkCollection {\n const result: PivotLinkCollection = {\n links: [],\n keyToIndexMapping: {},\n keyToTabIdMapping: {},\n };\n\n React.Children.map(React.Children.toArray(props.children), (child: React.ReactChild, index: number) => {\n if (_isPivotItem(child)) {\n const pivotItem = child;\n const { linkText, ...pivotItemProps } = pivotItem.props;\n const itemKey = pivotItem.props.itemKey || index.toString();\n\n result.links.push({\n // Use linkText (deprecated) if headerText is not provided\n headerText: linkText,\n ...pivotItemProps,\n itemKey: itemKey,\n });\n result.keyToIndexMapping[itemKey] = index;\n result.keyToTabIdMapping[itemKey] = this._getTabId(itemKey, index);\n } else {\n warn('The children of a Pivot component must be of type PivotItem to be rendered.');\n }\n });\n\n return result;\n }\n\n /**\n * Generates the Id for the tab button.\n */\n private _getTabId(itemKey: string, index: number): string {\n if (this.props.getTabId) {\n return this.props.getTabId(itemKey, index);\n }\n\n return this._pivotId + `-Tab${index}`;\n }\n\n /**\n * whether the key exists in the pivot items.\n */\n private _isKeyValid(linkCollection: PivotLinkCollection, itemKey: string | null | undefined): boolean {\n return itemKey !== undefined && itemKey !== null && linkCollection.keyToIndexMapping[itemKey] !== undefined;\n }\n\n /**\n * Handles the onClick event on PivotLinks\n */\n private _onLinkClick(itemKey: string, ev: React.MouseEvent<HTMLElement>): void {\n ev.preventDefault();\n this._updateSelectedItem(itemKey, ev);\n }\n\n /**\n * Handle the onKeyDown event on the PivotLinks\n */\n private _onKeyDown(itemKey: string, ev: React.KeyboardEvent<HTMLElement>): void {\n if (ev.which === KeyCodes.enter) {\n ev.preventDefault();\n this._updateSelectedItem(itemKey);\n }\n }\n\n /**\n * Updates the state with the new selected index\n */\n private _updateSelectedItem(itemKey: string, ev?: React.MouseEvent<HTMLElement>): void {\n this.setState({\n selectedKey: itemKey,\n });\n\n const linkCollection = this._getPivotLinks(this.props);\n\n if (this.props.onLinkClick && linkCollection.keyToIndexMapping[itemKey] >= 0) {\n const index = linkCollection.keyToIndexMapping[itemKey];\n\n // React.Element<any> cannot directly convert to PivotItem.\n const item = React.Children.toArray(this.props.children)[index];\n\n if (_isPivotItem(item)) {\n this.props.onLinkClick(item, ev);\n }\n }\n }\n\n private _getClassNames(props: IPivotProps): { [key in keyof IPivotStyles]: string } {\n const { theme } = props;\n const rootIsLarge: boolean = props.linkSize === PivotLinkSize.large;\n const rootIsTabs: boolean = props.linkFormat === PivotLinkFormat.tabs;\n\n return getClassNames(props.styles!, {\n theme: theme!,\n rootIsLarge,\n rootIsTabs,\n });\n }\n}\n\nfunction _isPivotItem(item: React.ReactNode): item is PivotItem {\n // In theory, we should be able to just check item.type === PivotItem.\n // However, under certain unclear circumstances (see https://github.com/microsoft/fluentui/issues/10785),\n // the object identity is different despite the function implementation being the same.\n return (\n !!item &&\n typeof item === 'object' &&\n !!(item as React.ReactElement).type &&\n // Casting as an any to avoid [ object Object ] errors.\n ((item as React.ReactElement).type as any).name === (PivotItem as any).name\n );\n}\n","import { IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport {\n AnimationVariables,\n getGlobalClassNames,\n HighContrastSelector,\n IStyle,\n normalize,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\n\nconst globalClassNames = {\n count: 'ms-Pivot-count',\n icon: 'ms-Pivot-icon',\n linkIsSelected: 'is-selected',\n link: 'ms-Pivot-link',\n linkContent: 'ms-Pivot-linkContent',\n root: 'ms-Pivot',\n rootIsLarge: 'ms-Pivot--large',\n rootIsTabs: 'ms-Pivot--tabs',\n text: 'ms-Pivot-text',\n};\n\nconst linkStyles = (props: IPivotStyleProps): IStyle[] => {\n const { rootIsLarge, rootIsTabs } = props;\n const { semanticColors, fonts } = props.theme;\n return [\n fonts.medium,\n {\n color: semanticColors.actionLink,\n display: 'inline-block',\n lineHeight: 44,\n height: 44,\n marginRight: 8,\n padding: '0 8px',\n textAlign: 'center',\n position: 'relative',\n backgroundColor: 'transparent',\n border: 0,\n borderRadius: 0,\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n bottom: 0,\n content: '\"\"',\n height: 2,\n left: 8,\n position: 'absolute',\n right: 8,\n transition: `left ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2},\n right ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2}`,\n },\n ':after': {\n color: 'transparent',\n content: 'attr(data-content)',\n display: 'block',\n fontWeight: FontWeights.bold,\n height: 1,\n overflow: 'hidden',\n visibility: 'hidden',\n },\n ':hover': {\n backgroundColor: semanticColors.buttonBackgroundHovered,\n color: semanticColors.buttonTextHovered,\n cursor: 'pointer',\n },\n ':active': {\n backgroundColor: semanticColors.buttonBackgroundPressed,\n color: semanticColors.buttonTextHovered,\n },\n ':focus': {\n outline: 'none',\n },\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${semanticColors.focusBorder}`,\n },\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n content: 'attr(data-content)',\n position: 'relative',\n border: 0,\n },\n },\n },\n rootIsLarge && {\n fontSize: fonts.large.fontSize,\n },\n rootIsTabs && [\n {\n marginRight: 0,\n height: 44,\n lineHeight: 44,\n backgroundColor: semanticColors.buttonBackground,\n padding: '0 10px',\n verticalAlign: 'top',\n selectors: {\n ':focus': {\n outlineOffset: '-1px',\n },\n [`.${IsFocusVisibleClassName} &:focus::before`]: {\n height: 'auto',\n background: 'transparent',\n transition: 'none',\n },\n },\n },\n ],\n ];\n};\n\nexport const getStyles = (props: IPivotStyleProps): IPivotStyles => {\n const { className, rootIsLarge, rootIsTabs, theme } = props;\n const { semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n normalize,\n {\n position: 'relative',\n color: semanticColors.link,\n whiteSpace: 'nowrap',\n },\n rootIsLarge && classNames.rootIsLarge,\n rootIsTabs && classNames.rootIsTabs,\n className,\n ],\n itemContainer: {\n selectors: {\n '&[hidden]': {\n display: 'none',\n },\n },\n },\n link: [\n classNames.link,\n ...linkStyles(props),\n rootIsTabs && {\n selectors: {\n '&:hover, &:focus': {\n color: semanticColors.buttonTextCheckedHovered,\n },\n '&:active, &:hover': {\n color: semanticColors.primaryButtonText,\n backgroundColor: semanticColors.primaryButtonBackground,\n },\n },\n },\n ],\n linkIsSelected: [\n classNames.link,\n classNames.linkIsSelected,\n ...linkStyles(props),\n {\n fontWeight: FontWeights.semibold,\n selectors: {\n ':before': {\n backgroundColor: semanticColors.inputBackgroundChecked,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ':hover::before': {\n left: 0,\n right: 0,\n },\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n rootIsTabs && {\n backgroundColor: semanticColors.primaryButtonBackground,\n color: semanticColors.primaryButtonText,\n fontWeight: FontWeights.regular,\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n transition: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n content: '\"\"',\n height: 0,\n },\n ':hover': {\n backgroundColor: semanticColors.primaryButtonBackgroundHovered,\n color: semanticColors.primaryButtonText,\n },\n '&:active': {\n backgroundColor: semanticColors.primaryButtonBackgroundPressed,\n color: semanticColors.primaryButtonText,\n },\n [HighContrastSelector]: {\n fontWeight: FontWeights.semibold,\n color: 'HighlightText',\n background: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n linkContent: [\n classNames.linkContent,\n {\n flex: '0 1 100%',\n selectors: {\n '& > * ': {\n marginLeft: 4,\n },\n '& > *:first-child': {\n marginLeft: 0,\n },\n },\n },\n ],\n text: [\n classNames.text,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n count: [\n classNames.count,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n icon: classNames.icon,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IPivotProps, IPivotStyleProps, IPivotStyles } from './Pivot.types';\nimport { PivotBase } from './Pivot.base';\nimport { getStyles } from './Pivot.styles';\n\n/**\n * The Pivot control and related tabs pattern are used for navigating frequently accessed,\n * distinct content categories. Pivots allow for navigation between two or more content\n * views and relies on text headers to articulate the different sections of content.\n */\nexport const Pivot: React.FunctionComponent<IPivotProps> = styled<IPivotProps, IPivotStyleProps, IPivotStyles>(\n PivotBase,\n getStyles,\n undefined,\n {\n scope: 'Pivot',\n },\n);\n","import * as React from 'react';\nimport { divProperties, getNativeProps } from '../../Utilities';\nimport { classNamesFunction } from '../../Utilities';\nimport { ILabelProps, ILabelStyleProps, ILabelStyles } from './Label.types';\n\nconst getClassNames = classNamesFunction<ILabelStyleProps, ILabelStyles>({\n // Label is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Label.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\nexport class LabelBase extends React.Component<ILabelProps, {}> {\n public render(): JSX.Element {\n const { as: RootType = 'label', children, className, disabled, styles, required, theme } = this.props;\n const classNames = getClassNames(styles, {\n className,\n disabled,\n required,\n theme: theme!,\n });\n return (\n <RootType {...getNativeProps(this.props, divProperties)} className={classNames.root}>\n {children}\n </RootType>\n );\n }\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { LabelBase } from './Label.base';\nimport { getStyles } from './Label.styles';\nimport { ILabelProps, ILabelStyleProps, ILabelStyles } from './Label.types';\n\nexport const Label: React.FunctionComponent<ILabelProps> = styled<ILabelProps, ILabelStyleProps, ILabelStyles>(\n LabelBase,\n getStyles,\n undefined,\n {\n scope: 'Label',\n },\n);\n","import { HighContrastSelector, FontWeights, getHighContrastNoAdjustStyle } from '../../Styling';\nimport { ILabelStyleProps, ILabelStyles } from './Label.types';\n\nexport const getStyles = (props: ILabelStyleProps): ILabelStyles => {\n const { theme, className, disabled, required } = props;\n const { semanticColors } = theme;\n\n // Tokens\n const labelFontWeight = FontWeights.semibold;\n const labelColor = semanticColors.bodyText;\n const labelDisabledColor = semanticColors.disabledBodyText;\n const labelRequiredStarColor = semanticColors.errorText;\n\n return {\n root: [\n 'ms-Label',\n theme.fonts.medium,\n {\n fontWeight: labelFontWeight,\n color: labelColor,\n boxSizing: 'border-box',\n boxShadow: 'none',\n margin: 0,\n display: 'block',\n padding: '5px 0',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n },\n disabled && {\n color: labelDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n required && {\n selectors: {\n '::after': {\n content: `' *'`,\n color: labelRequiredStarColor,\n paddingRight: 12,\n },\n },\n },\n className,\n ],\n };\n};\n","import * as React from 'react';\n\n/**\n * DelayedRender component props.\n *\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface IDelayedRenderProps extends React.Props<{}> {\n /**\n * Number of milliseconds to delay rendering children.\n */\n delay?: number;\n}\n\n/**\n * DelayedRender component state.\n *\n * @internal\n */\nexport interface IDelayedRenderState {\n /**\n * Whether the component is rendered or not.\n */\n isRendered: boolean;\n}\n\n/**\n * Utility component for delaying the render of a child component after a given delay. This component\n * requires a single child component; don't pass in many components. Wrap multiple components in a DIV\n * if necessary.\n *\n * @public\n * {@docCategory DelayedRender}\n */\nexport class DelayedRender extends React.Component<IDelayedRenderProps, IDelayedRenderState> {\n public static defaultProps = {\n delay: 0,\n };\n\n private _timeoutId: number | undefined;\n\n constructor(props: IDelayedRenderProps) {\n super(props);\n this.state = {\n isRendered: false,\n };\n }\n\n public componentDidMount(): void {\n let { delay } = this.props;\n this._timeoutId = window.setTimeout(() => {\n this.setState({\n isRendered: true,\n });\n }, delay);\n }\n\n public componentWillUnmount(): void {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n }\n }\n\n public render(): React.ReactElement<{}> | null {\n return this.state.isRendered ? (React.Children.only(this.props.children) as React.ReactElement<{}>) : null;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\nexport const isIE11 = (): boolean => {\n const win = getWindow();\n\n if (!win?.navigator?.userAgent) {\n return false;\n }\n\n return win.navigator.userAgent.indexOf('rv:11.0') > -1;\n};\n","import * as React from 'react';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { Label, ILabelStyleProps, ILabelStyles } from '../../Label';\nimport { Icon } from '../../Icon';\nimport {\n Async,\n DelayedRender,\n IStyleFunctionOrObject,\n classNamesFunction,\n getId,\n getNativeProps,\n getWindow,\n initializeComponentRef,\n inputProperties,\n isControlled,\n isIE11,\n textAreaProperties,\n warn,\n warnControlledUsage,\n warnMutuallyExclusive,\n} from '../../Utilities';\nimport { ITextField, ITextFieldProps, ITextFieldStyleProps, ITextFieldStyles } from './TextField.types';\n\nconst getClassNames = classNamesFunction<ITextFieldStyleProps, ITextFieldStyles>();\n/** @internal */\nexport interface ITextFieldState {\n /** The currently displayed value if uncontrolled. */\n uncontrolledValue: string | undefined;\n\n /** Is true when the control has focus. */\n isFocused?: boolean;\n\n /**\n * Dynamic error message returned by `onGetErrorMessage`.\n * Use `this._errorMessage` to get the actual current error message.\n */\n errorMessage: string | JSX.Element;\n\n /**\n * Whether this field has `type='password'` and `canRevealPassword=true`, and the password is\n * currently being revealed.\n */\n isRevealingPassword?: boolean;\n}\n\n/** @internal */\nexport interface ITextFieldSnapshot {\n /**\n * If set, the text field is changing between single- and multi-line, so we'll need to reset\n * selection/cursor after the change completes.\n */\n selection?: [number | null, number | null];\n}\n\nconst DEFAULT_STATE_VALUE = '';\nconst COMPONENT_NAME = 'TextField';\n\nconst REVEAL_ICON_NAME = 'RedEye';\nconst HIDE_ICON_NAME = 'Hide';\n\nexport class TextFieldBase extends React.Component<ITextFieldProps, ITextFieldState, ITextFieldSnapshot>\n implements ITextField {\n public static defaultProps: ITextFieldProps = {\n resizable: true,\n deferredValidationTime: 200,\n validateOnLoad: true,\n canRevealPassword: false,\n };\n\n /** Fallback ID if none is provided in props. Access proper value via `this._id`. */\n private _fallbackId: string;\n private _descriptionId: string;\n private _labelId: string;\n private _delayedValidate: (value: string | undefined) => void;\n private _lastValidation: number;\n private _latestValidateValue: string | undefined;\n private _hasWarnedNullValue: boolean | undefined;\n private _textElement = React.createRef<HTMLTextAreaElement | HTMLInputElement>();\n private _classNames: IProcessedStyleSet<ITextFieldStyles>;\n private _async: Async;\n /** Most recent value from a change or input event, to help avoid processing events twice */\n private _lastChangeValue: string | undefined;\n\n public constructor(props: ITextFieldProps) {\n super(props);\n\n initializeComponentRef(this);\n this._async = new Async(this);\n if (process.env.NODE_ENV !== 'production') {\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n errorMessage: 'onGetErrorMessage',\n });\n }\n\n this._fallbackId = getId(COMPONENT_NAME);\n this._descriptionId = getId(COMPONENT_NAME + 'Description');\n this._labelId = getId(COMPONENT_NAME + 'Label');\n\n this._warnControlledUsage();\n\n let { defaultValue = DEFAULT_STATE_VALUE } = props;\n if (typeof defaultValue === 'number') {\n // This isn't allowed per the props, but happens anyway.\n defaultValue = String(defaultValue);\n }\n this.state = {\n uncontrolledValue: this._isControlled ? undefined : defaultValue,\n isFocused: false,\n errorMessage: '',\n };\n\n this._delayedValidate = this._async.debounce(this._validate, this.props.deferredValidationTime);\n this._lastValidation = 0;\n }\n\n /**\n * Gets the current value of the text field.\n */\n public get value(): string | undefined {\n return _getValue(this.props, this.state);\n }\n\n public componentDidMount(): void {\n this._adjustInputHeight();\n\n if (this.props.validateOnLoad) {\n this._validate(this.value);\n }\n }\n\n public componentWillUnmount() {\n this._async.dispose();\n }\n\n public getSnapshotBeforeUpdate(prevProps: ITextFieldProps, prevState: ITextFieldState): ITextFieldSnapshot | null {\n return {\n selection: [this.selectionStart, this.selectionEnd],\n };\n }\n\n public componentDidUpdate(\n prevProps: ITextFieldProps,\n prevState: ITextFieldState,\n snapshot: ITextFieldSnapshot,\n ): void {\n const props = this.props;\n const { selection = [null, null] } = snapshot || {};\n const [start, end] = selection;\n\n if (!!prevProps.multiline !== !!props.multiline && prevState.isFocused) {\n // The text field has just changed between single- and multi-line, so we need to reset focus\n // and selection/cursor.\n this.focus();\n if (start !== null && end !== null && start >= 0 && end >= 0) {\n this.setSelectionRange(start, end);\n }\n }\n\n const prevValue = _getValue(prevProps, prevState);\n const value = this.value;\n if (prevValue !== value) {\n // Handle controlled/uncontrolled warnings and status\n this._warnControlledUsage(prevProps);\n\n // Clear error message if needed\n // TODO: is there any way to do this without an extra render?\n if (this.state.errorMessage && !props.errorMessage) {\n this.setState({ errorMessage: '' });\n }\n\n // Adjust height if needed based on new value\n this._adjustInputHeight();\n\n // Reset the record of the last value seen by a change/input event\n this._lastChangeValue = undefined;\n\n // TODO: #5875 added logic to trigger validation in componentWillReceiveProps and other places.\n // This seems a bit odd and hard to integrate with the new approach.\n // (Starting to think we should just put the validation logic in a separate wrapper component...?)\n if (_shouldValidateAllChanges(props)) {\n this._delayedValidate(value);\n }\n }\n }\n\n public render(): JSX.Element {\n const {\n borderless,\n className,\n disabled,\n iconProps,\n inputClassName,\n label,\n multiline,\n required,\n underlined,\n prefix,\n resizable,\n suffix,\n theme,\n styles,\n autoAdjustHeight,\n canRevealPassword,\n type,\n onRenderPrefix = this._onRenderPrefix,\n onRenderSuffix = this._onRenderSuffix,\n onRenderLabel = this._onRenderLabel,\n onRenderDescription = this._onRenderDescription,\n } = this.props;\n const { isFocused, isRevealingPassword } = this.state;\n const errorMessage = this._errorMessage;\n\n const hasRevealButton = !!canRevealPassword && type === 'password' && _browserNeedsRevealButton();\n\n const classNames = (this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n focused: isFocused,\n required,\n multiline,\n hasLabel: !!label,\n hasErrorMessage: !!errorMessage,\n borderless,\n resizable,\n hasIcon: !!iconProps,\n underlined,\n inputClassName,\n autoAdjustHeight,\n hasRevealButton,\n }));\n\n return (\n <div className={classNames.root}>\n <div className={classNames.wrapper}>\n {onRenderLabel(this.props, this._onRenderLabel)}\n <div className={classNames.fieldGroup}>\n {(prefix !== undefined || this.props.onRenderPrefix) && (\n <div className={classNames.prefix}>{onRenderPrefix(this.props, this._onRenderPrefix)}</div>\n )}\n {multiline ? this._renderTextArea() : this._renderInput()}\n {iconProps && <Icon className={classNames.icon} {...iconProps} />}\n {hasRevealButton && (\n // Explicitly set type=\"button\" since the default button type within a form is \"submit\"\n <button className={classNames.revealButton} onClick={this._onRevealButtonClick} type=\"button\">\n <span className={classNames.revealSpan}>\n <Icon\n className={classNames.revealIcon}\n iconName={isRevealingPassword ? HIDE_ICON_NAME : REVEAL_ICON_NAME}\n />\n </span>\n </button>\n )}\n {(suffix !== undefined || this.props.onRenderSuffix) && (\n <div className={classNames.suffix}>{onRenderSuffix(this.props, this._onRenderSuffix)}</div>\n )}\n </div>\n </div>\n {this._isDescriptionAvailable && (\n <span id={this._descriptionId}>\n {onRenderDescription(this.props, this._onRenderDescription)}\n {errorMessage && (\n <div role=\"alert\">\n <DelayedRender>\n <p className={classNames.errorMessage}>\n <span data-automation-id=\"error-message\">{errorMessage}</span>\n </p>\n </DelayedRender>\n </div>\n )}\n </span>\n )}\n </div>\n );\n }\n\n /**\n * Sets focus on the text field\n */\n public focus() {\n if (this._textElement.current) {\n this._textElement.current.focus();\n }\n }\n\n /**\n * Blurs the text field.\n */\n public blur() {\n if (this._textElement.current) {\n this._textElement.current.blur();\n }\n }\n\n /**\n * Selects the text field\n */\n public select() {\n if (this._textElement.current) {\n this._textElement.current.select();\n }\n }\n\n /**\n * Sets the selection start of the text field to a specified value\n */\n public setSelectionStart(value: number): void {\n if (this._textElement.current) {\n this._textElement.current.selectionStart = value;\n }\n }\n\n /**\n * Sets the selection end of the text field to a specified value\n */\n public setSelectionEnd(value: number): void {\n if (this._textElement.current) {\n this._textElement.current.selectionEnd = value;\n }\n }\n\n /**\n * Gets the selection start of the text field\n */\n public get selectionStart(): number | null {\n return this._textElement.current ? this._textElement.current.selectionStart : -1;\n }\n\n /**\n * Gets the selection end of the text field\n */\n public get selectionEnd(): number | null {\n return this._textElement.current ? this._textElement.current.selectionEnd : -1;\n }\n\n /**\n * Sets the start and end positions of a selection in a text field.\n * @param start - Index of the start of the selection.\n * @param end - Index of the end of the selection.\n */\n public setSelectionRange(start: number, end: number): void {\n if (this._textElement.current) {\n (this._textElement.current as HTMLInputElement).setSelectionRange(start, end);\n }\n }\n\n private _warnControlledUsage(prevProps?: ITextFieldProps): void {\n // Show warnings if props are being used in an invalid way\n warnControlledUsage({\n componentId: this._id,\n componentName: COMPONENT_NAME,\n props: this.props,\n oldProps: prevProps,\n valueProp: 'value',\n defaultValueProp: 'defaultValue',\n onChangeProp: 'onChange',\n readOnlyProp: 'readOnly',\n });\n\n if (this.props.value === null && !this._hasWarnedNullValue) {\n this._hasWarnedNullValue = true;\n warn(\n `Warning: 'value' prop on '${COMPONENT_NAME}' should not be null. Consider using an ` +\n 'empty string to clear the component or undefined to indicate an uncontrolled component.',\n );\n }\n }\n\n /** Returns `props.id` if available, or a fallback if not. */\n private get _id(): string {\n return this.props.id || this._fallbackId;\n }\n\n private get _isControlled(): boolean {\n return isControlled(this.props, 'value');\n }\n\n private _onFocus = (ev: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n\n this.setState({ isFocused: true }, () => {\n if (this.props.validateOnFocusIn) {\n this._validate(this.value);\n }\n });\n };\n\n private _onBlur = (ev: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n\n this.setState({ isFocused: false }, () => {\n if (this.props.validateOnFocusOut) {\n this._validate(this.value);\n }\n });\n };\n\n private _onRenderLabel = (props: ITextFieldProps): JSX.Element | null => {\n const { label, required } = props;\n // IProcessedStyleSet definition requires casting for what Label expects as its styles prop\n const labelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.label as IStyleFunctionOrObject<ILabelStyleProps, ILabelStyles>)\n : undefined;\n\n if (label) {\n return (\n <Label required={required} htmlFor={this._id} styles={labelStyles} disabled={props.disabled} id={this._labelId}>\n {props.label}\n </Label>\n );\n }\n return null;\n };\n\n private _onRenderDescription = (props: ITextFieldProps): JSX.Element | null => {\n if (props.description) {\n return <span className={this._classNames.description}>{props.description}</span>;\n }\n return null;\n };\n\n private _onRenderPrefix(props: ITextFieldProps): JSX.Element {\n const { prefix } = props;\n return <span style={{ paddingBottom: '1px' }}>{prefix}</span>;\n }\n\n private _onRenderSuffix(props: ITextFieldProps): JSX.Element {\n const { suffix } = props;\n return <span style={{ paddingBottom: '1px' }}>{suffix}</span>;\n }\n\n /**\n * Current error message from either `props.errorMessage` or the result of `props.onGetErrorMessage`.\n *\n * - If there is no validation error or we have not validated the input value, errorMessage is an empty string.\n * - If we have done the validation and there is validation error, errorMessage is the validation error message.\n */\n private get _errorMessage(): string | JSX.Element {\n const { errorMessage = this.state.errorMessage } = this.props;\n return errorMessage || '';\n }\n\n /**\n * If a custom description render function is supplied then treat description as always available.\n * Otherwise defer to the presence of description or error message text.\n */\n private get _isDescriptionAvailable(): boolean {\n const props = this.props;\n return !!(props.onRenderDescription || props.description || this._errorMessage);\n }\n\n private _renderTextArea(): React.ReactElement<React.HTMLAttributes<HTMLAreaElement>> {\n const textAreaProps = getNativeProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>>(\n this.props,\n textAreaProperties,\n ['defaultValue'],\n );\n const ariaLabelledBy = this.props['aria-labelledby'] || (this.props.label ? this._labelId : undefined);\n return (\n <textarea\n id={this._id}\n {...textAreaProps}\n ref={this._textElement as React.RefObject<HTMLTextAreaElement>}\n value={this.value || ''}\n onInput={this._onInputChange}\n onChange={this._onInputChange}\n className={this._classNames.field}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={this._isDescriptionAvailable ? this._descriptionId : this.props['aria-describedby']}\n aria-invalid={!!this._errorMessage}\n aria-label={this.props.ariaLabel}\n readOnly={this.props.readOnly}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n />\n );\n }\n\n private _renderInput(): JSX.Element | null {\n const inputProps: React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement> = {\n type: this.state.isRevealingPassword ? 'text' : this.props.type || 'text',\n id: this._id,\n ...getNativeProps(this.props, inputProperties, ['defaultValue', 'type']),\n 'aria-labelledby': this.props['aria-labelledby'] || (this.props.label ? this._labelId : undefined),\n ref: this._textElement as React.RefObject<HTMLInputElement>,\n value: this.value || '',\n onInput: this._onInputChange,\n onChange: this._onInputChange,\n className: this._classNames.field,\n 'aria-label': this.props.ariaLabel,\n 'aria-describedby': this._isDescriptionAvailable ? this._descriptionId : this.props['aria-describedby'],\n 'aria-invalid': !!this._errorMessage,\n onFocus: this._onFocus,\n onBlur: this._onBlur,\n };\n\n const defaultRender = (updatedInputProps: React.InputHTMLAttributes<HTMLInputElement>) => {\n return <input {...updatedInputProps} />;\n };\n const onRenderInput = this.props.onRenderInput || defaultRender;\n return onRenderInput(inputProps, defaultRender);\n }\n\n private _onRevealButtonClick = (event: React.MouseEvent<HTMLButtonElement>): void => {\n this.setState(prevState => ({ isRevealingPassword: !prevState.isRevealingPassword }));\n };\n\n private _onInputChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n // Previously, we needed to call both onInput and onChange due to some weird IE/React issues,\n // which have *probably* been fixed now:\n // - https://github.com/microsoft/fluentui/issues/744 (likely fixed)\n // - https://github.com/microsoft/fluentui/issues/824 (confirmed fixed)\n\n // TODO (Fabric 8?) - Switch to calling only onChange. This switch is pretty disruptive for\n // tests (ours and maybe consumers' too), so it seemed best to do the switch in a major bump.\n\n const element = event.target as HTMLInputElement;\n const value = element.value;\n // Ignore this event if the value is undefined (in case one of the IE bugs comes back)\n if (value === undefined || value === this._lastChangeValue) {\n return;\n }\n this._lastChangeValue = value;\n\n // This is so developers can access the event properties in asynchronous callbacks\n // https://reactjs.org/docs/events.html#event-pooling\n event.persist();\n\n let isSameValue: boolean;\n this.setState(\n (prevState: ITextFieldState, props: ITextFieldProps) => {\n const prevValue = _getValue(props, prevState) || '';\n isSameValue = value === prevValue;\n // Avoid doing unnecessary work when the value has not changed.\n if (isSameValue) {\n return null;\n }\n\n // ONLY if this is an uncontrolled component, update the displayed value.\n // (Controlled components must update the `value` prop from `onChange`.)\n return this._isControlled ? null : { uncontrolledValue: value };\n },\n () => {\n // If the value actually changed, call onChange (for either controlled or uncontrolled)\n const { onChange } = this.props;\n if (!isSameValue && onChange) {\n onChange(event, value);\n }\n },\n );\n };\n\n private _validate(value: string | undefined): void {\n // In case _validate is called again while validation promise is executing\n if (this._latestValidateValue === value && _shouldValidateAllChanges(this.props)) {\n return;\n }\n\n this._latestValidateValue = value;\n const onGetErrorMessage = this.props.onGetErrorMessage;\n const result = onGetErrorMessage && onGetErrorMessage(value || '');\n\n if (result !== undefined) {\n if (typeof result === 'string' || !('then' in result)) {\n this.setState({ errorMessage: result });\n this._notifyAfterValidate(value, result);\n } else {\n const currentValidation: number = ++this._lastValidation;\n\n result.then((errorMessage: string | JSX.Element) => {\n if (currentValidation === this._lastValidation) {\n this.setState({ errorMessage });\n }\n this._notifyAfterValidate(value, errorMessage);\n });\n }\n } else {\n this._notifyAfterValidate(value, '');\n }\n }\n\n private _notifyAfterValidate(value: string | undefined, errorMessage: string | JSX.Element): void {\n if (value === this.value && this.props.onNotifyValidationResult) {\n this.props.onNotifyValidationResult(errorMessage, value);\n }\n }\n\n private _adjustInputHeight(): void {\n if (this._textElement.current && this.props.autoAdjustHeight && this.props.multiline) {\n const textField = this._textElement.current;\n textField.style.height = '';\n textField.style.height = textField.scrollHeight + 'px';\n }\n }\n}\n\n/** Get the value from the given state and props (converting from number to string if needed) */\nfunction _getValue(props: ITextFieldProps, state: ITextFieldState): string | undefined {\n const { value = state.uncontrolledValue } = props;\n if (typeof value === 'number') {\n // not allowed per typings, but happens anyway\n return String(value);\n }\n return value;\n}\n\n/**\n * If `validateOnFocusIn` or `validateOnFocusOut` is true, validation should run **only** on that event.\n * Otherwise, validation should run on every change.\n */\nfunction _shouldValidateAllChanges(props: ITextFieldProps): boolean {\n return !(props.validateOnFocusIn || props.validateOnFocusOut);\n}\n\n// Only calculate this once across all TextFields, since will stay the same\nlet __browserNeedsRevealButton: boolean | undefined;\n\nfunction _browserNeedsRevealButton() {\n if (typeof __browserNeedsRevealButton !== 'boolean') {\n const win = getWindow();\n\n if (win?.navigator) {\n // Edge, Chromium Edge\n const isEdge = /Edg/.test(win.navigator.userAgent || '');\n\n __browserNeedsRevealButton = !(isIE11() || isEdge);\n } else {\n __browserNeedsRevealButton = true;\n }\n }\n return __browserNeedsRevealButton;\n}\n","/**\n * Determines whether a component is controlled.\n * @param props - Component props\n * @param valueProp - Prop containing the controlled value\n * @returns true if controlled, false if uncontrolled\n */\nexport function isControlled<P>(props: P, valueProp: keyof P): boolean {\n // React's built-in <input> considers a prop to be provided if its value is non-null/undefined.\n // Mirror that behavior here (rather than checking for just undefined).\n return props[valueProp] !== undefined && props[valueProp] !== null;\n}\n","import {\n AnimationClassNames,\n getGlobalClassNames,\n getInputFocusStyle,\n HighContrastSelector,\n IStyle,\n normalize,\n getPlaceholderStyles,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { ILabelStyles, ILabelStyleProps } from '../../Label';\nimport { ITextFieldStyleProps, ITextFieldStyles } from './TextField.types';\nimport { IStyleFunctionOrObject } from '@uifabric/utilities';\n\nconst globalClassNames = {\n root: 'ms-TextField',\n description: 'ms-TextField-description',\n errorMessage: 'ms-TextField-errorMessage',\n field: 'ms-TextField-field',\n fieldGroup: 'ms-TextField-fieldGroup',\n prefix: 'ms-TextField-prefix',\n suffix: 'ms-TextField-suffix',\n wrapper: 'ms-TextField-wrapper',\n revealButton: 'ms-TextField-reveal',\n\n multiline: 'ms-TextField--multiline',\n borderless: 'ms-TextField--borderless',\n underlined: 'ms-TextField--underlined',\n unresizable: 'ms-TextField--unresizable',\n\n required: 'is-required',\n disabled: 'is-disabled',\n active: 'is-active',\n};\n\nfunction getLabelStyles(props: ITextFieldStyleProps): IStyleFunctionOrObject<ILabelStyleProps, ILabelStyles> {\n const { underlined, disabled, focused, theme } = props;\n const { palette, fonts } = theme;\n\n return () => ({\n root: [\n underlined &&\n disabled && {\n color: palette.neutralTertiary,\n },\n underlined && {\n fontSize: fonts.medium.fontSize,\n marginRight: 8,\n paddingLeft: 12,\n paddingRight: 0,\n lineHeight: '22px',\n height: 32,\n },\n underlined &&\n focused && {\n selectors: {\n [HighContrastSelector]: {\n height: 31, // -1px to prevent jumpiness in HC with the increased border-width to 2px\n },\n },\n },\n ],\n });\n}\n\nexport function getStyles(props: ITextFieldStyleProps): ITextFieldStyles {\n const {\n theme,\n className,\n disabled,\n focused,\n required,\n multiline,\n hasLabel,\n borderless,\n underlined,\n hasIcon,\n resizable,\n hasErrorMessage,\n inputClassName,\n autoAdjustHeight,\n hasRevealButton,\n } = props;\n\n const { semanticColors, effects, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n const fieldPrefixSuffix: IStyle = {\n // Suffix/Prefix are not editable so the disabled slot perfectly fits.\n background: semanticColors.disabledBackground,\n color: !disabled ? semanticColors.inputPlaceholderText : semanticColors.disabledText,\n display: 'flex',\n alignItems: 'center',\n padding: '0 10px',\n lineHeight: 1,\n whiteSpace: 'nowrap',\n flexShrink: 0,\n selectors: {\n [HighContrastSelector]: {\n background: 'Window',\n color: disabled ? 'GrayText' : 'WindowText',\n },\n },\n };\n\n // placeholder style constants\n const placeholderStyles: IStyle = [\n fonts.medium,\n {\n color: semanticColors.inputPlaceholderText,\n opacity: 1,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n ];\n\n const disabledPlaceholderStyles: IStyle = {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n };\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n required && classNames.required,\n disabled && classNames.disabled,\n focused && classNames.active,\n multiline && classNames.multiline,\n borderless && classNames.borderless,\n underlined && classNames.underlined,\n normalize,\n {\n position: 'relative',\n },\n className,\n ],\n wrapper: [\n classNames.wrapper,\n\n underlined && [\n {\n display: 'flex',\n borderBottom: `1px solid ${!hasErrorMessage ? semanticColors.inputBorder : semanticColors.errorText}`,\n width: '100%',\n },\n disabled && {\n borderBottomColor: semanticColors.disabledBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n !disabled && {\n selectors: {\n ':hover': {\n borderBottomColor: !hasErrorMessage ? semanticColors.inputBorderHovered : semanticColors.errorText,\n selectors: {\n [HighContrastSelector]: {\n borderBottomColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n focused && [\n {\n position: 'relative',\n },\n getInputFocusStyle(\n !hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText,\n 0,\n 'borderBottom',\n ),\n ],\n ],\n ],\n fieldGroup: [\n classNames.fieldGroup,\n normalize,\n {\n border: `1px solid ${semanticColors.inputBorder}`,\n borderRadius: effects.roundedCorner2,\n background: semanticColors.inputBackground,\n cursor: 'text',\n height: 32,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'stretch',\n position: 'relative',\n },\n multiline && {\n minHeight: '60px',\n height: 'auto',\n display: 'flex',\n },\n\n !focused &&\n !disabled && {\n selectors: {\n ':hover': {\n borderColor: semanticColors.inputBorderHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n\n focused &&\n !underlined &&\n getInputFocusStyle(\n !hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText,\n effects.roundedCorner2,\n ),\n disabled && {\n borderColor: semanticColors.disabledBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n\n cursor: 'default',\n },\n borderless && {\n border: 'none',\n },\n borderless &&\n focused && {\n border: 'none',\n selectors: {\n ':after': {\n border: 'none',\n },\n },\n },\n underlined && {\n flex: '1 1 0px',\n border: 'none',\n textAlign: 'left',\n },\n underlined &&\n disabled && {\n backgroundColor: 'transparent',\n },\n\n hasErrorMessage &&\n !underlined && {\n borderColor: semanticColors.errorText,\n selectors: {\n '&:hover': {\n borderColor: semanticColors.errorText,\n },\n },\n },\n !hasLabel &&\n required && {\n selectors: {\n ':before': {\n content: `'*'`,\n color: semanticColors.errorText,\n position: 'absolute',\n top: -5,\n right: -10,\n },\n [HighContrastSelector]: {\n selectors: {\n ':before': {\n color: 'WindowText',\n right: -14, // moving the * 4 pixel to right to alleviate border clipping in HC mode.\n },\n },\n },\n },\n },\n ],\n field: [\n fonts.medium,\n classNames.field,\n normalize,\n {\n borderRadius: 0,\n border: 'none',\n background: 'none',\n backgroundColor: 'transparent',\n color: semanticColors.inputText,\n padding: '0 8px',\n width: '100%',\n minWidth: 0,\n textOverflow: 'ellipsis',\n outline: 0,\n selectors: {\n '&:active, &:focus, &:hover': { outline: 0 },\n '::-ms-clear': {\n display: 'none',\n },\n [HighContrastSelector]: {\n background: 'Window',\n color: disabled ? 'GrayText' : 'WindowText',\n },\n },\n },\n getPlaceholderStyles(placeholderStyles),\n multiline &&\n !resizable && [\n classNames.unresizable,\n {\n resize: 'none',\n },\n ],\n multiline && {\n minHeight: 'inherit',\n lineHeight: 17,\n flexGrow: 1,\n paddingTop: 6,\n paddingBottom: 6,\n overflow: 'auto',\n width: '100%',\n },\n multiline &&\n autoAdjustHeight && {\n overflow: 'hidden',\n },\n hasIcon &&\n !hasRevealButton && {\n paddingRight: 24,\n },\n multiline &&\n hasIcon && {\n paddingRight: 40,\n },\n disabled && [\n {\n backgroundColor: semanticColors.disabledBackground,\n color: semanticColors.disabledText,\n borderColor: semanticColors.disabledBackground,\n },\n getPlaceholderStyles(disabledPlaceholderStyles),\n ],\n underlined && {\n textAlign: 'left',\n },\n focused &&\n !borderless && {\n selectors: {\n [HighContrastSelector]: {\n paddingLeft: 11,\n paddingRight: 11,\n },\n },\n },\n focused &&\n multiline &&\n !borderless && {\n selectors: {\n [HighContrastSelector]: {\n paddingTop: 4, // take into consideration the 2px increased border-width (not when borderless).\n },\n },\n },\n inputClassName,\n ],\n icon: [\n multiline && {\n paddingRight: 24,\n alignItems: 'flex-end',\n },\n {\n pointerEvents: 'none',\n position: 'absolute',\n bottom: 6,\n right: 8,\n top: 'auto',\n fontSize: IconFontSizes.medium,\n lineHeight: 18,\n },\n disabled && {\n color: semanticColors.disabledText,\n },\n ],\n description: [\n classNames.description,\n {\n color: semanticColors.bodySubtext,\n fontSize: fonts.xSmall.fontSize,\n },\n ],\n errorMessage: [\n classNames.errorMessage,\n AnimationClassNames.slideDownIn20,\n fonts.small,\n {\n color: semanticColors.errorText,\n margin: 0,\n paddingTop: 5,\n display: 'flex',\n alignItems: 'center',\n },\n ],\n prefix: [classNames.prefix, fieldPrefixSuffix],\n suffix: [classNames.suffix, fieldPrefixSuffix],\n revealButton: [\n classNames.revealButton,\n 'ms-Button',\n 'ms-Button--icon',\n {\n height: 30,\n width: 32,\n border: 'none',\n padding: '0px 4px',\n backgroundColor: 'transparent',\n color: semanticColors.link,\n selectors: {\n ':hover': {\n outline: 0,\n color: semanticColors.primaryButtonBackgroundHovered,\n backgroundColor: semanticColors.buttonBackgroundHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n ':focus': { outline: 0 },\n },\n },\n hasIcon && {\n marginRight: 28,\n },\n ],\n revealSpan: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n revealIcon: {\n margin: '0px 4px',\n pointerEvents: 'none',\n bottom: 6,\n right: 8,\n top: 'auto',\n fontSize: IconFontSizes.medium,\n lineHeight: 18,\n },\n subComponentStyles: {\n label: getLabelStyles(props),\n },\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { TextFieldBase } from './TextField.base';\nimport { ITextFieldProps, ITextFieldStyles, ITextFieldStyleProps } from './TextField.types';\nimport { getStyles } from './TextField.styles';\nexport { ITextField } from './TextField.types';\n\nexport const TextField: React.FunctionComponent<ITextFieldProps> = styled<\n ITextFieldProps,\n ITextFieldStyleProps,\n ITextFieldStyles\n>(TextFieldBase, getStyles, undefined, {\n scope: 'TextField',\n});\n","import * as React from 'react';\nimport { BaseButton, Button } from '../../Button';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\nimport { IIconProps } from '../../Icon';\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBar {}\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBarProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Optional callback to access the IMessageBar interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IMessageBar>;\n\n /**\n * The type of MessageBar to render.\n * @defaultvalue MessageBarType.info\n */\n messageBarType?: MessageBarType;\n\n /**\n * The actions you want to show on the other side.\n */\n actions?: JSX.Element;\n\n /**\n * A description of the message bar for the benefit of screen readers.\n * @deprecated Use native prop `aria-label` instead.\n */\n ariaLabel?: string;\n\n /**\n * Whether the message bar has a dismiss button and its callback.\n * If null, we don't show a dismiss button.\n * @defaultvalue null\n */\n // eslint-disable-next-line deprecation/deprecation\n onDismiss?: (ev?: React.MouseEvent<HTMLElement | BaseButton | Button>) => any;\n\n /**\n * Determines if the message bar is multi lined.\n * If false, and the text overflows over buttons or to another line, it is clipped.\n * @defaultvalue true\n */\n isMultiline?: boolean;\n\n /**\n * Aria label on dismiss button if onDismiss is defined.\n */\n dismissButtonAriaLabel?: string;\n\n /**\n * Determines if the message bar text is truncated.\n * If true, a button will render to toggle between a single line view and multiline view.\n * This prop is for single line message bars with no buttons only in a limited space scenario.\n * @defaultvalue false\n */\n truncated?: boolean;\n\n /**\n * Aria label on overflow button if truncated is defined.\n */\n overflowButtonAriaLabel?: string;\n\n /**\n * Additional CSS class(es) to apply to the MessageBar.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IMessageBarStyleProps, IMessageBarStyles>;\n\n /**\n * Custom icon prop to replace the dismiss icon.\n * If unset, default will be the Fabric Clear icon.\n */\n dismissIconProps?: IIconProps;\n\n /**\n * Custom icon prop to replace the message bar icon.\n * If unset, default will be the icon set by messageBarType.\n */\n messageBarIconProps?: IIconProps;\n}\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBarStyleProps {\n /**\n * Theme (provided through customization).\n */\n theme: ITheme;\n\n /**\n * Additional CSS class(es).\n */\n className?: string;\n\n /**\n * Type of the MessageBar.\n */\n messageBarType?: MessageBarType;\n\n /**\n * Whether the MessageBar contains a dismiss button.\n */\n onDismiss?: boolean;\n\n /**\n * Whether the text is truncated.\n */\n truncated?: boolean;\n\n /**\n * Whether the MessageBar is rendered in multi line (as opposed to single line) mode.\n */\n isMultiline?: boolean;\n\n /**\n * Whether the single line MessageBar is being expanded.\n */\n expandSingleLine?: boolean;\n\n /**\n * Whether the MessageBar contains any action elements.\n */\n actions?: boolean;\n}\n\n/**\n * {@docCategory MessageBar}\n */\nexport interface IMessageBarStyles {\n /**\n * Style set for the root element.\n */\n root?: IStyle;\n\n /**\n * Style set for the element containing the icon, text, and optional dismiss button.\n */\n content?: IStyle;\n\n /**\n * Style set for the element containing the icon.\n */\n iconContainer?: IStyle;\n\n /**\n * Style set for the icon.\n */\n icon?: IStyle;\n\n /**\n * Style set for the element containing the text.\n */\n text?: IStyle;\n\n /**\n * Style set for the text.\n */\n innerText?: IStyle;\n\n /**\n * Style set for the optional dismiss button.\n */\n dismissal?: IStyle;\n\n /**\n * Style set for the icon used to expand and collapse the MessageBar.\n */\n expand?: IStyle;\n\n /**\n * Style set for the element containing the dismiss button.\n */\n dismissSingleLine?: IStyle;\n\n /**\n * Style set for the element containing the expand icon.\n */\n expandSingleLine?: IStyle;\n\n /**\n * Style set for the optional element containing the action elements.\n */\n actions?: IStyle;\n}\n\n/**\n * {@docCategory MessageBar}\n */\nexport enum MessageBarType {\n /** Info styled MessageBar */\n info = 0,\n /** Error styled MessageBar */\n error = 1,\n /** Blocked styled MessageBar */\n blocked = 2,\n /** SevereWarning styled MessageBar */\n severeWarning = 3,\n /** Success styled MessageBar */\n success = 4,\n /** Warning styled MessageBar */\n warning = 5,\n}\n","import { IButtonStyles } from '../Button.types';\nimport {\n HighContrastSelector,\n ITheme,\n concatStyleSets,\n getFocusStyle,\n IStyle,\n getHighContrastNoAdjustStyle,\n} from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n const { effects, palette, semanticColors } = theme;\n\n const buttonHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n border: 'none',\n };\n\n const splitButtonDividerBaseStyles: IStyle = {\n position: 'absolute',\n width: 1,\n right: 31,\n top: 8,\n bottom: 8,\n };\n\n const splitButtonStyles: IButtonStyles = {\n splitButtonContainer: [\n getFocusStyle(theme, { highContrastStyle: buttonHighContrastFocus, inset: 2 }),\n {\n display: 'inline-flex',\n selectors: {\n '.ms-Button--default': {\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n borderRight: 'none',\n },\n '.ms-Button--primary': {\n borderTopRightRadius: '0',\n borderBottomRightRadius: '0',\n border: 'none',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n backgroundColor: 'Window',\n border: '1px solid WindowText',\n borderRightWidth: '0',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n '.ms-Button--primary + .ms-Button': {\n border: 'none',\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid WindowText',\n borderLeftWidth: '0',\n },\n },\n },\n },\n },\n ],\n splitButtonContainerHovered: {\n selectors: {\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'Highlight',\n },\n },\n },\n '.ms-Button.is-disabled': {\n color: semanticColors.buttonTextDisabled,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n },\n },\n splitButtonContainerChecked: {\n selectors: {\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n splitButtonContainerCheckedHovered: {\n selectors: {\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n splitButtonContainerFocused: {\n outline: 'none!important',\n },\n splitButtonMenuButton: {\n padding: 6,\n height: 'auto',\n boxSizing: 'border-box',\n borderRadius: 0,\n borderTopRightRadius: effects.roundedCorner2,\n borderBottomRightRadius: effects.roundedCorner2,\n border: `1px solid ${palette.neutralSecondaryAlt}`,\n borderLeft: 'none',\n outline: 'transparent',\n userSelect: 'none',\n display: 'inline-block',\n textDecoration: 'none',\n textAlign: 'center',\n cursor: 'pointer',\n verticalAlign: 'top',\n width: 32,\n marginLeft: -1,\n marginTop: 0,\n marginRight: 0,\n marginBottom: 0,\n [HighContrastSelector]: {\n '.ms-Button-menuIcon': {\n color: 'WindowText',\n },\n },\n },\n splitButtonDivider: {\n ...splitButtonDividerBaseStyles,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n splitButtonDividerDisabled: {\n ...splitButtonDividerBaseStyles,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'GrayText',\n },\n },\n },\n splitButtonMenuButtonDisabled: {\n pointerEvents: 'none',\n border: 'none',\n selectors: {\n ':hover': {\n cursor: 'default',\n },\n\n '.ms-Button--primary': {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n '.ms-Button-menuIcon': {\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n [HighContrastSelector]: {\n color: 'GrayText',\n border: '1px solid GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n\n splitButtonFlexContainer: {\n display: 'flex',\n height: '100%',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n },\n\n splitButtonContainerDisabled: {\n outline: 'none',\n border: 'none',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n splitButtonMenuFocused: {\n ...getFocusStyle(theme, { highContrastStyle: buttonHighContrastFocus, inset: 2 }),\n },\n };\n\n return concatStyleSets(splitButtonStyles, customStyles)!;\n },\n);\n","import { IButtonStyles } from '../Button.types';\nimport { ITheme, concatStyleSets, HighContrastSelector } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const splitButtonStyles: IButtonStyles = getSplitButtonStyles(theme);\n const { palette, semanticColors } = theme;\n const iconButtonStyles: IButtonStyles = {\n root: {\n padding: '0 4px',\n width: '32px',\n height: '32px',\n backgroundColor: 'transparent',\n border: 'none',\n color: semanticColors.link,\n },\n\n rootHovered: {\n color: palette.themeDarkAlt,\n backgroundColor: palette.neutralLighter,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n\n rootHasMenu: {\n width: 'auto',\n },\n\n rootPressed: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n\n rootExpanded: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n\n rootChecked: {\n color: palette.themeDark,\n backgroundColor: palette.neutralLight,\n },\n\n rootCheckedHovered: {\n color: palette.themeDark,\n backgroundColor: palette.neutralQuaternaryAlt,\n },\n\n rootDisabled: {\n color: palette.neutralTertiaryAlt,\n },\n };\n\n return concatStyleSets(baseButtonStyles, iconButtonStyles, splitButtonStyles, customStyles)!;\n },\n);\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './IconButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('IconButton', ['theme', 'styles'], true)\nexport class IconButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName=\"ms-Button--icon\"\n styles={getStyles(theme!, styles)}\n onRenderText={nullRender}\n onRenderDescription={nullRender}\n />\n );\n }\n}\n","import * as React from 'react';\nimport {\n DelayedRender,\n getId,\n classNamesFunction,\n getNativeProps,\n htmlElementProperties,\n css,\n initializeComponentRef,\n} from '../../Utilities';\nimport { IconButton } from '../../Button';\nimport { Icon } from '../../Icon';\nimport { IMessageBarProps, IMessageBarStyleProps, IMessageBarStyles, MessageBarType } from './MessageBar.types';\n\nconst getClassNames = classNamesFunction<IMessageBarStyleProps, IMessageBarStyles>();\n\nexport interface IMessageBarState {\n labelId?: string;\n showContent?: boolean;\n expandSingleLine?: boolean;\n}\n\nexport class MessageBarBase extends React.Component<IMessageBarProps, IMessageBarState> {\n public static defaultProps: IMessageBarProps = {\n messageBarType: MessageBarType.info,\n onDismiss: undefined,\n isMultiline: true,\n };\n\n private ICON_MAP = {\n [MessageBarType.info]: 'Info',\n [MessageBarType.warning]: 'Info',\n [MessageBarType.error]: 'ErrorBadge',\n [MessageBarType.blocked]: 'Blocked2',\n [MessageBarType.severeWarning]: 'Warning',\n [MessageBarType.success]: 'Completed',\n };\n\n private _classNames: { [key in keyof IMessageBarStyles]: string };\n\n constructor(props: IMessageBarProps) {\n super(props);\n\n initializeComponentRef(this);\n this.state = {\n labelId: getId('MessageBar'),\n // eslint-disable-next-line react/no-unused-state\n showContent: false,\n expandSingleLine: false,\n };\n }\n\n public render(): JSX.Element {\n const { isMultiline } = this.props;\n\n this._classNames = this._getClassNames();\n\n return isMultiline ? this._renderMultiLine() : this._renderSingleLine();\n }\n\n private _getActionsDiv(): JSX.Element | null {\n if (this.props.actions) {\n return <div className={this._classNames.actions}>{this.props.actions}</div>;\n }\n return null;\n }\n\n private _getDismissDiv(): JSX.Element | null {\n const { onDismiss, dismissIconProps } = this.props;\n if (onDismiss) {\n return (\n <IconButton\n disabled={false}\n className={this._classNames.dismissal}\n onClick={onDismiss}\n iconProps={dismissIconProps ? dismissIconProps : { iconName: 'Clear' }}\n title={this.props.dismissButtonAriaLabel}\n ariaLabel={this.props.dismissButtonAriaLabel}\n />\n );\n }\n return null;\n }\n\n private _getDismissSingleLine(): JSX.Element | null {\n if (this.props.onDismiss) {\n return <div className={this._classNames.dismissSingleLine}>{this._getDismissDiv()}</div>;\n }\n return null;\n }\n\n private _getExpandSingleLine(): JSX.Element | null {\n if (!this.props.actions && this.props.truncated) {\n return (\n <div className={this._classNames.expandSingleLine}>\n <IconButton\n disabled={false}\n className={this._classNames.expand}\n onClick={this._onClick}\n iconProps={{ iconName: this.state.expandSingleLine ? 'DoubleChevronUp' : 'DoubleChevronDown' }}\n ariaLabel={this.props.overflowButtonAriaLabel}\n aria-expanded={this.state.expandSingleLine}\n />\n </div>\n );\n }\n return null;\n }\n\n private _getIconSpan(): JSX.Element {\n const { messageBarIconProps } = this.props;\n return (\n <div className={this._classNames.iconContainer} aria-hidden>\n {messageBarIconProps ? (\n <Icon {...messageBarIconProps} className={css(this._classNames.icon, messageBarIconProps.className)} />\n ) : (\n <Icon iconName={this.ICON_MAP[this.props.messageBarType!]} className={this._classNames.icon} />\n )}\n </div>\n );\n }\n\n private _renderMultiLine(): React.ReactElement<React.HTMLAttributes<HTMLAreaElement>> {\n return (\n <div className={this._classNames.root} {...this._getRegionProps()}>\n <div className={this._classNames.content}>\n {this._getIconSpan()}\n {this._renderInnerText()}\n {this._getDismissDiv()}\n </div>\n {this._getActionsDiv()}\n </div>\n );\n }\n\n private _renderSingleLine(): React.ReactElement<React.HTMLAttributes<HTMLAreaElement>> {\n return (\n <div className={this._classNames.root} {...this._getRegionProps()}>\n <div className={this._classNames.content}>\n {this._getIconSpan()}\n {this._renderInnerText()}\n {this._getExpandSingleLine()}\n {this._getActionsDiv()}\n {this._getDismissSingleLine()}\n </div>\n </div>\n );\n }\n\n private _renderInnerText(): JSX.Element {\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLSpanElement>>(this.props, htmlElementProperties, [\n 'className',\n ]);\n\n return (\n <div\n className={this._classNames.text}\n id={this.state.labelId}\n role=\"status\"\n aria-live={this._getAnnouncementPriority()}\n >\n <span className={this._classNames.innerText} {...nativeProps}>\n <DelayedRender>\n <span>{this.props.children}</span>\n </DelayedRender>\n </span>\n </div>\n );\n }\n\n private _getRegionProps = () => {\n const hasActions = !!this._getActionsDiv() || !!this._getDismissDiv();\n const regionProps = {\n 'aria-describedby': this.state.labelId,\n role: 'region',\n };\n\n return hasActions ? regionProps : {};\n };\n\n private _getClassNames(): { [key in keyof IMessageBarStyles]: string } {\n const { theme, className, messageBarType, onDismiss, actions, truncated, isMultiline } = this.props;\n const { expandSingleLine } = this.state;\n\n return getClassNames(this.props.styles!, {\n theme: theme!,\n messageBarType: messageBarType || MessageBarType.info,\n onDismiss: onDismiss !== undefined,\n actions: actions !== undefined,\n truncated: truncated,\n isMultiline: isMultiline,\n expandSingleLine: expandSingleLine,\n className,\n });\n }\n\n private _getAnnouncementPriority(): 'assertive' | 'polite' {\n switch (this.props.messageBarType) {\n case MessageBarType.blocked:\n case MessageBarType.error:\n case MessageBarType.severeWarning:\n return 'assertive';\n }\n return 'polite';\n }\n\n private _onClick = (ev: React.MouseEvent<HTMLAnchorElement | HTMLButtonElement>) => {\n this.setState({ expandSingleLine: !this.state.expandSingleLine });\n };\n}\n","import {\n IStyle,\n ISemanticColors,\n HighContrastSelector,\n ScreenWidthMaxSmall,\n getScreenSelector,\n getGlobalClassNames,\n getFocusStyle,\n IconFontSizes,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\nimport { IMessageBarStyleProps, IMessageBarStyles, MessageBarType } from './MessageBar.types';\n\nconst GlobalClassNames = {\n root: 'ms-MessageBar',\n error: 'ms-MessageBar--error',\n blocked: 'ms-MessageBar--blocked',\n severeWarning: 'ms-MessageBar--severeWarning',\n success: 'ms-MessageBar--success',\n warning: 'ms-MessageBar--warning',\n multiline: 'ms-MessageBar-multiline',\n singleline: 'ms-MessageBar-singleline',\n dismissalSingleLine: 'ms-MessageBar-dismissalSingleLine',\n expandingSingleLine: 'ms-MessageBar-expandingSingleLine',\n content: 'ms-MessageBar-content',\n iconContainer: 'ms-MessageBar-icon',\n text: 'ms-MessageBar-text',\n innerText: 'ms-MessageBar-innerText',\n dismissSingleLine: 'ms-MessageBar-dismissSingleLine',\n expandSingleLine: 'ms-MessageBar-expandSingleLine',\n dismissal: 'ms-MessageBar-dismissal',\n expand: 'ms-MessageBar-expand',\n actions: 'ms-MessageBar-actions',\n actionsSingleline: 'ms-MessageBar-actionsSingleLine',\n};\n\nconst backgroundColor: { [key: string]: keyof ISemanticColors } = {\n [MessageBarType.error]: 'errorBackground',\n [MessageBarType.blocked]: 'errorBackground',\n [MessageBarType.success]: 'successBackground',\n [MessageBarType.warning]: 'warningBackground',\n [MessageBarType.severeWarning]: 'severeWarningBackground',\n [MessageBarType.info]: 'infoBackground',\n};\n\nconst highContrastBackgroundColor: { [key: string]: string } = {\n [MessageBarType.error]: 'rgba(255, 0, 0, 0.3)',\n [MessageBarType.blocked]: 'rgba(255, 0, 0, 0.3)',\n [MessageBarType.success]: 'rgba(48, 241, 73, 0.3)',\n [MessageBarType.warning]: 'rgba(255, 254, 57, 0.3)',\n [MessageBarType.severeWarning]: 'rgba(255, 0, 0, 0.3)',\n [MessageBarType.info]: 'Window',\n};\n\nconst iconColor: { [key: string]: keyof ISemanticColors } = {\n [MessageBarType.error]: 'errorIcon',\n [MessageBarType.blocked]: 'errorIcon',\n [MessageBarType.success]: 'successIcon',\n [MessageBarType.warning]: 'warningIcon',\n [MessageBarType.severeWarning]: 'severeWarningIcon',\n [MessageBarType.info]: 'infoIcon',\n};\n\nexport const getStyles = (props: IMessageBarStyleProps): IMessageBarStyles => {\n const {\n theme,\n className,\n onDismiss,\n truncated,\n isMultiline,\n expandSingleLine,\n messageBarType = MessageBarType.info,\n } = props;\n const { semanticColors, fonts } = theme;\n\n const SmallScreenSelector = getScreenSelector(0, ScreenWidthMaxSmall);\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n const dismissalAndExpandIconStyle: IStyle = {\n fontSize: IconFontSizes.xSmall,\n height: 10,\n lineHeight: '10px',\n color: semanticColors.messageText,\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n color: 'WindowText',\n },\n },\n };\n\n const dismissalAndExpandStyle: IStyle = [\n getFocusStyle(theme, {\n inset: 1,\n highContrastStyle: {\n outlineOffset: '-6px',\n outline: '1px solid Highlight',\n },\n borderColor: 'transparent',\n }),\n {\n flexShrink: 0,\n width: 32,\n height: 32,\n padding: '8px 12px',\n selectors: {\n '& .ms-Button-icon': dismissalAndExpandIconStyle,\n ':hover': {\n backgroundColor: 'transparent',\n },\n ':active': {\n backgroundColor: 'transparent',\n },\n },\n },\n ];\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n messageBarType === MessageBarType.error && classNames.error,\n messageBarType === MessageBarType.blocked && classNames.blocked,\n messageBarType === MessageBarType.severeWarning && classNames.severeWarning,\n messageBarType === MessageBarType.success && classNames.success,\n messageBarType === MessageBarType.warning && classNames.warning,\n isMultiline ? classNames.multiline : classNames.singleline,\n !isMultiline && onDismiss && classNames.dismissalSingleLine,\n !isMultiline && truncated && classNames.expandingSingleLine,\n {\n background: semanticColors[backgroundColor[messageBarType]],\n color: semanticColors.messageText,\n minHeight: 32,\n width: '100%',\n display: 'flex',\n wordBreak: 'break-word',\n selectors: {\n '.ms-Link': {\n color: semanticColors.messageLink,\n selectors: {\n ':hover': {\n color: semanticColors.messageLinkHovered,\n },\n },\n },\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n background: highContrastBackgroundColor[messageBarType],\n border: '1px solid WindowText',\n color: 'WindowText',\n },\n },\n },\n isMultiline && {\n flexDirection: 'column',\n },\n className,\n ],\n content: [\n classNames.content,\n {\n display: 'flex',\n width: '100%',\n lineHeight: 'normal',\n },\n ],\n iconContainer: [\n classNames.iconContainer,\n {\n fontSize: IconFontSizes.medium,\n minWidth: 16,\n minHeight: 16,\n display: 'flex',\n flexShrink: 0,\n margin: '8px 0 8px 12px',\n },\n ],\n icon: {\n color: semanticColors[iconColor[messageBarType]],\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n color: 'WindowText',\n },\n },\n },\n text: [\n classNames.text,\n {\n minWidth: 0,\n display: 'flex',\n flexGrow: 1,\n margin: 8,\n ...fonts.small,\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n !onDismiss && {\n marginRight: 12,\n },\n ],\n innerText: [\n classNames.innerText,\n {\n lineHeight: 16,\n selectors: {\n '& span a': {\n paddingLeft: 4,\n },\n },\n },\n truncated && {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n !isMultiline && {\n // In high contrast this causes the top and bottom of links' focus outline to be clipped\n // (not sure of a good way around that while still maintaining text clipping)\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n !isMultiline &&\n !truncated && {\n selectors: {\n [SmallScreenSelector]: {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n },\n },\n expandSingleLine && {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n ],\n dismissSingleLine: classNames.dismissSingleLine,\n expandSingleLine: classNames.expandSingleLine,\n dismissal: [classNames.dismissal, dismissalAndExpandStyle],\n expand: [classNames.expand, dismissalAndExpandStyle],\n actions: [\n isMultiline ? classNames.actions : classNames.actionsSingleline,\n {\n display: 'flex',\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n flexDirection: 'row-reverse',\n alignItems: 'center',\n margin: '0 12px 0 8px',\n selectors: {\n '& button:nth-child(n+2)': {\n marginLeft: 8,\n },\n },\n },\n isMultiline && {\n marginBottom: 8,\n },\n onDismiss &&\n !isMultiline && {\n marginRight: 0,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { MessageBarBase } from './MessageBar.base';\nimport { getStyles } from './MessageBar.styles';\nimport { IMessageBarProps, IMessageBarStyleProps, IMessageBarStyles } from './MessageBar.types';\n\nexport const MessageBar: React.FunctionComponent<IMessageBarProps> = styled<\n IMessageBarProps,\n IMessageBarStyleProps,\n IMessageBarStyles\n>(MessageBarBase, getStyles, undefined, {\n scope: 'MessageBar',\n});\n","import { IButtonStyles } from '../Button.types';\nimport { ITheme, concatStyleSets, FontWeights } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\n\nimport { primaryStyles, standardStyles } from '../ButtonThemes';\n\nconst DEFAULT_BUTTON_HEIGHT = '32px';\nconst DEFAULT_BUTTON_MIN_WIDTH = '80px';\n\nexport const getStyles = memoizeFunction(\n (theme: ITheme, customStyles?: IButtonStyles, primary?: boolean): IButtonStyles => {\n const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n const splitButtonStyles: IButtonStyles = getSplitButtonStyles(theme);\n const defaultButtonStyles: IButtonStyles = {\n root: {\n minWidth: DEFAULT_BUTTON_MIN_WIDTH,\n height: DEFAULT_BUTTON_HEIGHT,\n },\n label: {\n fontWeight: FontWeights.semibold,\n },\n };\n\n return concatStyleSets(\n baseButtonStyles,\n defaultButtonStyles,\n primary ? primaryStyles(theme) : standardStyles(theme),\n splitButtonStyles,\n customStyles,\n )!;\n },\n);\n","import { IButtonStyles } from './Button.types';\nimport { ITheme, HighContrastSelector, IRawStyle, getHighContrastNoAdjustStyle } from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\n\nconst splitButtonDividerBaseStyles = (): IRawStyle => {\n return {\n position: 'absolute',\n width: 1,\n right: 31,\n top: 8,\n bottom: 8,\n };\n};\n\nexport function standardStyles(theme: ITheme): IButtonStyles {\n const { semanticColors: s, palette: p } = theme;\n\n const buttonBackground = s.buttonBackground;\n const buttonBackgroundPressed = s.buttonBackgroundPressed;\n const buttonBackgroundHovered = s.buttonBackgroundHovered;\n const buttonBackgroundDisabled = s.buttonBackgroundDisabled;\n\n const buttonText = s.buttonText;\n const buttonTextHovered = s.buttonTextHovered;\n const buttonTextDisabled = s.buttonTextDisabled;\n const buttonTextChecked = s.buttonTextChecked;\n const buttonTextCheckedHovered = s.buttonTextCheckedHovered;\n\n return {\n root: {\n backgroundColor: buttonBackground,\n color: buttonText,\n },\n\n rootHovered: {\n backgroundColor: buttonBackgroundHovered,\n color: buttonTextHovered,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n color: 'Highlight',\n },\n },\n },\n\n rootPressed: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextChecked,\n },\n\n rootExpanded: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextChecked,\n },\n\n rootChecked: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextChecked,\n },\n\n rootCheckedHovered: {\n backgroundColor: buttonBackgroundPressed,\n color: buttonTextCheckedHovered,\n },\n\n rootDisabled: {\n color: buttonTextDisabled,\n backgroundColor: buttonBackgroundDisabled,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n\n // Split button styles\n splitButtonContainer: {\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n },\n\n splitButtonMenuButton: {\n color: p.white,\n backgroundColor: 'transparent',\n selectors: {\n ':hover': {\n backgroundColor: p.neutralLight,\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n },\n },\n\n splitButtonMenuButtonDisabled: {\n backgroundColor: s.buttonBackgroundDisabled,\n selectors: {\n ':hover': {\n backgroundColor: s.buttonBackgroundDisabled,\n },\n },\n },\n\n splitButtonDivider: {\n ...splitButtonDividerBaseStyles(),\n backgroundColor: p.neutralTertiaryAlt,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n\n splitButtonDividerDisabled: {\n backgroundColor: theme.palette.neutralTertiaryAlt,\n },\n\n splitButtonMenuButtonChecked: {\n backgroundColor: p.neutralQuaternaryAlt,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n },\n },\n\n splitButtonMenuButtonExpanded: {\n backgroundColor: p.neutralQuaternaryAlt,\n selectors: {\n ':hover': {\n backgroundColor: p.neutralQuaternaryAlt,\n },\n },\n },\n\n splitButtonMenuIcon: {\n color: s.buttonText,\n },\n\n splitButtonMenuIconDisabled: {\n color: s.buttonTextDisabled,\n },\n };\n}\n\nexport function primaryStyles(theme: ITheme): IButtonStyles {\n const { palette: p, semanticColors: s } = theme;\n\n return {\n root: {\n backgroundColor: s.primaryButtonBackground,\n border: `1px solid ${s.primaryButtonBackground}`,\n color: s.primaryButtonText,\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n borderColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n [`.${IsFocusVisibleClassName} &:focus`]: {\n selectors: {\n ':after': {\n border: `none`,\n outlineColor: p.white,\n },\n },\n },\n },\n },\n\n rootHovered: {\n backgroundColor: s.primaryButtonBackgroundHovered,\n border: `1px solid ${s.primaryButtonBackgroundHovered}`,\n color: s.primaryButtonTextHovered,\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n },\n },\n },\n\n rootPressed: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n border: `1px solid ${s.primaryButtonBackgroundPressed}`,\n color: s.primaryButtonTextPressed,\n selectors: {\n [HighContrastSelector]: {\n color: 'Window',\n backgroundColor: 'WindowText',\n borderColor: 'WindowText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n\n rootExpanded: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n color: s.primaryButtonTextPressed,\n },\n\n rootChecked: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n color: s.primaryButtonTextPressed,\n },\n\n rootCheckedHovered: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n color: s.primaryButtonTextPressed,\n },\n\n rootDisabled: {\n color: s.primaryButtonTextDisabled,\n backgroundColor: s.primaryButtonBackgroundDisabled,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n borderColor: 'GrayText',\n backgroundColor: 'Window',\n },\n },\n },\n\n // Split button styles\n splitButtonContainer: {\n selectors: {\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n },\n\n splitButtonDivider: {\n ...splitButtonDividerBaseStyles(),\n backgroundColor: p.white,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n },\n },\n },\n\n splitButtonMenuButton: {\n backgroundColor: s.primaryButtonBackground,\n color: s.primaryButtonText,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundHovered,\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n },\n },\n\n splitButtonMenuButtonDisabled: {\n backgroundColor: s.primaryButtonBackgroundDisabled,\n selectors: {\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundDisabled,\n },\n },\n },\n\n splitButtonMenuButtonChecked: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n selectors: {\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundPressed,\n },\n },\n },\n\n splitButtonMenuButtonExpanded: {\n backgroundColor: s.primaryButtonBackgroundPressed,\n selectors: {\n ':hover': {\n backgroundColor: s.primaryButtonBackgroundPressed,\n },\n },\n },\n\n splitButtonMenuIcon: {\n color: s.primaryButtonText,\n },\n\n splitButtonMenuIconDisabled: {\n color: p.neutralTertiary,\n\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n };\n}\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { IButtonProps } from '../Button.types';\nimport { getStyles } from './DefaultButton.styles';\n\n/**\n * {@docCategory Button}\n */\n@customizable('DefaultButton', ['theme', 'styles'], true)\nexport class DefaultButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n const { primary = false, styles, theme } = this.props;\n\n return (\n <BaseButton\n {...this.props}\n variantClassName={primary ? 'ms-Button--primary' : 'ms-Button--default'}\n styles={getStyles(theme!, styles, primary)}\n onRenderDescription={nullRender}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { DefaultButton } from '../DefaultButton/DefaultButton';\nimport { IButtonProps } from '../Button.types';\n\n/**\n * {@docCategory Button}\n */\n@customizable('PrimaryButton', ['theme', 'styles'], true)\nexport class PrimaryButton extends React.Component<IButtonProps, {}> {\n public render(): JSX.Element {\n return <DefaultButton {...this.props} primary={true} onRenderDescription={nullRender} />;\n }\n}\n","export const isDate = d => d instanceof Date;\nexport const isEmpty = o => Object.keys(o).length === 0;\nexport const isObject = o => o != null && typeof o === 'object';\nexport const hasOwnProperty = (o, ...args) => Object.prototype.hasOwnProperty.call(o, ...args)\nexport const isEmptyObject = (o) => isObject(o) && isEmpty(o);\n","import { isDate, isEmptyObject, isObject, hasOwnProperty } from './utils.js';\n\nconst diff = (lhs, rhs) => {\n if (lhs === rhs) return {}; // equal return no diff\n\n if (!isObject(lhs) || !isObject(rhs)) return rhs; // return updated rhs\n\n const l = lhs;\n const r = rhs;\n\n const deletedValues = Object.keys(l).reduce((acc, key) => {\n if (!hasOwnProperty(r, key)) {\n acc[key] = undefined;\n \n }\n\n return acc;\n }, {});\n\n if (isDate(l) || isDate(r)) {\n if (l.valueOf() == r.valueOf()) return {};\n return r;\n }\n\n return Object.keys(r).reduce((acc, key) => {\n if (!hasOwnProperty(l, key)){\n acc[key] = r[key]; // return added r key\n return acc;\n } \n\n const difference = diff(l[key], r[key]);\n\n // If the difference is empty, and the lhs is an empty object or the rhs is not an empty object\n if (isEmptyObject(difference) && !isDate(difference) && (isEmptyObject(l[key]) || !isEmptyObject(r[key])))\n return acc; // return no diff\n\n acc[key] = difference // return updated key\n return acc; // return updated key\n }, deletedValues);\n};\n\nexport default diff;\n","import React from \"react\";\nimport { CustomizationEntry, defaultWebchatOptions, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\nimport { connect } from \"react-redux\";\nimport { actionTypes, genericSingleAction } from \"../../Redux/actions\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { TextField } from 'office-ui-fabric-react/lib/TextField';\nimport {\n MessageBar,\n MessageBarType,\n\n} from 'office-ui-fabric-react';\nimport { PrimaryButton, DefaultButton } from 'office-ui-fabric-react';\nimport { mergeStyleSets } from '@uifabric/merge-styles';\nimport { diff } from 'deep-object-diff';\nimport { customizationEntries } from \"../constants/customizationEntries\";\nimport { reInitialize } from \"../../..\";\n\n////////////////// Styling //////////////////\nconst classes = mergeStyleSets({\n resetButtonClassName: {\n float: 'right',\n marginTop: '20px',\n height: 35\n },\n copyPasteButtonClassName: {\n marginTop: '20px',\n marginRight: '20px'\n },\n listItem :{\n },\n errors: {\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n maxHeight: '60px',\n paddingTop: '5px',\n },\n textField: {\n '.ms-TextField-fieldGroup': {\n border: 'none',\n ':hover': {\n border: `1px solid #70B244`,\n borderRadius: 4\n },\n '::after': {\n border: 'none'\n }\n },\n textarea: {\n resize: 'none',\n borderRadius: 4,\n border: '1px solid #B2B2B2',\n }\n },\n '.ms-TextField-fieldGroup': {\n border: 'none',\n \n '.ms-TextField-prefix': {\n borderRadius: 4\n }\n // border: '1px solid red',\n },\n});\n\n////////////////// WebChatJsonEditor //////////////////\ninterface StateProps {\n currentStyleOptions: Partial<WebchatOptions>;\n jsonIsInvalid: boolean;\n customizationEntries: CustomizationEntry[];\n}\n\ninterface DispatchProps {\n updateStyleOptions: (styleOptions: WebchatOptions) => void,\n updateRootStateVariable: (stateVariableName: string, value: any) => void\n}\n\ninterface Props {\n onSuccess: () => any\n}\n\ninterface LocalState {\n textValue: string,\n uniqueErrors: Set<String>,\n\n}\n\ntype PropsType = StateProps & DispatchProps & Props;\n\nexport class WebChatJsonEditor extends React.Component<PropsType, LocalState> {\n constructor(props: PropsType) {\n super(props);\n this.state = ({\n textValue: JSON.stringify(this.props.currentStyleOptions, null, 4),\n uniqueErrors: new Set(),\n })\n }\n\n private onJsonChange = (event: any, newJson?: string) => {\n if (newJson) {\n this.setState({ textValue: newJson });\n var newStyleOptions: WebchatOptions\n try {\n newStyleOptions = JSON.parse(newJson);\n let invalidAttributesInJson = this.validateJSON(newStyleOptions);\n if (!invalidAttributesInJson) {\n this.props.updateRootStateVariable('webchatOptions', newStyleOptions);\n }\n this.props.updateRootStateVariable('jsonIsInvalid', false);\n }\n catch {\n this.props.updateRootStateVariable('jsonIsInvalid', true);\n }\n }\n }\n\n private renderErrorBanner = () => {\n if (this.props.jsonIsInvalid) {\n return (\n <MessageBar\n messageBarType={MessageBarType.error}\n isMultiline={false}\n >\n Invalid Json!\n </MessageBar>)\n }\n }\n\n private resetToDefault = (event: any) => {\n // eslint-disable-next-line no-restricted-globals\n confirm('Are you sure? All current customizations will revert to previous save!');\n this.state.uniqueErrors.clear();\n this.setState({ \n textValue: JSON.stringify({}, null, 4),\n uniqueErrors: this.state.uniqueErrors,\n });\n this.props.updateRootStateVariable('jsonIsInvalid', false);\n this.props.updateRootStateVariable('webchatOptions', defaultWebchatOptions());\n\n reInitialize();\n }\n\n private removeError = (index: number) => {\n const { uniqueErrors } = this.state;\n uniqueErrors.delete(customizationEntries[index].id)\n this.setState({\n uniqueErrors: uniqueErrors\n })\n return true;\n }\n\n private addError = (index: number) => {\n const { uniqueErrors } = this.state;\n if (!uniqueErrors.has(customizationEntries[index].id)) {\n var addNewError = uniqueErrors.add(customizationEntries[index].id)\n this.setState({\n uniqueErrors: addNewError,\n })\n }\n return false;\n }\n\n private checkColor = (id: string, index: number) => {\n if ((/^#([0-9A-F]{3}){1,2}$/i).test(`${id}`)) {\n return this.removeError(index);\n } else {\n return this.addError(index)\n }\n }\n\n private checkRGBA = (id: string, index: number) => {\n if ((/rgba?\\((\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*)((?:,\\s*[0-9.]*\\s*)?)\\)/g).test(id)) {\n return this.removeError(index);\n } else {\n return this.addError(index)\n }\n }\n\n private checkInt = (id: number, index: number) => {\n if (typeof id === 'number') {\n return this.removeError(index);\n } else {\n return this.addError(index)\n }\n }\n\n private checkBoolean = (id: string, index: number) => {\n if (typeof id === 'boolean') {\n return this.removeError(index);\n } else {\n return this.addError(index)\n }\n }\n\n private checkPercentage = (id: string, index: number) => {\n if ((/^[0]*?(?<Percentage>[1-9][0-9]?|100)%?$/i).test(id)) {\n return this.removeError(index);\n } else {\n return this.addError(index)\n }\n }\n //TODO: complete dropdown validation\n\n checkDropDown = (id: string, index: number) => {\n console.log(id)\n }\n\n //TODO: complete default validation\n\n checkDefault = (id: string, index: number) => {\n console.log(id)\n\n }\n\n private validateJSON = (newJson: any): boolean => {\n let invalidAttributesInJson = false;\n this.props.customizationEntries.map((entry, index) => {\n switch (entry.uiSelectorType) {\n case 'colorSelector':\n if (this.checkColor(newJson[entry.id], index)){\n return true;\n } else {\n invalidAttributesInJson = true;\n return false;\n }\n case 'booleanSelector':\n if (this.checkBoolean(newJson[entry.id], index)){\n return true;\n } else {\n invalidAttributesInJson = true;\n return false;\n }\n case 'rgbaSelector':\n if (this.checkRGBA(newJson[entry.id], index)){\n return true;\n } else {\n invalidAttributesInJson = true;\n return false;\n }\n case 'integerSelector':\n if (this.checkInt(newJson[entry.id], index)){\n return true;\n } else {\n invalidAttributesInJson = true;\n return false;\n }\n case 'percentageSelector':\n if (this.checkPercentage(newJson[entry.id], index)){\n return true;\n } else {\n invalidAttributesInJson = true;\n return false;\n }\n // return true;\n case 'defaultSelector':\n // return this.checkDefault(newJson[entry.id], index);\n return true;\n case 'dropDownSelector':\n // return this.checkDropDown(newJson[entry.id], index);\n return true;\n default:\n return true;\n }\n });\n return invalidAttributesInJson;\n\n }\n\n render() {\n let newArr = Array.from(this.state.uniqueErrors)\n return (\n <div>\n {this.renderErrorBanner()}\n {\n newArr.length ?\n <MessageBar\n messageBarType={MessageBarType.error}\n isMultiline={true}\n > \n The following id's may have incorrect values. Please correct before proceeding\n <div className={classes.errors}>\n {newArr.map(error => (<li className={classes.listItem}>{error}</li>))}\n </div>\n </MessageBar>\n :\n null\n }\n <TextField className={classes.textField} readOnly={true} onChange={(event: any, newValue?: string) => this.onJsonChange(event, newValue)} label=\"\" multiline rows={20} value={this.state.textValue} />\n <DefaultButton className={`btn btn-secondary ${classes.copyPasteButtonClassName}`} onClick={() => { this.props.onSuccess && this.props.onSuccess();navigator.clipboard.writeText(this.state.textValue);}} text=\"Copy\" />\n <DefaultButton className={`btn btn-secondary ${classes.copyPasteButtonClassName}`}\n onClick={async () => {\n try {\n const newText = await navigator.clipboard.readText();\n const pastedStyleOptions = JSON.parse(newText);\n this.props.updateStyleOptions(pastedStyleOptions);\n this.setState((state) => ({ ...state, textValue: newText }));\n this.props.onSuccess && this.props.onSuccess();\n } catch(ex) {\n\n }\n \n }\n }\n text=\"Paste\" />\n\n <PrimaryButton className={`btn btn-primary ${classes.resetButtonClassName}`} onClick={(event: any) => { this.resetToDefault(event) }} text=\"Reset to previous\" />\n <br/>\n <br/>\n\n <strong> When you paste the code, don't forget to manually click save in order for the changes to take effect! </strong>\n \n </div>\n );\n }\n}\n\n////////////////// Redux //////////////////\n\nexport const transformWebchatOptions = (webchatOptions: any) => {\n delete webchatOptions.languages;\n return webchatOptions;\n}\nconst mapStateToProps = (state: IAppState, ownProps: Props): StateProps => ({\n currentStyleOptions: { ...diff(defaultWebchatOptions(), transformWebchatOptions(state.webchatOptions)), customDruidStyleSet: state.webchatOptions.customDruidStyleSet },\n jsonIsInvalid: state.jsonIsInvalid,\n customizationEntries: state.customizationEntries,\n\n\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<AnyAction>): DispatchProps => ({\n updateStyleOptions: (webchatOptions: WebchatOptions) => {\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_STYLE_OPTIONS, webchatOptions ));\n },\n updateRootStateVariable: (stateVariableName: string, value: any) => {\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_ROOT_WEBCHAT_STATE_VARIABlE, { propertyName: stateVariableName, value: value }));\n }\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(WebChatJsonEditor);\n","import React, { Fragment } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { IAppState } from \"../../Redux/reduxState\";\nimport { genericSingleAction, actionTypes } from \"../../Redux/actions\";\nimport { Category } from \"../../utilities/types\";\nimport CSS from 'csstype';\n\nimport { Icon, mergeStyles } from \"@fluentui/react\";\n\nconst categoryHeaderContainer = mergeStyles(\n { \n cursor: 'pointer',\n display: 'flex',\n aligntItems: 'center',\n }\n);\n\ninterface CategoryLinkProps {\n name: string;\n activeCategory: Category;\n updateRootStateVariable: (stateVariableName: string, value: any) => void\n}\n\nexport const CategoryLink = (props: CategoryLinkProps) => {\n const {updateRootStateVariable, name, activeCategory } = props;\n\n const getCategory = (stringName: string) : Category => {\n // finds corresponding category entry (as tuple) from Category enum \n const categoryEntry: [string, Category] | undefined = Object.entries(Category).find(x => x[0] === stringName);\n\n const category: Category = categoryEntry![1];\n return category;\n };\n\n const displayName: Category = getCategory(name);\n const conditionalCategoryStyle: CSS.Properties = displayName === activeCategory\n ? {\n fontWeight: \"bolder\",\n color: '#70B244'\n } // if category is active\n : {\n\n };\n \n const categoryStyle: CSS.Properties = {\n display: 'flex',\n alignItems: 'center',\n fontSize: '15px',\n ...conditionalCategoryStyle,\n };\n\n const conditionalIconStyle: CSS.Properties = displayName === activeCategory\n ? {}\n : {opacity: '0'};\n\n \n const iconStyle: CSS.Properties = {\n fontSize: '0.75rem',\n display: 'flex',\n alignItems: 'center',\n ...conditionalIconStyle,\n cursor: 'pointer'\n };\n return (\n <div\n onClick={() => {updateRootStateVariable('activeCategory', displayName)}}\n className={categoryHeaderContainer}\n >\n {/* <Icon style={iconStyle} iconName=\"ChevronRightSmall\" /> */}\n {/* <Icon style={iconStyle} iconName=\"ChevronRightSmall\" /> */}\n \n <span style={categoryStyle}>{displayName}</span>\n { name === 'Search' && <svg style={{marginLeft: 10, alignSelf: 'center'}} stroke=\"currentColor\" fill=\"currentColor\" strokeWidth=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"></path></svg>}\n\n </div>\n );\n};\n","import React, { Fragment, useMemo } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { CustomizationEntry, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\nimport { genericSingleAction, actionTypes } from \"../../Redux/actions\";\nimport { UISelectorType } from \"../../utilities/types\";\nimport { TextField, MaskedTextField, } from 'office-ui-fabric-react/lib/TextField';\n\n\ninterface DefaultSelectorProps {\n id: string;\n value: any;\n multiline?: boolean;\n onChange: (styleElementName: string, value: any) => void;\n}\n\nexport const DefaultSelector = (props: DefaultSelectorProps) => {\n const { id, value, onChange } = props;\n\n const parsedValue = useMemo(() => {\n if(value && typeof value === \"object\") {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return value;\n }\n } \n return value;\n }, [value]);\n return (\n <Fragment>\n <TextField multiline={props.multiline} defaultValue={parsedValue} onBlur={(e: any) => {\n let newValue = e.target.value;\n if(newValue && /^\\d+$/.test(newValue)) {\n newValue = parseInt(newValue);\n }\n onChange(id, newValue);\n }}/>\n </Fragment>\n );\n}","import * as React from 'react';\nimport {\n getId,\n classNamesFunction,\n mergeAriaAttributeValues,\n initializeComponentRef,\n warnMutuallyExclusive,\n FocusRects,\n} from '../../Utilities';\nimport { Icon } from '../../Icon';\nimport { ICheckbox, ICheckboxProps, ICheckboxStyleProps, ICheckboxStyles } from './Checkbox.types';\nimport { KeytipData } from '../../KeytipData';\n\nexport interface ICheckboxState {\n /** Is true when Uncontrolled control is checked. */\n isChecked?: boolean;\n isIndeterminate?: boolean;\n}\n\nconst getClassNames = classNamesFunction<ICheckboxStyleProps, ICheckboxStyles>();\n\nexport class CheckboxBase extends React.Component<ICheckboxProps, ICheckboxState> implements ICheckbox {\n public static defaultProps: ICheckboxProps = {\n boxSide: 'start',\n };\n\n private _checkBox = React.createRef<HTMLInputElement>();\n private _id: string;\n private _classNames: { [key in keyof ICheckboxStyles]: string };\n\n public static getDerivedStateFromProps(\n nextProps: Readonly<ICheckboxProps>,\n prevState: Readonly<ICheckboxState>,\n ): ICheckboxState | null {\n const stateUpdate: Partial<ICheckboxState> = {};\n if (nextProps.indeterminate !== undefined) {\n stateUpdate.isIndeterminate = !!nextProps.indeterminate;\n }\n if (nextProps.checked !== undefined) {\n stateUpdate.isChecked = !!nextProps.checked;\n }\n return Object.keys(stateUpdate).length ? stateUpdate : null;\n }\n\n /**\n * Initialize a new instance of the Checkbox\n * @param props - Props for the component\n * @param context - Context or initial state for the base component.\n */\n constructor(props: ICheckboxProps, context?: any) {\n super(props, context);\n\n initializeComponentRef(this);\n\n if (process.env.NODE_ENV !== 'production') {\n warnMutuallyExclusive('Checkbox', props, {\n checked: 'defaultChecked',\n indeterminate: 'defaultIndeterminate',\n });\n }\n\n this._id = this.props.id || getId('checkbox-');\n this.state = {\n isChecked: !!(props.checked !== undefined ? props.checked : props.defaultChecked),\n isIndeterminate: !!(props.indeterminate !== undefined ? props.indeterminate : props.defaultIndeterminate),\n };\n }\n\n /**\n * Render the Checkbox based on passed props\n */\n public render(): JSX.Element {\n const {\n className,\n disabled,\n boxSide,\n theme,\n styles,\n onRenderLabel = this._onRenderLabel,\n keytipProps,\n } = this.props;\n\n const { isChecked, isIndeterminate } = this.state;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n indeterminate: isIndeterminate,\n checked: isChecked,\n reversed: boxSide !== 'start',\n isUsingCustomLabelRender: onRenderLabel !== this._onRenderLabel,\n });\n\n if (keytipProps) {\n return (\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => this._renderContent(isChecked, isIndeterminate, keytipAttributes)}\n </KeytipData>\n );\n }\n\n return this._renderContent(isChecked, isIndeterminate);\n }\n\n public get indeterminate(): boolean {\n return !!this.state.isIndeterminate;\n }\n\n public get checked(): boolean {\n return !!this.state.isChecked;\n }\n\n public focus(): void {\n if (this._checkBox.current) {\n this._checkBox.current.focus();\n }\n }\n\n private _renderContent = (\n checked: boolean | undefined,\n indeterminate: boolean | undefined,\n keytipAttributes: any = {},\n ): JSX.Element => {\n const {\n disabled,\n inputProps,\n name,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n onRenderLabel = this._onRenderLabel,\n checkmarkIconProps,\n ariaPositionInSet,\n ariaSetSize,\n title,\n label,\n } = this.props;\n\n return (\n <div className={this._classNames.root} title={title}>\n <FocusRects />\n <input\n type=\"checkbox\"\n {...inputProps}\n data-ktp-execute-target={keytipAttributes['data-ktp-execute-target']}\n checked={checked}\n disabled={disabled}\n className={this._classNames.input}\n ref={this._checkBox}\n name={name}\n id={this._id}\n title={title}\n onChange={this._onChange}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n aria-disabled={disabled}\n aria-label={ariaLabel || label}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={mergeAriaAttributeValues(ariaDescribedBy, keytipAttributes['aria-describedby'])}\n aria-posinset={ariaPositionInSet}\n aria-setsize={ariaSetSize}\n aria-checked={indeterminate ? 'mixed' : checked ? 'true' : 'false'}\n />\n <label className={this._classNames.label} htmlFor={this._id}>\n <div className={this._classNames.checkbox} data-ktp-target={keytipAttributes['data-ktp-target']}>\n <Icon iconName=\"CheckMark\" {...checkmarkIconProps} className={this._classNames.checkmark} />\n </div>\n {onRenderLabel(this.props, this._onRenderLabel)}\n </label>\n </div>\n );\n };\n\n private _onFocus = (ev: React.FocusEvent<HTMLElement>): void => {\n const { inputProps } = this.props;\n\n if (inputProps && inputProps.onFocus) {\n inputProps.onFocus(ev);\n }\n };\n\n private _onBlur = (ev: React.FocusEvent<HTMLElement>): void => {\n const { inputProps } = this.props;\n\n if (inputProps && inputProps.onBlur) {\n inputProps.onBlur(ev);\n }\n };\n\n private _onChange = (ev: React.FormEvent<HTMLElement>): void => {\n const { onChange } = this.props;\n const { isChecked, isIndeterminate } = this.state;\n\n if (!isIndeterminate) {\n if (onChange) {\n onChange(ev, !isChecked);\n }\n if (this.props.checked === undefined) {\n this.setState({ isChecked: !isChecked });\n }\n } else {\n // If indeterminate, clicking the checkbox *only* removes the indeterminate state (or if\n // controlled, lets the consumer know to change it by calling onChange). It doesn't\n // change the checked state.\n if (onChange) {\n onChange(ev, isChecked);\n }\n if (this.props.indeterminate === undefined) {\n this.setState({ isIndeterminate: false });\n }\n }\n };\n\n private _onRenderLabel = (props: ICheckboxProps): JSX.Element | null => {\n const { label, title } = props;\n\n return label ? (\n <span aria-hidden=\"true\" className={this._classNames.text} title={title}>\n {label}\n </span>\n ) : null;\n };\n}\n","import { ICheckboxStyleProps, ICheckboxStyles } from './Checkbox.types';\r\nimport { HighContrastSelector, getGlobalClassNames, IStyle, getHighContrastNoAdjustStyle } from '../../Styling';\r\nimport { IsFocusVisibleClassName } from '../../Utilities';\r\n\r\nconst GlobalClassNames = {\r\n root: 'ms-Checkbox',\r\n label: 'ms-Checkbox-label',\r\n checkbox: 'ms-Checkbox-checkbox',\r\n checkmark: 'ms-Checkbox-checkmark',\r\n text: 'ms-Checkbox-text',\r\n};\r\n\r\nconst MS_CHECKBOX_LABEL_SIZE = '20px';\r\nconst MS_CHECKBOX_TRANSITION_DURATION = '200ms';\r\nconst MS_CHECKBOX_TRANSITION_TIMING = 'cubic-bezier(.4, 0, .23, 1)';\r\n\r\nexport const getStyles = (props: ICheckboxStyleProps): ICheckboxStyles => {\r\n const { className, theme, reversed, checked, disabled, isUsingCustomLabelRender, indeterminate } = props;\r\n const { semanticColors, effects, palette, fonts } = theme;\r\n\r\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\r\n\r\n const checkmarkFontColor = semanticColors.inputForegroundChecked;\r\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.inputBorder\r\n const checkmarkFontColorHovered = palette.neutralSecondary;\r\n // TODO: after updating the semanticColors slots mapping this needs to be semanticColors.smallInputBorder\r\n const checkboxBorderColor = palette.neutralPrimary;\r\n const checkboxBorderIndeterminateColor = semanticColors.inputBackgroundChecked;\r\n const checkboxBorderColorChecked = semanticColors.inputBackgroundChecked;\r\n const checkboxBorderColorDisabled = semanticColors.disabledBodySubtext;\r\n const checkboxBorderHoveredColor = semanticColors.inputBorderHovered;\r\n const checkboxBorderIndeterminateHoveredColor = semanticColors.inputBackgroundCheckedHovered;\r\n const checkboxBackgroundChecked = semanticColors.inputBackgroundChecked;\r\n // TODO: after updating the semanticColors slots mapping the following 2 tokens need to be\r\n // semanticColors.inputBackgroundCheckedHovered\r\n const checkboxBackgroundCheckedHovered = semanticColors.inputBackgroundCheckedHovered;\r\n const checkboxBorderColorCheckedHovered = semanticColors.inputBackgroundCheckedHovered;\r\n const checkboxHoveredTextColor = semanticColors.inputTextHovered;\r\n const checkboxBackgroundDisabledChecked = semanticColors.disabledBodySubtext;\r\n const checkboxTextColor = semanticColors.bodyText;\r\n const checkboxTextColorDisabled = semanticColors.disabledText;\r\n\r\n const indeterminateDotStyles: IStyle = [\r\n {\r\n content: '\"\"',\r\n borderRadius: effects.roundedCorner2,\r\n position: 'absolute',\r\n width: 10,\r\n height: 10,\r\n top: 4,\r\n left: 4,\r\n boxSizing: 'border-box',\r\n borderWidth: 5,\r\n borderStyle: 'solid',\r\n borderColor: disabled ? checkboxBorderColorDisabled : checkboxBorderIndeterminateColor,\r\n transitionProperty: 'border-width, border, border-color',\r\n transitionDuration: MS_CHECKBOX_TRANSITION_DURATION,\r\n transitionTimingFunction: MS_CHECKBOX_TRANSITION_TIMING,\r\n [HighContrastSelector]: {\r\n borderColor: 'WindowText',\r\n },\r\n },\r\n ];\r\n\r\n return {\r\n root: [\r\n classNames.root,\r\n {\r\n position: 'relative',\r\n display: 'flex',\r\n },\r\n reversed && 'reversed',\r\n checked && 'is-checked',\r\n !disabled && 'is-enabled',\r\n disabled && 'is-disabled',\r\n !disabled && [\r\n !checked && {\r\n [`:hover .${classNames.checkbox}`]: {\r\n borderColor: checkboxBorderHoveredColor,\r\n [HighContrastSelector]: {\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n [`:focus .${classNames.checkbox}`]: { borderColor: checkboxBorderHoveredColor },\r\n [`:hover .${classNames.checkmark}`]: {\r\n color: checkmarkFontColorHovered,\r\n opacity: '1',\r\n [HighContrastSelector]: {\r\n color: 'Highlight',\r\n },\r\n },\r\n },\r\n checked &&\r\n !indeterminate && {\r\n [`:hover .${classNames.checkbox}`]: {\r\n background: checkboxBackgroundCheckedHovered,\r\n borderColor: checkboxBorderColorCheckedHovered,\r\n },\r\n [`:focus .${classNames.checkbox}`]: {\r\n background: checkboxBackgroundCheckedHovered,\r\n borderColor: checkboxBorderColorCheckedHovered,\r\n },\r\n [HighContrastSelector]: {\r\n [`:hover .${classNames.checkbox}`]: {\r\n background: 'Highlight',\r\n borderColor: 'Highlight',\r\n },\r\n [`:focus .${classNames.checkbox}`]: {\r\n background: 'Highlight',\r\n },\r\n [`:focus:hover .${classNames.checkbox}`]: {\r\n background: 'Highlight',\r\n },\r\n [`:focus:hover .${classNames.checkmark}`]: {\r\n color: 'Window',\r\n },\r\n [`:hover .${classNames.checkmark}`]: {\r\n color: 'Window',\r\n },\r\n },\r\n },\r\n indeterminate && {\r\n [`:hover .${classNames.checkbox}, :hover .${classNames.checkbox}:after`]: {\r\n borderColor: checkboxBorderIndeterminateHoveredColor,\r\n [HighContrastSelector]: {\r\n borderColor: 'WindowText',\r\n },\r\n },\r\n [`:focus .${classNames.checkbox}`]: {\r\n borderColor: checkboxBorderIndeterminateHoveredColor,\r\n },\r\n [`:hover .${classNames.checkmark}`]: {\r\n opacity: '0',\r\n },\r\n },\r\n {\r\n [`:hover .${classNames.text}, :focus .${classNames.text}`]: {\r\n color: checkboxHoveredTextColor,\r\n [HighContrastSelector]: {\r\n color: disabled ? 'GrayText' : 'WindowText',\r\n },\r\n },\r\n },\r\n ],\r\n className,\r\n ],\r\n input: {\r\n position: 'absolute',\r\n background: 'none',\r\n\r\n opacity: 0,\r\n [`.${IsFocusVisibleClassName} &:focus + label::before`]: {\r\n outline: '1px solid ' + theme.palette.neutralSecondary,\r\n outlineOffset: '2px',\r\n [HighContrastSelector]: {\r\n outline: '1px solid WindowText',\r\n },\r\n },\r\n },\r\n label: [\r\n classNames.label,\r\n theme.fonts.medium,\r\n {\r\n display: 'flex',\r\n alignItems: isUsingCustomLabelRender ? 'center' : 'flex-start',\r\n cursor: disabled ? 'default' : 'pointer',\r\n position: 'relative',\r\n userSelect: 'none',\r\n },\r\n reversed && {\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'flex-end',\r\n },\r\n {\r\n '&::before': {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n content: '\"\"',\r\n pointerEvents: 'none',\r\n },\r\n },\r\n ],\r\n checkbox: [\r\n classNames.checkbox,\r\n {\r\n position: 'relative',\r\n display: 'flex',\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: MS_CHECKBOX_LABEL_SIZE,\r\n width: MS_CHECKBOX_LABEL_SIZE,\r\n border: `1px solid ${checkboxBorderColor}`,\r\n borderRadius: effects.roundedCorner2,\r\n boxSizing: 'border-box',\r\n transitionProperty: 'background, border, border-color',\r\n transitionDuration: MS_CHECKBOX_TRANSITION_DURATION,\r\n transitionTimingFunction: MS_CHECKBOX_TRANSITION_TIMING,\r\n\r\n /* in case the icon is bigger than the box */\r\n overflow: 'hidden',\r\n ':after': indeterminate ? indeterminateDotStyles : null,\r\n [HighContrastSelector]: {\r\n borderColor: 'WindowText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n indeterminate && {\r\n borderColor: checkboxBorderIndeterminateColor,\r\n },\r\n !reversed\r\n ? // This margin on the checkbox is for backwards compat. Notably it has the effect where a customRender\r\n // is used, there will be only a 4px margin from checkbox to label. The label by default would have\r\n // another 4px margin for a total of 8px margin between checkbox and label. We don't combine the two\r\n // (and move it into the text) to not incur a breaking change for everyone using custom render atm.\r\n {\r\n marginRight: 4,\r\n }\r\n : {\r\n marginLeft: 4,\r\n },\r\n !disabled &&\r\n !indeterminate &&\r\n checked && {\r\n background: checkboxBackgroundChecked,\r\n borderColor: checkboxBorderColorChecked,\r\n [HighContrastSelector]: {\r\n background: 'Highlight',\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n disabled && {\r\n borderColor: checkboxBorderColorDisabled,\r\n [HighContrastSelector]: {\r\n borderColor: 'GrayText',\r\n },\r\n },\r\n checked &&\r\n disabled && {\r\n background: checkboxBackgroundDisabledChecked,\r\n borderColor: checkboxBorderColorDisabled,\r\n [HighContrastSelector]: {\r\n background: 'Window',\r\n },\r\n },\r\n ],\r\n checkmark: [\r\n classNames.checkmark,\r\n {\r\n opacity: checked ? '1' : '0',\r\n color: checkmarkFontColor,\r\n [HighContrastSelector]: {\r\n color: disabled ? 'GrayText' : 'Window',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n ],\r\n text: [\r\n classNames.text,\r\n {\r\n color: disabled ? checkboxTextColorDisabled : checkboxTextColor,\r\n fontSize: fonts.medium.fontSize,\r\n lineHeight: '20px',\r\n [HighContrastSelector]: {\r\n color: disabled ? 'GrayText' : 'WindowText',\r\n ...getHighContrastNoAdjustStyle(),\r\n },\r\n },\r\n !reversed\r\n ? {\r\n marginLeft: 4,\r\n }\r\n : {\r\n marginRight: 4,\r\n },\r\n ],\r\n };\r\n};\r\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { CheckboxBase } from './Checkbox.base';\nimport { getStyles } from './Checkbox.styles';\nimport { ICheckboxProps, ICheckboxStyleProps, ICheckboxStyles } from './Checkbox.types';\n\nexport const Checkbox: React.FunctionComponent<ICheckboxProps> = styled<\n ICheckboxProps,\n ICheckboxStyleProps,\n ICheckboxStyles\n>(CheckboxBase, getStyles, undefined, { scope: 'Checkbox' });\n","import React, { Fragment } from \"react\";\nimport { Checkbox } from 'office-ui-fabric-react/lib/Checkbox';\n\ninterface BooleanSelectorProps {\n id: string;\n value: any;\n onChange: (styleElementName: string, value: any) => void;\n}\nexport const BooleanSelector = (props: BooleanSelectorProps) => {\n const { id, value, onChange } = props;\n return (\n <Fragment>\n <Checkbox value={value} checked={value} onChange={(e: any, newValue?: boolean) => {onChange(id, newValue)}}/>\n </Fragment>\n );\n}\n","import { Point } from './Point';\nimport { ISize } from './ISize';\n\n/**\n * Determines the distance between two points.\n *\n * @public\n */\n/* eslint-disable deprecation/deprecation */\nexport function getDistanceBetweenPoints(point1: Point, point2: Point): number {\n const left1 = point1.left || point1.x || 0;\n const top1 = point1.top || point1.y || 0;\n const left2 = point2.left || point2.x || 0;\n const top2 = point2.top || point2.y || 0;\n /* eslint-enable deprecation/deprecation */\n\n let distance = Math.sqrt(Math.pow(left1 - left2, 2) + Math.pow(top1 - top2, 2));\n\n return distance;\n}\n\n/**\n * The available fit modes. These should match the fit modes for CSS.\n */\nexport type FitMode = 'contain' | 'cover';\n\n/**\n * Options for fitting content sizes into bounding sizes.\n */\nexport interface IFitContentToBoundsOptions {\n /**\n * The size of the content to fit to the bounds.\n * The output will be proportional to this value.\n */\n contentSize: ISize;\n /**\n * The size of the bounds.\n */\n boundsSize: ISize;\n /**\n * The fit mode to apply, either 'contain' or 'cover'.\n */\n mode: FitMode;\n /**\n * An optional maximum scale factor to apply. The default is 1.\n * Use Infinity for an unbounded resize.\n */\n maxScale?: number;\n}\n\n/**\n * Produces a proportionally-scaled version of an input content size when fit to a bounding size.\n * Given a `contentSize` and a `boundsSize`, this function scales `contentSize` proportionally\n * using either `contain` or `cover` fit behaviors.\n * Use this function to pre-calculate the layout for the CSS `object-fit` and `background-fit` behaviors.\n * With `contain`, the output size must be the largest it can be while completely within the `boundsSize`.\n * With `cover`, the output size must be the smallest it can be while completely around the `boundsSize`.\n * By default, there is a `maxScale` value of 1, which prevents the `contentSize` from being scaled larger.\n *\n * @param options - the options for the bounds fit operation\n */\nexport function fitContentToBounds(options: IFitContentToBoundsOptions): ISize {\n const { contentSize, boundsSize, mode = 'contain', maxScale = 1 } = options;\n\n const contentAspectRatio = contentSize.width / contentSize.height;\n const boundsAspectRatio = boundsSize.width / boundsSize.height;\n\n let scale: number;\n\n if (mode === 'contain' ? contentAspectRatio > boundsAspectRatio : contentAspectRatio < boundsAspectRatio) {\n scale = boundsSize.width / contentSize.width;\n } else {\n scale = boundsSize.height / contentSize.height;\n }\n\n const finalScale = Math.min(maxScale, scale);\n\n return {\n width: contentSize.width * finalScale,\n height: contentSize.height * finalScale,\n };\n}\n\n/**\n * Calculates a number's precision based on the number of trailing\n * zeros if the number does not have a decimal indicated by a negative\n * precision. Otherwise, it calculates the number of digits after\n * the decimal point indicated by a positive precision.\n * @param value - the value to determine the precision of\n */\nexport function calculatePrecision(value: number | string): number {\n /**\n * Group 1:\n * [1-9]([0]+$) matches trailing zeros\n * Group 2:\n * \\.([0-9]*) matches all digits after a decimal point.\n */\n const groups = /[1-9]([0]+$)|\\.([0-9]*)/.exec(String(value));\n if (!groups) {\n return 0;\n }\n if (groups[1]) {\n return -groups[1].length;\n }\n if (groups[2]) {\n return groups[2].length;\n }\n return 0;\n}\n\n/**\n * Rounds a number to a certain level of precision. Accepts negative precision.\n * @param value - The value that is being rounded.\n * @param precision - The number of decimal places to round the number to\n */\nexport function precisionRound(value: number, precision: number, base: number = 10): number {\n const exp = Math.pow(base, precision);\n return Math.round(value * exp) / exp;\n}\n","import {\r\n IRawStyle,\r\n ITheme,\r\n concatStyleSets,\r\n HighContrastSelector,\r\n IconFontSizes,\r\n getInputFocusStyle,\r\n} from '../../Styling';\r\nimport { IButtonStyles } from '../../Button';\r\nimport { ISpinButtonStyles } from './SpinButton.types';\r\nimport { memoizeFunction } from '../../Utilities';\r\n\r\nconst ARROW_BUTTON_WIDTH = 23;\r\nconst ARROW_BUTTON_ICON_SIZE = 8;\r\nconst DEFAULT_HEIGHT = 32;\r\nconst DEFAULT_MIN_WIDTH = 86;\r\nconst LABEL_MARGIN = 10;\r\n\r\nconst _getDisabledStyles = memoizeFunction(\r\n (theme: ITheme): IRawStyle => {\r\n const { semanticColors } = theme;\r\n\r\n const SpinButtonTextColorDisabled = semanticColors.disabledText;\r\n const SpinButtonBackgroundColorDisabled = semanticColors.disabledBackground;\r\n\r\n return {\r\n backgroundColor: SpinButtonBackgroundColorDisabled,\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n color: SpinButtonTextColorDisabled,\r\n selectors: {\r\n ':after': {\r\n borderColor: SpinButtonBackgroundColorDisabled,\r\n },\r\n [HighContrastSelector]: {\r\n color: 'GrayText',\r\n },\r\n },\r\n };\r\n },\r\n);\r\n\r\nexport const getArrowButtonStyles = memoizeFunction(\r\n (theme: ITheme, isUpArrow: boolean, customSpecificArrowStyles?: Partial<IButtonStyles>): IButtonStyles => {\r\n const { palette, semanticColors, effects } = theme;\r\n\r\n // TODO: after updating the semanticColor slots all this need to be reevaluated.\r\n const ArrowButtonTextColor = palette.neutralSecondary;\r\n const ArrowButtonTextColorHovered = semanticColors.buttonText;\r\n const ArrowButtonTextColorPressed = semanticColors.buttonText;\r\n\r\n const ArrowButtonBackgroundHovered = semanticColors.buttonBackgroundHovered;\r\n const ArrowButtonBackgroundPressed = semanticColors.buttonBackgroundPressed;\r\n\r\n const defaultArrowButtonStyles: IButtonStyles = {\r\n root: {\r\n outline: 'none',\r\n display: 'block',\r\n height: '50%',\r\n width: ARROW_BUTTON_WIDTH,\r\n padding: 0,\r\n backgroundColor: 'transparent',\r\n textAlign: 'center',\r\n cursor: 'default',\r\n color: ArrowButtonTextColor,\r\n selectors: {\r\n '&.ms-DownButton': {\r\n borderRadius: `0 0 ${effects.roundedCorner2} 0`,\r\n },\r\n '&.ms-UpButton': {\r\n borderRadius: `0 ${effects.roundedCorner2} 0 0`,\r\n },\r\n },\r\n },\r\n rootHovered: {\r\n backgroundColor: ArrowButtonBackgroundHovered,\r\n color: ArrowButtonTextColorHovered,\r\n },\r\n rootChecked: {\r\n backgroundColor: ArrowButtonBackgroundPressed,\r\n color: ArrowButtonTextColorPressed,\r\n selectors: {\r\n [HighContrastSelector]: {\r\n backgroundColor: 'Highlight',\r\n color: 'HighlightText',\r\n },\r\n },\r\n },\r\n rootPressed: {\r\n backgroundColor: ArrowButtonBackgroundPressed,\r\n color: ArrowButtonTextColorPressed,\r\n selectors: {\r\n [HighContrastSelector]: {\r\n backgroundColor: 'Highlight',\r\n color: 'HighlightText',\r\n },\r\n },\r\n },\r\n rootDisabled: {\r\n opacity: 0.5,\r\n selectors: {\r\n [HighContrastSelector]: {\r\n color: 'GrayText',\r\n opacity: 1,\r\n },\r\n },\r\n },\r\n icon: {\r\n fontSize: ARROW_BUTTON_ICON_SIZE,\r\n marginTop: 0,\r\n marginRight: 0,\r\n marginBottom: 0,\r\n marginLeft: 0,\r\n },\r\n };\r\n\r\n // No specific styles needed as of now.\r\n const defaultUpArrowButtonStyles: Partial<IButtonStyles> = {};\r\n\r\n const defaultDownArrowButtonStyles: Partial<IButtonStyles> = {};\r\n\r\n return concatStyleSets(\r\n defaultArrowButtonStyles,\r\n isUpArrow ? defaultUpArrowButtonStyles : defaultDownArrowButtonStyles,\r\n customSpecificArrowStyles,\r\n ) as IButtonStyles;\r\n },\r\n);\r\n\r\nexport const getStyles = memoizeFunction(\r\n (theme: ITheme, customStyles?: Partial<ISpinButtonStyles>): ISpinButtonStyles => {\r\n const { palette, semanticColors, effects, fonts } = theme;\r\n\r\n const SpinButtonRootBorderColor = semanticColors.inputBorder;\r\n const SpinButtonRootBackgroundColor = semanticColors.inputBackground;\r\n const SpinButtonRootBorderColorHovered = semanticColors.inputBorderHovered;\r\n const SpinButtonRootBorderColorFocused = semanticColors.inputFocusBorderAlt;\r\n\r\n const SpinButtonInputTextColor = semanticColors.inputText;\r\n const SpinButtonInputTextColorSelected = palette.white;\r\n const SpinButtonInputBackgroundColorSelected = semanticColors.inputBackgroundChecked;\r\n\r\n const SpinButtonIconDisabledColor = semanticColors.disabledText;\r\n\r\n const defaultStyles: ISpinButtonStyles = {\r\n root: [\r\n fonts.medium,\r\n {\r\n outline: 'none',\r\n width: '100%',\r\n minWidth: DEFAULT_MIN_WIDTH,\r\n },\r\n ],\r\n labelWrapper: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n },\r\n labelWrapperStart: {\r\n height: DEFAULT_HEIGHT,\r\n float: 'left',\r\n marginRight: LABEL_MARGIN,\r\n },\r\n labelWrapperEnd: {\r\n height: DEFAULT_HEIGHT,\r\n float: 'right',\r\n marginLeft: LABEL_MARGIN,\r\n },\r\n labelWrapperTop: {\r\n // Due to the lineHeight set on the label (below), the height of the wrapper (contains icon+label)\r\n // ends up 1px taller than a standard label height, causing the vertical alignment to be off when\r\n // the SpinButton is displayed with the label on top next to other form fields.\r\n // Decrease the wrapper's effective height slightly to compensate.\r\n marginBottom: -1,\r\n },\r\n labelWrapperBottom: {},\r\n icon: {\r\n padding: '0 5px',\r\n fontSize: IconFontSizes.large,\r\n },\r\n iconDisabled: {\r\n color: SpinButtonIconDisabledColor,\r\n },\r\n label: {\r\n pointerEvents: 'none',\r\n // centering the label with the icon by forcing the exact same height as the icon.\r\n lineHeight: IconFontSizes.large,\r\n },\r\n labelDisabled: {},\r\n spinButtonWrapper: {\r\n display: 'flex',\r\n position: 'relative',\r\n boxSizing: 'border-box',\r\n height: DEFAULT_HEIGHT,\r\n minWidth: DEFAULT_MIN_WIDTH,\r\n selectors: {\r\n // setting border using pseudo-element here in order to prevent:\r\n // input and chevron buttons to overlap border under certain resolutions\r\n ':after': {\r\n pointerEvents: 'none',\r\n content: \"''\",\r\n position: 'absolute',\r\n left: 0,\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: SpinButtonRootBorderColor,\r\n borderRadius: effects.roundedCorner2,\r\n },\r\n },\r\n },\r\n spinButtonWrapperTopBottom: {\r\n width: '100%',\r\n },\r\n spinButtonWrapperHovered: {\r\n selectors: {\r\n ':after': {\r\n borderColor: SpinButtonRootBorderColorHovered,\r\n },\r\n [HighContrastSelector]: {\r\n selectors: {\r\n ':after': {\r\n borderColor: 'Highlight',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n spinButtonWrapperFocused: getInputFocusStyle(SpinButtonRootBorderColorFocused, effects.roundedCorner2),\r\n spinButtonWrapperDisabled: _getDisabledStyles(theme),\r\n input: {\r\n boxSizing: 'border-box',\r\n boxShadow: 'none',\r\n borderStyle: 'none',\r\n flex: 1,\r\n margin: 0,\r\n fontSize: fonts.medium.fontSize,\r\n fontFamily: 'inherit',\r\n color: SpinButtonInputTextColor,\r\n backgroundColor: SpinButtonRootBackgroundColor,\r\n height: '100%',\r\n padding: '0 8px 0 9px',\r\n outline: 0,\r\n display: 'block',\r\n minWidth: DEFAULT_MIN_WIDTH - ARROW_BUTTON_WIDTH - 2,\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n cursor: 'text',\r\n userSelect: 'text',\r\n borderRadius: `${effects.roundedCorner2} 0 0 ${effects.roundedCorner2}`,\r\n },\r\n inputTextSelected: {\r\n backgroundColor: SpinButtonInputBackgroundColorSelected,\r\n color: SpinButtonInputTextColorSelected,\r\n selectors: {\r\n [HighContrastSelector]: {\r\n backgroundColor: 'Highlight',\r\n borderColor: 'Highlight',\r\n color: 'HighlightText',\r\n },\r\n },\r\n },\r\n inputDisabled: _getDisabledStyles(theme),\r\n arrowButtonsContainer: {\r\n display: 'block',\r\n height: '100%',\r\n cursor: 'default',\r\n },\r\n arrowButtonsContainerDisabled: _getDisabledStyles(theme),\r\n };\r\n return concatStyleSets(defaultStyles, customStyles) as ISpinButtonStyles;\r\n },\r\n);\r\n","import * as React from 'react';\nimport { IconButton } from '../../Button';\nimport { Label } from '../../Label';\nimport { Icon } from '../../Icon';\nimport {\n initializeComponentRef,\n warnMutuallyExclusive,\n Async,\n getId,\n KeyCodes,\n customizable,\n calculatePrecision,\n precisionRound,\n mergeAriaAttributeValues,\n getNativeProps,\n divProperties,\n} from '../../Utilities';\nimport { ISpinButton, ISpinButtonProps } from './SpinButton.types';\nimport { Position } from '../../utilities/positioning';\nimport { getStyles, getArrowButtonStyles } from './SpinButton.styles';\nimport { getClassNames } from './SpinButton.classNames';\nimport { KeytipData } from '../../KeytipData';\n\nexport enum KeyboardSpinDirection {\n down = -1,\n notSpinning = 0,\n up = 1,\n}\n\nexport interface ISpinButtonState {\n /**\n * Is true when the control has focus.\n */\n isFocused: boolean;\n\n /**\n * the value of the spin button\n */\n value: string;\n\n /**\n * keyboard spin direction, used to style the up or down button\n * as active when up/down arrow is pressed\n */\n keyboardSpinDirection: KeyboardSpinDirection;\n}\n\n// TODO (Fabric Next): remove default min/max values (issue #11358).\nexport type DefaultProps = Required<\n Pick<\n ISpinButtonProps,\n 'step' | 'min' | 'max' | 'disabled' | 'labelPosition' | 'label' | 'incrementButtonIcon' | 'decrementButtonIcon'\n >\n>;\n\n/** Internal only props */\ntype ISpinButtonInternalProps = ISpinButtonProps & DefaultProps;\n\n@customizable('SpinButton', ['theme', 'styles'], true)\nexport class SpinButton extends React.Component<ISpinButtonProps, ISpinButtonState> implements ISpinButton {\n public static defaultProps: DefaultProps = {\n step: 1,\n min: 0,\n max: 100,\n disabled: false,\n labelPosition: Position.start,\n label: '',\n incrementButtonIcon: { iconName: 'ChevronUpSmall' },\n decrementButtonIcon: { iconName: 'ChevronDownSmall' },\n };\n\n private _async: Async;\n private _input = React.createRef<HTMLInputElement>();\n private _inputId: string;\n private _labelId: string;\n private _lastValidValue: string;\n private _spinningByMouse: boolean;\n private _valueToValidate: string | undefined; // To avoid duplicate validations/submissions\n private _precision: number;\n\n private _currentStepFunctionHandle: number;\n private _initialStepDelay = 400;\n private _stepDelay = 75;\n\n constructor(props: ISpinButtonProps) {\n super(props);\n\n initializeComponentRef(this);\n\n warnMutuallyExclusive('SpinButton', props, {\n value: 'defaultValue',\n });\n\n // Don't use || here because it won't handle empty strings properly\n let { value = props.defaultValue } = props;\n if (value === undefined) {\n value = typeof props.min === 'number' ? String(props.min) : '0';\n }\n this._lastValidValue = value;\n\n // Ensure that the autocalculated precision is not negative.\n this._precision = this._calculatePrecision(props as ISpinButtonInternalProps);\n\n this.state = {\n isFocused: false,\n value,\n keyboardSpinDirection: KeyboardSpinDirection.notSpinning,\n };\n\n this._async = new Async(this);\n this._currentStepFunctionHandle = -1;\n this._labelId = getId('Label');\n this._inputId = getId('input');\n this._spinningByMouse = false;\n this._valueToValidate = undefined;\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n }\n\n /**\n * Invoked when a component is receiving new props. This method is not called for the initial render.\n */\n public UNSAFE_componentWillReceiveProps(newProps: ISpinButtonProps): void {\n if (newProps.value !== undefined) {\n // Value from props is considered pre-validated\n this._lastValidValue = newProps.value;\n this.setState({ value: newProps.value });\n }\n this._precision = this._calculatePrecision(newProps as ISpinButtonProps & DefaultProps);\n }\n\n public render(): JSX.Element {\n const {\n disabled,\n label,\n min,\n max,\n labelPosition,\n iconProps,\n incrementButtonIcon,\n incrementButtonAriaLabel,\n decrementButtonIcon,\n decrementButtonAriaLabel,\n ariaLabel,\n ariaDescribedBy,\n styles: customStyles,\n upArrowButtonStyles: customUpArrowButtonStyles,\n downArrowButtonStyles: customDownArrowButtonStyles,\n theme,\n ariaPositionInSet,\n ariaSetSize,\n ariaValueNow,\n ariaValueText,\n keytipProps,\n className,\n inputProps,\n iconButtonProps,\n } = this.props as ISpinButtonInternalProps;\n\n const { isFocused, keyboardSpinDirection } = this.state;\n const value = this.value;\n\n const classNames = this.props.getClassNames\n ? this.props.getClassNames(theme!, disabled, isFocused, keyboardSpinDirection, labelPosition, className)\n : getClassNames(\n getStyles(theme!, customStyles),\n disabled,\n isFocused,\n keyboardSpinDirection,\n labelPosition,\n className,\n );\n\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties, [\n 'onBlur',\n 'onFocus',\n 'className',\n ]);\n\n return (\n <div className={classNames.root}>\n {labelPosition !== Position.bottom && (iconProps || label) && (\n <div className={classNames.labelWrapper}>\n {iconProps && <Icon {...iconProps} className={classNames.icon} aria-hidden=\"true\" />}\n {label && (\n <Label id={this._labelId} htmlFor={this._inputId} className={classNames.label} disabled={disabled}>\n {label}\n </Label>\n )}\n </div>\n )}\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => (\n <div\n {...nativeProps}\n className={classNames.spinButtonWrapper}\n aria-label={ariaLabel && ariaLabel}\n aria-posinset={ariaPositionInSet}\n aria-setsize={ariaSetSize}\n data-ktp-target={keytipAttributes['data-ktp-target']}\n >\n <input\n value={value}\n id={this._inputId}\n onChange={this._onChange}\n onInput={this._onInputChange}\n className={classNames.input}\n type=\"text\"\n autoComplete=\"off\"\n role=\"spinbutton\"\n aria-labelledby={label && this._labelId}\n aria-valuenow={\n typeof ariaValueNow === 'number'\n ? ariaValueNow\n : value && !isNaN(Number(value)) // Number('') is 0 which may not be desirable\n ? Number(value)\n : undefined\n }\n aria-valuetext={\n typeof ariaValueText === 'string'\n ? ariaValueText\n : !value || isNaN(Number(value)) // Number('') is 0 which may not be desirable\n ? value\n : undefined\n }\n aria-valuemin={min}\n aria-valuemax={max}\n aria-describedby={mergeAriaAttributeValues(ariaDescribedBy, keytipAttributes['aria-describedby'])}\n onBlur={this._onBlur}\n ref={this._input}\n onFocus={this._onFocus}\n onKeyDown={this._handleKeyDown}\n onKeyUp={this._handleKeyUp}\n disabled={disabled}\n aria-disabled={disabled}\n data-lpignore={true}\n data-ktp-execute-target={keytipAttributes['data-ktp-execute-target']}\n {...inputProps}\n />\n <span className={classNames.arrowBox}>\n <IconButton\n styles={getArrowButtonStyles(theme!, true, customUpArrowButtonStyles)}\n className={'ms-UpButton'}\n checked={keyboardSpinDirection === KeyboardSpinDirection.up}\n disabled={disabled}\n iconProps={incrementButtonIcon}\n onMouseDown={this._onIncrementMouseDown}\n onMouseLeave={this._stop}\n onMouseUp={this._stop}\n tabIndex={-1}\n ariaLabel={incrementButtonAriaLabel}\n data-is-focusable={false}\n {...iconButtonProps}\n />\n <IconButton\n styles={getArrowButtonStyles(theme!, false, customDownArrowButtonStyles)}\n className={'ms-DownButton'}\n checked={keyboardSpinDirection === KeyboardSpinDirection.down}\n disabled={disabled}\n iconProps={decrementButtonIcon}\n onMouseDown={this._onDecrementMouseDown}\n onMouseLeave={this._stop}\n onMouseUp={this._stop}\n tabIndex={-1}\n ariaLabel={decrementButtonAriaLabel}\n data-is-focusable={false}\n {...iconButtonProps}\n />\n </span>\n </div>\n )}\n </KeytipData>\n {labelPosition === Position.bottom && (iconProps || label) && (\n <div className={classNames.labelWrapper}>\n {iconProps && <Icon iconName={iconProps.iconName} className={classNames.icon} aria-hidden=\"true\" />}\n {label && (\n <Label id={this._labelId} htmlFor={this._inputId} className={classNames.label} disabled={disabled}>\n {label}\n </Label>\n )}\n </div>\n )}\n </div>\n );\n }\n\n public focus(): void {\n if (this._input.current) {\n this._input.current.focus();\n }\n }\n\n /**\n * Gets the value of the spin button.\n */\n public get value(): string | undefined {\n // TODO (version 8): value from props should ALWAYS override value from state.\n // In a class component the code should be:\n // const { value = this.state.value } = this.props;\n // return value;\n return this.state.value;\n }\n\n private _onFocus = (ev: React.FocusEvent<HTMLInputElement>): void => {\n // We can't set focus on a non-existing element\n if (!this._input.current) {\n return;\n }\n\n if (this._spinningByMouse || this.state.keyboardSpinDirection !== KeyboardSpinDirection.notSpinning) {\n this._stop();\n }\n\n this._input.current.select();\n\n this.setState({ isFocused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n };\n\n private _onBlur = (ev: React.FocusEvent<HTMLInputElement>): void => {\n this._validate(ev);\n this.setState({ isFocused: false });\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n };\n\n private _onValidate = (value: string, event?: React.SyntheticEvent<HTMLElement>): string | void => {\n if (this.props.onValidate) {\n return this.props.onValidate(value, event);\n } else {\n return this._defaultOnValidate(value);\n }\n };\n\n private _calculatePrecision = (props: ISpinButtonProps & DefaultProps) => {\n const { precision = Math.max(calculatePrecision(props.step), 0) } = props;\n return precision;\n };\n\n /**\n * Validate function to use if one is not passed in\n */\n private _defaultOnValidate = (value: string) => {\n if (value === null || value.trim().length === 0 || isNaN(Number(value))) {\n return this._lastValidValue;\n }\n const newValue = Math.min(this.props.max as number, Math.max(this.props.min as number, Number(value)));\n return String(newValue);\n };\n\n private _onIncrement = (\n value: string,\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): string | void => {\n if (this.props.onIncrement) {\n return this.props.onIncrement(value, event);\n } else {\n return this._defaultOnIncrement(value);\n }\n };\n\n /**\n * Increment function to use if one is not passed in\n */\n private _defaultOnIncrement = (value: string): string | void => {\n const { max, step } = this.props as ISpinButtonInternalProps;\n let newValue: number = Math.min(Number(value) + Number(step), max);\n newValue = precisionRound(newValue, this._precision);\n return String(newValue);\n };\n\n private _onDecrement = (\n value: string,\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): string | void => {\n if (this.props.onDecrement) {\n return this.props.onDecrement(value, event);\n } else {\n return this._defaultOnDecrement(value);\n }\n };\n\n /**\n * Increment function to use if one is not passed in\n */\n private _defaultOnDecrement = (value: string): string | void => {\n const { min, step } = this.props as ISpinButtonInternalProps;\n let newValue: number = Math.max(Number(value) - Number(step), min);\n newValue = precisionRound(newValue, this._precision);\n return String(newValue);\n };\n\n private _onChange(): void {\n /**\n * A noop input change handler. Using onInput instead of onChange was meant to address an issue\n * which apparently has been resolved in React 16 (https://github.com/facebook/react/issues/7027).\n * The no-op onChange handler was still needed because React gives console errors if an input\n * doesn't have onChange.\n *\n * TODO (Fabric 8?) - switch to just calling onChange (this is a breaking change for any tests,\n * ours or 3rd-party, which simulate entering text in a SpinButton)\n */\n }\n\n /**\n * This is used when validating text entry in the input on blur or when enter key is pressed\n * (not when changed via the buttons).\n * @param event - the event that fired\n */\n private _validate = (event: React.FocusEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>): void => {\n if (\n this.value !== undefined &&\n this._valueToValidate !== undefined &&\n this._valueToValidate !== this._lastValidValue\n ) {\n const newValue = this._onValidate!(this._valueToValidate, event);\n // Done validating this value, so clear it\n this._valueToValidate = undefined;\n\n if (newValue !== undefined) {\n this._lastValidValue = newValue;\n this.setState({ value: newValue });\n } else {\n // Value was invalid. Reset state to last valid value.\n this.setState({ value: this._lastValidValue });\n }\n }\n };\n\n /**\n * The method is needed to ensure we are updating the actual input value.\n * without this our value will never change (and validation will not have the correct number)\n * @param event - the event that was fired\n */\n private _onInputChange = (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n const element: HTMLInputElement = event.target as HTMLInputElement;\n const value: string = element.value;\n this._valueToValidate = value;\n this.setState({\n value: value,\n });\n };\n\n /**\n * Update the value with the given stepFunction\n * @param shouldSpin - should we fire off another updateValue when we are done here? This should be true\n * when spinning in response to a mouseDown\n * @param stepFunction - function to use to step by\n * @param event - The event that triggered the updateValue\n */\n private _updateValue = (\n shouldSpin: boolean,\n stepDelay: number,\n stepFunction: (\n value: string,\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => string | void,\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ): void => {\n const newValue: string | void = stepFunction(this.value || '', event);\n if (newValue !== undefined) {\n this._lastValidValue = newValue;\n this.setState({ value: newValue });\n }\n\n if (this._spinningByMouse !== shouldSpin) {\n this._spinningByMouse = shouldSpin;\n }\n\n if (shouldSpin) {\n this._currentStepFunctionHandle = this._async.setTimeout(() => {\n this._updateValue(shouldSpin, this._stepDelay, stepFunction, event);\n }, stepDelay);\n }\n };\n\n /**\n * Stop spinning (clear any currently pending update and set spinning to false)\n */\n private _stop = (): void => {\n if (this._currentStepFunctionHandle >= 0) {\n this._async.clearTimeout(this._currentStepFunctionHandle);\n this._currentStepFunctionHandle = -1;\n }\n\n if (this._spinningByMouse || this.state.keyboardSpinDirection !== KeyboardSpinDirection.notSpinning) {\n this._spinningByMouse = false;\n this.setState({ keyboardSpinDirection: KeyboardSpinDirection.notSpinning });\n }\n };\n\n /**\n * Handle keydown on the text field. We need to update\n * the value when up or down arrow are depressed\n * @param event - the keyboardEvent that was fired\n */\n private _handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\n // eat the up and down arrow keys to keep focus in the spinButton\n // (especially when a spinButton is inside of a FocusZone)\n if (event.which === KeyCodes.up || event.which === KeyCodes.down || event.which === KeyCodes.enter) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (this.props.disabled) {\n this._stop();\n return;\n }\n\n let spinDirection = KeyboardSpinDirection.notSpinning;\n\n switch (event.which) {\n case KeyCodes.up:\n spinDirection = KeyboardSpinDirection.up;\n this._updateValue(false /* shouldSpin */, this._initialStepDelay, this._onIncrement!, event);\n break;\n case KeyCodes.down:\n spinDirection = KeyboardSpinDirection.down;\n this._updateValue(false /* shouldSpin */, this._initialStepDelay, this._onDecrement!, event);\n break;\n case KeyCodes.enter:\n this._validate(event);\n break;\n case KeyCodes.escape:\n if (this.value !== this._lastValidValue) {\n this.setState({ value: this._lastValidValue });\n }\n break;\n default:\n break;\n }\n\n // style the increment/decrement button to look active\n // when the corresponding up/down arrow keys trigger a step\n if (this.state.keyboardSpinDirection !== spinDirection) {\n this.setState({ keyboardSpinDirection: spinDirection });\n }\n };\n\n /**\n * Make sure that we have stopped spinning on keyUp\n * if the up or down arrow fired this event\n * @param event - keyboard event\n */\n private _handleKeyUp = (event: React.KeyboardEvent<HTMLElement>): void => {\n if (this.props.disabled || event.which === KeyCodes.up || event.which === KeyCodes.down) {\n this._stop();\n return;\n }\n };\n\n private _onIncrementMouseDown = (event: React.MouseEvent<HTMLElement>): void => {\n this._updateValue(true /* shouldSpin */, this._initialStepDelay, this._onIncrement!, event);\n };\n\n private _onDecrementMouseDown = (event: React.MouseEvent<HTMLElement>): void => {\n this._updateValue(true /* shouldSpin */, this._initialStepDelay, this._onDecrement!, event);\n };\n}\n","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyles, IStyle } from '../../Styling';\nimport { ISpinButtonClassNames, ISpinButtonStyles } from './SpinButton.types';\nimport { KeyboardSpinDirection } from './SpinButton';\nimport { Position } from '../../utilities/positioning';\n\nexport const getClassNames = memoizeFunction(\n (\n styles: ISpinButtonStyles,\n disabled: boolean,\n isFocused: boolean,\n keyboardSpinDirection: KeyboardSpinDirection,\n labelPosition: Position = Position.start,\n className: string | undefined = undefined,\n ): ISpinButtonClassNames => {\n return {\n root: mergeStyles(styles.root, className),\n labelWrapper: mergeStyles(styles.labelWrapper, _getStyleForLabelBasedOnPosition(labelPosition, styles)),\n icon: mergeStyles(styles.icon, disabled && styles.iconDisabled),\n label: mergeStyles(styles.label),\n spinButtonWrapper: mergeStyles(\n styles.spinButtonWrapper,\n _getStyleForRootBasedOnPosition(labelPosition, styles),\n !disabled && [\n {\n selectors: {\n ':hover': styles.spinButtonWrapperHovered,\n },\n },\n isFocused && {\n // This is to increase the specificity of the focus styles\n // and make it equal to that of the hover styles.\n selectors: {\n '&&': styles.spinButtonWrapperFocused,\n },\n },\n ],\n disabled && styles.spinButtonWrapperDisabled,\n ),\n input: mergeStyles(\n 'ms-spinButton-input',\n styles.input,\n !disabled && {\n selectors: {\n '::selection': styles.inputTextSelected,\n },\n },\n disabled && styles.inputDisabled,\n ),\n arrowBox: mergeStyles(styles.arrowButtonsContainer, disabled && styles.arrowButtonsContainerDisabled),\n };\n },\n);\n\n/**\n * Returns the Style corresponding to the label position\n */\nfunction _getStyleForLabelBasedOnPosition(labelPosition: Position, styles: ISpinButtonStyles): IStyle {\n switch (labelPosition) {\n case Position.start:\n return styles.labelWrapperStart;\n case Position.end:\n return styles.labelWrapperEnd;\n case Position.top:\n return styles.labelWrapperTop;\n case Position.bottom:\n return styles.labelWrapperBottom;\n }\n}\n\n/**\n * Returns the Style corresponding to the label position\n */\nfunction _getStyleForRootBasedOnPosition(labelPosition: Position, styles: ISpinButtonStyles): IStyle {\n switch (labelPosition) {\n case Position.top:\n case Position.bottom:\n return styles.spinButtonWrapperTopBottom;\n default:\n return {};\n }\n}\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","import React, { Fragment } from \"react\";\nimport { SpinButton } from 'office-ui-fabric-react/lib/SpinButton';\nimport { mergeStyles } from \"@fluentui/react\";\nimport { debounce } from 'underscore';\nimport { DruidColor } from \"./webChatEditor\";\n\n\ninterface IntegerSelectorProps {\n id: string;\n value: any;\n onChange: (styleElementName: string, value: any) => void;\n}\n\nconst Ui_selector = mergeStyles(\n {\n width: '2em',\n 'div > div': {\n '::after': {\n borderRadius: 4,\n border: '1px solid #B2B2B2',\n },\n ':hover::after': {\n borderRadius: 4,\n border: `1px solid #70B244`,\n }\n }\n }\n);\n\nexport const IntegerSelector = (props: IntegerSelectorProps) => {\n const { id, value, onChange } = props;\n\n const debounceOnChange = debounce(onChange,500);\n\n const spinButtonIncrement = (val: string) => {\n debounceOnChange(id, parseInt(val) + 1);\n return String(+val + 1);\n };\n\n const spinButtonDecrement = (val: string) => {\n debounceOnChange(id, parseInt(val) - 1);\n return String(+val - 1);\n };\n\n const spinButtonValidate = (val: string) => {\n id !== 'bubbleFromUserNubOffset' ? onChange(id, parseInt(val)) : onChange(id, 'bottom');\n return String(val);\n };\n\n return (\n <Fragment>\n <div className={Ui_selector}>\n <SpinButton\n defaultValue={value}\n step={1}\n onIncrement={spinButtonIncrement}\n onDecrement={spinButtonDecrement}\n onValidate={spinButtonValidate}\n incrementButtonAriaLabel={'Increase value by 1'}\n decrementButtonAriaLabel={'Decrease value by 1'}\n /> \n </div> \n </Fragment>\n \n );\n}\n","import * as React from 'react';\nimport {\n KeyCodes,\n css,\n getId,\n getRTL,\n getRTLSafeKeyCode,\n warnMutuallyExclusive,\n initializeComponentRef,\n Async,\n on,\n FocusRects,\n} from '../../Utilities';\nimport { ISliderProps, ISlider, ISliderStyleProps, ISliderStyles } from './Slider.types';\nimport { classNamesFunction, getNativeProps, divProperties } from '../../Utilities';\nimport { Label } from '../../Label';\n\nexport interface ISliderState {\n value?: number;\n lowerValue?: number;\n renderedValue?: number;\n renderedLowerValue?: number;\n}\n\nconst getClassNames = classNamesFunction<ISliderStyleProps, ISliderStyles>();\nconst COMPONENT_NAME = 'SliderBase';\nexport const ONKEYDOWN_TIMEOUT_DURATION = 1000;\n\nexport class SliderBase extends React.Component<ISliderProps, ISliderState> implements ISlider {\n public static defaultProps: ISliderProps = {\n step: 1,\n min: 0,\n max: 10,\n showValue: true,\n disabled: false,\n vertical: false,\n buttonProps: {},\n originFromZero: false,\n };\n\n private _async: Async;\n private _disposables: (() => void)[] = [];\n private _sliderLine = React.createRef<HTMLDivElement>();\n private _thumb = React.createRef<HTMLSpanElement>();\n private _lowerValueThumb = React.createRef<HTMLSpanElement>();\n private _id: string;\n private _onKeyDownTimer = -1;\n private _isAdjustingLowerValue = false;\n\n constructor(props: ISliderProps) {\n super(props);\n\n this._async = new Async(this);\n initializeComponentRef(this);\n\n warnMutuallyExclusive(COMPONENT_NAME, this.props, {\n value: 'defaultValue',\n });\n\n if (props.ranged) {\n warnMutuallyExclusive(COMPONENT_NAME, this.props, {\n lowerValue: 'defaultLowerValue',\n });\n }\n\n this._id = getId('Slider');\n\n const value =\n props.value !== undefined ? props.value : props.defaultValue !== undefined ? props.defaultValue : props.min;\n\n const lowerValue =\n props.lowerValue !== undefined\n ? props.lowerValue\n : props.defaultLowerValue !== undefined\n ? props.defaultLowerValue\n : props.min;\n\n this.state = {\n value: value,\n lowerValue: lowerValue,\n renderedValue: undefined,\n renderedLowerValue: undefined,\n };\n }\n\n public componentWillUnmount() {\n this._async.dispose();\n this._disposeListeners();\n }\n\n public render(): React.ReactElement<{}> {\n const {\n ariaLabel,\n className,\n disabled,\n label,\n max,\n min,\n showValue,\n buttonProps,\n vertical,\n styles,\n theme,\n originFromZero,\n ranged,\n } = this.props;\n const value = this.value;\n const renderedValue = this.renderedValue;\n const renderedLowerValue = this.renderedLowerValue;\n const thumbOffsetPercent: number = this._getPercent(renderedValue);\n const lowerThumbOffsetPercent: number = this._getPercent(renderedLowerValue);\n const originValue = originFromZero ? 0 : min;\n\n const originPercent = this._getPercent(originValue);\n const activeSectionWidth = ranged\n ? thumbOffsetPercent - lowerThumbOffsetPercent\n : Math.abs(originPercent - thumbOffsetPercent);\n const topSectionWidth = Math.min(100 - thumbOffsetPercent, 100 - originPercent);\n const bottomSectionWidth = ranged ? lowerThumbOffsetPercent : Math.min(thumbOffsetPercent, originPercent);\n\n const lengthString = vertical ? 'height' : 'width';\n const onMouseDownProp: {} = disabled ? {} : { onMouseDown: this._onMouseDownOrTouchStart };\n const onTouchStartProp: {} = disabled ? {} : { onTouchStart: this._onMouseDownOrTouchStart };\n const onKeyDownProp: {} = disabled ? {} : { onKeyDown: this._onKeyDown };\n const onFocusProp: {} = disabled ? {} : { onFocus: this._onThumbFocus };\n\n const classNames = getClassNames(styles, {\n className,\n ranged,\n disabled,\n vertical,\n showTransitions: renderedValue === value || (ranged && renderedLowerValue === this.lowerValue),\n showValue,\n theme: theme!,\n });\n const divButtonProps = buttonProps\n ? getNativeProps<React.HTMLAttributes<HTMLDivElement>>(buttonProps, divProperties)\n : undefined;\n\n const sliderProps = {\n 'aria-disabled': disabled,\n role: 'slider',\n tabIndex: disabled ? undefined : 0,\n 'data-is-focusable': !disabled,\n };\n\n const sliderBoxProps = {\n id: this._id,\n className: css(classNames.slideBox, buttonProps!.className),\n ...onMouseDownProp,\n ...onTouchStartProp,\n ...onKeyDownProp,\n ...divButtonProps,\n ...(!ranged && {\n ...sliderProps,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-valuetext': this._getAriaValueText(value),\n 'aria-label': ariaLabel || label,\n }),\n };\n\n const thumbProps = ranged\n ? {\n ...sliderProps,\n ...onFocusProp,\n id: `max-${this._id}`,\n 'aria-valuemin': this.lowerValue,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-valuetext': this._getAriaValueText(value),\n 'aria-label': `max ${ariaLabel || label}`,\n }\n : undefined;\n\n const lowerValueThumbProps = ranged\n ? {\n ...sliderProps,\n ...onFocusProp,\n id: `min-${this._id}`,\n 'aria-valuemin': min,\n 'aria-valuemax': value,\n 'aria-valuenow': this.lowerValue,\n 'aria-valuetext': this._getAriaValueText(this.lowerValue),\n 'aria-label': `min ${ariaLabel || label}`,\n }\n : undefined;\n\n return (\n <div className={classNames.root}>\n {label && (\n <Label className={classNames.titleLabel} {...(ariaLabel ? {} : { htmlFor: this._id })} disabled={disabled}>\n {label}\n </Label>\n )}\n <div className={classNames.container}>\n {ranged && showValue && (\n <Label className={classNames.valueLabel} disabled={disabled}>\n {this._getValueLabel(vertical ? this.value! : this.lowerValue!)}\n </Label>\n )}\n <div {...sliderBoxProps}>\n <div ref={this._sliderLine} className={classNames.line}>\n {originFromZero && (\n <span\n className={css(classNames.zeroTick)}\n style={this._getStyleUsingOffsetPercent(vertical, originPercent)}\n />\n )}\n {ranged && (\n <span\n ref={this._lowerValueThumb}\n className={classNames.thumb}\n style={this._getStyleUsingOffsetPercent(vertical, lowerThumbOffsetPercent)}\n {...lowerValueThumbProps}\n />\n )}\n <span\n ref={this._thumb}\n className={classNames.thumb}\n style={this._getStyleUsingOffsetPercent(vertical, thumbOffsetPercent)}\n {...thumbProps}\n />\n {(ranged || originFromZero) && (\n <span\n className={css(classNames.lineContainer, classNames.inactiveSection)}\n style={{ [lengthString]: bottomSectionWidth + '%' }}\n />\n )}\n <span\n className={css(classNames.lineContainer, classNames.activeSection)}\n style={{ [lengthString]: activeSectionWidth + '%' }}\n />\n <span\n className={css(classNames.lineContainer, classNames.inactiveSection)}\n style={{ [lengthString]: topSectionWidth + '%' }}\n />\n </div>\n </div>\n {showValue && (\n <Label className={classNames.valueLabel} disabled={disabled}>\n {this._getValueLabel(ranged && vertical ? this.lowerValue! : this.value!)}\n </Label>\n )}\n </div>\n <FocusRects />\n </div>\n ) as React.ReactElement<{}>;\n }\n\n public focus(): void {\n if (this._thumb.current) {\n this._thumb.current.focus();\n }\n }\n\n public get range(): [number, number] | undefined {\n if (this.props.ranged) {\n return [this.lowerValue!, this.value!];\n }\n }\n\n public get value(): number | undefined {\n const { value = this.state.value } = this.props;\n if (this.props.min === undefined || this.props.max === undefined || value === undefined) {\n return undefined;\n } else {\n return Math.max(this.props.min, Math.min(this.props.max, value));\n }\n }\n\n private get renderedValue(): number | undefined {\n // renderedValue is expected to be defined while user is interacting with control, otherwise `undefined`.\n // Fall back to `value`.\n const { renderedValue = this.value } = this.state;\n return renderedValue;\n }\n\n public get lowerValue(): number | undefined {\n const { lowerValue = this.state.lowerValue, ranged } = this.props;\n if (!ranged || this.props.min === undefined || this.props.max === undefined || lowerValue === undefined) {\n return undefined;\n } else {\n return Math.max(this.props.min, Math.min(this.props.max, lowerValue));\n }\n }\n\n private get renderedLowerValue(): number | undefined {\n // renderedLowerValue is expected to be defined while user is interacting with control, otherwise `undefined`.\n // Fall back to `lowerValue`.\n const { renderedLowerValue = this.lowerValue } = this.state;\n return renderedLowerValue;\n }\n\n private _getPercent(value: number | undefined) {\n const { min, max } = this.props;\n return max === min ? 0 : ((value! - min!) / (max! - min!)) * 100;\n }\n\n private _getValueLabel(value: number) {\n const { valueFormat } = this.props;\n return valueFormat ? valueFormat(value) : value;\n }\n\n private _getAriaValueText = (value: number | undefined): string | undefined => {\n const { ariaValueText } = this.props;\n if (value !== undefined) {\n return ariaValueText ? ariaValueText(value) : value.toString();\n }\n return undefined;\n };\n\n private _getStyleUsingOffsetPercent(vertical: boolean | undefined, thumbOffsetPercent: number): any {\n const direction: string = vertical ? 'bottom' : getRTL(this.props.theme) ? 'right' : 'left';\n return {\n [direction]: thumbOffsetPercent + '%',\n };\n }\n\n private _calculateCurrentSteps = (event: MouseEvent | TouchEvent): number | undefined => {\n if (!this._sliderLine.current) {\n return;\n }\n\n const { max, min, step } = this.props;\n const steps: number = (max! - min!) / step!;\n const sliderPositionRect: ClientRect = this._sliderLine.current.getBoundingClientRect();\n const sliderLength: number = !this.props.vertical ? sliderPositionRect.width : sliderPositionRect.height;\n const stepLength: number = sliderLength / steps;\n let currentSteps: number | undefined;\n let distance: number | undefined;\n\n if (!this.props.vertical) {\n const left: number | undefined = this._getPosition(event, this.props.vertical);\n distance = getRTL(this.props.theme) ? sliderPositionRect.right - left! : left! - sliderPositionRect.left;\n currentSteps = distance / stepLength;\n } else {\n const bottom: number | undefined = this._getPosition(event, this.props.vertical);\n distance = sliderPositionRect.bottom - bottom!;\n currentSteps = distance / stepLength;\n }\n\n return currentSteps;\n };\n\n private _onMouseDownOrTouchStart = (event: MouseEvent | TouchEvent): void => {\n const { ranged, min, step } = this.props;\n if (ranged) {\n const currentSteps = this._calculateCurrentSteps(event);\n const newRenderedValue = min! + step! * currentSteps!;\n\n if (\n newRenderedValue <= (this.state.lowerValue as number) ||\n newRenderedValue - (this.state.lowerValue as number) <= (this.state.value as number) - newRenderedValue\n ) {\n this._isAdjustingLowerValue = true;\n } else {\n this._isAdjustingLowerValue = false;\n }\n }\n if (event.type === 'mousedown') {\n this._disposables.push(\n on(window, 'mousemove', this._onMouseMoveOrTouchMove, true),\n on(window, 'mouseup', this._onMouseUpOrTouchEnd, true),\n );\n } else if (event.type === 'touchstart') {\n this._disposables.push(\n on(window, 'touchmove', this._onMouseMoveOrTouchMove, true),\n on(window, 'touchend', this._onMouseUpOrTouchEnd, true),\n );\n }\n this._onMouseMoveOrTouchMove(event, true);\n };\n\n private _onMouseMoveOrTouchMove = (event: MouseEvent | TouchEvent, suppressEventCancelation?: boolean): void => {\n if (!this._sliderLine.current) {\n return;\n }\n\n const { max, min, step } = this.props;\n const steps: number = (max! - min!) / step!;\n const currentSteps = this._calculateCurrentSteps(event);\n\n let currentValue: number | undefined;\n let renderedValue: number | undefined;\n\n // The value shouldn't be bigger than max or be smaller than min.\n if (currentSteps! > Math.floor(steps)) {\n renderedValue = currentValue = max as number;\n } else if (currentSteps! < 0) {\n renderedValue = currentValue = min as number;\n } else {\n renderedValue = min! + step! * currentSteps!;\n currentValue = min! + step! * Math.round(currentSteps!);\n }\n\n this._updateValue(currentValue, renderedValue);\n\n if (!suppressEventCancelation) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n private _getPosition(event: MouseEvent | TouchEvent, vertical: boolean | undefined): number | undefined {\n let currentPosition: number | undefined;\n switch (event.type) {\n case 'mousedown':\n case 'mousemove':\n currentPosition = !vertical ? (event as MouseEvent).clientX : (event as MouseEvent).clientY;\n break;\n case 'touchstart':\n case 'touchmove':\n currentPosition = !vertical\n ? (event as TouchEvent).touches[0].clientX\n : (event as TouchEvent).touches[0].clientY;\n break;\n }\n return currentPosition;\n }\n\n private _setValueState(roundedValue: number, renderedValue: number) {\n const isAdjustingLowerValue = this._isAdjustingLowerValue;\n const valueChanged = roundedValue !== (isAdjustingLowerValue ? this.state.lowerValue : this.state.value);\n this.setState(\n {\n [isAdjustingLowerValue ? 'lowerValue' : 'value']: roundedValue,\n [isAdjustingLowerValue ? 'renderedLowerValue' : 'renderedValue']: renderedValue,\n },\n () => {\n const { lowerValue, value } = this.state;\n if (valueChanged && this.props.onChange) {\n this.props.onChange(\n isAdjustingLowerValue ? lowerValue! : value!,\n this.props.ranged ? [lowerValue!, value!] : undefined,\n );\n }\n },\n );\n }\n\n private _updateValue(value: number, renderedValue: number): void {\n const { step, snapToStep, ranged, originFromZero } = this.props;\n let numDec = 0;\n if (isFinite(step!)) {\n while (Math.round(step! * Math.pow(10, numDec)) / Math.pow(10, numDec) !== step!) {\n numDec++;\n }\n }\n\n // Make sure value has correct number of decimal places based on number of decimals in step\n const roundedValue = parseFloat(value.toFixed(numDec));\n\n if (snapToStep) {\n renderedValue = roundedValue;\n }\n\n const shouldAdjustLowerThumb =\n this._isAdjustingLowerValue && (originFromZero ? roundedValue <= 0 : roundedValue <= this.renderedValue!);\n const shouldAdjustUpperThumb =\n !this._isAdjustingLowerValue && (originFromZero ? roundedValue >= 0 : roundedValue >= this.renderedLowerValue!);\n\n if (!ranged || shouldAdjustLowerThumb || shouldAdjustUpperThumb) {\n this._setValueState(roundedValue, renderedValue);\n }\n }\n\n private _onMouseUpOrTouchEnd = (event: MouseEvent | TouchEvent): void => {\n // Disable renderedValue override.\n this.setState({\n renderedValue: undefined,\n renderedLowerValue: undefined,\n });\n\n if (this.props.onChanged) {\n this.props.onChanged(event, this.state.value as number);\n }\n\n this._disposeListeners();\n };\n\n private _disposeListeners = (): void => {\n this._disposables.forEach(dispose => dispose());\n this._disposables = [];\n };\n\n private _onKeyDown = (event: KeyboardEvent): void => {\n let value: number | undefined;\n if (this._isAdjustingLowerValue) {\n value = this.props.lowerValue || this.state.lowerValue;\n } else {\n value = this.props.value || this.state.value;\n }\n const { max, min, step } = this.props;\n\n let diff: number | undefined = 0;\n\n // eslint-disable-next-line deprecation/deprecation\n switch (event.which) {\n case getRTLSafeKeyCode(KeyCodes.left, this.props.theme):\n case KeyCodes.down:\n diff = -(step as number);\n\n this._clearOnKeyDownTimer();\n this._setOnKeyDownTimer(event);\n\n break;\n case getRTLSafeKeyCode(KeyCodes.right, this.props.theme):\n case KeyCodes.up:\n diff = step;\n\n this._clearOnKeyDownTimer();\n this._setOnKeyDownTimer(event);\n\n break;\n\n case KeyCodes.home:\n value = min;\n\n this._clearOnKeyDownTimer();\n this._setOnKeyDownTimer(event);\n\n break;\n\n case KeyCodes.end:\n value = max;\n\n this._clearOnKeyDownTimer();\n this._setOnKeyDownTimer(event);\n\n break;\n\n default:\n return;\n }\n\n const newValue: number = Math.min(max as number, Math.max(min as number, value! + diff!));\n this._updateValue(newValue, newValue);\n\n event.preventDefault();\n event.stopPropagation();\n\n // Disable renderedValue override.\n this.setState({\n renderedValue: undefined,\n renderedLowerValue: undefined,\n });\n };\n\n private _onThumbFocus = (event: MouseEvent | TouchEvent): void => {\n this._isAdjustingLowerValue = event.target === this._lowerValueThumb.current;\n };\n\n private _clearOnKeyDownTimer = (): void => {\n this._async.clearTimeout(this._onKeyDownTimer);\n };\n\n private _setOnKeyDownTimer = (event: KeyboardEvent): void => {\n this._onKeyDownTimer = this._async.setTimeout(() => {\n if (this.props.onChanged) {\n this.props.onChanged(event, this.state.value as number);\n }\n }, ONKEYDOWN_TIMEOUT_DURATION);\n };\n}\n","import { ISliderStyleProps, ISliderStyles } from './Slider.types';\nimport { getGlobalClassNames, HighContrastSelector, AnimationVariables, getFocusStyle } from '../../Styling';\nimport { getRTL } from '@uifabric/utilities';\n\nconst GlobalClassNames = {\n root: 'ms-Slider',\n enabled: 'ms-Slider-enabled',\n disabled: 'ms-Slider-disabled',\n row: 'ms-Slider-row',\n column: 'ms-Slider-column',\n container: 'ms-Slider-container',\n slideBox: 'ms-Slider-slideBox',\n line: 'ms-Slider-line',\n thumb: 'ms-Slider-thumb',\n activeSection: 'ms-Slider-active',\n inactiveSection: 'ms-Slider-inactive',\n valueLabel: 'ms-Slider-value',\n showValue: 'ms-Slider-showValue',\n showTransitions: 'ms-Slider-showTransitions',\n zeroTick: 'ms-Slider-zeroTick',\n};\n\nexport const getStyles = (props: ISliderStyleProps): ISliderStyles => {\n const { className, titleLabelClassName, theme, vertical, disabled, showTransitions, showValue, ranged } = props;\n const { semanticColors } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n /** Tokens:\n * The word \"active\" in the token refers to the selected section of the slider\n * The word \"inactive\" in the token refers to the unselected section of the slider */\n const pressedActiveSectionColor = semanticColors.inputBackgroundCheckedHovered;\n const hoveredActiveSectionColor = semanticColors.inputBackgroundChecked;\n const hoveredPressedinactiveSectionColor = semanticColors.inputPlaceholderBackgroundChecked;\n const restActiveSectionColor = semanticColors.smallInputBorder;\n const restInactiveSectionColor = semanticColors.disabledBorder;\n\n const disabledActiveSectionColor = semanticColors.disabledText;\n const disabledInactiveSectionColor = semanticColors.disabledBackground;\n\n const thumbBackgroundColor = semanticColors.inputBackground;\n const thumbBorderColor = semanticColors.smallInputBorder;\n const thumbDisabledBorderColor = semanticColors.disabledBorder;\n\n const slideBoxActiveSectionStyles = !disabled && {\n backgroundColor: pressedActiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n };\n\n const slideBoxInactiveSectionStyles = !disabled && {\n backgroundColor: hoveredPressedinactiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n };\n\n const slideHoverSectionStyles = !disabled && {\n backgroundColor: hoveredActiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n };\n\n const slideBoxActiveThumbStyles = !disabled && {\n border: `2px solid ${pressedActiveSectionColor}`,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n };\n\n const slideBoxActiveZeroTickStyles = !props.disabled && {\n backgroundColor: semanticColors.inputPlaceholderBackgroundChecked,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n };\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n userSelect: 'none',\n },\n vertical && {\n marginRight: 8,\n },\n ...[!disabled ? classNames.enabled : undefined],\n ...[disabled ? classNames.disabled : undefined],\n ...[!vertical ? classNames.row : undefined],\n ...[vertical ? classNames.column : undefined],\n className,\n ],\n titleLabel: [\n {\n padding: 0,\n },\n titleLabelClassName,\n ],\n container: [\n classNames.container,\n {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n },\n vertical && {\n flexDirection: 'column',\n height: '100%',\n textAlign: 'center',\n margin: '8px 0',\n },\n ],\n slideBox: [\n classNames.slideBox,\n !ranged && getFocusStyle(theme),\n {\n background: 'transparent',\n border: 'none',\n flexGrow: 1,\n lineHeight: 28,\n display: 'flex',\n alignItems: 'center',\n selectors: {\n [`:active .${classNames.activeSection}`]: slideBoxActiveSectionStyles,\n [`:hover .${classNames.activeSection}`]: slideHoverSectionStyles,\n [`:active .${classNames.inactiveSection}`]: slideBoxInactiveSectionStyles,\n [`:hover .${classNames.inactiveSection}`]: slideBoxInactiveSectionStyles,\n [`:active .${classNames.thumb}`]: slideBoxActiveThumbStyles,\n [`:hover .${classNames.thumb}`]: slideBoxActiveThumbStyles,\n [`:active .${classNames.zeroTick}`]: slideBoxActiveZeroTickStyles,\n [`:hover .${classNames.zeroTick}`]: slideBoxActiveZeroTickStyles,\n [HighContrastSelector]: {\n forcedColorAdjust: 'none',\n },\n },\n },\n vertical\n ? {\n height: '100%',\n width: 28,\n padding: '8px 0', // Make room for thumb at bottom of line\n }\n : {\n height: 28,\n width: 'auto',\n padding: '0 8px', // Make room for thumb at ends of line\n },\n ...[showValue ? classNames.showValue : undefined],\n ...[showTransitions ? classNames.showTransitions : undefined],\n ],\n thumb: [\n classNames.thumb,\n ranged && getFocusStyle(theme, { inset: -4 }),\n {\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: thumbBorderColor,\n borderRadius: 10,\n boxSizing: 'border-box',\n background: thumbBackgroundColor,\n display: 'block',\n width: 16,\n height: 16,\n position: 'absolute',\n },\n vertical\n ? {\n left: -6,\n margin: '0 auto',\n transform: 'translateY(8px)',\n }\n : {\n top: -6,\n transform: getRTL(theme) ? 'translateX(50%)' : 'translateX(-50%)',\n },\n showTransitions && {\n transition: `left ${AnimationVariables.durationValue3} ${AnimationVariables.easeFunction1}`,\n },\n disabled && {\n borderColor: thumbDisabledBorderColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n },\n },\n },\n ],\n line: [\n classNames.line,\n {\n display: 'flex',\n position: 'relative',\n },\n vertical\n ? {\n height: '100%',\n width: 4,\n margin: '0 auto',\n flexDirection: 'column-reverse',\n }\n : {\n width: '100%',\n },\n ],\n lineContainer: [\n {\n borderRadius: 4,\n boxSizing: 'border-box',\n },\n vertical\n ? {\n width: 4,\n height: '100%',\n }\n : {\n height: 4,\n width: '100%',\n },\n ],\n activeSection: [\n classNames.activeSection,\n {\n background: restActiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n showTransitions && {\n transition: `width ${AnimationVariables.durationValue3} ${AnimationVariables.easeFunction1}`,\n },\n disabled && {\n background: disabledActiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'GrayText',\n borderColor: 'GrayText',\n },\n },\n },\n ],\n inactiveSection: [\n classNames.inactiveSection,\n {\n background: restInactiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid WindowText',\n },\n },\n },\n showTransitions && {\n transition: `width ${AnimationVariables.durationValue3} ${AnimationVariables.easeFunction1}`,\n },\n disabled && {\n background: disabledInactiveSectionColor,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'GrayText',\n },\n },\n },\n ],\n zeroTick: [\n classNames.zeroTick,\n {\n position: 'absolute',\n background: semanticColors.disabledBorder,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'WindowText',\n },\n },\n },\n props.disabled && {\n background: semanticColors.disabledBackground,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'GrayText',\n },\n },\n },\n props.vertical\n ? {\n width: '16px',\n height: '1px',\n transform: getRTL(theme) ? 'translateX(6px)' : 'translateX(-6px)',\n }\n : {\n width: '1px',\n height: '16px',\n transform: 'translateY(-6px)',\n },\n ],\n valueLabel: [\n classNames.valueLabel,\n {\n flexShrink: 1,\n width: 30,\n lineHeight: '1', // using a string here meaning it's relative to the size of the font\n },\n vertical\n ? {\n margin: '0 auto',\n whiteSpace: 'nowrap',\n width: 40,\n }\n : {\n margin: '0 8px',\n whiteSpace: 'nowrap',\n width: 40,\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\n\nimport { ISliderProps, ISliderStyleProps, ISliderStyles } from './Slider.types';\n\nimport { SliderBase } from './Slider.base';\nimport { getStyles } from './Slider.styles';\n\nexport const Slider: React.FunctionComponent<ISliderProps> = styled<ISliderProps, ISliderStyleProps, ISliderStyles>(\n SliderBase,\n getStyles,\n undefined,\n {\n scope: 'Slider',\n },\n);\n","import React, { Fragment } from \"react\";\nimport { merge, mergeStyles } from \"@fluentui/react\";\nimport { Slider } from 'office-ui-fabric-react/lib/Slider';\n\ninterface percentageSelectorProps {\n id: string;\n value: any;\n onChange: (styleElementName: string, value: any) => void;\n}\n\nconst Ui_selector = mergeStyles(\n {\n width: '50%',\n }\n);\nexport const PercentageSelector = (props: percentageSelectorProps) => {\n const { id, value, onChange } = props;\n \n const sliderOnChange = (sliderValue: number) => (onChange(id, `${sliderValue}%`));\n const sliderValueFormat = (value: number) => `${value}%`;\n\n return (\n <Fragment>\n <div className={Ui_selector}>\n <Slider\n min={0}\n max={100}\n step={1}\n defaultValue={parseInt(value)}\n onChange={(sliderOnChange)}\n valueFormat={sliderValueFormat}\n showValue\n originFromZero\n />\n </div>\n </Fragment>\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_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 _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export const MAX_COLOR_SATURATION = 100;\nexport const MAX_COLOR_HUE = 359;\nexport const MAX_COLOR_VALUE = 100;\nexport const MAX_COLOR_RGB = 255;\n/** @deprecated Use MAX_COLOR_RGB (255) or MAX_COLOR_ALPHA (100) */\nexport const MAX_COLOR_RGBA = MAX_COLOR_RGB;\nexport const MAX_COLOR_ALPHA = 100;\n\n/** Minimum length for a hexadecimal color string (not including the #) */\nexport const MIN_HEX_LENGTH = 3;\n/** Maximum length for a hexadecimal color string (not including the #) */\nexport const MAX_HEX_LENGTH = 6;\n/** Minimum length for a string of an RGBA color component */\nexport const MIN_RGBA_LENGTH = 1;\n/** Maximum length for a string of an RGBA color component */\nexport const MAX_RGBA_LENGTH = 3;\n\n/** Regular expression matching only valid hexadecimal chars */\nexport const HEX_REGEX = /^[\\da-f]{0,6}$/i;\n/** Regular expression matching only numbers */\nexport const RGBA_REGEX = /^\\d{0,3}$/;\n","import { IRGB } from './interfaces';\nimport { MAX_COLOR_RGB } from './consts';\n\n/** Converts HSV components to an RGB color. Does not set the alpha value. */\nexport function hsv2rgb(h: number, s: number, v: number): IRGB {\n s = s / 100;\n v = v / 100;\n\n let rgb: number[] = [];\n\n const c = v * s;\n const hh = h / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n const m = v - c;\n\n switch (Math.floor(hh)) {\n case 0:\n rgb = [c, x, 0];\n break;\n\n case 1:\n rgb = [x, c, 0];\n break;\n\n case 2:\n rgb = [0, c, x];\n break;\n\n case 3:\n rgb = [0, x, c];\n break;\n\n case 4:\n rgb = [x, 0, c];\n break;\n\n case 5:\n rgb = [c, 0, x];\n break;\n }\n\n return {\n r: Math.round(MAX_COLOR_RGB * (rgb[0] + m)),\n g: Math.round(MAX_COLOR_RGB * (rgb[1] + m)),\n b: Math.round(MAX_COLOR_RGB * (rgb[2] + m)),\n };\n}\n","/** Clamp a value to ensure it falls within a given range. */\nexport function clamp(value: number, max: number, min = 0): number {\n return value < min ? min : value > max ? max : value;\n}\n","import { MAX_COLOR_RGB } from './consts';\nimport { clamp } from './clamp';\n\n/** Converts RGB components to a hex color string (without # prefix). */\nexport function rgb2hex(r: number, g: number, b: number): string {\n return [_rgbToPaddedHex(r), _rgbToPaddedHex(g), _rgbToPaddedHex(b)].join('');\n}\n\n/** Converts an RGB component to a 0-padded hex component of length 2. */\nfunction _rgbToPaddedHex(num: number): string {\n num = clamp(num, MAX_COLOR_RGB);\n const hex = num.toString(16);\n\n return hex.length === 1 ? '0' + hex : hex;\n}\n","import { IColor } from './interfaces';\nimport { MAX_COLOR_SATURATION, MAX_COLOR_VALUE } from './consts';\nimport { hsv2hex } from './hsv2hex';\n\n/**\n * Converts a color hue to an HTML color string (with # prefix).\n * This implementation ignores all components of `color` except hue.\n */\nexport function getFullColorString(color: IColor): string {\n return `#${hsv2hex(color.h, MAX_COLOR_SATURATION, MAX_COLOR_VALUE)}`;\n}\n","import { hsv2rgb } from './hsv2rgb';\nimport { rgb2hex } from './rgb2hex';\n\n/** Converts HSV components to a hex color string (without # prefix). */\nexport function hsv2hex(h: number, s: number, v: number): string {\n const { r, g, b } = hsv2rgb(h, s, v);\n\n return rgb2hex(r, g, b);\n}\n","import { MAX_COLOR_ALPHA } from './consts';\n\n/**\n * @internal\n * Get a CSS color string from some color components.\n * If `a` is specified and not 100, returns an `rgba()` string.\n * Otherwise returns `hex` prefixed with #.\n */\nexport function _rgbaOrHexString(r: number, g: number, b: number, a: number | undefined, hex: string): string {\n return a === MAX_COLOR_ALPHA || typeof a !== 'number' ? `#${hex}` : `rgba(${r}, ${g}, ${b}, ${a / MAX_COLOR_ALPHA})`;\n}\n","import { IColor } from './interfaces';\nimport { hsv2rgb } from './hsv2rgb';\nimport { rgb2hex } from './rgb2hex';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\n\n/**\n * Gets a color with the same hue as `color` and other components updated to match the given\n * saturation and value.\n *\n * Does not modify the original `color` and does not supply a default alpha value.\n */\nexport function updateSV(color: IColor, s: number, v: number): IColor {\n const { r, g, b } = hsv2rgb(color.h, s, v);\n const hex = rgb2hex(r, g, b);\n\n return {\n ...color,\n s,\n v,\n r,\n g,\n b,\n hex,\n str: _rgbaOrHexString(r, g, b, color.a, hex),\n };\n}\n","import * as React from 'react';\nimport { classNamesFunction, on, initializeComponentRef, KeyCodes, getId } from '../../../Utilities';\nimport {\n IColorRectangleProps,\n IColorRectangleStyleProps,\n IColorRectangleStyles,\n IColorRectangle,\n} from './ColorRectangle.types';\n\n// These imports are separated to help with bundling\nimport { IColor } from '../../../utilities/color/interfaces';\nimport { MAX_COLOR_SATURATION, MAX_COLOR_VALUE } from '../../../utilities/color/consts';\nimport { getFullColorString } from '../../../utilities/color/getFullColorString';\nimport { updateSV } from '../../../utilities/color/updateSV';\nimport { clamp } from '../../../utilities/color/clamp';\n\nconst getClassNames = classNamesFunction<IColorRectangleStyleProps, IColorRectangleStyles>();\n\nexport interface IColorRectangleState {\n color: IColor;\n}\n\n/**\n * {@docCategory ColorPicker}\n */\nexport class ColorRectangleBase extends React.Component<IColorRectangleProps, IColorRectangleState>\n implements IColorRectangle {\n public static defaultProps: Partial<IColorRectangleProps> = {\n minSize: 220,\n ariaLabel: 'Saturation and brightness',\n ariaValueFormat: 'Saturation {0} brightness {1}',\n ariaDescription: 'Use left and right arrow keys to set saturation. Use up and down arrow keys to set brightness.',\n };\n\n private _disposables: (() => void)[] = [];\n private _root = React.createRef<HTMLDivElement>();\n private _isAdjustingSaturation: boolean = true;\n private _descriptionId = getId('ColorRectangle-description');\n\n constructor(props: IColorRectangleProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this.state = { color: props.color };\n }\n\n public get color(): IColor {\n return this.state.color;\n }\n\n public componentDidUpdate(\n prevProps: Readonly<IColorRectangleProps>,\n prevState: Readonly<IColorRectangleState>,\n ): void {\n // if props changed (as opposed to a state update), set the value\n // TODO: switch to strict controlled pattern instead\n if (prevProps !== this.props && this.props.color) {\n this.setState({ color: this.props.color });\n }\n }\n\n public componentWillUnmount() {\n this._disposeListeners();\n }\n\n public render(): JSX.Element {\n const { minSize, theme, className, styles, ariaValueFormat, ariaLabel, ariaDescription } = this.props;\n const { color } = this.state;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n minSize,\n });\n\n const valueText = ariaValueFormat!.replace('{0}', String(color.s)).replace('{1}', String(color.v));\n\n return (\n <div\n ref={this._root}\n tabIndex={0}\n className={classNames.root}\n style={{ backgroundColor: getFullColorString(color) }}\n onMouseDown={this._onMouseDown}\n onKeyDown={this._onKeyDown}\n role=\"slider\"\n // Proper description of the current hue *and* saturation\n // (screen reader typically chooses this over aria-valuenow)\n aria-valuetext={valueText}\n // Narrator reads aria-valuetext first, but it also reads aria-valuenow after a pause, and\n // per the aria spec this defaults to halfway between min/max (50) if we don't provide it.\n // So provide the value of the most recently adjusted thing.\n aria-valuenow={this._isAdjustingSaturation ? color.s : color.v}\n aria-valuemin={0}\n aria-valuemax={MAX_COLOR_VALUE}\n aria-label={ariaLabel}\n aria-describedby={this._descriptionId}\n data-is-focusable={true}\n >\n <div className={classNames.description} id={this._descriptionId}>\n {ariaDescription}\n </div>\n <div className={classNames.light} />\n <div className={classNames.dark} />\n <div\n className={classNames.thumb}\n style={{ left: color!.s + '%', top: MAX_COLOR_VALUE - color!.v + '%', backgroundColor: color!.str }}\n />\n </div>\n );\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const { color } = this.state;\n let { s, v } = color;\n\n const increment = ev.shiftKey ? 10 : 1;\n\n // Intentionally DO NOT flip the color picker in RTL: its orientation is not very meaningful,\n // and getting all the math and styles flipped correctly is tricky\n switch (ev.which) {\n case KeyCodes.up: {\n this._isAdjustingSaturation = false;\n v += increment; // V = 100 (lightest) is at the top\n break;\n }\n case KeyCodes.down: {\n this._isAdjustingSaturation = false;\n v -= increment; // V = 0 (darkest) is at the bottom\n break;\n }\n case KeyCodes.left: {\n this._isAdjustingSaturation = true;\n s -= increment;\n break;\n }\n case KeyCodes.right: {\n this._isAdjustingSaturation = true;\n s += increment;\n break;\n }\n default:\n return;\n }\n\n this._updateColor(ev, updateSV(color, clamp(s, MAX_COLOR_SATURATION), clamp(v, MAX_COLOR_VALUE)));\n };\n\n private _updateColor(ev: MouseEvent | KeyboardEvent | React.MouseEvent | React.KeyboardEvent, color: IColor): void {\n const { onChange } = this.props;\n\n const oldColor = this.state.color;\n if (color.s === oldColor.s && color.v === oldColor.v) {\n return; // no change\n }\n\n if (onChange) {\n onChange(ev as React.MouseEvent | React.KeyboardEvent, color);\n }\n\n if (!ev.defaultPrevented) {\n this.setState({ color });\n ev.preventDefault();\n }\n }\n\n private _onMouseDown = (ev: React.MouseEvent): void => {\n this._disposables.push(\n on(window, 'mousemove', this._onMouseMove as (ev: MouseEvent) => void, true),\n on(window, 'mouseup', this._disposeListeners, true),\n );\n\n this._onMouseMove(ev);\n };\n\n private _onMouseMove = (ev: MouseEvent | React.MouseEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n // Leaving the following commented code which is sometimes necessary for debugging:\n // If the primary button (1) isn't pressed, the user is no longer dragging, so turn off\n // the event handlers and exit.\n // if (!(ev.buttons & 1)) {\n // this._disposeListeners();\n // return;\n // }\n\n const newColor = _getNewColor(ev, this.state.color, this._root.current);\n if (newColor) {\n this._updateColor(ev, newColor);\n }\n };\n\n private _disposeListeners = (): void => {\n this._disposables.forEach(dispose => dispose());\n this._disposables = [];\n };\n}\n\n/**\n * Exported for testing only.\n * @internal\n */\nexport function _getNewColor(\n ev: MouseEvent | React.MouseEvent,\n prevColor: IColor,\n root: HTMLElement,\n): IColor | undefined {\n const rectSize = root.getBoundingClientRect();\n\n const sPercentage = (ev.clientX - rectSize.left) / rectSize.width;\n const vPercentage = (ev.clientY - rectSize.top) / rectSize.height;\n\n return updateSV(\n prevColor,\n clamp(Math.round(sPercentage * MAX_COLOR_SATURATION), MAX_COLOR_SATURATION),\n clamp(Math.round(MAX_COLOR_VALUE - vPercentage * MAX_COLOR_VALUE), MAX_COLOR_VALUE),\n );\n}\n","import { IColorRectangleStyleProps, IColorRectangleStyles } from './ColorRectangle.types';\nimport { HighContrastSelector, getHighContrastNoAdjustStyle } from '../../../Styling';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\nimport { hiddenContentStyle } from '@uifabric/styling';\n\nexport const getStyles = (props: IColorRectangleStyleProps): IColorRectangleStyles => {\n const { className, theme, minSize } = props;\n const { palette, effects } = theme;\n\n return {\n root: [\n 'ms-ColorPicker-colorRect',\n {\n position: 'relative',\n marginBottom: 8,\n border: `1px solid ${palette.neutralLighter}`,\n borderRadius: effects.roundedCorner2,\n minWidth: minSize,\n minHeight: minSize,\n outline: 'none',\n\n selectors: {\n [HighContrastSelector]: {\n ...getHighContrastNoAdjustStyle(),\n },\n\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${palette.neutralSecondary}`,\n },\n },\n },\n className,\n ],\n light: [\n 'ms-ColorPicker-light',\n {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n // Intentionally DO NOT flip the color picker in RTL: its orientation is not very meaningful,\n // and getting all the math and styles flipped correctly is tricky\n background: 'linear-gradient(to right, white 0%, transparent 100%) /*@noflip*/',\n },\n ],\n dark: [\n 'ms-ColorPicker-dark',\n {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n background: 'linear-gradient(to bottom, transparent 0, #000 100%)',\n },\n ],\n thumb: [\n 'ms-ColorPicker-thumb',\n {\n position: 'absolute',\n width: 20,\n height: 20,\n background: 'white',\n border: `1px solid ${palette.neutralSecondaryAlt}`,\n borderRadius: '50%',\n boxShadow: effects.elevation8,\n transform: 'translate(-50%, -50%)',\n selectors: {\n ':before': {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n border: `2px solid ${palette.white}`,\n borderRadius: '50%',\n boxSizing: 'border-box',\n content: '\"\"',\n },\n },\n },\n ],\n description: hiddenContentStyle,\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { ColorRectangleBase } from './ColorRectangle.base';\nimport { getStyles } from './ColorRectangle.styles';\nimport { IColorRectangleProps, IColorRectangleStyles, IColorRectangleStyleProps } from './ColorRectangle.types';\n\nexport const ColorRectangle: React.FunctionComponent<IColorRectangleProps> = styled<\n IColorRectangleProps,\n IColorRectangleStyleProps,\n IColorRectangleStyles\n>(ColorRectangleBase, getStyles, undefined, { scope: 'ColorRectangle' });\n","import * as React from 'react';\nimport {\n classNamesFunction,\n initializeComponentRef,\n on,\n KeyCodes,\n getWindow,\n warnDeprecations,\n warn,\n} from '../../../Utilities';\nimport { IColorSliderProps, IColorSliderStyleProps, IColorSliderStyles, IColorSlider } from './ColorSlider.types';\nimport { clamp } from '../../../utilities/color/clamp';\nimport { MAX_COLOR_HUE, MAX_COLOR_ALPHA } from '../../../utilities/color/consts';\n\nconst getClassNames = classNamesFunction<IColorSliderStyleProps, IColorSliderStyles>();\n\nexport interface IColorSliderState {\n currentValue: number;\n}\n\n/**\n * {@docCategory ColorPicker}\n */\nexport class ColorSliderBase extends React.Component<IColorSliderProps, IColorSliderState> implements IColorSlider {\n public static defaultProps: Partial<IColorSliderProps> = {\n value: 0,\n };\n\n private _disposables: (() => void)[] = [];\n private _root = React.createRef<HTMLDivElement>();\n\n constructor(props: IColorSliderProps) {\n super(props);\n\n initializeComponentRef(this);\n\n warnDeprecations('ColorSlider', props, {\n thumbColor: 'styles.sliderThumb',\n overlayStyle: 'overlayColor',\n isAlpha: 'type',\n maxValue: 'type',\n minValue: 'type',\n });\n // eslint-disable-next-line deprecation/deprecation\n if (this._type !== 'hue' && !(props.overlayColor || props.overlayStyle)) {\n warn(`ColorSlider: 'overlayColor' is required when 'type' is \"alpha\" or \"transparency\"`);\n }\n\n this.state = {\n currentValue: props.value || 0,\n };\n }\n\n public get value(): number {\n return this.state.currentValue;\n }\n\n public componentDidUpdate(prevProps: Readonly<IColorSliderProps>, prevState: Readonly<IColorSliderState>): void {\n // if props changed (as opposed to a state update), set the value\n // TODO: switch to strict controlled pattern instead\n if (prevProps !== this.props && this.props.value !== undefined) {\n this.setState({ currentValue: this.props.value });\n }\n }\n\n public componentWillUnmount() {\n this._disposeListeners();\n }\n\n public render(): JSX.Element {\n const type = this._type;\n const maxValue = this._maxValue;\n const {\n // eslint-disable-next-line deprecation/deprecation\n overlayStyle,\n overlayColor,\n theme,\n className,\n styles,\n ariaLabel = type,\n } = this.props;\n const currentValue = this.value;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n type,\n });\n\n const currentPercentage = (100 * currentValue) / maxValue;\n\n return (\n <div\n ref={this._root}\n className={classNames.root}\n tabIndex={0}\n onKeyDown={this._onKeyDown}\n onMouseDown={this._onMouseDown}\n role=\"slider\"\n aria-valuenow={currentValue}\n // Narrator doesn't read aria-valuenow properly\n aria-valuetext={String(currentValue)}\n aria-valuemin={0}\n aria-valuemax={maxValue}\n aria-label={ariaLabel}\n data-is-focusable={true}\n >\n {!!(overlayColor || overlayStyle) && (\n <div\n className={classNames.sliderOverlay}\n // this isn't included in getStyles because it may change frequently\n style={\n overlayColor\n ? {\n background:\n type === 'transparency'\n ? `linear-gradient(to right, #${overlayColor}, transparent)`\n : `linear-gradient(to right, transparent, #${overlayColor})`,\n }\n : overlayStyle\n }\n />\n )}\n <div className={classNames.sliderThumb} style={{ left: currentPercentage + '%' }} />\n </div>\n );\n }\n\n private get _type(): IColorSliderProps['type'] {\n // eslint-disable-next-line deprecation/deprecation\n const { isAlpha, type = isAlpha ? 'alpha' : 'hue' } = this.props;\n return type;\n }\n\n private get _maxValue(): number {\n return this._type === 'hue' ? MAX_COLOR_HUE : MAX_COLOR_ALPHA;\n }\n\n private _onKeyDown = (ev: React.KeyboardEvent): void => {\n let currentValue = this.value;\n const maxValue = this._maxValue;\n const increment = ev.shiftKey ? 10 : 1;\n\n // Intentionally DO NOT flip the color picker in RTL: its orientation is not very meaningful,\n // and getting all the math and styles flipped correctly is tricky\n switch (ev.which) {\n case KeyCodes.left: {\n currentValue -= increment;\n break;\n }\n case KeyCodes.right: {\n currentValue += increment;\n break;\n }\n case KeyCodes.home: {\n currentValue = 0;\n break;\n }\n case KeyCodes.end: {\n currentValue = maxValue;\n break;\n }\n default: {\n return;\n }\n }\n\n this._updateValue(ev, clamp(currentValue, maxValue));\n };\n\n private _onMouseDown = (ev: React.MouseEvent<HTMLElement>): void => {\n const win = getWindow(this as any);\n\n if (win) {\n this._disposables.push(\n on(win, 'mousemove', this._onMouseMove as (ev: MouseEvent) => void, true),\n on(win, 'mouseup', this._disposeListeners, true),\n );\n }\n\n this._onMouseMove(ev);\n };\n\n private _onMouseMove = (ev: MouseEvent | React.MouseEvent): void => {\n if (!this._root.current) {\n return;\n }\n\n const maxValue = this._maxValue;\n const rectSize = this._root.current.getBoundingClientRect();\n\n const currentPercentage = (ev.clientX - rectSize.left) / rectSize.width;\n const newValue = clamp(Math.round(currentPercentage * maxValue), maxValue);\n\n this._updateValue(ev, newValue);\n };\n\n private _disposeListeners = (): void => {\n this._disposables.forEach(dispose => dispose());\n this._disposables = [];\n };\n\n private _updateValue(ev: MouseEvent | KeyboardEvent | React.MouseEvent | React.KeyboardEvent, newValue: number) {\n if (newValue === this.value) {\n return;\n }\n\n const { onChange } = this.props;\n\n if (onChange) {\n onChange(ev as React.MouseEvent | React.KeyboardEvent, newValue);\n }\n\n if (!ev.defaultPrevented) {\n this.setState({\n currentValue: newValue,\n });\n ev.preventDefault();\n }\n }\n}\n","import { IColorSliderStyleProps, IColorSliderStyles } from './ColorSlider.types';\nimport { IsFocusVisibleClassName } from '../../../Utilities';\n\nconst hueStyle = {\n background: `linear-gradient(${[\n 'to left',\n 'red 0',\n '#f09 10%',\n '#cd00ff 20%',\n '#3200ff 30%',\n '#06f 40%',\n '#00fffd 50%',\n '#0f6 60%',\n '#35ff00 70%',\n '#cdff00 80%',\n '#f90 90%',\n 'red 100%',\n ].join(',')})`,\n};\n\nconst alphaStyle = {\n backgroundImage:\n 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJUlEQVQYV2N89erVfwY0ICYmxoguxjgUFKI7GsTH5m4M3w1ChQC1/Ca8i2n1WgAAAABJRU5ErkJggg==)',\n};\n\nexport const getStyles = (props: IColorSliderStyleProps): IColorSliderStyles => {\n // eslint-disable-next-line deprecation/deprecation\n const { theme, className, type = 'hue', isAlpha: useAlphaBackground = type !== 'hue' } = props;\n const { palette, effects } = theme;\n\n return {\n root: [\n 'ms-ColorPicker-slider',\n {\n position: 'relative',\n height: 20,\n marginBottom: 8,\n border: `1px solid ${palette.neutralLight}`,\n borderRadius: effects.roundedCorner2,\n boxSizing: 'border-box',\n outline: 'none',\n\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${palette.neutralSecondary}`,\n },\n },\n },\n useAlphaBackground ? alphaStyle : hueStyle,\n className,\n ],\n sliderOverlay: [\n 'ms-ColorPicker-sliderOverlay',\n {\n content: '',\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n ],\n sliderThumb: [\n 'ms-ColorPicker-thumb',\n 'is-slider',\n {\n position: 'absolute',\n width: 20,\n height: 20,\n background: 'white',\n border: `1px solid ${palette.neutralSecondaryAlt}`,\n borderRadius: '50%',\n boxShadow: effects.elevation8,\n transform: 'translate(-50%, -50%)',\n top: '50%',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../../Utilities';\nimport { ColorSliderBase } from './ColorSlider.base';\nimport { getStyles } from './ColorSlider.styles';\nimport { IColorSliderProps, IColorSliderStyleProps, IColorSliderStyles } from './ColorSlider.types';\n\nexport const ColorSlider: React.FunctionComponent<IColorSliderProps> = styled<\n IColorSliderProps,\n IColorSliderStyleProps,\n IColorSliderStyles\n>(ColorSliderBase, getStyles, undefined, { scope: 'ColorSlider' });\n","import { IRGB } from './interfaces';\nimport { MAX_COLOR_ALPHA } from './consts';\nimport { hsl2rgb } from './hsl2rgb';\n\n/**\n * Converts a valid CSS color string to an RGB color.\n * Note that hex colors *must* be prefixed with # to be considered valid.\n * Alpha in returned color defaults to 100.\n * Four and eight digit hex values (with alpha) are supported if the current browser supports them.\n */\nexport function cssColor(color?: string): IRGB | undefined {\n if (!color) {\n return undefined;\n }\n\n // Need to check the following valid color formats: RGB(A), HSL(A), hex, named color\n\n // First check for well formatted RGB(A), HSL(A), and hex formats at the start.\n // This is for perf (no creating an element) and catches the intentional \"transparent\" color\n // case early on.\n const easyColor: IRGB | undefined = _rgba(color) || _hex6(color) || _hex3(color) || _hsla(color);\n if (easyColor) {\n return easyColor;\n }\n\n // if the above fails, do the more expensive catch-all\n return _browserCompute(color);\n}\n\n/**\n * Uses the browser's getComputedStyle() to determine what the passed-in color is.\n * This assumes _rgba, _hex6, _hex3, and _hsla have already been tried and all failed.\n * This works by attaching an element to the DOM, which may fail in server-side rendering\n * or with headless browsers.\n */\nfunction _browserCompute(str: string): IRGB | undefined {\n if (typeof document === 'undefined') {\n // don't throw an error when used server-side\n return undefined;\n }\n const elem = document.createElement('div');\n elem.style.backgroundColor = str;\n // This element must be attached to the DOM for getComputedStyle() to have a value\n elem.style.position = 'absolute';\n elem.style.top = '-9999px';\n elem.style.left = '-9999px';\n elem.style.height = '1px';\n elem.style.width = '1px';\n document.body.appendChild(elem);\n const eComputedStyle = getComputedStyle(elem);\n const computedColor = eComputedStyle && eComputedStyle.backgroundColor;\n document.body.removeChild(elem);\n // computedColor is always an RGB(A) string, except for invalid colors in IE/Edge which return 'transparent'\n\n // browsers return one of these if the color string is invalid,\n // so need to differentiate between an actual error and intentionally passing in this color\n if (computedColor === 'rgba(0, 0, 0, 0)' || computedColor === 'transparent') {\n switch (str.trim()) {\n // RGB and HSL were already checked at the start of the function\n case 'transparent':\n case '#0000':\n case '#00000000':\n return { r: 0, g: 0, b: 0, a: 0 };\n }\n return undefined;\n }\n\n return _rgba(computedColor);\n}\n\n/**\n * If `str` is in valid `rgb()` or `rgba()` format, returns an RGB color (alpha defaults to 100).\n * Otherwise returns undefined.\n */\nfunction _rgba(str?: string | null): IRGB | undefined {\n if (!str) {\n return undefined;\n }\n\n const match = str.match(/^rgb(a?)\\(([\\d., ]+)\\)$/);\n if (match) {\n const hasAlpha = !!match[1];\n const expectedPartCount = hasAlpha ? 4 : 3;\n const parts = match[2].split(/ *, */).map(Number);\n\n if (parts.length === expectedPartCount) {\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: hasAlpha ? parts[3] * 100 : MAX_COLOR_ALPHA,\n };\n }\n }\n}\n\n/**\n * If `str` is in `hsl()` or `hsla()` format, returns an RGB color (alpha defaults to 100).\n * Otherwise returns undefined.\n */\nfunction _hsla(str: string): IRGB | undefined {\n const match = str.match(/^hsl(a?)\\(([\\d., ]+)\\)$/);\n if (match) {\n const hasAlpha = !!match[1];\n const expectedPartCount = hasAlpha ? 4 : 3;\n const parts = match[2].split(/ *, */).map(Number);\n\n if (parts.length === expectedPartCount) {\n const rgba = hsl2rgb(parts[0], parts[1], parts[2]);\n rgba.a = hasAlpha ? parts[3] * 100 : MAX_COLOR_ALPHA;\n return rgba;\n }\n }\n}\n\n/**\n * If `str` is in valid 6-digit hex format *with* # prefix, returns an RGB color (with alpha 100).\n * Otherwise returns undefined.\n */\nfunction _hex6(str: string): IRGB | undefined {\n if (str[0] === '#' && str.length === 7 && /^#[\\da-fA-F]{6}$/.test(str)) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: MAX_COLOR_ALPHA,\n };\n }\n}\n\n/**\n * If `str` is in valid 3-digit hex format *with* # prefix, returns an RGB color (with alpha 100).\n * Otherwise returns undefined.\n */\nfunction _hex3(str: string): IRGB | undefined {\n if (str[0] === '#' && str.length === 4 && /^#[\\da-fA-F]{3}$/.test(str)) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: MAX_COLOR_ALPHA,\n };\n }\n}\n","import { IRGB } from './interfaces';\nimport { hsl2hsv } from './hsl2hsv';\nimport { hsv2rgb } from './hsv2rgb';\n\n/** Converts HSL components to an RGB color. Does not set the alpha value. */\nexport function hsl2rgb(h: number, s: number, l: number): IRGB {\n const hsv = hsl2hsv(h, s, l);\n\n return hsv2rgb(hsv.h, hsv.s, hsv.v);\n}\n","import { IHSV } from './interfaces';\n\n/** Converts HSL components to an HSV color. */\nexport function hsl2hsv(h: number, s: number, l: number): IHSV {\n s *= (l < 50 ? l : 100 - l) / 100;\n const v = l + s;\n\n return {\n h: h,\n s: v === 0 ? 0 : ((2 * s) / v) * 100,\n v: v,\n };\n}\n","import { IRGB, IColor } from './interfaces';\nimport { MAX_COLOR_ALPHA } from './consts';\nimport { rgb2hsv } from './rgb2hsv';\nimport { rgb2hex } from './rgb2hex';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\n\n/** Converts an RGBA color to a color object (alpha defaults to 100). */\nexport function getColorFromRGBA(rgba: IRGB): IColor {\n const { a = MAX_COLOR_ALPHA, b, g, r } = rgba;\n const { h, s, v } = rgb2hsv(r, g, b);\n const hex = rgb2hex(r, g, b);\n const str = _rgbaOrHexString(r, g, b, a, hex);\n const t = MAX_COLOR_ALPHA - a;\n\n return { a, b, g, h, hex, r, s, str, v, t };\n}\n","import { IHSV } from './interfaces';\nimport { MAX_COLOR_RGB } from './consts';\n\n/** Converts RGB components to an HSV color. */\nexport function rgb2hsv(r: number, g: number, b: number): IHSV {\n let h = NaN;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n // hue\n if (delta === 0) {\n h = 0;\n } else if (r === max) {\n h = ((g - b) / delta) % 6;\n } else if (g === max) {\n h = (b - r) / delta + 2;\n } else if (b === max) {\n h = (r - g) / delta + 4;\n }\n\n h = Math.round(h * 60);\n\n if (h < 0) {\n h += 360;\n }\n\n // saturation\n const s = Math.round((max === 0 ? 0 : delta / max) * 100);\n\n // value\n const v = Math.round((max / MAX_COLOR_RGB) * 100);\n\n return { h, s, v };\n}\n","import { IColor } from './interfaces';\nimport { cssColor } from './cssColor';\nimport { getColorFromRGBA } from './getColorFromRGBA';\n\n/**\n * Converts a CSS color string to a color object.\n * Note that hex colors *must* be prefixed with # to be considered valid.\n *\n * `inputColor` will be used unmodified as the `str` property of the returned object.\n * Alpha defaults to 100 if not specified in `inputColor`.\n * Returns undefined if the color string is invalid/not recognized.\n */\nexport function getColorFromString(inputColor: string): IColor | undefined {\n const color = cssColor(inputColor);\n\n if (!color) {\n return;\n }\n\n return {\n ...getColorFromRGBA(color!),\n str: inputColor,\n };\n}\n","import { IColor } from './interfaces';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\nimport { MAX_COLOR_ALPHA } from './consts';\n\n/**\n * Gets a color with the given alpha value and the same other components as `color`.\n * Does not modify the original color.\n */\nexport function updateA(color: IColor, a: number): IColor {\n return {\n ...color,\n a,\n t: MAX_COLOR_ALPHA - a,\n str: _rgbaOrHexString(color.r, color.g, color.b, a, color.hex),\n };\n}\n","import { IColor } from './interfaces';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\nimport { MAX_COLOR_ALPHA } from './consts';\n\n/**\n * Gets a color with the given transparency value and the same other components as `color`.\n * Does not modify the original color.\n */\nexport function updateT(color: IColor, t: number): IColor {\n const a = MAX_COLOR_ALPHA - t;\n return {\n ...color,\n t,\n a,\n str: _rgbaOrHexString(color.r, color.g, color.b, a, color.hex),\n };\n}\n","import * as React from 'react';\nimport { classNamesFunction, initializeComponentRef, warnDeprecations, warn } from '../../Utilities';\nimport {\n IColorPickerProps,\n IColorPickerStyleProps,\n IColorPickerStyles,\n IColorPicker,\n IColorPickerStrings,\n} from './ColorPicker.types';\nimport { TextField } from '../../TextField';\nimport { ColorRectangle } from './ColorRectangle/ColorRectangle';\nimport { ColorSlider } from './ColorSlider/ColorSlider';\nimport {\n MAX_COLOR_ALPHA,\n MAX_COLOR_RGB,\n MAX_HEX_LENGTH,\n MAX_RGBA_LENGTH,\n MIN_HEX_LENGTH,\n MIN_RGBA_LENGTH,\n HEX_REGEX,\n RGBA_REGEX,\n} from '../../utilities/color/consts';\n// These imports are separated to help with bundling\nimport { IColor, IRGB } from '../../utilities/color/interfaces';\nimport { getColorFromString } from '../../utilities/color/getColorFromString';\nimport { getColorFromRGBA } from '../../utilities/color/getColorFromRGBA';\nimport { clamp } from '../../utilities/color/clamp';\nimport { updateA } from '../../utilities/color/updateA';\nimport { updateT } from '../../utilities/color/updateT';\nimport { updateH } from '../../utilities/color/updateH';\nimport { correctRGB } from '../../utilities/color/correctRGB';\nimport { correctHex } from '../../utilities/color/correctHex';\nimport { ColorRectangleBase } from './ColorRectangle/ColorRectangle.base';\n\ntype ColorComponent = keyof Pick<IColor, 'r' | 'g' | 'b' | 'a' | 't' | 'hex'>;\n\nexport interface IColorPickerState {\n /** Most recently selected color */\n color: IColor;\n /** Color component currently being edited via a text field (if intermediate value is invalid) */\n editingColor?: {\n /** Which color component is being edited */\n component: ColorComponent;\n /** Currently entered value, which is not valid */\n value: string;\n };\n}\n\nconst getClassNames = classNamesFunction<IColorPickerStyleProps, IColorPickerStyles>();\n\nconst allColorComponents: ColorComponent[] = ['hex', 'r', 'g', 'b', 'a', 't'];\n\n/**\n * {@docCategory ColorPicker}\n */\nexport class ColorPickerBase extends React.Component<IColorPickerProps, IColorPickerState> implements IColorPicker {\n public static defaultProps: Partial<IColorPickerProps> = {\n alphaType: 'alpha',\n strings: {\n rootAriaLabelFormat: 'Color picker, {0} selected.',\n hex: 'Hex',\n red: 'Red',\n green: 'Green',\n blue: 'Blue',\n alpha: 'Alpha',\n transparency: 'Transparency',\n hueAriaLabel: 'Hue',\n svAriaLabel: ColorRectangleBase.defaultProps.ariaLabel!,\n svAriaValueFormat: ColorRectangleBase.defaultProps.ariaValueFormat!,\n svAriaDescription: ColorRectangleBase.defaultProps.ariaDescription!,\n },\n };\n\n private _textChangeHandlers: {\n [K in ColorComponent]: (event: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue?: string) => void;\n };\n /**\n * Strings displayed in the UI as text field labels (these are in a separate object for convenient\n * indexing by short color component name).\n */\n private _textLabels: { [K in ColorComponent]: string };\n\n /** Strings besides red/green/blue/alpha/hex, with defaults for all values except the deprecated `hue` */\n private _strings: Required<Omit<IColorPickerStrings, ColorComponent | 'hue'>> & Pick<IColorPickerStrings, 'hue'>;\n\n constructor(props: IColorPickerProps) {\n super(props);\n\n initializeComponentRef(this);\n\n const strings = props.strings!; // always defined since it's in defaultProps\n\n warnDeprecations('ColorPicker', props, {\n hexLabel: 'strings.hex',\n redLabel: 'strings.red',\n greenLabel: 'strings.green',\n blueLabel: 'strings.blue',\n alphaLabel: 'strings.alpha',\n alphaSliderHidden: 'alphaType',\n });\n\n // eslint-disable-next-line deprecation/deprecation\n if (strings.hue) {\n // warnDeprecations can't handle nested deprecated props\n warn(\"ColorPicker property 'strings.hue' was used but has been deprecated. Use 'strings.hueAriaLabel' instead.\");\n }\n\n this.state = {\n color: _getColorFromProps(props) || getColorFromString('#ffffff')!,\n };\n\n this._textChangeHandlers = {} as any;\n for (const component of allColorComponents) {\n this._textChangeHandlers[component] = this._onTextChange.bind(this, component);\n }\n\n const defaultStrings = ColorPickerBase.defaultProps.strings as Required<IColorPickerStrings>;\n\n this._textLabels = {\n /* eslint-disable deprecation/deprecation */\n r: props.redLabel || strings.red || defaultStrings.red,\n g: props.greenLabel || strings.green || defaultStrings.green,\n b: props.blueLabel || strings.blue || defaultStrings.blue,\n a: props.alphaLabel || strings.alpha || defaultStrings.alpha,\n hex: props.hexLabel || strings.hex || defaultStrings.hex,\n t: strings.transparency || defaultStrings.transparency,\n /* eslint-enable deprecation/deprecation */\n };\n\n this._strings = {\n ...defaultStrings,\n // these aria labels default to the visible labels\n alphaAriaLabel: this._textLabels.a,\n transparencyAriaLabel: this._textLabels.t,\n ...strings,\n };\n }\n\n public get color(): IColor {\n return this.state.color;\n }\n\n public componentDidUpdate(prevProps: Readonly<IColorPickerProps>, prevState: Readonly<IColorPickerState>): void {\n // if props changed (as opposed to a state update), update the color\n if (prevProps !== this.props) {\n const color = _getColorFromProps(this.props);\n if (color) {\n this._updateColor(undefined, color);\n }\n }\n }\n\n public render(): JSX.Element {\n const props = this.props;\n const strings = this._strings;\n const textLabels = this._textLabels;\n const {\n theme,\n className,\n styles,\n alphaType,\n // eslint-disable-next-line deprecation/deprecation\n alphaSliderHidden = alphaType === 'none',\n } = props;\n const { color } = this.state;\n const useTransparency = alphaType === 'transparency';\n const colorComponents = ['hex', 'r', 'g', 'b', useTransparency ? 't' : 'a'];\n const atValue = useTransparency ? color.t : color.a;\n const atLabel = useTransparency ? textLabels.t : textLabels.a;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n alphaType,\n });\n\n const selectedColorAriaParts = [textLabels.r, color.r, textLabels.g, color.g, textLabels.b, color.b];\n if (!alphaSliderHidden && typeof atValue === 'number') {\n selectedColorAriaParts.push(atLabel, `${atValue}%`);\n }\n const ariaLabel = strings.rootAriaLabelFormat.replace('{0}', selectedColorAriaParts.join(' '));\n\n return (\n <div className={classNames.root} role=\"group\" aria-label={ariaLabel}>\n <div className={classNames.panel}>\n <ColorRectangle\n color={color}\n onChange={this._onSVChanged}\n ariaLabel={strings.svAriaLabel}\n ariaDescription={strings.svAriaDescription}\n ariaValueFormat={strings.svAriaValueFormat}\n className={classNames.colorRectangle}\n />\n <div className={classNames.flexContainer}>\n <div className={classNames.flexSlider}>\n <ColorSlider\n className=\"is-hue\"\n type=\"hue\"\n // eslint-disable-next-line deprecation/deprecation\n ariaLabel={strings.hue || strings.hueAriaLabel}\n value={color.h}\n onChange={this._onHChanged}\n />\n {!alphaSliderHidden && (\n <ColorSlider\n className=\"is-alpha\"\n type={alphaType as 'alpha' | 'transparency'}\n ariaLabel={useTransparency ? strings.transparencyAriaLabel : strings.alphaAriaLabel}\n overlayColor={color.hex}\n value={atValue}\n onChange={this._onATChanged}\n />\n )}\n </div>\n {props.showPreview && (\n <div className={classNames.flexPreviewBox}>\n <div\n className={classNames.colorSquare + ' is-preview'}\n style={{\n backgroundColor: color.str,\n }}\n />\n </div>\n )}\n </div>\n\n {/* Give the table role=group to prevent it from being read as a table (ideally we should\n just get rid of the table, but this has the potential of breaking consumers) */}\n <table className={classNames.table} role=\"group\" cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr className={classNames.tableHeader}>\n <td className={classNames.tableHexCell}>{textLabels.hex}</td>\n <td>{textLabels.r}</td>\n <td>{textLabels.g}</td>\n <td>{textLabels.b}</td>\n {!alphaSliderHidden && <td className={classNames.tableAlphaCell}>{atLabel}</td>}\n </tr>\n </thead>\n <tbody>\n <tr>\n {colorComponents.map((comp: ColorComponent) => {\n if ((comp === 'a' || comp === 't') && alphaSliderHidden) {\n return null;\n }\n return (\n <td key={comp}>\n <TextField\n className={classNames.input}\n onChange={this._textChangeHandlers[comp]}\n onBlur={this._onBlur}\n value={this._getDisplayValue(comp)}\n spellCheck={false}\n ariaLabel={textLabels[comp]}\n aria-live={comp !== 'hex' ? 'assertive' : undefined}\n autoComplete=\"off\"\n />\n </td>\n );\n })}\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n );\n }\n\n private _getDisplayValue(component: ColorComponent): string {\n const { color, editingColor } = this.state;\n if (editingColor && editingColor.component === component) {\n return editingColor.value;\n }\n if (component === 'hex') {\n return color[component] || '';\n } else if (typeof color[component] === 'number' && !isNaN(color[component] as number)) {\n return String(color[component]);\n }\n return '';\n }\n\n private _onSVChanged = (ev: React.MouseEvent<HTMLElement>, color: IColor): void => {\n this._updateColor(ev, color);\n };\n\n private _onHChanged = (ev: React.MouseEvent<HTMLElement>, h: number): void => {\n this._updateColor(ev, updateH(this.state.color, h));\n };\n\n /** Callback for when the alpha/transparency slider changes */\n private _onATChanged = (ev: React.MouseEvent<HTMLElement>, value: number): void => {\n const updater = this.props.alphaType === 'transparency' ? updateT : updateA;\n this._updateColor(ev, updater(this.state.color, Math.round(value)));\n };\n\n private _onTextChange(component: ColorComponent, event: React.FormEvent<HTMLInputElement>, newValue?: string): void {\n const color = this.state.color;\n const isHex = component === 'hex';\n const isAlpha = component === 'a';\n const isTransparency = component === 't';\n newValue = (newValue || '').substr(0, isHex ? MAX_HEX_LENGTH : MAX_RGBA_LENGTH);\n\n // Ignore what the user typed if it contains invalid characters\n const validCharsRegex = isHex ? HEX_REGEX : RGBA_REGEX;\n if (!validCharsRegex.test(newValue)) {\n return;\n }\n\n // Determine if the entry is valid (different methods for hex, alpha, and RGB)\n let isValid: boolean;\n if (newValue === '') {\n // Empty string is obviously not valid\n isValid = false;\n } else if (isHex) {\n // Technically hex values of length 3 are also valid, but committing the value here would\n // cause it to be automatically converted to a value of length 6, which may not be what the\n // user wanted if they're not finished typing. (Values of length 3 will be committed on blur.)\n isValid = newValue.length === MAX_HEX_LENGTH;\n } else if (isAlpha || isTransparency) {\n isValid = Number(newValue) <= MAX_COLOR_ALPHA;\n } else {\n isValid = Number(newValue) <= MAX_COLOR_RGB;\n }\n\n if (!isValid) {\n // If the new value is an empty string or other invalid value, save that to display.\n // (if the user still hasn't entered anything on blur, the last value is restored)\n this.setState({ editingColor: { component, value: newValue } });\n } else if (String(color[component]) === newValue) {\n // If the new value is the same as the current value, mostly ignore it.\n // Exception is that if the user was previously editing the value (but hadn't yet entered\n // a new valid value), we should clear the intermediate value.\n if (this.state.editingColor) {\n this.setState({ editingColor: undefined });\n }\n } else {\n // Should be a valid color. Update the value.\n const newColor = isHex\n ? getColorFromString('#' + newValue)\n : isTransparency\n ? updateT(color, Number(newValue))\n : getColorFromRGBA({\n ...color,\n // Overwrite whichever key is being updated with the new value\n [component]: Number(newValue),\n });\n this._updateColor(event, newColor);\n }\n }\n\n private _onBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { color, editingColor } = this.state;\n if (!editingColor) {\n return;\n }\n\n // If there was an intermediate incorrect value (such as too large or empty), correct it.\n const { value, component } = editingColor;\n const isHex = component === 'hex';\n const isAlpha = component === 'a';\n const isTransparency = component === 't';\n const minLength = isHex ? MIN_HEX_LENGTH : MIN_RGBA_LENGTH;\n if (value.length >= minLength && (isHex || !isNaN(Number(value)))) {\n // Real value. Clamp to appropriate length (hex) or range (rgba).\n let newColor: IColor | undefined;\n if (isHex) {\n newColor = getColorFromString('#' + correctHex(value));\n } else if (isAlpha || isTransparency) {\n const updater = isAlpha ? updateA : updateT;\n newColor = updater(color, clamp(Number(value), MAX_COLOR_ALPHA));\n } else {\n newColor = getColorFromRGBA(\n correctRGB({\n ...color,\n [component]: Number(value),\n } as IRGB),\n );\n }\n\n // Update state and call onChange\n this._updateColor(event, newColor);\n } else {\n // Intermediate value was an empty string or too short (hex only).\n // Just clear the intermediate state and revert to the previous value.\n this.setState({ editingColor: undefined });\n }\n };\n\n /**\n * Update the displayed color and call change handlers if appropriate.\n * @param ev - Event if call was triggered by an event (undefined if triggered by props change)\n * @param newColor - Updated color\n */\n private _updateColor(ev: React.SyntheticEvent<HTMLElement> | undefined, newColor: IColor | undefined): void {\n if (!newColor) {\n return;\n }\n\n const { color, editingColor } = this.state;\n // For black or white, the hue can change without changing the string.\n const isDifferentColor = newColor.h !== color.h || newColor.str !== color.str;\n\n if (isDifferentColor || editingColor) {\n // If ev is undefined, it's an update from props (which should be unconditionally respected\n // and not call onChange).\n if (ev && this.props.onChange) {\n this.props.onChange(ev, newColor);\n if (ev.defaultPrevented) {\n return;\n }\n }\n this.setState({ color: newColor, editingColor: undefined });\n }\n }\n}\n\nfunction _getColorFromProps(props: IColorPickerProps): IColor | undefined {\n const { color } = props;\n return typeof color === 'string' ? getColorFromString(color) : color;\n}\n","import { IColorPickerStyleProps, IColorPickerStyles } from './ColorPicker.types';\n\nexport const getStyles = (props: IColorPickerStyleProps): IColorPickerStyles => {\n const { className, theme, alphaType } = props;\n\n return {\n root: [\n 'ms-ColorPicker',\n theme.fonts.medium,\n {\n position: 'relative',\n maxWidth: 300,\n },\n className,\n ],\n panel: [\n 'ms-ColorPicker-panel',\n {\n padding: '16px',\n },\n ],\n table: [\n 'ms-ColorPicker-table',\n {\n tableLayout: 'fixed',\n width: '100%',\n selectors: {\n 'tbody td:last-of-type .ms-ColorPicker-input': {\n paddingRight: 0,\n },\n },\n },\n ],\n tableHeader: [\n theme.fonts.small,\n {\n selectors: {\n td: {\n paddingBottom: 4,\n },\n },\n },\n ],\n tableHexCell: {\n width: '25%',\n },\n // Account for \"Transparency\" being a longer word\n tableAlphaCell: alphaType === 'transparency' && {\n width: '22%',\n },\n colorSquare: [\n 'ms-ColorPicker-colorSquare',\n {\n width: 48,\n height: 48,\n margin: '0 0 0 8px',\n border: '1px solid #c8c6c4',\n },\n ],\n flexContainer: {\n display: 'flex',\n },\n flexSlider: {\n flexGrow: '1',\n },\n flexPreviewBox: {\n flexGrow: '0',\n },\n input: [\n 'ms-ColorPicker-input',\n {\n width: '100%',\n border: 'none',\n boxSizing: 'border-box',\n height: 30,\n selectors: {\n '&.ms-TextField': {\n paddingRight: 4,\n },\n '& .ms-TextField-field': {\n minWidth: 'auto',\n padding: 5,\n textOverflow: 'clip',\n },\n },\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ColorPickerBase } from './ColorPicker.base';\nimport { getStyles } from './ColorPicker.styles';\nimport { IColorPickerProps, IColorPickerStyles, IColorPickerStyleProps } from './ColorPicker.types';\n\nexport const ColorPicker: React.FunctionComponent<IColorPickerProps> = styled<\n IColorPickerProps,\n IColorPickerStyleProps,\n IColorPickerStyles\n>(ColorPickerBase, getStyles, undefined, { scope: 'ColorPicker' });\n","import { IColor } from './interfaces';\nimport { hsv2rgb } from './hsv2rgb';\nimport { rgb2hex } from './rgb2hex';\nimport { _rgbaOrHexString } from './_rgbaOrHexString';\n\n/**\n * Gets a color with the same saturation and value as `color` and the other components updated\n * to match the given hue.\n *\n * Does not modify the original `color` and does not supply a default alpha value.\n */\nexport function updateH(color: IColor, h: number): IColor {\n const { r, g, b } = hsv2rgb(h, color.s, color.v);\n const hex = rgb2hex(r, g, b);\n\n return {\n ...color,\n h,\n r,\n g,\n b,\n hex,\n str: _rgbaOrHexString(r, g, b, color.a, hex),\n };\n}\n","import { MIN_HEX_LENGTH, MAX_HEX_LENGTH } from './consts';\n\n/**\n * Corrects a hex color to have length 3 or 6. Defaults to white if too short.\n * Does NOT check anything besides the length (such as valid characters) and does NOT handle\n * hex values starting with # sign.\n */\nexport function correctHex(hex: string): string {\n if (!hex || hex.length < MIN_HEX_LENGTH) {\n return 'ffffff'; // not a valid color--default to white\n }\n if (hex.length >= MAX_HEX_LENGTH) {\n return hex.substring(0, MAX_HEX_LENGTH);\n }\n return hex.substring(0, MIN_HEX_LENGTH);\n}\n","import { IRGB } from './interfaces';\nimport { MAX_COLOR_ALPHA, MAX_COLOR_RGB } from './consts';\nimport { clamp } from './clamp';\n\n/** Corrects an RGB color to fall within the valid range. */\nexport function correctRGB(color: IRGB): IRGB {\n return {\n r: clamp(color.r, MAX_COLOR_RGB),\n g: clamp(color.g, MAX_COLOR_RGB),\n b: clamp(color.b, MAX_COLOR_RGB),\n a: typeof color.a === 'number' ? clamp(color.a, MAX_COLOR_ALPHA) : color.a,\n };\n}\n","import * as React from 'react';\nimport { useConst } from './useConst';\n\n/** Updater callbacks returned by `useBoolean`. */\nexport interface IUseBooleanCallbacks {\n /** Set the value to true. Always has the same identity. */\n setTrue: () => void;\n /** Set the value to false. Always has the same identity. */\n setFalse: () => void;\n /** Toggle the value. Always has the same identity. */\n toggle: () => void;\n}\n\n/**\n * Hook to store a value and generate callbacks for setting the value to true or false.\n * The identity of the callbacks will always stay the same.\n *\n * @param initialState - Initial value\n * @returns Array with the current value and an object containing the updater callbacks.\n */\nexport function useBoolean(initialState: boolean): [boolean, IUseBooleanCallbacks] {\n const [value, setValue] = React.useState(initialState);\n // Storing the value in a ref is redundant but allows the `toggle` callback to have a\n // constant identity, which overall is probably better for consumers' perf.\n const valueRef = React.useRef(value);\n\n const setTrue = useConst(() => () => {\n setValue(true);\n valueRef.current = true;\n });\n const setFalse = useConst(() => () => {\n setValue(false);\n valueRef.current = false;\n });\n const toggle = useConst(() => () => (valueRef.current ? setFalse() : setTrue()));\n\n return [value, { setTrue, setFalse, toggle }];\n}\n","/**\n * The helper functions here will make the target element as modal to screen readers, by placing aria-hidden on elements\n * that are siblings to the target element and the target element's ancestors (because aria-hidden gets inherited).\n * That way, all other elements on the page are hidden to the screen reader.\n */\n\nimport { getDocument } from './dom/getDocument';\n\n/**\n * Call this on a target element to make it modal to screen readers.\n * Returns a function that undoes the changes it made.\n */\nexport function modalize(target: HTMLElement): () => void {\n let affectedNodes: HTMLElement[] = [];\n const targetDocument = getDocument(target) || document;\n\n // start at target, then recurse and do the same for parent, until we reach <body>\n while (target !== targetDocument.body) {\n // grab all siblings of current element\n for (const sibling of (target.parentElement!.children as unknown) as Array<HTMLElement>) {\n // but ignore elements that are already aria-hidden\n if (sibling !== target && sibling.getAttribute('aria-hidden')?.toLowerCase() !== 'true') {\n affectedNodes.push(sibling);\n }\n }\n\n if (!target.parentElement) {\n break;\n }\n target = target.parentElement;\n }\n\n // take all those elements and set aria-hidden=true on them\n affectedNodes.forEach(node => {\n node.setAttribute('aria-hidden', 'true');\n });\n\n return () => {\n unmodalize(affectedNodes);\n affectedNodes = []; // dispose\n };\n}\n\n/**\n * Undoes the changes that modalize() did.\n */\nfunction unmodalize(affectedNodes: HTMLElement[]) {\n affectedNodes.forEach(node => {\n // set instead of removing in case other components explicitly set aria-hidden and do ==\"true\" or ==\"false\"\n node.setAttribute('aria-hidden', 'false');\n });\n}\n","import * as React from 'react';\nimport { modalize } from '@uifabric/utilities';\nimport {\n elementContains,\n getNativeProps,\n divProperties,\n getFirstTabbable,\n getLastTabbable,\n getNextElement,\n getDocument,\n focusAsync,\n initializeComponentRef,\n on,\n} from '../../Utilities';\nimport { IFocusTrapZone, IFocusTrapZoneProps } from './FocusTrapZone.types';\n\nexport class FocusTrapZone extends React.Component<IFocusTrapZoneProps, {}> implements IFocusTrapZone {\n private static _focusStack: FocusTrapZone[] = [];\n\n private _root = React.createRef<HTMLDivElement>();\n private _firstBumper = React.createRef<HTMLDivElement>();\n private _lastBumper = React.createRef<HTMLDivElement>();\n private _hasFocus: boolean = false;\n private _unmodalize?: () => void;\n\n private _previouslyFocusedElementOutsideTrapZone: HTMLElement;\n private _previouslyFocusedElementInTrapZone?: HTMLElement;\n private _disposeFocusHandler: (() => void) | undefined;\n private _disposeClickHandler: (() => void) | undefined;\n\n public constructor(props: IFocusTrapZoneProps) {\n super(props);\n initializeComponentRef(this);\n }\n\n public componentDidMount(): void {\n this._bringFocusIntoZone();\n this._updateEventHandlers(this.props);\n\n if (!this.props.disabled && this._root.current && this.props.enableAriaHiddenSiblings) {\n this._unmodalize = modalize(this._root.current);\n }\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: IFocusTrapZoneProps): void {\n const { elementToFocusOnDismiss } = nextProps;\n if (elementToFocusOnDismiss && this._previouslyFocusedElementOutsideTrapZone !== elementToFocusOnDismiss) {\n this._previouslyFocusedElementOutsideTrapZone = elementToFocusOnDismiss;\n }\n\n this._updateEventHandlers(nextProps);\n }\n\n public componentDidUpdate(prevProps: IFocusTrapZoneProps) {\n const prevForceFocusInsideTrap =\n prevProps.forceFocusInsideTrap !== undefined ? prevProps.forceFocusInsideTrap : true;\n const newForceFocusInsideTrap =\n this.props.forceFocusInsideTrap !== undefined ? this.props.forceFocusInsideTrap : true;\n const prevDisabled = prevProps.disabled !== undefined ? prevProps.disabled : false;\n const newDisabled = this.props.disabled !== undefined ? this.props.disabled : false;\n\n if ((!prevForceFocusInsideTrap && newForceFocusInsideTrap) || (prevDisabled && !newDisabled)) {\n // Transition from forceFocusInsideTrap / FTZ disabled to enabled.\n // Emulate what happens when a FocusTrapZone gets mounted.\n this._bringFocusIntoZone();\n if (!this._unmodalize && this._root.current && this.props.enableAriaHiddenSiblings) {\n this._unmodalize = modalize(this._root.current);\n }\n } else if ((prevForceFocusInsideTrap && !newForceFocusInsideTrap) || (!prevDisabled && newDisabled)) {\n // Transition from forceFocusInsideTrap / FTZ enabled to disabled.\n // Emulate what happens when a FocusTrapZone gets unmounted.\n this._returnFocusToInitiator();\n if (this._unmodalize) {\n this._unmodalize();\n }\n }\n }\n\n public componentWillUnmount(): void {\n // don't handle return focus unless forceFocusInsideTrap is true or focus is still within FocusTrapZone\n if (\n !this.props.disabled ||\n this.props.forceFocusInsideTrap ||\n !elementContains(this._root.current, this._getDocument().activeElement as HTMLElement)\n ) {\n this._returnFocusToInitiator();\n }\n\n // Dispose of event handlers so their closures can be garbage-collected\n if (this._disposeClickHandler) {\n this._disposeClickHandler();\n this._disposeClickHandler = undefined;\n }\n\n if (this._disposeFocusHandler) {\n this._disposeFocusHandler();\n this._disposeFocusHandler = undefined;\n }\n\n if (this._unmodalize) {\n this._unmodalize();\n }\n\n // Dispose of element references so the DOM Nodes can be garbage-collected\n delete this._previouslyFocusedElementInTrapZone;\n delete this._previouslyFocusedElementOutsideTrapZone;\n }\n\n public render(): JSX.Element {\n const { className, disabled = false, ariaLabelledBy } = this.props;\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n const bumperProps = {\n 'aria-hidden': true,\n style: {\n pointerEvents: 'none',\n position: 'fixed', // 'fixed' prevents browsers from scrolling to bumpers when viewport does not contain them\n },\n tabIndex: disabled ? -1 : 0, // make bumpers tabbable only when enabled\n 'data-is-visible': true,\n } as React.HTMLAttributes<HTMLDivElement>;\n\n return (\n <div\n {...divProps}\n className={className}\n ref={this._root}\n aria-labelledby={ariaLabelledBy}\n onFocusCapture={this._onFocusCapture}\n onFocus={this._onRootFocus}\n onBlur={this._onRootBlur}\n >\n <div {...bumperProps} ref={this._firstBumper} onFocus={this._onFirstBumperFocus} />\n {this.props.children}\n <div {...bumperProps} ref={this._lastBumper} onFocus={this._onLastBumperFocus} />\n </div>\n );\n }\n\n public focus() {\n // eslint-disable-next-line deprecation/deprecation\n const { focusPreviouslyFocusedInnerElement, firstFocusableSelector, firstFocusableTarget } = this.props;\n\n if (\n focusPreviouslyFocusedInnerElement &&\n this._previouslyFocusedElementInTrapZone &&\n elementContains(this._root.current, this._previouslyFocusedElementInTrapZone)\n ) {\n // focus on the last item that had focus in the zone before we left the zone\n this._focusAsync(this._previouslyFocusedElementInTrapZone);\n return;\n }\n\n const focusSelector =\n typeof firstFocusableSelector === 'string'\n ? firstFocusableSelector\n : firstFocusableSelector && firstFocusableSelector();\n\n let _firstFocusableChild: HTMLElement | null = null;\n\n if (this._root.current) {\n if (typeof firstFocusableTarget === 'string') {\n _firstFocusableChild = this._root.current.querySelector(firstFocusableTarget);\n } else if (firstFocusableTarget) {\n _firstFocusableChild = firstFocusableTarget(this._root.current);\n } else if (focusSelector) {\n _firstFocusableChild = this._root.current.querySelector('.' + focusSelector);\n }\n\n // Fall back to first element if query selector did not match any elements.\n if (!_firstFocusableChild) {\n _firstFocusableChild = getNextElement(\n this._root.current,\n this._root.current.firstChild as HTMLElement,\n false,\n false,\n false,\n true,\n );\n }\n }\n if (_firstFocusableChild) {\n this._focusAsync(_firstFocusableChild);\n }\n }\n\n private _focusAsync(element: HTMLElement): void {\n if (!this._isBumper(element)) {\n focusAsync(element);\n }\n }\n\n private _onRootFocus = (ev: React.FocusEvent<HTMLDivElement>) => {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n\n this._hasFocus = true;\n };\n\n private _onRootBlur = (ev: React.FocusEvent<HTMLDivElement>) => {\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n\n let relatedTarget = ev.relatedTarget;\n if (ev.relatedTarget === null) {\n // In IE11, due to lack of support, event.relatedTarget is always\n // null making every onBlur call to be \"outside\" of the ComboBox\n // even when it's not. Using document.activeElement is another way\n // for us to be able to get what the relatedTarget without relying\n // on the event\n relatedTarget = this._getDocument().activeElement as Element;\n }\n\n if (!elementContains(this._root.current, relatedTarget as HTMLElement)) {\n this._hasFocus = false;\n }\n };\n\n private _onFirstBumperFocus = () => {\n this._onBumperFocus(true);\n };\n\n private _onLastBumperFocus = () => {\n this._onBumperFocus(false);\n };\n\n private _onBumperFocus = (isFirstBumper: boolean) => {\n if (this.props.disabled) {\n return;\n }\n\n const currentBumper = (isFirstBumper === this._hasFocus\n ? this._lastBumper.current\n : this._firstBumper.current) as HTMLElement;\n\n if (this._root.current) {\n const nextFocusable =\n isFirstBumper === this._hasFocus\n ? getLastTabbable(this._root.current, currentBumper, true, false)\n : getFirstTabbable(this._root.current, currentBumper, true, false);\n\n if (nextFocusable) {\n if (this._isBumper(nextFocusable)) {\n // This can happen when FTZ contains no tabbable elements.\n // focus will take care of finding a focusable element in FTZ.\n this.focus();\n } else {\n nextFocusable.focus();\n }\n }\n }\n };\n\n private _bringFocusIntoZone(): void {\n const { elementToFocusOnDismiss, disabled = false, disableFirstFocus = false } = this.props;\n\n if (disabled) {\n return;\n }\n\n FocusTrapZone._focusStack.push(this);\n\n this._previouslyFocusedElementOutsideTrapZone = elementToFocusOnDismiss\n ? elementToFocusOnDismiss\n : (this._getDocument().activeElement as HTMLElement);\n if (!disableFirstFocus && !elementContains(this._root.current, this._previouslyFocusedElementOutsideTrapZone)) {\n this.focus();\n }\n }\n\n private _returnFocusToInitiator(): void {\n const { ignoreExternalFocusing } = this.props;\n\n FocusTrapZone._focusStack = FocusTrapZone._focusStack.filter((value: FocusTrapZone) => {\n return this !== value;\n });\n\n const doc = this._getDocument();\n const activeElement = doc.activeElement as HTMLElement;\n if (\n !ignoreExternalFocusing &&\n this._previouslyFocusedElementOutsideTrapZone &&\n typeof this._previouslyFocusedElementOutsideTrapZone.focus === 'function' &&\n (elementContains(this._root.current, activeElement) || activeElement === doc.body)\n ) {\n this._focusAsync(this._previouslyFocusedElementOutsideTrapZone);\n }\n }\n\n private _updateEventHandlers(newProps: IFocusTrapZoneProps): void {\n const { isClickableOutsideFocusTrap = false, forceFocusInsideTrap = true } = newProps;\n\n if (forceFocusInsideTrap && !this._disposeFocusHandler) {\n this._disposeFocusHandler = on(window, 'focus', this._forceFocusInTrap, true);\n } else if (!forceFocusInsideTrap && this._disposeFocusHandler) {\n this._disposeFocusHandler();\n this._disposeFocusHandler = undefined;\n }\n\n if (!isClickableOutsideFocusTrap && !this._disposeClickHandler) {\n this._disposeClickHandler = on(window, 'click', this._forceClickInTrap, true);\n } else if (isClickableOutsideFocusTrap && this._disposeClickHandler) {\n this._disposeClickHandler();\n this._disposeClickHandler = undefined;\n }\n }\n\n private _onFocusCapture = (ev: React.FocusEvent<HTMLDivElement>) => {\n if (this.props.onFocusCapture) {\n this.props.onFocusCapture(ev);\n }\n\n if (ev.target !== ev.currentTarget && !this._isBumper(ev.target)) {\n // every time focus changes within the trap zone, remember the focused element so that\n // it can be restored if focus leaves the pane and returns via keystroke (i.e. via a call to this.focus(true))\n this._previouslyFocusedElementInTrapZone = ev.target as HTMLElement;\n }\n };\n\n private _isBumper(element: HTMLElement): boolean {\n return element === this._firstBumper.current || element === this._lastBumper.current;\n }\n\n private _forceFocusInTrap = (ev: FocusEvent): void => {\n if (this.props.disabled) {\n return;\n }\n\n if (FocusTrapZone._focusStack.length && this === FocusTrapZone._focusStack[FocusTrapZone._focusStack.length - 1]) {\n const focusedElement = this._getDocument().activeElement as HTMLElement;\n\n if (!elementContains(this._root.current, focusedElement)) {\n this.focus();\n this._hasFocus = true; // set focus here since we stop event propagation\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n\n private _forceClickInTrap = (ev: MouseEvent): void => {\n if (this.props.disabled) {\n return;\n }\n\n if (FocusTrapZone._focusStack.length && this === FocusTrapZone._focusStack[FocusTrapZone._focusStack.length - 1]) {\n const clickedElement = ev.target as HTMLElement;\n\n if (clickedElement && !elementContains(this._root.current, clickedElement)) {\n this.focus();\n this._hasFocus = true; // set focus here since we stop event propagation\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n\n private _getDocument(): Document {\n return getDocument(this._root.current)!;\n }\n}\n","import { IModalStyleProps, IModalStyles } from './Modal.types';\nimport { AnimationVariables, getGlobalClassNames, ZIndexes } from '../../Styling';\n\nexport const animationDuration = AnimationVariables.durationValue2;\n\nconst globalClassNames = {\n root: 'ms-Modal',\n main: 'ms-Dialog-main',\n scrollableContent: 'ms-Modal-scrollableContent',\n isOpen: 'is-open',\n layer: 'ms-Modal-Layer',\n};\n\nexport const getStyles = (props: IModalStyleProps): IModalStyles => {\n const {\n className,\n containerClassName,\n scrollableContentClassName,\n isOpen,\n isVisible,\n hasBeenOpened,\n modalRectangleTop,\n theme,\n topOffsetFixed,\n isModeless,\n layerClassName,\n isDefaultDragHandle,\n } = props;\n const { palette, effects, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n {\n backgroundColor: 'transparent',\n position: isModeless ? 'absolute' : 'fixed',\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: 0,\n pointerEvents: 'none',\n transition: `opacity ${animationDuration}`,\n },\n topOffsetFixed &&\n typeof modalRectangleTop === 'number' &&\n hasBeenOpened && {\n alignItems: 'flex-start',\n },\n isOpen && classNames.isOpen,\n isVisible && {\n opacity: 1,\n pointerEvents: 'auto',\n },\n className,\n ],\n main: [\n classNames.main,\n {\n boxShadow: effects.elevation64,\n borderRadius: effects.roundedCorner2,\n backgroundColor: palette.white,\n boxSizing: 'border-box',\n position: 'relative',\n textAlign: 'left',\n outline: '3px solid transparent',\n maxHeight: 'calc(100% - 32px)',\n maxWidth: 'calc(100% - 32px)',\n minHeight: '176px',\n minWidth: '288px',\n overflowY: 'auto',\n zIndex: isModeless ? ZIndexes.Layer : undefined,\n },\n topOffsetFixed &&\n typeof modalRectangleTop === 'number' &&\n hasBeenOpened && {\n top: modalRectangleTop,\n },\n isDefaultDragHandle && {\n cursor: 'move',\n },\n containerClassName,\n ],\n scrollableContent: [\n classNames.scrollableContent,\n {\n overflowY: 'auto',\n flexGrow: 1,\n maxHeight: '100vh',\n selectors: {\n ['@supports (-webkit-overflow-scrolling: touch)']: {\n maxHeight: window.innerHeight,\n },\n },\n },\n scrollableContentClassName,\n ],\n layer: isModeless && [\n layerClassName,\n classNames.layer,\n {\n position: 'static',\n width: 'unset',\n height: 'unset',\n },\n ],\n keyboardMoveIconContainer: {\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n padding: '3px 0px',\n },\n keyboardMoveIcon: {\n // eslint-disable-next-line deprecation/deprecation\n fontSize: fonts.xLargePlus.fontSize,\n width: '24px',\n },\n };\n};\n","import * as React from 'react';\nimport {\n classNamesFunction,\n getNativeProps,\n divProperties,\n enableBodyScroll,\n disableBodyScroll,\n initializeComponentRef,\n} from '../../Utilities';\nimport { IOverlayProps, IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\n\nconst getClassNames = classNamesFunction<IOverlayStyleProps, IOverlayStyles>();\n\nexport class OverlayBase extends React.Component<IOverlayProps, {}> {\n private _allowTouchBodyScroll: boolean;\n\n constructor(props: IOverlayProps) {\n super(props);\n\n initializeComponentRef(this);\n const { allowTouchBodyScroll = false } = this.props;\n this._allowTouchBodyScroll = allowTouchBodyScroll;\n }\n\n public componentDidMount(): void {\n !this._allowTouchBodyScroll && disableBodyScroll();\n }\n\n public componentWillUnmount(): void {\n !this._allowTouchBodyScroll && enableBodyScroll();\n }\n\n public render(): JSX.Element {\n const { isDarkThemed: isDark, className, theme, styles } = this.props;\n\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n isDark,\n });\n\n return <div {...divProps} className={classNames.root} />;\n }\n}\n","import { IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\nimport { HighContrastSelector, getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Overlay',\n rootDark: 'ms-Overlay--dark',\n};\n\nexport const getStyles = (props: IOverlayStyleProps): IOverlayStyles => {\n const { className, theme, isNone, isDark } = props;\n\n const { palette } = theme;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n {\n backgroundColor: palette.whiteTranslucent40,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n position: 'absolute',\n\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid WindowText',\n opacity: 0,\n },\n },\n },\n\n isNone && {\n visibility: 'hidden',\n },\n\n isDark && [\n classNames.rootDark,\n {\n backgroundColor: palette.blackTranslucent40,\n },\n ],\n\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IOverlayProps, IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\nimport { OverlayBase } from './Overlay.base';\nimport { getStyles } from './Overlay.styles';\n\nexport const Overlay: React.FunctionComponent<IOverlayProps> = styled<\n IOverlayProps,\n IOverlayStyleProps,\n IOverlayStyles\n>(OverlayBase, getStyles, undefined, {\n scope: 'Overlay',\n});\n","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyles } from '../../Styling';\n\nexport interface IDraggableZoneStyles {\n root: string;\n}\n\nexport const getClassNames = memoizeFunction(\n (className: string, isDragging: boolean): IDraggableZoneStyles => {\n return {\n root: mergeStyles(\n className,\n isDragging && {\n touchAction: 'none',\n selectors: {\n '& *': {\n userSelect: 'none',\n },\n },\n },\n ),\n };\n },\n);\n","import * as React from 'react';\nimport { IDraggableZoneProps, ICoordinates, IDragData } from './DraggableZone.types';\nimport { getClassNames } from './DraggableZone.styles';\nimport { on } from '../../Utilities';\n\nexport interface IDraggableZoneState {\n isDragging: boolean;\n position: ICoordinates;\n lastPosition?: ICoordinates;\n}\n\nconst eventMapping = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup',\n },\n};\n\n// These are needed so that we can generalize the events\n// and so we have access to clientX and clientY in the touch events\ntype MouseTouchEvent<T> = React.MouseEvent<T> & React.TouchEvent<T> & Event;\n\nexport class DraggableZone extends React.Component<IDraggableZoneProps, IDraggableZoneState> {\n private _touchId?: number;\n private _currentEventType = eventMapping.mouse;\n private _events: (() => void)[] = [];\n\n constructor(props: IDraggableZoneProps) {\n super(props);\n\n this.state = {\n isDragging: false,\n position: this.props.position || { x: 0, y: 0 },\n lastPosition: undefined,\n };\n }\n\n public componentDidUpdate(prevProps: IDraggableZoneProps) {\n if (this.props.position && (!prevProps.position || this.props.position !== prevProps.position)) {\n this.setState({ position: this.props.position });\n }\n }\n\n public componentWillUnmount() {\n this._events.forEach(dispose => dispose());\n }\n\n public render() {\n const child: any = React.Children.only(this.props.children);\n const { props } = child;\n const { position } = this.props;\n const { position: statePosition, isDragging } = this.state;\n let x = statePosition.x;\n let y = statePosition.y;\n\n if (position && !isDragging) {\n x = position.x;\n y = position.y;\n }\n\n return React.cloneElement(child, {\n style: {\n ...props.style,\n transform: `translate(${x}px, ${y}px)`,\n },\n className: getClassNames(props.className, this.state.isDragging).root,\n onMouseDown: this._onMouseDown,\n onMouseUp: this._onMouseUp,\n onTouchStart: this._onTouchStart,\n onTouchEnd: this._onTouchEnd,\n });\n }\n\n private _onMouseDown = (event: MouseTouchEvent<HTMLElement>) => {\n const onMouseDown = (React.Children.only(this.props.children) as any).props.onMouseDown;\n if (onMouseDown) {\n onMouseDown(event);\n }\n\n this._currentEventType = eventMapping.mouse;\n return this._onDragStart(event);\n };\n\n private _onMouseUp = (event: MouseTouchEvent<HTMLElement>) => {\n const onMouseUp = (React.Children.only(this.props.children) as any).props.onMouseUp;\n if (onMouseUp) {\n onMouseUp(event);\n }\n\n this._currentEventType = eventMapping.mouse;\n return this._onDragStop(event);\n };\n\n private _onTouchStart = (event: MouseTouchEvent<HTMLElement>) => {\n const onTouchStart = (React.Children.only(this.props.children) as any).props.onTouchStart;\n if (onTouchStart) {\n onTouchStart(event);\n }\n\n this._currentEventType = eventMapping.touch;\n return this._onDragStart(event);\n };\n\n private _onTouchEnd = (event: MouseTouchEvent<HTMLElement>) => {\n const onTouchEnd = (React.Children.only(this.props.children) as any).props.onTouchEnd;\n if (onTouchEnd) {\n onTouchEnd(event);\n }\n\n this._currentEventType = eventMapping.touch;\n this._onDragStop(event);\n };\n\n private _onDragStart = (event: MouseTouchEvent<HTMLElement>) => {\n // Only handle left click for dragging\n if (typeof event.button === 'number' && event.button !== 0) {\n return false;\n }\n\n // If the target doesn't match the handleSelector OR\n // if the target does match the preventDragSelector, bail out\n if (\n (this.props.handleSelector && !this._matchesSelector(event.target as HTMLElement, this.props.handleSelector)) ||\n (this.props.preventDragSelector &&\n this._matchesSelector(event.target as HTMLElement, this.props.preventDragSelector))\n ) {\n return;\n }\n\n // Remember the touch identifier if this is a touch event so we can\n // distinguish between individual touches in multitouch scenarios\n // by remembering which touch point we were given\n this._touchId = this._getTouchId(event);\n\n const position = this._getControlPosition(event);\n if (position === undefined) {\n return;\n }\n\n const dragData = this._createDragDataFromPosition(position);\n this.props.onStart && this.props.onStart(event, dragData);\n\n this.setState({\n isDragging: true,\n lastPosition: position,\n });\n\n // hook up the appropriate mouse/touch events to the body to ensure\n // smooth dragging\n this._events = [\n on(document.body, this._currentEventType.move, this._onDrag, true /* use capture phase */),\n on(document.body, this._currentEventType.stop, this._onDragStop, true /* use capture phase */),\n ];\n };\n\n private _onDrag = (event: MouseTouchEvent<HTMLElement>) => {\n // Prevent scrolling on mobile devices\n if (event.type === 'touchmove') {\n event.preventDefault();\n }\n\n const position = this._getControlPosition(event);\n if (!position) {\n return;\n }\n\n // create the updated drag data from the position data\n const updatedData = this._createUpdatedDragData(this._createDragDataFromPosition(position));\n const updatedPosition = updatedData.position;\n\n this.props.onDragChange && this.props.onDragChange(event, updatedData);\n\n this.setState({\n position: updatedPosition,\n lastPosition: position,\n });\n };\n\n private _onDragStop = (event: MouseTouchEvent<HTMLElement>) => {\n if (!this.state.isDragging) {\n return;\n }\n\n const position = this._getControlPosition(event);\n if (!position) {\n return;\n }\n\n const baseDragData = this._createDragDataFromPosition(position);\n\n // Set dragging to false and reset the lastPosition\n this.setState({\n isDragging: false,\n lastPosition: undefined,\n });\n\n this.props.onStop && this.props.onStop(event, baseDragData);\n\n if (this.props.position) {\n this.setState({\n position: this.props.position,\n });\n }\n\n // Remove event handlers\n this._events.forEach(dispose => dispose());\n };\n\n /**\n * Get the control position based off the event that fired\n * @param event - The event to get offsets from\n */\n private _getControlPosition(event: MouseTouchEvent<HTMLElement>): ICoordinates | undefined {\n const touchObj = this._getActiveTouch(event);\n\n // did we get the right touch?\n if (this._touchId !== undefined && !touchObj) {\n return undefined;\n }\n\n const eventToGetOffset = touchObj || event;\n return {\n x: eventToGetOffset.clientX,\n y: eventToGetOffset.clientY,\n };\n }\n\n /**\n * Get the active touch point that we have saved from the event's TouchList\n * @param event - The event used to get the TouchList for the active touch point\n */\n private _getActiveTouch(event: MouseTouchEvent<HTMLElement>): React.Touch | undefined {\n return (\n (event.targetTouches && this._findTouchInTouchList(event.targetTouches)) ||\n (event.changedTouches && this._findTouchInTouchList(event.changedTouches))\n );\n }\n\n /**\n * Get the initial touch identifier associated with the given event\n * @param event - The event that contains the TouchList\n */\n private _getTouchId(event: MouseTouchEvent<HTMLElement>): number | undefined {\n const touch: React.Touch | undefined =\n (event.targetTouches && event.targetTouches[0]) || (event.changedTouches && event.changedTouches[0]);\n\n if (touch) {\n return touch.identifier;\n }\n }\n\n /**\n * Returns if an element (or any of the element's parents) match the given selector\n */\n private _matchesSelector(element: HTMLElement | null, selector: string): boolean {\n if (!element || element === document.body) {\n return false;\n }\n\n const matchesSelectorFn: Function =\n element.matches || element.webkitMatchesSelector || (element as any).msMatchesSelector /* for IE */;\n\n if (!matchesSelectorFn) {\n return false;\n }\n\n return matchesSelectorFn.call(element, selector) || this._matchesSelector(element.parentElement, selector);\n }\n\n /**\n * Attempts to find the Touch that matches the identifier we stored in dragStart\n * @param touchList The TouchList to look for the stored identifier from dragStart\n */\n private _findTouchInTouchList(touchList: React.TouchList): React.Touch | undefined {\n if (this._touchId === undefined) {\n return;\n }\n\n for (let i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this._touchId) {\n return touchList[i];\n }\n }\n\n return undefined;\n }\n\n /**\n * Create DragData based off of the last known position and the new position passed in\n * @param position The new position as part of the drag\n */\n private _createDragDataFromPosition(position: ICoordinates): IDragData {\n const { lastPosition } = this.state;\n\n // If we have no lastPosition, use the given position\n // for last position\n if (lastPosition === undefined) {\n return {\n delta: { x: 0, y: 0 },\n lastPosition: position,\n position,\n };\n }\n\n return {\n delta: {\n x: position.x - lastPosition.x,\n y: position.y - lastPosition.y,\n },\n lastPosition,\n position,\n };\n }\n\n /**\n * Creates an updated DragData based off the current position and given baseDragData\n * @param baseDragData The base DragData (from _createDragDataFromPosition) used to calculate the updated positions\n */\n private _createUpdatedDragData(baseDragData: IDragData): IDragData {\n const { position } = this.state;\n return {\n position: {\n x: position.x + baseDragData.delta.x,\n y: position.y + baseDragData.delta.y,\n },\n delta: baseDragData.delta,\n lastPosition: position,\n };\n }\n}\n","import * as React from 'react';\nimport {\n classNamesFunction,\n getId,\n allowScrollOnElement,\n allowOverscrollOnElement,\n KeyCodes,\n elementContains,\n warnDeprecations,\n Async,\n EventGroup,\n} from '../../Utilities';\nimport { FocusTrapZone, IFocusTrapZone } from '../FocusTrapZone/index';\nimport { animationDuration } from './Modal.styles';\nimport { IModalProps, IModalStyleProps, IModalStyles, IModal } from './Modal.types';\nimport { Overlay } from '../../Overlay';\nimport { ILayerProps, Layer } from '../../Layer';\nimport { Popup } from '../Popup/index';\nimport { withResponsiveMode, ResponsiveMode } from '../../utilities/decorators/withResponsiveMode';\nimport { DirectionalHint } from '../Callout/index';\nimport { Icon } from '../Icon/index';\nimport { DraggableZone, ICoordinates, IDragData } from '../../utilities/DraggableZone/index';\nimport { initializeComponentRef } from '@uifabric/utilities';\n\n// @TODO - need to change this to a panel whenever the breakpoint is under medium (verify the spec)\n\nconst DefaultLayerProps: ILayerProps = {\n eventBubblingEnabled: false,\n};\n\nexport interface IDialogState {\n isOpen?: boolean;\n isVisible?: boolean;\n isVisibleClose?: boolean;\n id?: string;\n hasBeenOpened?: boolean;\n modalRectangleTop?: number;\n isModalMenuOpen?: boolean;\n isInKeyboardMoveMode?: boolean;\n x: number;\n y: number;\n}\n\nconst getClassNames = classNamesFunction<IModalStyleProps, IModalStyles>();\nconst COMPONENT_NAME = 'Modal';\n\n@withResponsiveMode\nexport class ModalBase extends React.Component<IModalProps, IDialogState> implements IModal {\n public static defaultProps: IModalProps = {\n isOpen: false,\n isDarkOverlay: true,\n isBlocking: false,\n className: '',\n containerClassName: '',\n };\n\n private _onModalCloseTimer: number;\n private _focusTrapZone = React.createRef<IFocusTrapZone>();\n private _scrollableContent: HTMLDivElement | null;\n private _lastSetX: number;\n private _lastSetY: number;\n private _allowTouchBodyScroll: boolean;\n private _hasRegisteredKeyUp: boolean;\n private _async: Async;\n private _events: EventGroup;\n private _minClampedPosition: ICoordinates;\n private _maxClampedPosition: ICoordinates;\n\n constructor(props: IModalProps) {\n super(props);\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n onLayerDidMount: 'layerProps.onLayerDidMount',\n });\n\n this.state = {\n id: getId('Modal'),\n isOpen: props.isOpen,\n isVisible: props.isOpen,\n hasBeenOpened: props.isOpen,\n x: 0,\n y: 0,\n };\n\n this._lastSetX = 0;\n this._lastSetY = 0;\n\n const { allowTouchBodyScroll = false } = this.props;\n this._allowTouchBodyScroll = allowTouchBodyScroll;\n }\n\n public UNSAFE_componentWillReceiveProps(newProps: IModalProps): void {\n clearTimeout(this._onModalCloseTimer);\n\n // Opening the dialog\n if (newProps.isOpen) {\n if (!this.state.isOpen) {\n // First Open\n this.setState({\n isOpen: true,\n });\n // Add a keyUp handler for all key up events when the dialog is open\n if (newProps.dragOptions) {\n this._registerForKeyUp();\n }\n } else {\n // Modal has been opened\n // Reopen during closing\n this.setState({\n hasBeenOpened: true,\n isVisible: true,\n });\n }\n }\n\n // Closing the dialog\n if (!newProps.isOpen && this.state.isOpen) {\n this._onModalCloseTimer = this._async.setTimeout(this._onModalClose, parseFloat(animationDuration) * 1000);\n this.setState({\n isVisible: false,\n });\n }\n }\n\n public componentDidMount() {\n // Not all modals show just by updating their props. Some only render when they are mounted and pass in\n // isOpen as true. We need to add the keyUp handler in componentDidMount if we are in that case.\n if (this.state.isOpen && this.state.isVisible) {\n this._registerForKeyUp();\n requestAnimationFrame(() => setTimeout(this._registerInitialModalPosition, 0));\n }\n }\n\n public componentDidUpdate(prevProps: IModalProps, prevState: IDialogState) {\n if (!prevProps.isOpen && !prevState.isVisible) {\n this.setState({\n isVisible: true,\n });\n }\n if (!prevProps.isOpen && this.props.isOpen) {\n requestAnimationFrame(() => setTimeout(this._registerInitialModalPosition, 0));\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n containerClassName,\n scrollableContentClassName,\n elementToFocusOnDismiss,\n firstFocusableSelector,\n forceFocusInsideTrap,\n ignoreExternalFocusing,\n isBlocking,\n isClickableOutsideFocusTrap,\n isDarkOverlay,\n onDismiss,\n layerProps,\n overlay,\n responsiveMode,\n titleAriaId,\n styles,\n subtitleAriaId,\n theme,\n topOffsetFixed,\n // eslint-disable-next-line deprecation/deprecation\n onLayerDidMount,\n isModeless,\n isAlert,\n dragOptions,\n enableAriaHiddenSiblings,\n } = this.props;\n const { isOpen, isVisible, hasBeenOpened, modalRectangleTop, x, y, isInKeyboardMoveMode } = this.state;\n\n if (!isOpen) {\n return null;\n }\n\n const layerClassName = layerProps === undefined ? '' : layerProps.className;\n const isAlertRole = isAlert ?? (isBlocking && !isModeless);\n\n const classNames = getClassNames(styles, {\n theme: theme!,\n className,\n containerClassName,\n scrollableContentClassName,\n isOpen,\n isVisible,\n hasBeenOpened,\n modalRectangleTop,\n topOffsetFixed,\n isModeless,\n layerClassName,\n isDefaultDragHandle: dragOptions && !dragOptions.dragHandleSelector,\n });\n\n const mergedLayerProps = {\n ...DefaultLayerProps,\n ...this.props.layerProps,\n onLayerDidMount: layerProps && layerProps.onLayerDidMount ? layerProps.onLayerDidMount : onLayerDidMount,\n insertFirst: isModeless,\n className: classNames.layer,\n };\n const modalContent = (\n <FocusTrapZone\n data-id={this.state.id}\n componentRef={this._focusTrapZone}\n className={classNames.main}\n elementToFocusOnDismiss={elementToFocusOnDismiss}\n isClickableOutsideFocusTrap={isModeless || isClickableOutsideFocusTrap || !isBlocking}\n ignoreExternalFocusing={ignoreExternalFocusing}\n forceFocusInsideTrap={isModeless ? !isModeless : forceFocusInsideTrap}\n firstFocusableSelector={firstFocusableSelector}\n focusPreviouslyFocusedInnerElement={true}\n onBlur={isInKeyboardMoveMode ? this._onExitKeyboardMoveMode : undefined}\n enableAriaHiddenSiblings={enableAriaHiddenSiblings}\n >\n {dragOptions && isInKeyboardMoveMode && (\n <div className={classNames.keyboardMoveIconContainer}>\n {dragOptions.keyboardMoveIconProps ? (\n <Icon {...dragOptions.keyboardMoveIconProps} />\n ) : (\n <Icon iconName=\"move\" className={classNames.keyboardMoveIcon} />\n )}\n </div>\n )}\n <div ref={this._allowScrollOnModal} className={classNames.scrollableContent} data-is-scrollable={true}>\n {dragOptions && this.state.isModalMenuOpen && (\n <dragOptions.menu\n items={[\n { key: 'move', text: dragOptions.moveMenuItemText, onClick: this._onEnterKeyboardMoveMode },\n { key: 'close', text: dragOptions.closeMenuItemText, onClick: this._onModalClose },\n ]}\n onDismiss={this._onModalContextMenuClose}\n alignTargetEdge={true}\n coverTarget={true}\n directionalHint={DirectionalHint.topLeftEdge}\n directionalHintFixed={true}\n shouldFocusOnMount={true}\n target={this._scrollableContent}\n />\n )}\n {this.props.children}\n </div>\n </FocusTrapZone>\n );\n\n // @temp tuatology - Will adjust this to be a panel at certain breakpoints\n if (responsiveMode! >= ResponsiveMode.small) {\n return (\n <Layer {...mergedLayerProps}>\n <Popup\n role={isAlertRole ? 'alertdialog' : 'dialog'}\n aria-modal={!isModeless}\n ariaLabelledBy={titleAriaId}\n ariaDescribedBy={subtitleAriaId}\n onDismiss={onDismiss}\n shouldRestoreFocus={!ignoreExternalFocusing}\n >\n <div className={classNames.root} role={!isModeless ? 'document' : undefined}>\n {!isModeless && (\n <Overlay\n isDarkThemed={isDarkOverlay}\n onClick={isBlocking ? undefined : (onDismiss as any)}\n allowTouchBodyScroll={this._allowTouchBodyScroll}\n {...overlay}\n />\n )}\n {dragOptions ? (\n <DraggableZone\n handleSelector={dragOptions.dragHandleSelector || `.${classNames.main.split(' ')[0]}`}\n preventDragSelector=\"button\"\n onStart={this._onDragStart}\n onDragChange={this._onDrag}\n onStop={this._onDragStop}\n position={{ x: x, y: y }}\n >\n {modalContent}\n </DraggableZone>\n ) : (\n modalContent\n )}\n </div>\n </Popup>\n </Layer>\n );\n }\n return null;\n }\n\n public focus() {\n if (this._focusTrapZone.current) {\n this._focusTrapZone.current.focus();\n }\n }\n\n private _registerInitialModalPosition = (): void => {\n const dialogMain = document.querySelector(`[data-id=${this.state.id}]`);\n\n if (dialogMain) {\n const modalRectangle = dialogMain.getBoundingClientRect();\n if (this.props.dragOptions?.keepInBounds && !this._minClampedPosition && !this._maxClampedPosition) {\n this._minClampedPosition = { x: -modalRectangle.x, y: -modalRectangle.y };\n this._maxClampedPosition = { x: modalRectangle.x, y: modalRectangle.y };\n }\n\n this.setState({\n modalRectangleTop: modalRectangle.top,\n });\n }\n };\n\n /**\n * Clamps the position coordinates to the maximum/minimum value specified in props\n */\n private _getClampedPosition(position: ICoordinates) {\n if (!this.props.dragOptions || !this.props.dragOptions.keepInBounds) {\n return position;\n }\n return { x: this._getClampedPositionX(position.x), y: this._getClampedPositionY(position.y) };\n }\n\n private _getClampedPositionY(y: number) {\n const minPosition = this._minClampedPosition;\n const maxPosition = this._maxClampedPosition;\n if (minPosition) {\n y = Math.max(minPosition.y, y);\n }\n if (maxPosition) {\n y = Math.min(maxPosition.y, y);\n }\n return y;\n }\n\n private _getClampedPositionX(x: number) {\n const minPosition = this._minClampedPosition;\n const maxPosition = this._maxClampedPosition;\n if (minPosition) {\n x = Math.max(minPosition.x, x);\n }\n if (maxPosition) {\n x = Math.min(maxPosition.x, x);\n }\n return x;\n }\n\n // Allow the user to scroll within the modal but not on the body\n private _allowScrollOnModal = (elt: HTMLDivElement | null): void => {\n if (elt) {\n if (this._allowTouchBodyScroll) {\n allowOverscrollOnElement(elt, this._events);\n } else {\n allowScrollOnElement(elt, this._events);\n }\n } else {\n this._events.off(this._scrollableContent);\n }\n this._scrollableContent = elt;\n };\n\n private _onModalContextMenuClose = (): void => {\n this.setState({ isModalMenuOpen: false });\n };\n\n private _onModalClose = (): void => {\n this._lastSetX = 0;\n this._lastSetY = 0;\n\n this.setState({\n isModalMenuOpen: false,\n isInKeyboardMoveMode: false,\n isOpen: false,\n x: 0,\n y: 0,\n });\n\n if (this.props.dragOptions && this._hasRegisteredKeyUp) {\n this._events.off(window, 'keyup', this._onKeyUp, true /* useCapture */);\n }\n\n // Call the onDismiss callback\n if (this.props.onDismissed) {\n this.props.onDismissed();\n }\n };\n\n private _onDragStart = (): void => {\n this.setState({ isModalMenuOpen: false, isInKeyboardMoveMode: false });\n };\n\n private _onDrag = (_: React.MouseEvent<HTMLElement> & React.TouchEvent<HTMLElement>, ui: IDragData): void => {\n const { x, y } = this.state;\n this.setState(this._getClampedPosition({ x: x + ui.delta.x, y: y + ui.delta.y }));\n };\n\n private _onDragStop = (): void => {\n this.focus();\n };\n\n private _onKeyUp = (event: React.KeyboardEvent<HTMLElement>): void => {\n // Need to handle the CTRL + ALT + SPACE key during keyup due to FireFox bug:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n // Otherwise it would continue to fire a click even if the event was cancelled\n // during mouseDown.\n if (event.altKey && event.ctrlKey && event.keyCode === KeyCodes.space) {\n // Since this is a global handler, we should make sure the target is within the dialog\n // before opening the dropdown\n if (elementContains(this._scrollableContent, event.target as HTMLElement)) {\n this.setState({ isModalMenuOpen: !this.state.isModalMenuOpen });\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n // We need a global onKeyDown event when we are in the move mode so that we can\n // handle the key presses and the components inside the modal do not get the events\n private _onKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n if (event.altKey && event.ctrlKey && event.keyCode === KeyCodes.space) {\n // CTRL + ALT + SPACE is handled during keyUp\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (this.state.isModalMenuOpen && (event.altKey || event.keyCode === KeyCodes.escape)) {\n this.setState({ isModalMenuOpen: false });\n }\n\n if (this.state.isInKeyboardMoveMode && (event.keyCode === KeyCodes.escape || event.keyCode === KeyCodes.enter)) {\n this.setState({ isInKeyboardMoveMode: false });\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (this.state.isInKeyboardMoveMode) {\n let handledEvent = true;\n const delta = this._getMoveDelta(event);\n\n switch (event.keyCode) {\n /* eslint-disable no-fallthrough */\n case KeyCodes.escape:\n this.setState({ x: this._lastSetX, y: this._lastSetY });\n case KeyCodes.enter: {\n // TODO: determine if fallthrough was intentional\n /* eslint-enable no-fallthrough */\n this._lastSetX = 0;\n this._lastSetY = 0;\n this.setState({ isInKeyboardMoveMode: false });\n break;\n }\n case KeyCodes.up: {\n this.setState({\n y: this._getClampedPositionY(this.state.y - delta),\n });\n break;\n }\n case KeyCodes.down: {\n this.setState({\n y: this._getClampedPositionY(this.state.y + delta),\n });\n break;\n }\n case KeyCodes.left: {\n this.setState({\n x: this._getClampedPositionX(this.state.x - delta),\n });\n break;\n }\n case KeyCodes.right: {\n this.setState({\n x: this._getClampedPositionX(this.state.x + delta),\n });\n break;\n }\n default: {\n handledEvent = false;\n }\n }\n\n if (handledEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n private _getMoveDelta(event: React.KeyboardEvent<HTMLElement>): number {\n let delta = 10;\n if (event.shiftKey) {\n if (!event.ctrlKey) {\n delta = 50;\n }\n } else if (event.ctrlKey) {\n delta = 1;\n }\n\n return delta;\n }\n\n private _onEnterKeyboardMoveMode = () => {\n this._lastSetX = this.state.x;\n this._lastSetY = this.state.y;\n this.setState({ isInKeyboardMoveMode: true, isModalMenuOpen: false });\n this._events.on(window, 'keydown', this._onKeyDown, true /* useCapture */);\n };\n\n private _onExitKeyboardMoveMode = () => {\n this._lastSetX = 0;\n this._lastSetY = 0;\n this.setState({ isInKeyboardMoveMode: false });\n this._events.off(window, 'keydown', this._onKeyDown, true /* useCapture */);\n };\n\n private _registerForKeyUp = (): void => {\n if (!this._hasRegisteredKeyUp) {\n this._events.on(window, 'keyup', this._onKeyUp, true /* useCapture */);\n this._hasRegisteredKeyUp = true;\n }\n };\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IModalProps, IModalStyleProps, IModalStyles } from './Modal.types';\nimport { ModalBase } from './Modal.base';\nimport { getStyles } from './Modal.styles';\n\nexport const Modal: React.FunctionComponent<IModalProps> = styled<IModalProps, IModalStyleProps, IModalStyles>(\n ModalBase,\n getStyles,\n undefined,\n {\n scope: 'Modal',\n fields: ['theme', 'styles', 'enableAriaHiddenSiblings'],\n },\n);\n","import * as React from 'react';\nimport {\n getId,\n toMatrix,\n classNamesFunction,\n getNativeProps,\n htmlElementProperties,\n initializeComponentRef,\n} from '../../Utilities';\nimport { FocusZone } from '../../FocusZone';\nimport { IButtonGrid, IButtonGridProps, IButtonGridStyleProps, IButtonGridStyles } from './ButtonGrid.types';\n\nconst getClassNames = classNamesFunction<IButtonGridStyleProps, IButtonGridStyles>();\n\nexport class ButtonGridBase extends React.Component<IButtonGridProps, {}> implements IButtonGrid {\n private _id: string;\n\n constructor(props: IButtonGridProps) {\n super(props);\n\n initializeComponentRef(this);\n this._id = props.id || getId();\n }\n\n public render(): JSX.Element {\n const props = this.props;\n const {\n items,\n columnCount,\n onRenderItem,\n\n /* eslint-disable deprecation/deprecation */\n ariaPosInSet = props.positionInSet,\n ariaSetSize = props.setSize,\n /* eslint-enable deprecation/deprecation */\n\n styles,\n doNotContainWithinFocusZone,\n } = props;\n\n const htmlProps = getNativeProps<React.HTMLAttributes<HTMLTableElement>>(\n this.props,\n htmlElementProperties,\n // avoid applying onBlur on the table if it's being used in the FocusZone\n doNotContainWithinFocusZone ? [] : ['onBlur'],\n );\n\n const classNames = getClassNames(styles!, { theme: this.props.theme! });\n\n // Array to store the cells in the correct row index\n const rowsOfItems: any[][] = toMatrix(items, columnCount);\n\n const content = (\n <table\n aria-posinset={ariaPosInSet}\n aria-setsize={ariaSetSize}\n id={this._id}\n role=\"grid\"\n {...htmlProps}\n className={classNames.root}\n >\n <tbody>\n {rowsOfItems.map((rows: any[], rowIndex: number) => {\n return (\n <tr role={'row'} key={this._id + '-' + rowIndex + '-row'}>\n {rows.map((cell: any, cellIndex: number) => {\n return (\n <td\n role={'presentation'}\n key={this._id + '-' + cellIndex + '-cell'}\n className={classNames.tableCell}\n >\n {onRenderItem(cell, cellIndex)}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n\n // Create the table/grid\n return doNotContainWithinFocusZone ? (\n content\n ) : (\n <FocusZone\n isCircularNavigation={this.props.shouldFocusCircularNavigate}\n className={classNames.focusedContainer}\n onBlur={this.props.onBlur}\n >\n {content}\n </FocusZone>\n );\n }\n}\n\n/**\n * @deprecated - use ButtonGridBase instead\n */\nexport const GridBase = ButtonGridBase;\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ButtonGridBase } from './ButtonGrid.base';\nimport { IButtonGridProps, IButtonGridStyleProps, IButtonGridStyles } from './ButtonGrid.types';\nimport { getStyles } from './ButtonGrid.styles';\n\nexport const ButtonGrid: React.FunctionComponent<IButtonGridProps> = styled<\n IButtonGridProps,\n IButtonGridStyleProps,\n IButtonGridStyles\n>(ButtonGridBase, getStyles);\n\n/**\n * @deprecated - use ButtonGrid instead\n */\nexport const Grid = ButtonGrid;\n","import { IButtonGridStyleProps, IButtonGridStyles } from './ButtonGrid.types';\n\nexport const getStyles = (props: IButtonGridStyleProps): IButtonGridStyles => {\n return {\n root: {\n padding: 2,\n outline: 'none',\n },\n tableCell: {\n padding: 0,\n },\n };\n};\n","import * as React from 'react';\nimport { css } from '../../Utilities';\nimport { IButtonGridCellProps } from './ButtonGridCell.types';\nimport { CommandButton } from '../../Button';\n\nexport class ButtonGridCell<T, P extends IButtonGridCellProps<T>> extends React.Component<P, {}> {\n public static defaultProps = {\n disabled: false,\n };\n\n public render(): JSX.Element {\n const {\n item,\n id,\n className,\n role,\n selected,\n disabled,\n onRenderItem,\n cellDisabledStyle,\n cellIsSelectedStyle,\n index,\n label,\n getClassNames,\n } = this.props;\n\n return (\n <CommandButton\n id={id}\n data-index={index}\n data-is-focusable={true}\n disabled={disabled}\n className={css(className, {\n ['' + cellIsSelectedStyle]: selected,\n ['' + cellDisabledStyle]: disabled,\n })}\n onClick={this._onClick}\n onMouseEnter={this._onMouseEnter}\n onMouseMove={this._onMouseMove}\n onMouseLeave={this._onMouseLeave}\n onFocus={this._onFocus}\n role={role}\n aria-selected={selected}\n ariaLabel={label}\n title={label}\n getClassNames={getClassNames}\n >\n {onRenderItem(item)}\n </CommandButton>\n );\n }\n\n private _onClick = (): void => {\n const { onClick, disabled, item } = this.props as P;\n\n if (onClick && !disabled) {\n onClick(item);\n }\n };\n\n private _onMouseEnter = (ev: React.MouseEvent<HTMLButtonElement>): void => {\n const { onHover, disabled, item, onMouseEnter } = this.props as P;\n\n const didUpdateOnEnter = onMouseEnter && onMouseEnter(ev);\n\n if (!didUpdateOnEnter && onHover && !disabled) {\n onHover(item);\n }\n };\n\n private _onMouseMove = (ev: React.MouseEvent<HTMLButtonElement>): void => {\n const { onHover, disabled, item, onMouseMove } = this.props as P;\n\n const didUpdateOnMove = onMouseMove && onMouseMove(ev);\n\n if (!didUpdateOnMove && onHover && !disabled) {\n onHover(item);\n }\n };\n\n private _onMouseLeave = (ev: React.MouseEvent<HTMLButtonElement>): void => {\n const { onHover, disabled, onMouseLeave } = this.props as P;\n\n const didUpdateOnLeave = onMouseLeave && onMouseLeave(ev);\n\n if (!didUpdateOnLeave && onHover && !disabled) {\n onHover();\n }\n };\n\n private _onFocus = (): void => {\n const { onFocus, disabled, item } = this.props as P;\n\n if (onFocus && !disabled) {\n onFocus(item);\n }\n };\n}\n\n/**\n * @deprecated - use ButtonGridCell instead\n */\nexport const GridCell = ButtonGridCell;\n","import * as React from 'react';\nimport { ITheme, mergeStyleSets } from '../../Styling';\nimport { classNamesFunction, memoizeFunction } from '../../Utilities';\nimport { getColorFromString } from '../../utilities/color/getColorFromString';\nimport { ButtonGridCell } from '../../utilities/ButtonGrid/ButtonGridCell';\nimport { IButtonGridCellProps } from '../../utilities/ButtonGrid/ButtonGridCell.types';\nimport { getStyles as getActionButtonStyles } from '../Button/ActionButton/ActionButton.styles';\nimport { IButtonClassNames } from '../Button/BaseButton.classNames';\nimport {\n IColorCellProps,\n IColorPickerGridCellProps,\n IColorPickerGridCellStyleProps,\n IColorPickerGridCellStyles,\n} from './ColorPickerGridCell.types';\n\nconst getColorPickerGridCellButtonClassNames = memoizeFunction(\n (\n theme: ITheme,\n className: string,\n variantClassName: string,\n iconClassName: string | undefined,\n menuIconClassName: string | undefined,\n disabled: boolean,\n checked: boolean,\n expanded: boolean,\n isSplit: boolean | undefined,\n ): IButtonClassNames => {\n const styles = getActionButtonStyles(theme);\n return mergeStyleSets({\n root: [\n 'ms-Button',\n styles.root,\n variantClassName,\n className,\n checked && ['is-checked', styles.rootChecked],\n disabled && ['is-disabled', styles.rootDisabled],\n !disabled &&\n !checked && {\n selectors: {\n ':hover': styles.rootHovered,\n ':focus': styles.rootFocused,\n ':active': styles.rootPressed,\n },\n },\n disabled && checked && [styles.rootCheckedDisabled],\n !disabled &&\n checked && {\n selectors: {\n ':hover': styles.rootCheckedHovered,\n ':active': styles.rootCheckedPressed,\n },\n },\n ],\n flexContainer: ['ms-Button-flexContainer', styles.flexContainer],\n });\n },\n);\n\nconst getClassNames = classNamesFunction<IColorPickerGridCellStyleProps, IColorPickerGridCellStyles>();\n\nclass ColorCell extends ButtonGridCell<IColorCellProps, IButtonGridCellProps<IColorCellProps>> {}\n\nexport class ColorPickerGridCellBase extends React.PureComponent<IColorPickerGridCellProps, {}> {\n public static defaultProps: Partial<IColorPickerGridCellProps> = {\n circle: true,\n disabled: false,\n selected: false,\n };\n\n private _classNames: { [key in keyof IColorPickerGridCellStyles]: string };\n\n public render(): JSX.Element {\n const {\n item,\n // eslint-disable-next-line deprecation/deprecation\n idPrefix = this.props.id,\n selected,\n disabled,\n styles,\n theme,\n circle,\n color,\n onClick,\n onHover,\n onFocus,\n onMouseEnter,\n onMouseMove,\n onMouseLeave,\n onWheel,\n onKeyDown,\n height,\n width,\n borderWidth,\n } = this.props;\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n disabled,\n selected,\n circle,\n isWhite: this._isWhiteCell(color),\n height,\n width,\n borderWidth,\n });\n\n return (\n <ColorCell\n item={item}\n id={`${idPrefix}-${item.id}-${item.index}`}\n key={item.id}\n disabled={disabled}\n role={'gridcell'}\n onRenderItem={this._onRenderColorOption}\n selected={selected}\n onClick={onClick}\n onHover={onHover}\n onFocus={onFocus}\n label={item.label}\n className={this._classNames.colorCell}\n getClassNames={getColorPickerGridCellButtonClassNames}\n index={item.index}\n onMouseEnter={onMouseEnter}\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n onWheel={onWheel}\n onKeyDown={onKeyDown}\n />\n );\n }\n\n /**\n * Render the core of a color cell\n * @returns - Element representing the core of the item\n */\n private _onRenderColorOption = (colorOption: IColorCellProps): JSX.Element => {\n // Build an SVG for the cell with the given shape and color properties\n return (\n <svg\n className={this._classNames.svg}\n viewBox=\"0 0 20 20\"\n fill={getColorFromString(colorOption.color as string)!.str}\n >\n {this.props.circle ? <circle cx=\"50%\" cy=\"50%\" r=\"50%\" /> : <rect width=\"100%\" height=\"100%\" />}\n </svg>\n );\n };\n\n /**\n * Validate if the cell's color is white or not to apply whiteCell style\n * @param inputColor - The color of the current cell\n * @returns - Whether the cell's color is white or not.\n */\n private _isWhiteCell(inputColor: string | undefined): boolean {\n const color = getColorFromString(inputColor!);\n return color!.hex === 'ffffff';\n }\n}\n","import { IsFocusVisibleClassName } from '../../Utilities';\nimport { HighContrastSelector, getFocusStyle } from '../../Styling';\nimport { IColorPickerGridCellStyleProps, IColorPickerGridCellStyles } from './ColorPickerGridCell.types';\n\n// Size breakpoint when the default border width changes from 2px to 4px.\nconst CELL_BORDER_BREAKPOINT = 24;\nconst LARGE_BORDER = 4;\nconst SMALL_BORDER = 2;\nconst DIVIDING_PADDING = 2;\nconst DEFAULT_CELL_SIZE = 20;\n\nconst cellHighContrastFocus = {\n left: -2,\n top: -2,\n bottom: -2,\n right: -2,\n border: 'none',\n outlineColor: 'ButtonText',\n};\n\nexport const getStyles = (props: IColorPickerGridCellStyleProps): IColorPickerGridCellStyles => {\n const {\n theme,\n disabled,\n selected,\n circle,\n isWhite,\n height = DEFAULT_CELL_SIZE,\n width = DEFAULT_CELL_SIZE,\n borderWidth,\n } = props;\n const { semanticColors, palette } = theme;\n\n const buttonBorderHovered = palette.neutralLighter;\n const buttonBorderChecked = palette.neutralLight;\n const buttonBorderCheckedHovered = palette.neutralSecondary;\n const buttonBorderIsWhite = palette.neutralTertiary;\n\n // If user provided a value, use it. If not, then we decide depending on the 24px size breakpoint.\n const calculatedBorderWidth = borderWidth\n ? borderWidth\n : width < CELL_BORDER_BREAKPOINT\n ? SMALL_BORDER\n : LARGE_BORDER;\n\n return {\n // this is a button that wraps the color\n colorCell: [\n getFocusStyle(theme, { inset: -1, position: 'relative', highContrastStyle: cellHighContrastFocus }),\n {\n backgroundColor: semanticColors.bodyBackground,\n padding: 0,\n position: 'relative',\n boxSizing: 'border-box',\n display: 'inline-block',\n cursor: 'pointer',\n userSelect: 'none',\n borderRadius: 0,\n border: 'none',\n height: height,\n width: width,\n },\n !circle && {\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus::after`]: {\n // -1px so that we don't increase visually the size of the cell.\n outlineOffset: `${calculatedBorderWidth - 1}px`,\n },\n },\n },\n // In focus state for circle we want a round border which is not possible with outline.\n circle && {\n borderRadius: '50%',\n selectors: {\n [`.${IsFocusVisibleClassName} &:focus::after`]: {\n outline: 'none',\n borderColor: semanticColors.focusBorder,\n borderRadius: '50%',\n left: -calculatedBorderWidth,\n right: -calculatedBorderWidth,\n top: -calculatedBorderWidth,\n bottom: -calculatedBorderWidth,\n selectors: {\n [HighContrastSelector]: {\n outline: `1px solid ButtonText`,\n },\n },\n },\n },\n },\n selected && {\n padding: DIVIDING_PADDING,\n border: `${calculatedBorderWidth}px solid ${buttonBorderChecked}`,\n selectors: {\n ['&:hover::before']: {\n content: '\"\"',\n height: height,\n width: width,\n position: 'absolute',\n top: -calculatedBorderWidth,\n left: -calculatedBorderWidth,\n borderRadius: circle ? '50%' : 'default',\n boxShadow: `inset 0 0 0 1px ${buttonBorderCheckedHovered}`,\n },\n },\n },\n !selected && {\n selectors: {\n ['&:hover, &:active, &:focus']: {\n backgroundColor: semanticColors.bodyBackground, // overwrite white's override\n padding: DIVIDING_PADDING,\n border: `${calculatedBorderWidth}px solid ${buttonBorderHovered}`,\n },\n ['&:focus']: {\n borderColor: semanticColors.bodyBackground,\n padding: 0,\n selectors: {\n ':hover': {\n borderColor: theme.palette.neutralLight,\n padding: DIVIDING_PADDING,\n },\n },\n },\n },\n },\n disabled && {\n color: semanticColors.disabledBodyText,\n pointerEvents: 'none',\n opacity: 0.3,\n },\n isWhite &&\n !selected && {\n // fake a border for white\n backgroundColor: buttonBorderIsWhite,\n padding: 1,\n },\n ],\n // the <svg> that holds the color\n svg: [\n {\n width: '100%',\n height: '100%',\n },\n circle && {\n borderRadius: '50%',\n },\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ColorPickerGridCellBase } from './ColorPickerGridCell.base';\nimport {\n IColorPickerGridCellProps,\n IColorPickerGridCellStyleProps,\n IColorPickerGridCellStyles,\n} from './ColorPickerGridCell.types';\nimport { getStyles } from './ColorPickerGridCell.styles';\n\nexport const ColorPickerGridCell: React.FunctionComponent<IColorPickerGridCellProps> = styled<\n IColorPickerGridCellProps,\n IColorPickerGridCellStyleProps,\n IColorPickerGridCellStyles\n>(ColorPickerGridCellBase, getStyles, undefined, { scope: 'ColorPickerGridCell' }, true);\n","import * as React from 'react';\nimport {\n Async,\n classNamesFunction,\n findIndex,\n KeyCodes,\n getId,\n warnMutuallyExclusive,\n warnConditionallyRequiredProps,\n} from '../../Utilities';\nimport {\n ISwatchColorPickerProps,\n ISwatchColorPickerStyleProps,\n ISwatchColorPickerStyles,\n} from './SwatchColorPicker.types';\nimport { ButtonGrid } from '../../utilities/ButtonGrid/ButtonGrid';\nimport { IColorCellProps } from './ColorPickerGridCell.types';\nimport { ColorPickerGridCell } from './ColorPickerGridCell';\nimport { memoizeFunction, warnDeprecations } from '@uifabric/utilities';\n\nexport interface ISwatchColorPickerState {\n selectedIndex?: number;\n}\n\nconst getClassNames = classNamesFunction<ISwatchColorPickerStyleProps, ISwatchColorPickerStyles>();\n\nconst COMPONENT_NAME = 'SwatchColorPicker';\n\nexport class SwatchColorPickerBase extends React.Component<ISwatchColorPickerProps, ISwatchColorPickerState> {\n public static defaultProps = {\n cellShape: 'circle',\n disabled: false,\n shouldFocusCircularNavigate: true,\n cellMargin: 10,\n } as ISwatchColorPickerProps;\n\n private _id: string;\n private _cellFocused: boolean;\n\n private navigationIdleTimeoutId: number | undefined;\n private isNavigationIdle: boolean;\n private readonly navigationIdleDelay: number = 250 /* ms */;\n private async: Async;\n\n // Add an index to each color cells. Memoizes this so that color cells do not re-render on every update.\n private _getItemsWithIndex = memoizeFunction((items: IColorCellProps[]) => {\n return items.map((item, index) => {\n return { ...item, index: index };\n });\n });\n\n public static getDerivedStateFromProps(newProps: ISwatchColorPickerProps, state: ISwatchColorPickerState) {\n const newSelectedIndex = newProps.selectedId\n ? _getSelectedIndex(newProps.colorCells, newProps.selectedId)\n : undefined;\n\n // If not controlled, we do not want to allow updates to selectedIndex to be undefined\n if (!newProps.isControlled && newSelectedIndex === undefined) {\n return null;\n }\n\n if (newSelectedIndex !== state.selectedIndex) {\n return {\n selectedIndex: newSelectedIndex,\n };\n }\n\n return null;\n }\n\n constructor(props: ISwatchColorPickerProps) {\n super(props);\n\n this._id = props.id || getId('swatchColorPicker');\n\n if (process.env.NODE_ENV !== 'production') {\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n focusOnHover: 'onHover',\n });\n\n warnConditionallyRequiredProps(\n COMPONENT_NAME,\n props,\n ['focusOnHover'],\n 'mouseLeaveParentSelector',\n !!props.mouseLeaveParentSelector,\n );\n\n warnDeprecations(COMPONENT_NAME, props, {\n positionInSet: 'ariaPosInSet',\n setSize: 'ariaSetSize',\n });\n }\n\n this.isNavigationIdle = true;\n this.async = new Async(this);\n\n let selectedIndex: number | undefined;\n if (props.selectedId) {\n selectedIndex = _getSelectedIndex(props.colorCells, props.selectedId);\n }\n\n this.state = {\n selectedIndex,\n };\n }\n\n public componentWillUnmount() {\n if (this.props.onCellFocused && this._cellFocused) {\n this._cellFocused = false;\n this.props.onCellFocused();\n }\n this.async.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n colorCells,\n columnCount,\n /* eslint-disable deprecation/deprecation */\n ariaPosInSet = this.props.positionInSet,\n ariaSetSize = this.props.setSize,\n /* eslint-enable deprecation/deprecation */\n shouldFocusCircularNavigate,\n className,\n doNotContainWithinFocusZone,\n styles,\n cellMargin,\n } = this.props;\n\n const classNames = getClassNames(styles!, {\n theme: this.props.theme!,\n className,\n cellMargin,\n });\n\n if (colorCells.length < 1 || columnCount < 1) {\n return null;\n }\n return (\n <ButtonGrid\n {...this.props}\n id={this._id}\n items={this._getItemsWithIndex(colorCells)}\n columnCount={columnCount}\n onRenderItem={this._onRenderItem}\n ariaPosInSet={ariaPosInSet}\n ariaSetSize={ariaSetSize}\n shouldFocusCircularNavigate={shouldFocusCircularNavigate}\n doNotContainWithinFocusZone={doNotContainWithinFocusZone}\n onBlur={this._onSwatchColorPickerBlur}\n theme={this.props.theme!}\n styles={{\n root: classNames.root,\n tableCell: classNames.tableCell,\n focusedContainer: classNames.focusedContainer,\n }}\n />\n );\n }\n\n private _onRenderItem = (item: IColorCellProps, index: number): JSX.Element => {\n const { onRenderColorCell = this._renderOption } = this.props;\n return onRenderColorCell(item, this._renderOption) as JSX.Element;\n };\n\n /**\n * When the whole swatchColorPicker is blurred,\n * make sure to clear the pending focused stated\n */\n private _onSwatchColorPickerBlur = (): void => {\n if (this.props.onCellFocused) {\n this._cellFocused = false;\n this.props.onCellFocused();\n }\n };\n\n /**\n * Render a color cell\n * @param item - The item to render\n * @returns - Element representing the item\n */\n private _renderOption = (item: IColorCellProps): JSX.Element => {\n const props = this.props;\n const id = this._id;\n\n return (\n <ColorPickerGridCell\n item={item}\n idPrefix={id}\n color={item.color}\n styles={props.getColorGridCellStyles}\n disabled={props.disabled}\n onClick={this._onCellClick}\n onHover={this._onGridCellHovered}\n onFocus={this._onGridCellFocused}\n selected={this.state.selectedIndex !== undefined && this.state.selectedIndex === item.index}\n circle={props.cellShape === 'circle'}\n label={item.label}\n onMouseEnter={this._onMouseEnter}\n onMouseMove={this._onMouseMove}\n onMouseLeave={this._onMouseLeave}\n onWheel={this._onWheel}\n onKeyDown={this._onKeyDown}\n height={props.cellHeight}\n width={props.cellWidth}\n borderWidth={props.cellBorderWidth}\n />\n );\n };\n\n /**\n * Callback passed to the GridCell that will manage triggering the onCellHovered callback for mouseEnter\n */\n private _onMouseEnter = (ev: React.MouseEvent<HTMLButtonElement>): boolean => {\n if (!this.props.focusOnHover) {\n return !this.isNavigationIdle || !!this.props.disabled;\n }\n\n if (this.isNavigationIdle && !this.props.disabled) {\n ev.currentTarget.focus();\n }\n\n return true;\n };\n\n /**\n * Callback passed to the GridCell that will manage Hover/Focus updates\n */\n private _onMouseMove = (ev: React.MouseEvent<HTMLButtonElement>): boolean => {\n if (!this.props.focusOnHover) {\n return !this.isNavigationIdle || !!this.props.disabled;\n }\n\n const targetElement = ev.currentTarget as HTMLElement;\n\n // If navigation is idle and the targetElement is the focused element bail out\n // if (!this.isNavigationIdle || (document && targetElement === (document.activeElement as HTMLElement))) {\n if (this.isNavigationIdle && !(document && targetElement === (document.activeElement as HTMLElement))) {\n targetElement.focus();\n }\n\n return true;\n };\n\n /**\n * Callback passed to the GridCell that will manage Hover/Focus updates\n */\n private _onMouseLeave = (ev: React.MouseEvent<HTMLButtonElement>): void => {\n const parentSelector = this.props.mouseLeaveParentSelector;\n\n if (!this.props.focusOnHover || !parentSelector || !this.isNavigationIdle || this.props.disabled) {\n return;\n }\n\n // Get the elements that math the given selector\n const elements = document.querySelectorAll(parentSelector);\n\n // iterate over the elements return to make sure it is a parent of the target and focus it\n for (let index = 0; index < elements.length; index += 1) {\n if (elements[index].contains(ev.currentTarget)) {\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if ((elements[index] as any).setActive) {\n try {\n (elements[index] as any).setActive();\n } catch (e) {\n /* no-op */\n }\n } else {\n (elements[index] as HTMLElement).focus();\n }\n\n break;\n }\n }\n };\n\n /**\n * Callback to make sure we don't update the hovered element during mouse wheel\n */\n private _onWheel = (): void => {\n this._setNavigationTimeout();\n };\n\n /**\n * Callback that\n */\n private _onKeyDown = (ev: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (\n ev.which === KeyCodes.up ||\n ev.which === KeyCodes.down ||\n ev.which === KeyCodes.left ||\n ev.which === KeyCodes.right\n ) {\n this._setNavigationTimeout();\n }\n };\n\n /**\n * Sets a timeout so we won't process any mouse \"hover\" events\n * while navigating (via mouseWheel or arrowKeys)\n */\n private _setNavigationTimeout = () => {\n if (!this.isNavigationIdle && this.navigationIdleTimeoutId !== undefined) {\n this.async.clearTimeout(this.navigationIdleTimeoutId);\n this.navigationIdleTimeoutId = undefined;\n } else {\n this.isNavigationIdle = false;\n }\n\n this.navigationIdleTimeoutId = this.async.setTimeout(() => {\n this.isNavigationIdle = true;\n }, this.navigationIdleDelay);\n };\n\n /**\n * Callback passed to the GridCell class that will trigger the onCellHovered callback of the SwatchColorPicker\n * NOTE: This will not be triggered if shouldFocusOnHover === true\n */\n private _onGridCellHovered = (item?: IColorCellProps): void => {\n const { onCellHovered } = this.props;\n\n if (onCellHovered) {\n return item ? onCellHovered(item.id, item.color) : onCellHovered();\n }\n };\n\n /**\n * Callback passed to the GridCell class that will trigger the onCellFocus callback of the SwatchColorPicker\n */\n private _onGridCellFocused = (item?: IColorCellProps): void => {\n const { onCellFocused } = this.props;\n if (onCellFocused) {\n if (item) {\n this._cellFocused = true;\n return onCellFocused(item.id, item.color);\n } else {\n this._cellFocused = false;\n return onCellFocused();\n }\n }\n };\n\n /**\n * Handle the click on a cell\n * @param item - The cell that the click was fired against\n */\n private _onCellClick = (item: IColorCellProps): void => {\n if (this.props.disabled) {\n return;\n }\n\n const index = item.index as number;\n\n // If we have a valid index and it is not already\n // selected, select it\n if (index >= 0 && index !== this.state.selectedIndex) {\n if (this.props.onCellFocused && this._cellFocused) {\n this._cellFocused = false;\n this.props.onCellFocused();\n }\n\n if (this.props.onColorChanged) {\n this.props.onColorChanged(item.id, item.color);\n }\n\n // Update internal state only if the component is uncontrolled\n if (this.props.isControlled !== true) {\n this.setState({\n selectedIndex: index,\n });\n }\n }\n };\n}\n\n/**\n * Get the selected item's index\n * @param items - The items to search\n * @param selectedId - The selected item's id to find\n * @returns - The index of the selected item's id, -1 if there was no match\n */\nfunction _getSelectedIndex(items: IColorCellProps[], selectedId: string): number | undefined {\n const selectedIndex = findIndex(items, item => item.id === selectedId);\n return selectedIndex >= 0 ? selectedIndex : undefined;\n}\n","import { ISwatchColorPickerStyleProps, ISwatchColorPickerStyles } from './SwatchColorPicker.types';\nimport { getGlobalClassNames } from '../../Styling';\n\nconst GlobalClassNames = {\n focusedContainer: 'ms-swatchColorPickerBodyContainer',\n};\n\nexport const getStyles = (props: ISwatchColorPickerStyleProps): ISwatchColorPickerStyles => {\n const { className, theme, cellMargin } = props;\n\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n return {\n root: {\n margin: '8px 0',\n borderCollapse: 'collapse',\n },\n tableCell: {\n padding: cellMargin! / 2,\n },\n focusedContainer: [\n classNames.focusedContainer,\n {\n clear: 'both',\n display: 'block',\n minWidth: '180px',\n },\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { SwatchColorPickerBase } from './SwatchColorPicker.base';\nimport {\n ISwatchColorPickerProps,\n ISwatchColorPickerStyles,\n ISwatchColorPickerStyleProps,\n} from './SwatchColorPicker.types';\nimport { getStyles } from './SwatchColorPicker.styles';\n\nexport const SwatchColorPicker: React.FunctionComponent<ISwatchColorPickerProps> = styled<\n ISwatchColorPickerProps,\n ISwatchColorPickerStyleProps,\n ISwatchColorPickerStyles\n>(SwatchColorPickerBase, getStyles, undefined, { scope: 'SwatchColorPicker' });\n","import React, { FunctionComponent } from 'react';\nimport { useId, useBoolean } from '@uifabric/react-hooks';\nimport {\n Modal,\n getTheme,\n mergeStyleSets,\n FontWeights,\n IconButton,\n IIconProps,\n} from 'office-ui-fabric-react';\nimport { SwatchColorPicker } from '@fluentui/react';\n\nconst theme = getTheme();\nconst contentStyles = mergeStyleSets({\n container: {\n display: 'flex',\n flexFlow: 'row nowrap',\n alignItems: 'flex-start',\n marginBottom: '200px',\n },\n header: [\n theme.fonts.xLargePlus,\n {\n flex: '1 1 auto',\n borderTop: `4px solid ${theme.palette.themePrimary}`,\n color: theme.palette.neutralPrimary,\n display: 'flex',\n alignItems: 'center',\n fontWeight: FontWeights.semibold,\n padding: '12px 12px 14px 24px',\n },\n ],\n currentColorStyles: {\n cursor: 'pointer',\n marginRight: '1rem',\n },\n body: {\n flex: '4 4 auto',\n padding: '0 24px 24px 24px',\n overflowY: 'hidden',\n selectors: {\n p: { margin: '14px 0' },\n 'p:first-child': { marginTop: 0 },\n 'p:last-child': { marginBottom: 0 },\n },\n\n },\n});\nconst iconButtonStyles = {\n root: {\n color: theme.palette.neutralPrimary,\n marginLeft: 'auto',\n marginTop: '4px',\n marginRight: '2px',\n },\n rootHovered: {\n color: theme.palette.neutralDark,\n },\n};\nconst cancelIcon: IIconProps = { iconName: 'Cancel' };\n\ninterface ColorSelectorModalProps {\n colorValue: string;\n}\nconst ColorSelectorModal: FunctionComponent<ColorSelectorModalProps> = (props ) => {\n \n const { colorValue} = props;\n\n const [isModalOpen, { setTrue: showModal, setFalse: hideModal }] = useBoolean(false);\n\n const titleId = useId('title');\n\nconst colorCell = [\n { id: 'a', label: `Select to change.` , color: `${colorValue}`, maxWidth: '40px' },\n];\n\n return (\n\n <div className={contentStyles.currentColorStyles} onClick={showModal}>\n <SwatchColorPicker\n columnCount={1}\n cellHeight={50}\n cellWidth={50}\n cellShape={'square'}\n colorCells={colorCell}\n doNotContainWithinFocusZone\n />\n <Modal\n titleAriaId={titleId}\n isOpen={isModalOpen}\n onDismiss={hideModal}\n containerClassName={contentStyles.container}\n isDarkOverlay={false}\n >\n <div className={contentStyles.header}>\n <span id={titleId}>Select a color.</span>\n <IconButton\n styles={iconButtonStyles}\n iconProps={cancelIcon}\n ariaLabel=\"Close popup modal\"\n onClick={hideModal} />\n </div>\n <div className={contentStyles.body}>\n {props.children}\n </div>\n </Modal>\n </div>\n );\n};\n\nexport default ColorSelectorModal;\n","import * as React from 'react';\nimport { getId } from '@uifabric/utilities/lib/getId';\n\n/**\n * Hook to generate a unique ID in the global scope (spanning across duplicate copies of the same library).\n *\n * @param prefix - Optional prefix for the ID\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix?: string, providedId?: string): string {\n // getId should only be called once since it updates the global constant for the next ID value.\n // (While an extra update isn't likely to cause problems in practice, it's better to avoid it.)\n const ref = React.useRef<string | undefined>(providedId);\n if (!ref.current) {\n ref.current = getId(prefix);\n }\n return ref.current;\n}\n","function fontFamily(fonts: any) {\n return fonts.map((font: any) => `'${font}'`).join(', ');\n}\n \n export const DEFAULT_ACCENT = '#0063B1';\n export const DEFAULT_SUBTLE = '#767676'; // With contrast 4.5:1 to #ffffff\n export const PADDING_REGULAR = 10;\n export const DEFAULT_UNDEFINED_COLOR = '#000000';\n export const DEFAULT_UNDEFINED_RGBA = 'rgba(255,255,255, 50)';\n \nexport const defaultStyleOptions = {\n // Color and paddings\n accent: DEFAULT_ACCENT,\n backgroundColor: '#ffffff',\n cardEmphasisBackgroundColor: '#F0F0F0',\n paddingRegular: PADDING_REGULAR,\n paddingWide: PADDING_REGULAR * 2,\n subtle: DEFAULT_SUBTLE,\n \n // Word break\n messageActivityWordBreak: 'break-word', // 'normal' || 'break-all' || 'break-word' || 'keep-all'\n \n // Fonts\n fontSizeSmall: '80%',\n monospaceFont: fontFamily(['Consolas', 'Courier New', 'monospace']),\n primaryFont: fontFamily(['Calibri', 'Helvetica Neue', 'Arial', 'sans-serif']),\n \n // Avatar\n avatarBorderRadius: '50%',\n avatarSize: 40,\n botAvatarBackgroundColor: '$accent' || DEFAULT_ACCENT, // defaults to accent color\n botAvatarImage: '',\n botAvatarInitials: '',\n // userAvatarBackgroundColor: DEFAULT_ACCENT, // defaults to accent color\n userAvatarImage: '',\n userAvatarInitials: '',\n \n // Bubble\n // TODO: Should we make a bubbleFromBot*\n bubbleBackground: '#ffffff',\n bubbleBorderColor: '#E6E6E6',\n bubbleBorderRadius: 2,\n bubbleBorderStyle: 'solid',\n bubbleBorderWidth: 1,\n bubbleFromUserBackground: '#ffffff',\n bubbleFromUserBorderColor: '#E6E6E6',\n bubbleFromUserBorderRadius: 2,\n bubbleFromUserBorderStyle: 'solid',\n bubbleFromUserBorderWidth: 1,\n bubbleFromUserNubOffset: 'top',\n bubbleFromUserNubSize: 0,\n bubbleFromUserTextColor: '#000000',\n bubbleImageHeight: 240,\n bubbleMaxWidth: 480, // screen width = 600px\n bubbleMinHeight: 40,\n bubbleMinWidth: 250, // min screen width = 300px, Edge requires 372px (https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/13621468/)\n bubbleNubOffset: 'top',\n bubbleNubSize: 0,\n bubbleTextColor: '#000000',\n \n // Markdown\n markdownRespectCRLF: true,\n \n // Rich Cards\n richCardWrapTitle: false, // Applies to subtitles as well\n \n // Root\n rootHeight: '100%',\n rootWidth: '100%',\n rootZIndex: 0, // \"z-index\" for the root container of Web Chat. This will form a new stacking context so \"z-index\" used in children won't pollute.\n \n // Scroll to end button\n hideScrollToEndButton: false,\n \n // Send box\n hideSendBox: false,\n hideUploadButton: false,\n microphoneButtonColorOnDictate: '#F33',\n sendBoxBackground: '#ffffff',\n sendBoxButtonColor: '$subtle' || DEFAULT_SUBTLE, // defaults to subtle\n sendBoxButtonColorOnDisabled: '#CCC',\n sendBoxButtonColorOnFocus: '#333',\n sendBoxButtonColorOnHover: '#333',\n sendBoxDisabledTextColor: '$subtle' || DEFAULT_SUBTLE, // defaults to subtle\n sendBoxHeight: 40,\n sendBoxMaxHeight: 200,\n sendBoxTextColor: '#000000',\n // TODO: We should deprecate this because there isn't an easy way to make the width of the send box, narrower than the transcript\n sendBoxBorderBottom: '',\n sendBoxBorderLeft: '',\n sendBoxBorderRight: '',\n sendBoxBorderTop: 'solid 1px #E6E6E6',\n sendBoxPlaceholderColor: '$subtle' || DEFAULT_SUBTLE, // defaults to subtle\n sendBoxTextWrap: false,\n \n // Visually show spoken text\n showSpokenText: false,\n \n // Suggested actions\n suggestedActionDisabledColor: '#ffffff',\n // suggestedActionColor: '#ffffff',\n suggestedActionBackground: '#ffffff',\n suggestedActionBorder: undefined, // split into 3, null\n suggestedActionBorderColor: '#f5f5f5', // defaults to accent\n suggestedActionBorderRadius: 0,\n suggestedActionBorderStyle: 'solid',\n suggestedActionBorderWidth: 2,\n suggestedActionDisabledBackground: '$suggestedActionBackground' || DEFAULT_UNDEFINED_COLOR, // defaults to suggestedActionBackground // MM: not used in BF4\n suggestedActionDisabledBorder: null,\n suggestedActionDisabledBorderColor: '#E6E6E6',\n suggestedActionDisabledBorderStyle: 'solid',\n suggestedActionDisabledBorderWidth: 2,\n suggestedActionDisabledTextColor: '$subtle' || DEFAULT_SUBTLE , // defaults to subtle // MM: not used in BF4\n suggestedActionHeight: 40,\n suggestedActionImageHeight: 20,\n suggestedActionLayout: 'carousel', // either 'carousel' or 'stacked'\n suggestedActionTextColor: null,\n suggestedActionRadius: 0,\n suggestedActionWidth: 0,\n suggestedActionDisabledRadius: 0,\n suggestedActionDisabledWidth: 0,\n suggestedActionsCarouselFlipperSize: 0,\n\n // [\n // {\n // \"id\": \"suggestedActionBackground\",\n // \"displayName\": \"Background Color\",\n // \"category\": \"Suggested Actions\",\n // \"subCategory\": \"Colors\",\n // \"uiSelectorType\": \"colorSelector\"\n // },\n // {\n // \"id\": \"suggestedActionTextColor\",\n // \"displayName\": \"Color\",\n // \"category\": \"Suggested Actions\",\n // \"subCategory\": \"Colors\",\n // \"uiSelectorType\": \"colorSelector\"\n // },\n // {\n // \"id\": \"suggestedActionDisabledBackground\",\n // \"displayName\": \"Background Color (Disabled)\",\n // \"category\": \"Suggested Actions\",\n // \"subCategory\": \"Colors\",\n // \"uiSelectorType\": \"colorSelector\"\n // },\n // {\n // \"id\": \"suggestedActionDisabledTextColor\",\n // \"displayName\": \"Text Color (Disabled)\",\n // \"category\": \"Suggested Actions\",\n // \"subCategory\": \"Colors\",\n // \"uiSelectorType\": \"colorSelector\"\n // }\n // ]\n // Suggested actions 'stacked' layout\n suggestedActionsStackedHeight: 0, // defaults to 'auto' ** changed value from undefined to 0\n suggestedActionsStackedOverflow: null,\n \n // Timestamp\n groupTimestamp: true,\n sendTimeout: 20000,\n sendTimeoutForAttachments: 120000,\n timestampColor: '$subtle' || DEFAULT_UNDEFINED_COLOR, // defaults to subtle\n timestampFormat: 'relative', // 'absolute'\n \n // Transcript overlay buttons (e.g. carousel and suggested action flippers, scroll to bottom, etc.)\n newMessagesButtonFontSize: '85%',\n transcriptOverlayButtonBackground: 'rgba(0, 0, 0, .6)',\n transcriptOverlayButtonBackgroundOnFocus: 'rgba(0, 0, 0, .8)',\n transcriptOverlayButtonBackgroundOnHover: 'rgba(0, 0, 0, .8)',\n transcriptOverlayButtonColor: '#ffffff',\n transcriptOverlayButtonColorOnFocus: DEFAULT_UNDEFINED_RGBA, // defaults to transcriptOverlayButtonColor\n transcriptOverlayButtonColorOnHover: DEFAULT_UNDEFINED_RGBA, // defaults to transcriptOverlayButtonColor\n \n // Video\n videoHeight: 270, // based on bubbleMaxWidth, 480 / 16 * 9 = 270\n \n // Connectivity UI\n connectivityIconPadding: PADDING_REGULAR * 1.2,\n connectivityMarginLeftRight: PADDING_REGULAR * 1.4,\n connectivityMarginTopBottom: PADDING_REGULAR * 0.8,\n connectivityTextSize: '75%',\n failedConnectivity: '#C50F1F',\n slowConnectivity: '#EAA300',\n notificationText: '#5E5E5E',\n slowConnectionAfter: 15000,\n \n typingAnimationBackgroundImage: null,\n typingAnimationDuration: 5000,\n typingAnimationHeight: 20,\n typingAnimationWidth: 64,\n \n spinnerAnimationBackgroundImage: null, //change from null to 0\n spinnerAnimationHeight: 16,\n spinnerAnimationWidth: 16,\n spinnerAnimationPadding: 12,\n \n enableUploadThumbnail: true,\n uploadThumbnailContentType: 'image/jpeg',\n uploadThumbnailHeight: 360,\n uploadThumbnailQuality: 1,\n uploadThumbnailWidth: 720,\n \n // deprecated; will be removed on or after 2021-02-01\n spinnerAnimationPaddingRight: undefined,\n \n // Toast UI\n \n // New debounce timeout value only affect new notifications.\n notificationDebounceTimeout: 400,\n \n hideToaster: false,\n toasterHeight: 32,\n toasterMaxHeight: 32 * 5,\n toasterSingularMaxHeight: 50,\n toastFontSize: '87%',\n toastIconWidth: 36,\n toastSeparatorColor: '#E8EAEC',\n toastTextPadding: 6,\n \n toastErrorBackgroundColor: '#FDE7E9',\n toastErrorColor: '#A80000',\n toastInfoBackgroundColor: '#CEF1FF',\n toastInfoColor: '#105E7D',\n toastSuccessBackgroundColor: '#DFF6DD',\n toastSuccessColor: '#107C10',\n toastWarnBackgroundColor: '#FFF4CE',\n toastWarnColor: '#3B3A39'\n }\n ","export interface ISelectableOption {\r\n /**\r\n * Arbitrary string associated with this option.\r\n */\r\n key: string | number;\r\n\r\n /**\r\n * ID attribute associated with this option\r\n */\r\n id?: string;\r\n\r\n /**\r\n * Text to render for this option\r\n */\r\n text: string;\r\n\r\n /**\r\n * Title attribute (built in tooltip) for a given option.\r\n */\r\n title?: string;\r\n\r\n /**\r\n * Text to render for this option\r\n */\r\n itemType?: SelectableOptionMenuItemType;\r\n\r\n /**\r\n * Index for this option\r\n */\r\n index?: number;\r\n\r\n /**\r\n * The aria label for the dropdown option. If not present, the `text` will be used.\r\n */\r\n ariaLabel?: string;\r\n\r\n /** If option is selected. */\r\n selected?: boolean;\r\n\r\n /**\r\n * Whether the option is disabled\r\n * @defaultvalue false\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Defines whether the option is hidden or not.\r\n * @defaultvalue false\r\n */\r\n hidden?: boolean;\r\n\r\n /**\r\n * Data available to custom onRender functions.\r\n */\r\n data?: any;\r\n}\r\n\r\nexport enum SelectableOptionMenuItemType {\r\n Normal = 0,\r\n Divider = 1,\r\n Header = 2,\r\n}\r\n","import React, { ElementRef, useRef, useState } from 'react';\n// import {\n// ColorPicker,\n// IColor,\n// IColorPickerStyles,\n// } from 'office-ui-fabric-react/lib/index';\nimport {\n ColorPicker,\n IColor,\n IColorPicker,\n IColorPickerStyles,\n} from '@fluentui/react';\nimport { useBoolean } from '@uifabric/react-hooks';\nimport { debounce } from 'underscore';\n\n\nimport ColorSelectorModal from './colorSelectorModal';\n\nimport { mergeStyleSets } from 'office-ui-fabric-react/lib/Styling';\nimport { TextField } from '@fluentui/react';\nimport { DEFAULT_UNDEFINED_COLOR } from '../constants/defaultStyleOptions';\nimport { ContainerName } from '../../Redux/reducers/AppReducer';\n\nconst classNames = mergeStyleSets({\n column: { marginTop: '16px' },\n parent: {\n display: 'flex',\n flexDirection: 'row',\n marginRight: '1rem',\n height: '100px',\n }\n});\n\nconst colorPickerStyles: Partial<IColorPickerStyles> = {\n panel: { padding: 12 },\n root: {\n maxWidth: 300,\n minWidth: 300,\n },\n colorRectangle: { height: 268 },\n};\n\nconst warningMessage = 'Hexadecimal colors must start with a \"#\" and can only contain 6 total alphanumeric values from [0-9] and [a-f]';\n\ninterface ColorSelectorProps {\n id: string;\n value: any;\n onChange: (styleElementName: string, value: any) => void;\n getStyleOptionValue: (key: any, containerName?: ContainerName) => any;\n}\n\nconst removeHash = (colorCode: string) => {\n if (colorCode && colorCode.length > 0 && colorCode[0] === '#') {\n return colorCode.slice(1);\n }\n return colorCode;\n}\n\nexport const ColorSelector = (props: ColorSelectorProps) => {\n const getComputedValue = (value: string): any => {\n if(value === 'Transparent') {\n return '#ffffff00';\n }\n if(value && value.startsWith(\"$\")) {\n \n let retFromStyleOptions = props.getStyleOptionValue(value.replace(\"$\", \"\"), \"styleOptions\");\n let retFromUIOptions = props.getStyleOptionValue(value.replace(\"$\", \"\"), \"UI\");\n let ret = retFromStyleOptions || retFromUIOptions;\n if((retFromStyleOptions && retFromStyleOptions.startsWith(\"$\")) || (retFromUIOptions && retFromUIOptions.startsWith(\"$\"))) {\n ret = getComputedValue(retFromStyleOptions || retFromUIOptions);\n }\n if(!ret) {\n return DEFAULT_UNDEFINED_COLOR;\n }\n return ret || DEFAULT_UNDEFINED_COLOR;\n } else { \n return value || DEFAULT_UNDEFINED_COLOR;\n }\n }\n const { id, value, onChange } = props;\n const [textFieldValue, setTextFieldValue] = useState(removeHash(getComputedValue(value)));\n const [isErrorMessageOpen, { setTrue: showErrorMessage, setFalse: hideErrorMessage }] = useBoolean(false);\n\n const compRef = useRef<HTMLDivElement>(null);\n const isValid = (newValue?: string): boolean => {\n // /^#([0-9A-F]{3}){1,2}$/i\n if (newValue && (/^#(([0-9A-F]{3}){1,2}|[0-9A-F]{8})$/i).test(`#${newValue}`)) {\n return true;\n }\n return false;\n }\n\n const colorFormOnChange = (newValue?: string) => {\n if (isValid(newValue)) {\n setTextFieldValue(newValue as string);\n onChange(id, `#${newValue}`);\n if (isErrorMessageOpen) {\n hideErrorMessage();\n }\n }\n else {\n if (newValue !== null && newValue !== undefined) {\n setTextFieldValue(newValue);\n if (!isErrorMessageOpen) {\n showErrorMessage();\n }\n }\n }\n }\n\n const updateColor = (colorObj: IColor) => {\n onChange(id, colorObj.str);\n hideErrorMessage();\n setTextFieldValue(colorObj.hex);\n if (compRef.current) {\n if (colorObj.str === '#000000' || colorObj.str === '#ffffff') {\n document.querySelector<HTMLDivElement>('.ms-ColorPicker .ms-ColorPicker-slider') && (document.querySelector<HTMLDivElement>('.ms-ColorPicker-slider')!.style.display = \"none\");\n\n } else {\n document.querySelector<HTMLDivElement>('.ms-ColorPicker .ms-ColorPicker-slider') && (document.querySelector<HTMLDivElement>('.ms-ColorPicker-slider')!.style.display = \"block\");\n }\n\n }\n }\n\n const debounceUpdateColor = debounce(updateColor, 150)\n \n\n return (\n <div className={classNames.parent} ref={compRef}>\n {\n <ColorSelectorModal colorValue={getComputedValue(value)} >\n <ColorPicker\n color={getComputedValue(value)}\n onChange={(e: any, color: IColor) => {\n debounceUpdateColor(color);\n }}\n showPreview\n styles={colorPickerStyles}\n strings={{\n alphaAriaLabel: 'Alpha slider: Use left and right arrow keys to change value, hold shift for a larger jump',\n transparencyAriaLabel: 'Transparency slider: Use left and right arrow keys to change value, hold shift for a larger jump',\n hueAriaLabel: 'Hue slider: Use left and right arrow keys to change value, hold shift for a larger jump',\n }}\n alphaSliderHidden />\n </ColorSelectorModal>\n }\n\n <div className={classNames.column}>\n <TextField value={textFieldValue} errorMessage={isErrorMessageOpen ? warningMessage : ''} prefix='#' onChange={(e: any, newValue?: string) => { colorFormOnChange(newValue) }} />\n </div>\n </div>\n );\n};\n","import React, { useRef, useState } from 'react';\nimport {\n ColorPicker,\n getColorFromRGBA,\n getColorFromString,\n updateA,\n IColor,\n IColorPickerStyles,\n} from 'office-ui-fabric-react/lib/index';\nimport { useBoolean } from '@uifabric/react-hooks';\nimport { compose, debounce } from 'underscore';\nimport ColorSelectorModal from './colorSelectorModal';\n\nimport { mergeStyleSets } from 'office-ui-fabric-react/lib/Styling';\nimport { IColorPickerProps, TextField } from '@fluentui/react';\n\nconst classNames = mergeStyleSets({\n column: { marginTop: '16px' },\n parent: {\n height: '100px',\n display: 'flex',\n flexDirection: 'row',\n marginRight: '1rem',\n \n }\n});\n\nconst colorPickerStyles: Partial<IColorPickerStyles> = {\n panel: { padding: 12 },\n root: {\n maxWidth: 300,\n minWidth: 300,\n },\n colorRectangle: { height: 268 },\n};\n\nconst fullColorHex = (rgba: number[]) => {\n return (getColorFromRGBA({r: rgba[0], g: rgba[1], b: rgba[2], a: rgba[3]})).str;\n};\n\nconst parseRGBStringValues = (rgbaValue: string) => {\n return (rgbaValue.replace(/[rgba()]/g, '')).split(',');\n}\n\nconst parseRGBValues = (rgbaValue: string) : number[] => { \n return parseRGBStringValues(rgbaValue).map((stringValue) => {\n if (!isNaN(parseInt(stringValue))) { \n return parseInt(stringValue);\n }\n else if(parseFloat(stringValue)){\n return (parseFloat(stringValue) * 100);\n }\n else { return 0; }; \n })\n}\n\nconst getHexColorFromRgba = (rgbaValue: string) => {\n return (fullColorHex(parseRGBValues(rgbaValue))); // Converts Rgba to HEX\n}\n\nconst warningMessage: string = 'Rgba values must contain only numeric values [0-9] which are separated by commas [ , ].'\n\ninterface RgbaSelectorProps {\n id: string;\n value: any;\n onChange: (styleElementName: string, value: any) => void;\n}\n\nexport const RgbaSelector = (props: RgbaSelectorProps) => {\n const { id, value, onChange, } = props;\n const [textFieldValue, setTextFieldValue] = useState(value === 'Transparent'? 'Transparent' : value.replace(/[rgba()]/g, ''));\n const [isErrorMessageOpen, { setTrue: showErrorMessage, setFalse: hideErrorMessage }] = useBoolean(false);\n const compRef = useRef<HTMLDivElement>(null);\n\n\n const updateColor = (colorObj: IColor) => { \n hideErrorMessage();\n const alpha = (colorObj.a || 0) <= 0 ? '0' : (colorObj.a || 100) >= 100 ? '1' : '0.'+colorObj.a;\n onChange(id,`rgba(${colorObj.r}, ${colorObj.g}, ${colorObj.b}, ${alpha})`);\n setTextFieldValue(`${colorObj.r}, ${colorObj.g}, ${colorObj.b}, ${colorObj.a}`);\n if (compRef.current) {\n if ((colorObj.r === 0 && colorObj.b === 0 && colorObj.g === 0) || (colorObj.r === 255 && colorObj.b === 255 && colorObj.g === 255)) {\n document.querySelector<HTMLDivElement>('.ms-ColorPicker .ms-ColorPicker-slider') && (document.querySelector<HTMLDivElement>('.ms-ColorPicker-slider')!.style.display = \"none\");\n // document.querySelector<HTMLDivElement>('.ms-ColorPicker .ms-ColorPicker-slider.is-alpha') && (document.querySelector<HTMLDivElement>('.ms-ColorPicker-slider.is-alpha')!.style.display = \"none\");\n\n\n } else {\n document.querySelector<HTMLDivElement>('.ms-ColorPicker .ms-ColorPicker-slider') && (document.querySelector<HTMLDivElement>('.ms-ColorPicker-slider')!.style.display = \"block\");\n // document.querySelector<HTMLDivElement>('.ms-ColorPicker .ms-ColorPicker-slider.is-alpha') && (document.querySelector<HTMLDivElement>('.ms-ColorPicker-slider.is-alpha')!.style.display = \"block\");\n\n }\n\n }\n }\n \n const debounceUpdateColor = debounce(updateColor,150);\n\n const isValid = (newValue?: string): boolean => {\n if (newValue?.match(/[^. ,0-9]/g) === null && newValue?.match(/[,]/g)?.length===3) {\n const rgbaArray = parseRGBValues(newValue);\n const result = rgbaArray.reduce((acc, value)=>(\n acc && (value <= 255)), true)\n return result;\n }\n return false;\n }\n\n const [alphaType] = useState<IColorPickerProps['alphaType']>('transparency');\n\n const colorFormOnChange = (newValue?: string) => {\n if (isValid(newValue)) {\n setTextFieldValue(newValue as string);\n onChange(id, `rgba(${newValue})`)\n if (isErrorMessageOpen) {\n hideErrorMessage();\n }\n }\n else {\n if (newValue !== null && newValue !== undefined) {\n setTextFieldValue(newValue);\n if (!isErrorMessageOpen) {\n showErrorMessage();\n }\n }\n }\n }\n const colorValue = value === 'Transparent' ? getColorFromString('rgba(0, 0, 0, 0)')! : (getColorFromString(value) || getColorFromString('#ffffff')!);\n let rgbaTransformedValue = null;\n try {\n let rgbaToTransformValue = getColorFromString(value)!;\n rgbaTransformedValue = `rgba(${rgbaToTransformValue.r}, ${rgbaToTransformValue.g}, ${rgbaToTransformValue.b}, ${rgbaToTransformValue.a})`\n }catch(ex){ \n \n }\n \n debugger;\n return (\n <div className={classNames.parent} ref={compRef}>\n <ColorSelectorModal colorValue={getHexColorFromRgba(value === 'Transparent' ? 'rgba(0, 0, 0, 0)' : rgbaTransformedValue || value)}>\n <ColorPicker\n color={colorValue}\n onChange={(e: any, color: IColor) => {\n debounceUpdateColor(color);\n }}\n showPreview\n alphaType={alphaType}\n styles={colorPickerStyles}\n strings={{\n alphaAriaLabel: 'Alpha slider: Use left and right arrow keys to change value, hold shift for a larger jump',\n transparencyAriaLabel: 'Transparency slider: Use left and right arrow keys to change value, hold shift for a larger jump',\n hueAriaLabel: 'Hue slider: Use left and right arrow keys to change value, hold shift for a larger jump',\n }}\n />\n </ColorSelectorModal>\n <div className={classNames.column}>\n <TextField errorMessage={isErrorMessageOpen ? warningMessage : ''} value={textFieldValue} onChange={(e: any, newValue?: string) => {colorFormOnChange(newValue)}} prefix={'rgba('} suffix={')'} />\n </div>\n </div>\n );\n};\n","interface IDropDownOptions {\n [key: string]: (string )[];\n}\n\nconst DropDownOptions: IDropDownOptions = {\n borderStyles: [\n 'dotted',\n 'dashed',\n 'solid',\n 'double',\n 'groove',\n 'ridge',\n 'inset',\n 'outset',\n 'none',\n 'hidden',\n ],\n default: [\n 'Options Not Yet Assigned',\n ],\n fonts: [\n 'inherit',\n 'Druid Regular',\n 'Arial',\n 'Times New Roman',\n 'Helvetica',\n 'Times',\n 'Courier New',\n 'Verdana',\n 'Courier',\n 'Arial Narrow',\n 'Candara',\n 'Geneva',\n 'Calibri',\n 'Optima',\n 'Cambria',\n 'Garamond',\n 'Perpetua',\n 'Monaco',\n 'Didot',\n 'Brush Script MT',\n 'Lucida Bright',\n 'Copperplate',\n ],\n suggestedActionLayout: [\n 'flow',\n 'carousel',\n 'stacked',\n ],\n timestampFormat: [\n 'relative',\n 'absolute',\n ],\n wordBreak: [\n 'normal',\n 'break-all',\n 'break-word',\n 'keep-all',\n ],\n bubbleNubOffset: ['bottom', 'top'],\n position:\n ['left', 'right'],\n scrollToEndButtonBehavior: [\"off\", 'any', 'unread']\n};\n\nexport default DropDownOptions;","import { IDropdownOption, DropdownMenuItemType } from '../Dropdown.types';\n\n/**\n * A utility class to cache size and position in cache.\n *\n * Dropdown options has non-selectable display types. It is therefore not cheap to determine\n * the total number of actual selectable options as well as the position an option is in the\n * list of options - O(n) cost for each lookup.\n *\n * Given that we potentially have to make this determination on every single render pass, this\n * cache should provide a little bit of relief.\n */\nexport class DropdownSizePosCache {\n private _cachedOptions: IDropdownOption[];\n private _displayOnlyOptionsCache: number[];\n private _size = 0;\n\n /**\n * Invalidates the cache and recalculate the size of selectable options.\n */\n public updateOptions(options: IDropdownOption[]) {\n const displayOnlyOptionsCache = [];\n let size = 0;\n for (let i = 0; i < options.length; i++) {\n if (options[i].itemType === DropdownMenuItemType.Divider || options[i].itemType === DropdownMenuItemType.Header) {\n displayOnlyOptionsCache.push(i);\n } else if (!options[i].hidden) {\n size++;\n }\n }\n\n this._size = size;\n this._displayOnlyOptionsCache = displayOnlyOptionsCache;\n this._cachedOptions = [...options];\n }\n\n /**\n * The size of all the selectable options.\n */\n public get optionSetSize(): number {\n return this._size;\n }\n\n /**\n * The chached options array.\n */\n public get cachedOptions(): IDropdownOption[] {\n return this._cachedOptions;\n }\n\n /**\n * Returns the position of this option element relative to the full set of selectable option elements.\n * Note: the first selectable element is position 1 in the set.\n * @param index The raw index of the option element.\n */\n public positionInSet(index: number | undefined): number | undefined {\n if (index === undefined) {\n return undefined;\n }\n\n // we could possibly memoize this too but this should be good enough, most of the time (the expectation is that\n // when you have a lot of options, the selectable options will heavily dominate over the non-selectable options.\n let offset = 0;\n while (index > this._displayOnlyOptionsCache[offset]) {\n offset++;\n }\n\n if (this._displayOnlyOptionsCache[offset] === index) {\n throw new Error(`Unexpected: Option at index ${index} is not a selectable element.`);\n }\n\n return index - offset + 1;\n }\n}\n","import * as React from 'react';\nimport { IFocusTrapZoneProps } from '../../FocusTrapZone';\nimport { ILayerProps } from '../../Layer';\nimport { IOverlayProps } from '../../Overlay';\nimport { IStyle, ITheme } from '../../Styling';\nimport { IRefObject, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';\nimport { IButtonStyles } from '../Button/Button.types';\nimport { PanelBase } from './Panel.base';\nimport { IPopupProps } from '../../Popup';\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanel {\n /**\n * Forces the panel to open.\n */\n open: () => void;\n\n /**\n * Forces the panel to dismiss.\n */\n dismiss: (ev?: React.KeyboardEvent<HTMLElement>) => void;\n}\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanelProps extends React.HTMLAttributes<PanelBase> {\n /**\n * Optional callback to access the IPanel interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IPanel>;\n\n /**\n * Whether the panel is displayed.\n * If true, will cause panel to stay open even if dismissed.\n * If false, will cause panel to stay hidden.\n * If undefined, will allow the panel to control its own visility through open/dismiss methods.\n * @defaultvalue undefined\n */\n isOpen?: boolean;\n\n /**\n * Has the close button visible.\n * @defaultvalue true\n */\n hasCloseButton?: boolean;\n\n /**\n * Whether the panel can be light dismissed.\n * @defaultvalue false\n */\n isLightDismiss?: boolean;\n\n /**\n * Whether the panel is hidden on dismiss, instead of destroyed in the DOM.\n * Protects the contents from being destroyed when the panel is dismissed.\n * @defaultvalue false\n */\n isHiddenOnDismiss?: boolean;\n\n /**\n * Whether the panel uses a modal overlay or not\n * @defaultvalue true\n */\n isBlocking?: boolean;\n\n /**\n * Determines if content should stretch to fill available space putting footer at the bottom of the page\n * @defaultvalue false\n */\n isFooterAtBottom?: boolean;\n\n /**\n * Header text for the Panel.\n * @defaultvalue \"\"\n */\n headerText?: string;\n\n /**\n * The props for header text container.\n */\n headerTextProps?: React.HTMLAttributes<HTMLDivElement>;\n\n /**\n * A callback function for when the Panel is opened, before the animation completes.\n */\n onOpen?: () => void;\n\n /**\n * A callback function for when the Panel is opened, after the animation completes.\n */\n onOpened?: () => void;\n\n /**\n * A callback function for when the panel is closed, before the animation completes.\n * If the panel should NOT be dismissed based on some keyboard event, then simply call ev.preventDefault() on it\n */\n onDismiss?: (ev?: React.SyntheticEvent<HTMLElement>) => void;\n\n /**\n * A callback function which is called **after** the Panel is dismissed and the animation is complete.\n * (If you need to update the Panel's `isOpen` prop in response to a dismiss event, use `onDismiss` instead.)\n */\n onDismissed?: () => void;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IPanelStyleProps, IPanelStyles>;\n\n /**\n * Theme provided by High-Order Component.\n */\n theme?: ITheme;\n\n /**\n * Additional css class to apply to the Panel\n * @defaultvalue undefined\n */\n className?: string;\n\n /**\n * Type of the panel.\n * @defaultvalue PanelType.smallFixedFar\n */\n type?: PanelType;\n\n /**\n * Custom panel width, used only when `type` is set to `PanelType.custom`.\n */\n customWidth?: string;\n\n /**\n * Aria label on close button\n */\n closeButtonAriaLabel?: string;\n\n /**\n * Optional parameter to provider the class name for header text\n */\n headerClassName?: string;\n\n /**\n * Sets the HTMLElement to focus on when exiting the FocusTrapZone.\n * @defaultvalue The element.target that triggered the Panel.\n */\n elementToFocusOnDismiss?: HTMLElement;\n\n /**\n * Indicates if this Panel will ignore keeping track of HTMLElement that activated the Zone.\n * Deprecated, use `focusTrapZoneProps`.\n * @defaultvalue false\n * @deprecated Use `focusTrapZoneProps`.\n */\n ignoreExternalFocusing?: boolean;\n\n /**\n * Indicates whether Panel should force focus inside the focus trap zone.\n * If not explicitly specified, behavior aligns with FocusTrapZone's default behavior.\n * Deprecated, use `focusTrapZoneProps`.\n * @deprecated Use `focusTrapZoneProps`.\n */\n forceFocusInsideTrap?: boolean;\n\n /**\n * Indicates the selector for first focusable item.\n * Deprecated, use `focusTrapZoneProps`.\n * @deprecated Use `focusTrapZoneProps`.\n */\n firstFocusableSelector?: string;\n\n /**\n * Optional props to pass to the FocusTrapZone component to manage focus in the panel.\n */\n focusTrapZoneProps?: IFocusTrapZoneProps;\n\n /**\n * Optional props to pass to the Layer component hosting the panel.\n */\n layerProps?: ILayerProps;\n\n /**\n * Optional props to pass to the Overlay component that the panel uses.\n */\n overlayProps?: IOverlayProps;\n\n /**\n * Optional props to pass the Popup component that the panel uses.\n */\n popupProps?: IPopupProps;\n\n /**\n * Optional custom function to handle clicks outside the panel in lightdismiss mode\n */\n onLightDismissClick?: () => void;\n\n /**\n * Optional custom function to handle clicks outside this component\n */\n onOuterClick?: (ev?: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Optional custom renderer navigation region. Replaces the region that contains the close button.\n */\n onRenderNavigation?: IRenderFunction<IPanelProps>;\n\n /**\n * Optional custom renderer for content in the navigation region. Replaces current close button.\n */\n onRenderNavigationContent?: IRenderFunction<IPanelProps>;\n\n /**\n * Optional custom renderer for header region. Replaces current title\n */\n onRenderHeader?: IPanelHeaderRenderer;\n\n /**\n * Optional custom renderer for body region. Replaces any children passed into the component.\n */\n onRenderBody?: IRenderFunction<IPanelProps>;\n\n /**\n * Optional custom renderer for footer region. Replaces sticky footer.\n */\n onRenderFooter?: IRenderFunction<IPanelProps>;\n\n /**\n * Custom renderer for content in the sticky footer\n */\n onRenderFooterContent?: IRenderFunction<IPanelProps>;\n\n /**\n * Deprecated property. Serves no function.\n * @deprecated Serves no function.\n */\n componentId?: string;\n\n /**\n * Allow body scroll on content and overlay on touch devices. Changing after mounting has no effect.\n * @defaultvalue false\n */\n allowTouchBodyScroll?: boolean;\n}\n\n/**\n * Renderer function which takes an additional parameter, the ID to use for the element containing\n * the panel's title. This allows the `aria-labelledby` for the panel popup to work correctly.\n * Note that if `headerTextId` is provided, it **must** be used on an element, or screen readers\n * will be confused by the reference to a nonexistent ID.\n * {@docCategory Panel}\n */\nexport interface IPanelHeaderRenderer extends IRenderFunction<IPanelProps> {\n /**\n * @param props - Props given to the panel\n * @param defaultRender - Default header renderer. If using this renderer in code that does not\n * assign `headerTextId` to an element elsewhere, it **must** be passed to this function.\n * @param headerTextId - If provided, this **must** be used as the ID of an element containing the\n * panel's title, because the panel popup uses this ID as its aria-labelledby.\n */\n (props?: IPanelProps, defaultRender?: IPanelHeaderRenderer, headerTextId?: string | undefined): JSX.Element | null;\n}\n\n/**\n * {@docCategory Panel}\n */\nexport enum PanelType {\n /**\n * Renders the Panel with a `fluid` (full screen) width.\n * Recommended for use on small screen breakpoints.\n * - Small (320-479): full screen width, 16px left/right padding\n * - Medium (480-639): full screen width, 16px left/right padding\n * - Large (640-1023): full screen width, 32px left/right padding\n * - XLarge (1024-1365): full screen width, 32px left/right padding\n * - XXLarge (1366-up): full screen width, 40px left/right padding\n */\n smallFluid = 0,\n\n /**\n * Renders the Panel in fixed-width `small` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): 340px width, 16px left/right padding\n * - Large (640-1023): 340px width, 32px left/right padding\n * - XLarge (1024-1365): 340px width, 32px left/right padding\n * - XXLarge (1366-up): 340px width, 40px left/right padding\n */\n smallFixedFar = 1,\n\n /**\n * Renders the Panel in fixed-width `small` size, anchored to the near side (left in LTR mode).\n * - Small (320-479): 272px width, 16px left/right padding\n * - Medium (480-639): 272px width, 16px left/right padding\n * - Large (640-1023): 272px width, 32px left/right padding\n * - XLarge (1024-1365): 272px width, 32px left/right padding\n * - XXLarge (1366-up): 272px width, 40px left/right padding\n */\n smallFixedNear = 2,\n\n /**\n * Renders the Panel in `medium` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): 592px width, 32px left/right padding\n * - XLarge (1024-1365): 644px width, 32px left/right padding\n * - XXLarge (1366-up): 644px width, 40px left/right padding\n */\n medium = 3,\n\n /**\n * Renders the Panel in `large` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n * - XLarge (1024-1365): 48px fixed left margin, fluid width, 32px left/right padding\n * - XXLarge (1366-up): 428px fixed left margin, fluid width, 40px left/right padding\n */\n large = 4,\n\n /**\n * Renders the Panel in `large` size, anchored to the far side (right in LTR mode), with a fixed width at\n * XX-Large breakpoint.\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n * - XLarge (1024-1365): 48px fixed left margin, fluid width, 32px left/right padding\n * - XXLarge (1366-up): 940px width, 40px left/right padding\n */\n largeFixed = 5,\n\n /**\n * Renders the Panel in `extra large` size, anchored to the far side (right in LTR mode).\n * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n * - XLarge (1024-1365): adapts to `PanelType.large` at this breakpoint\n * - XXLarge (1366-1919): 176px fixed left margin, fluid width, 40px left/right padding\n * - XXXLarge (1920-up): 176px fixed left margin, fluid width, 40px left/right padding\n */\n extraLarge = 6,\n\n /**\n * Renders the Panel in `custom` size using `customWidth`, anchored to the far side (right in LTR mode).\n * - Has a fixed width provided by the `customWidth` prop\n * - When screen width reaches the `customWidth` value it will behave like a fluid width Panel\n * taking up 100% of the viewport width\n */\n custom = 7,\n\n /**\n * Renders the Panel in `custom` size using `customWidth`, anchored to the near side (left in LTR mode).\n * - Has a fixed width provided by the `customWidth` prop\n * - When screen width reaches the `customWidth` value it will behave like a fluid width Panel\n * taking up 100% of the viewport width\n */\n customNear = 8,\n}\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanelStyleProps {\n /**\n * Theme provided by High-Order Component.\n */\n theme: ITheme;\n\n /**\n * Accept custom classNames\n */\n className?: string;\n\n /**\n * Is Panel open\n */\n isOpen?: boolean;\n\n /**\n * Is animation currently running\n */\n isAnimating?: boolean;\n\n /**\n * Is panel on right side\n */\n isOnRightSide?: boolean;\n\n /**\n * Is panel hidden on dismiss\n */\n isHiddenOnDismiss?: boolean;\n\n /**\n * Classname for FocusTrapZone element\n */\n focusTrapZoneClassName?: string;\n\n /**\n * Determines if content should stretch to fill available space putting footer at the bottom of the page\n */\n isFooterAtBottom?: boolean;\n\n /**\n * Based on state value setting footer to sticky or not\n */\n isFooterSticky?: boolean;\n\n /**\n * Panel has close button\n */\n hasCloseButton?: boolean;\n\n /**\n * Type of the panel.\n */\n type?: PanelType;\n\n /**\n * Optional parameter to provider the class name for header text\n */\n headerClassName?: string;\n\n /**\n * Determines where the header is rendered based on whether the user\n * has passed in a custom onRenderNavigation or onRenderNavigationContent render callback\n */\n hasCustomNavigation?: boolean;\n}\n\nexport interface IPanelSubComponentStyles {\n /**\n * Styling for close button child component.\n */\n closeButton: Partial<IButtonStyles>;\n}\n\n/**\n * {@docCategory Panel}\n */\nexport interface IPanelStyles {\n /**\n * Style for the root element.\n */\n root: IStyle;\n\n /**\n * Style for the overlay element.\n */\n overlay: IStyle;\n\n /**\n * Style for the hidden element.\n */\n hiddenPanel: IStyle;\n\n /**\n * Style for the main section element.\n */\n main: IStyle;\n\n /**\n * Style for the navigation container element.\n */\n commands: IStyle;\n\n /**\n * Style for the Body and Footer container element.\n */\n contentInner: IStyle;\n\n /**\n * Style for the scrollable content area container element.\n */\n scrollableContent: IStyle;\n\n /**\n * Style for the close button container element.\n */\n navigation: IStyle;\n\n /**\n * Style for the close button IconButton element.\n * @deprecated Use `subComponentStyles.closeButton` instead.\n */\n closeButton?: IStyle;\n\n /**\n * Style for the header container div element.\n */\n header: IStyle;\n\n /**\n * Style for the header text div element.\n */\n headerText: IStyle;\n\n /**\n * Style for the body div element.\n */\n content: IStyle;\n\n /**\n * Style for the footer div element.\n */\n footer: IStyle;\n\n /**\n * Style for the inner footer div element.\n */\n footerInner: IStyle;\n\n /**\n * Styling for subcomponents.\n */\n subComponentStyles: IPanelSubComponentStyles;\n}\n","import * as React from 'react';\nimport { IconButton } from '../../Button';\nimport { Layer } from '../../Layer';\nimport { Overlay } from '../../Overlay';\nimport { Popup } from '../../Popup';\nimport { IProcessedStyleSet } from '../../Styling';\nimport {\n allowScrollOnElement,\n allowOverscrollOnElement,\n classNamesFunction,\n divProperties,\n elementContains,\n getId,\n getNativeProps,\n getRTL,\n css,\n warnDeprecations,\n Async,\n EventGroup,\n initializeComponentRef,\n} from '../../Utilities';\nimport { FocusTrapZone } from '../FocusTrapZone/index';\nimport { IPanel, IPanelProps, IPanelStyleProps, IPanelStyles, PanelType } from './Panel.types';\n\nconst getClassNames = classNamesFunction<IPanelStyleProps, IPanelStyles>();\nconst COMPONENT_NAME = 'Panel';\n\nenum PanelVisibilityState {\n closed,\n animatingOpen,\n open,\n animatingClosed,\n}\n\ninterface IPanelState {\n isFooterSticky?: boolean;\n id?: string;\n visibility: PanelVisibilityState;\n}\n\nexport class PanelBase extends React.Component<IPanelProps, IPanelState> implements IPanel {\n public static defaultProps: IPanelProps = {\n isHiddenOnDismiss: false,\n isOpen: undefined,\n isBlocking: true,\n hasCloseButton: true,\n type: PanelType.smallFixedFar,\n };\n\n private _async: Async;\n private _events: EventGroup;\n private _panel = React.createRef<HTMLDivElement>();\n private _classNames: IProcessedStyleSet<IPanelStyles>;\n private _scrollableContent: HTMLDivElement | null;\n private _animationCallback: number | null = null;\n private _hasCustomNavigation: boolean = !!(this.props.onRenderNavigation || this.props.onRenderNavigationContent);\n private _headerTextId: string | undefined;\n private _allowTouchBodyScroll: boolean;\n\n public static getDerivedStateFromProps(\n nextProps: Readonly<IPanelProps>,\n prevState: Readonly<IPanelState>,\n ): Partial<IPanelState> | null {\n if (nextProps.isOpen === undefined) {\n return null; // no state update\n }\n if (\n nextProps.isOpen &&\n (prevState.visibility === PanelVisibilityState.closed ||\n prevState.visibility === PanelVisibilityState.animatingClosed)\n ) {\n return { visibility: PanelVisibilityState.animatingOpen };\n }\n if (\n !nextProps.isOpen &&\n (prevState.visibility === PanelVisibilityState.open ||\n prevState.visibility === PanelVisibilityState.animatingOpen)\n ) {\n return { visibility: PanelVisibilityState.animatingClosed };\n }\n return null;\n }\n\n constructor(props: IPanelProps) {\n super(props);\n\n const { allowTouchBodyScroll = false } = this.props;\n this._allowTouchBodyScroll = allowTouchBodyScroll;\n\n this._async = new Async(this);\n this._events = new EventGroup(this);\n initializeComponentRef(this);\n\n warnDeprecations(COMPONENT_NAME, props, {\n ignoreExternalFocusing: 'focusTrapZoneProps',\n forceFocusInsideTrap: 'focusTrapZoneProps',\n firstFocusableSelector: 'focusTrapZoneProps',\n });\n\n this.state = {\n isFooterSticky: false,\n // intentionally ignore props so animation takes place during componentDidMount\n visibility: PanelVisibilityState.closed,\n id: getId('Panel'),\n };\n }\n\n public componentDidMount(): void {\n this._events.on(window, 'resize', this._updateFooterPosition);\n\n if (this._shouldListenForOuterClick(this.props)) {\n this._events.on(document.body, 'mousedown', this._dismissOnOuterClick, true);\n }\n\n if (this.props.isOpen) {\n this.setState({ visibility: PanelVisibilityState.animatingOpen });\n }\n }\n\n public componentDidUpdate(previousProps: IPanelProps, previousState: IPanelState): void {\n const shouldListenOnOuterClick = this._shouldListenForOuterClick(this.props);\n const previousShouldListenOnOuterClick = this._shouldListenForOuterClick(previousProps);\n\n if (this.state.visibility !== previousState.visibility) {\n this._clearExistingAnimationTimer();\n if (this.state.visibility === PanelVisibilityState.animatingOpen) {\n this._animateTo(PanelVisibilityState.open);\n } else if (this.state.visibility === PanelVisibilityState.animatingClosed) {\n this._animateTo(PanelVisibilityState.closed);\n }\n }\n\n if (shouldListenOnOuterClick && !previousShouldListenOnOuterClick) {\n this._events.on(document.body, 'mousedown', this._dismissOnOuterClick, true);\n } else if (!shouldListenOnOuterClick && previousShouldListenOnOuterClick) {\n this._events.off(document.body, 'mousedown', this._dismissOnOuterClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n this._async.dispose();\n this._events.dispose();\n }\n\n public render(): JSX.Element | null {\n const {\n className = '',\n elementToFocusOnDismiss,\n /* eslint-disable deprecation/deprecation */\n firstFocusableSelector,\n focusTrapZoneProps,\n forceFocusInsideTrap,\n hasCloseButton,\n headerText,\n headerClassName = '',\n ignoreExternalFocusing,\n /* eslint-enable deprecation/deprecation */\n isBlocking,\n isFooterAtBottom,\n isLightDismiss,\n isHiddenOnDismiss,\n layerProps,\n overlayProps,\n popupProps,\n type,\n styles,\n theme,\n customWidth,\n onLightDismissClick = this._onPanelClick,\n onRenderNavigation = this._onRenderNavigation,\n onRenderHeader = this._onRenderHeader,\n onRenderBody = this._onRenderBody,\n onRenderFooter = this._onRenderFooter,\n } = this.props;\n const { isFooterSticky, visibility, id } = this.state;\n const isLeft = type === PanelType.smallFixedNear || type === PanelType.customNear ? true : false;\n const isRTL = getRTL(theme);\n const isOnRightSide = isRTL ? isLeft : !isLeft;\n const customWidthStyles = type === PanelType.custom || type === PanelType.customNear ? { width: customWidth } : {};\n const nativeProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n const isOpen = this.isActive;\n const isAnimating =\n visibility === PanelVisibilityState.animatingClosed || visibility === PanelVisibilityState.animatingOpen;\n\n this._headerTextId = headerText && id + '-headerText';\n\n if (!isOpen && !isAnimating && !isHiddenOnDismiss) {\n return null;\n }\n\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n focusTrapZoneClassName: focusTrapZoneProps ? focusTrapZoneProps.className : undefined,\n hasCloseButton,\n headerClassName,\n isAnimating,\n isFooterSticky,\n isFooterAtBottom,\n isOnRightSide,\n isOpen,\n isHiddenOnDismiss,\n type,\n hasCustomNavigation: this._hasCustomNavigation,\n });\n\n const { _classNames, _allowTouchBodyScroll } = this;\n\n let overlay;\n if (isBlocking && isOpen) {\n overlay = (\n <Overlay\n className={_classNames.overlay}\n isDarkThemed={false}\n onClick={isLightDismiss ? onLightDismissClick : undefined}\n allowTouchBodyScroll={_allowTouchBodyScroll}\n {...overlayProps}\n />\n );\n }\n\n return (\n <Layer {...layerProps}>\n <Popup\n role=\"dialog\"\n aria-modal=\"true\"\n ariaLabelledBy={this._headerTextId ? this._headerTextId : undefined}\n onDismiss={this.dismiss}\n className={_classNames.hiddenPanel}\n {...popupProps}\n >\n <div aria-hidden={!isOpen && isAnimating} {...nativeProps} ref={this._panel} className={_classNames.root}>\n {overlay}\n <FocusTrapZone\n ignoreExternalFocusing={ignoreExternalFocusing}\n forceFocusInsideTrap={!isBlocking || (isHiddenOnDismiss && !isOpen) ? false : forceFocusInsideTrap}\n firstFocusableSelector={firstFocusableSelector}\n isClickableOutsideFocusTrap={true}\n {...focusTrapZoneProps}\n className={_classNames.main}\n style={customWidthStyles}\n elementToFocusOnDismiss={elementToFocusOnDismiss}\n >\n <div className={_classNames.commands} data-is-visible={true}>\n {onRenderNavigation(this.props, this._onRenderNavigation)}\n </div>\n <div className={_classNames.contentInner}>\n {(this._hasCustomNavigation || !hasCloseButton) &&\n onRenderHeader(this.props, this._onRenderHeader, this._headerTextId)}\n <div ref={this._allowScrollOnPanel} className={_classNames.scrollableContent} data-is-scrollable={true}>\n {onRenderBody(this.props, this._onRenderBody)}\n </div>\n {onRenderFooter(this.props, this._onRenderFooter)}\n </div>\n </FocusTrapZone>\n </div>\n </Popup>\n </Layer>\n );\n }\n\n public open() {\n if (this.props.isOpen !== undefined) {\n return;\n }\n\n if (this.isActive) {\n return;\n }\n\n this.setState({ visibility: PanelVisibilityState.animatingOpen });\n }\n\n public close() {\n if (this.props.isOpen !== undefined) {\n return;\n }\n\n if (!this.isActive) {\n return;\n }\n\n this.setState({ visibility: PanelVisibilityState.animatingClosed });\n }\n\n public dismiss = (ev?: React.SyntheticEvent<HTMLElement>): void => {\n if (this.props.onDismiss && this.isActive) {\n this.props.onDismiss(ev);\n }\n\n if (!ev || (ev && !ev.defaultPrevented)) {\n this.close();\n }\n };\n\n /** isActive is true when panel is open or opening. */\n public get isActive(): boolean {\n return (\n this.state.visibility === PanelVisibilityState.open ||\n this.state.visibility === PanelVisibilityState.animatingOpen\n );\n }\n\n // Allow the user to scroll within the panel but not on the body\n private _allowScrollOnPanel = (elt: HTMLDivElement | null): void => {\n if (elt) {\n if (this._allowTouchBodyScroll) {\n allowOverscrollOnElement(elt, this._events);\n } else {\n allowScrollOnElement(elt, this._events);\n }\n } else {\n this._events.off(this._scrollableContent);\n }\n this._scrollableContent = elt;\n };\n\n private _shouldListenForOuterClick(props: IPanelProps): boolean {\n return !!props.isBlocking && !!props.isOpen;\n }\n\n private _onRenderNavigation = (props: IPanelProps): JSX.Element | null => {\n if (!this.props.onRenderNavigationContent && !this.props.onRenderNavigation && !this.props.hasCloseButton) {\n return null;\n }\n const { onRenderNavigationContent = this._onRenderNavigationContent } = this.props;\n return (\n <div className={this._classNames.navigation}>\n {onRenderNavigationContent(props, this._onRenderNavigationContent)}\n </div>\n );\n };\n\n private _onRenderNavigationContent = (props: IPanelProps): JSX.Element | null => {\n const { closeButtonAriaLabel, hasCloseButton, onRenderHeader = this._onRenderHeader } = props;\n if (hasCloseButton) {\n const iconButtonStyles = this._classNames.subComponentStyles?.closeButton();\n\n return (\n <>\n {!this._hasCustomNavigation && onRenderHeader(this.props, this._onRenderHeader, this._headerTextId)}\n <IconButton\n styles={iconButtonStyles}\n // eslint-disable-next-line deprecation/deprecation\n className={this._classNames.closeButton}\n onClick={this._onPanelClick}\n ariaLabel={closeButtonAriaLabel}\n title={closeButtonAriaLabel}\n data-is-visible={true}\n iconProps={{ iconName: 'Cancel' }}\n />\n </>\n );\n }\n return null;\n };\n\n private _onRenderHeader = (\n props: IPanelProps,\n defaultRender?: (props?: IPanelProps) => JSX.Element | null,\n headerTextId?: string | undefined,\n ): JSX.Element | null => {\n const { headerText, headerTextProps = {} } = props;\n\n if (headerText) {\n return (\n <div className={this._classNames.header}>\n <div\n id={headerTextId}\n role=\"heading\"\n aria-level={1}\n {...headerTextProps}\n className={css(this._classNames.headerText, headerTextProps.className)}\n >\n {headerText}\n </div>\n </div>\n );\n }\n return null;\n };\n\n private _onRenderBody = (props: IPanelProps): JSX.Element => {\n return <div className={this._classNames.content}>{props.children}</div>;\n };\n\n private _onRenderFooter = (props: IPanelProps): JSX.Element | null => {\n const { onRenderFooterContent = null } = this.props;\n if (onRenderFooterContent) {\n return (\n <div className={this._classNames.footer}>\n <div className={this._classNames.footerInner}>{onRenderFooterContent()}</div>\n </div>\n );\n }\n return null;\n };\n\n private _updateFooterPosition(): void {\n const scrollableContent = this._scrollableContent;\n if (scrollableContent) {\n const height = scrollableContent.clientHeight;\n const innerHeight = scrollableContent.scrollHeight;\n\n this.setState({\n isFooterSticky: height < innerHeight ? true : false,\n });\n }\n }\n\n private _dismissOnOuterClick(ev: React.MouseEvent<HTMLDivElement>): void {\n const panel = this._panel.current;\n if (this.isActive && panel && !ev.defaultPrevented) {\n if (!elementContains(panel, ev.target as HTMLElement)) {\n if (this.props.onOuterClick) {\n this.props.onOuterClick(ev);\n } else {\n this.dismiss(ev);\n }\n }\n }\n }\n\n private _animateTo = (newVisibilityState: PanelVisibilityState): void => {\n if (newVisibilityState === PanelVisibilityState.open && this.props.onOpen) {\n this.props.onOpen();\n }\n\n this._animationCallback = this._async.setTimeout(() => {\n this.setState({ visibility: newVisibilityState });\n this._onTransitionComplete();\n }, 200);\n };\n\n private _clearExistingAnimationTimer = (): void => {\n if (this._animationCallback !== null) {\n this._async.clearTimeout(this._animationCallback);\n }\n };\n\n private _onPanelClick = (ev?: any): void => {\n this.dismiss(ev);\n };\n\n private _onTransitionComplete = (): void => {\n this._updateFooterPosition();\n\n if (this.state.visibility === PanelVisibilityState.open && this.props.onOpened) {\n this.props.onOpened();\n }\n\n if (this.state.visibility === PanelVisibilityState.closed && this.props.onDismissed) {\n this.props.onDismissed();\n }\n };\n}\n","import { IPanelStyleProps, IPanelStyles, PanelType } from './Panel.types';\nimport {\n AnimationClassNames,\n AnimationVariables,\n getGlobalClassNames,\n HighContrastSelector,\n ScreenWidthMinMedium,\n ScreenWidthMinLarge,\n ScreenWidthMinXLarge,\n ScreenWidthMinXXLarge,\n ScreenWidthMinUhfMobile,\n IStyle,\n IconFontSizes,\n} from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Panel',\n main: 'ms-Panel-main',\n commands: 'ms-Panel-commands',\n contentInner: 'ms-Panel-contentInner',\n scrollableContent: 'ms-Panel-scrollableContent',\n navigation: 'ms-Panel-navigation',\n closeButton: 'ms-Panel-closeButton ms-PanelAction-close',\n header: 'ms-Panel-header',\n headerText: 'ms-Panel-headerText',\n content: 'ms-Panel-content',\n footer: 'ms-Panel-footer',\n footerInner: 'ms-Panel-footerInner',\n isOpen: 'is-open',\n hasCloseButton: 'ms-Panel--hasCloseButton',\n smallFluid: 'ms-Panel--smFluid',\n smallFixedNear: 'ms-Panel--smLeft',\n smallFixedFar: 'ms-Panel--sm',\n medium: 'ms-Panel--md',\n large: 'ms-Panel--lg',\n largeFixed: 'ms-Panel--fixed',\n extraLarge: 'ms-Panel--xl',\n custom: 'ms-Panel--custom',\n customNear: 'ms-Panel--customLeft',\n};\n\nconst panelWidth = {\n full: '100%',\n auto: 'auto',\n xs: 272,\n sm: 340,\n md1: 592,\n md2: 644,\n lg: 940,\n};\n\nconst panelMargin = {\n auto: 'auto',\n none: 0,\n md: 48,\n lg: 428,\n xl: 176,\n};\n\n// Following consts are used below in `getPanelBreakpoints()` function to provide\n// necessary fallbacks for different types of Panel in different breakpoints.\nconst smallPanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinMedium}px)`]: {\n width: panelWidth.sm,\n },\n};\n\nconst mediumPanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinLarge}px)`]: {\n width: panelWidth.md1,\n },\n [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n width: panelWidth.md2,\n },\n};\n\nconst largePanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinUhfMobile}px)`]: {\n left: panelMargin.md,\n width: panelWidth.auto,\n },\n [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n left: panelMargin.lg,\n },\n};\n\nconst largeFixedPanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n left: panelMargin.auto,\n width: panelWidth.lg,\n },\n};\n\nconst extraLargePanelSelectors = {\n [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n left: panelMargin.xl,\n },\n};\n\n// Make sure Panels have fallbacks to different breakpoints by reusing same selectors.\n// This is done in the effort to follow design redlines.\nconst getPanelBreakpoints = (type: PanelType): { [x: string]: IStyle } | undefined => {\n let selectors;\n\n // Panel types `smallFluid`, `smallFixedNear`, `custom` and `customNear`\n // are not checked in here because they render the same in all the breakpoints\n // and have the checks done separately in the `getStyles` function below.\n switch (type) {\n case PanelType.smallFixedFar:\n selectors = {\n ...smallPanelSelectors,\n };\n break;\n case PanelType.medium:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n };\n break;\n case PanelType.large:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n ...largePanelSelectors,\n };\n break;\n case PanelType.largeFixed:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n ...largePanelSelectors,\n ...largeFixedPanelSelectors,\n };\n break;\n case PanelType.extraLarge:\n selectors = {\n ...smallPanelSelectors,\n ...mediumPanelSelectors,\n ...largePanelSelectors,\n ...extraLargePanelSelectors,\n };\n break;\n default:\n break;\n }\n\n return selectors;\n};\n\nconst commandBarHeight = '44px';\n\nconst sharedPaddingStyles = {\n paddingLeft: '24px',\n paddingRight: '24px',\n};\n\nexport const getStyles = (props: IPanelStyleProps): IPanelStyles => {\n const {\n className,\n focusTrapZoneClassName,\n hasCloseButton,\n headerClassName,\n isAnimating,\n isFooterSticky,\n isFooterAtBottom,\n isOnRightSide,\n isOpen,\n isHiddenOnDismiss,\n hasCustomNavigation,\n theme,\n type = PanelType.smallFixedFar,\n } = props;\n const { effects, fonts, semanticColors } = theme;\n const classNames = getGlobalClassNames(GlobalClassNames, theme);\n const isCustomPanel = type === PanelType.custom || type === PanelType.customNear;\n\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n isOpen && classNames.isOpen,\n hasCloseButton && classNames.hasCloseButton,\n {\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n isCustomPanel && isOnRightSide && classNames.custom,\n isCustomPanel && !isOnRightSide && classNames.customNear,\n className,\n ],\n overlay: [\n {\n pointerEvents: 'auto',\n cursor: 'pointer',\n },\n isOpen && isAnimating && AnimationClassNames.fadeIn100,\n !isOpen && isAnimating && AnimationClassNames.fadeOut100,\n ],\n hiddenPanel: [\n !isOpen &&\n !isAnimating &&\n isHiddenOnDismiss && {\n visibility: 'hidden',\n },\n ],\n main: [\n classNames.main,\n {\n backgroundColor: semanticColors.bodyBackground,\n boxShadow: effects.elevation64,\n pointerEvents: 'auto',\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n overflowX: 'hidden',\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch',\n bottom: 0,\n top: 0,\n // left, right, width are overridden depending on the type of the Panel and the screen breakpoint.\n left: panelMargin.auto,\n right: panelMargin.none,\n width: panelWidth.full,\n selectors: {\n [HighContrastSelector]: {\n borderLeft: `3px solid ${semanticColors.variantBorder}`,\n borderRight: `3px solid ${semanticColors.variantBorder}`,\n },\n ...getPanelBreakpoints(type),\n },\n },\n type === PanelType.smallFluid && {\n left: panelMargin.none,\n },\n type === PanelType.smallFixedNear && {\n left: panelMargin.none,\n right: panelMargin.auto,\n width: panelWidth.xs,\n },\n type === PanelType.customNear && {\n right: 'auto',\n left: 0,\n },\n isCustomPanel && {\n maxWidth: '100vw',\n },\n isOpen && isAnimating && !isOnRightSide && AnimationClassNames.slideRightIn40,\n isOpen && isAnimating && isOnRightSide && AnimationClassNames.slideLeftIn40,\n !isOpen && isAnimating && !isOnRightSide && AnimationClassNames.slideLeftOut40,\n !isOpen && isAnimating && isOnRightSide && AnimationClassNames.slideRightOut40,\n focusTrapZoneClassName,\n ],\n commands: [\n classNames.commands,\n {\n marginTop: 18,\n },\n hasCustomNavigation && {\n marginTop: 'inherit',\n },\n ],\n navigation: [\n classNames.navigation,\n {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n hasCustomNavigation && {\n height: commandBarHeight,\n },\n ],\n contentInner: [\n classNames.contentInner,\n {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n overflowY: 'hidden',\n },\n ],\n header: [\n classNames.header,\n sharedPaddingStyles,\n {\n alignSelf: 'flex-start',\n },\n hasCloseButton &&\n !hasCustomNavigation && {\n flexGrow: 1,\n },\n hasCustomNavigation && {\n // Ensure that title doesn't shrink if screen is too small\n flexShrink: 0,\n },\n ],\n headerText: [\n classNames.headerText,\n fonts.xLarge,\n {\n color: semanticColors.bodyText,\n lineHeight: '27px',\n overflowWrap: 'break-word',\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n hyphens: 'auto',\n },\n headerClassName,\n ],\n scrollableContent: [\n classNames.scrollableContent,\n {\n overflowY: 'auto',\n },\n isFooterAtBottom && {\n flexGrow: 1,\n },\n ],\n content: [\n classNames.content,\n sharedPaddingStyles,\n {\n paddingBottom: 20,\n },\n ],\n footer: [\n classNames.footer,\n {\n // Ensure that footer doesn't shrink if screen is too small\n flexShrink: 0,\n borderTop: '1px solid transparent',\n transition: `opacity ${AnimationVariables.durationValue3} ${AnimationVariables.easeFunction2}`,\n },\n isFooterSticky && {\n background: semanticColors.bodyBackground,\n borderTopColor: semanticColors.variantBorder,\n },\n ],\n footerInner: [\n classNames.footerInner,\n sharedPaddingStyles,\n {\n paddingBottom: 16,\n paddingTop: 16,\n },\n ],\n subComponentStyles: {\n closeButton: {\n root: [\n classNames.closeButton,\n {\n marginRight: 14,\n color: theme.palette.neutralSecondary,\n fontSize: IconFontSizes.large,\n },\n hasCustomNavigation && {\n marginRight: 0,\n height: 'auto',\n width: '44px',\n },\n ],\n rootHovered: {\n color: theme.palette.neutralPrimary,\n },\n },\n },\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { IPanelProps, IPanelStyleProps, IPanelStyles } from './Panel.types';\nimport { PanelBase } from './Panel.base';\nimport { getStyles } from './Panel.styles';\n\n/**\n * Panel description\n */\nexport const Panel: React.FunctionComponent<IPanelProps> = styled<IPanelProps, IPanelStyleProps, IPanelStyles>(\n PanelBase,\n getStyles,\n undefined,\n {\n scope: 'Panel',\n },\n);\n","import { ISelectableOption } from '../../utilities/selectableOption/SelectableOption.types';\n\nexport function getAllSelectedOptions(options: ISelectableOption[], selectedIndices: number[]): ISelectableOption[] {\n const selectedOptions: ISelectableOption[] = [];\n for (const index of selectedIndices) {\n const option = options[index];\n\n if (option) {\n selectedOptions.push(option);\n }\n }\n\n return selectedOptions;\n}\n","declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): number;\n\nimport * as React from 'react';\nimport {\n IStyleFunctionOrObject,\n KeyCodes,\n classNamesFunction,\n divProperties,\n findIndex,\n getDocument,\n getFirstFocusable,\n getId,\n getLastFocusable,\n getNativeProps,\n initializeComponentRef,\n isIOS,\n isMac,\n mergeAriaAttributeValues,\n safeRequestAnimationFrame,\n warn,\n warnDeprecations,\n warnMutuallyExclusive,\n} from '../../Utilities';\nimport { Callout } from '../../Callout';\nimport { Checkbox, ICheckboxStyleProps, ICheckboxStyles } from '../../Checkbox';\nimport { CommandButton } from '../../Button';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport {\n DropdownMenuItemType,\n IDropdownOption,\n IDropdownProps,\n IDropdownStyleProps,\n IDropdownStyles,\n IDropdown,\n} from './Dropdown.types';\nimport { DropdownSizePosCache } from './utilities/DropdownSizePosCache';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { ICalloutPositionedInfo, RectangleEdge } from '../../utilities/positioning';\nimport { Icon } from '../../Icon';\nimport { ILabelStyleProps, ILabelStyles, Label } from '../../Label';\nimport { IProcessedStyleSet } from '../../Styling';\nimport { IWithResponsiveModeState } from '../../utilities/decorators/withResponsiveMode';\nimport { KeytipData } from '../../KeytipData';\nimport { Panel, IPanelStyleProps, IPanelStyles } from '../../Panel';\nimport { ResponsiveMode, withResponsiveMode } from '../../utilities/decorators/withResponsiveMode';\nimport {\n SelectableOptionMenuItemType,\n getAllSelectedOptions,\n ISelectableDroppableTextProps,\n} from '../../utilities/selectableOption/index';\n\nconst COMPONENT_NAME = 'Dropdown';\nconst getClassNames = classNamesFunction<IDropdownStyleProps, IDropdownStyles>();\n\n/** Internal only props interface to support mixing in responsive mode */\nexport interface IDropdownInternalProps extends IDropdownProps, IWithResponsiveModeState {}\n\nexport interface IDropdownState {\n isOpen: boolean;\n selectedIndices: number[];\n /** Whether the root dropdown element has focus. */\n hasFocus: boolean;\n calloutRenderEdge?: RectangleEdge;\n}\n\n@withResponsiveMode\nexport class DropdownBase extends React.Component<IDropdownInternalProps, IDropdownState> implements IDropdown {\n public static defaultProps = {\n options: [] as any[],\n };\n\n private _host = React.createRef<HTMLDivElement>();\n private _focusZone = React.createRef<FocusZone>();\n private _dropDown = React.createRef<HTMLDivElement>();\n private _id: string;\n private _labelId: string;\n private _listId: string;\n private _optionId: string;\n private _isScrollIdle: boolean;\n private readonly _scrollIdleDelay: number = 250 /* ms */;\n private _scrollIdleTimeoutId: number | undefined;\n /** True if the most recent keydown event was for alt (option) or meta (command). */\n private _lastKeyDownWasAltOrMeta: boolean | undefined;\n private _sizePosCache: DropdownSizePosCache = new DropdownSizePosCache();\n private _classNames: IProcessedStyleSet<IDropdownStyles>;\n private _requestAnimationFrame = safeRequestAnimationFrame(this);\n /** Flag for when we get the first mouseMove */\n private _gotMouseMove: boolean;\n /** Flag for tracking whether focus is triggered by click (alternatively triggered by keyboard nav) */\n private _isFocusedByClick: boolean;\n\n constructor(props: IDropdownProps) {\n super(props);\n\n initializeComponentRef(this);\n\n const { multiSelect, selectedKey, selectedKeys, defaultSelectedKey, defaultSelectedKeys, options } = props;\n\n if (process.env.NODE_ENV !== 'production') {\n warnDeprecations(COMPONENT_NAME, props, {\n isDisabled: 'disabled',\n onChanged: 'onChange',\n placeHolder: 'placeholder',\n onRenderPlaceHolder: 'onRenderPlaceholder',\n });\n\n warnMutuallyExclusive(COMPONENT_NAME, props, {\n defaultSelectedKey: 'selectedKey',\n defaultSelectedKeys: 'selectedKeys',\n selectedKeys: 'selectedKey',\n });\n\n if (multiSelect) {\n const warnMultiSelect = (prop: keyof IDropdownProps) =>\n warn(`Dropdown property '${prop}' cannot be used when 'multiSelect' is true. Use '${prop}s' instead.`);\n if (selectedKey !== undefined) {\n warnMultiSelect('selectedKey');\n }\n if (defaultSelectedKey !== undefined) {\n warnMultiSelect('defaultSelectedKey');\n }\n } else {\n const warnNotMultiSelect = (prop: keyof IDropdownProps) =>\n warn(`Dropdown property '${prop}s' cannot be used when 'multiSelect' is false/unset. Use '${prop}' instead.`);\n if (selectedKeys !== undefined) {\n warnNotMultiSelect('selectedKey');\n }\n if (defaultSelectedKeys !== undefined) {\n warnNotMultiSelect('defaultSelectedKey');\n }\n }\n }\n\n this._id = props.id || getId('Dropdown');\n this._labelId = this._id + '-label';\n this._listId = this._id + '-list';\n this._optionId = this._id + '-option';\n this._isScrollIdle = true;\n\n let selectedIndices: number[];\n\n if (multiSelect) {\n selectedIndices = this._getSelectedIndexes(\n options,\n defaultSelectedKeys !== undefined ? defaultSelectedKeys : selectedKeys,\n );\n } else {\n selectedIndices = this._getSelectedIndexes(\n options,\n (defaultSelectedKey !== undefined ? defaultSelectedKey : selectedKey)!,\n );\n }\n\n this._sizePosCache.updateOptions(options);\n\n this.state = {\n isOpen: false,\n selectedIndices,\n hasFocus: false,\n calloutRenderEdge: undefined,\n };\n }\n\n /**\n * All selected options\n */\n public get selectedOptions(): IDropdownOption[] {\n const { options } = this.props;\n const { selectedIndices } = this.state;\n\n return getAllSelectedOptions(options, selectedIndices);\n }\n\n public componentWillUnmount() {\n clearTimeout(this._scrollIdleTimeoutId);\n }\n\n public UNSAFE_componentWillReceiveProps(newProps: IDropdownProps): void {\n // In controlled component usage where selectedKey is provided, update the selectedIndex\n // state if the key or options change.\n let selectedKeyProp: 'defaultSelectedKeys' | 'selectedKeys' | 'defaultSelectedKey' | 'selectedKey';\n\n // this does a shallow compare (assumes options are pure), for the purposes of determining whether\n // defaultSelectedKey/defaultSelectedKeys are respected.\n const didOptionsChange = newProps.options !== this.props.options;\n\n if (newProps.multiSelect) {\n if (didOptionsChange && newProps.defaultSelectedKeys !== undefined) {\n selectedKeyProp = 'defaultSelectedKeys';\n } else {\n selectedKeyProp = 'selectedKeys';\n }\n } else {\n if (didOptionsChange && newProps.defaultSelectedKey !== undefined) {\n selectedKeyProp = 'defaultSelectedKey';\n } else {\n selectedKeyProp = 'selectedKey';\n }\n }\n\n if (\n newProps[selectedKeyProp] !== undefined &&\n (newProps[selectedKeyProp] !== this.props[selectedKeyProp] || didOptionsChange)\n ) {\n this.setState({\n selectedIndices: this._getSelectedIndexes(newProps.options, newProps[selectedKeyProp]),\n });\n }\n }\n\n public componentDidUpdate(prevProps: IDropdownProps, prevState: IDropdownState) {\n if (prevState.isOpen === true && this.state.isOpen === false) {\n this._gotMouseMove = false;\n\n if (this.props.onDismiss) {\n this.props.onDismiss();\n }\n }\n }\n\n public render(): JSX.Element {\n const id = this._id;\n\n const props = this.props;\n const {\n className,\n label,\n options,\n ariaLabel,\n required,\n errorMessage,\n keytipProps,\n styles: propStyles,\n theme,\n panelProps,\n calloutProps,\n onRenderTitle = this._getTitle,\n onRenderContainer = this._onRenderContainer,\n onRenderCaretDown = this._onRenderCaretDown,\n onRenderLabel = this._onRenderLabel,\n } = props;\n const { isOpen, selectedIndices, calloutRenderEdge } = this.state;\n // eslint-disable-next-line deprecation/deprecation\n const onRenderPlaceholder = props.onRenderPlaceholder || props.onRenderPlaceHolder || this._getPlaceholder;\n\n // If our cached options are out of date update our cache\n if (options !== this._sizePosCache.cachedOptions) {\n this._sizePosCache.updateOptions(options);\n }\n\n const selectedOptions = getAllSelectedOptions(options, selectedIndices);\n const divProps = getNativeProps(props, divProperties);\n\n const disabled = this._isDisabled();\n\n const errorMessageId = id + '-errorMessage';\n const ariaActiveDescendant = disabled\n ? undefined\n : isOpen && selectedIndices.length === 1 && selectedIndices[0] >= 0\n ? this._listId + selectedIndices[0]\n : undefined;\n\n this._classNames = getClassNames(propStyles, {\n theme,\n className,\n hasError: !!(errorMessage && errorMessage.length > 0),\n hasLabel: !!label,\n isOpen,\n required,\n disabled,\n isRenderingPlaceholder: !selectedOptions.length,\n panelClassName: panelProps?.className,\n calloutClassName: calloutProps?.className,\n calloutRenderEdge: calloutRenderEdge,\n });\n\n const hasErrorMessage: boolean = !!errorMessage && errorMessage.length > 0;\n\n return (\n <div className={this._classNames.root}>\n {onRenderLabel(this.props, this._onRenderLabel)}\n <KeytipData keytipProps={keytipProps} disabled={disabled}>\n {(keytipAttributes: any): JSX.Element => (\n <div\n {...keytipAttributes}\n data-is-focusable={!disabled}\n ref={this._dropDown}\n id={id}\n tabIndex={disabled ? -1 : 0}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen ? 'true' : 'false'}\n aria-label={ariaLabel}\n aria-labelledby={\n label && !ariaLabel ? mergeAriaAttributeValues(this._labelId, this._optionId) : undefined\n }\n aria-describedby={mergeAriaAttributeValues(\n keytipAttributes['aria-describedby'],\n hasErrorMessage ? this._id + '-errorMessage' : undefined,\n )}\n aria-activedescendant={ariaActiveDescendant}\n aria-required={required}\n aria-disabled={disabled}\n aria-controls={isOpen ? this._listId : undefined}\n {...divProps}\n className={this._classNames.dropdown}\n onBlur={this._onDropdownBlur}\n onKeyDown={this._onDropdownKeyDown}\n onKeyUp={this._onDropdownKeyUp}\n onClick={this._onDropdownClick}\n onMouseDown={this._onDropdownMouseDown}\n onFocus={this._onFocus}\n >\n <span id={this._optionId} className={this._classNames.title} aria-live=\"polite\" aria-atomic={true}>\n {// If option is selected render title, otherwise render the placeholder text\n selectedOptions.length\n ? onRenderTitle(selectedOptions, this._onRenderTitle)\n : onRenderPlaceholder(props, this._onRenderPlaceholder)}\n </span>\n <span className={this._classNames.caretDownWrapper}>\n {onRenderCaretDown(props, this._onRenderCaretDown)}\n </span>\n </div>\n )}\n </KeytipData>\n {isOpen && onRenderContainer({ ...props, onDismiss: this._onDismiss }, this._onRenderContainer)}\n {hasErrorMessage && (\n <div role=\"alert\" id={errorMessageId} className={this._classNames.errorMessage}>\n {errorMessage}\n </div>\n )}\n </div>\n );\n }\n\n public focus(shouldOpenOnFocus?: boolean): void {\n if (this._dropDown.current) {\n this._dropDown.current.focus();\n\n if (shouldOpenOnFocus) {\n this.setState({\n isOpen: true,\n });\n }\n }\n }\n\n public setSelectedIndex(event: React.FormEvent<HTMLDivElement>, index: number): void {\n const { options, selectedKey, selectedKeys, multiSelect, notifyOnReselect } = this.props;\n const { selectedIndices = [] } = this.state;\n const checked: boolean = selectedIndices ? selectedIndices.indexOf(index) > -1 : false;\n let newIndexes: number[] = [];\n\n index = Math.max(0, Math.min(options.length - 1, index));\n\n // If this is a controlled component then no state change should take place.\n if (selectedKey !== undefined || selectedKeys !== undefined) {\n this._onChange(event, options, index, checked, multiSelect);\n return;\n }\n\n if (!multiSelect && !notifyOnReselect && index === selectedIndices[0]) {\n return;\n } else if (multiSelect) {\n newIndexes = selectedIndices ? this._copyArray(selectedIndices) : [];\n if (checked) {\n const position = newIndexes.indexOf(index);\n if (position > -1) {\n // unchecked the current one\n newIndexes.splice(position, 1);\n }\n } else {\n // add the new selected index into the existing one\n newIndexes.push(index);\n }\n } else {\n // Set the selected option if this is an uncontrolled component\n newIndexes = [index];\n }\n\n event.persist();\n // Call onChange after state is updated\n this.setState(\n {\n selectedIndices: newIndexes,\n },\n () => {\n this._onChange(event, options, index, checked, multiSelect);\n },\n );\n }\n\n private _onChange = (\n event: React.FormEvent<HTMLDivElement>,\n options: IDropdownOption[],\n index: number,\n checked?: boolean,\n multiSelect?: boolean,\n ) => {\n // eslint-disable-next-line deprecation/deprecation\n const { onChange, onChanged } = this.props;\n if (onChange || onChanged) {\n // for single-select, option passed in will always be selected.\n // for multi-select, flip the checked value\n const changedOpt = multiSelect ? { ...options[index], selected: !checked } : options[index];\n\n onChange && onChange({ ...event, target: this._dropDown.current as EventTarget }, changedOpt, index);\n onChanged && onChanged(changedOpt, index);\n }\n };\n\n /** Get either props.placeholder (new name) or props.placeHolder (old name) */\n private _getPlaceholder = (): string | undefined => {\n // eslint-disable-next-line deprecation/deprecation\n return this.props.placeholder || this.props.placeHolder;\n };\n\n private _copyArray(array: any[]): any[] {\n const newArray = [];\n for (const element of array) {\n newArray.push(element);\n }\n return newArray;\n }\n\n /**\n * Finds the next valid Dropdown option and sets the selected index to it.\n * @param stepValue - Value of how many items the function should traverse. Should be -1 or 1.\n * @param index - Index of where the search should start\n * @param selectedIndex - The selectedIndex Dropdown's state\n * @returns The next valid dropdown option's index\n */\n private _moveIndex(\n event: React.FormEvent<HTMLDivElement>,\n stepValue: number,\n index: number,\n selectedIndex: number,\n ): number {\n const { options } = this.props;\n // Return selectedIndex if nothing has changed or options is empty\n if (selectedIndex === index || options.length === 0) {\n return selectedIndex;\n }\n\n // If the user is pressing the up or down key we want to make\n // sure that the dropdown cycles through the options without\n // causing the screen to scroll. In _onDropdownKeyDown\n // at the very end is a check to see if newIndex !== selectedIndex.\n // If the index is less than 0 and we set it back to 0, then\n // newIndex will equal selectedIndex and not stop the action\n // of the key press happening and vice versa for indexes greater\n // than or equal to the options length.\n if (index >= options.length) {\n index = 0;\n } else if (index < 0) {\n index = options.length - 1;\n }\n\n let stepCounter = 0;\n // If current index is a header or divider, or disabled, increment by step\n while (\n options[index].itemType === DropdownMenuItemType.Header ||\n options[index].itemType === DropdownMenuItemType.Divider ||\n options[index].disabled\n ) {\n // If stepCounter exceeds length of options, then return selectedIndex (-1)\n if (stepCounter >= options.length) {\n return selectedIndex;\n }\n // If index + stepValue is out of bounds, wrap around\n if (index + stepValue < 0) {\n index = options.length;\n } else if (index + stepValue >= options.length) {\n index = -1;\n }\n\n index = index + stepValue;\n stepCounter++;\n }\n\n this.setSelectedIndex(event, index);\n return index;\n }\n\n /** Get text in dropdown input as a string */\n private _getTitle = (items: IDropdownOption[], _unused?: unknown): string => {\n const { multiSelectDelimiter = ', ' } = this.props;\n return items.map(i => i.text).join(multiSelectDelimiter);\n };\n\n /** Render text in dropdown input */\n private _onRenderTitle = (items: IDropdownOption[]): JSX.Element => {\n return <>{this._getTitle(items)}</>;\n };\n\n /** Render placeholder text in dropdown input */\n private _onRenderPlaceholder = (props: IDropdownProps): JSX.Element | null => {\n if (!this._getPlaceholder()) {\n return null;\n }\n return <>{this._getPlaceholder()}</>;\n };\n\n /** Render Callout or Panel container and pass in list */\n private _onRenderContainer = (props: ISelectableDroppableTextProps<IDropdown, HTMLDivElement>): JSX.Element => {\n const { calloutProps, panelProps } = props;\n const { responsiveMode, dropdownWidth } = this.props;\n\n const isSmall = responsiveMode! <= ResponsiveMode.medium;\n\n const panelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.panel as IStyleFunctionOrObject<IPanelStyleProps, IPanelStyles>)\n : undefined;\n\n let calloutWidth = undefined;\n let calloutMinWidth = undefined;\n if (dropdownWidth === 'auto') {\n calloutMinWidth = this._dropDown.current ? this._dropDown.current.clientWidth : 0;\n } else {\n calloutWidth = dropdownWidth || (this._dropDown.current ? this._dropDown.current.clientWidth : 0);\n }\n\n return isSmall ? (\n <Panel\n isOpen={true}\n isLightDismiss={true}\n onDismiss={this._onDismiss}\n hasCloseButton={false}\n styles={panelStyles}\n {...panelProps}\n >\n {this._renderFocusableList(props)}\n </Panel>\n ) : (\n <Callout\n isBeakVisible={false}\n gapSpace={0}\n doNotLayer={false}\n directionalHintFixed={false}\n directionalHint={DirectionalHint.bottomLeftEdge}\n calloutWidth={calloutWidth}\n calloutMinWidth={calloutMinWidth}\n {...calloutProps}\n className={this._classNames.callout}\n target={this._dropDown.current}\n onDismiss={this._onDismiss}\n onScroll={this._onScroll}\n onPositioned={this._onPositioned}\n >\n {this._renderFocusableList(props)}\n </Callout>\n );\n };\n\n /** Render Caret Down Icon */\n private _onRenderCaretDown = (props: IDropdownProps): JSX.Element => {\n return <Icon className={this._classNames.caretDown} iconName=\"ChevronDown\" aria-hidden={true} />;\n };\n\n /** Wrap item list in a FocusZone */\n private _renderFocusableList(props: ISelectableDroppableTextProps<IDropdown, HTMLDivElement>): JSX.Element {\n const { onRenderList = this._onRenderList, label, ariaLabel, multiSelect } = props;\n\n return (\n <div\n className={this._classNames.dropdownItemsWrapper}\n onKeyDown={this._onZoneKeyDown}\n onKeyUp={this._onZoneKeyUp}\n ref={this._host}\n tabIndex={0}\n >\n <FocusZone\n ref={this._focusZone}\n direction={FocusZoneDirection.vertical}\n id={this._listId}\n className={this._classNames.dropdownItems}\n role=\"listbox\"\n aria-label={ariaLabel}\n aria-labelledby={label && !ariaLabel ? this._labelId : undefined}\n aria-multiselectable={multiSelect}\n >\n {onRenderList(props, this._onRenderList)}\n </FocusZone>\n </div>\n );\n }\n\n /** Render List of items */\n private _onRenderList = (props: ISelectableDroppableTextProps<IDropdown, HTMLDivElement>): JSX.Element => {\n const { onRenderItem = this._onRenderItem } = props;\n\n let queue: { id?: string; items: JSX.Element[] } = { items: [] };\n let renderedList: JSX.Element[] = [];\n\n const emptyQueue = (): void => {\n const newGroup = queue.id\n ? [\n <div role=\"group\" key={queue.id} aria-labelledby={queue.id}>\n {queue.items}\n </div>,\n ]\n : queue.items;\n\n renderedList = [...renderedList, ...newGroup];\n // Flush items and id\n queue = { items: [] };\n };\n\n const placeRenderedOptionIntoQueue = (item: IDropdownOption, index: number) => {\n /*\n Case Header\n empty queue if it's not already empty\n ensure unique ID for header and set queue ID\n push header into queue\n Case Divider\n push divider into queue if not first item\n empty queue if not already empty\n Default\n push item into queue\n */\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Header:\n queue.items.length > 0 && emptyQueue();\n\n const id = this._id + item.key;\n queue.items.push(onRenderItem({ id, ...item, index }, this._onRenderItem)!);\n queue.id = id;\n break;\n case SelectableOptionMenuItemType.Divider:\n index > 0 && queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n\n queue.items.length > 0 && emptyQueue();\n break;\n default:\n queue.items.push(onRenderItem({ ...item, index }, this._onRenderItem)!);\n }\n };\n\n // Place options into the queue. Queue will be emptied anytime a Header or Divider is encountered\n props.options.forEach((item: IDropdownOption, index: number) => {\n placeRenderedOptionIntoQueue(item, index);\n });\n\n // Push remaining items into all renderedList\n queue.items.length > 0 && emptyQueue();\n\n return <>{renderedList}</>;\n };\n\n private _onRenderItem = (item: IDropdownOption): JSX.Element | null => {\n switch (item.itemType) {\n case SelectableOptionMenuItemType.Divider:\n return this._renderSeparator(item);\n case SelectableOptionMenuItemType.Header:\n return this._renderHeader(item);\n default:\n return this._renderOption(item);\n }\n };\n\n private _renderSeparator(item: IDropdownOption): JSX.Element | null {\n const { index, key } = item;\n if (index! > 0) {\n return <div role=\"separator\" key={key} className={this._classNames.dropdownDivider} />;\n }\n return null;\n }\n\n private _renderHeader(item: IDropdownOption): JSX.Element {\n const { onRenderOption = this._onRenderOption } = this.props;\n const { key, id } = item;\n return (\n <div id={id} key={key} className={this._classNames.dropdownItemHeader}>\n {onRenderOption(item, this._onRenderOption)}\n </div>\n );\n }\n\n private _renderOption = (item: IDropdownOption): JSX.Element => {\n const { onRenderOption = this._onRenderOption } = this.props;\n const { selectedIndices = [] } = this.state;\n const isItemSelected =\n item.index !== undefined && selectedIndices ? selectedIndices.indexOf(item.index) > -1 : false;\n\n // select the right className based on the combination of selected/disabled\n const itemClassName = item.hidden // predicate: item hidden\n ? this._classNames.dropdownItemHidden\n : isItemSelected && item.disabled === true // predicate: both selected and disabled\n ? this._classNames.dropdownItemSelectedAndDisabled\n : isItemSelected // predicate: selected only\n ? this._classNames.dropdownItemSelected\n : item.disabled === true // predicate: disabled only\n ? this._classNames.dropdownItemDisabled\n : this._classNames.dropdownItem;\n\n const { title = item.text } = item;\n\n const multiSelectItemStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.multiSelectItem as IStyleFunctionOrObject<\n ICheckboxStyleProps,\n ICheckboxStyles\n >)\n : undefined;\n\n return !this.props.multiSelect ? (\n <CommandButton\n id={this._listId + item.index}\n key={item.key}\n data-index={item.index}\n data-is-focusable={!item.disabled}\n disabled={item.disabled}\n className={itemClassName}\n onClick={this._onItemClick(item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseEnter={this._onItemMouseEnter.bind(this, item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseLeave={this._onMouseItemLeave.bind(this, item)}\n // eslint-disable-next-line react/jsx-no-bind\n onMouseMove={this._onItemMouseMove.bind(this, item)}\n role=\"option\"\n aria-selected={isItemSelected ? 'true' : 'false'}\n ariaLabel={item.ariaLabel}\n title={title}\n aria-posinset={this._sizePosCache.positionInSet(item.index)}\n aria-setsize={this._sizePosCache.optionSetSize}\n >\n {onRenderOption(item, this._onRenderOption)}\n </CommandButton>\n ) : (\n <Checkbox\n id={this._listId + item.index}\n key={item.key}\n disabled={item.disabled}\n onChange={this._onItemClick(item)}\n inputProps={{\n 'aria-selected': isItemSelected,\n onMouseEnter: this._onItemMouseEnter.bind(this, item),\n onMouseLeave: this._onMouseItemLeave.bind(this, item),\n onMouseMove: this._onItemMouseMove.bind(this, item),\n role: 'option',\n ...({\n 'data-index': item.index,\n 'data-is-focusable': !item.disabled,\n } as any),\n }}\n label={item.text}\n title={title}\n // eslint-disable-next-line react/jsx-no-bind\n onRenderLabel={this._onRenderItemLabel.bind(this, item)}\n className={itemClassName}\n checked={isItemSelected}\n styles={multiSelectItemStyles}\n ariaPositionInSet={this._sizePosCache.positionInSet(item.index)}\n ariaSetSize={this._sizePosCache.optionSetSize}\n />\n );\n };\n\n /** Render content of item (i.e. text/icon inside of button) */\n private _onRenderOption = (item: IDropdownOption): JSX.Element => {\n return <span className={this._classNames.dropdownOptionText}>{item.text}</span>;\n };\n\n /** Render custom label for drop down item */\n private _onRenderItemLabel = (item: IDropdownOption): JSX.Element | null => {\n const { onRenderOption = this._onRenderOption } = this.props;\n return onRenderOption(item, this._onRenderOption);\n };\n\n private _onPositioned = (positions?: ICalloutPositionedInfo): void => {\n if (this._focusZone.current) {\n // Focusing an element can trigger a reflow. Making this wait until there is an animation\n // frame can improve perf significantly.\n this._requestAnimationFrame(() => {\n const selectedIndices = this.state.selectedIndices;\n if (this._focusZone.current) {\n if (selectedIndices && selectedIndices[0] && !this.props.options[selectedIndices[0]].disabled) {\n const element: HTMLElement | null = getDocument()!.getElementById(`${this._id}-list${selectedIndices[0]}`);\n if (element) {\n this._focusZone.current.focusElement(element);\n }\n } else {\n this._focusZone.current.focus();\n }\n }\n });\n }\n\n if (!this.state.calloutRenderEdge || this.state.calloutRenderEdge !== positions!.targetEdge) {\n this.setState({\n calloutRenderEdge: positions!.targetEdge,\n });\n }\n };\n\n private _onItemClick = (item: IDropdownOption): ((event: React.MouseEvent<HTMLDivElement>) => void) => {\n return (event: React.MouseEvent<HTMLDivElement>): void => {\n if (!item.disabled) {\n this.setSelectedIndex(event, item.index!);\n if (!this.props.multiSelect) {\n // only close the callout when it's in single-select mode\n this.setState({\n isOpen: false,\n });\n }\n }\n };\n };\n\n /**\n * Scroll handler for the callout to make sure the mouse events\n * for updating focus are not interacting during scroll\n */\n private _onScroll = (): void => {\n if (!this._isScrollIdle && this._scrollIdleTimeoutId !== undefined) {\n clearTimeout(this._scrollIdleTimeoutId);\n this._scrollIdleTimeoutId = undefined;\n } else {\n this._isScrollIdle = false;\n }\n\n this._scrollIdleTimeoutId = setTimeout(() => {\n this._isScrollIdle = true;\n }, this._scrollIdleDelay);\n };\n\n private _onItemMouseEnter(item: any, ev: React.MouseEvent<HTMLElement>): void {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n const targetElement = ev.currentTarget as HTMLElement;\n targetElement.focus();\n }\n\n private _onItemMouseMove(item: any, ev: React.MouseEvent<HTMLElement>): void {\n const targetElement = ev.currentTarget as HTMLElement;\n this._gotMouseMove = true;\n\n if (!this._isScrollIdle || document.activeElement === targetElement) {\n return;\n }\n\n targetElement.focus();\n }\n\n private _onMouseItemLeave = (item: any, ev: React.MouseEvent<HTMLElement>): void => {\n if (this._shouldIgnoreMouseEvent()) {\n return;\n }\n\n /**\n * IE11 focus() method forces parents to scroll to top of element.\n * Edge and IE expose a setActive() function for focusable divs that\n * sets the page focus but does not scroll the parent element.\n */\n if (this._host.current) {\n if ((this._host.current as any).setActive) {\n try {\n (this._host.current as any).setActive();\n } catch (e) {\n /* no-op */\n }\n } else {\n this._host.current.focus();\n }\n }\n };\n\n private _shouldIgnoreMouseEvent(): boolean {\n return !this._isScrollIdle || !this._gotMouseMove;\n }\n\n private _onDismiss = (): void => {\n this.setState({ isOpen: false });\n };\n\n /** Get all selected indexes for multi-select mode */\n private _getSelectedIndexes(\n options: IDropdownOption[],\n selectedKey: string | number | string[] | number[] | null | undefined,\n ): number[] {\n if (selectedKey === undefined) {\n if (this.props.multiSelect) {\n return this._getAllSelectedIndices(options);\n }\n const selectedIndex = this._getSelectedIndex(options, null);\n return selectedIndex !== -1 ? [selectedIndex] : [];\n } else if (!Array.isArray(selectedKey)) {\n const selectedIndex = this._getSelectedIndex(options, selectedKey);\n return selectedIndex !== -1 ? [selectedIndex] : [];\n }\n\n const selectedIndices: number[] = [];\n for (const key of selectedKey) {\n const selectedIndex = this._getSelectedIndex(options, key);\n selectedIndex !== -1 && selectedIndices.push(selectedIndex);\n }\n return selectedIndices;\n }\n\n private _getAllSelectedIndices(options: IDropdownOption[]): number[] {\n return options\n .map((option: IDropdownOption, index: number) => (option.selected ? index : -1))\n .filter(index => index !== -1);\n }\n\n private _getSelectedIndex(options: IDropdownOption[], selectedKey: string | number | null): number {\n return findIndex(options, option => {\n // eslint-disable-next-line eqeqeq\n if (selectedKey != null) {\n return option.key === selectedKey;\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return !!option.selected || !!option.isSelected;\n }\n });\n }\n\n private _onDropdownBlur = (ev: React.FocusEvent<HTMLDivElement>): void => {\n // If Dropdown disabled do not proceed with this logic.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n // hasFocus tracks whether the root element has focus so always update the state.\n this.setState({ hasFocus: false });\n\n if (this.state.isOpen) {\n // Do not onBlur when the callout is opened\n return;\n }\n if (this.props.onBlur) {\n this.props.onBlur(ev);\n }\n };\n\n private _onDropdownKeyDown = (ev: React.KeyboardEvent<HTMLDivElement>): void => {\n // If Dropdown disabled do not process any keyboard events.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n\n let newIndex: number | undefined;\n const selectedIndex = this.state.selectedIndices.length ? this.state.selectedIndices[0] : -1;\n const containsExpandCollapseModifier = ev.altKey || ev.metaKey;\n const isOpen = this.state.isOpen;\n\n switch (ev.which) {\n case KeyCodes.enter:\n this.setState({\n isOpen: !isOpen,\n });\n break;\n\n case KeyCodes.escape:\n if (!isOpen) {\n return;\n }\n\n this.setState({\n isOpen: false,\n });\n break;\n\n case KeyCodes.up:\n if (containsExpandCollapseModifier) {\n if (isOpen) {\n this.setState({ isOpen: false });\n break;\n }\n\n return;\n }\n if (this.props.multiSelect) {\n this.setState({ isOpen: true });\n } else if (!this._isDisabled()) {\n newIndex = this._moveIndex(ev, -1, selectedIndex - 1, selectedIndex);\n }\n break;\n\n case KeyCodes.down:\n if (containsExpandCollapseModifier) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n if ((containsExpandCollapseModifier && !isOpen) || this.props.multiSelect) {\n this.setState({ isOpen: true });\n } else if (!this._isDisabled()) {\n newIndex = this._moveIndex(ev, 1, selectedIndex + 1, selectedIndex);\n }\n break;\n\n case KeyCodes.home:\n if (!this.props.multiSelect) {\n newIndex = this._moveIndex(ev, 1, 0, selectedIndex);\n }\n break;\n\n case KeyCodes.end:\n if (!this.props.multiSelect) {\n newIndex = this._moveIndex(ev, -1, this.props.options.length - 1, selectedIndex);\n }\n break;\n\n case KeyCodes.space:\n // event handled in _onDropdownKeyUp\n break;\n\n default:\n return;\n }\n\n if (newIndex !== selectedIndex) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n };\n\n private _onDropdownKeyUp = (ev: React.KeyboardEvent<HTMLDivElement>): void => {\n // If Dropdown disabled do not process any keyboard events.\n const disabled = this._isDisabled();\n if (disabled) {\n return;\n }\n\n const shouldHandleKey = this._shouldHandleKeyUp(ev);\n const isOpen = this.state.isOpen;\n\n if (this.props.onKeyUp) {\n this.props.onKeyUp(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n switch (ev.which) {\n case KeyCodes.space:\n this.setState({\n isOpen: !isOpen,\n });\n break;\n\n default:\n if (shouldHandleKey && isOpen) {\n this.setState({ isOpen: false });\n }\n return;\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n /**\n * Returns true if the key for the event is alt (Mac option) or meta (Mac command).\n */\n private _isAltOrMeta(ev: React.KeyboardEvent<HTMLElement>): boolean {\n return ev.which === KeyCodes.alt || ev.key === 'Meta';\n }\n\n /**\n * We close the menu on key up only if ALL of the following are true:\n * - Most recent key down was alt or meta (command)\n * - The alt/meta key down was NOT followed by some other key (such as down/up arrow to\n * expand/collapse the menu)\n * - We're not on a Mac (or iOS)\n *\n * This is because on Windows, pressing alt moves focus to the application menu bar or similar,\n * closing any open context menus. There is not a similar behavior on Macs.\n */\n private _shouldHandleKeyUp(ev: React.KeyboardEvent<HTMLElement>): boolean {\n const keyPressIsAltOrMetaAlone = this._lastKeyDownWasAltOrMeta && this._isAltOrMeta(ev);\n this._lastKeyDownWasAltOrMeta = false;\n return !!keyPressIsAltOrMetaAlone && !(isMac() || isIOS());\n }\n\n private _onZoneKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n let elementToFocus;\n\n // Take note if we are processing an alt (option) or meta (command) keydown.\n // See comment in _shouldHandleKeyUp for reasoning.\n this._lastKeyDownWasAltOrMeta = this._isAltOrMeta(ev);\n const containsExpandCollapseModifier = ev.altKey || ev.metaKey;\n\n switch (ev.which) {\n case KeyCodes.up:\n if (containsExpandCollapseModifier) {\n this.setState({ isOpen: false });\n } else {\n if (this._host.current) {\n elementToFocus = getLastFocusable(this._host.current, this._host.current.lastChild as HTMLElement, true);\n }\n }\n break;\n\n // All directional keystrokes should be canceled when the zone is rendered.\n // This avoids the body scroll from reacting and thus dismissing the dropdown.\n case KeyCodes.home:\n case KeyCodes.end:\n case KeyCodes.pageUp:\n case KeyCodes.pageDown:\n break;\n\n case KeyCodes.down:\n if (!containsExpandCollapseModifier && this._host.current) {\n elementToFocus = getFirstFocusable(this._host.current, this._host.current.firstChild as HTMLElement, true);\n }\n break;\n\n case KeyCodes.escape:\n this.setState({ isOpen: false });\n break;\n\n case KeyCodes.tab:\n this.setState({ isOpen: false });\n return;\n\n default:\n return;\n }\n\n if (elementToFocus) {\n elementToFocus.focus();\n }\n\n ev.stopPropagation();\n ev.preventDefault();\n };\n\n private _onZoneKeyUp = (ev: React.KeyboardEvent<HTMLElement>): void => {\n const shouldHandleKey = this._shouldHandleKeyUp(ev);\n\n if (shouldHandleKey && this.state.isOpen) {\n this.setState({ isOpen: false });\n ev.preventDefault();\n }\n };\n\n private _onDropdownClick = (ev: React.MouseEvent<HTMLDivElement>): void => {\n if (this.props.onClick) {\n this.props.onClick(ev);\n if (ev.defaultPrevented) {\n return;\n }\n }\n\n const { isOpen } = this.state;\n const disabled = this._isDisabled();\n\n if (!disabled && !this._shouldOpenOnFocus()) {\n this.setState({\n isOpen: !isOpen,\n });\n }\n\n this._isFocusedByClick = false; // reset\n };\n\n private _onDropdownMouseDown = (): void => {\n this._isFocusedByClick = true;\n };\n\n private _onFocus = (ev: React.FocusEvent<HTMLDivElement>): void => {\n const disabled = this._isDisabled();\n\n if (!disabled) {\n if (this.props.onFocus) {\n this.props.onFocus(ev);\n }\n const state: Pick<IDropdownState, 'hasFocus'> | Pick<IDropdownState, 'hasFocus' | 'isOpen'> = { hasFocus: true };\n if (this._shouldOpenOnFocus()) {\n (state as Pick<IDropdownState, 'hasFocus' | 'isOpen'>).isOpen = true;\n }\n\n this.setState(state);\n }\n };\n\n /**\n * Because the isDisabled prop is deprecated, we have had to repeat this logic all over the place.\n * This helper method avoids all the repetition.\n */\n private _isDisabled: () => boolean | undefined = () => {\n let { disabled } = this.props;\n // eslint-disable-next-line deprecation/deprecation\n const { isDisabled } = this.props;\n\n // Remove this deprecation workaround at 1.0.0\n if (disabled === undefined) {\n disabled = isDisabled;\n }\n\n return disabled;\n };\n\n private _onRenderLabel = (props: IDropdownProps): JSX.Element | null => {\n const { label, required, disabled } = props;\n\n const labelStyles = this._classNames.subComponentStyles\n ? (this._classNames.subComponentStyles.label as IStyleFunctionOrObject<ILabelStyleProps, ILabelStyles>)\n : undefined;\n\n return label ? (\n <Label\n className={this._classNames.label}\n id={this._labelId}\n required={required}\n styles={labelStyles}\n disabled={disabled}\n >\n {label}\n </Label>\n ) : null;\n };\n\n /**\n * Returns true if dropdown should set to open on focus.\n * Otherwise, isOpen state should be toggled on click\n */\n private _shouldOpenOnFocus(): boolean {\n const { hasFocus } = this.state;\n const { openOnKeyboardFocus } = this.props;\n return !this._isFocusedByClick && openOnKeyboardFocus === true && !hasFocus;\n }\n}\n","import * as React from 'react';\r\nimport { extendComponent } from './extendComponent';\r\n\r\n/**\r\n * Generates a function to be attached to a React component, which can be called\r\n * as a replacement to RAF. In-flight async calls will be auto canceled if the component\r\n * is unmounting before the async code is executed, preventing bugs where code\r\n * accesses things within the component after being unmounted.\r\n */\r\nexport const safeRequestAnimationFrame = (component: React.Component): ((cb: Function) => void) => {\r\n let activeTimeouts: Set<number>;\r\n\r\n return (cb: Function) => {\r\n if (!activeTimeouts) {\r\n activeTimeouts = new Set<number>();\r\n\r\n extendComponent(component, {\r\n componentWillUnmount: () => {\r\n activeTimeouts.forEach((id: number) => cancelAnimationFrame(id));\r\n },\r\n });\r\n }\r\n\r\n const timeoutId = requestAnimationFrame(() => {\r\n activeTimeouts.delete(timeoutId);\r\n cb();\r\n });\r\n\r\n activeTimeouts.add(timeoutId);\r\n };\r\n};\r\n","import { IDropdownStyles, IDropdownStyleProps } from './Dropdown.types';\nimport { IStyleFunction, IsFocusVisibleClassName } from '../../Utilities';\nimport { RectangleEdge } from '../../utilities/positioning';\nimport {\n FontWeights,\n HighContrastSelector,\n IRawStyle,\n IStyle,\n getGlobalClassNames,\n normalize,\n HighContrastSelectorWhite,\n getScreenSelector,\n ScreenWidthMinMedium,\n getHighContrastNoAdjustStyle,\n} from '../../Styling';\n\nconst GlobalClassNames = {\n root: 'ms-Dropdown-container',\n label: 'ms-Dropdown-label',\n dropdown: 'ms-Dropdown',\n title: 'ms-Dropdown-title',\n caretDownWrapper: 'ms-Dropdown-caretDownWrapper',\n caretDown: 'ms-Dropdown-caretDown',\n callout: 'ms-Dropdown-callout',\n panel: 'ms-Dropdown-panel',\n dropdownItems: 'ms-Dropdown-items',\n dropdownItem: 'ms-Dropdown-item',\n dropdownDivider: 'ms-Dropdown-divider',\n dropdownOptionText: 'ms-Dropdown-optionText',\n dropdownItemHeader: 'ms-Dropdown-header',\n titleIsPlaceHolder: 'ms-Dropdown-titleIsPlaceHolder',\n titleHasError: 'ms-Dropdown-title--hasError',\n};\n\nconst DROPDOWN_HEIGHT = 32;\nconst DROPDOWN_ITEM_HEIGHT = 36;\n\nconst highContrastAdjustMixin = {\n [`${HighContrastSelector}, ${HighContrastSelectorWhite.replace('@media ', '')}`]: {\n ...getHighContrastNoAdjustStyle(),\n },\n};\n\nconst highContrastItemAndTitleStateMixin: IRawStyle = {\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n borderColor: 'Highlight',\n color: 'HighlightText',\n },\n ...highContrastAdjustMixin,\n },\n};\n\nconst highContrastBorderState: IRawStyle = {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n};\n\nconst MinimumScreenSelector = getScreenSelector(0, ScreenWidthMinMedium);\n\nexport const getStyles: IStyleFunction<IDropdownStyleProps, IDropdownStyles> = props => {\n const {\n theme,\n hasError,\n hasLabel,\n className,\n isOpen,\n disabled,\n required,\n isRenderingPlaceholder,\n panelClassName,\n calloutClassName,\n calloutRenderEdge,\n } = props;\n\n if (!theme) {\n throw new Error('theme is undefined or null in base Dropdown getStyles function.');\n }\n\n const globalClassnames = getGlobalClassNames(GlobalClassNames, theme);\n const { palette, semanticColors, effects, fonts } = theme;\n\n const rootHoverFocusActiveSelectorNeutralDarkMixin: IStyle = {\n color: semanticColors.menuItemTextHovered,\n };\n\n const rootHoverFocusActiveSelectorNeutralPrimaryMixin: IStyle = {\n color: semanticColors.menuItemText,\n };\n\n const borderColorError: IStyle = {\n borderColor: semanticColors.errorText,\n };\n\n const dropdownItemStyle: IStyle = [\n globalClassnames.dropdownItem,\n {\n backgroundColor: 'transparent',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n padding: '0 8px',\n width: '100%',\n minHeight: DROPDOWN_ITEM_HEIGHT,\n lineHeight: 20,\n height: 0,\n position: 'relative',\n border: '1px solid transparent',\n borderRadius: 0,\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n textAlign: 'left',\n\n '.ms-Button-flexContainer': {\n width: '100%',\n },\n },\n ];\n\n const selectedItemBackgroundColor = semanticColors.menuItemBackgroundPressed;\n\n const itemSelectors = (isSelected: boolean = false) => {\n return {\n selectors: {\n '&:hover:focus': [\n {\n color: semanticColors.menuItemTextHovered,\n backgroundColor: !isSelected ? semanticColors.menuItemBackgroundHovered : selectedItemBackgroundColor,\n },\n highContrastItemAndTitleStateMixin,\n ],\n '&:focus': [\n {\n backgroundColor: !isSelected ? 'transparent' : selectedItemBackgroundColor,\n },\n highContrastItemAndTitleStateMixin,\n ],\n '&:active': [\n {\n color: semanticColors.menuItemTextHovered,\n backgroundColor: !isSelected ? semanticColors.menuBackground : semanticColors.menuItemBackgroundHovered,\n },\n highContrastItemAndTitleStateMixin,\n ],\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n },\n [HighContrastSelector]: {\n border: 'none',\n },\n },\n };\n };\n\n const dropdownItemSelected: IStyle = [\n ...dropdownItemStyle,\n {\n backgroundColor: selectedItemBackgroundColor,\n color: semanticColors.menuItemTextHovered,\n },\n itemSelectors(true),\n highContrastItemAndTitleStateMixin,\n ];\n\n const dropdownItemDisabled: IStyle = [\n ...dropdownItemStyle,\n {\n color: semanticColors.disabledText,\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n border: 'none',\n },\n },\n },\n ];\n\n const titleOpenBorderRadius =\n calloutRenderEdge === RectangleEdge.bottom\n ? `${effects.roundedCorner2} ${effects.roundedCorner2} 0 0`\n : `0 0 ${effects.roundedCorner2} ${effects.roundedCorner2}`;\n\n const calloutOpenBorderRadius =\n calloutRenderEdge === RectangleEdge.bottom\n ? `0 0 ${effects.roundedCorner2} ${effects.roundedCorner2}`\n : `${effects.roundedCorner2} ${effects.roundedCorner2} 0 0`;\n\n return {\n root: [globalClassnames.root, className],\n label: globalClassnames.label,\n dropdown: [\n globalClassnames.dropdown,\n normalize,\n fonts.medium,\n {\n color: semanticColors.menuItemText,\n borderColor: semanticColors.focusBorder,\n position: 'relative',\n outline: 0,\n userSelect: 'none',\n selectors: {\n ['&:hover .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { borderColor: isOpen ? palette.neutralSecondary : palette.neutralPrimary },\n highContrastBorderState,\n ],\n ['&:focus .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { selectors: { [HighContrastSelector]: { color: 'Highlight' } } },\n ],\n\n ['&:focus:after']: [\n {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n boxSizing: 'border-box',\n top: '0px',\n left: '0px',\n width: '100%',\n height: '100%',\n // see https://github.com/microsoft/fluentui/pull/9182 for semantic color disc\n border: !disabled ? `2px solid ${palette.themePrimary}` : 'none',\n borderRadius: '2px',\n\n selectors: {\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n ],\n ['&:active .' + globalClassnames.title]: [\n !disabled && rootHoverFocusActiveSelectorNeutralDarkMixin,\n { borderColor: palette.themePrimary },\n highContrastBorderState,\n ],\n\n ['&:hover .' + globalClassnames.caretDown]: !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:focus .' + globalClassnames.caretDown]: [\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n { selectors: { [HighContrastSelector]: { color: 'Highlight' } } },\n ],\n ['&:active .' + globalClassnames.caretDown]: !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n\n ['&:hover .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:focus .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n ['&:active .' + globalClassnames.titleIsPlaceHolder]:\n !disabled && rootHoverFocusActiveSelectorNeutralPrimaryMixin,\n\n ['&:hover .' + globalClassnames.titleHasError]: borderColorError,\n ['&:active .' + globalClassnames.titleHasError]: borderColorError,\n },\n },\n isOpen && 'is-open',\n disabled && 'is-disabled',\n required && 'is-required',\n required &&\n !hasLabel && {\n selectors: {\n ':before': {\n content: `'*'`,\n color: semanticColors.errorText,\n position: 'absolute',\n top: -5,\n right: -10,\n },\n [HighContrastSelector]: {\n selectors: {\n ':after': {\n right: -14, // moving the * 4 pixel to right to alleviate border clipping in HC mode.\n },\n },\n },\n },\n },\n ],\n title: [\n globalClassnames.title,\n normalize,\n {\n backgroundColor: semanticColors.inputBackground,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: semanticColors.inputBorder,\n borderRadius: isOpen ? titleOpenBorderRadius : effects.roundedCorner2,\n cursor: 'pointer',\n display: 'block',\n height: DROPDOWN_HEIGHT,\n lineHeight: DROPDOWN_HEIGHT - 2,\n padding: `0 28px 0 8px`,\n position: 'relative',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n isRenderingPlaceholder && [globalClassnames.titleIsPlaceHolder, { color: semanticColors.inputPlaceholderText }],\n hasError && [globalClassnames.titleHasError, borderColorError],\n disabled && {\n backgroundColor: semanticColors.disabledBackground,\n border: 'none',\n color: semanticColors.disabledText,\n cursor: 'default',\n selectors: {\n [HighContrastSelector]: {\n border: '1px solid GrayText',\n color: 'GrayText',\n backgroundColor: 'Window',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n caretDownWrapper: [\n globalClassnames.caretDownWrapper,\n {\n position: 'absolute',\n top: 1,\n right: 8,\n height: DROPDOWN_HEIGHT,\n lineHeight: DROPDOWN_HEIGHT - 2, // height minus the border\n },\n !disabled && {\n cursor: 'pointer',\n },\n ],\n caretDown: [\n globalClassnames.caretDown,\n { color: palette.neutralSecondary, fontSize: fonts.small.fontSize, pointerEvents: 'none' },\n disabled && {\n color: semanticColors.disabledText,\n selectors: {\n [HighContrastSelector]: { color: 'GrayText', ...getHighContrastNoAdjustStyle() },\n },\n },\n ],\n errorMessage: { color: semanticColors.errorText, ...theme.fonts.small, paddingTop: 5 },\n callout: [\n globalClassnames.callout,\n {\n boxShadow: effects.elevation8,\n borderRadius: calloutOpenBorderRadius,\n selectors: {\n ['.ms-Callout-main']: { borderRadius: calloutOpenBorderRadius },\n },\n },\n calloutClassName,\n ],\n dropdownItemsWrapper: { selectors: { '&:focus': { outline: 0 } } },\n dropdownItems: [globalClassnames.dropdownItems, { display: 'block' }],\n dropdownItem: [...dropdownItemStyle, itemSelectors()],\n dropdownItemSelected: dropdownItemSelected,\n dropdownItemDisabled: dropdownItemDisabled,\n dropdownItemSelectedAndDisabled: [dropdownItemSelected, dropdownItemDisabled, { backgroundColor: 'transparent' }],\n dropdownItemHidden: [...dropdownItemStyle, { display: 'none' }],\n dropdownDivider: [globalClassnames.dropdownDivider, { height: 1, backgroundColor: semanticColors.bodyDivider }],\n dropdownOptionText: [\n globalClassnames.dropdownOptionText,\n {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n minWidth: 0,\n maxWidth: '100%',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n margin: '1px',\n },\n ],\n dropdownItemHeader: [\n globalClassnames.dropdownItemHeader,\n {\n ...fonts.medium,\n fontWeight: FontWeights.semibold,\n color: semanticColors.menuHeader,\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n height: DROPDOWN_ITEM_HEIGHT,\n lineHeight: DROPDOWN_ITEM_HEIGHT,\n cursor: 'default',\n padding: '0 8px',\n userSelect: 'none',\n textAlign: 'left',\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n subComponentStyles: {\n label: { root: { display: 'inline-block' } },\n multiSelectItem: {\n root: {\n padding: 0,\n },\n label: {\n alignSelf: 'stretch',\n padding: '0 8px',\n width: '100%',\n },\n },\n panel: {\n root: [panelClassName],\n main: {\n selectors: {\n // In case of extra small screen sizes\n [MinimumScreenSelector]: {\n // panelWidth xs\n width: 272,\n },\n },\n },\n contentInner: { padding: '0 0 20px' },\n },\n },\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DropdownBase } from './Dropdown.base';\nimport { getStyles } from './Dropdown.styles';\nimport { IDropdownProps, IDropdownStyleProps, IDropdownStyles } from './Dropdown.types';\n\nexport const Dropdown: React.FunctionComponent<IDropdownProps> = styled<\n IDropdownProps,\n IDropdownStyleProps,\n IDropdownStyles\n>(DropdownBase, getStyles, undefined, {\n scope: 'Dropdown',\n});\n","import React from \"react\";\nimport DropDownOptions from \"../constants/dropDownOptions\";\nimport { Dropdown, DropdownMenuItemType, IDropdownOption, IDropdownStyles } from 'office-ui-fabric-react/lib/Dropdown';\n\nconst dropdownStyles: Partial<IDropdownStyles> = { dropdown: { width: 300 } };\n\ninterface IOption {\n key: string,\n text: string,\n itemType?: DropdownMenuItemType,\n}\n\nconst createDropDownOptions = (options: string[]): IOption[] => (\n options.map((option) => (\n {\n key: option,\n text: option,\n }\n ))\n);\n\nconst retrieveOptionType = (id: string): string => {\n switch(id) {\n case 'bubbleBorderStyle':\n case 'bubbleFromUserBorderStyle':\n case 'suggestedActionBorderStyle':\n case 'suggestedActionDisabledBorderStyle':\n \n return 'borderStyles';\n \n case 'monospaceFont':\n case 'primaryFont':\n\n return 'fonts';\n \n case 'suggestedActionLayout':\n\n return 'suggestedActionLayout';\n \n case 'timestampFormat':\n\n return 'timestampFormat';\n \n case 'messageActivityWordBreak':\n\n return 'wordBreak';\n case 'position':\n return 'position';\n case 'scrollToEndButtonBehavior':\n return 'scrollToEndButtonBehavior';\n case 'bubbleNubOffset':\n case 'bubbleFromUserNubOffset':\n return 'bubbleNubOffset';\n case 'default':\n default:\n\n return 'default';\n }\n}\n\ninterface DefaultSelectorProps {\n id: string;\n value: any;\n onChange: (styleElementName: string, value: any) => void;\n}\n\nexport const DropDownSelector = (props: DefaultSelectorProps) => {\n const {id, value, onChange } = props;\n const [selectedItem, setSelectedItem] = React.useState<IDropdownOption>();\n \n const setValue = (\n event: React.FormEvent<HTMLDivElement>,\n option?: IDropdownOption | undefined,\n index?: number | undefined\n ): void => {\n let toSetValue: any = option?.text;\n if(toSetValue === \"off\") {\n toSetValue = false;\n }\n onChange(id, toSetValue);\n setSelectedItem(option);\n };\n\n const optionType: string = retrieveOptionType(id);\n // console.log(id);\n // console.log(optionType);\n // console.log(' ');\n \n const dropDownOptions: IOption[] = createDropDownOptions(DropDownOptions[optionType]);\n \n // (selectedItem.key as any === false ? \"off\": selectedItem.key)\n return (\n <Dropdown\n selectedKey={selectedItem ? (selectedItem.key as any === false ? \"off\": selectedItem.key) : undefined}\n onChange={setValue}\n // defaultValue={value === false ? \"off\": value}\n placeholder={value === false ? \"off\": value}\n options={dropDownOptions}\n styles={dropdownStyles}\n />\n );\n};\n","import React, { Fragment, useState } from \"react\";\r\n\r\nimport Editor from 'react-simple-code-editor';\r\nimport { highlight, languages } from 'prismjs';\r\nimport 'prismjs/components/prism-clike';\r\nimport 'prismjs/components/prism-javascript';\r\nimport { mergeStyleSets, PrimaryButton } from \"@fluentui/react\";\r\n\r\n\r\ninterface ReactSelectorProps {\r\n id: string;\r\n value: any;\r\n defaultValue?: any;\r\n multiline?: boolean;\r\n onChange: (styleElementName: string, value: any) => void;\r\n}\r\n\r\nconst classNames = mergeStyleSets({\r\n textarea: {\r\n outline: 'none',\r\n ':hover': {\r\n border: `2px solid red`,\r\n\r\n }\r\n },\r\n addDefaultTemplateButton: {\r\n display: 'flex',\r\n marginTop: 5,\r\n marginLeft: 'auto'\r\n // float: 'right'\r\n }\r\n});\r\nexport const ReactSelector = (props: ReactSelectorProps) => {\r\n const { id, value, onChange, defaultValue } = props;\r\n\r\n const [reactValue, setReactValue] = useState(value);\r\n\r\n return (\r\n <Fragment>\r\n {/* <TextField multiline={props.multiline} defaultValue={value} /> */}\r\n\r\n <Editor\r\n value={reactValue}\r\n defaultValue={reactValue}\r\n onValueChange={code => setReactValue(code)}\r\n onBlur={(e: any, newValue?: string) => { onChange(id, e.target.value) }}\r\n highlight={code => code && highlight(code, languages.js, \"jsx\")}\r\n padding={10}\r\n style={{\r\n // fontFamily: '\"Fira code\", \"Fira Mono\", monospace',\r\n fontSize: 12,\r\n borderRadius: 4,\r\n border: `2px solid #DDE2EA`,\r\n minHeight: 80,\r\n maxHeight: 300,\r\n overflow: 'auto',\r\n outline: 'none'\r\n }}\r\n textareaClassName={classNames.textarea}\r\n />\r\n\r\n {defaultValue && <PrimaryButton className={classNames.addDefaultTemplateButton} text=\"Add default template\" onClick={() => { onChange(id, defaultValue); setReactValue(defaultValue) }} />}\r\n\r\n </Fragment>\r\n );\r\n}","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport JSONEditor from 'jsoneditor/dist/jsoneditor-minimalist';\nimport 'jsoneditor/dist/jsoneditor.css';\nimport './fixAce.css';\n\n/**\n * @typedef {{\n * tree: string,\n * view: string,\n * form: string,\n * code: string,\n * text: string,\n * allValues: Array<string>\n * }} TJsonEditorModes\n */\nconst modes = {\n tree: 'tree',\n view: 'view',\n form: 'form',\n code: 'code',\n text: 'text'\n};\n\nconst values = Object.values(modes);\n\nmodes.allValues = values;\n\n/**\n * @type {object}\n * @property {object} [value]\n * @property {string} [mode='tree'] - Set the editor mode.\n * @property {string} [name=undefined] - Initial field name for the root node\n * @property {object} [schema] - Validate the JSON object against a JSON schema.\n * @property {object} [schemaRefs] - Schemas that are referenced using\n * the $ref property\n * @property {Function} [onChange] - Set a callback function\n * triggered when json in the JSONEditor change.\n * Will only be triggered on changes made by the user.\n * @property {Function} [onError] - Set a callback function triggered when an error occurs.\n * Invoked with the error as first argument.\n * The callback is only invoked for errors triggered by a users action,\n * like switching from code mode to tree mode or clicking\n * the Format button whilst the editor doesn't contain valid JSON.\n * @property {Function} [onModeChange] - Set a callback function\n * triggered right after the mode is changed by the user.\n * @property {object} [ace] - Provide a version of the Ace editor.\n * Only applicable when mode is code\n * @property {object} [ajv] - Provide a instance of ajv,\n * the library used for JSON schema validation.\n * @property {string} [theme] - Set the Ace editor theme,\n * uses included 'ace/theme/jsoneditor' by default.\n * @property {boolean} [history=false] - Enables history,\n * adds a button Undo and Redo to the menu of the JSONEditor. Only applicable when\n * mode is 'tree' or 'form'\n * @property {boolean} [navigationBar=true] - Adds navigation bar to the menu\n * the navigation bar visualize the current position on the\n * tree structure as well as allows breadcrumbs navigation.\n * @property {boolean} [statusBar=true] - Adds status bar to the buttom of the editor\n * the status bar shows the cursor position and a count of the selected characters.\n * Only applicable when mode is 'code' or 'text'.\n * @property {boolean} [search=true] - Enables a search box in\n * the upper right corner of the JSONEditor.\n * @property {Array<string>} [allowedModes] - Create a box in the editor menu where\n * the user can switch between the specified modes.\n * @property {(string|PropTypes.elementType)} [tag='div'] - Html element, or react element to render\n * @property {object} [htmlElementProps] - html element custom props\n * @property {Function} [innerRef] - callback to get html element reference\n * @property {boolean} [sortObjectKeys=false] If true, object keys in 'tree',\n * 'view' or 'form' mode list be listed alphabetically instead by their insertion order..\n */\nexport default class Editor extends Component {\n constructor(props) {\n super(props);\n\n this.htmlElementRef = null;\n this.jsonEditor = null;\n\n this.handleChange = this.handleChange.bind(this);\n this.setRef = this.setRef.bind(this);\n this.collapseAll = this.collapseAll.bind(this);\n this.expandAll = this.expandAll.bind(this);\n this.focus = this.focus.bind(this);\n }\n\n componentDidMount() {\n const {\n allowedModes,\n innerRef,\n htmlElementProps,\n tag,\n onChange,\n ...rest\n } = this.props;\n\n this.createEditor({\n ...rest,\n modes: allowedModes\n });\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidUpdate({\n allowedModes,\n schema,\n name,\n theme,\n schemaRefs,\n innerRef,\n htmlElementProps,\n tag,\n onChange,\n ...rest\n }) {\n if (this.jsonEditor) {\n if (theme !== this.props.theme) {\n this.createEditor({\n ...rest,\n theme,\n modes: allowedModes\n });\n } else {\n if (schema !== this.props.schema\n || schemaRefs !== this.props.schemaRefs\n ) {\n this.jsonEditor.setSchema(schema, schemaRefs);\n }\n\n if (name !== this.jsonEditor.getName()) {\n this.jsonEditor.setName(name);\n }\n }\n }\n }\n\n shouldComponentUpdate({ htmlElementProps }) {\n return htmlElementProps !== this.props.htmlElementProps;\n }\n\n componentWillUnmount() {\n if (this.jsonEditor) {\n this.jsonEditor.destroy();\n this.jsonEditor = null;\n }\n }\n\n setRef(element) {\n this.htmlElementRef = element;\n if (this.props.innerRef) {\n this.props.innerRef(element);\n }\n }\n\n createEditor({ value, ...rest }) {\n if (this.jsonEditor) {\n this.jsonEditor.destroy();\n }\n\n this.jsonEditor = new JSONEditor(this.htmlElementRef, {\n onChange: this.handleChange,\n ...rest\n });\n\n this.jsonEditor.set(value);\n }\n\n handleChange() {\n if (this.props.onChange) {\n try {\n this.err = null;\n const text = this.jsonEditor.getText();\n if (text === '') {\n this.props.onChange(null);\n }\n\n const currentJson = this.jsonEditor.get();\n if (this.props.value !== currentJson) {\n this.props.onChange(currentJson);\n }\n } catch (err) {\n this.err = err;\n }\n }\n }\n\n collapseAll() {\n if (this.jsonEditor) {\n this.jsonEditor.collapseAll();\n }\n }\n\n expandAll() {\n if (this.jsonEditor) {\n this.jsonEditor.expandAll();\n }\n }\n\n focus() {\n if (this.jsonEditor) {\n this.jsonEditor.focus();\n }\n }\n\n render() {\n const {\n htmlElementProps,\n tag\n } = this.props;\n\n return React.createElement(\n tag,\n {\n ...htmlElementProps,\n ref: this.setRef\n }\n );\n }\n}\n\nEditor.propTypes = {\n // jsoneditor props\n value: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.array,\n PropTypes.string,\n PropTypes.bool,\n PropTypes.number,\n ]),\n mode: PropTypes.oneOf(values),\n name: PropTypes.string,\n schema: PropTypes.object,\n schemaRefs: PropTypes.object,\n sortObjectKeys: PropTypes.bool,\n\n onChange: PropTypes.func,\n onError: PropTypes.func,\n onModeChange: PropTypes.func,\n\n ace: PropTypes.object,\n ajv: PropTypes.object,\n theme: PropTypes.string,\n history: PropTypes.bool,\n navigationBar: PropTypes.bool,\n statusBar: PropTypes.bool,\n search: PropTypes.bool,\n allowedModes: PropTypes.arrayOf(PropTypes.oneOf(values)),\n\n // custom props\n tag: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]),\n htmlElementProps: PropTypes.object,\n innerRef: PropTypes.func,\n};\n\nEditor.defaultProps = {\n tag: 'div',\n mode: modes.tree,\n history: false,\n search: true,\n navigationBar: true,\n statusBar: true,\n sortObjectKeys: false,\n};\n\n/**\n * @type TJsonEditorModes\n */\nEditor.modes = modes;\n","import React, { Fragment, useCallback, useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { highlight, languages } from 'prismjs';\r\nimport { Icon, mergeStyles, mergeStyleSets, PrimaryButton, TextField } from \"@fluentui/react\";\r\nimport { JsonEditor } from 'jsoneditor-react';\r\nimport enUSJson from 'botframework-webchat-api/src/localization/en-US.json';\r\n\r\ndeclare const DruidWebchat_v2: any;\r\ninterface ReactSelectorProps {\r\n id: string;\r\n value: any;\r\n defaultValue?: any;\r\n multiline?: boolean;\r\n languages: any[];\r\n onChange: (styleElementName: string, value: any) => void;\r\n}\r\n\r\nconst classNames = mergeStyleSets({\r\n textarea: { outline: 'none' },\r\n addDefaultTemplateButton: {\r\n display: 'flex',\r\n marginTop: 5,\r\n marginLeft: 'auto'\r\n // float: 'right'\r\n },\r\n container: {\r\n '> div': {\r\n height: 380\r\n },\r\n '.jsoneditor': {\r\n border: '1px solid #DDE2EA !important',\r\n '.jsoneditor-menu': {\r\n backgroundColor: '#70B244',\r\n borderBottom: '1px solid #DDE2EA !important',\r\n '.jsoneditor-sort, .jsoneditor-transform, .jsoneditor-repair': {\r\n display: 'none'\r\n }\r\n }\r\n }\r\n \r\n },\r\n textField: {\r\n textarea: {\r\n resize: 'none'\r\n },\r\n paddingBottom: 10\r\n }\r\n});\r\n\r\nconst subCategoryHeaderContainer = mergeStyles(\r\n {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n margin: '10px 0'\r\n }\r\n);\r\n\r\nconst subCategoryHeaderIcon = mergeStyles(\r\n {\r\n fontSize: '0.75rem',\r\n display: 'flex',\r\n aligntItems: 'center',\r\n cursor: 'pointer'\r\n }\r\n);\r\n\r\nconst subCategoryHeader = mergeStyles(\r\n {\r\n display: 'flex',\r\n alignItems: 'center',\r\n fontSize: '1rem',\r\n color: '#212529',\r\n fontWeight: 'bold',\r\n cursor: 'pointer',\r\n }\r\n);\r\nexport const LocalizationSelector = (props: ReactSelectorProps) => {\r\n const { id, value, onChange, defaultValue, languages } = props;\r\n\r\n const [isCollapsed, setIsCollapsed] = useState(true);\r\n\r\n useEffect(() => {\r\n setIsCollapsed(true); // collapses subCategory headers\r\n }, []); \r\n // const [reactValue, setReactValue] = useState(value);\r\n\r\n const onBlurHandler = (e: any) => {\r\n const value = JSON.parse(e.target?.querySelector(\"textarea\").value);\r\n onChange(id, value);\r\n };\r\n\r\n // const splitByLanguageValue: any[] = useMemo(() => Object.entries(value).map(([key, value]) => ({ [key]: value })), [value]);\r\n\r\n return (\r\n <>\r\n <div\r\n onClick={() => { setIsCollapsed(!isCollapsed) }}\r\n className={subCategoryHeaderContainer}\r\n >\r\n <span className={subCategoryHeaderIcon}>\r\n <Icon iconName={isCollapsed ? \"ChevronRightSmall\" : \"ChevronDownSmall\"} />\r\n </span>\r\n <span className={subCategoryHeader}>\r\n {\"Example en-US (defaults)\"}\r\n </span>\r\n </div>\r\n {\r\n !isCollapsed && <TextField className={classNames.textField} readOnly={true} label=\"\" multiline rows={20} value={JSON.stringify({...DruidWebchat_v2.defaultDruidLocalization[\"en-US\"], ...enUSJson}, null, 5)} />\r\n\r\n }\r\n\r\n <div className={classNames.container}>\r\n <JsonEditor\r\n value={value}\r\n\r\n onBlur={onBlurHandler}\r\n mode={'text'}\r\n padding={10}\r\n style={{\r\n fontFamily: '\"Fira code\", \"Fira Mono\", monospace',\r\n fontSize: 12,\r\n border: '1px black solid',\r\n minHeight: 80,\r\n maxHeight: 600,\r\n overflow: 'auto',\r\n outline: 'none'\r\n }}\r\n textareaClassName={classNames.textarea}\r\n />\r\n </div>\r\n </>\r\n\r\n // <>\r\n // {languages.map((val) => (<div>{val}</div>))}\r\n // {\r\n // splitByLanguageValue.map((localization) =>\r\n // (<JsonEditor\r\n // value={localization}\r\n\r\n // onBlur={onBlurHandler}\r\n // mode={'text'}\r\n // // highlight={code => code && highlight(code, languages.js, \"json\")}\r\n // padding={10}\r\n // style={{\r\n // fontFamily: '\"Fira code\", \"Fira Mono\", monospace',\r\n // fontSize: 12,\r\n // border: '1px black solid',\r\n // minHeight: 80,\r\n // maxHeight: 300,\r\n // overflow: 'auto',\r\n // outline: 'none'\r\n // }}\r\n // textareaClassName={classNames.textarea}\r\n // />)\r\n // )\r\n // }\r\n\r\n\r\n // {/* { defaultValue && <PrimaryButton className={classNames.addDefaultTemplateButton} text=\"Add default template\" onClick={() => { onChange(id, defaultValue); setReactValue(defaultValue)}} /> } */}\r\n\r\n // </>\r\n );\r\n}","import React from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { CustomizationEntry, defaultWebchatOptions, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\r\nimport { connect } from \"react-redux\";\r\nimport { actionTypes, genericSingleAction } from \"../../Redux/actions\";\r\nimport { Dispatch, AnyAction } from 'redux';\r\nimport { diff } from \"deep-object-diff\";\r\nimport { transformWebchatOptions } from \"./webChatJsonEditor\";\r\nimport { CustomizationEntrySelector } from \"./customizationEntrySelector\";\r\nimport { ContainerName } from \"../../Redux/reducers/AppReducer\";\r\nimport { TextField } from \"@fluentui/react\";\r\n\r\ninterface StateProps {\r\n initialized: boolean;\r\n currentStyleOptions: Partial<WebchatOptions>;\r\n customizationEntries: CustomizationEntry[];\r\n webchatOptions: WebchatOptions;\r\n\r\n}\r\n\r\ninterface DispatchProps {\r\n updateStyleElement: (styleElementName: string, containerName: ContainerName, value: any) => void;\r\n}\r\n\r\ninterface Props {\r\n\r\n}\r\ninterface LocalState {\r\n textValue?: string,\r\n}\r\n\r\ntype PropsType = StateProps & DispatchProps & Props;\r\n\r\nexport class WebChatOptionsSearch extends React.Component<PropsType, LocalState> {\r\n constructor(props: PropsType) {\r\n super(props);\r\n this.state = ({\r\n textValue: \"\",\r\n \r\n })\r\n }\r\n\r\n \r\n\r\n getStyleOptionValue = (key: any, containerName: ContainerName = \"styleOptions\") => {\r\n const { webchatOptions } = this.props;\r\n return this.prop(containerName === \"root\" ? webchatOptions : containerName === \"UI.headerOptions\" ? webchatOptions[\"UI\"][\"headerOptions\"]: webchatOptions[containerName], key);// || this.prop(webchatOptions[\"UI\"], key);\r\n };\r\n\r\n prop<T, K extends keyof T>(obj: T, key: K) {\r\n if(!obj) {\r\n return null;\r\n }\r\n return obj[key];\r\n }\r\n\r\n render() {\r\n const { customizationEntries, updateStyleElement } = this.props;\r\n const filterValue = this.state.textValue?.toLocaleLowerCase();\r\n const filteredCustomizationEntries = customizationEntries.filter(c => filterValue && filterValue.length >= 3 \r\n && (c.displayName.toLocaleLowerCase().indexOf(filterValue.trim()) > -1 || c.id.toLocaleLowerCase().indexOf(filterValue.trim()) > -1));\r\n return (<>\r\n {/* <p>{`Search:`}</p> */}\r\n <TextField multiline={false} \r\n placeholder={\"Type a minimum of 3 characters to search...\"}\r\n onChange={(e: any, newValue?: string) => {this.setState({\r\n textValue: newValue\r\n })}}/>\r\n <div style={{width: '100%', height: 2, backgroundColor: 'black', margin: '15px 0'}}></div>\r\n {\r\n filteredCustomizationEntries && filteredCustomizationEntries.length ? filteredCustomizationEntries.map((entry: CustomizationEntry) => (\r\n <CustomizationEntrySelector\r\n key={entry.id}\r\n entry={entry}\r\n value={this.getStyleOptionValue(entry.id, entry.containerName)}\r\n onChange={updateStyleElement}\r\n getStyleOptionValue={(key, containerName) => this.getStyleOptionValue(key, containerName || entry.containerName)}\r\n \r\n />))\r\n :\r\n <div>\r\n <strong>No items match your search</strong>\r\n </div>\r\n }\r\n </>)\r\n \r\n \r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: IAppState, ownProps: Props): StateProps => ({\r\n initialized: state.initialized,\r\n currentStyleOptions: { ...diff(defaultWebchatOptions(), transformWebchatOptions(state.webchatOptions)), customDruidStyleSet: state.webchatOptions.customDruidStyleSet },\r\n customizationEntries: state.customizationEntries,\r\n webchatOptions: state.webchatOptions,\r\n\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch<AnyAction>): DispatchProps => ({\r\n updateStyleElement: (styleElementName: string, value: any, containerName?: ContainerName) => {\r\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_STYLE_ELEMENT, { styleElementName: styleElementName, value: value, containerName: containerName }));\r\n }\r\n});\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n)(WebChatOptionsSearch);","import React, { Fragment } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { CustomizationEntry, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\nimport { genericSingleAction, actionTypes } from \"../../Redux/actions\";\nimport { UISelectorType } from \"../../utilities/types\";\nimport { DefaultSelector } from \"./defaultSelector\";\nimport { BooleanSelector } from \"./booleanSelector\";\nimport { IntegerSelector } from \"./integerSelector\";\nimport { PercentageSelector } from \"./percentageSelector\";\nimport { ColorSelector } from \"./colorSelector\";\nimport { RgbaSelector } from './rgbaSelector'\n\nimport { mergeStyles } from \"@fluentui/react\";\nimport { DropDownSelector } from \"./dropDownSelector\";\nimport { ContainerName } from \"../../Redux/reducers/AppReducer\";\nimport { DEFAULT_UNDEFINED_RGBA } from \"../constants/defaultStyleOptions\";\nimport { ReactSelector } from \"./reactSelector\";\nimport { LocalizationSelector } from \"./localizationSelector\";\nimport WebChatOptionsSearch from \"./WebChatOptionsSearch\";\n\n\nconst UI_selector = mergeStyles(\n {\n fontSize: '15px',\n fontWeight: '400',\n paddingBottom: 15\n }\n);\n\ninterface CustomizationEntrySelectorProps {\n entry: CustomizationEntry;\n value: any;\n onChange: (styleElementName: string, value: any, containerName?: ContainerName) => void;\n getStyleOptionValue: (key: any, containerName?: ContainerName) => any;\n}\n\nexport const CustomizationEntrySelector = (props: CustomizationEntrySelectorProps) => {\n const { entry, value, onChange, } = props;\n const { displayName, id } = entry;\n\n const onChangeWithContainerName = (styleElementName: string, value: any) => {\n props.onChange(styleElementName, value, entry.containerName);\n }\n\n const renderSelector = (type: UISelectorType) => {\n switch (type) {\n case UISelectorType.booleanSelector:\n return <BooleanSelector id={id} onChange={onChangeWithContainerName} value={value} />\n case UISelectorType.integerSelector:\n return <IntegerSelector id={id} onChange={onChangeWithContainerName} value={value} />\n case UISelectorType.percentageSelector:\n return <PercentageSelector id={id} onChange={onChangeWithContainerName} value={value} />\n case UISelectorType.colorSelector:\n return <ColorSelector id={id} onChange={onChangeWithContainerName} value={value} getStyleOptionValue={props.getStyleOptionValue} />\n case UISelectorType.dropDownSelector:\n return <DropDownSelector id={id} onChange={onChangeWithContainerName} value={value} />\n case UISelectorType.rgbaSelector:\n return <RgbaSelector id={id} onChange={onChangeWithContainerName} value={value || DEFAULT_UNDEFINED_RGBA} />\n case UISelectorType.reactSelector:\n return <ReactSelector id={id} onChange={onChangeWithContainerName} value={value || \"\"} defaultValue={entry.defaultValue} />\n case UISelectorType.localizationSelector:\n return <LocalizationSelector \n id={id} onChange={onChangeWithContainerName} \n value={value || \"\"} defaultValue={entry.defaultValue} \n languages={props.getStyleOptionValue(\"languages\", \"root\")}\n />\n case UISelectorType.searchSelector:\n return <WebChatOptionsSearch />\n case UISelectorType.defaultSelector:\n default:\n return <DefaultSelector multiline={entry.multiline} id={id} onChange={onChangeWithContainerName} value={value} />\n }\n }\n\n return (\n <div className={UI_selector}>\n {displayName !== \"Search\" && displayName} {displayName !== \"Search\" && <strong> ({id}) </strong>} \n\n {renderSelector(entry.uiSelectorType)}\n </div>\n );\n}\n","import * as React from 'react';\nimport { GroupedList, IGroup, IGroupHeaderProps, IGroupFooterProps } from 'office-ui-fabric-react/lib/GroupedList';\nimport { Link } from 'office-ui-fabric-react/lib/Link';\n// import { createListItems, createGroups, IExampleItem } from '@uifabric/example-data';\nimport { mergeStyleSets, IRawStyle } from 'office-ui-fabric-react/lib/Styling';\nimport { CustomizationEntry, WebchatOptions } from '../../Redux/reduxState';\nimport { CustomizationEntrySelector } from './customizationEntrySelector';\nimport { mergeStyles } from '@fluentui/react';\nimport { useEffect, useState } from 'react';\nimport { Icon } from '@fluentui/react/lib/Icon';\nimport { ContainerName } from '../../Redux/reducers/AppReducer';\n\nconst subCategoryHeaderContainer = mergeStyles(\n {\n display: \"flex\",\n alignItems: \"center\",\n // margin: '10px 0',\n padding: '13px 16px',\n height: '58px !important',\n fontSize: '15px !important',\n paddingLeft: '16px !important',\n paddingRight: '16px !important',\n border: '1px solid #DDE2EA !important',\n 'border-left': 'unset !important',\n 'border-right': 'unset !important',\n 'background': 'white !important',\n color: '#202020 !important',\n 'border-bottom': 'unset !important'\n }\n);\n\nconst subCategoryContentContainer = mergeStyles(\n {\n paddingLeft: '16px !important',\n paddingRight: '16px !important',\n }\n)\n\nconst subCategoryHeaderIcon = mergeStyles(\n {\n fontSize: '0.75rem',\n display: 'flex',\n aligntItems: 'center',\n cursor: 'pointer',\n marginLeft: 'auto'\n }\n);\n\nconst subCategoryHeader = mergeStyles(\n {\n display: 'flex',\n alignItems: 'center',\n fontSize: '15px',\n color: '#212529',\n fontWeight: 'bold',\n cursor: 'pointer',\n }\n);\n\ninterface CustomizationEntrySubCategoryProps {\n entries: CustomizationEntry[];\n subCategory: string;\n webchatOptions: WebchatOptions;\n updateStyleElement: (styleElementName: string, containerName: ContainerName, value: any) => void;\n getStyleOptionValue: (key: any, containerName?: ContainerName) => any;\n}\n\nexport const CustomizationEntrySubCategory = (props: CustomizationEntrySubCategoryProps) => {\n const { entries, subCategory, webchatOptions, updateStyleElement, getStyleOptionValue\n} = props;\n const [isCollapsed, setIsCollapsed] = useState(true);\n\n useEffect(() => {\n setIsCollapsed(true); // collapses subCategory headers\n }, [subCategory]); // when new Category is selected, subcategory changes\n \n\n // const getStyleOptionValue = (key: any) => {\n // return prop(webchatOptions, key);\n // };\n\n // const prop = <T, K extends keyof T>(obj: T, key: K) => {\n // return obj[key];\n // }\n\n \n \n return (\n <>\n <div\n onClick={()=> {setIsCollapsed(!isCollapsed)}}\n className={`${subCategoryHeaderContainer}`}\n >\n {/* */}\n <span className={subCategoryHeader}>\n {subCategory}\n </span>\n <div className={subCategoryHeaderIcon}>\n <Icon iconName={isCollapsed ? \"ChevronDownSmall\" : \"ChevronUpSmall\"}/>\n </div>\n </div>\n {\n isCollapsed\n ? <div />\n : <div className={`${subCategoryContentContainer}`}>\n {entries.map((entry: CustomizationEntry) => (\n <CustomizationEntrySelector\n entry={entry}\n key={entry.id}\n value={getStyleOptionValue(entry.id, entry.containerName)}\n onChange={updateStyleElement}\n getStyleOptionValue={(key, containerName) => getStyleOptionValue(key, containerName || entry.containerName)}\n />\n )\n )}\n </div>\n }\n </>\n );\n};\n","import React, { Fragment } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { CustomizationEntry, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\nimport { genericSingleAction, actionTypes } from \"../../Redux/actions\";\nimport { Category } from \"../../utilities/types\";\nimport { CustomizationEntrySelector } from \"./customizationEntrySelector\";\nimport { CustomizationEntrySubCategory } from \"./customizationEntrySubCategory\";\nimport { mergeStyles } from \"@fluentui/react\";\nimport { ContainerName } from \"../../Redux/reducers/AppReducer\";\n\nconst entryViewerContainer = mergeStyles(\n {\n display: 'block',\n overflowY: 'auto',\n paddingTop: '25px',\n paddingBottom: '25px',\n '> div:last-of-type': {\n borderBottom: '1px solid #DDE2EA !important',\n },\n '@media (max-height: 765px)': {\n maxHeight: '400px' \n }\n // maxHeight: '86%',\n }\n);\n\nconst defaultEntriesContainer = mergeStyles(\n {\n marginBottom: '10px',\n }\n);\n\ninterface ISubCategoryObject {\n [key: string]: CustomizationEntry[],\n}\n\ninterface StateProps {\n activeCategory: Category;\n customizationEntries: CustomizationEntry[];\n webchatOptions: WebchatOptions;\n}\n\ninterface DispatchProps {\n updateStyleElement: (styleElementName: string, containerName: ContainerName, value: any) => void;\n}\n\ninterface Props {\n updateRootStateVariable: (stateVariableName: string, value: any) => void,\n\n}\n\ntype PropsType = StateProps & DispatchProps & Props;\n\n\nexport class ConfigurationEntryViewer extends React.Component<PropsType> {\n constructor(props: PropsType) {\n super(props);\n }\n\n createSubCategoriesObject = () : ISubCategoryObject => {\n const { customizationEntries, activeCategory } = this.props\n const subCategoryObject: ISubCategoryObject = {};\n \n customizationEntries.forEach((entry: CustomizationEntry) => {\n if (entry.category === activeCategory) {\n if (entry.subCategory) {\n if (subCategoryObject[entry.subCategory]) {\n subCategoryObject[entry.subCategory].push(entry);\n } else {\n subCategoryObject[entry.subCategory] = [entry];\n }\n } else {\n if (subCategoryObject.noSubCategory) {\n subCategoryObject.noSubCategory.push(entry);\n } else {\n subCategoryObject.noSubCategory = [entry];\n }\n }\n }\n });\n\n return subCategoryObject;\n }\n\n getStyleOptionValue = (key: any, containerName: ContainerName = \"styleOptions\") => {\n const { webchatOptions } = this.props;\n // const containerObjPath = containerName.split('.');\n const containerValue = containerName === \"root\" ? webchatOptions : containerName === \"UI.headerOptions\" ? webchatOptions[\"UI\"][\"headerOptions\"]: webchatOptions[containerName];\n //] containerObjPath.reduce((a, b) => a && (a as any)[b], webchatOptions);\n return this.prop(containerValue, key);// || this.prop(webchatOptions[\"UI\"], key);\n };\n\n prop<T, K extends keyof T>(obj: T, key: K) {\n if(!obj) {\n return null;\n }\n return obj[key];\n }\n \n mapSubCategoriesObjectToReactElements = (subCategoryObject: ISubCategoryObject) => {\n const { webchatOptions, updateStyleElement } = this.props;\n return (\n <>\n {Object.keys(subCategoryObject).map((key, index) => {\n if (key === \"noSubCategory\") {\n return <div key={key} className={defaultEntriesContainer}>\n {subCategoryObject[key].map((entry: CustomizationEntry) => (\n <CustomizationEntrySelector\n key={entry.id}\n entry={entry}\n value={this.getStyleOptionValue(entry.id, entry.containerName)}\n onChange={updateStyleElement}\n getStyleOptionValue={(key, containerName) => this.getStyleOptionValue(key, containerName || entry.containerName)}\n\n />\n ))}\n </div>\n } else {\n return <CustomizationEntrySubCategory\n key={key}\n entries={subCategoryObject[key]}\n subCategory={key}\n webchatOptions={webchatOptions}\n updateStyleElement={updateStyleElement}\n getStyleOptionValue={this.getStyleOptionValue}\n />\n }\n })}\n </>\n );\n };\n\n render() {\n const { activeCategory } = this.props;\n const subCategoriesObject = this.createSubCategoriesObject();\n \n return (\n <Fragment>\n <h5>{activeCategory}</h5>\n {/* <p>{`Start building your ${activeCategory}.`}</p> */}\n <div className={entryViewerContainer}>\n {this.mapSubCategoriesObjectToReactElements(subCategoriesObject)}\n </div>\n </Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: IAppState, ownProps: Props): StateProps => ({\n activeCategory: state.activeCategory,\n customizationEntries: state.customizationEntries,\n webchatOptions: state.webchatOptions,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<AnyAction>): DispatchProps => ({\n updateStyleElement: (styleElementName: string, value: any, containerName?: ContainerName) => {\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_STYLE_ELEMENT, { styleElementName: styleElementName, value: value, containerName: containerName }));\n }\n});\n\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ConfigurationEntryViewer);","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { defaultWebchatOptions, IAppState, WebchatOptions } from \"../../Redux/reduxState\";\nimport { connect } from \"react-redux\";\nimport WebChat from \"./webChat\";\nimport { mergeStyles, mergeStyleSets } from '@uifabric/merge-styles';\nimport { actionTypes, genericSingleAction } from \"../../Redux/actions\";\nimport { Dispatch, AnyAction } from 'redux';\nimport { Stack } from 'office-ui-fabric-react/lib/Stack';\nimport { CollapsibleHeader } from \"./collapsibleHeader\";\nimport { ColorForm } from \"./colorForm\";\nimport { FontForm } from \"./fontForm\";\nimport { AvatarForm } from \"./avatarForm\";\nimport { MiscForm } from \"./miscForm\";\nimport { Pivot, PivotItem } from 'office-ui-fabric-react/lib/Pivot';\nimport WebChatJsonEditor, { transformWebchatOptions } from \"./webChatJsonEditor\";\nimport { Category } from \"../../utilities/types\";\nimport { CategoryLink } from \"./categoryLink\";\nimport ConfigurationEntryViewer from \"./configurationEntryViewer\";\nimport { diff } from 'deep-object-diff';\nimport WebChatOptionsSearch from \"./WebChatOptionsSearch\";\nimport { Icon } from \"@fluentui/react\";\n\n////////////////// Styling //////////////////\n// cosnt leftGridClassName = mergeStyles(\n// {\n// width: '66% !important',\n// height: '86vh',\n// overflowY: 'scroll',\n// marginTop: '20px'\n// }\n// );\n\n// const rightGridClassName = mergeStyles(\n// {\n// width: '34% !important',\n// paddingRight: '0px !important',\n// paddingLeft: '0px !important',\n// height: '100%'\n// }\n// );\nconst rootContainer = mergeStyles(\n {\n fontFamily: 'Roboto !important',\n\n }\n);\nconst headerContainer = mergeStyles(\n {\n display: 'flex',\n alignItems: 'center',\n // borderBottom: '1px solid #000000',\n borderBottom: '1px solid #DDE2EA !important',\n // borderTop: '1px solid #DDE2EA !important',\n paddingTop: 13,\n paddingBottom: 13,\n // height: '80px',\n paddingLeft: '40px',\n paddingRight: '40px'\n // backgroundColor: 'lightPink',\n }\n);\n\n\nconst pivotHeader = mergeStyles(\n {\n marginTop: '15px'\n }\n);\n\n// border-bottom: 3px;\n// margin-bottom: -1px;\n// border-bottom-color: #70B244;\n// border-bottom-style: solid;\n// font-weight: 500;\n// transition: none !important;\nexport const DruidColor = '#70B244';\nconst editorContainer = mergeStyles(\n {\n padding: '33px',\n paddingTop: '5px',\n paddingBottom: '5px',\n '.ms-Pivot': { // tab container\n display: 'flex',\n margin: '0px 0px 32px 0px !important',\n borderBottom: '1px !important',\n borderBottomStyle: 'solid !important',\n borderBottomColor: '#909090 !important',\n flex: 1,\n rowGap: 5,\n height: 60,\n '.ms-Pivot-link': {\n alignItems: 'stretch',\n marginRight: '0.25rem',\n marginBottom: -1,\n padding: '20px 40px !important',\n paddingBottom: 20,\n lineHeight: 18,\n height: '100%',\n '.ms-Button-flexContainer': {\n\n '.ms-Pivot-text': {\n fontSize: 15\n },\n },\n\n },\n '.ms-Button--command.ms-Pivot-link.is-selected': {\n 'border-bottom': '3px',\n marginBottom: -1,\n borderBottomColor: DruidColor,\n borderBottomStyle: 'solid',\n fontWeight: 500,\n transition: 'none !important',\n color: '#202020 !important',\n // border: 0,\n ':before': {\n display: 'none'\n },\n }\n\n },\n\n // fontSize: '15px !important'\n // border: '1px solid #000000',\n // backgroundColor: 'lightGreen',\n }\n);\n\nconst configurationEntriesContainer = mergeStyles(\n {\n paddingLeft: '25px !important',\n height: '70h',\n maxHeight: '70vh',\n // backgroundColor: 'purple !important',\n overflowY: 'auto',\n overscrollBehavior: 'none',\n '.ms-Checkbox.is-checked': {\n\n '.ms-Checkbox-checkbox': {\n background: DruidColor,\n borderColor: `${DruidColor} !important`,\n }\n },\n '.ms-Checkbox-checkbox': {\n border: '1px solid #B2B2B2',\n },\n '.ms-TextField-fieldGroup': {\n borderRadius: 4,\n border: '1px solid #B2B2B2',\n ':hover, ::after': {\n border: `1px solid ${DruidColor}`,\n borderRadius: 4\n },\n '.ms-TextField-prefix': {\n borderRadius: 4\n }\n // border: '1px solid red',\n },\n '.ms-Dropdown': {\n '.ms-Dropdown-title': {\n borderRadius: 4,\n border: '1px solid #B2B2B2',\n\n },\n '::after': {\n border: `2px solid ${DruidColor}`,\n borderRadius: 4\n },\n },\n '.ms-Button--primary': {\n background: DruidColor,\n borderColor: `${DruidColor} !important`,\n ':hover, :active': {\n background: '#5C9C2B',\n borderColor: `#5C9C2B !important`\n\n }\n }\n\n }\n);\n\nconst configurationCategoriesContainer = mergeStyles(\n {\n rowGap: 10\n }\n);\n\nconst stackTokens = { childrenGap: 10 };\n\n\n////////////////// WebChatEditor //////////////////\n\ninterface StateProps {\n activeCategory: Category;\n initialized: boolean;\n currentStyleOptions: Partial<WebchatOptions>;\n}\n\ninterface DispatchProps {\n updateStyleElement: (styleElementName: string, value: any) => void,\n updateRootStateVariable: (stateVariableName: string, value: any) => void,\n}\n\ninterface Props {\n botId: string;\n baseUrl: string;\n botName: string;\n documentationUrl: string;\n onClose: () => any;\n onSave: (json: any) => any;\n onSuccess: () => any;\n}\n\ntype PropsType = StateProps & DispatchProps & Props;\n\nexport class WebChatEditor extends React.Component<PropsType> {\n constructor(props: PropsType) {\n super(props);\n }\n\n\n private RenderCategories = () => {\n let resultingUIComponents = [];\n\n const { activeCategory } = this.props;\n\n for (let category in Category) {\n resultingUIComponents.push(\n <CategoryLink\n key={category}\n name={category}\n activeCategory={activeCategory}\n updateRootStateVariable={this.props.updateRootStateVariable}\n />\n \n );\n }\n\n return resultingUIComponents;\n }\n\n render() {\n return (\n <div className={`ms-Grid ${rootContainer}`} dir=\"ltr\">\n <div className={`ms-Grid-row ${headerContainer}`}>\n <div className=\"ms-Grid-col flex-grow-1 d-flex\">\n <h5 className=\"font-weight-bold mb-2 mr-5 mt-2 text-dark\">{this.props.botName}</h5>\n <div className=\"subheader-separator subheader-separator-ver mt-2 mb-2 mr-1 bg-gray-200\" style={{ width: 1, height: 22 }}></div>\n <div className=\"d-flex align-items-center\"><span className=\"text-muted font-weight-bold ml-4 mr-1 \" style={{ fontSize: 12, fontWeight: 400 }}>Webchat</span></div>\n\n <div className=\"d-flex align-items-center\"><span className=\"text-muted font-weight-bold mr-1 \" style={{ fontSize: 12, fontWeight: 400 }}> · Customize webchat</span></div>\n <a title=\"Documentation\" className=\"help-actions-icon page-help-icon\" style={{cursor: \"pointer\", marginLeft: 20, alignSelf: 'center'}} href={this.props.documentationUrl} target=\"_blank\" rel=\"noopener noreferrer\" onClick={() => {\n\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 512 512\">\n <path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"></path>\n </svg>\n </a>\n </div>\n <div className=\"right\">\n {/* <div className=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <button type=\"button\" className=\"btn btn-outline-secondary\">Left</button>\n <button type=\"button\" className=\"btn btn-outline-secondary\">Middle</button>\n <button type=\"button\" className=\"btn btn-outline-secondary\">Right</button>\n </div> */}\n <div className=\"d-flex justify-content-end\">\n <button type=\"button\" className=\"btn btn-primary\" onClick={() => setTimeout(() => this.props.onSave(this.props.currentStyleOptions), 0)}> Save </button>\n <button type=\"button\" className=\"btn btn-secondary\" onClick={this.props.onClose}> Cancel </button></div>\n </div>\n </div>\n\n <div className={`ms-Grid-row webchat-editor-container ${editorContainer}`}>\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\n <Pivot aria-label=\"Large Link Size Pivot Example\">\n <PivotItem className={pivotHeader} headerText=\"GUI\">\n {\n this.props.initialized && <div className=\"ms-lg12\">\n <div className={`ms-Grid-col ms-sm3 ms-md3 ms-lg3 ${configurationEntriesContainer}`}>\n <Stack tokens={stackTokens} className={`${configurationCategoriesContainer}`}>\n {this.RenderCategories()}\n </Stack>\n </div>\n <div className={`ms-Grid-col ms-sm9 ms-md9 ms-lg9 ${configurationEntriesContainer}`}>\n <ConfigurationEntryViewer updateRootStateVariable={this.props.updateRootStateVariable} />\n </ div>\n </div>\n }\n </PivotItem>\n <PivotItem headerText=\"Json Viewer\">\n <WebChatJsonEditor onSuccess={this.props.onSuccess} />\n </PivotItem>\n {/* <PivotItem headerText=\"Search Options\" className={pivotHeader}>\n <div className={`ms-Grid-col ms-sm8 ms-md8 ms-lg8 ${configurationEntriesContainer}`}>\n <WebChatOptionsSearch />\n </div>\n </PivotItem> */}\n </Pivot>\n </div>\n {/* <div className=\"ms-Grid-col ms-sm4 ms-md4 ms-lg4\"> */}\n <WebChat {...this.props} />\n {/* </div> */}\n </div>\n </div>\n );\n }\n}\n\n////////////////// Redux //////////////////\n\nconst mapStateToProps = (state: IAppState, ownProps: Props): StateProps => ({\n activeCategory: state.activeCategory,\n initialized: state.initialized,\n currentStyleOptions: { ...diff(defaultWebchatOptions(), transformWebchatOptions(state.webchatOptions)), customDruidStyleSet: state.webchatOptions.customDruidStyleSet },\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<AnyAction>): DispatchProps => ({\n updateStyleElement: (styleElementName: string, value: any) => {\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_STYLE_ELEMENT, { styleElementName: styleElementName, value: value }));\n },\n updateRootStateVariable: (stateVariableName: string, value: any) => {\n dispatch(genericSingleAction<any>(actionTypes.UPDATE_ROOT_WEBCHAT_STATE_VARIABlE, { propertyName: stateVariableName, value: value }));\n }\n});\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(WebChatEditor);","import React from 'react';\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { initializeIcons } from '@uifabric/icons';\nimport WebChatEditor from './packages/webchatEditor/components/webChatEditor';\n\n\nexport class App extends React.Component<{botId: string, baseUrl: string, botName: string, documentationUrl: string, onSuccess: () => any, onClose: () => any, onSave: (json: any) => any}, any> {\n constructor(props: any) {\n super(props);\n initializeIcons('https://res.cdn.office.net/files/fabric-cdn-prod_20240129.001/assets/icons/');\n }\n\n render() {\n return (\n <WebChatEditor botId={this.props.botId} baseUrl={this.props.baseUrl} botName={this.props.botName} documentationUrl={this.props.documentationUrl} onClose={this.props.onClose} onSave={this.props.onSave} onSuccess={this.props.onSuccess}/>\n );\n }\n}\n\nexport default App;\n","import { combineReducers } from \"redux\";\nimport { IAppState } from \"./packages/Redux/reduxState\";\nimport { WebChatReducer as AppState } from \"./packages/Redux/reducers/AppReducer\";\n\n\nexport const reducers = AppState\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport 'office-ui-fabric-core/dist/css/fabric.min.css';\nimport 'prismjs/themes/prism.css'\nimport 'jsoneditor-react/es/editor.min.css';\n\nimport { createAppStore } from './packages/Redux/appStore';\nimport { Provider } from 'react-redux';\n\nexport let initialOptions: any = null;\nexport const init = (props: {botId: string, baseUrl: string, botName: string, documentationUrl: string, onSuccess: () => any, onClose: () => any, onSave: (json: any) => any}) => {\n initialOptions = props;\n const rootElem = document.getElementById('webchateditor-root');\n if(rootElem) {\n ReactDOM.unmountComponentAtNode(rootElem);\n }\n\n const store = createAppStore();\n ReactDOM.render(\n <Provider store={store} key={props.botId}>\n <App {...props}/>\n </Provider>,\n document.getElementById('webchateditor-root')\n );\n}\nexport const reInitialize = () => {\n init(initialOptions);\n}\n\n\n","import { createStore, applyMiddleware } from 'redux';\nimport { reducers } from '../../rootReducer';\nimport { initialAppState } from './reduxState';\nimport { composeWithDevTools } from 'redux-devtools-extension';\n\nexport const createAppStore = () => createStore(reducers, initialAppState, composeWithDevTools());\n"],"sourceRoot":""}